[PATCH] Update UEFI requirements for servers.


Heinrich Schuchardt
 

On 10/22/21 14:19, Sunil V L wrote:
As per feedback, reduced basic UEFI requirements to 2.6.1 of the
UEFI spec.
Added reason to understand why additional protocols need to be
supported on top of basic requirements.
Signed-off-by: Sunil V L <sunilvl@...>
---
riscv-platform-spec.adoc | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)
diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
index e6e1c2c..fc95c29 100644
--- a/riscv-platform-spec.adoc
+++ b/riscv-platform-spec.adoc
@@ -678,13 +678,9 @@ interrupt files allow for better VM oversubscription on the same hart.
==== Boot Process
===== Firmware
The boot and system firmware for the server platforms must support UEFI as
-defined in the section 2.6 of the UEFI Specification <<spec_uefi>> with some
+defined in the section 2.6.1 of the UEFI Specification <<spec_uefi>> with some
additional requirements described in following sub-sections.
-====== PCIe support
-The platforms are required to implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and
-other protocols as specified in Chapter 14 of <<spec_uefi>>.
-
====== UEFI Configuration Tables
The platforms are required to provide following tables:
@@ -693,16 +689,16 @@ newer with HW-Reduced ACPI model.
* *SMBIOS3_TABLE_GUID* SMBIOS table which conforms to version 3.4 or later.
====== UEFI Protocol Support
-The UEFI protocols listed below are required to be implemented in addition to
-the base spec requirements.
+The UEFI protocols listed below are required to be implemented.
-.Required UEFI Protocols
+.Required additional UEFI Protocols
[cols="3,1,1", width=95%, align="center", options="header"]
|===
|Protocol | UEFI Section | Note
-|EFI_LOAD_FILE2_PROTOCOL | 13.2 |
-|EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL | 14 |
-|EFI_PCI_IO_PROTOCOL | 14.4 |
+|EFI_LOAD_FILE2_PROTOCOL | 13.2 | For PCIe OptionRom
+support and to provide initial RAM disk.
Thank you for providing the reasoning behind the requirement.

The suggested note is mixing consuming and providing a protocol:

"PCIe Option ROM" means that the LoadImage() service must support loading a file via the EFI_LOAD_FILE2_PROTOCOL. As this is already covered by the EBBR this does not belong into the server requirements. We should instead at an explicit requirement to support PCIe option ROMs.

The Linux EFI stub can consume an EFI_LOAD_FILE2_PROTOCOL to load the initial RAM disk. This is not standardized in the UEFI specification.

A patch series is pending for GRUB to implement the EFI_LOAD_FILE2_PROTOCOL for the initial RAM disk. Once this series is merged there is no necessity for the firmware to duplicate this feature.

U-Boot allows to specify an initial RAM disk in the boot option and to provide an EFI_LOAD_FILE2_PROTOCOL. The format of the boot option is not standardized anywhere.

I would prefer to remove the EFI_LOAD_FILE2_PROTOCOL from the list as

* Initial RAM disks are specific to Linux.
* They are not used by other operating systems like BSD.
* GRUB will already provide what is needed.
* It is not in the UEFI specification.
* It is not implemented in EDK II.

If you really want it, I suggest that you work on getting it into the UEFI specification. Until then, please, provide a specification that is detailed enough for implementation in the platform spec. A simple table entry does not suffice.

Best regards

Heinrich

+|EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL | 14 | For PCIe support
+|EFI_PCI_IO_PROTOCOL | 14.4 | For PCIe support
|===
===== Hardware Discovery Mechanisms


Sunil V L
 

As per feedback, reduced basic UEFI requirements to 2.6.1 of the
UEFI spec.

Added reason to understand why additional protocols need to be
supported on top of basic requirements.

Signed-off-by: Sunil V L <sunilvl@...>
---
riscv-platform-spec.adoc | 18 +++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
index e6e1c2c..fc95c29 100644
--- a/riscv-platform-spec.adoc
+++ b/riscv-platform-spec.adoc
@@ -678,13 +678,9 @@ interrupt files allow for better VM oversubscription on the same hart.
==== Boot Process
===== Firmware
The boot and system firmware for the server platforms must support UEFI as
-defined in the section 2.6 of the UEFI Specification <<spec_uefi>> with some
+defined in the section 2.6.1 of the UEFI Specification <<spec_uefi>> with some
additional requirements described in following sub-sections.

-====== PCIe support
-The platforms are required to implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and
-other protocols as specified in Chapter 14 of <<spec_uefi>>.
-
====== UEFI Configuration Tables
The platforms are required to provide following tables:

@@ -693,16 +689,16 @@ newer with HW-Reduced ACPI model.
* *SMBIOS3_TABLE_GUID* SMBIOS table which conforms to version 3.4 or later.

====== UEFI Protocol Support
-The UEFI protocols listed below are required to be implemented in addition to
-the base spec requirements.
+The UEFI protocols listed below are required to be implemented.

-.Required UEFI Protocols
+.Required additional UEFI Protocols
[cols="3,1,1", width=95%, align="center", options="header"]
|===
|Protocol | UEFI Section | Note
-|EFI_LOAD_FILE2_PROTOCOL | 13.2 |
-|EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL | 14 |
-|EFI_PCI_IO_PROTOCOL | 14.4 |
+|EFI_LOAD_FILE2_PROTOCOL | 13.2 | For PCIe OptionRom
+support and to provide initial RAM disk.
+|EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL | 14 | For PCIe support
+|EFI_PCI_IO_PROTOCOL | 14.4 | For PCIe support
|===

===== Hardware Discovery Mechanisms
--
2.32.0