UEFI device-paths are used in the EFI world to depict the parent-child relationship between devices. No two device can have the same device-path. Currently we fail to generate unique devices-paths.
The nodes in UEFI device paths should match the devices on the path to the DM root node. I have started drafting a solution. Several block device classes still need to be handled (IDE, NVMe, EFI, VirtIO). Also handling of PCI addresses is missing. But this series contains enough to see the direction of development. Heinrich Schuchardt (7): dm: add get_dp_node() to struct uclass_driver dm: implement uclass_get_dp_node() dm: implement get_dp_node for block devices dm: implement get_dp_node for USB hub devices dm: implement get_dp_node for USB mass storage devices dm: implement get_dp_node for MMC devices efi_loader: use uclass_get_dp_node common/usb_hub.c | 33 ++++ common/usb_storage.c | 33 ++++ drivers/block/blk-uclass.c | 56 ++++++ drivers/core/uclass.c | 26 +++ drivers/mmc/mmc-uclass.c | 25 +++ include/dm/uclass.h | 13 ++ include/efi_loader.h | 7 + lib/efi_loader/efi_device_path.c | 325 +++---------------------------- 8 files changed, 221 insertions(+), 297 deletions(-) -- 2.39.2