/** @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 /** 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_