On Wed, Jun 07, 2023 at 02:06:55PM +0200, Ahmad Fatoum wrote: > So far, we had basically three ways to reference barebox,state on block > devices: > > - On platforms with device tree, we point at a fixed partition > described in the DT > > - On platforms without device tree, we have a custom binding that > does a global lookup by partuuid (or a more obscure one by diskuuid). > > Both are less than optimal. The first clashes with the need to use > a GPT partition for the state and the second doesn't allow relating the > UUID with an actual device for the case where e.g. both an SD-Card and > an eMMC are flashed with the same image. > > This series fixes that by: > > - Supporting definition of fixed partitions that are identical to > GPT/MBR partitions. > > - Alternatively, support pointing barebox-state backend at a > GPT-partitioned device and the partition with the barebox-state > Type GUID will be taken. Applied, thanks Sascha > > Changelog written in each patch > > Ahmad Fatoum (19): > common: partitions: decouple from EFI GUID definition > efi: define efi_guid_t as 32-bit aligned guid_t > cdev: fix for_each_cdev macro > of: partition: support of_partition_ensure_probed on parent device > state: fix deep probe handling > of: of_path: always call of_partition_ensure_probed before resolving > driver: add new cdev_is_partition helper > commands: stat: remove code duplication for type info > cdev: use more descriptive struct cdev::diskuuid/partuuid > cdev: record whether partition is parsed from OF > cdev: have devfs_add_partition return existing identical partition, > not NULL > block: parse partition table on block device registration > common: partitions: record whether disk is GPT or MBR partitioned > block: add cdev_is_block_(device|partition|disk) helpers > of: export new of_cdev_find helper > state: factor device path lookup into helper function > cdev: use cdev::dos_partition_type only if cdev_is_mbr_partitioned > common: partitions: efi: record type UUID in cdev > state: allow lookup of barebox state partition by Type GUID > > arch/sandbox/board/hostfile.c | 4 -- > common/block.c | 4 ++ > common/blspec.c | 2 +- > common/bootm.c | 2 +- > common/partitions.c | 4 +- > common/partitions/dos.c | 4 +- > common/partitions/efi.c | 11 ++++-- > common/partitions/parser.h | 6 ++- > common/state/state.c | 50 ++++++++++++++++++------ > drivers/ata/disk_ata_drive.c | 5 --- > drivers/base/driver.c | 2 +- > drivers/block/efi-block-io.c | 9 +---- > drivers/block/virtio_blk.c | 8 +--- > drivers/mci/mci-core.c | 6 --- > drivers/misc/storage-by-uuid.c | 4 +- > drivers/nvme/host/core.c | 5 --- > drivers/of/of_path.c | 69 ++++++++++++++++++++++++---------- > drivers/of/partition.c | 46 ++++++++++++++++++++--- > drivers/of/platform.c | 2 +- > drivers/usb/storage/usb.c | 5 --- > fs/devfs-core.c | 67 +++++++++++++++++++++++++-------- > fs/fs.c | 33 +++++++++++----- > include/block.h | 15 ++++++++ > include/driver.h | 60 ++++++++++++++++++++++++++--- > include/efi.h | 19 ++++++++-- > include/efi/partition.h | 27 ++++++------- > include/of.h | 1 + > include/state.h | 4 ++ > lib/Makefile | 1 + > lib/uuid.c | 15 ++++++++ > 30 files changed, 351 insertions(+), 139 deletions(-) > create mode 100644 lib/uuid.c > > -- > 2.39.2 > > > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |