[ipxe-devel] [PATCH] [efi] install the HII config access protocol on a child of the SNP handle

Laszlo Ersek lersek at redhat.com
Thu Jun 30 12:42:09 UTC 2016

On 06/30/16 14:37, Laszlo Ersek wrote:
> In edk2, there are several drivers that associate HII forms (and
> corresponding config access protocol instances) with each individual
> network device. (In this context, "network device" means the EFI handle on
> which the SNP protocol is installed, and on which the device path ending
> with the MAC() node is installed also.) Such edk2 drivers are, for
> example: Ip4Dxe, HttpBootDxe, VlanConfigDxe.
> In UEFI, any given handle can carry at most one instance of a specific
> protocol (see it e.g. in the specification of the
> InstallProtocolInterface() boot service). This implies that the class of
> drivers mentioned above can't install their EFI_HII_CONFIG_ACCESS_PROTOCOL
> instances on the SNP handle directly -- they would conflict with each
> other. Accordingly, each of those edk2 drivers creates a "private" child
> handle under the SNP handle, and installs its config access protocol (and
> corresponding HII package list) on its child handle.
> The device path for the child handle is traditionally derived by appending
> a Hardware Vendor Device Path node after the MAC() node. The VenHw() nodes
> in question consist of a GUID (by definition), and no trailing data (by
> choice). The purpose of these VenHw() nodes is only that all the child
> nodes can be uniquely identified by device path.
> At the moment iPXE does not follow this pattern. It doesn't run into a
> conflict when it installs its EFI_HII_CONFIG_ACCESS_PROTOCOL directly on
> the SNP handle, but that's only because iPXE is the sole driver not
> following the pattern. This behavior seems risky (one might call it a
> "latent bug"); better align iPXE with the edk2 custom.
> Cc: Michael Brown <mcb30 at ipxe.org>
> Cc: Gary Lin <glin at suse.com>
> Cc: Ladi Prosek <lprosek at redhat.com>
> Ref: http://thread.gmane.org/gmane.comp.bios.edk2.devel/13494

Sorry, the Ref should have been:


or it can be dropped altogether.


More information about the ipxe-devel mailing list