From: "Nate DeSimone" <nathaniel.l.desimone@intel.com>
To: "Oram, Isaac W" <isaac.w.oram@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Chiu, Chasel" <chasel.chiu@intel.com>
Subject: Re: [edk2-devel][edk2-platforms][PATCH V1 4/8] WhitleyOpenBoardPkg/AcpiTables10nm: Add Static ACPI tables
Date: Wed, 9 Feb 2022 03:21:05 +0000 [thread overview]
Message-ID: <MW4PR11MB5821806504477D80F6939E22CD2E9@MW4PR11MB5821.namprd11.prod.outlook.com> (raw)
In-Reply-To: <058b4b5cc0ef5eeb3e4a53ebae58768f94766976.1644259969.git.isaac.w.oram@intel.com>
Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
> -----Original Message-----
> From: Oram, Isaac W <isaac.w.oram@intel.com>
> Sent: Monday, February 7, 2022 11:03 AM
> To: devel@edk2.groups.io
> Cc: Desimone, Nathaniel L <nathaniel.l.desimone@intel.com>; Chiu, Chasel
> <chasel.chiu@intel.com>
> Subject: [edk2-devel][edk2-platforms][PATCH V1 4/8]
> WhitleyOpenBoardPkg/AcpiTables10nm: Add Static ACPI tables
>
> Static ACPI tables for WilsonCityRvp
>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Cc: Chasel Chiu <chasel.chiu@intel.com>
> Signed-off-by: Isaac Oram <isaac.w.oram@intel.com>
> ---
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Bdat/Bdat.
> aslc | 54 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/DBG2/DBG
> 2.aslc | 81 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Facs/Facs6
> 2.aslc | 72 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Fadt/Fadt6
> 2.aslc | 171 ++++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hmat/Hma
> t.aslc | 972 ++++++++++++++++++++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hpet/Hpet
> .aslc | 61 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Mcfg/Mcfg
> .aslc | 74 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Migt/Migt.
> aslc | 68 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Msct/Msct
> .aslc | 137 +++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/NFIT/Nfit.a
> slc | 48 +
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/PCAT/Pcat.
> aslc | 44 +
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Pmtt/Pmtt
> 10nm.aslc | 136 +++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/SPCR/Spcr.
> aslc | 89 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Spmi/Spmi
> .aslc | 53 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wddt/Wdd
> t1.0.aslc | 74 ++
>
> Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wsmt/Ws
> mt.aslc | 74 ++
> 16 files changed, 2208 insertions(+)
>
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Bdat/Bd
> at.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Bdat/Bd
> at.aslc
> new file mode 100644
> index 0000000000..734f11200f
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Bdat/Bd
> at.aslc
> @@ -0,0 +1,54 @@
> +/** @file
> +
> + @copyright
> + Copyright 2005 - 2012 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Bdat.h>
> +
> +//
> +// Bdat Access Handler instance data structure
> +//
> +STATIC
> +EFI_BDAT_ACPI_DESCRIPTION_TABLE mBdatAcpiTable = \
> +{
> + {EFI_BDAT_TABLE_SIGNATURE, // Signature
> + sizeof (EFI_BDAT_ACPI_DESCRIPTION_TABLE), // Length
> + 0x01, // Revision [01]
> + //
> + // Checksum will be updated during boot
> + //
> + 0, // Checksum
> + {' ', // OEM ID
> + ' ',
> + ' ',
> + ' ',
> + ' ',
> + ' '},
> + 0, // OEM Table ID
> + 0, // OEM Revision [0x00000000]
> + 0, // Creator ID
> + 0}, // Creator Revision
> + {0, // System Memory Address Space ID
> + 0,
> + 0,
> + 0,
> + //
> + // Pointer will be updated during boot
> + //
> + EFI_BDAT_ACPI_POINTER}
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + return (VOID*)&mBdatAcpiTable;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/DBG2/D
> BG2.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/DBG2/D
> BG2.aslc
> new file mode 100644
> index 0000000000..dcad37ac05
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/DBG2/D
> BG2.aslc
> @@ -0,0 +1,81 @@
> +/** @file
> +
> + @copyright
> + Copyright 1999 - 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +
> +#include <IndustryStandard/DebugPort2Table.h>
> +#include <Acpi/Dbg2.h>
> +
> +
> +DBG2_DEBUG_TABLE DBG2 =
> +{
> + {
> + {EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE,
> + sizeof (DBG2_DEBUG_TABLE),
> + 0,
> +
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00,
> +
> + //
> + // It is expected that these values will be programmed at runtime
> + //
> + {' ', ' ', ' ', ' ', ' ', ' '},
> +
> + 0,
> + 0,
> + 0,
> + 0
> + },
> + //
> + // Beginning of DBG2 specific fields
> + //
> + sizeof(EFI_ACPI_DEBUG_PORT_2_DESCRIPTION_TABLE),
> + 1
> + },
> + {
> + EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT_REVISION,
> + sizeof(EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT),
> + 1,
> + 2,
> + sizeof(EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT) +
> sizeof(EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE) + 4,
> + 0,
> + 0,
> + EFI_ACPI_DBG2_PORT_TYPE_SERIAL,
> + EFI_ACPI_DBG2_PORT_SUBTYPE_SERIAL_FULL_16550,
> + {0, 0},
> + sizeof(EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT),
> + sizeof(EFI_ACPI_DBG2_DEBUG_DEVICE_INFORMATION_STRUCT) +
> sizeof(EFI_ACPI_6_2_GENERIC_ADDRESS_STRUCTURE)
> + },
> + {
> + EFI_ACPI_6_2_SYSTEM_IO,
> + 16,
> + 0,
> + EFI_ACPI_6_2_BYTE,
> + 0x3F8
> + },
> + 4,
> + "."
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&DBG2;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Facs/Fac
> s62.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Facs/Fac
> s62.aslc
> new file mode 100644
> index 0000000000..48753f7939
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Facs/Fac
> s62.aslc
> @@ -0,0 +1,72 @@
> +/** @file
> +
> + @copyright
> + Copyright 1996 - 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Facs.h>
> +
> +//
> +// Firmware ACPI Control Structure
> +// Please modify all values in Facs.h only.
> +//
> +EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE Facs = {
> + EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE,
> + sizeof (EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE),
> + //
> + // Hardware Signature will be updated at runtime
> + //
> + 0x00000000,
> +
> + EFI_ACPI_FIRMWARE_WAKING_VECTOR,
> + EFI_ACPI_GLOBAL_LOCK,
> + EFI_ACPI_FIRMWARE_CONTROL_STRUCTURE_FLAGS,
> + EFI_ACPI_X_FIRMWARE_WAKING_VECTOR,
> + EFI_ACPI_6_2_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION,
> + {EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE},
> + EFI_ACPI_OSPM_FLAGS,
> + {EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE}
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&Facs;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Fadt/Fad
> t62.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Fadt/Fad
> t62.aslc
> new file mode 100644
> index 0000000000..f37cf0a508
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Fadt/Fad
> t62.aslc
> @@ -0,0 +1,171 @@
> +/** @file
> +
> + @copyright
> + Copyright 1999 - 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +
> +#include <Acpi/Fadt.h>
> +
> +//
> +// Fixed ACPI Description Table
> +// Please modify all values in Fadt.h only.
> +//
> +EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE Fadt = {
> + {EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE,
> + sizeof (EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE),
> + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_REVISION,
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00,
> + //
> + // It is expected that these values will be updated at runtime
> + //
> + {' ', ' ', ' ', ' ', ' ', ' '}, // OEMID
> + 0, // OEM Table ID
> + EFI_ACPI_OEM_FADT_REVISION,
> + 0, // Creator ID
> + 0}, // Creator Revision
> + //
> + // These addresses will be updated at runtime
> + //
> + 0x00000000, // FIRMWARE_CTRL
> + 0x00000000, // DSDT
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_PREFERRED_PM_PROFILE,
> + EFI_ACPI_SCI_INT,
> + EFI_ACPI_SMI_CMD,
> + EFI_ACPI_ACPI_ENABLE,
> + EFI_ACPI_ACPI_DISABLE,
> + EFI_ACPI_S4_BIOS_REQ,
> + EFI_ACPI_PSTATE_CNT,
> +
> + EFI_ACPI_PM1A_EVT_BLK_ADDRESS,
> + EFI_ACPI_PM1B_EVT_BLK_ADDRESS,
> + EFI_ACPI_PM1A_CNT_BLK_ADDRESS,
> + EFI_ACPI_PM1B_CNT_BLK_ADDRESS,
> + EFI_ACPI_PM2_CNT_BLK_ADDRESS,
> + EFI_ACPI_PM_TMR_BLK_ADDRESS,
> + EFI_ACPI_GPE0_BLK_ADDRESS,
> + EFI_ACPI_GPE1_BLK_ADDRESS,
> + EFI_ACPI_PM1_EVT_LEN,
> + EFI_ACPI_PM1_CNT_LEN,
> + EFI_ACPI_PM2_CNT_LEN,
> + EFI_ACPI_PM_TMR_LEN,
> + EFI_ACPI_GPE0_BLK_LEN,
> + EFI_ACPI_GPE1_BLK_LEN,
> + EFI_ACPI_GPE1_BASE,
> +
> + EFI_ACPI_CST_CNT,
> + EFI_ACPI_P_LVL2_LAT,
> + EFI_ACPI_P_LVL3_LAT,
> + EFI_ACPI_FLUSH_SIZE,
> + EFI_ACPI_FLUSH_STRIDE,
> + EFI_ACPI_DUTY_OFFSET,
> + EFI_ACPI_DUTY_WIDTH,
> + EFI_ACPI_DAY_ALRM,
> + EFI_ACPI_MON_ALRM,
> + EFI_ACPI_CENTURY,
> + EFI_ACPI_IAPC_BOOT_ARCH,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_FIXED_FEATURE_FLAGS | EFI_ACPI_6_2_SLP_BUTTON,
> + //
> + // Reset Register Block
> + //
> + {EFI_ACPI_RESET_REG_ADDRESS_SPACE_ID,
> + EFI_ACPI_RESET_REG_BIT_WIDTH,
> + EFI_ACPI_RESET_REG_BIT_OFFSET,
> + EFI_ACPI_6_2_BYTE,
> + EFI_ACPI_RESET_REG_ADDRESS},
> +
> + EFI_ACPI_RESET_VALUE,
> + EFI_ACPI_RESERVED_WORD, // EFI_ACPI_6_2_ARM_BOOT_ARCH
> + EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_MINOR_REVISION,
> + //
> + // These addresses will be updated at runtime
> + //
> + 0x0000000000000000, // X_FIRMWARE_CTRL
> + 0x0000000000000000, // X_DSDT
> + //
> + // X_PM1a Event Register Block
> + //
> + {EFI_ACPI_PM1A_EVT_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_PM1A_EVT_BLK_BIT_WIDTH,
> + EFI_ACPI_PM1A_EVT_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_WORD,
> + EFI_ACPI_PM1A_EVT_BLK_ADDRESS},
> + //
> + // X_PM1b Event Register Block
> + //
> + {EFI_ACPI_PM1B_EVT_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_PM1B_EVT_BLK_BIT_WIDTH,
> + EFI_ACPI_PM1B_EVT_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_UNDEFINED,
> + EFI_ACPI_PM1B_EVT_BLK_ADDRESS},
> + //
> + // X_PM1a Control Register Block
> + //
> + {EFI_ACPI_PM1A_CNT_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_PM1A_CNT_BLK_BIT_WIDTH,
> + EFI_ACPI_PM1A_CNT_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_WORD,
> + EFI_ACPI_PM1A_CNT_BLK_ADDRESS},
> + //
> + // X_PM1b Control Register Block
> + //
> + {EFI_ACPI_PM1B_CNT_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_PM1B_CNT_BLK_BIT_WIDTH,
> + EFI_ACPI_PM1B_CNT_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_UNDEFINED,
> + EFI_ACPI_PM1B_CNT_BLK_ADDRESS},
> + //
> + // X_PM2 Control Register Block
> + //
> + {EFI_ACPI_PM2_CNT_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_PM2_CNT_BLK_BIT_WIDTH,
> + EFI_ACPI_PM2_CNT_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_UNDEFINED,
> + EFI_ACPI_PM2_CNT_BLK_ADDRESS},
> + //
> + // X_PM Timer Control Register Block
> + //
> + {EFI_ACPI_PM_TMR_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_PM_TMR_BLK_BIT_WIDTH,
> + EFI_ACPI_PM_TMR_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_DWORD,
> + EFI_ACPI_PM_TMR_BLK_ADDRESS},
> + //
> + // X_General Purpose Event 0 Register Block
> + //
> + {EFI_ACPI_GPE0_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_GPE0_BLK_BIT_WIDTH,
> + EFI_ACPI_GPE0_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_BYTE,
> + EFI_ACPI_GPE0_BLK_ADDRESS},
> + //
> + // X_General Purpose Event 1 Register Block
> + //
> + {EFI_ACPI_GPE1_BLK_ADDRESS_SPACE_ID,
> + EFI_ACPI_GPE1_BLK_BIT_WIDTH,
> + EFI_ACPI_GPE1_BLK_BIT_OFFSET,
> + EFI_ACPI_6_2_UNDEFINED,
> + EFI_ACPI_GPE1_BLK_ADDRESS}
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the executable.
> + //
> + return (VOID*)&Fadt;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hmat/H
> mat.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hmat/H
> mat.aslc
> new file mode 100644
> index 0000000000..ae6efeaee5
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hmat/H
> mat.aslc
> @@ -0,0 +1,972 @@
> +/** @file
> +
> + @copyright
> + Copyright 2016 - 2018 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include "Acpi/Hmat.h"
> +
> +EFI_ACPI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE Hmat = {
> + // EFI_ACPI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_HEADER
> + {
> + // EFI_ACPI_DESCRIPTION_HEADER
> + {
> + EFI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_SIGNATURE,
> + sizeof (EFI_ACPI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE),
> + EFI_ACPI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_REVISION,
> + 0x00, // Checksum, updated at runtime
> + {' ', ' ', ' ', ' ', ' ', ' '}, // OEM ID, programmed at runtime
> + 0,
> + EFI_ACPI_OEM_HMAT_REVISION,
> + 0,
> + 0
> + }, // EFI_ACPI_DESCRIPTION_HEADER
> + (UINT32) 0
> + }, // EFI_ACPI_HETEROGENEOUS_MEMORY_ATTRIBUTE_TABLE_HEADER
> +
> + // Beginning of HMAT substructures
> +#if EFI_ACPI_HMAT_MSARS_COUNT > 0
> + { //
> MEMORY_SUBSYSTEM_ADDRESS_RANGE_STRUCTURE[EFI_ACPI_HMAT_MS
> ARS_COUNT]
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#if MC_MAX_NODE > 1
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 2
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 3
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 4
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 5
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 6
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 7
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 8
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 9
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 10
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 11
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 12
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 13
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 14
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> +#if MC_MAX_NODE > 15
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> + MSARS_INIT()
> +#endif
> + }, //
> MEMORY_SUBSYSTEM_ADDRESS_RANGE_STRUCTURE[EFI_ACPI_HMAT_MS
> ARS_COUNT]
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 0
> + { // LATENCY_BANDWIDTH_INFO_STRUCTURE
> Lbis[EFI_ACPI_HMAT_LBIS_COUNT]
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 1
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 2
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 3
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 4
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 5
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 6
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 7
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 8
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 9
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 10
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> +#if EFI_ACPI_HMAT_LBIS_COUNT > 11
> + LBIS_START()
> + RELATIVE_DISTANCE()
> +#if MC_MAX_NODE > 1
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 2
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 3
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 4
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 5
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 6
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 7
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 8
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 9
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 10
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 11
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 12
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 13
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 14
> + RELATIVE_DISTANCE()
> +#endif
> +#if MC_MAX_NODE > 15
> + RELATIVE_DISTANCE()
> +#endif
> + LBIS_END()
> +#endif
> + }, // LATENCY_BANDWIDTH_INFO_STRUCTURE
> Lbis[EFI_ACPI_HMAT_LBIS_COUNT]
> +#endif
> +#if EFI_ACPI_HMAT_MSCIS_COUNT > 0
> + { // MEMORY_SIDE_CACHE_INFORMATION_STRUCTURE
> MemSideCache[EFI_ACPI_HMAT_MSCIS_COUNT]
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#if MC_MAX_NODE > 1
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 2
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 3
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 4
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 5
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 6
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 7
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 8
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 9
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 10
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 11
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 12
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 13
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 14
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> +#if MC_MAX_NODE > 15
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> + MSCIS_INIT()
> +#endif
> + }, // MEMORY_SIDE_CACHE_INFORMATION_STRUCTURE
> MemSideCache[EFI_ACPI_HMAT_MSCIS_COUNT]
> +#endif
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the executable
> + //
> + return (VOID*)&Hmat;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hpet/Hp
> et.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hpet/Hp
> et.aslc
> new file mode 100644
> index 0000000000..37b680ad6b
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Hpet/Hp
> et.aslc
> @@ -0,0 +1,61 @@
> +/** @file
> +
> + @copyright
> + Copyright 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Hpet.h>
> +
> +//
> +// High Precision Event Timer Table
> +// Please modify all values in Hpet.h only.
> +//
> +EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER Hpet = {
> + {EFI_ACPI_6_2_HIGH_PRECISION_EVENT_TIMER_TABLE_SIGNATURE, //
> Signature
> + sizeof (EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_HEADER), //
> Length
> + EFI_ACPI_HIGH_PRECISION_EVENT_TIMER_TABLE_REVISION, //
> Revision [01]
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00, // Checksum
> + //
> + // It is expected that these values will be updated at runtime
> + //
> + {' ',
> + ' ',
> + ' ',
> + ' ',
> + ' ',
> + ' '},
> + 0,
> + EFI_ACPI_OEM_HPET_REVISION, // OEM Revision
> [0x00000001]
> + 0, // Creator ID
> + 0}, // Creator Revision
> + EFI_ACPI_EVENT_TIMER_BLOCK_ID, // Event Timer Block ID
> (4B) [0x8086A201]
> + {EFI_ACPI_EVENT_TIMER_BLOCK_ADDRESS_SPACE_ID, // 2
> [EFI_ACPI_6_2_SYSTEM_MEMORY]
> + EFI_ACPI_EVENT_TIMER_BLOCK_BIT_WIDTH, // 3 [0x00]
> + EFI_ACPI_EVENT_TIMER_BLOCK_BIT_OFFSET, // 4 [0x00]
> + EFI_ACPI_EVENT_TIMER_ACCESS_SIZE, // [0x00]
> + EFI_ACPI_EVENT_TIMER_BLOCK_ADDRESS}, // HPET Block
> BASE_ADDRESS (12B) [0x00000000FED00000]
> + EFI_ACPI_HPET_NUMBER, // HPET Number [00]
> + EFI_ACPI_MIN_CLOCK_TICK, // Main Counter Minimum
> Clock tick [0x0080]
> + EFI_ACPI_HPET_ATTRIBUTES // Page Protection & OEM
> attribute [0x00]
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&Hpet;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Mcfg/Mc
> fg.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Mcfg/M
> cfg.aslc
> new file mode 100644
> index 0000000000..6e9a84aa49
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Mcfg/M
> cfg.aslc
> @@ -0,0 +1,74 @@
> +/** @file
> +
> + @copyright
> + Copyright 1999 - 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Mcfg.h>
> +
> +//
> +// MCFG Table definition
> +//
> +EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE
> Mcfg = {
> +
> {{EFI_ACPI_6_2_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TA
> BLE_SIGNATURE,
> + sizeof
> (EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_BASE_ADDRESS_TABLE),
> +
> EFI_ACPI_MEMORY_MAPPED_CONFIGURATION_SPACE_ACCESS_TABLE_RE
> VISION,
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00,
> + //
> + // It is expected that these values will be programmed at runtime
> + //
> + {' ',
> + ' ',
> + ' ',
> + ' ',
> + ' ',
> + ' '},
> +
> + 0,
> + EFI_ACPI_OEM_MCFG_REVISION,
> + 0,
> + 0},
> + //
> + // Beginning of MCFG specific fields
> + //
> + EFI_ACPI_RESERVED_QWORD},
> + //
> + // Sample Memory Mapped Configuration Space Base Address Structure
> + //
> + // 0x0, // Base Address
> + // 0x0, // PCI Segment Group Number
> + // 0x0, // Start Bus Number
> + // 0x0, // End Bus Number
> + // EFI_ACPI_RESERVED_DWORD, // Reserved
> + //
> + // Memory Mapped Configuration Space Base Address Structure
> + //
> +#if
> EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_BASE_ADDRE
> SS_STRUCTURE_COUNT > 0
> + {{0x0, // Base Address, will be updated by AcpiPlatform
> + 0x0, // PCI Segment Group Number
> + 0x0, // Start Bus Number
> + 0xff, // End Bus Number
> + EFI_ACPI_RESERVED_DWORD}} // Reserved
> +#endif //
> EFI_ACPI_MEMORY_MAPPED_ENHANCED_CONFIGURATION_BASE_ADDRE
> SS_STRUCTURE_COUNT
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&Mcfg;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Migt/Mi
> gt.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Migt/Mi
> gt.aslc
> new file mode 100644
> index 0000000000..5efe5afee1
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Migt/Mi
> gt.aslc
> @@ -0,0 +1,68 @@
> +/** @file
> +
> + @copyright
> + Copyright 2005 - 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Migt.h>
> +
> +//
> +// Please modify all values in Migt.h only.
> +//
> +EFI_MIGT_ACPI_DESCRIPTION_TABLE Migt = {
> + {EFI_MIGT_ACPI_TABLE_SIGNATURE, // Signature
> + sizeof (EFI_MIGT_ACPI_DESCRIPTION_TABLE), // Length
> + EFI_MIGT_ACPI_DESCRIPTION_TABLE_REVISION, // Revision
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00, // Checksum
> + //
> + // It is expected that these values will be updated at runtime
> + //
> + {' ',
> + ' ',
> + ' ',
> + ' ',
> + ' ',
> + ' '},
> + 0,
> + EFI_MIGT_ACPI_OEM_REVISION, // OEM Revision
> + 0, // Creator ID
> + 0}, // Creator Revision
> + //
> + // MIGT Speicific Entries
> + // Control Register GAS structure
> + //
> + {EFI_MIGT_CR_ACPI_ADDRESS_SPACE_ID, // IO Type ID.
> + EFI_MIGT_CR_ACPI_REGISTER_BIT_WIDTH,
> + EFI_MIGT_CR_ACPI_REGISTER_BIT_OFFSET,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_MIGT_CR_ACPI_SMI_ADDRESS},
> +
> + MIGT_SMI_SERVICE_ID, // SMI Door Bell
> +
> + //
> + // Action Region GAS structure
> + //
> + {EFI_MIGT_AR_ACPI_ADDRESS_SPACE_ID, // Memory Type ID
> + EFI_MIGT_AR_ACPI_REGISTER_BIT_WIDTH,
> + EFI_MIGT_AR_ACPI_REGISTER_BIT_OFFSET,
> + EFI_ACPI_RESERVED_BYTE,
> + // update during boot
> + EFI_MIGT_AR_ACPI_MEMORY_ADDRESS}
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + return (VOID*)&Migt;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Msct/Ms
> ct.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Msct/Ms
> ct.aslc
> new file mode 100644
> index 0000000000..e0e1bebd0a
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Msct/Ms
> ct.aslc
> @@ -0,0 +1,137 @@
> +/** @file
> +
> + @copyright
> + Copyright 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Msct.h>
> +
> +//
> +// Maximum System Characteristics Table definition
> +//
> +EFI_ACPI_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE Msct = {
> +
> {EFI_ACPI_6_2_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_SIGNATURE
> ,
> + sizeof (EFI_ACPI_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE), //
> Length
> + EFI_ACPI_MAXIMUM_SYSTEM_CHARACTERISTICS_TABLE_REVISION, //
> Revision
> + 0x00, // Checksum will be updated at runtime
> + {'I', 'N', 'T', 'E', 'L', ' '}, // OemId
> + 0, // OemTableId
> + EFI_ACPI_OEM_MSCT_REVISION, // OemRevision
> + EFI_ACPI_CREATOR_ID, // CreaterId
> + EFI_ACPI_CREATOR_REVISION}, // CreaterRevision
> + //
> + // Beginning of MSCT specific fields
> + //
> + 0x00000038, // OffsetProxDomInfo
> + MAX_SOCKET - 1, // MaxNumProxDom
> + 0x00000000, // MaxNumClockDom
> + 0x0000000000000000, // MaxPhysicalAddress
> + //
> + // Proximity Domain Information Structure 0
> + //
> +
> {{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE
> _REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +
> +#if MAX_SOCKET > 1
> + //
> + // Proximity Domain Information Structure 1
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> +
> +#if MAX_SOCKET > 2
> + //
> + // Proximity Domain Information Structure 2
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> +
> +#if MAX_SOCKET > 3
> + //
> + // Proximity Domain Information Structure 3
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> +
> +#if MAX_SOCKET > 4
> + //
> + // Proximity Domain Information Structure 4
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> +
> +#if MAX_SOCKET > 5
> + //
> + // Proximity Domain Information Structure 5
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> +
> +#if MAX_SOCKET > 6
> + //
> + // Proximity Domain Information Structure 6
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> +
> +#if MAX_SOCKET > 7
> + //
> + // Proximity Domain Information Structure 7
> + //
> +
> ,{EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE_
> REVISION, // Revision
> + sizeof
> (EFI_ACPI_MAXIMUM_PROXIMITY_DOMAIN_INFORMATION_STRUCTURE),
> // Length
> + 0x00000000, // ProxDomRangeLow
> + 0x00000000, // ProxDomRangeHigh
> + 0x00000000, // MaxProcessorCapacity
> + 0x0000000000000000} // MaxMemoryCapacity
> +#endif
> + }
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + return (VOID*)&Msct;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/NFIT/Nfi
> t.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/NFIT/Nfi
> t.aslc
> new file mode 100644
> index 0000000000..389c43ce3c
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/NFIT/Nfi
> t.aslc
> @@ -0,0 +1,48 @@
> +/** @file
> +
> + @copyright
> + Copyright 2015 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Nfit.h>
> +
> +//
> +// NFIT Table
> +// Please modify all values in Nfit.h only.
> +//
> +NVDIMM_FW_INTERFACE_TABLE Nfit = {
> + NVDIMM_FW_INTERFACE_TABLE_SIGNATURE, // Signature
> + sizeof (NVDIMM_FW_INTERFACE_TABLE), // Length
> + NVDIMM_FW_INTERFACE_TABLE_REVISION, // Revision [01]
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00, // Checksum
> + //
> + // It is expected that these values will be updated at runtime
> + //
> + {' ', // TODO any other static values to be filled in?
> + ' ',
> + ' ',
> + ' ',
> + ' ',
> + ' '}
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&Nfit;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/PCAT/Pc
> at.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/PCAT/Pc
> at.aslc
> new file mode 100644
> index 0000000000..e43c865c64
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/PCAT/Pc
> at.aslc
> @@ -0,0 +1,44 @@
> +/** @file
> +
> + @copyright
> + Copyright 2015 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Pcat.h>
> +
> +//
> +// PCAT Table
> +// Please modify all values in Pcat.h only.
> +//
> +NVDIMM_PLATFORM_CONFIG_ATTRIBUTE_TABLE Pcat = {
> + NVDIMM_PLATFORM_CONFIG_ATTRIBUTE_TABLE_SIGNATURE, //
> Signature
> + sizeof (NVDIMM_PLATFORM_CONFIG_ATTRIBUTE_TABLE), // Length
> + NVDIMM_PLATFORM_CONFIG_ATTRIBUTE_TABLE_REVISION, // Revision
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00, // Checksum
> + //
> + // It is expected that these values will be updated at runtime
> + //
> + {' '}, // TODO any other static values?
> +
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&Pcat;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Pmtt/Pm
> tt10nm.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Pmtt/P
> mtt10nm.aslc
> new file mode 100644
> index 0000000000..a0b4dc2756
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Pmtt/P
> mtt10nm.aslc
> @@ -0,0 +1,136 @@
> +/** @file
> +
> + @copyright
> + Copyright 2016 - 2018 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Pmtt.h>
> +//
> +// PMTT Table
> +//
> +#define PHYSICAL_COMP_IDENTIFIER \
> + {PHYSICAL_COMPONENT_IDENTIFIER_TYPE_DIMM, \
> + EFI_ACPI_RESERVED_BYTE, \
> + sizeof (ACPI_PMTT_DIMM_DEVICE), \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + 0x00000000, \
> + 0xFFFFFFFF}
> +
> +#define SLOT \
> + {ACPI_TOP_LEVEL_VENDOR_SPECIFIC_DEVICE, \
> + EFI_ACPI_RESERVED_BYTE, \
> + sizeof (ACPI_PMTT_SLOT_DEVICE) - sizeof(ACPI_PMTT_DIMM_DEVICE),
> \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + 0x00000000, \
> + PMTT_TYPE_SLOT_GUID, \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + PHYSICAL_COMP_IDENTIFIER}
> +
> +#define CHANNEL \
> + {ACPI_TOP_LEVEL_VENDOR_SPECIFIC_DEVICE, \
> + EFI_ACPI_RESERVED_BYTE, \
> + sizeof (ACPI_PMTT_CHANNEL_DEVICE) - MAX_DIMM *
> sizeof(ACPI_PMTT_SLOT_DEVICE), \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + 0x00000000, \
> + PMTT_TYPE_CHANNEL_GUID, \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + {SLOT, \
> + SLOT} \
> + }
> +
> +#define MEM_IMC \
> + {ACPI_TOP_LEVEL_IMC, \
> + EFI_ACPI_RESERVED_BYTE, \
> + sizeof (ACPI_PMTT_IMC_DEVICE) - MAX_MC_CH *
> sizeof(ACPI_PMTT_CHANNEL_DEVICE), \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + 0x00000000, \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + {CHANNEL, \
> + CHANNEL} \
> + }
> +
> +#define DIE \
> + {ACPI_TOP_LEVEL_VENDOR_SPECIFIC_DEVICE, \
> + EFI_ACPI_RESERVED_BYTE, \
> + sizeof (ACPI_PMTT_DIE_DEVICE) - MAX_IMC *
> sizeof(ACPI_PMTT_IMC_DEVICE), \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + 0x00000000, \
> + PMTT_TYPE_DIE_GUID, \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + {MEM_IMC, \
> + MEM_IMC, \
> + MEM_IMC, \
> + MEM_IMC}}
> +
> +#define SKT_LEVEL \
> + {ACPI_TOP_LEVEL_SOCKET, \
> + EFI_ACPI_RESERVED_BYTE, \
> + sizeof (ACPI_PMTT_SOCKET_DEVICE) - sizeof(ACPI_PMTT_DIE_DEVICE),
> \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + 0x00000000, \
> + 0x00000000, \
> + EFI_ACPI_RESERVED_BYTE, \
> + {DIE} \
> + },
> +#pragma pack(1)
> +
> +ACPI_PLATFORM_MEMORY_TOPOLOGY_TABLE mPmttTable = {
> + {ACPI_PMTT_TABLE_SIGNATURE, // Signature 'PMTT'
> + sizeof (ACPI_PLATFORM_MEMORY_TOPOLOGY_TABLE), // Length
> + ACPI_PMTT_TABLE_REVISION, // Revision
> + 0x00, // CheckSum
> + {'I', 'N', 'T', 'E', 'L', ' '}, // OemId
> + 0, // OemTableId
> + ACPI_PMTT_OEM_REVISION, // OemRevision
> + EFI_ACPI_CREATOR_ID, // CreaterId
> + EFI_ACPI_CREATOR_REVISION}, // CreaterRevision
> + 0, // NumOfMemoryDevices
> + { SKT_LEVEL
> +#if MAX_SOCKET > 1
> + SKT_LEVEL
> +#endif
> +#if MAX_SOCKET > 2
> + SKT_LEVEL
> +#endif
> +#if MAX_SOCKET > 3
> + SKT_LEVEL
> +#endif
> +#if MAX_SOCKET > 4
> + SKT_LEVEL
> +#endif
> +#if MAX_SOCKET > 5
> + SKT_LEVEL
> +#endif
> +#if MAX_SOCKET > 6
> + SKT_LEVEL
> +#endif
> +#if MAX_SOCKET > 7
> + SKT_LEVEL
> +#endif
> + }
> +};
> +
> +#pragma pack()
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +{
> + return (VOID*)&mPmttTable;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/SPCR/Sp
> cr.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/SPCR/Sp
> cr.aslc
> new file mode 100644
> index 0000000000..26603102a2
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/SPCR/Sp
> cr.aslc
> @@ -0,0 +1,89 @@
> +/** @file
> +
> + @copyright
> + Copyright 1999 - 2002 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +
> +#include <IndustryStandard/Acpi.h>
> +#include <IndustryStandard/SerialPortConsoleRedirectionTable.h>
> +#include <Acpi/Spcr.h>
> +
> +//
> +// Serial Port Console Redirection Table
> +// Please modify all values in Spcr.h only.
> +//
> +
> +EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE Spcr = {
> +
> {EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE,
> + sizeof (EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE),
> + EFI_ACPI_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_REVISION,
> +
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00,
> +
> + //
> + // It is expected that these values will be programmed at runtime
> + //
> + {' ', ' ', ' ', ' ', ' ', ' '},
> +
> + 0,
> + EFI_ACPI_OEM_SPCR_REVISION,
> + 0,
> + 0},
> +
> + //
> + // Beginning of SPCR specific fields
> + //
> + EFI_ACPI_INTERFACE_TYPE,
> + {EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_RESERVED_BYTE},
> +
> + //
> + // Base Address Block
> + //
> + {EFI_ACPI_BASE_ADDRESS_ADDRESS_SPACE_ID,
> + EFI_ACPI_BASE_ADDRESS_BIT_WIDTH,
> + EFI_ACPI_BASE_ADDRESS_BIT_OFFSET,
> + EFI_ACPI_RESERVED_BYTE,
> + EFI_ACPI_BASE_ADDRESS_ADDRESS},
> +
> + EFI_ACPI_INTERRUPT_TYPE,
> + EFI_ACPI_IRQ,
> + EFI_ACPI_GLOBAL_SYSTEM_INTERRUPT,
> + EFI_ACPI_BAUD_RATE,
> + EFI_ACPI_PARITY,
> + EFI_ACPI_STOP_BITS,
> + EFI_ACPI_FLOW_CONTROL,
> + EFI_ACPI_TERMINAL_TYPE,
> + EFI_ACPI_LANGUAGE,
> + EFI_ACPI_PCI_DEVICE_ID,
> + EFI_ACPI_PCI_VENDOR_ID,
> + EFI_ACPI_PCI_BUS_NUMBER,
> + EFI_ACPI_PCI_DEVICE_NUMBER,
> + EFI_ACPI_PCI_FUNCTION_NUMBER,
> + EFI_ACPI_PCI_FLAGS,
> + EFI_ACPI_PCI_SEGMENT,
> + EFI_ACPI_RESERVED_DWORD
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the exeutable
> + //
> + return (VOID*)&Spcr;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Spmi/Sp
> mi.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Spmi/Sp
> mi.aslc
> new file mode 100644
> index 0000000000..74855daee4
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Spmi/Sp
> mi.aslc
> @@ -0,0 +1,53 @@
> +/** @file
> +
> + @copyright
> + Copyright 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/Spmi.h>
> +
> +//
> +// Server processor management interface table definition
> +//
> +EFI_ACPI_SERVER_PROCESSOR_MANAGEMENT_INTERFACE_TABLE Spmi =
> {
> +
> {EFI_ACPI_6_2_SERVER_PLATFORM_MANAGEMENT_INTERFACE_TABLE_SI
> GNATURE,
> + sizeof
> (EFI_ACPI_SERVER_PROCESSOR_MANAGEMENT_INTERFACE_TABLE),
> // Length
> +
> EFI_ACPI_SERVER_PROCESSOR_MANAGEMENT_INTERFACE_TABLE_REVISIO
> N, // Revision
> + 0x00, // Checksum will be updated at
> runtime
> + {'I', 'N', 'T', 'E', 'L', ' '}, // OemId
> + 0, // OemTableId
> + EFI_ACPI_OEM_SPMI_REVISION, // OemRevision
> + 0, // CreaterId
> + 0}, // CreaterRevision
> + //
> + // Beginning of Spmi specific fields
> + //
> + 0x00, // InterfaceType
> + 0x01, // Reserved37, always 1
> + EFI_ACPI_SPMI_SPECIFICATION_REVISION, //
> SpecificationRevision
> + 0x00, // InterruptType
> + 0x00, // GPE
> + 0x00, // Reserved42
> + 0x00, // PciDeviceFlag
> + 0x00000000, // GlobalSystemInterrupt
> + {0x00, 0x00, 0x00, 0x00, 0x00}, // GAS
> + 0x00, // UidByte1
> + 0x00, // UidByte2
> + 0x00, // UidByte3
> + 0x00, // UidByte4
> + 0x00 // Reserved64
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + return (VOID*)&Spmi;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wddt/W
> ddt1.0.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wddt/W
> ddt1.0.aslc
> new file mode 100644
> index 0000000000..fe0db504fd
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wddt/W
> ddt1.0.aslc
> @@ -0,0 +1,74 @@
> +/** @file
> +
> + @copyright
> + Copyright 1999 - 2019 Intel Corporation. <BR>
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +//
> +// Statements that include other files
> +//
> +#include <Acpi/WatchdogDescriptionTable.h>
> +#include <Acpi/Wddt.h>
> +
> +//
> +// Watchdog Description Table , ACPI 6.2 compliant
> +//
> +EFI_ACPI_WATCH_DOG_DESCRIPTION_TABLE Wddt = {
> + {EFI_ACPI_WDDT_SIGNATURE,
> + sizeof (EFI_ACPI_WATCH_DOG_DESCRIPTION_TABLE),
> + EFI_ACPI_WDDT_DESCRIPTION_TABLE_REVISION,
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00,
> + //
> + // It is expected that these values will be programmed at runtime
> + //
> + {' ',
> + ' ',
> + ' ',
> + ' ',
> + ' ',
> + ' '},
> + 0,
> + 0,
> + 0,
> + 0},
> + //
> + // WDDT specific fields
> + //
> + //
> + // This is LPC bridge VID it must be patched in
> + //
> + 0,
> + EFI_ACPI_WDDT_SPEC_VERSION,
> + EFI_ACPI_WDDT_TABLE_VERSION,
> + //
> + // Base Address
> + //
> + {0x01,
> + 0xff,
> + 0x00,
> + 0x00,
> + //
> + // This is AcpiBase(PmBase)+60 and must be patched in
> + //
> + 0000},
> + EFI_ACPI_WDDT_TIMER_MAX_COUNT,
> + EFI_ACPI_WDDT_TIMER_MIN_VALUE,
> + EFI_ACPI_WDDT_TIMER_PERIOD_COUNT,
> + EFI_ACPI_WDDT_STATUS_AVAILABLE,
> + 00
> +
> +};
> +
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + return (VOID*)&Wddt;
> +}
> diff --git
> a/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wsmt/W
> smt.aslc
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wsmt/W
> smt.aslc
> new file mode 100644
> index 0000000000..83484b7cd7
> --- /dev/null
> +++
> b/Platform/Intel/WhitleyOpenBoardPkg/Features/Acpi/AcpiTables/Wsmt/W
> smt.aslc
> @@ -0,0 +1,74 @@
> +/** @file
> +
> + @copyright
> + Copyright 2017 - 2020 Intel Corporation.
> +
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +**/
> +
> +
> + //
> + // Statements that include other files
> + //
> +
> +#include <Acpi/Wsmt.h>
> +
> + //
> + // Windows SMM Security Mitigations Table
> + // Please modify all values in Wsmt.h only.
> + //
> +
> +ACPI_WINDOWS_SMM_SECURITY_MITIGATIONS_TABLE Wsmt = {
> + //
> + // Header
> + //
> + {
> + ACPI_WSMT_SIGNATURE,
> + ACPI_WSMT_LENGTH,
> + EFI_ACPI_WSMT_REVISION,
> +
> + //
> + // Checksum will be updated at runtime
> + //
> + 0x00,
> +
> + //
> + // It is expected that these values will be updated at runtime
> + //
> + { ' ', ' ', ' ', ' ', ' ', ' ' },
> + 0,
> + ACPI_OEM_WSMT_REVISION,
> + 0,
> + 0
> + },
> + //
> + // Protection Flags
> + //
> + {
> + { 0 }
> + }
> +
> +};
> +
> +#if defined (__GNUC__)
> +VOID*
> +ReferenceAcpiTable (
> + VOID
> + )
> +
> +{
> + //
> + // Reference the table being generated to prevent the optimizer from
> removing the
> + // data structure from the executable
> + //
> + return (VOID*)&Wsmt;
> +}
> +#else
> +VOID
> +main (
> + VOID
> + )
> +
> +{
> +}
> +#endif
> --
> 2.27.0.windows.1
next prev parent reply other threads:[~2022-02-09 3:21 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-07 19:02 [edk2-devel][edk2-platforms][PATCH V1 0/8] Whitley ACPI Tables Oram, Isaac W
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 1/8] MinPlatformPkg/AmlGenOffset: Update for python 3 Oram, Isaac W
2022-02-09 3:20 ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 2/8] WhitleyOpenBoardPkg/AcpiTables: Add ACPI Table definitions Oram, Isaac W
2022-02-09 3:20 ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 3/8] WhitleyOpenBoardPkg/AcpiTables: South Cluster ASL Oram, Isaac W
2022-02-09 3:21 ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 4/8] WhitleyOpenBoardPkg/AcpiTables10nm: Add Static ACPI tables Oram, Isaac W
2022-02-09 3:21 ` Nate DeSimone [this message]
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 5/8] WhitleyOpenBoardPkg/AcpiTables10nm: Add DSDT ACPI table Oram, Isaac W
2022-02-09 3:21 ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 6/8] WhitleyOpenBoardPkg/Build: Enable includable build options Oram, Isaac W
2022-02-09 3:21 ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 7/8] WhitleyOpenBoardPkg/WilsonCityRvp: Generate AML offset table Oram, Isaac W
2022-02-09 3:21 ` Nate DeSimone
2022-02-07 19:02 ` [edk2-devel][edk2-platforms][PATCH V1 8/8] WhitleyOpenBoardPkg/StaticSkuDataDxe: Add open source driver Oram, Isaac W
2022-02-09 3:20 ` Nate DeSimone
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=MW4PR11MB5821806504477D80F6939E22CD2E9@MW4PR11MB5821.namprd11.prod.outlook.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox