summaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2022-02-18 12:59:21 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2022-02-18 12:59:21 +0100
commit9481ada6ad354cfe38418354afee48ceca438c05 (patch)
treee030cda328c36643b1c5085c9be7c5f2210f579b /common
parenta32d0e18fb1bc738ae1aa79d8713b178c977988c (diff)
parenteedf7a3b5f990dff893b54740ceea917c24e2cb7 (diff)
downloadbarebox-9481ada6ad354cfe38418354afee48ceca438c05.tar.gz
barebox-9481ada6ad354cfe38418354afee48ceca438c05.tar.xz
Merge branch 'for-next/efi'
Diffstat (limited to 'common')
-rw-r--r--common/bootm.c6
-rw-r--r--common/efi/payload/init.c4
-rw-r--r--common/filetype.c2
-rw-r--r--common/partitions.c2
-rw-r--r--common/partitions/dos.c3
-rw-r--r--common/partitions/efi.c2
-rw-r--r--common/partitions/parser.h2
7 files changed, 14 insertions, 7 deletions
diff --git a/common/bootm.c b/common/bootm.c
index 89e3e93f2c..4652467448 100644
--- a/common/bootm.c
+++ b/common/bootm.c
@@ -709,15 +709,15 @@ int bootm_boot(struct bootm_data *bootm_data)
const char *root_dev_name = devpath_to_name(bootm_data->root_dev);
const struct cdev *root_cdev = cdev_by_name(root_dev_name);
- if (root_cdev && root_cdev->partuuid[0] != 0) {
- rootarg = basprintf("root=PARTUUID=%s", root_cdev->partuuid);
+ if (root_cdev && root_cdev->uuid[0] != 0) {
+ rootarg = basprintf("root=PARTUUID=%s", root_cdev->uuid);
} else {
rootarg = ERR_PTR(-EINVAL);
if (!root_cdev)
pr_err("no cdev found for %s, cannot set root= option\n",
root_dev_name);
- else if (!root_cdev->partuuid[0])
+ else if (!root_cdev->uuid[0])
pr_err("%s doesn't have a PARTUUID, cannot set root= option\n",
root_dev_name);
}
diff --git a/common/efi/payload/init.c b/common/efi/payload/init.c
index 6db6b23895..1541683186 100644
--- a/common/efi/payload/init.c
+++ b/common/efi/payload/init.c
@@ -349,7 +349,9 @@ static int efi_late_init(void)
if (IS_ERR(root))
return PTR_ERR(root);
- of_set_root_node(root);
+ ret = barebox_register_of(root);
+ if (ret)
+ pr_warn("Failed to register device-tree: %pe\n", ERR_PTR(ret));
np = of_find_node_by_alias(root, "state");
diff --git a/common/filetype.c b/common/filetype.c
index 8ffcd6adcd..2039134516 100644
--- a/common/filetype.c
+++ b/common/filetype.c
@@ -438,7 +438,7 @@ enum filetype cdev_detect_type(const char *name)
struct cdev *cdev;
void *buf;
- cdev = cdev_open(name, O_RDONLY);
+ cdev = cdev_open_by_name(name, O_RDONLY);
if (!cdev)
return type;
diff --git a/common/partitions.c b/common/partitions.c
index b579559672..9cca5c4a15 100644
--- a/common/partitions.c
+++ b/common/partitions.c
@@ -51,7 +51,7 @@ static int register_one_partition(struct block_device *blk,
cdev->flags |= DEVFS_PARTITION_FROM_TABLE;
cdev->dos_partition_type = part->dos_partition_type;
- strcpy(cdev->partuuid, part->partuuid);
+ strcpy(cdev->uuid, part->partuuid);
free(partition_name);
diff --git a/common/partitions/dos.c b/common/partitions/dos.c
index 597d7bf9bc..566c8dd949 100644
--- a/common/partitions/dos.c
+++ b/common/partitions/dos.c
@@ -182,6 +182,9 @@ static void dos_partition(void *buf, struct block_device *blk,
struct disk_signature_priv *dsp;
uint32_t signature = get_unaligned_le32(buf + 0x1b8);
+ if (signature)
+ sprintf(blk->cdev.uuid, "%08x", signature);
+
table = (struct partition_entry *)&buffer[446];
for (i = 0; i < 4; i++) {
diff --git a/common/partitions/efi.c b/common/partitions/efi.c
index 6d811bfb3b..0787b93f12 100644
--- a/common/partitions/efi.c
+++ b/common/partitions/efi.c
@@ -445,6 +445,8 @@ static void efi_partition(void *buf, struct block_device *blk,
return;
}
+ snprintf(blk->cdev.uuid, sizeof(blk->cdev.uuid), "%pUl", &gpt->disk_guid);
+
nb_part = le32_to_cpu(gpt->num_partition_entries);
if (nb_part > MAX_PARTITION) {
diff --git a/common/partitions/parser.h b/common/partitions/parser.h
index 69508932b3..d67f8e1d6a 100644
--- a/common/partitions/parser.h
+++ b/common/partitions/parser.h
@@ -17,7 +17,7 @@
struct partition {
char name[MAX_PARTITION_NAME];
u8 dos_partition_type;
- char partuuid[MAX_PARTUUID_STR];
+ char partuuid[MAX_UUID_STR];
uint64_t first_sec;
uint64_t size;
};