summaryrefslogtreecommitdiff
path: root/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm
diff options
context:
space:
mode:
Diffstat (limited to 'ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm')
-rw-r--r--ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.c446
-rw-r--r--ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.h182
2 files changed, 314 insertions, 314 deletions
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.c
index 5b0e578af9..ea7bac35af 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.c
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.c
@@ -1,223 +1,223 @@
-/** @file
- Arm Server Base Boot Requirements ACPI table requirement validator.
-
- Copyright (c) 2020, ARM Limited. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
- @par Glossary:
- - Sbbr or SBBR - Server Base Boot Requirements
- - Sbsa or SBSA - Server Base System Architecture
-
- @par Reference(s):
- - Arm Server Base Boot Requirements 1.2, September 2019
- - Arm Server Base Boot Requirements 1.1, May 2018
- - Arm Server Base Boot Requirements 1.0, March 2016
- - Arm Server Base System Architecture 6.0
-**/
-
-#include <Library/DebugLib.h>
-#include <Library/UefiLib.h>
-#include "AcpiParser.h"
-#include "Arm/SbbrValidator.h"
-
-/**
- SBBR specification version strings
-**/
-STATIC CONST CHAR8 *ArmSbbrVersions[ArmSbbrVersionMax] = {
- "1.0", // ArmSbbrVersion_1_0
- "1.1", // ArmSbbrVersion_1_1
- "1.2" // ArmSbbrVersion_1_2
-};
-
-/**
- SBBR 1.0 mandatory ACPI tables
-**/
-STATIC CONST UINT32 ArmSbbr10Mandatory[] = {
- EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,
- EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE
-};
-
-/**
- SBBR 1.1 mandatory ACPI tables
-**/
-STATIC CONST UINT32 ArmSbbr11Mandatory[] = {
- EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,
- EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE
-};
-
-/**
- SBBR 1.2 mandatory ACPI tables
-**/
-STATIC CONST UINT32 ArmSbbr12Mandatory[] = {
- EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,
- EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
- EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE
-};
-
-/**
- Mandatory ACPI tables for every SBBR specification version.
-**/
-STATIC CONST ACPI_SBBR_REQ ArmSbbrReqs[ArmSbbrVersionMax] = {
- { ArmSbbr10Mandatory, ARRAY_SIZE (ArmSbbr10Mandatory) }, // SBBR v1.0
- { ArmSbbr11Mandatory, ARRAY_SIZE (ArmSbbr11Mandatory) }, // SBBR v1.1
- { ArmSbbr12Mandatory, ARRAY_SIZE (ArmSbbr12Mandatory) } // SBBR v1.2
-};
-
-/**
- Data structure to track instance counts for all ACPI tables which are
- defined as 'mandatory' in any SBBR version.
-**/
-STATIC ACPI_TABLE_COUNTER ArmSbbrTableCounts[] = {
- { EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, 0 },
- { EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE, 0 }
-};
-
-/**
- Reset the platform ACPI table instance count for all SBBR-mandatory tables.
-**/
-VOID
-EFIAPI
-ArmSbbrResetTableCounts (
- VOID
- )
-{
- UINT32 Table;
-
- for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
- ArmSbbrTableCounts[Table].Count = 0;
- }
-}
-
-/**
- Increment instance count for SBBR-mandatory ACPI table with the given
- signature.
-
- @param [in] Signature ACPI table signature.
-
- @retval TRUE Count incremented successfully.
- @retval FALSE Table with the input signature not found.
-**/
-BOOLEAN
-EFIAPI
-ArmSbbrIncrementTableCount (
- UINT32 Signature
- )
-{
- UINT32 Table;
-
- for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
- if (Signature == ArmSbbrTableCounts[Table].Signature) {
- ArmSbbrTableCounts[Table].Count++;
- return TRUE;
- }
- }
-
- return FALSE;
-}
-
-/**
- Validate that all ACPI tables required by the given SBBR specification
- version are installed on the platform.
-
- @param [in] Version SBBR spec version to validate against.
-
- @retval EFI_SUCCESS All required tables are present.
- @retval EFI_INVALID_PARAMETER Invalid SBBR version.
- @retval EFI_NOT_FOUND One or more mandatory tables are missing.
- @retval EFI_UNSUPPORTED Mandatory ACPI table does not have its
- instance count tracked.
-**/
-EFI_STATUS
-EFIAPI
-ArmSbbrReqsValidate (
- ARM_SBBR_VERSION Version
- )
-{
- UINT32 Table;
- UINT32 Index;
- UINT32 MandatoryTable;
- CONST UINT8 *SignaturePtr;
- BOOLEAN IsArmSbbrViolated;
-
- if (Version >= ArmSbbrVersionMax) {
- return EFI_INVALID_PARAMETER;
- }
-
- IsArmSbbrViolated = FALSE;
-
- // Go through the list of mandatory tables for the input SBBR version
- for (Table = 0; Table < ArmSbbrReqs[Version].TableCount; Table++) {
- MandatoryTable = ArmSbbrReqs[Version].Tables[Table];
- SignaturePtr = (CONST UINT8 *)(UINTN)&MandatoryTable;
-
- // Locate the instance count for the table with the given signature
- Index = 0;
- while ((Index < ARRAY_SIZE (ArmSbbrTableCounts)) &&
- (ArmSbbrTableCounts[Index].Signature != MandatoryTable))
- {
- Index++;
- }
-
- if (Index >= ARRAY_SIZE (ArmSbbrTableCounts)) {
- IncrementErrorCount ();
- Print (
- L"\nERROR: SBBR v%a: Mandatory %c%c%c%c table's instance count not " \
- L"found\n",
- ArmSbbrVersions[Version],
- SignaturePtr[0],
- SignaturePtr[1],
- SignaturePtr[2],
- SignaturePtr[3]
- );
- return EFI_UNSUPPORTED;
- }
-
- if (ArmSbbrTableCounts[Index].Count == 0) {
- IsArmSbbrViolated = TRUE;
- IncrementErrorCount ();
- Print (
- L"\nERROR: SBBR v%a: Mandatory %c%c%c%c table is missing",
- ArmSbbrVersions[Version],
- SignaturePtr[0],
- SignaturePtr[1],
- SignaturePtr[2],
- SignaturePtr[3]
- );
- }
- }
-
- if (!IsArmSbbrViolated) {
- Print (
- L"\nINFO: SBBR v%a: All mandatory ACPI tables are installed",
- ArmSbbrVersions[Version]
- );
- }
-
- Print (L"\n");
-
- return IsArmSbbrViolated ? EFI_NOT_FOUND : EFI_SUCCESS;
-}
+/** @file
+ Arm Server Base Boot Requirements ACPI table requirement validator.
+
+ Copyright (c) 2020, ARM Limited. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - Sbbr or SBBR - Server Base Boot Requirements
+ - Sbsa or SBSA - Server Base System Architecture
+
+ @par Reference(s):
+ - Arm Server Base Boot Requirements 1.2, September 2019
+ - Arm Server Base Boot Requirements 1.1, May 2018
+ - Arm Server Base Boot Requirements 1.0, March 2016
+ - Arm Server Base System Architecture 6.0
+**/
+
+#include <Library/DebugLib.h>
+#include <Library/UefiLib.h>
+#include "AcpiParser.h"
+#include "Arm/SbbrValidator.h"
+
+/**
+ SBBR specification version strings
+**/
+STATIC CONST CHAR8 *ArmSbbrVersions[ArmSbbrVersionMax] = {
+ "1.0", // ArmSbbrVersion_1_0
+ "1.1", // ArmSbbrVersion_1_1
+ "1.2" // ArmSbbrVersion_1_2
+};
+
+/**
+ SBBR 1.0 mandatory ACPI tables
+**/
+STATIC CONST UINT32 ArmSbbr10Mandatory[] = {
+ EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE
+};
+
+/**
+ SBBR 1.1 mandatory ACPI tables
+**/
+STATIC CONST UINT32 ArmSbbr11Mandatory[] = {
+ EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE
+};
+
+/**
+ SBBR 1.2 mandatory ACPI tables
+**/
+STATIC CONST UINT32 ArmSbbr12Mandatory[] = {
+ EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE,
+ EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE
+};
+
+/**
+ Mandatory ACPI tables for every SBBR specification version.
+**/
+STATIC CONST ACPI_SBBR_REQ ArmSbbrReqs[ArmSbbrVersionMax] = {
+ { ArmSbbr10Mandatory, ARRAY_SIZE (ArmSbbr10Mandatory) }, // SBBR v1.0
+ { ArmSbbr11Mandatory, ARRAY_SIZE (ArmSbbr11Mandatory) }, // SBBR v1.1
+ { ArmSbbr12Mandatory, ARRAY_SIZE (ArmSbbr12Mandatory) } // SBBR v1.2
+};
+
+/**
+ Data structure to track instance counts for all ACPI tables which are
+ defined as 'mandatory' in any SBBR version.
+**/
+STATIC ACPI_TABLE_COUNTER ArmSbbrTableCounts[] = {
+ { EFI_ACPI_6_3_EXTENDED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_DEBUG_PORT_2_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_PCI_EXPRESS_MEMORY_MAPPED_CONFIGURATION_SPACE_BASE_ADDRESS_DESCRIPTION_TABLE_SIGNATURE, 0 },
+ { EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_STRUCTURE_SIGNATURE, 0 }
+};
+
+/**
+ Reset the platform ACPI table instance count for all SBBR-mandatory tables.
+**/
+VOID
+EFIAPI
+ArmSbbrResetTableCounts (
+ VOID
+ )
+{
+ UINT32 Table;
+
+ for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
+ ArmSbbrTableCounts[Table].Count = 0;
+ }
+}
+
+/**
+ Increment instance count for SBBR-mandatory ACPI table with the given
+ signature.
+
+ @param [in] Signature ACPI table signature.
+
+ @retval TRUE Count incremented successfully.
+ @retval FALSE Table with the input signature not found.
+**/
+BOOLEAN
+EFIAPI
+ArmSbbrIncrementTableCount (
+ UINT32 Signature
+ )
+{
+ UINT32 Table;
+
+ for (Table = 0; Table < ARRAY_SIZE (ArmSbbrTableCounts); Table++) {
+ if (Signature == ArmSbbrTableCounts[Table].Signature) {
+ ArmSbbrTableCounts[Table].Count++;
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+/**
+ Validate that all ACPI tables required by the given SBBR specification
+ version are installed on the platform.
+
+ @param [in] Version SBBR spec version to validate against.
+
+ @retval EFI_SUCCESS All required tables are present.
+ @retval EFI_INVALID_PARAMETER Invalid SBBR version.
+ @retval EFI_NOT_FOUND One or more mandatory tables are missing.
+ @retval EFI_UNSUPPORTED Mandatory ACPI table does not have its
+ instance count tracked.
+**/
+EFI_STATUS
+EFIAPI
+ArmSbbrReqsValidate (
+ ARM_SBBR_VERSION Version
+ )
+{
+ UINT32 Table;
+ UINT32 Index;
+ UINT32 MandatoryTable;
+ CONST UINT8 *SignaturePtr;
+ BOOLEAN IsArmSbbrViolated;
+
+ if (Version >= ArmSbbrVersionMax) {
+ return EFI_INVALID_PARAMETER;
+ }
+
+ IsArmSbbrViolated = FALSE;
+
+ // Go through the list of mandatory tables for the input SBBR version
+ for (Table = 0; Table < ArmSbbrReqs[Version].TableCount; Table++) {
+ MandatoryTable = ArmSbbrReqs[Version].Tables[Table];
+ SignaturePtr = (CONST UINT8 *)(UINTN)&MandatoryTable;
+
+ // Locate the instance count for the table with the given signature
+ Index = 0;
+ while ((Index < ARRAY_SIZE (ArmSbbrTableCounts)) &&
+ (ArmSbbrTableCounts[Index].Signature != MandatoryTable))
+ {
+ Index++;
+ }
+
+ if (Index >= ARRAY_SIZE (ArmSbbrTableCounts)) {
+ IncrementErrorCount ();
+ Print (
+ L"\nERROR: SBBR v%a: Mandatory %c%c%c%c table's instance count not " \
+ L"found\n",
+ ArmSbbrVersions[Version],
+ SignaturePtr[0],
+ SignaturePtr[1],
+ SignaturePtr[2],
+ SignaturePtr[3]
+ );
+ return EFI_UNSUPPORTED;
+ }
+
+ if (ArmSbbrTableCounts[Index].Count == 0) {
+ IsArmSbbrViolated = TRUE;
+ IncrementErrorCount ();
+ Print (
+ L"\nERROR: SBBR v%a: Mandatory %c%c%c%c table is missing",
+ ArmSbbrVersions[Version],
+ SignaturePtr[0],
+ SignaturePtr[1],
+ SignaturePtr[2],
+ SignaturePtr[3]
+ );
+ }
+ }
+
+ if (!IsArmSbbrViolated) {
+ Print (
+ L"\nINFO: SBBR v%a: All mandatory ACPI tables are installed",
+ ArmSbbrVersions[Version]
+ );
+ }
+
+ Print (L"\n");
+
+ return IsArmSbbrViolated ? EFI_NOT_FOUND : EFI_SUCCESS;
+}
diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.h b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.h
index b6d46af776..b5f9a5baad 100644
--- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.h
+++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.h
@@ -1,91 +1,91 @@
-/** @file
- Header file for SbbrValidator.c
-
- Copyright (c) 2020, ARM Limited. All rights reserved.
- SPDX-License-Identifier: BSD-2-Clause-Patent
-
- @par Glossary:
- - Sbbr or SBBR - Server Base Boot Requirements
- - Sbsa or SBSA - Server Base System Architecture
-
- @par Reference(s):
- - Arm Server Base Boot Requirements 1.2, September 2019
- - Arm Server Base Boot Requirements 1.1, May 2018
- - Arm Server Base Boot Requirements 1.0, March 2016
- - Arm Server Base System Architecture 6.0
-**/
-
-#ifndef SBBR_VALIDATOR_H_
-#define SBBR_VALIDATOR_H_
-
-#include <IndustryStandard/Acpi.h>
-
-/**
- Arm SBBR specification versions.
-**/
-typedef enum {
- ArmSbbrVersion_1_0 = 0,
- ArmSbbrVersion_1_1 = 1,
- ArmSbbrVersion_1_2 = 2,
- ArmSbbrVersionMax = 3
-} ARM_SBBR_VERSION;
-
-/**
- The ACPI table instance counter.
-**/
-typedef struct AcpiTableCounter {
- CONST UINT32 Signature; /// ACPI table signature
- UINT32 Count; /// Instance count
-} ACPI_TABLE_COUNTER;
-
-/**
- ACPI table SBBR requirements.
-**/
-typedef struct AcpiSbbrReq {
- CONST UINT32 *Tables; /// List of required tables
- CONST UINT32 TableCount; /// Number of elements in Tables
-} ACPI_SBBR_REQ;
-
-/**
- Reset the platform ACPI table instance count for all SBBR-mandatory tables.
-**/
-VOID
-EFIAPI
-ArmSbbrResetTableCounts (
- VOID
- );
-
-/**
- Increment instance count for SBBR-mandatory ACPI table with the given
- signature.
-
- @param [in] Signature ACPI table signature.
-
- @retval TRUE Count incremented successfully.
- @retval FALSE Table with the input signature not found.
-**/
-BOOLEAN
-EFIAPI
-ArmSbbrIncrementTableCount (
- UINT32 Signature
- );
-
-/**
- Validate that all ACPI tables required by the given SBBR specification
- version are installed on the platform.
-
- @param [in] Version SBBR spec version to validate against.
-
- @retval EFI_SUCCESS All required tables are present.
- @retval EFI_INVALID_PARAMETER Invalid SBBR version.
- @retval EFI_NOT_FOUND One or more mandatory tables are missing.
- @retval EFI_UNSUPPORTED Mandatory ACPI table does not have its
- instance count tracked.
-**/
-EFI_STATUS
-EFIAPI
-ArmSbbrReqsValidate (
- ARM_SBBR_VERSION Version
- );
-
-#endif // SBBR_VALIDATOR_H_
+/** @file
+ Header file for SbbrValidator.c
+
+ Copyright (c) 2020, ARM Limited. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+ @par Glossary:
+ - Sbbr or SBBR - Server Base Boot Requirements
+ - Sbsa or SBSA - Server Base System Architecture
+
+ @par Reference(s):
+ - Arm Server Base Boot Requirements 1.2, September 2019
+ - Arm Server Base Boot Requirements 1.1, May 2018
+ - Arm Server Base Boot Requirements 1.0, March 2016
+ - Arm Server Base System Architecture 6.0
+**/
+
+#ifndef SBBR_VALIDATOR_H_
+#define SBBR_VALIDATOR_H_
+
+#include <IndustryStandard/Acpi.h>
+
+/**
+ Arm SBBR specification versions.
+**/
+typedef enum {
+ ArmSbbrVersion_1_0 = 0,
+ ArmSbbrVersion_1_1 = 1,
+ ArmSbbrVersion_1_2 = 2,
+ ArmSbbrVersionMax = 3
+} ARM_SBBR_VERSION;
+
+/**
+ The ACPI table instance counter.
+**/
+typedef struct AcpiTableCounter {
+ CONST UINT32 Signature; /// ACPI table signature
+ UINT32 Count; /// Instance count
+} ACPI_TABLE_COUNTER;
+
+/**
+ ACPI table SBBR requirements.
+**/
+typedef struct AcpiSbbrReq {
+ CONST UINT32 *Tables; /// List of required tables
+ CONST UINT32 TableCount; /// Number of elements in Tables
+} ACPI_SBBR_REQ;
+
+/**
+ Reset the platform ACPI table instance count for all SBBR-mandatory tables.
+**/
+VOID
+EFIAPI
+ArmSbbrResetTableCounts (
+ VOID
+ );
+
+/**
+ Increment instance count for SBBR-mandatory ACPI table with the given
+ signature.
+
+ @param [in] Signature ACPI table signature.
+
+ @retval TRUE Count incremented successfully.
+ @retval FALSE Table with the input signature not found.
+**/
+BOOLEAN
+EFIAPI
+ArmSbbrIncrementTableCount (
+ UINT32 Signature
+ );
+
+/**
+ Validate that all ACPI tables required by the given SBBR specification
+ version are installed on the platform.
+
+ @param [in] Version SBBR spec version to validate against.
+
+ @retval EFI_SUCCESS All required tables are present.
+ @retval EFI_INVALID_PARAMETER Invalid SBBR version.
+ @retval EFI_NOT_FOUND One or more mandatory tables are missing.
+ @retval EFI_UNSUPPORTED Mandatory ACPI table does not have its
+ instance count tracked.
+**/
+EFI_STATUS
+EFIAPI
+ArmSbbrReqsValidate (
+ ARM_SBBR_VERSION Version
+ );
+
+#endif // SBBR_VALIDATOR_H_