Message ID | 20211204085647.v5.1.I0fe54c28f143525a17746622da0465cdee6bf405@changeid |
---|---|
State | Accepted, archived |
Delegated to: | Heinrich Schuchardt |
Headers | show |
Series | efi: Improvements to U-Boot running on top of UEFI | expand |
On 12/4/21 07:56, Simon Glass wrote: > These names are better used for access to devices provided by an EFI > layer. Use EFI_LOADER instead here, since these are only available in > U-Boot's EFI_LOADER layer. > > Signed-off-by: Simon Glass <sjg@chromium.org> > --- > > Changes in v5: > - Add new patch to resolve EFI/EFI_LOADER conflict > > doc/develop/uefi/uefi.rst | 8 ++++---- > drivers/block/blk-uclass.c | 4 ++-- > include/blk.h | 2 +- > include/dm/uclass-id.h | 2 +- > lib/efi_driver/efi_block_device.c | 8 ++++---- > lib/efi_driver/efi_uclass.c | 8 ++++---- > 6 files changed, 16 insertions(+), 16 deletions(-) > > diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst > index f17138f5c76..a3e2656ab81 100644 > --- a/doc/develop/uefi/uefi.rst > +++ b/doc/develop/uefi/uefi.rst > @@ -620,12 +620,12 @@ EFI_DRIVER_BINDING_PROTOCOL implementation for the UEFI drivers. > > A linker created list is used to keep track of the UEFI drivers. To create an > entry in the list the UEFI driver uses the U_BOOT_DRIVER macro specifying > -UCLASS_EFI as the ID of its uclass, e.g:: > +UCLASS_EFI_LOADER as the ID of its uclass, e.g:: > > /* Identify as UEFI driver */ > U_BOOT_DRIVER(efi_block) = { > .name = "EFI block driver", > - .id = UCLASS_EFI, > + .id = UCLASS_EFI_LOADER, > .ops = &driver_ops, > }; > > @@ -651,8 +651,8 @@ UEFI block IO driver > The UEFI block IO driver supports devices exposing the EFI_BLOCK_IO_PROTOCOL. > > When connected it creates a new U-Boot block IO device with interface type > -IF_TYPE_EFI, adds child controllers mapping the partitions, and installs the > -EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on these. This can be used together with the > +IF_TYPE_EFI_LOADER, adds child controllers mapping the partitions, and installs > +the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on these. This can be used together with the > software iPXE to boot from iSCSI network drives [4]. > > This driver is only available if U-Boot is configured with:: > diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c > index 83682dcc181..a7470ae28d5 100644 > --- a/drivers/block/blk-uclass.c > +++ b/drivers/block/blk-uclass.c > @@ -28,7 +28,7 @@ static const char *if_typename_str[IF_TYPE_COUNT] = { > [IF_TYPE_SATA] = "sata", > [IF_TYPE_HOST] = "host", > [IF_TYPE_NVME] = "nvme", > - [IF_TYPE_EFI] = "efi", > + [IF_TYPE_EFI_LOADER] = "efiloader", > [IF_TYPE_VIRTIO] = "virtio", > [IF_TYPE_PVBLOCK] = "pvblock", > }; > @@ -44,7 +44,7 @@ static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { > [IF_TYPE_SATA] = UCLASS_AHCI, > [IF_TYPE_HOST] = UCLASS_ROOT, > [IF_TYPE_NVME] = UCLASS_NVME, > - [IF_TYPE_EFI] = UCLASS_EFI, > + [IF_TYPE_EFI_LOADER] = UCLASS_EFI_LOADER, > [IF_TYPE_VIRTIO] = UCLASS_VIRTIO, > [IF_TYPE_PVBLOCK] = UCLASS_PVBLOCK, > }; > diff --git a/include/blk.h b/include/blk.h > index f0cc7ca1a28..f0835c3fed5 100644 > --- a/include/blk.h > +++ b/include/blk.h > @@ -34,7 +34,7 @@ enum if_type { > IF_TYPE_SATA, > IF_TYPE_HOST, > IF_TYPE_NVME, > - IF_TYPE_EFI, > + IF_TYPE_EFI_LOADER, > IF_TYPE_PVBLOCK, > IF_TYPE_VIRTIO, > > diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h > index fd139b9b2a0..5e503960aa7 100644 > --- a/include/dm/uclass-id.h > +++ b/include/dm/uclass-id.h > @@ -48,7 +48,7 @@ enum uclass_id { > UCLASS_DMA, /* Direct Memory Access */ > UCLASS_DSA, /* Distributed (Ethernet) Switch Architecture */ > UCLASS_ECDSA, /* Elliptic curve cryptographic device */ > - UCLASS_EFI, /* EFI managed devices */ > + UCLASS_EFI_LOADER, /* Devices managed by EFI_LOADER */ "managed by EFI_LOADER" does not catch it. I will change this to "devices created by UEFI applications and drivers" when merging. Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de> > UCLASS_ETH, /* Ethernet device */ > UCLASS_ETH_PHY, /* Ethernet PHY device */ > UCLASS_FIRMWARE, /* Firmware */ > diff --git a/lib/efi_driver/efi_block_device.c b/lib/efi_driver/efi_block_device.c > index 0937e3595a4..04cb3ef0d4e 100644 > --- a/lib/efi_driver/efi_block_device.c > +++ b/lib/efi_driver/efi_block_device.c > @@ -147,7 +147,7 @@ static int efi_bl_bind(efi_handle_t handle, void *interface) > if (!obj) > return -ENOENT; > > - devnum = blk_find_max_devnum(IF_TYPE_EFI); > + devnum = blk_find_max_devnum(IF_TYPE_EFI_LOADER); > if (devnum == -ENODEV) > devnum = 0; > else if (devnum < 0) > @@ -159,8 +159,8 @@ static int efi_bl_bind(efi_handle_t handle, void *interface) > sprintf(name, "efiblk#%d", devnum); > > /* Create driver model udevice for the EFI block io device */ > - ret = blk_create_device(parent, "efi_blk", name, IF_TYPE_EFI, devnum, > - io->media->block_size, > + ret = blk_create_device(parent, "efi_blk", name, IF_TYPE_EFI_LOADER, > + devnum, io->media->block_size, > (lbaint_t)io->media->last_block, &bdev); > if (ret) > return ret; > @@ -209,6 +209,6 @@ static const struct efi_driver_ops driver_ops = { > /* Identify as EFI driver */ > U_BOOT_DRIVER(efi_block) = { > .name = "EFI block driver", > - .id = UCLASS_EFI, > + .id = UCLASS_EFI_LOADER, > .ops = &driver_ops, > }; > diff --git a/lib/efi_driver/efi_uclass.c b/lib/efi_driver/efi_uclass.c > index 382c2b477f4..b01ce89c84e 100644 > --- a/lib/efi_driver/efi_uclass.c > +++ b/lib/efi_driver/efi_uclass.c > @@ -308,7 +308,7 @@ efi_status_t efi_driver_init(void) > log_debug("Initializing EFI driver framework\n"); > for (drv = ll_entry_start(struct driver, driver); > drv < ll_entry_end(struct driver, driver); ++drv) { > - if (drv->id == UCLASS_EFI) { > + if (drv->id == UCLASS_EFI_LOADER) { > ret = efi_add_driver(drv); > if (ret != EFI_SUCCESS) { > log_err("Failed to add EFI driver %s\n", > @@ -328,7 +328,7 @@ efi_status_t efi_driver_init(void) > */ > static int efi_uc_init(struct uclass *class) > { > - log_debug("Initializing UCLASS_EFI\n"); > + log_debug("Initializing UCLASS_EFI_LOADER\n"); > return 0; > } > > @@ -340,13 +340,13 @@ static int efi_uc_init(struct uclass *class) > */ > static int efi_uc_destroy(struct uclass *class) > { > - log_debug("Destroying UCLASS_EFI\n"); > + log_debug("Destroying UCLASS_EFI_LOADER\n"); > return 0; > } > > UCLASS_DRIVER(efi) = { > .name = "efi", > - .id = UCLASS_EFI, > + .id = UCLASS_EFI_LOADER, > .init = efi_uc_init, > .destroy = efi_uc_destroy, > }; >
diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst index f17138f5c76..a3e2656ab81 100644 --- a/doc/develop/uefi/uefi.rst +++ b/doc/develop/uefi/uefi.rst @@ -620,12 +620,12 @@ EFI_DRIVER_BINDING_PROTOCOL implementation for the UEFI drivers. A linker created list is used to keep track of the UEFI drivers. To create an entry in the list the UEFI driver uses the U_BOOT_DRIVER macro specifying -UCLASS_EFI as the ID of its uclass, e.g:: +UCLASS_EFI_LOADER as the ID of its uclass, e.g:: /* Identify as UEFI driver */ U_BOOT_DRIVER(efi_block) = { .name = "EFI block driver", - .id = UCLASS_EFI, + .id = UCLASS_EFI_LOADER, .ops = &driver_ops, }; @@ -651,8 +651,8 @@ UEFI block IO driver The UEFI block IO driver supports devices exposing the EFI_BLOCK_IO_PROTOCOL. When connected it creates a new U-Boot block IO device with interface type -IF_TYPE_EFI, adds child controllers mapping the partitions, and installs the -EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on these. This can be used together with the +IF_TYPE_EFI_LOADER, adds child controllers mapping the partitions, and installs +the EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on these. This can be used together with the software iPXE to boot from iSCSI network drives [4]. This driver is only available if U-Boot is configured with:: diff --git a/drivers/block/blk-uclass.c b/drivers/block/blk-uclass.c index 83682dcc181..a7470ae28d5 100644 --- a/drivers/block/blk-uclass.c +++ b/drivers/block/blk-uclass.c @@ -28,7 +28,7 @@ static const char *if_typename_str[IF_TYPE_COUNT] = { [IF_TYPE_SATA] = "sata", [IF_TYPE_HOST] = "host", [IF_TYPE_NVME] = "nvme", - [IF_TYPE_EFI] = "efi", + [IF_TYPE_EFI_LOADER] = "efiloader", [IF_TYPE_VIRTIO] = "virtio", [IF_TYPE_PVBLOCK] = "pvblock", }; @@ -44,7 +44,7 @@ static enum uclass_id if_type_uclass_id[IF_TYPE_COUNT] = { [IF_TYPE_SATA] = UCLASS_AHCI, [IF_TYPE_HOST] = UCLASS_ROOT, [IF_TYPE_NVME] = UCLASS_NVME, - [IF_TYPE_EFI] = UCLASS_EFI, + [IF_TYPE_EFI_LOADER] = UCLASS_EFI_LOADER, [IF_TYPE_VIRTIO] = UCLASS_VIRTIO, [IF_TYPE_PVBLOCK] = UCLASS_PVBLOCK, }; diff --git a/include/blk.h b/include/blk.h index f0cc7ca1a28..f0835c3fed5 100644 --- a/include/blk.h +++ b/include/blk.h @@ -34,7 +34,7 @@ enum if_type { IF_TYPE_SATA, IF_TYPE_HOST, IF_TYPE_NVME, - IF_TYPE_EFI, + IF_TYPE_EFI_LOADER, IF_TYPE_PVBLOCK, IF_TYPE_VIRTIO, diff --git a/include/dm/uclass-id.h b/include/dm/uclass-id.h index fd139b9b2a0..5e503960aa7 100644 --- a/include/dm/uclass-id.h +++ b/include/dm/uclass-id.h @@ -48,7 +48,7 @@ enum uclass_id { UCLASS_DMA, /* Direct Memory Access */ UCLASS_DSA, /* Distributed (Ethernet) Switch Architecture */ UCLASS_ECDSA, /* Elliptic curve cryptographic device */ - UCLASS_EFI, /* EFI managed devices */ + UCLASS_EFI_LOADER, /* Devices managed by EFI_LOADER */ UCLASS_ETH, /* Ethernet device */ UCLASS_ETH_PHY, /* Ethernet PHY device */ UCLASS_FIRMWARE, /* Firmware */ diff --git a/lib/efi_driver/efi_block_device.c b/lib/efi_driver/efi_block_device.c index 0937e3595a4..04cb3ef0d4e 100644 --- a/lib/efi_driver/efi_block_device.c +++ b/lib/efi_driver/efi_block_device.c @@ -147,7 +147,7 @@ static int efi_bl_bind(efi_handle_t handle, void *interface) if (!obj) return -ENOENT; - devnum = blk_find_max_devnum(IF_TYPE_EFI); + devnum = blk_find_max_devnum(IF_TYPE_EFI_LOADER); if (devnum == -ENODEV) devnum = 0; else if (devnum < 0) @@ -159,8 +159,8 @@ static int efi_bl_bind(efi_handle_t handle, void *interface) sprintf(name, "efiblk#%d", devnum); /* Create driver model udevice for the EFI block io device */ - ret = blk_create_device(parent, "efi_blk", name, IF_TYPE_EFI, devnum, - io->media->block_size, + ret = blk_create_device(parent, "efi_blk", name, IF_TYPE_EFI_LOADER, + devnum, io->media->block_size, (lbaint_t)io->media->last_block, &bdev); if (ret) return ret; @@ -209,6 +209,6 @@ static const struct efi_driver_ops driver_ops = { /* Identify as EFI driver */ U_BOOT_DRIVER(efi_block) = { .name = "EFI block driver", - .id = UCLASS_EFI, + .id = UCLASS_EFI_LOADER, .ops = &driver_ops, }; diff --git a/lib/efi_driver/efi_uclass.c b/lib/efi_driver/efi_uclass.c index 382c2b477f4..b01ce89c84e 100644 --- a/lib/efi_driver/efi_uclass.c +++ b/lib/efi_driver/efi_uclass.c @@ -308,7 +308,7 @@ efi_status_t efi_driver_init(void) log_debug("Initializing EFI driver framework\n"); for (drv = ll_entry_start(struct driver, driver); drv < ll_entry_end(struct driver, driver); ++drv) { - if (drv->id == UCLASS_EFI) { + if (drv->id == UCLASS_EFI_LOADER) { ret = efi_add_driver(drv); if (ret != EFI_SUCCESS) { log_err("Failed to add EFI driver %s\n", @@ -328,7 +328,7 @@ efi_status_t efi_driver_init(void) */ static int efi_uc_init(struct uclass *class) { - log_debug("Initializing UCLASS_EFI\n"); + log_debug("Initializing UCLASS_EFI_LOADER\n"); return 0; } @@ -340,13 +340,13 @@ static int efi_uc_init(struct uclass *class) */ static int efi_uc_destroy(struct uclass *class) { - log_debug("Destroying UCLASS_EFI\n"); + log_debug("Destroying UCLASS_EFI_LOADER\n"); return 0; } UCLASS_DRIVER(efi) = { .name = "efi", - .id = UCLASS_EFI, + .id = UCLASS_EFI_LOADER, .init = efi_uc_init, .destroy = efi_uc_destroy, };
These names are better used for access to devices provided by an EFI layer. Use EFI_LOADER instead here, since these are only available in U-Boot's EFI_LOADER layer. Signed-off-by: Simon Glass <sjg@chromium.org> --- Changes in v5: - Add new patch to resolve EFI/EFI_LOADER conflict doc/develop/uefi/uefi.rst | 8 ++++---- drivers/block/blk-uclass.c | 4 ++-- include/blk.h | 2 +- include/dm/uclass-id.h | 2 +- lib/efi_driver/efi_block_device.c | 8 ++++---- lib/efi_driver/efi_uclass.c | 8 ++++---- 6 files changed, 16 insertions(+), 16 deletions(-)