diff options
author | Michael Brown <mcb30@ipxe.org> | 2014-05-19 20:29:01 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2014-05-20 00:33:05 +0100 |
commit | 81df95e8aebffeae11a0ae6b7099e402da1c08c3 (patch) | |
tree | ea1cb0edad2dd4951f81aa1494c2825e7feace03 | |
parent | 21c43e44cbee8e582abdc9cded06ab012873f176 (diff) | |
download | ipxe-81df95e8aebffeae11a0ae6b7099e402da1c08c3.zip ipxe-81df95e8aebffeae11a0ae6b7099e402da1c08c3.tar.gz ipxe-81df95e8aebffeae11a0ae6b7099e402da1c08c3.tar.bz2 |
[efi] Make EFI_HII_DATABASE_PROTOCOL optional
Some UEFI systems (observed with a Mac Pro) do not provide
EFI_HII_DATABASE_PROTOCOL. We can continue to function without
providing access to network device settings via HII, so make this
protocol optional and fall back to simply not providing any HII
protocols.
Reported-by: Matt Woodward <pxematt@woodwardcc.com>
Tested-by: Matt Woodward <pxematt@woodwardcc.com>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/interface/efi/efi_snp_hii.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/interface/efi/efi_snp_hii.c b/src/interface/efi/efi_snp_hii.c index c272527..797a6d8 100644 --- a/src/interface/efi/efi_snp_hii.c +++ b/src/interface/efi/efi_snp_hii.c @@ -75,7 +75,7 @@ static EFI_GUID efi_hii_ibm_ucm_compliant_formset_guid /** EFI HII database protocol */ static EFI_HII_DATABASE_PROTOCOL *efihii; -EFI_REQUIRE_PROTOCOL ( EFI_HII_DATABASE_PROTOCOL, &efihii ); +EFI_REQUEST_PROTOCOL ( EFI_HII_DATABASE_PROTOCOL, &efihii ); /** * Identify settings to be exposed via HII @@ -649,6 +649,10 @@ int efi_snp_hii_install ( struct efi_snp_device *snpdev ) { int efirc; int rc; + /* Do nothing if HII database protocol is not supported */ + if ( ! efihii ) + return 0; + /* Initialise HII protocol */ memcpy ( &snpdev->hii, &efi_snp_device_hii, sizeof ( snpdev->hii ) ); @@ -705,6 +709,11 @@ int efi_snp_hii_install ( struct efi_snp_device *snpdev ) { void efi_snp_hii_uninstall ( struct efi_snp_device *snpdev ) { EFI_BOOT_SERVICES *bs = efi_systab->BootServices; + /* Do nothing if HII database protocol is not supported */ + if ( ! efihii ) + return; + + /* Uninstall protocols and remove package list */ bs->UninstallMultipleProtocolInterfaces ( snpdev->handle, &efi_hii_config_access_protocol_guid, &snpdev->hii, |