On Fri, Sep 02, 2016 at 01:40:11PM +0800, Heyi Guo wrote:
- In SBBR, EFI_LOAD_FILE2_PROTOCOL is a required protocol. However,it is
not used for boot in UEFI, and is mainly used for loading PCIe option ROM in EDK2 implementation. So why is this protocol required while PCIe is not mandatory for ARM server?
My guess is that this is an oversight. If PCIe is not mandatory, then this protocol should not be mandatory either.
Interestingly, looking into this exposes a UEFI spec error: "In the case of EFI_LOAD_FILE2_PROTOCOL, the behavior is the same as above, except that it is only used if BootOption is FALSE"
(There is no BootOption, only BootPolicy.)
But EFI_LOAD_FILE2_PROTOCOL can also be used by anything wishing to load an image from a RAM location without describing it as a device path. So I think it needs to remain mandatory regardless.
(Although why isn't PCIe mandatory...?)
I didn't see anything in SBSA saying that PCIe is mandatory; it always says that "if PCIe is supported, ...", so I suppose PCIe is not mandatory in ARM server. Please correct me if I'm wrong.
No, I was expressing a preference more than anything.
In EDK2 implementation, EFI_LOAD_FILE2_PROTOCOL is installed to PCI IO device handle, so if there is no PCIe support in UEFI, there will not be this protocol instance and it will become not compliant to SBBR.
Arguably, this would be a bug in EDK2. There is nothing explicitly tying EFI_LOAD_FILE2_PROTOCOL to PCIe, other than the latter needing the former for OptionROM..
- In SBBR, for IPv6 related protocols, it is said that they are optional
on platforms that do not support networking. The question is, on platforms that *do* support networking, do IPv6 protocols become mandatory? Or is it allowed for only supporting IPv4 protocols?
Charles, Leif?
I don't see a value in shipping a system today that does not support IPv6, and the SBBR seems to agree :)
If a specific hardware component (for some reason) could not be made to support IPv6, it would still be possible for the platform to be compliant as long as the relevant protocols were supported by the firmware, so that a plug-in card could still make use of IPv6.
Also from the view of implementation, shall we switch to network stack modules from NetworkPkg instead of MdeModulePkg? I think only the ones in NetworkPkg support IPv6.
Not switching, as some of the IP4 support is still in MdeModulePkg. Look to OvmfPkg/*.dsc for guidance. (Ard: we should fix this for ArmVirtPkg.)
Regards,
Leif