diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2022-02-18 12:59:21 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2022-02-18 12:59:21 +0100 |
commit | 9481ada6ad354cfe38418354afee48ceca438c05 (patch) | |
tree | e030cda328c36643b1c5085c9be7c5f2210f579b /common | |
parent | a32d0e18fb1bc738ae1aa79d8713b178c977988c (diff) | |
parent | eedf7a3b5f990dff893b54740ceea917c24e2cb7 (diff) | |
download | barebox-9481ada6ad354cfe38418354afee48ceca438c05.tar.gz barebox-9481ada6ad354cfe38418354afee48ceca438c05.tar.xz |
Merge branch 'for-next/efi'
Diffstat (limited to 'common')
-rw-r--r-- | common/bootm.c | 6 | ||||
-rw-r--r-- | common/efi/payload/init.c | 4 | ||||
-rw-r--r-- | common/filetype.c | 2 | ||||
-rw-r--r-- | common/partitions.c | 2 | ||||
-rw-r--r-- | common/partitions/dos.c | 3 | ||||
-rw-r--r-- | common/partitions/efi.c | 2 | ||||
-rw-r--r-- | common/partitions/parser.h | 2 |
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; }; |