[PATCH v3 3/3] riscv-platform-spec: Initial server firmware requirements


Sunil V L
 

This specifies mandatory requirements for server class platforms in
addition to the requirements in base specification.

Many dependencies and granular details are still TBD. But this is a
good starting point to understand and refine the requirements for
server platforms.

Signed-off-by: Sunil V L <sunilvl@...>

Changes in v3:
- Referred to the PCI chapter in UEFI specification.
Changes in v2:
- Aligned to 80 characters.
- Removed protocols related to graphics support.
- Referred to SMBIOS conformance guidelines.
---
changelog.adoc | 2 +
riscv-platform-spec.adoc | 183 +++++++++++++++++++++++++++++++++++++--
2 files changed, 176 insertions(+), 9 deletions(-)

diff --git a/changelog.adoc b/changelog.adoc
index af1d1df..3e15b8e 100644
--- a/changelog.adoc
+++ b/changelog.adoc
@@ -8,6 +8,8 @@
## Change Log

### version 0.2-rc0
+* 2021-04-08:
+** Initial commit of server firmware requirements
* 2021-03-25:
** Initial commit of Embedded-2022 specification
* 2021-03-16:
diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
index ee5511f..7573a09 100644
--- a/riscv-platform-spec.adoc
+++ b/riscv-platform-spec.adoc
@@ -9,10 +9,12 @@
:author: RISC-V Platform Specification Task Group
:email: tech-unixplatformspec@...
:revnumber: 0.2-rc0
-:revdate: Mar 2021
+:revdate: Apr 2021
:doctype: book
:sectnums:
+:sectnumlevels: 5
:toc: macro
+:toclevels: 5

// table of contents
toc::[]
@@ -68,14 +70,177 @@ include::profiles.adoc[]

// Server extension for Linux-2022 Platform
=== Server Extension
-==== Boot Process
-* Firmware
-* Boot-Loader
-* Discovery Mechanisms
-
-==== Runtime services
-* SBI
-* UEFI
+The server extension specifies additional requirements apart from base
+requirements for RV64I based server class platforms. Support for RV128I
+based platforms will be in future when available.
+
+The platforms which conform to server extension must implement
+
+- Advanced Platform-Level Interrupt Controller (APLIC). [*Dependency:
+ AIA spec should be ratified*]
+- Incoming MSI Controller (IMSIC) [*Dependency: AIA spec should be
+ratified*]
+
+- RISC-V Hypervisor-level Instruction-Set Extensions. [*Dependency:
+Spec should be ratified*]
+- Incoming MSI Controller (IMSIC) with at least 1 guest interrupt
+file for each HART ?? (*TBD*)
+- IOMMU with support for memory resident interrupt files ?? (*TBD*)
+
+==== Boot and Runtime Requirements
+===== Firmware
+The boot and system firmware for the RV64I server platforms must be
+based on UEFI as per the base specification with some additional
+requirements as mentioned below.
+
+====== PCIe support
+The platform shall implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and other
+required protocols as specified in Chapter 14 of UEFI specification version
+2.9.
+
+====== UEFI configuration tables
+The platform which is complaint with server extension must provide following
+tables.
+
+* *EFI_ACPI_20_TABLE_GUID* ACPI configuration table which is at version 6.4+ or
+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 must be implemented in addition to the base
+spec requirements.
+
+.Mandatory UEFI Protocols
+[cols="3,1,1", width=95%, align="center", options="header"]
+|===
+|Protocol | UEFI 2.9 $ | Note
+|EFI_LOAD_FILE2_PROTOCOL | 13.2 |
+|EFI_DECOMPRESS_PROTOCOL | 19.5 |
+|===
+
+===== Boot-Loader
+*TBD*
+
+===== Discovery Mechanisms (ACPI)
+For RV64I server platforms, it is mandatory to have ACPI tables passed via UEFI
+to the operating system for the purpose of discovery and the configuration of
+the hardware. This section defines mandatory ACPI tables and objects. All other
+ACPI tables for RISC-V can be implemented as required adhering to the ACPI spec
+version 6.4+(RISC-V support when added).
+
+====== ACPI System Description Tables
+
+
+.Mandatory ACPI tables
+[cols="3,1,2", width=95%, align="center", options="header"]
+|===
+|ACPI Table |ACPI 6.4+ $|Note
+|Root System Description Pointer (RSDP) |5.2.5 |
+|Extended System Description Table (XSDT) |5.2.8 |
+|Fixed ACPI Description Table (FADT) |5.2.9 |
+|Differentiated System Description Table (DSDT)|5.2.11.1 |
+|Multiple APIC Description Table (MADT) |5.2.12 |*TBD*: Need ECR
+ to add
+ APLIC & IMSIC
+ (AIA) to MADT
+|RISC-V Timer Description Table |New |*TBD*: _DSD to
+ communicate
+ timebase-frequency?
+|Processor Properties Topology Table (PPTT) |5.2.29 |CPU/Cache topology
+ information
+|Memory-mapped ConFiGuration space (MCFG) |PCI-SIG |Required for PCIe
+ support
+|Debug Port Table 2 (DBG2) |Microsoft |*TBD*: 16550D?
+|Serial Port Console Redirection (SPCR) |Microsoft |*TBD*: 16550D?
+|System Resource Affinity Table (SRAT) |5.2.16 |Required if the
+ platform supports NUMA
+|System Locality Information Table (SLIT) |5.2.17 |Required if the
+ platform supports NUMA
+|IOMMU Information Table | |*TBD*: New IOMMU
+ table need to be
+ defined (like IVRS)
+|Software Delegated Exception Interface (SDEI) |SDEI |*TBD*: New table
+ and SBI extension
+ also may be required
+|PMU event mapping table? |New |*TBD*: New table
+ required
+|===
+
+====== ACPI Namespace
+
+- Processors must be defined under the System Bus (\_SB) name space.
+- Below list of Device Objects and Methods must be implemented for each device
+ definition in the DSDT.
+
+.Mandatory Device Objects and Methods
+[cols="1,2,3", width=95%, align="center", options="header"]
+|===
+|Object/Method | ACPI 6.4+ $ | Note
+|_AEI | 5.6.5.2 | Required for GPIO-signalled events.
+|_EVT | 5.6.5.3 | Required for interrupt-signalled events.
+|_ADR | 6.1.1 | Required for PCI
+|_HID | 6.1.5 |
+|_UID | 6.1.12 |
+|_CRS | 6.2.2 |
+|_CCA | 6.2.17 | Required for DMA capable devices
+|_STA | 6.3.7/7.2.4 | Device status
+|===
+
+===== Runtime services
+====== SBI
+*TBD*
+
+====== UEFI
+It is mandatory to implement the UEFI run time services listed below.
+
+.Mandatory UEFI Runtime Services
+[cols="3,1,3", width=95%, align="center", options="header"]
+|===
+|Service | UEFI 2.9 $ | Note
+|GetVariable | 8.2 |
+|GetNextVariableName | 8.2 |
+|SetVariable | 8.2 | A dedicated storage for firmware
+ should be available so that there
+ is no conflict in access by both
+ firmware and the OS.
+|QueryVariableInfo | 8.2 |
+|GetTime | 8.3 | RTC Access by the OS
+|SetTime | 8.3 | If it is not possible to set the RTC,
+ the SetTime() can return an error.
+|GetWakeupTime | 8.3 | Interface must be implemented but it
+ can return EFI_UNSUPPORTED.
+|SetWakeupTime | 8.3 | Interface must be implemented but it
+ can return EFI_UNSUPPORTED.
+|SetVirtualAddressMap | 8.4 |
+|ConvertPointer | 8.4 |
+|GetNextHighMonotonicCount | 8.5 |
+|ResetSystem | 8.5 | If SBI SRST implementation is also
+ available, the OS should not use the
+ SBI interface directly but use this
+ UEFI interface.
+|UpdateCapsule | 8.5 | Interface must be implemented but it
+ can return EFI_UNSUPPORTED.
+|QueryCapsuleCapabilities | 8.5 | Interface must be implemented but it
+ can return EFI_UNSUPPORTED.
+|===
+
+====== SMBIOS
+The System Management BIOS (SMBIOS) table is mandatory for the platform
+complaint to server extension. The SMBIOS table is identified using
+*SMBIOS3_TABLE_GUID* in UEFI configuration table. EfiRuntimeServicesData must
+be the memory type used for the SMBIOS table.
+
+In addition to the conformance guidelines as mentioned in ANNEX A / 6.2 of the
+SMBIOS specification 3.4.0, below additional structures are mandatory.
+
+.Mandatory SMBIOS structures
+[cols="4,1,2", width=95%, align="center", options="header"]
+|===
+|Structure Type | SMBIOS 3.4.0 $ | Note
+|Management Controller Host Interface (Type 42) | 7.43 | Required for
+Redfish Host Interface.
+|Processor Additional Information (Type 44) | 7.45 |
+|===

==== System Peripherals
* PCI-E
--
2.25.1


Abner Chang
 

Hi Sunil,
Thanks for some revises in this version. However, I still have two comments on this version,

Sunil V L <sunilvl@...> 於 2021年4月30日 週五 下午12:51寫道:
This specifies mandatory requirements for server class platforms in
addition to the requirements in base specification.

Many dependencies and granular details are still TBD. But this is a
good starting point to understand and refine the requirements for
server platforms.

Signed-off-by: Sunil V L <sunilvl@...>

Changes in v3:
 - Referred to the PCI chapter in UEFI specification.
Changes in v2:
 - Aligned to 80 characters.
 - Removed protocols related to graphics support.
 - Referred to SMBIOS conformance guidelines.
---
 changelog.adoc           |   2 +
 riscv-platform-spec.adoc | 183 +++++++++++++++++++++++++++++++++++++--
 2 files changed, 176 insertions(+), 9 deletions(-)

diff --git a/changelog.adoc b/changelog.adoc
index af1d1df..3e15b8e 100644
--- a/changelog.adoc
+++ b/changelog.adoc
@@ -8,6 +8,8 @@
 ## Change Log

 ### version 0.2-rc0
+* 2021-04-08:
+** Initial commit of server firmware requirements
 * 2021-03-25:
 ** Initial commit of Embedded-2022 specification
 * 2021-03-16:
diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
index ee5511f..7573a09 100644
--- a/riscv-platform-spec.adoc
+++ b/riscv-platform-spec.adoc
@@ -9,10 +9,12 @@
 :author: RISC-V Platform Specification Task Group
 :email: tech-unixplatformspec@...
 :revnumber: 0.2-rc0
-:revdate: Mar 2021
+:revdate: Apr 2021
 :doctype: book
 :sectnums:
+:sectnumlevels: 5
 :toc: macro
+:toclevels: 5

 // table of contents
 toc::[]
@@ -68,14 +70,177 @@ include::profiles.adoc[]

 // Server extension for Linux-2022 Platform
 === Server Extension
-==== Boot Process
-* Firmware
-* Boot-Loader
-* Discovery Mechanisms
-
-==== Runtime services
-* SBI
-* UEFI
+The server extension specifies additional  requirements apart from base
+requirements for RV64I based server class platforms. Support for RV128I
+based platforms will be in future when available.
 RV128 and RV64 are very different scales of the server. Most of the server classes may not compliant with RV128 requirement.  RV128I should be separated into another target platform we will define in the future.
+
+The platforms which conform to server extension must implement
+
+- Advanced Platform-Level Interrupt Controller (APLIC). [*Dependency:
+ AIA spec should be ratified*]
+- Incoming MSI Controller (IMSIC) [*Dependency: AIA spec should be
+ratified*]
+
+- RISC-V Hypervisor-level Instruction-Set Extensions. [*Dependency:
+Spec should be ratified*]
+- Incoming MSI Controller (IMSIC) with at least 1 guest interrupt
+file for each HART ?? (*TBD*)
+- IOMMU with support for memory resident interrupt files ?? (*TBD*)
+
+==== Boot and Runtime Requirements
+=====  Firmware
+The boot and system firmware for the RV64I server platforms must be
+based on UEFI as per the base specification with some additional
+requirements as mentioned below.
+
+====== PCIe support
+The platform shall implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and other
+required protocols as specified in Chapter 14 of UEFI specification version
+2.9.
+
+====== UEFI configuration tables
+The platform which is complaint with server extension must provide following
+tables.
+
+* *EFI_ACPI_20_TABLE_GUID* ACPI configuration table which is at version 6.4+ or
+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 must be implemented in addition to the base
+spec requirements.
+
+.Mandatory UEFI Protocols
+[cols="3,1,1", width=95%, align="center", options="header"]
+|===
+|Protocol                              | UEFI 2.9 $ | Note
+|EFI_LOAD_FILE2_PROTOCOL               | 13.2       |
+|EFI_DECOMPRESS_PROTOCOL               | 19.5       |
+|===
+
+===== Boot-Loader
+*TBD*
+
+===== Discovery Mechanisms (ACPI)
+For RV64I server platforms, it is mandatory to have ACPI tables passed via UEFI
+to the operating system for the purpose of discovery and the configuration of
+the hardware. This section defines mandatory ACPI tables and objects. All other
+ACPI tables for RISC-V can be implemented as required adhering to the ACPI spec
+version 6.4+(RISC-V support when added).
This is still not quite accurate. We don't have RISC-V hart information of the privileges, ISA, CLIC, enhanced PMP, sPMP, and others that each hart supports. That is impossible for OS to understand the RISC-V core hardware features based on the current ACPI spec without SMBIOS type 44 or DT for the unified OS image. Although we are going to propose new ACPI tables which are equivalent to SMBIOS type44, just not in a rush because all server OSes know SMBIOS.
I would suggest refining this section to below if you have concerns about the "Configure hardware" part as you responded previously.

- Discovery Mechanisms and Configure Hardware through ACPI
We can have the original paragraph of  +===== Discovery Mechanisms (ACPI) here.
- Discovery Mechanisms through SMBIOS type 44
Actually, SMBIOS type 44 only describes the hardware features of RISC-V harts, I can provide the paragraph to this subsection if you are ok with this change.

That's fine we don't have to mention DT here now because all server OSes recognize SMBIOS and UEFI/edk2 is the only possible FW at this moment.
Thanks
Abner

+
+====== ACPI System Description Tables
+
+
+.Mandatory ACPI tables
+[cols="3,1,2", width=95%, align="center", options="header"]
+|===
+|ACPI Table                                    |ACPI 6.4+ $|Note
+|Root System Description Pointer (RSDP)        |5.2.5      |
+|Extended System Description Table (XSDT)      |5.2.8      |
+|Fixed ACPI Description Table (FADT)           |5.2.9      |
+|Differentiated System Description Table (DSDT)|5.2.11.1   |
+|Multiple APIC Description Table (MADT)        |5.2.12     |*TBD*: Need ECR
+                                                            to add
+                                                            APLIC & IMSIC
+                                                            (AIA) to MADT
+|RISC-V Timer Description Table                |New        |*TBD*: _DSD to
+                                                            communicate
+                                                            timebase-frequency?
+|Processor Properties Topology Table (PPTT)    |5.2.29     |CPU/Cache topology
+                                                            information
+|Memory-mapped ConFiGuration space (MCFG)      |PCI-SIG    |Required for PCIe
+                                                            support
+|Debug Port Table 2 (DBG2)                     |Microsoft  |*TBD*: 16550D?
+|Serial Port Console Redirection (SPCR)        |Microsoft  |*TBD*: 16550D?
+|System Resource Affinity Table (SRAT)         |5.2.16     |Required if the
+                                                            platform supports NUMA
+|System Locality Information Table (SLIT)      |5.2.17     |Required if the
+                                                            platform supports NUMA
+|IOMMU Information Table                       |           |*TBD*: New IOMMU
+                                                            table need to be
+                                                            defined (like IVRS)
+|Software Delegated Exception Interface (SDEI) |SDEI       |*TBD*: New table
+                                                            and SBI extension
+                                                            also may be required
+|PMU event mapping table?                      |New        |*TBD*: New table
+                                                            required
+|===
+
+====== ACPI Namespace
+
+- Processors must be defined under the System Bus (\_SB) name space.
+- Below list of Device Objects and Methods must be implemented for each device
+  definition in the DSDT.
+
+.Mandatory Device Objects and Methods
+[cols="1,2,3", width=95%, align="center", options="header"]
+|===
+|Object/Method | ACPI 6.4+ $ | Note
+|_AEI          | 5.6.5.2     | Required for GPIO-signalled events.
+|_EVT          | 5.6.5.3     | Required for interrupt-signalled events.
+|_ADR          | 6.1.1       | Required for PCI
+|_HID          | 6.1.5       |
+|_UID          | 6.1.12      |
+|_CRS          | 6.2.2       |
+|_CCA          | 6.2.17      | Required for DMA capable devices
+|_STA          | 6.3.7/7.2.4 | Device status
+|===
+
+===== Runtime services
+====== SBI
+*TBD*
+
+====== UEFI
+It is mandatory to implement the UEFI run time services listed below.
+
+.Mandatory UEFI Runtime Services
+[cols="3,1,3", width=95%, align="center", options="header"]
+|===
+|Service                   | UEFI 2.9 $ | Note
+|GetVariable               | 8.2        |
+|GetNextVariableName       | 8.2        |
+|SetVariable               | 8.2        | A dedicated storage for firmware
+                                          should be available so that there
+                                          is no conflict in access by both
+                                          firmware and the OS.
+|QueryVariableInfo         | 8.2        |
+|GetTime                   | 8.3        | RTC Access by the OS
+|SetTime                   | 8.3        | If it is not possible to set the RTC,
+                                          the SetTime() can return an error.
+|GetWakeupTime             | 8.3        | Interface must be implemented but it
+                                          can return EFI_UNSUPPORTED.
+|SetWakeupTime             | 8.3        | Interface must be implemented but it
+                                          can return EFI_UNSUPPORTED.
+|SetVirtualAddressMap      | 8.4        |
+|ConvertPointer            | 8.4        |
+|GetNextHighMonotonicCount | 8.5        |
+|ResetSystem               | 8.5        | If SBI SRST implementation is also
+                                          available, the OS should not use the
+                                          SBI interface directly but use this
+                                          UEFI interface.
+|UpdateCapsule             | 8.5        | Interface must be implemented but it
+                                          can return EFI_UNSUPPORTED.
+|QueryCapsuleCapabilities  | 8.5        | Interface must be implemented but it
+                                          can return EFI_UNSUPPORTED.
+|===
+
+====== SMBIOS
+The System Management BIOS (SMBIOS) table is mandatory for the platform
+complaint to server extension. The SMBIOS table is identified using
+*SMBIOS3_TABLE_GUID* in UEFI configuration table. EfiRuntimeServicesData must
+be the memory type used for the SMBIOS table.
+
+In addition to the conformance guidelines as mentioned in ANNEX A / 6.2 of the
+SMBIOS specification 3.4.0, below additional structures are mandatory.
+
+.Mandatory SMBIOS structures
+[cols="4,1,2", width=95%, align="center", options="header"]
+|===
+|Structure Type                                 | SMBIOS 3.4.0 $ | Note
+|Management Controller Host Interface (Type 42) | 7.43           | Required for
+Redfish Host Interface.
+|Processor Additional Information (Type 44)     | 7.45           |
+|===

 ==== System Peripherals
 * PCI-E
--
2.25.1







Sunil V L
 

Hi Abner,

On Sun, May 02, 2021 at 03:46:20PM +0800, Abner Chang wrote:
Hi Sunil,
Thanks for some revises in this version. However, I still have two
comments on this version,

Sunil V L <sunilvl@...> 於 2021年4月30日 週五 下午12:51寫道:

This specifies mandatory requirements for server class platforms in
addition to the requirements in base specification.

Many dependencies and granular details are still TBD. But this is a
good starting point to understand and refine the requirements for
server platforms.

Signed-off-by: Sunil V L <sunilvl@...>

Changes in v3:
- Referred to the PCI chapter in UEFI specification.
Changes in v2:
- Aligned to 80 characters.
- Removed protocols related to graphics support.
- Referred to SMBIOS conformance guidelines.
---
changelog.adoc | 2 +
riscv-platform-spec.adoc | 183 +++++++++++++++++++++++++++++++++++++--
2 files changed, 176 insertions(+), 9 deletions(-)

diff --git a/changelog.adoc b/changelog.adoc
index af1d1df..3e15b8e 100644
--- a/changelog.adoc
+++ b/changelog.adoc
@@ -8,6 +8,8 @@
## Change Log

### version 0.2-rc0
+* 2021-04-08:
+** Initial commit of server firmware requirements
* 2021-03-25:
** Initial commit of Embedded-2022 specification
* 2021-03-16:
diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
index ee5511f..7573a09 100644
--- a/riscv-platform-spec.adoc
+++ b/riscv-platform-spec.adoc
@@ -9,10 +9,12 @@
:author: RISC-V Platform Specification Task Group
:email: tech-unixplatformspec@...
:revnumber: 0.2-rc0
-:revdate: Mar 2021
+:revdate: Apr 2021
:doctype: book
:sectnums:
+:sectnumlevels: 5
:toc: macro
+:toclevels: 5

// table of contents
toc::[]
@@ -68,14 +70,177 @@ include::profiles.adoc[]

// Server extension for Linux-2022 Platform
=== Server Extension
-==== Boot Process
-* Firmware
-* Boot-Loader
-* Discovery Mechanisms
-
-==== Runtime services
-* SBI
-* UEFI
+The server extension specifies additional requirements apart from base
+requirements for RV64I based server class platforms. Support for RV128I
+based platforms will be in future when available.
RV128 and RV64 are very different scales of the server. Most of the server
classes may not compliant with RV128 requirement. RV128I should be
separated into another target platform we will define in the future.
I just mentioned here based on a feedback. But I agree Rv128 would need
separate target itself.

+
+The platforms which conform to server extension must implement
+
+- Advanced Platform-Level Interrupt Controller (APLIC). [*Dependency:
+ AIA spec should be ratified*]
+- Incoming MSI Controller (IMSIC) [*Dependency: AIA spec should be
+ratified*]
+
+- RISC-V Hypervisor-level Instruction-Set Extensions. [*Dependency:
+Spec should be ratified*]
+- Incoming MSI Controller (IMSIC) with at least 1 guest interrupt
+file for each HART ?? (*TBD*)
+- IOMMU with support for memory resident interrupt files ?? (*TBD*)
+
+==== Boot and Runtime Requirements
+===== Firmware
+The boot and system firmware for the RV64I server platforms must be
+based on UEFI as per the base specification with some additional
+requirements as mentioned below.
+
+====== PCIe support
+The platform shall implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and other
+required protocols as specified in Chapter 14 of UEFI specification
version
+2.9.
+
+====== UEFI configuration tables
+The platform which is complaint with server extension must provide
following
+tables.
+
+* *EFI_ACPI_20_TABLE_GUID* ACPI configuration table which is at version
6.4+ or
+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 must be implemented in addition to the
base
+spec requirements.
+
+.Mandatory UEFI Protocols
+[cols="3,1,1", width=95%, align="center", options="header"]
+|===
+|Protocol | UEFI 2.9 $ | Note
+|EFI_LOAD_FILE2_PROTOCOL | 13.2 |
+|EFI_DECOMPRESS_PROTOCOL | 19.5 |
+|===
+
+===== Boot-Loader
+*TBD*
+
+===== Discovery Mechanisms (ACPI)
+For RV64I server platforms, it is mandatory to have ACPI tables passed
via UEFI
+to the operating system for the purpose of discovery and the
configuration of
+the hardware. This section defines mandatory ACPI tables and objects. All
other
+ACPI tables for RISC-V can be implemented as required adhering to the
ACPI spec
+version 6.4+(RISC-V support when added).
This is still not quite accurate. We don't have RISC-V hart information of
the privileges, ISA, CLIC, enhanced PMP, sPMP, and others that each hart
supports. That is impossible for OS to understand the RISC-V core hardware
features based on the current ACPI spec without SMBIOS type 44 or DT for
the unified OS image. Although we are going to propose new ACPI tables
which are equivalent to SMBIOS type44, just not in a rush because all
server OSes know SMBIOS.
I would suggest refining this section to below if you have concerns about
the "Configure hardware" part as you responded previously.

- Discovery Mechanisms and Configure Hardware through ACPI
We can have the original paragraph of +===== Discovery Mechanisms (ACPI)
here.
- Discovery Mechanisms through SMBIOS type 44
Actually, SMBIOS type 44 only describes the hardware features of RISC-V
harts, I can provide the paragraph to this subsection if you are ok with
this change.
Thanks. I mentioned type 44 under smbios section but please provide the
text for its importance of the HW discovery and configuration.

In future (may be 2024+ spec) when we add ACPI table similar to smbios
type 44, we need to decide whether we need to mandate one of them (ACPI
or SMBIOS) or both. It depends on the contents of the ACPI table and its
usage.

Thanks
Sunil


That's fine we don't have to mention DT here now because all server OSes
recognize SMBIOS and UEFI/edk2 is the only possible FW at this moment.
Thanks
Abner

+
+====== ACPI System Description Tables
+
+
+.Mandatory ACPI tables
+[cols="3,1,2", width=95%, align="center", options="header"]
+|===
+|ACPI Table |ACPI 6.4+ $|Note
+|Root System Description Pointer (RSDP) |5.2.5 |
+|Extended System Description Table (XSDT) |5.2.8 |
+|Fixed ACPI Description Table (FADT) |5.2.9 |
+|Differentiated System Description Table (DSDT)|5.2.11.1 |
+|Multiple APIC Description Table (MADT) |5.2.12 |*TBD*: Need
ECR
+ to add
+ APLIC & IMSIC
+ (AIA) to MADT
+|RISC-V Timer Description Table |New |*TBD*: _DSD to
+ communicate
+
timebase-frequency?
+|Processor Properties Topology Table (PPTT) |5.2.29 |CPU/Cache
topology
+ information
+|Memory-mapped ConFiGuration space (MCFG) |PCI-SIG |Required for
PCIe
+ support
+|Debug Port Table 2 (DBG2) |Microsoft |*TBD*: 16550D?
+|Serial Port Console Redirection (SPCR) |Microsoft |*TBD*: 16550D?
+|System Resource Affinity Table (SRAT) |5.2.16 |Required if
the
+ platform
supports NUMA
+|System Locality Information Table (SLIT) |5.2.17 |Required if
the
+ platform
supports NUMA
+|IOMMU Information Table | |*TBD*: New
IOMMU
+ table need to
be
+ defined (like
IVRS)
+|Software Delegated Exception Interface (SDEI) |SDEI |*TBD*: New
table
+ and SBI
extension
+ also may be
required
+|PMU event mapping table? |New |*TBD*: New
table
+ required
+|===
+
+====== ACPI Namespace
+
+- Processors must be defined under the System Bus (\_SB) name space.
+- Below list of Device Objects and Methods must be implemented for each
device
+ definition in the DSDT.
+
+.Mandatory Device Objects and Methods
+[cols="1,2,3", width=95%, align="center", options="header"]
+|===
+|Object/Method | ACPI 6.4+ $ | Note
+|_AEI | 5.6.5.2 | Required for GPIO-signalled events.
+|_EVT | 5.6.5.3 | Required for interrupt-signalled events.
+|_ADR | 6.1.1 | Required for PCI
+|_HID | 6.1.5 |
+|_UID | 6.1.12 |
+|_CRS | 6.2.2 |
+|_CCA | 6.2.17 | Required for DMA capable devices
+|_STA | 6.3.7/7.2.4 | Device status
+|===
+
+===== Runtime services
+====== SBI
+*TBD*
+
+====== UEFI
+It is mandatory to implement the UEFI run time services listed below.
+
+.Mandatory UEFI Runtime Services
+[cols="3,1,3", width=95%, align="center", options="header"]
+|===
+|Service | UEFI 2.9 $ | Note
+|GetVariable | 8.2 |
+|GetNextVariableName | 8.2 |
+|SetVariable | 8.2 | A dedicated storage for firmware
+ should be available so that
there
+ is no conflict in access by both
+ firmware and the OS.
+|QueryVariableInfo | 8.2 |
+|GetTime | 8.3 | RTC Access by the OS
+|SetTime | 8.3 | If it is not possible to set
the RTC,
+ the SetTime() can return an
error.
+|GetWakeupTime | 8.3 | Interface must be implemented
but it
+ can return EFI_UNSUPPORTED.
+|SetWakeupTime | 8.3 | Interface must be implemented
but it
+ can return EFI_UNSUPPORTED.
+|SetVirtualAddressMap | 8.4 |
+|ConvertPointer | 8.4 |
+|GetNextHighMonotonicCount | 8.5 |
+|ResetSystem | 8.5 | If SBI SRST implementation is
also
+ available, the OS should not
use the
+ SBI interface directly but use
this
+ UEFI interface.
+|UpdateCapsule | 8.5 | Interface must be implemented
but it
+ can return EFI_UNSUPPORTED.
+|QueryCapsuleCapabilities | 8.5 | Interface must be implemented
but it
+ can return EFI_UNSUPPORTED.
+|===
+
+====== SMBIOS
+The System Management BIOS (SMBIOS) table is mandatory for the platform
+complaint to server extension. The SMBIOS table is identified using
+*SMBIOS3_TABLE_GUID* in UEFI configuration table. EfiRuntimeServicesData
must
+be the memory type used for the SMBIOS table.
+
+In addition to the conformance guidelines as mentioned in ANNEX A / 6.2
of the
+SMBIOS specification 3.4.0, below additional structures are mandatory.
+
+.Mandatory SMBIOS structures
+[cols="4,1,2", width=95%, align="center", options="header"]
+|===
+|Structure Type | SMBIOS 3.4.0 $ | Note
+|Management Controller Host Interface (Type 42) | 7.43 |
Required for
+Redfish Host Interface.
+|Processor Additional Information (Type 44) | 7.45 |
+|===

==== System Peripherals
* PCI-E
--
2.25.1







Abner Chang
 



Sunil V L <sunilvl@...> 於 2021年5月2日 週日 下午4:35寫道:
Hi Abner,

On Sun, May 02, 2021 at 03:46:20PM +0800, Abner Chang wrote:
> Hi Sunil,
> Thanks for some revises in this version. However, I still have two
> comments on this version,
>
> Sunil V L <sunilvl@...> 於 2021年4月30日 週五 下午12:51寫道:
>
> > This specifies mandatory requirements for server class platforms in
> > addition to the requirements in base specification.
> >
> > Many dependencies and granular details are still TBD. But this is a
> > good starting point to understand and refine the requirements for
> > server platforms.
> >
> > Signed-off-by: Sunil V L <sunilvl@...>
> >
> > Changes in v3:
> >  - Referred to the PCI chapter in UEFI specification.
> > Changes in v2:
> >  - Aligned to 80 characters.
> >  - Removed protocols related to graphics support.
> >  - Referred to SMBIOS conformance guidelines.
> > ---
> >  changelog.adoc           |   2 +
> >  riscv-platform-spec.adoc | 183 +++++++++++++++++++++++++++++++++++++--
> >  2 files changed, 176 insertions(+), 9 deletions(-)
> >
> > diff --git a/changelog.adoc b/changelog.adoc
> > index af1d1df..3e15b8e 100644
> > --- a/changelog.adoc
> > +++ b/changelog.adoc
> > @@ -8,6 +8,8 @@
> >  ## Change Log
> >
> >  ### version 0.2-rc0
> > +* 2021-04-08:
> > +** Initial commit of server firmware requirements
> >  * 2021-03-25:
> >  ** Initial commit of Embedded-2022 specification
> >  * 2021-03-16:
> > diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
> > index ee5511f..7573a09 100644
> > --- a/riscv-platform-spec.adoc
> > +++ b/riscv-platform-spec.adoc
> > @@ -9,10 +9,12 @@
> >  :author: RISC-V Platform Specification Task Group
> >  :email: tech-unixplatformspec@...
> >  :revnumber: 0.2-rc0
> > -:revdate: Mar 2021
> > +:revdate: Apr 2021
> >  :doctype: book
> >  :sectnums:
> > +:sectnumlevels: 5
> >  :toc: macro
> > +:toclevels: 5
> >
> >  // table of contents
> >  toc::[]
> > @@ -68,14 +70,177 @@ include::profiles.adoc[]
> >
> >  // Server extension for Linux-2022 Platform
> >  === Server Extension
> > -==== Boot Process
> > -* Firmware
> > -* Boot-Loader
> > -* Discovery Mechanisms
> > -
> > -==== Runtime services
> > -* SBI
> > -* UEFI
> > +The server extension specifies additional  requirements apart from base
> > +requirements for RV64I based server class platforms. Support for RV128I
> > +based platforms will be in future when available.
> >
>  RV128 and RV64 are very different scales of the server. Most of the server
> classes may not compliant with RV128 requirement.  RV128I should be
> separated into another target platform we will define in the future.
>
I just mentioned here based on a feedback. But I agree Rv128 would need
separate target itself.

> > +
> > +The platforms which conform to server extension must implement
> > +
> > +- Advanced Platform-Level Interrupt Controller (APLIC). [*Dependency:
> > + AIA spec should be ratified*]
> > +- Incoming MSI Controller (IMSIC) [*Dependency: AIA spec should be
> > +ratified*]
> > +
> > +- RISC-V Hypervisor-level Instruction-Set Extensions. [*Dependency:
> > +Spec should be ratified*]
> > +- Incoming MSI Controller (IMSIC) with at least 1 guest interrupt
> > +file for each HART ?? (*TBD*)
> > +- IOMMU with support for memory resident interrupt files ?? (*TBD*)
> > +
> > +==== Boot and Runtime Requirements
> > +=====  Firmware
> > +The boot and system firmware for the RV64I server platforms must be
> > +based on UEFI as per the base specification with some additional
> > +requirements as mentioned below.
> > +
> > +====== PCIe support
> > +The platform shall implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and other
> > +required protocols as specified in Chapter 14 of UEFI specification
> > version
> > +2.9.
> > +
> > +====== UEFI configuration tables
> > +The platform which is complaint with server extension must provide
> > following
> > +tables.
> > +
> > +* *EFI_ACPI_20_TABLE_GUID* ACPI configuration table which is at version
> > 6.4+ or
> > +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 must be implemented in addition to the
> > base
> > +spec requirements.
> > +
> > +.Mandatory UEFI Protocols
> > +[cols="3,1,1", width=95%, align="center", options="header"]
> > +|===
> > +|Protocol                              | UEFI 2.9 $ | Note
> > +|EFI_LOAD_FILE2_PROTOCOL               | 13.2       |
> > +|EFI_DECOMPRESS_PROTOCOL               | 19.5       |
> > +|===
> > +
> > +===== Boot-Loader
> > +*TBD*
> > +
> > +===== Discovery Mechanisms (ACPI)
> > +For RV64I server platforms, it is mandatory to have ACPI tables passed
> > via UEFI
> > +to the operating system for the purpose of discovery and the
> > configuration of
> > +the hardware. This section defines mandatory ACPI tables and objects. All
> > other
> > +ACPI tables for RISC-V can be implemented as required adhering to the
> > ACPI spec
> > +version 6.4+(RISC-V support when added).
> >
> This is still not quite accurate. We don't have RISC-V hart information of
> the privileges, ISA, CLIC, enhanced PMP, sPMP, and others that each hart
> supports. That is impossible for OS to understand the RISC-V core hardware
> features based on the current ACPI spec without SMBIOS type 44 or DT for
> the unified OS image. Although we are going to propose new ACPI tables
> which are equivalent to SMBIOS type44, just not in a rush because all
> server OSes know SMBIOS.
> I would suggest refining this section to below if you have concerns about
> the "Configure hardware" part as you responded previously.
>
> - Discovery Mechanisms and Configure Hardware through ACPI
> We can have the original paragraph of  +===== Discovery Mechanisms (ACPI)
> here.
> - Discovery Mechanisms through SMBIOS type 44
> Actually, SMBIOS type 44 only describes the hardware features of RISC-V
> harts, I can provide the paragraph to this subsection if you are ok with
> this change.

Thanks. I mentioned type 44 under smbios section but please provide the
text for its importance of the HW discovery and configuration.
Sure, I will 


In future (may be 2024+ spec)  when we add ACPI table similar to smbios
type 44, we need to decide whether we need to mandate one of them (ACPI
or SMBIOS) or both. It depends on the contents of the ACPI table and its
usage.
Yes, I agree with you.
Thanks
Abner 

Thanks
Sunil

>
> That's fine we don't have to mention DT here now because all server OSes
> recognize SMBIOS and UEFI/edk2 is the only possible FW at this moment.
> Thanks
> Abner
>
> +
> > +====== ACPI System Description Tables
> > +
> > +
> > +.Mandatory ACPI tables
> > +[cols="3,1,2", width=95%, align="center", options="header"]
> > +|===
> > +|ACPI Table                                    |ACPI 6.4+ $|Note
> > +|Root System Description Pointer (RSDP)        |5.2.5      |
> > +|Extended System Description Table (XSDT)      |5.2.8      |
> > +|Fixed ACPI Description Table (FADT)           |5.2.9      |
> > +|Differentiated System Description Table (DSDT)|5.2.11.1   |
> > +|Multiple APIC Description Table (MADT)        |5.2.12     |*TBD*: Need
> > ECR
> > +                                                            to add
> > +                                                            APLIC & IMSIC
> > +                                                            (AIA) to MADT
> > +|RISC-V Timer Description Table                |New        |*TBD*: _DSD to
> > +                                                            communicate
> > +
> > timebase-frequency?
> > +|Processor Properties Topology Table (PPTT)    |5.2.29     |CPU/Cache
> > topology
> > +                                                            information
> > +|Memory-mapped ConFiGuration space (MCFG)      |PCI-SIG    |Required for
> > PCIe
> > +                                                            support
> > +|Debug Port Table 2 (DBG2)                     |Microsoft  |*TBD*: 16550D?
> > +|Serial Port Console Redirection (SPCR)        |Microsoft  |*TBD*: 16550D?
> > +|System Resource Affinity Table (SRAT)         |5.2.16     |Required if
> > the
> > +                                                            platform
> > supports NUMA
> > +|System Locality Information Table (SLIT)      |5.2.17     |Required if
> > the
> > +                                                            platform
> > supports NUMA
> > +|IOMMU Information Table                       |           |*TBD*: New
> > IOMMU
> > +                                                            table need to
> > be
> > +                                                            defined (like
> > IVRS)
> > +|Software Delegated Exception Interface (SDEI) |SDEI       |*TBD*: New
> > table
> > +                                                            and SBI
> > extension
> > +                                                            also may be
> > required
> > +|PMU event mapping table?                      |New        |*TBD*: New
> > table
> > +                                                            required
> > +|===
> > +
> > +====== ACPI Namespace
> > +
> > +- Processors must be defined under the System Bus (\_SB) name space.
> > +- Below list of Device Objects and Methods must be implemented for each
> > device
> > +  definition in the DSDT.
> > +
> > +.Mandatory Device Objects and Methods
> > +[cols="1,2,3", width=95%, align="center", options="header"]
> > +|===
> > +|Object/Method | ACPI 6.4+ $ | Note
> > +|_AEI          | 5.6.5.2     | Required for GPIO-signalled events.
> > +|_EVT          | 5.6.5.3     | Required for interrupt-signalled events.
> > +|_ADR          | 6.1.1       | Required for PCI
> > +|_HID          | 6.1.5       |
> > +|_UID          | 6.1.12      |
> > +|_CRS          | 6.2.2       |
> > +|_CCA          | 6.2.17      | Required for DMA capable devices
> > +|_STA          | 6.3.7/7.2.4 | Device status
> > +|===
> > +
> > +===== Runtime services
> > +====== SBI
> > +*TBD*
> > +
> > +====== UEFI
> > +It is mandatory to implement the UEFI run time services listed below.
> > +
> > +.Mandatory UEFI Runtime Services
> > +[cols="3,1,3", width=95%, align="center", options="header"]
> > +|===
> > +|Service                   | UEFI 2.9 $ | Note
> > +|GetVariable               | 8.2        |
> > +|GetNextVariableName       | 8.2        |
> > +|SetVariable               | 8.2        | A dedicated storage for firmware
> > +                                          should be available so that
> > there
> > +                                          is no conflict in access by both
> > +                                          firmware and the OS.
> > +|QueryVariableInfo         | 8.2        |
> > +|GetTime                   | 8.3        | RTC Access by the OS
> > +|SetTime                   | 8.3        | If it is not possible to set
> > the RTC,
> > +                                          the SetTime() can return an
> > error.
> > +|GetWakeupTime             | 8.3        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|SetWakeupTime             | 8.3        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|SetVirtualAddressMap      | 8.4        |
> > +|ConvertPointer            | 8.4        |
> > +|GetNextHighMonotonicCount | 8.5        |
> > +|ResetSystem               | 8.5        | If SBI SRST implementation is
> > also
> > +                                          available, the OS should not
> > use the
> > +                                          SBI interface directly but use
> > this
> > +                                          UEFI interface.
> > +|UpdateCapsule             | 8.5        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|QueryCapsuleCapabilities  | 8.5        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|===
> > +
> > +====== SMBIOS
> > +The System Management BIOS (SMBIOS) table is mandatory for the platform
> > +complaint to server extension. The SMBIOS table is identified using
> > +*SMBIOS3_TABLE_GUID* in UEFI configuration table. EfiRuntimeServicesData
> > must
> > +be the memory type used for the SMBIOS table.
> > +
> > +In addition to the conformance guidelines as mentioned in ANNEX A / 6.2
> > of the
> > +SMBIOS specification 3.4.0, below additional structures are mandatory.
> > +
> > +.Mandatory SMBIOS structures
> > +[cols="4,1,2", width=95%, align="center", options="header"]
> > +|===
> > +|Structure Type                                 | SMBIOS 3.4.0 $ | Note
> > +|Management Controller Host Interface (Type 42) | 7.43           |
> > Required for
> > +Redfish Host Interface.
> > +|Processor Additional Information (Type 44)     | 7.45           |
> > +|===
> >
> >  ==== System Peripherals
> >  * PCI-E
> > --
> > 2.25.1
> >
> >
> >
> >
> >
> >
> >


Abner Chang
 



Abner Chang via lists.riscv.org <renba.chang=gmail.com@...> 於 2021年5月2日 週日 下午11:51寫道:


Sunil V L <sunilvl@...> 於 2021年5月2日 週日 下午4:35寫道:
Hi Abner,

On Sun, May 02, 2021 at 03:46:20PM +0800, Abner Chang wrote:
> Hi Sunil,
> Thanks for some revises in this version. However, I still have two
> comments on this version,
>
> Sunil V L <sunilvl@...> 於 2021年4月30日 週五 下午12:51寫道:
>
> > This specifies mandatory requirements for server class platforms in
> > addition to the requirements in base specification.
> >
> > Many dependencies and granular details are still TBD. But this is a
> > good starting point to understand and refine the requirements for
> > server platforms.
> >
> > Signed-off-by: Sunil V L <sunilvl@...>
> >
> > Changes in v3:
> >  - Referred to the PCI chapter in UEFI specification.
> > Changes in v2:
> >  - Aligned to 80 characters.
> >  - Removed protocols related to graphics support.
> >  - Referred to SMBIOS conformance guidelines.
> > ---
> >  changelog.adoc           |   2 +
> >  riscv-platform-spec.adoc | 183 +++++++++++++++++++++++++++++++++++++--
> >  2 files changed, 176 insertions(+), 9 deletions(-)
> >
> > diff --git a/changelog.adoc b/changelog.adoc
> > index af1d1df..3e15b8e 100644
> > --- a/changelog.adoc
> > +++ b/changelog.adoc
> > @@ -8,6 +8,8 @@
> >  ## Change Log
> >
> >  ### version 0.2-rc0
> > +* 2021-04-08:
> > +** Initial commit of server firmware requirements
> >  * 2021-03-25:
> >  ** Initial commit of Embedded-2022 specification
> >  * 2021-03-16:
> > diff --git a/riscv-platform-spec.adoc b/riscv-platform-spec.adoc
> > index ee5511f..7573a09 100644
> > --- a/riscv-platform-spec.adoc
> > +++ b/riscv-platform-spec.adoc
> > @@ -9,10 +9,12 @@
> >  :author: RISC-V Platform Specification Task Group
> >  :email: tech-unixplatformspec@...
> >  :revnumber: 0.2-rc0
> > -:revdate: Mar 2021
> > +:revdate: Apr 2021
> >  :doctype: book
> >  :sectnums:
> > +:sectnumlevels: 5
> >  :toc: macro
> > +:toclevels: 5
> >
> >  // table of contents
> >  toc::[]
> > @@ -68,14 +70,177 @@ include::profiles.adoc[]
> >
> >  // Server extension for Linux-2022 Platform
> >  === Server Extension
> > -==== Boot Process
> > -* Firmware
> > -* Boot-Loader
> > -* Discovery Mechanisms
> > -
> > -==== Runtime services
> > -* SBI
> > -* UEFI
> > +The server extension specifies additional  requirements apart from base
> > +requirements for RV64I based server class platforms. Support for RV128I
> > +based platforms will be in future when available.
> >
>  RV128 and RV64 are very different scales of the server. Most of the server
> classes may not compliant with RV128 requirement.  RV128I should be
> separated into another target platform we will define in the future.
>
I just mentioned here based on a feedback. But I agree Rv128 would need
separate target itself.

> > +
> > +The platforms which conform to server extension must implement
> > +
> > +- Advanced Platform-Level Interrupt Controller (APLIC). [*Dependency:
> > + AIA spec should be ratified*]
> > +- Incoming MSI Controller (IMSIC) [*Dependency: AIA spec should be
> > +ratified*]
> > +
> > +- RISC-V Hypervisor-level Instruction-Set Extensions. [*Dependency:
> > +Spec should be ratified*]
> > +- Incoming MSI Controller (IMSIC) with at least 1 guest interrupt
> > +file for each HART ?? (*TBD*)
> > +- IOMMU with support for memory resident interrupt files ?? (*TBD*)
> > +
> > +==== Boot and Runtime Requirements
> > +=====  Firmware
> > +The boot and system firmware for the RV64I server platforms must be
> > +based on UEFI as per the base specification with some additional
> > +requirements as mentioned below.
> > +
> > +====== PCIe support
> > +The platform shall implement *EFI_PCI_ROOT_BRIDGE_IO_PROTOCOL* and other
> > +required protocols as specified in Chapter 14 of UEFI specification
> > version
> > +2.9.
> > +
> > +====== UEFI configuration tables
> > +The platform which is complaint with server extension must provide
> > following
> > +tables.
> > +
> > +* *EFI_ACPI_20_TABLE_GUID* ACPI configuration table which is at version
> > 6.4+ or
> > +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 must be implemented in addition to the
> > base
> > +spec requirements.
> > +
> > +.Mandatory UEFI Protocols
> > +[cols="3,1,1", width=95%, align="center", options="header"]
> > +|===
> > +|Protocol                              | UEFI 2.9 $ | Note
> > +|EFI_LOAD_FILE2_PROTOCOL               | 13.2       |
> > +|EFI_DECOMPRESS_PROTOCOL               | 19.5       |
> > +|===
> > +
> > +===== Boot-Loader
> > +*TBD*
> > +
> > +===== Discovery Mechanisms (ACPI)
> > +For RV64I server platforms, it is mandatory to have ACPI tables passed
> > via UEFI
> > +to the operating system for the purpose of discovery and the
> > configuration of
> > +the hardware. This section defines mandatory ACPI tables and objects. All
> > other
> > +ACPI tables for RISC-V can be implemented as required adhering to the
> > ACPI spec
> > +version 6.4+(RISC-V support when added).
> >
> This is still not quite accurate. We don't have RISC-V hart information of
> the privileges, ISA, CLIC, enhanced PMP, sPMP, and others that each hart
> supports. That is impossible for OS to understand the RISC-V core hardware
> features based on the current ACPI spec without SMBIOS type 44 or DT for
> the unified OS image. Although we are going to propose new ACPI tables
> which are equivalent to SMBIOS type44, just not in a rush because all
> server OSes know SMBIOS.
> I would suggest refining this section to below if you have concerns about
> the "Configure hardware" part as you responded previously.
>
> - Discovery Mechanisms and Configure Hardware through ACPI
> We can have the original paragraph of  +===== Discovery Mechanisms (ACPI)
> here.
> - Discovery Mechanisms through SMBIOS type 44
> Actually, SMBIOS type 44 only describes the hardware features of RISC-V
> harts, I can provide the paragraph to this subsection if you are ok with
> this change.

Thanks. I mentioned type 44 under smbios section but please provide the
text for its importance of the HW discovery and configuration.
Sure, I will 
Hi Sunil,  below is the text to add to this section, Please rephrase it as your wish.
Thanks.
Abner

SMBIOS type 4 Processor Information and type 44h Processor Additional Information provide the information of RISC-V processor characteristics and HART hardware features discovered during the firmware boot process.  Those two SMBIOS records are required for RISC-V server platform (give a link to https://github.com/riscv/riscv-smbios/blob/master/RISCV-SMBIOS.md) and passed (give a Link to SMBIOS section in this spec) to the OS for the server platform that supports the RISC-V processor variants.
 


In future (may be 2024+ spec)  when we add ACPI table similar to smbios
type 44, we need to decide whether we need to mandate one of them (ACPI
or SMBIOS) or both. It depends on the contents of the ACPI table and its
usage.
Yes, I agree with you.
Thanks
Abner 

Thanks
Sunil

>
> That's fine we don't have to mention DT here now because all server OSes
> recognize SMBIOS and UEFI/edk2 is the only possible FW at this moment.
> Thanks
> Abner
>
> +
> > +====== ACPI System Description Tables
> > +
> > +
> > +.Mandatory ACPI tables
> > +[cols="3,1,2", width=95%, align="center", options="header"]
> > +|===
> > +|ACPI Table                                    |ACPI 6.4+ $|Note
> > +|Root System Description Pointer (RSDP)        |5.2.5      |
> > +|Extended System Description Table (XSDT)      |5.2.8      |
> > +|Fixed ACPI Description Table (FADT)           |5.2.9      |
> > +|Differentiated System Description Table (DSDT)|5.2.11.1   |
> > +|Multiple APIC Description Table (MADT)        |5.2.12     |*TBD*: Need
> > ECR
> > +                                                            to add
> > +                                                            APLIC & IMSIC
> > +                                                            (AIA) to MADT
> > +|RISC-V Timer Description Table                |New        |*TBD*: _DSD to
> > +                                                            communicate
> > +
> > timebase-frequency?
> > +|Processor Properties Topology Table (PPTT)    |5.2.29     |CPU/Cache
> > topology
> > +                                                            information
> > +|Memory-mapped ConFiGuration space (MCFG)      |PCI-SIG    |Required for
> > PCIe
> > +                                                            support
> > +|Debug Port Table 2 (DBG2)                     |Microsoft  |*TBD*: 16550D?
> > +|Serial Port Console Redirection (SPCR)        |Microsoft  |*TBD*: 16550D?
> > +|System Resource Affinity Table (SRAT)         |5.2.16     |Required if
> > the
> > +                                                            platform
> > supports NUMA
> > +|System Locality Information Table (SLIT)      |5.2.17     |Required if
> > the
> > +                                                            platform
> > supports NUMA
> > +|IOMMU Information Table                       |           |*TBD*: New
> > IOMMU
> > +                                                            table need to
> > be
> > +                                                            defined (like
> > IVRS)
> > +|Software Delegated Exception Interface (SDEI) |SDEI       |*TBD*: New
> > table
> > +                                                            and SBI
> > extension
> > +                                                            also may be
> > required
> > +|PMU event mapping table?                      |New        |*TBD*: New
> > table
> > +                                                            required
> > +|===
> > +
> > +====== ACPI Namespace
> > +
> > +- Processors must be defined under the System Bus (\_SB) name space.
> > +- Below list of Device Objects and Methods must be implemented for each
> > device
> > +  definition in the DSDT.
> > +
> > +.Mandatory Device Objects and Methods
> > +[cols="1,2,3", width=95%, align="center", options="header"]
> > +|===
> > +|Object/Method | ACPI 6.4+ $ | Note
> > +|_AEI          | 5.6.5.2     | Required for GPIO-signalled events.
> > +|_EVT          | 5.6.5.3     | Required for interrupt-signalled events.
> > +|_ADR          | 6.1.1       | Required for PCI
> > +|_HID          | 6.1.5       |
> > +|_UID          | 6.1.12      |
> > +|_CRS          | 6.2.2       |
> > +|_CCA          | 6.2.17      | Required for DMA capable devices
> > +|_STA          | 6.3.7/7.2.4 | Device status
> > +|===
> > +
> > +===== Runtime services
> > +====== SBI
> > +*TBD*
> > +
> > +====== UEFI
> > +It is mandatory to implement the UEFI run time services listed below.
> > +
> > +.Mandatory UEFI Runtime Services
> > +[cols="3,1,3", width=95%, align="center", options="header"]
> > +|===
> > +|Service                   | UEFI 2.9 $ | Note
> > +|GetVariable               | 8.2        |
> > +|GetNextVariableName       | 8.2        |
> > +|SetVariable               | 8.2        | A dedicated storage for firmware
> > +                                          should be available so that
> > there
> > +                                          is no conflict in access by both
> > +                                          firmware and the OS.
> > +|QueryVariableInfo         | 8.2        |
> > +|GetTime                   | 8.3        | RTC Access by the OS
> > +|SetTime                   | 8.3        | If it is not possible to set
> > the RTC,
> > +                                          the SetTime() can return an
> > error.
> > +|GetWakeupTime             | 8.3        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|SetWakeupTime             | 8.3        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|SetVirtualAddressMap      | 8.4        |
> > +|ConvertPointer            | 8.4        |
> > +|GetNextHighMonotonicCount | 8.5        |
> > +|ResetSystem               | 8.5        | If SBI SRST implementation is
> > also
> > +                                          available, the OS should not
> > use the
> > +                                          SBI interface directly but use
> > this
> > +                                          UEFI interface.
> > +|UpdateCapsule             | 8.5        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|QueryCapsuleCapabilities  | 8.5        | Interface must be implemented
> > but it
> > +                                          can return EFI_UNSUPPORTED.
> > +|===
> > +
> > +====== SMBIOS
> > +The System Management BIOS (SMBIOS) table is mandatory for the platform
> > +complaint to server extension. The SMBIOS table is identified using
> > +*SMBIOS3_TABLE_GUID* in UEFI configuration table. EfiRuntimeServicesData
> > must
> > +be the memory type used for the SMBIOS table.
> > +
> > +In addition to the conformance guidelines as mentioned in ANNEX A / 6.2
> > of the
> > +SMBIOS specification 3.4.0, below additional structures are mandatory.
> > +
> > +.Mandatory SMBIOS structures
> > +[cols="4,1,2", width=95%, align="center", options="header"]
> > +|===
> > +|Structure Type                                 | SMBIOS 3.4.0 $ | Note
> > +|Management Controller Host Interface (Type 42) | 7.43           |
> > Required for
> > +Redfish Host Interface.
> > +|Processor Additional Information (Type 44)     | 7.45           |
> > +|===
> >
> >  ==== System Peripherals
> >  * PCI-E
> > --
> > 2.25.1
> >
> >
> >
> >
> >
> >
> >