[edk2-devel][edk2-platforms][PATCH V1 4/8] WhitleyOpenBoardPkg/AcpiTables10nm: Add Static ACPI tables

Nate DeSimone nathaniel.l.desimone at intel.com
Wed Feb 9 03:21:05 UTC 2022


Reviewed-by: Nate DeSimone <nathaniel.l.desimone at intel.com>

> -----Original Message-----
> From: Oram, Isaac W <isaac.w.oram at intel.com>
> Sent: Monday, February 7, 2022 11:03 AM
> To: devel at edk2.groups.io
> Cc: Desimone, Nathaniel L <nathaniel.l.desimone at intel.com>; Chiu, Chasel
> <chasel.chiu at 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 at intel.com>
> Cc: Chasel Chiu <chasel.chiu at intel.com>
> Signed-off-by: Isaac Oram <isaac.w.oram at 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



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#86472): https://edk2.groups.io/g/devel/message/86472
Mute This Topic: https://groups.io/mt/88979439/1813853
Group Owner: devel+owner at edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [edk2-devel-archive at redhat.com]
-=-=-=-=-=-=-=-=-=-=-=-






More information about the edk2-devel-archive mailing list