summaryrefslogtreecommitdiffstats
path: root/ShellPkg/Library/UefiShellAcpiViewCommandLib/Arm/SbbrValidator.h
blob: 3135f74fcb6c2d41d8abccc6067c0d6d40f3d089 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
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_