ACK: [PATCH 1/2] ACPICA: Update to version 20240827
ivanhu
ivan.hu at canonical.com
Mon Sep 2 05:08:30 UTC 2024
Colin, Thanks!
Acked-by: Ivan Hu <ivan.hu at canonical.com>
On 8/30/24 00:09, Colin Ian King wrote:
> Major changes in this release of ACPICA are detailed below (from
> ACPICA documents/changes.txt):
>
> * Fix the PHAT table working: ensure that the PHAT firmware health
> record offset works correctly, fix various sub-table offsets, prevent
> segmentation faults when encountering invalid device paths.
> * Fix the optional table 4-byte signature.
> * Correct the dumping of SLIC and DBG2 tables.
> * Add support for QWordPCC and DWordPCC by Jose Marinho (ARM)
> * Fix the integer to hex string conversions by Armin Wolf
> * Detecting FACS in reduced HW mode and allowing setting waking vector
> thereby waking up from S3 state
> * Fixing issues with crossing page boundaries when mapping operation regions
> * Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables
> * Fix multiple issues with table parsing, compilation and disassembly
> * Allow for more flexibility in _DSM usage.
>
> Also include hot fix:
> * Fix pointer offset into SLIC table
>
> Signed-off-by: Colin Ian King <colin.i.king at gmail.com>
> ---
> src/acpica/source/common/dmtable.c | 18 +-
> src/acpica/source/common/dmtbdump.c | 7 +-
> src/acpica/source/common/dmtbdump1.c | 156 ++++++++++++++--
> src/acpica/source/common/dmtbdump2.c | 107 +++++++----
> src/acpica/source/common/dmtbdump3.c | 3 +-
> src/acpica/source/common/dmtbinfo1.c | 124 +++++++++++-
> src/acpica/source/common/dmtbinfo2.c | 13 +-
> src/acpica/source/common/dmtbinfo3.c | 8 +-
> src/acpica/source/compiler/aslcompiler.h | 13 +-
> src/acpica/source/compiler/aslcompiler.l | 3 +
> src/acpica/source/compiler/asldefine.h | 2 +-
> src/acpica/source/compiler/aslmap.c | 3 +
> src/acpica/source/compiler/aslparseop.c | 2 +-
> src/acpica/source/compiler/aslparser.y | 2 +-
> src/acpica/source/compiler/aslresource.c | 15 ++
> src/acpica/source/compiler/aslresources.y | 45 +++++
> src/acpica/source/compiler/aslrestype2d.c | 157 ++++++++++++++++
> src/acpica/source/compiler/aslrestype2q.c | 156 ++++++++++++++++
> src/acpica/source/compiler/aslrestype2w.c | 156 ++++++++++++++++
> src/acpica/source/compiler/asltokens.y | 3 +
> src/acpica/source/compiler/asltypes.y | 3 +
> src/acpica/source/compiler/dtfield.c | 4 +-
> src/acpica/source/compiler/dttable1.c | 149 ++++++++++++++-
> src/acpica/source/compiler/dttable2.c | 2 +-
> src/acpica/source/compiler/dttemplate.h | 176 ++++++++++--------
> src/acpica/source/compiler/dtutils.c | 12 ++
> src/acpica/source/compiler/prmacros.c | 10 +-
> .../source/components/debugger/dbconvert.c | 2 +
> .../source/components/disassembler/dmwalk.c | 2 -
> .../source/components/executer/exconvrt.c | 56 +++++-
> .../source/components/executer/exprep.c | 4 +
> .../source/components/executer/exregion.c | 23 +--
> .../source/components/executer/exsystem.c | 4 +-
> .../source/components/hardware/hwxfsleep.c | 15 +-
> src/acpica/source/components/parser/psargs.c | 56 ++++++
> .../source/components/resources/rsaddr.c | 3 +-
> .../source/components/resources/rsdump.c | 3 +-
> src/acpica/source/components/tables/tbfadt.c | 29 ++-
> src/acpica/source/components/tables/tbutils.c | 12 +-
> .../source/components/utilities/utdelete.c | 4 +-
> .../source/components/utilities/utinit.c | 2 +-
> .../source/components/utilities/utosi.c | 1 +
> .../source/components/utilities/utxfinit.c | 28 +--
> src/acpica/source/include/acconfig.h | 1 -
> src/acpica/source/include/acdisasm.h | 12 ++
> src/acpica/source/include/acglobal.h | 6 +-
> src/acpica/source/include/aclocal.h | 2 +
> src/acpica/source/include/acoutput.h | 5 +
> src/acpica/source/include/acpixf.h | 4 +-
> src/acpica/source/include/acpredef.h | 2 +-
> src/acpica/source/include/actbinfo.h | 11 ++
> src/acpica/source/include/actbl1.h | 17 +-
> src/acpica/source/include/actbl2.h | 109 ++++++++++-
> src/acpica/source/include/actbl3.h | 12 +-
> src/acpica/source/include/actypes.h | 1 +
> src/acpica/source/include/platform/acenv.h | 6 +
> 56 files changed, 1517 insertions(+), 264 deletions(-)
>
> diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
> index e9714d2e..31fd9aeb 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -190,6 +190,8 @@ static const char *AcpiDmAestSubnames[] =
> "SMMU Error Node",
> "Vendor-defined Error Node",
> "GIC Error Node",
> + "PCIE Error Node",
> + "PROXY Error Node",
> "Unknown Subtable Type" /* Reserved */
> };
>
> @@ -214,6 +216,7 @@ static const char *AcpiDmAestXfaceNames[] =
> {
> "System Register Interface",
> "Memory Mapped Interface",
> + "Single Record Memory Mapped Interface",
> "Unknown Interface Type" /* Reserved */
> };
>
> @@ -257,6 +260,7 @@ static const char *AcpiDmCedtSubnames[] =
> {
> "CXL Host Bridge Structure",
> "CXL Fixed Memory Window Structure",
> + "CXL XOR Interleave Math Structure",
> "Unknown Subtable Type" /* Reserved */
> };
>
> @@ -1082,7 +1086,7 @@ AcpiDmDumpTable (
> {
> AcpiOsPrintf (
> "/**** ACPI table terminates "
> - "in the middle of a data structure! (dump table) \n"
> + "in the middle of a data structure! (dump table)\n"
> "CurrentOffset: %X, TableLength: %X ***/", CurrentOffset, TableLength);
> return (AE_BAD_DATA);
> }
> @@ -1197,6 +1201,16 @@ AcpiDmDumpTable (
> ByteLength = 18;
> break;
>
> + case ACPI_DMT_BUF32:
> +
> + ByteLength = 32;
> + break;
> +
> + case ACPI_DMT_BUF112:
> +
> + ByteLength = 112;
> + break;
> +
> case ACPI_DMT_BUF128:
>
> ByteLength = 128;
> @@ -1408,6 +1422,8 @@ AcpiDmDumpTable (
> case ACPI_DMT_BUF12:
> case ACPI_DMT_BUF16:
> case ACPI_DMT_BUF18:
> + case ACPI_DMT_BUF32:
> + case ACPI_DMT_BUF112:
> case ACPI_DMT_BUF128:
> /*
> * Buffer: Size depends on the opcode and was set above.
> diff --git a/src/acpica/source/common/dmtbdump.c b/src/acpica/source/common/dmtbdump.c
> index 2feb7644..a84dc98a 100644
> --- a/src/acpica/source/common/dmtbdump.c
> +++ b/src/acpica/source/common/dmtbdump.c
> @@ -562,7 +562,7 @@ AcpiDmDumpFadt (
>
> /* Check for FADT revision 6 fields and up (ACPI 6.0+) */
>
> - if (Table->Length > ACPI_FADT_V3_SIZE)
> + if (Table->Length > ACPI_FADT_V5_SIZE)
> {
> Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
> AcpiDmTableInfoFadt6);
> @@ -635,6 +635,11 @@ AcpiDmValidateFadtLength (
> ExpectedLength = ACPI_FADT_V5_SIZE;
> break;
>
> + case 6:
> +
> + ExpectedLength = ACPI_FADT_V6_SIZE;
> + break;
> +
> default:
>
> return;
> diff --git a/src/acpica/source/common/dmtbdump1.c b/src/acpica/source/common/dmtbdump1.c
> index d5b6e04f..56d959fd 100644
> --- a/src/acpica/source/common/dmtbdump1.c
> +++ b/src/acpica/source/common/dmtbdump1.c
> @@ -195,6 +195,9 @@ AcpiDmDumpAest (
> ACPI_DMTABLE_INFO *InfoTable;
> ACPI_SIZE Length;
> UINT8 Type;
> + UINT8 Revision = Table->Revision;
> + UINT32 Count;
> + ACPI_AEST_NODE_INTERFACE_HEADER *InterfaceHeader;
>
>
> /* Very small, generic main table. AEST consists of mostly subtables */
> @@ -234,8 +237,22 @@ AcpiDmDumpAest (
> break;
>
> case ACPI_AEST_VENDOR_ERROR_NODE:
> - InfoTable = AcpiDmTableInfoAestVendorError;
> - Length = sizeof (ACPI_AEST_VENDOR);
> + switch (Revision)
> + {
> + case 1:
> + InfoTable = AcpiDmTableInfoAestVendorError;
> + Length = sizeof (ACPI_AEST_VENDOR);
> + break;
> +
> + case 2:
> + InfoTable = AcpiDmTableInfoAestVendorV2Error;
> + Length = sizeof (ACPI_AEST_VENDOR_V2);
> + break;
> +
> + default:
> + AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", Revision);
> + return;
> + }
> break;
>
> case ACPI_AEST_GIC_ERROR_NODE:
> @@ -243,6 +260,16 @@ AcpiDmDumpAest (
> Length = sizeof (ACPI_AEST_GIC);
> break;
>
> + case ACPI_AEST_PCIE_ERROR_NODE:
> + InfoTable = AcpiDmTableInfoAestPCIeError;
> + Length = sizeof (ACPI_AEST_PCIE);
> + break;
> +
> + case ACPI_AEST_PROXY_ERROR_NODE:
> + InfoTable = AcpiDmTableInfoAestProxyError;
> + Length = sizeof (ACPI_AEST_PROXY);
> + break;
> +
> /* Error case below */
> default:
>
> @@ -335,8 +362,57 @@ AcpiDmDumpAest (
> return;
> }
>
> - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_AEST_NODE_INTERFACE), AcpiDmTableInfoAestXface);
> + if (Revision == 1)
> + {
> + InfoTable = AcpiDmTableInfoAestXface;
> + Length = sizeof (ACPI_AEST_NODE_INTERFACE);
> + }
> + else if (Revision == 2)
> + {
> + InfoTable = AcpiDmTableInfoAestXfaceHeader;
> + Length = sizeof (ACPI_AEST_NODE_INTERFACE_HEADER);
> +
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Length, InfoTable);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += Length;
> +
> + InterfaceHeader = ACPI_CAST_PTR (ACPI_AEST_NODE_INTERFACE_HEADER, Subtable);
> + switch (InterfaceHeader->GroupFormat)
> + {
> + case ACPI_AEST_NODE_GROUP_FORMAT_4K:
> + InfoTable = AcpiDmTableInfoAestXface4k;
> + Length = sizeof (ACPI_AEST_NODE_INTERFACE_4K);
> + break;
> +
> + case ACPI_AEST_NODE_GROUP_FORMAT_16K:
> + InfoTable = AcpiDmTableInfoAestXface16k;
> + Length = sizeof (ACPI_AEST_NODE_INTERFACE_16K);
> + break;
> +
> + case ACPI_AEST_NODE_GROUP_FORMAT_64K:
> + InfoTable = AcpiDmTableInfoAestXface64k;
> + Length = sizeof (ACPI_AEST_NODE_INTERFACE_64K);
> + break;
> +
> + default:
> + AcpiOsPrintf ("\n**** Unknown AEST Interface Group Format 0x%X\n",
> + InterfaceHeader->GroupFormat);
> + return;
> + }
> +
> + Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset);
> + }
> + else
> + {
> + AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n", Revision);
> + return;
> + }
> +
> + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Length, InfoTable);
> if (ACPI_FAILURE (Status))
> {
> return;
> @@ -345,22 +421,36 @@ AcpiDmDumpAest (
> /* Point past the interface structure */
>
> AcpiOsPrintf ("\n");
> - Offset += sizeof (ACPI_AEST_NODE_INTERFACE);
> + Offset += Length;
>
> /* Dump the entire interrupt structure array, if present */
>
> if (NodeHeader->NodeInterruptOffset)
> {
> - Length = NodeHeader->NodeInterruptCount;
> + Count = NodeHeader->NodeInterruptCount;
> Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset);
>
> - while (Length)
> + while (Count)
> {
> /* Dump the interrupt structure */
>
> + switch (Revision) {
> + case 1:
> + InfoTable = AcpiDmTableInfoAestXrupt;
> + Length = sizeof (ACPI_AEST_NODE_INTERRUPT);
> + break;
> +
> + case 2:
> + InfoTable = AcpiDmTableInfoAestXruptV2;
> + Length = sizeof (ACPI_AEST_NODE_INTERRUPT_V2);
> + break;
> + default:
> + AcpiOsPrintf ("\n**** Unknown AEST revision 0x%X\n",
> + Revision);
> + return;
> + }
> Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
> - sizeof (ACPI_AEST_NODE_INTERRUPT),
> - AcpiDmTableInfoAestXrupt);
> + Length, InfoTable);
> if (ACPI_FAILURE (Status))
> {
> return;
> @@ -368,9 +458,9 @@ AcpiDmDumpAest (
>
> /* Point to the next interrupt structure */
>
> - Offset += sizeof (ACPI_AEST_NODE_INTERRUPT);
> + Offset += Length;
> Subtable = ACPI_ADD_PTR (ACPI_AEST_HEADER, Table, Offset);
> - Length--;
> + Count--;
> AcpiOsPrintf ("\n");
> }
> }
> @@ -936,9 +1026,14 @@ AcpiDmDumpCedt (
> case ACPI_CEDT_TYPE_CFMWS:
> {
> ACPI_CEDT_CFMWS *ptr = (ACPI_CEDT_CFMWS *) Subtable;
> - unsigned int i, max = 0x01 << (ptr->InterleaveWays);
> + unsigned int i, max;
> +
> + if (ptr->InterleaveWays < 8)
> + max = 1 << (ptr->InterleaveWays);
> + else
> + max = 3 << (ptr->InterleaveWays - 8);
>
> - /* print out table with first "Interleave target" */
> + /* print out table with first "Interleave target" */
>
> Status = AcpiDmDumpTable (Length, Offset, Subtable,
> Subtable->Length, AcpiDmTableInfoCedt1);
> @@ -964,6 +1059,37 @@ AcpiDmDumpCedt (
> break;
> }
>
> + case ACPI_CEDT_TYPE_CXIMS:
> + {
> + ACPI_CEDT_CXIMS *ptr = (ACPI_CEDT_CXIMS *) Subtable;
> + unsigned int i, max = ptr->NrXormaps;
> +
> + /* print out table with first "XOR Map" */
> +
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> + Subtable->Length, AcpiDmTableInfoCedt2);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + /* Now, print out any XOR Map beyond the first. */
> +
> + for (i = 1; i < max; i++)
> + {
> + unsigned int loc_offset = Offset + (i * 1) + ACPI_OFFSET (ACPI_CEDT_CXIMS, XormapList);
> + UINT64 *trg = &(ptr->XormapList[i]);
> +
> + Status = AcpiDmDumpTable (Length, loc_offset, trg,
> + Subtable->Length, AcpiDmTableInfoCedt2_te);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> + }
> + break;
> + }
> +
> default:
> AcpiOsPrintf ("\n**** Unknown CEDT subtable type 0x%X\n\n",
> Subtable->Type);
> @@ -1245,8 +1371,8 @@ AcpiDmDumpDbg2 (
>
> if (Subtable->OemDataOffset)
> {
> - Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset,
> - Table, Subtable->OemDataLength,
> + Status = AcpiDmDumpTable (Length, Subtable->OemDataOffset,
> + Subtable, Subtable->OemDataLength,
> AcpiDmTableInfoDbg2OemData);
> if (ACPI_FAILURE (Status))
> {
> diff --git a/src/acpica/source/common/dmtbdump2.c b/src/acpica/source/common/dmtbdump2.c
> index 71198f74..deff9c33 100644
> --- a/src/acpica/source/common/dmtbdump2.c
> +++ b/src/acpica/source/common/dmtbdump2.c
> @@ -1213,8 +1213,10 @@ AcpiDmDumpMpam (
> ACPI_STATUS Status;
> ACPI_MPAM_MSC_NODE *MpamMscNode;
> ACPI_MPAM_RESOURCE_NODE *MpamResourceNode;
> + ACPI_MPAM_FUNC_DEPS *MpamFunctionalDependency;
> ACPI_DMTABLE_INFO *InfoTable;
> UINT32 Offset = sizeof(ACPI_TABLE_HEADER);
> + UINT32 TempOffset;
> UINT32 MpamResourceNodeLength = 0;
>
> while (Offset < Table->Length)
> @@ -1222,8 +1224,8 @@ AcpiDmDumpMpam (
> MpamMscNode = ACPI_ADD_PTR (ACPI_MPAM_MSC_NODE, Table, Offset);
>
> /* Subtable: MSC */
> - Status = AcpiDmDumpTable (MpamMscNode->Length, 0, MpamMscNode, 0,
> - AcpiDmTableInfoMpam0);
> + Status = AcpiDmDumpTable (Table->Length, Offset, MpamMscNode,
> + MpamMscNode->Length, AcpiDmTableInfoMpam0);
> if (ACPI_FAILURE (Status))
> {
> return;
> @@ -1233,18 +1235,19 @@ AcpiDmDumpMpam (
> Offset += sizeof(ACPI_MPAM_MSC_NODE);
>
> /* Subtable: MSC RIS(es) */
> - for (UINT32 ResourceIdx = 0; ResourceIdx < MpamMscNode->NumResouceNodes; ResourceIdx++)
> + for (UINT32 ResourceIdx = 0; ResourceIdx < MpamMscNode->NumResourceNodes; ResourceIdx++)
> {
> + AcpiOsPrintf ("\n");
> MpamResourceNode = ACPI_ADD_PTR (ACPI_MPAM_RESOURCE_NODE, Table, Offset);
>
> MpamResourceNodeLength = sizeof(ACPI_MPAM_RESOURCE_NODE) +
> MpamResourceNode->NumFunctionalDeps * sizeof(ACPI_MPAM_FUNC_DEPS);
> -
> + TempOffset = Offset;
> Offset += MpamResourceNodeLength;
>
> /* Subtable: MSC RIS */
> - Status = AcpiDmDumpTable (MpamResourceNodeLength, 0, MpamResourceNode, 0,
> - AcpiDmTableInfoMpam1);
> + Status = AcpiDmDumpTable (Table->Length, TempOffset, MpamResourceNode,
> + sizeof(ACPI_MPAM_RESOURCE_NODE), AcpiDmTableInfoMpam1);
> if (ACPI_FAILURE (Status))
> {
> return;
> @@ -1279,30 +1282,40 @@ AcpiDmDumpMpam (
> }
>
> /* Subtable: MSC Resource Locator(s) */
> - Status = AcpiDmDumpTable (sizeof(ACPI_MPAM_RESOURCE_LOCATOR), 0,
> - &MpamResourceNode->Locator, 0, InfoTable);
> + TempOffset += ACPI_OFFSET(ACPI_MPAM_RESOURCE_NODE, Locator);
> + Status = AcpiDmDumpTable (Table->Length, TempOffset, &MpamResourceNode->Locator,
> + sizeof(ACPI_MPAM_RESOURCE_LOCATOR), InfoTable);
> if (ACPI_FAILURE (Status))
> {
> return;
> }
>
> /* Get the number of functional dependencies of an RIS */
> - Status = AcpiDmDumpTable (sizeof(UINT32), 0, &MpamResourceNode->NumFunctionalDeps, 0,
> - AcpiDmTableInfoMpam1Deps);
> + TempOffset += sizeof(ACPI_MPAM_RESOURCE_LOCATOR);
> + Status = AcpiDmDumpTable (Table->Length, TempOffset, &MpamResourceNode->NumFunctionalDeps,
> + sizeof(UINT32), AcpiDmTableInfoMpam1Deps);
> if (ACPI_FAILURE (Status))
> {
> return;
> }
>
> + TempOffset += sizeof(UINT32);
> + MpamFunctionalDependency = ACPI_ADD_PTR (ACPI_MPAM_FUNC_DEPS, MpamResourceNode,
> + sizeof(ACPI_MPAM_RESOURCE_NODE));
> /* Subtable: MSC functional dependencies */
> for (UINT32 funcDep = 0; funcDep < MpamResourceNode->NumFunctionalDeps; funcDep++)
> {
> + AcpiOsPrintf ("\n");
> Status = AcpiDmDumpTable (sizeof(ACPI_MPAM_FUNC_DEPS), 0,
> &MpamResourceNode->NumFunctionalDeps, 0, AcpiDmTableInfoMpam2);
> + Status = AcpiDmDumpTable (Table->Length, TempOffset, MpamFunctionalDependency,
> + sizeof(ACPI_MPAM_FUNC_DEPS), AcpiDmTableInfoMpam2);
> if (ACPI_FAILURE (Status))
> {
> return;
> }
> + TempOffset += sizeof(ACPI_MPAM_FUNC_DEPS);
> + MpamFunctionalDependency++;
> }
>
> AcpiOsPrintf ("\n\n");
> @@ -1881,6 +1894,7 @@ AcpiDmDumpPhat (
> ACPI_DMTABLE_INFO *InfoTable;
> ACPI_PHAT_HEADER *Subtable;
> ACPI_PHAT_VERSION_DATA *VersionData;
> + ACPI_PHAT_HEALTH_DATA *HealthData;
> UINT32 RecordCount;
> UINT32 Length = Table->Length;
> UINT32 Offset = sizeof (ACPI_TABLE_PHAT);
> @@ -1889,7 +1903,6 @@ AcpiDmDumpPhat (
> UINT32 PathLength;
> UINT32 VendorLength;
> UINT16 RecordType;
> - const wchar_t *WideString;
>
>
> Subtable = ACPI_ADD_PTR (ACPI_PHAT_HEADER, Table, sizeof (ACPI_TABLE_PHAT));
> @@ -1914,13 +1927,13 @@ AcpiDmDumpPhat (
> case ACPI_PHAT_TYPE_FW_VERSION_DATA:
>
> InfoTable = AcpiDmTableInfoPhat0;
> - SubtableLength = Offset += sizeof (ACPI_PHAT_VERSION_DATA);
> + SubtableLength = sizeof (ACPI_PHAT_VERSION_DATA);
> break;
>
> case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
>
> InfoTable = AcpiDmTableInfoPhat1;
> - SubtableLength = Offset += sizeof (ACPI_PHAT_TYPE_FW_HEALTH_DATA);
> + SubtableLength = sizeof (ACPI_PHAT_HEALTH_DATA);
> break;
>
> default:
> @@ -1931,13 +1944,15 @@ AcpiDmDumpPhat (
> return;
> }
>
> - Status = AcpiDmDumpTable (Length, SubtableLength, Subtable,
> + Status = AcpiDmDumpTable (Length, Offset, Subtable,
> SubtableLength, InfoTable);
> if (ACPI_FAILURE (Status))
> {
> return;
> }
>
> + Offset += SubtableLength;
> +
> OriginalOffset = Offset;
> switch (Subtable->Type)
> {
> @@ -1993,39 +2008,55 @@ AcpiDmDumpPhat (
>
> case ACPI_PHAT_TYPE_FW_HEALTH_DATA:
>
> - /*
> - * Get the length of the Device Path (UEFI wide string).
> - * Include the wide null terminator (+2),
> - */
> - WideString = ACPI_ADD_PTR (wchar_t, Subtable,
> - sizeof (ACPI_PHAT_HEALTH_DATA));
> -
> - PathLength = (wcslen (WideString) * 2) + 2;
> - DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, PathLength %X, Offset %X, Table->Length %X */\n",
> - __LINE__, PathLength, Offset, Length);
> + HealthData = ACPI_CAST_PTR (ACPI_PHAT_HEALTH_DATA, Subtable);
> + PathLength = Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA);
> + VendorLength = 0;
>
> - Status = AcpiDmDumpTable (Length, Offset,
> - ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)),
> - PathLength, AcpiDmTableInfoPhat1a);
> - Offset += PathLength;
> - if (ACPI_FAILURE (Status))
> + /* An offset of 0 should be ignored */
> + if (HealthData->DeviceSpecificOffset != 0)
> {
> - return;
> + if (HealthData->DeviceSpecificOffset > Subtable->Length)
> + {
> + AcpiOsPrintf ("\n/* Warning: Oversized device-specific data offset %X */\n"
> + "/* (maximum is %X -- ignoring device-specific data) */\n",
> + HealthData->DeviceSpecificOffset, Subtable->Length);
> + }
> + else if (HealthData->DeviceSpecificOffset < sizeof (ACPI_PHAT_HEALTH_DATA))
> + {
> + AcpiOsPrintf ("\n/* Warning: Undersized device-specific data offset %X */\n"
> + "/* (minimum is %X -- ignoring device-specific data) */\n",
> + HealthData->DeviceSpecificOffset, (UINT8) sizeof (ACPI_PHAT_HEALTH_DATA));
> + }
> + else
> + {
> + PathLength = HealthData->DeviceSpecificOffset - sizeof (ACPI_PHAT_HEALTH_DATA);
> + VendorLength = Subtable->Length - HealthData->DeviceSpecificOffset;
> + }
> }
>
> - /* Get Device-Specific Data - length of which is the remaining subtable length. */
> + DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, PathLength %X, Offset %X */\n",
> + __LINE__, PathLength, Offset);
>
> - VendorLength =
> - Subtable->Length - sizeof (ACPI_PHAT_HEALTH_DATA) - PathLength;
> - DbgPrint (ASL_DEBUG_OUTPUT, "%u, Subtable->Length %X, VendorLength %X, Offset %X PathLength: %X\n",
> - __LINE__, Subtable->Length, VendorLength, Offset, PathLength);
> + if (PathLength)
> + {
> + Status = AcpiDmDumpTable (Length, Offset,
> + ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA)),
> + PathLength, AcpiDmTableInfoPhat1a);
> + if (ACPI_FAILURE (Status))
> + {
> + return;
> + }
> +
> + Offset += PathLength;
> + }
> +
> + DbgPrint (ASL_DEBUG_OUTPUT, "/* %u, VendorLength %X, Offset %X */\n",
> + __LINE__, VendorLength, Offset);
>
> if (VendorLength)
> {
> - /* Point past the Device Path, Compile the Device-Specific Data */
> -
> Status = AcpiDmDumpTable (Length, Offset,
> - ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, sizeof (ACPI_PHAT_HEALTH_DATA) + PathLength),
> + ACPI_ADD_PTR (ACPI_PHAT_HEADER, Subtable, HealthData->DeviceSpecificOffset),
> VendorLength, AcpiDmTableInfoPhat1b);
> if (ACPI_FAILURE (Status))
> {
> diff --git a/src/acpica/source/common/dmtbdump3.c b/src/acpica/source/common/dmtbdump3.c
> index 6e5f5d7f..1eddc391 100644
> --- a/src/acpica/source/common/dmtbdump3.c
> +++ b/src/acpica/source/common/dmtbdump3.c
> @@ -177,7 +177,8 @@ AcpiDmDumpSlic (
> ACPI_TABLE_HEADER *Table)
> {
>
> - (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
> + (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER),
> + (void *) ((UINT8 *)Table + sizeof (*Table)),
> Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
> }
>
> diff --git a/src/acpica/source/common/dmtbinfo1.c b/src/acpica/source/common/dmtbinfo1.c
> index 0199d1d1..961ba8c9 100644
> --- a/src/acpica/source/common/dmtbinfo1.c
> +++ b/src/acpica/source/common/dmtbinfo1.c
> @@ -287,6 +287,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorError[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/* 3: Vendor Defined V2 */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorV2Error[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_AEST3A_OFFSET (AcpiHid), "ACPI HID", 0},
> + {ACPI_DMT_UINT32, ACPI_AEST3A_OFFSET (AcpiUid), "ACPI UID", 0},
> + {ACPI_DMT_BUF16, ACPI_AEST3A_OFFSET (VendorSpecificData), "Vendor Specific Data", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> /* 4: Gic Error */
>
> ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[] =
> @@ -296,6 +306,31 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/* 5: PCIe Error */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestPCIeError[] =
> +{
> + {ACPI_DMT_UINT32, ACPI_AEST5_OFFSET (IortNodeReference), "Iort Node Reference", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* 6: Proxy Error */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestProxyError[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_AEST6_OFFSET (NodeAddress), "Proxy Node Address", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* Common AEST structures for subtables */
> +
> +#define ACPI_DM_AEST_INTERFACE_COMMON(a) \
> + {ACPI_DMT_UINT32, ACPI_AEST0D##a##_OFFSET (Common.ErrorNodeDevice), "Arm Error Node Device", 0},\
> + {ACPI_DMT_UINT32, ACPI_AEST0D##a##_OFFSET (Common.ProcessorAffinity), "Processor Affinity", 0}, \
> + {ACPI_DMT_UINT64, ACPI_AEST0D##a##_OFFSET (Common.ErrorGroupRegisterBase), "Err-Group Register Addr", 0}, \
> + {ACPI_DMT_UINT64, ACPI_AEST0D##a##_OFFSET (Common.FaultInjectRegisterBase), "Err-Inject Register Addr", 0}, \
> + {ACPI_DMT_UINT64, ACPI_AEST0D##a##_OFFSET (Common.InterruptConfigRegisterBase), "IRQ-Config Register Addr", 0},
> +
> /* AestXface: Node Interface Structure */
>
> ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[] =
> @@ -314,6 +349,60 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/* AestXface: Node Interface Structure V2 Header */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXfaceHeader[] =
> +{
> + {ACPI_DMT_AEST_XFACE, ACPI_AEST0DH_OFFSET (Type), "Interface Type", 0},
> + {ACPI_DMT_UINT8, ACPI_AEST0DH_OFFSET (GroupFormat), "Group Format", 0},
> + {ACPI_DMT_UINT16, ACPI_AEST0DH_OFFSET (Reserved[0]), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_AEST0DH_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Shared Interface", 0},
> + {ACPI_DMT_FLAG1, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Clear MISCx Registers", 0},
> + {ACPI_DMT_FLAG2, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Error Node Device Valid", 0},
> + {ACPI_DMT_FLAG3, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Affinity Type", 0},
> + {ACPI_DMT_FLAG4, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Error group Address Valid", 0},
> + {ACPI_DMT_FLAG5, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Fault Injection Address Valid", 0},
> + {ACPI_DMT_FLAG7, ACPI_AEST0D_FLAG_OFFSET (Flags, 0), "Interrupt Config Address valid", 0},
> + {ACPI_DMT_UINT64, ACPI_AEST0DH_OFFSET (Address), "Address", 0},
> + {ACPI_DMT_UINT32, ACPI_AEST0DH_OFFSET (ErrorRecordIndex), "Error Record Index", 0},
> + {ACPI_DMT_UINT32, ACPI_AEST0DH_OFFSET (ErrorRecordCount), "Error Record Count", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* AestXface: Node Interface Structure V2 4K Group Format */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface4k[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_AEST0D4_OFFSET (ErrorRecordImplemented),"Error Record Implemented", 0},
> + {ACPI_DMT_UINT64, ACPI_AEST0D4_OFFSET (ErrorStatusReporting), "Error Status Reporting", 0},
> + {ACPI_DMT_UINT64, ACPI_AEST0D4_OFFSET (AddressingMode), "Addressing Mode", 0},
> + ACPI_DM_AEST_INTERFACE_COMMON(4)
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* AestXface: Node Interface Structure V2 16K Group Format */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface16k[] =
> +{
> + {ACPI_DMT_BUF32, ACPI_AEST0D16_OFFSET (ErrorRecordImplemented[0]),"Error Record Implemented", 0},
> + {ACPI_DMT_BUF32, ACPI_AEST0D16_OFFSET (ErrorStatusReporting[0]), "Error Status Reporting", 0},
> + {ACPI_DMT_BUF32, ACPI_AEST0D16_OFFSET (AddressingMode[0]), "Addressing Mode", 0},
> + ACPI_DM_AEST_INTERFACE_COMMON(16)
> + ACPI_DMT_TERMINATOR
> +};
> +
> +/* AestXface: Node Interface Structure V2 64K Group Format */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface64k[] =
> +{
> + {ACPI_DMT_BUF112, ACPI_AEST0D64_OFFSET (ErrorRecordImplemented[0]),"Error Record Implemented", 0},
> + {ACPI_DMT_BUF112, ACPI_AEST0D64_OFFSET (ErrorStatusReporting[0]), "Error Status Reporting", 0},
> + {ACPI_DMT_BUF112, ACPI_AEST0D64_OFFSET (AddressingMode[0]), "Addressing Mode", 0},
> + ACPI_DM_AEST_INTERFACE_COMMON(64)
> + ACPI_DMT_TERMINATOR
> +};
> +
> /* AestXrupt: Node Interrupt Structure */
>
> ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[] =
> @@ -329,6 +418,20 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[] =
> };
>
>
> +/* AestXrupt: Node Interrupt Structure V2 */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoAestXruptV2[] =
> +{
> + {ACPI_DMT_AEST_XRUPT, ACPI_AEST0EA_OFFSET (Type), "Interrupt Type", 0},
> + {ACPI_DMT_UINT16, ACPI_AEST0EA_OFFSET (Reserved), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_AEST0EA_OFFSET (Flags), "Flags (decoded below)", 0},
> + {ACPI_DMT_FLAG0, ACPI_AEST0EA_FLAG_OFFSET (Flags, 0), "Level Triggered", 0},
> + {ACPI_DMT_UINT32, ACPI_AEST0EA_OFFSET (Gsiv), "Gsiv", 0},
> + {ACPI_DMT_UINT32, ACPI_AEST0EA_OFFSET (Reserved1[0]), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +
> /*******************************************************************************
> *
> * ASF - Alert Standard Format table (Signature "ASF!")
> @@ -689,7 +792,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1[] =
> {ACPI_DMT_UINT32, ACPI_CEDT1_OFFSET (Reserved1), "Reserved", 0},
> {ACPI_DMT_UINT64, ACPI_CEDT1_OFFSET (BaseHpa), "Window base address", 0},
> {ACPI_DMT_UINT64, ACPI_CEDT1_OFFSET (WindowSize), "Window size", 0},
> - {ACPI_DMT_UINT8, ACPI_CEDT1_OFFSET (InterleaveWays), "Interleave Members (2^n)", 0},
> + {ACPI_DMT_UINT8, ACPI_CEDT1_OFFSET (InterleaveWays), "Interleave Members", 0},
> {ACPI_DMT_UINT8, ACPI_CEDT1_OFFSET (InterleaveArithmetic), "Interleave Arithmetic", 0},
> {ACPI_DMT_UINT16, ACPI_CEDT1_OFFSET (Reserved2), "Reserved", 0},
> {ACPI_DMT_UINT32, ACPI_CEDT1_OFFSET (Granularity), "Granularity", 0},
> @@ -705,6 +808,23 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1_te[] =
> ACPI_DMT_TERMINATOR
> };
>
> +/* 2: CXL XOR Interleave Math Structure */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2[] =
> +{
> + {ACPI_DMT_UINT16, ACPI_CEDT2_OFFSET (Reserved1), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_CEDT2_OFFSET (Hbig), "Interleave Granularity", 0},
> + {ACPI_DMT_UINT8, ACPI_CEDT2_OFFSET (NrXormaps), "Xormap List Count", 0},
> + {ACPI_DMT_UINT64, ACPI_CEDT2_OFFSET (XormapList), "First Xormap", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2_te[] =
> +{
> + {ACPI_DMT_UINT64, ACPI_CEDT2_TE_OFFSET (Xormap), "Next Xormap", 0},
> + ACPI_DMT_TERMINATOR
> +};
> +
> /*******************************************************************************
> *
> * CPEP - Corrected Platform Error Polling table
> @@ -1548,7 +1668,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoHmat2[] =
> {ACPI_DMT_FLAGS4_8, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Associativity", 0},
> {ACPI_DMT_FLAGS4_12, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Write Policy", 0},
> {ACPI_DMT_FLAGS16_16, ACPI_HMAT2_FLAG_OFFSET (CacheAttributes,0), "Cache Line Size", 0},
> - {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (Reserved2), "Reserved2", 0},
> + {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (AddressMode), "Address Mode", 0},
> {ACPI_DMT_UINT16, ACPI_HMAT2_OFFSET (NumberOfSMBIOSHandles), "SMBIOS Handle #", 0},
> ACPI_DMT_TERMINATOR
> };
> diff --git a/src/acpica/source/common/dmtbinfo2.c b/src/acpica/source/common/dmtbinfo2.c
> index 834d1ef0..8242b329 100644
> --- a/src/acpica/source/common/dmtbinfo2.c
> +++ b/src/acpica/source/common/dmtbinfo2.c
> @@ -313,6 +313,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIortAcc[] =
> {ACPI_DMT_UINT8, ACPI_IORTA_OFFSET (MemoryFlags), "Memory Flags (decoded below)", 0},
> {ACPI_DMT_FLAG0, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Coherency", 0},
> {ACPI_DMT_FLAG1, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Device Attribute", 0},
> + {ACPI_DMT_FLAG2, ACPI_IORTA_FLAG_OFFSET (MemoryFlags, 0), "Ensured Coherency of Accesses", 0},
> ACPI_DMT_TERMINATOR
> };
>
> @@ -1230,7 +1231,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam0[] =
> {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (MaxNrdyUsec), "MAX_NRDY_USEC", 0},
> {ACPI_DMT_NAME8, ACPI_MPAM0_OFFSET (HardwareIdLinkedDevice), "Hardware ID of linked device", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (InstanceIdLinkedDevice), "Instance ID of linked device", 0},
> - {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (NumResouceNodes), "Number of resource nodes", 0},
> + {ACPI_DMT_UINT32, ACPI_MPAM0_OFFSET (NumResourceNodes), "Number of resource nodes", 0},
>
> ACPI_DMT_TERMINATOR
> };
> @@ -1261,6 +1262,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1A[] =
> {
> {ACPI_DMT_UINT64, ACPI_MPAM1A_OFFSET (CacheReference), "Cache reference", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1A_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 1B: MPAM Memory locator descriptor. A subtable of RIS.
> @@ -1270,6 +1272,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1B[] =
> {
> {ACPI_DMT_UINT64, ACPI_MPAM1B_OFFSET (ProximityDomain), "Proximity domain", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1B_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 1C: MPAM SMMU locator descriptor. A subtable of RIS.
> @@ -1279,6 +1282,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1C[] =
> {
> {ACPI_DMT_UINT64, ACPI_MPAM1C_OFFSET (SmmuInterface), "SMMU Interface", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1C_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 1D: MPAM Memory-side cache locator descriptor. A subtable of RIS.
> @@ -1286,9 +1290,10 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1C[] =
> */
> ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1D[] =
> {
> - {ACPI_DMT_UINT56, ACPI_MPAM1D_OFFSET (Level), "Reserved", 0},
> + {ACPI_DMT_UINT56, ACPI_MPAM1D_OFFSET (Reserved), "Reserved", 0},
> {ACPI_DMT_UINT8, ACPI_MPAM1D_OFFSET (Level), "Level", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1D_OFFSET (Reference), "Reference", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 1E: MPAM ACPI device locator descriptor. A subtable of RIS.
> @@ -1298,6 +1303,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1E[] =
> {
> {ACPI_DMT_UINT64, ACPI_MPAM1E_OFFSET (AcpiHwId), "ACPI Hardware ID", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1E_OFFSET (AcpiUniqueId), "ACPI Unique ID", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 1F: MPAM Interconnect locator descriptor. A subtable of RIS.
> @@ -1307,6 +1313,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1F[] =
> {
> {ACPI_DMT_UINT64, ACPI_MPAM1F_OFFSET (InterConnectDescTblOff), "Interconnect descriptor table offset", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1F_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 1G: MPAM Locator structure.
> @@ -1316,6 +1323,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam1G[] =
> {
> {ACPI_DMT_UINT64, ACPI_MPAM1G_OFFSET (Descriptor1), "Descriptor1", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM1G_OFFSET (Descriptor2), "Descriptor2", 0},
> + ACPI_DMT_TERMINATOR
> };
>
> /* 2: MPAM Functional dependency descriptor.
> @@ -1325,6 +1333,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoMpam2[] =
> {
> {ACPI_DMT_UINT32, ACPI_MPAM2_OFFSET (Producer), "Producer", 0},
> {ACPI_DMT_UINT32, ACPI_MPAM2_OFFSET (Reserved), "Reserved", 0},
> + ACPI_DMT_TERMINATOR
> };
>
>
> diff --git a/src/acpica/source/common/dmtbinfo3.c b/src/acpica/source/common/dmtbinfo3.c
> index b06edb82..2f67e5e7 100644
> --- a/src/acpica/source/common/dmtbinfo3.c
> +++ b/src/acpica/source/common/dmtbinfo3.c
> @@ -255,7 +255,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] =
> {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits", 0},
> {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control", 0},
> {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type", 0},
> - {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Language), "Language", 0},
> {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID", 0},
> {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID", 0},
> {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus", 0},
> @@ -263,7 +263,11 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] =
> {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function", 0},
> {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags", 0},
> {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment", 0},
> - {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0},
> + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (UartClkFreq), "Uart Clock Freq", 0},
> + {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PreciseBaudrate), "Precise Baud rate", 0},
> + {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (NameSpaceStringLength), "NameSpaceStringLength", 0},
> + {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (NameSpaceStringOffset), "NameSpaceStringOffset", 0},
> + {ACPI_DMT_STRING, ACPI_SPCR_OFFSET (NameSpaceString), "NamespaceString", 0},
> ACPI_DMT_TERMINATOR
> };
>
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 36683e4a..45c12fb2 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -1582,9 +1582,12 @@ RsDoDwordMemoryDescriptor (
> ASL_RESOURCE_INFO *Info);
>
> ASL_RESOURCE_NODE *
> -RsDoDwordSpaceDescriptor (
> +RsDoDwordPccDescriptor (
> ASL_RESOURCE_INFO *Info);
>
> +ASL_RESOURCE_NODE *
> +RsDoDwordSpaceDescriptor (
> + ASL_RESOURCE_INFO *Info);
>
> /*
> * aslrestype2e - Extended address descriptors
> @@ -1613,6 +1616,10 @@ ASL_RESOURCE_NODE *
> RsDoQwordMemoryDescriptor (
> ASL_RESOURCE_INFO *Info);
>
> +ASL_RESOURCE_NODE *
> +RsDoQwordPccDescriptor (
> + ASL_RESOURCE_INFO *Info);
> +
> ASL_RESOURCE_NODE *
> RsDoQwordSpaceDescriptor (
> ASL_RESOURCE_INFO *Info);
> @@ -1625,6 +1632,10 @@ ASL_RESOURCE_NODE *
> RsDoWordIoDescriptor (
> ASL_RESOURCE_INFO *Info);
>
> +ASL_RESOURCE_NODE *
> +RsDoWordPccDescriptor (
> + ASL_RESOURCE_INFO *Info);
> +
> ASL_RESOURCE_NODE *
> RsDoWordSpaceDescriptor (
> ASL_RESOURCE_INFO *Info);
> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
> index 6345cdfb..25e2d9ab 100644
> --- a/src/acpica/source/compiler/aslcompiler.l
> +++ b/src/acpica/source/compiler/aslcompiler.l
> @@ -438,6 +438,7 @@ NamePathTail [.]{NameSeg}
> "DMA" { count (1); return (PARSEOP_DMA); }
> "DWordIO" { count (1); return (PARSEOP_DWORDIO); }
> "DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); }
> +"DWordPcc" { count (1); return (PARSEOP_DWORDPCC); }
> "DWordSpace" { count (1); return (PARSEOP_DWORDSPACE); }
> "EndDependentFn" { count (1); return (PARSEOP_ENDDEPENDENTFN); }
> "ExtendedIO" { count (1); return (PARSEOP_EXTENDEDIO); }
> @@ -464,6 +465,7 @@ NamePathTail [.]{NameSeg}
> "ClockInput" { count (1); return (PARSEOP_CLOCKINPUT); }
> "QWordIO" { count (1); return (PARSEOP_QWORDIO); }
> "QWordMemory" { count (1); return (PARSEOP_QWORDMEMORY); }
> +"QWordPcc" { count (1); return (PARSEOP_DWORDPCC); }
> "QWordSpace" { count (1); return (PARSEOP_QWORDSPACE); }
> "Register" { count (1); return (PARSEOP_REGISTER); }
> "SpiSerialBus" { count (1); return (PARSEOP_SPI_SERIALBUS); }
> @@ -476,6 +478,7 @@ NamePathTail [.]{NameSeg}
> "VendorShort" { count (1); return (PARSEOP_VENDORSHORT); }
> "WordBusNumber" { count (1); return (PARSEOP_WORDBUSNUMBER); }
> "WordIO" { count (1); return (PARSEOP_WORDIO); }
> +"WordPcc" { count (1); return (PARSEOP_DWORDPCC); }
> "WordSpace" { count (1); return (PARSEOP_WORDSPACE); }
>
>
> diff --git a/src/acpica/source/compiler/asldefine.h b/src/acpica/source/compiler/asldefine.h
> index 43673d37..ab08c5f4 100644
> --- a/src/acpica/source/compiler/asldefine.h
> +++ b/src/acpica/source/compiler/asldefine.h
> @@ -162,7 +162,7 @@
> #define ASL_CREATOR_ID "INTL"
> #define ASL_DEFINE "__IASL__"
> #define ASL_PREFIX "iASL: "
> -#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.3"
> +#define ASL_COMPLIANCE "Supports ACPI Specification Revision 6.5"
>
>
> /* Configuration constants */
> diff --git a/src/acpica/source/compiler/aslmap.c b/src/acpica/source/compiler/aslmap.c
> index 0ad71160..d3b9ecac 100644
> --- a/src/acpica/source/compiler/aslmap.c
> +++ b/src/acpica/source/compiler/aslmap.c
> @@ -319,6 +319,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* DWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_DWORD, 0, 0, ACPI_BTYPE_INTEGER),
> /* DWORDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* DWORDMEMORY */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> +/* DWORDPCC */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* DWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* EISAID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, 0, ACPI_BTYPE_INTEGER),
> /* ELSE */ OP_TABLE_ENTRY (AML_ELSE_OP, 0, OP_AML_PACKAGE, 0),
> @@ -473,6 +474,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* QWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER),
> /* QWORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* QWORDMEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* QWORDPCC */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* QWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* RANGE_TYPE_ENTIRE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0),
> /* RANGE_TYPE_ISAONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0),
> @@ -560,6 +562,7 @@ const ASL_MAPPING_ENTRY AslKeywordMapping [] =
> /* WORDBUSNUMBER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* WORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_WORD, 0, 0, ACPI_BTYPE_INTEGER),
> /* WORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> +/* WORDPCC */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0),
> /* WORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* XFERSIZE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> /* XFERSIZE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0),
> diff --git a/src/acpica/source/compiler/aslparseop.c b/src/acpica/source/compiler/aslparseop.c
> index 78a207f0..e415e101 100644
> --- a/src/acpica/source/compiler/aslparseop.c
> +++ b/src/acpica/source/compiler/aslparseop.c
> @@ -790,7 +790,7 @@ TrCreateConstantLeafOp (
>
> DbgPrint (ASL_PARSE_OUTPUT,
> "\nCreateConstantLeafOp Ln/Col %u/%u NewOp %p "
> - "Op %s Value %8.8X%8.8X \n",
> + "Op %s Value %8.8X%8.8X\n",
> Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName (ParseOpcode),
> ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer));
>
> diff --git a/src/acpica/source/compiler/aslparser.y b/src/acpica/source/compiler/aslparser.y
> index 19a34ea8..0161c6ca 100644
> --- a/src/acpica/source/compiler/aslparser.y
> +++ b/src/acpica/source/compiler/aslparser.y
> @@ -208,7 +208,7 @@ AslLocalAllocate (
> * These shift/reduce conflicts are expected. There should be zero
> * reduce/reduce conflicts.
> */
> -%expect 128
> +%expect 134
>
> /*! [Begin] no source code translation */
>
> diff --git a/src/acpica/source/compiler/aslresource.c b/src/acpica/source/compiler/aslresource.c
> index 0a24d608..4fed02ae 100644
> --- a/src/acpica/source/compiler/aslresource.c
> +++ b/src/acpica/source/compiler/aslresource.c
> @@ -788,6 +788,11 @@ RsDoOneResourceDescriptor (
> Rnode = RsDoDwordMemoryDescriptor (Info);
> break;
>
> + case PARSEOP_DWORDPCC:
> +
> + Rnode = RsDoDwordPccDescriptor (Info);
> + break;
> +
> case PARSEOP_DWORDSPACE:
>
> Rnode = RsDoDwordSpaceDescriptor (Info);
> @@ -889,6 +894,11 @@ RsDoOneResourceDescriptor (
> Rnode = RsDoQwordMemoryDescriptor (Info);
> break;
>
> + case PARSEOP_QWORDPCC:
> +
> + Rnode = RsDoQwordPccDescriptor (Info);
> + break;
> +
> case PARSEOP_QWORDSPACE:
>
> Rnode = RsDoQwordSpaceDescriptor (Info);
> @@ -963,6 +973,11 @@ RsDoOneResourceDescriptor (
> Rnode = RsDoWordIoDescriptor (Info);
> break;
>
> + case PARSEOP_WORDPCC:
> +
> + Rnode = RsDoWordPccDescriptor (Info);
> + break;
> +
> case PARSEOP_WORDSPACE:
>
> Rnode = RsDoWordSpaceDescriptor (Info);
> diff --git a/src/acpica/source/compiler/aslresources.y b/src/acpica/source/compiler/aslresources.y
> index 46ecfa25..16a70b90 100644
> --- a/src/acpica/source/compiler/aslresources.y
> +++ b/src/acpica/source/compiler/aslresources.y
> @@ -194,6 +194,7 @@ ResourceMacroTerm
> | DMATerm {}
> | DWordIOTerm {}
> | DWordMemoryTerm {}
> + | DWordPccTerm {}
> | DWordSpaceTerm {}
> | EndDependentFnTerm {}
> | ExtendedIOTerm {}
> @@ -220,6 +221,7 @@ ResourceMacroTerm
> | PinGroupFunctionTerm {}
> | QWordIOTerm {}
> | QWordMemoryTerm {}
> + | QWordPccTerm {}
> | QWordSpaceTerm {}
> | RegisterTerm {}
> | SpiSerialBusTerm {}
> @@ -232,6 +234,7 @@ ResourceMacroTerm
> | VendorShortTerm {}
> | WordBusNumberTerm {}
> | WordIOTerm {}
> + | WordPccTerm {}
> | WordSpaceTerm {}
> ;
>
> @@ -317,6 +320,20 @@ DWordMemoryTerm
> error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
> ;
>
> +DWordPccTerm
> + : PARSEOP_DWORDPCC
> + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDPCC);}
> + ByteConstExpr
> + OptionalByteConstExpr
> + OptionalStringData
> + OptionalNameString_Last
> + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,
> + $4,$5,$6,$7);}
> + | PARSEOP_DWORDPCC
> + PARSEOP_OPEN_PAREN
> + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
> + ;
> +
> DWordSpaceTerm
> : PARSEOP_DWORDSPACE
> PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_DWORDSPACE);}
> @@ -784,6 +801,20 @@ QWordMemoryTerm
> error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
> ;
>
> +QWordPccTerm
> + : PARSEOP_QWORDPCC
> + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDPCC);}
> + ByteConstExpr
> + OptionalByteConstExpr
> + OptionalStringData
> + OptionalNameString_Last
> + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,
> + $4,$5,$6,$7);}
> + | PARSEOP_QWORDPCC
> + PARSEOP_OPEN_PAREN
> + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
> + ;
> +
> QWordSpaceTerm
> : PARSEOP_QWORDSPACE
> PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_QWORDSPACE);}
> @@ -1012,6 +1043,20 @@ WordIOTerm
> error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
> ;
>
> +WordPccTerm
> + : PARSEOP_WORDPCC
> + PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WORDPCC);}
> + ByteConstExpr
> + OptionalByteConstExpr
> + OptionalStringData
> + OptionalNameString_Last
> + PARSEOP_CLOSE_PAREN {$$ = TrLinkOpChildren ($<n>3,4,
> + $4,$5,$6,$7);}
> + | PARSEOP_WORDPCC
> + PARSEOP_OPEN_PAREN
> + error PARSEOP_CLOSE_PAREN {$$ = AslDoError(); yyclearin;}
> + ;
> +
> WordSpaceTerm
> : PARSEOP_WORDSPACE
> PARSEOP_OPEN_PAREN {$<n>$ = TrCreateLeafOp (PARSEOP_WORDSPACE);}
> diff --git a/src/acpica/source/compiler/aslrestype2d.c b/src/acpica/source/compiler/aslrestype2d.c
> index e9efac18..b7eb085e 100644
> --- a/src/acpica/source/compiler/aslrestype2d.c
> +++ b/src/acpica/source/compiler/aslrestype2d.c
> @@ -158,11 +158,168 @@
> /*
> * This module contains the Dword (32-bit) address space descriptors:
> *
> + * DWordPcc
> * DwordIO
> * DwordMemory
> * DwordSpace
> */
>
> +
> +/*******************************************************************************
> + *
> + * FUNCTION: RsDoDwordPccDescriptor
> + *
> + * PARAMETERS: Info - Parse Op and resource template offset
> + *
> + * RETURN: Completed resource node
> + *
> + * DESCRIPTION: Construct a long "DWordPcc" descriptor
> + *
> + ******************************************************************************/
> +
> +ASL_RESOURCE_NODE *
> +RsDoDwordPccDescriptor (
> + ASL_RESOURCE_INFO *Info)
> +{
> + AML_RESOURCE *Descriptor;
> + ACPI_PARSE_OBJECT *InitializerOp;
> + ACPI_PARSE_OBJECT *MinOp = NULL;
> + ACPI_PARSE_OBJECT *MaxOp = NULL;
> + ACPI_PARSE_OBJECT *LengthOp = NULL;
> + ACPI_PARSE_OBJECT *GranOp = NULL;
> + ASL_RESOURCE_NODE *Rnode;
> + UINT16 StringLength = 0;
> + UINT32 OptionIndex = 0;
> + UINT8 *OptionalFields;
> + UINT32 i;
> + BOOLEAN ResSourceIndex = FALSE;
> +
> +
> + InitializerOp = Info->DescriptorTypeOp->Asl.Child;
> + StringLength = RsGetStringDataLength (InitializerOp);
> +
> + Rnode = RsAllocateResourceNode (
> + sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength);
> +
> + Descriptor = Rnode->Buffer;
> + Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32;
> + Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_PCC_NUMBER;
> +
> + /*
> + * Initial descriptor length -- may be enlarged if there are
> + * optional fields present
> + */
> + OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
> + Descriptor->Address32.ResourceLength = (UINT16)
> + (sizeof (AML_RESOURCE_ADDRESS32) -
> + sizeof (AML_RESOURCE_LARGE_HEADER));
> +
> +
> + /*
> + * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed)
> + * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed)
> + * Bit [1] Decode Type, _DEC: 0 (do not care)
> + * BIT [0] Ignored (must be zero)
> + */
> + Descriptor->Address32.Flags = 0b1100;
> +
> + // No type specific flags. Set to 0.
> + Descriptor->Address32.SpecificFlags = 0;
> +
> + // must be set to zero if _MAX == _MIN.
> + Descriptor->Address32.Granularity = 0x0;
> + /* Process all child initialization nodes */
> +
> + // No translation offset.
> + Descriptor->Address32.TranslationOffset = 0;
> +
> + // Pcc is unique address.
> + Descriptor->Address32.AddressLength = 1;
> +
> + for (i = 0; InitializerOp; i++)
> + {
> + switch (i)
> + {
> +
> + case 0: /* Address Min = Max */
> +
> + Descriptor->Address32.Minimum =
> + (UINT32) InitializerOp->Asl.Value.Integer;
> + Descriptor->Address32.Maximum =
> + (UINT32) InitializerOp->Asl.Value.Integer;
> +
> + break;
> +
> + case 1: /* ResSourceIndex [Optional Field - BYTE] */
> +
> + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
> + {
> + /* Found a valid ResourceSourceIndex */
> +
> + OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
> + OptionIndex++;
> + Descriptor->Address32.ResourceLength++;
> + ResSourceIndex = TRUE;
> + }
> + break;
> +
> + case 2: /* ResSource [Optional Field - STRING] */
> +
> + if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) &&
> + (InitializerOp->Asl.Value.String))
> + {
> + if (StringLength)
> + {
> + /* Found a valid ResourceSource */
> +
> + Descriptor->Address32.ResourceLength = (UINT16)
> + (Descriptor->Address32.ResourceLength + StringLength);
> +
> + strcpy ((char *)
> + &OptionalFields[OptionIndex],
> + InitializerOp->Asl.Value.String);
> +
> + /* ResourceSourceIndex must also be valid */
> +
> + if (!ResSourceIndex)
> + {
> + AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX,
> + InitializerOp, NULL);
> + }
> + }
> + }
> +
> + break;
> +
> + case 3: // DescriptorName
> + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
> + break;
> +
> + default:
> +
> + AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
> + break;
> + }
> +
> + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
> + }
> +
> + /* Validate the Min/Max/Len/Gran values */
> +
> + RsLargeAddressCheck (
> + (UINT64) Descriptor->Address32.Minimum,
> + (UINT64) Descriptor->Address32.Maximum,
> + (UINT64) Descriptor->Address32.AddressLength,
> + (UINT64) Descriptor->Address32.Granularity,
> + Descriptor->Address32.Flags,
> + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
> +
> + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
> + OptionIndex + StringLength;
> + return (Rnode);
> +}
> +
> +
> /*******************************************************************************
> *
> * FUNCTION: RsDoDwordIoDescriptor
> diff --git a/src/acpica/source/compiler/aslrestype2q.c b/src/acpica/source/compiler/aslrestype2q.c
> index 2f564499..1b0334f1 100644
> --- a/src/acpica/source/compiler/aslrestype2q.c
> +++ b/src/acpica/source/compiler/aslrestype2q.c
> @@ -160,6 +160,7 @@
> *
> * QWordIO
> * QWordMemory
> + * QwordPcc
> * QWordSpace
> */
>
> @@ -613,6 +614,161 @@ RsDoQwordMemoryDescriptor (
> }
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: RsDoQwordPccDescriptor
> + *
> + * PARAMETERS: Info - Parse Op and resource template offset
> + *
> + * RETURN: Completed resource node
> + *
> + * DESCRIPTION: Construct a long "QWordPcc" descriptor
> + *
> + ******************************************************************************/
> +
> +ASL_RESOURCE_NODE *
> +RsDoQwordPccDescriptor (
> + ASL_RESOURCE_INFO *Info)
> +{
> + AML_RESOURCE *Descriptor;
> + ACPI_PARSE_OBJECT *InitializerOp;
> + ACPI_PARSE_OBJECT *MinOp = NULL;
> + ACPI_PARSE_OBJECT *MaxOp = NULL;
> + ACPI_PARSE_OBJECT *LengthOp = NULL;
> + ACPI_PARSE_OBJECT *GranOp = NULL;
> + ASL_RESOURCE_NODE *Rnode;
> + UINT16 StringLength = 0;
> + UINT32 OptionIndex = 0;
> + UINT8 *OptionalFields;
> + UINT32 i;
> + BOOLEAN ResSourceIndex = FALSE;
> +
> +
> + InitializerOp = Info->DescriptorTypeOp->Asl.Child;
> + StringLength = RsGetStringDataLength (InitializerOp);
> +
> + Rnode = RsAllocateResourceNode (
> + sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength);
> +
> + Descriptor = Rnode->Buffer;
> + Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32;
> + Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_PCC_NUMBER;
> +
> + /*
> + * Initial descriptor length -- may be enlarged if there are
> + * optional fields present
> + */
> + OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
> + Descriptor->Address32.ResourceLength = (UINT16)
> + (sizeof (AML_RESOURCE_ADDRESS32) -
> + sizeof (AML_RESOURCE_LARGE_HEADER));
> +
> +
> + /*
> + * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed)
> + * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed)
> + * Bit [1] Decode Type, _DEC: 0 (do not care)
> + * BIT [0] Ignored (must be zero)
> + */
> + Descriptor->Address32.Flags = 0b1100;
> +
> + // No type specific flags. Set to 0.
> + Descriptor->Address32.SpecificFlags = 0;
> +
> + // must be set to zero if _MAX == _MIN.
> + Descriptor->Address32.Granularity = 0x0;
> + /* Process all child initialization nodes */
> +
> + // No translation offset.
> + Descriptor->Address32.TranslationOffset = 0;
> +
> + // Pcc is unique address.
> + Descriptor->Address32.AddressLength = 1;
> +
> + for (i = 0; InitializerOp; i++)
> + {
> + switch (i)
> + {
> +
> + case 0: /* Address Min = Max */
> +
> + Descriptor->Address32.Minimum =
> + (UINT32) InitializerOp->Asl.Value.Integer;
> + Descriptor->Address32.Maximum =
> + (UINT32) InitializerOp->Asl.Value.Integer;
> +
> + break;
> +
> + case 1: /* ResSourceIndex [Optional Field - BYTE] */
> +
> + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
> + {
> + /* Found a valid ResourceSourceIndex */
> +
> + OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
> + OptionIndex++;
> + Descriptor->Address32.ResourceLength++;
> + ResSourceIndex = TRUE;
> + }
> + break;
> +
> + case 2: /* ResSource [Optional Field - STRING] */
> +
> + if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) &&
> + (InitializerOp->Asl.Value.String))
> + {
> + if (StringLength)
> + {
> + /* Found a valid ResourceSource */
> +
> + Descriptor->Address32.ResourceLength = (UINT16)
> + (Descriptor->Address32.ResourceLength + StringLength);
> +
> + strcpy ((char *)
> + &OptionalFields[OptionIndex],
> + InitializerOp->Asl.Value.String);
> +
> + /* ResourceSourceIndex must also be valid */
> +
> + if (!ResSourceIndex)
> + {
> + AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX,
> + InitializerOp, NULL);
> + }
> + }
> + }
> +
> + break;
> +
> + case 3: // DescriptorName
> + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
> + break;
> +
> + default:
> +
> + AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
> + break;
> + }
> +
> + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
> + }
> +
> + /* Validate the Min/Max/Len/Gran values */
> +
> + RsLargeAddressCheck (
> + (UINT64) Descriptor->Address32.Minimum,
> + (UINT64) Descriptor->Address32.Maximum,
> + (UINT64) Descriptor->Address32.AddressLength,
> + (UINT64) Descriptor->Address32.Granularity,
> + Descriptor->Address32.Flags,
> + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
> +
> + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
> + OptionIndex + StringLength;
> + return (Rnode);
> +}
> +
> +
> /*******************************************************************************
> *
> * FUNCTION: RsDoQwordSpaceDescriptor
> diff --git a/src/acpica/source/compiler/aslrestype2w.c b/src/acpica/source/compiler/aslrestype2w.c
> index f7ff8f81..1173b676 100644
> --- a/src/acpica/source/compiler/aslrestype2w.c
> +++ b/src/acpica/source/compiler/aslrestype2w.c
> @@ -160,6 +160,7 @@
> *
> * WordIO
> * WordMemory
> + * WordPcc
> * WordSpace
> */
>
> @@ -589,6 +590,161 @@ RsDoWordBusNumberDescriptor (
> }
>
>
> +/*******************************************************************************
> + *
> + * FUNCTION: RsDoWordPccDescriptor
> + *
> + * PARAMETERS: Info - Parse Op and resource template offset
> + *
> + * RETURN: Completed resource node
> + *
> + * DESCRIPTION: Construct a long "WordPcc" descriptor
> + *
> + ******************************************************************************/
> +
> +ASL_RESOURCE_NODE *
> +RsDoWordPccDescriptor (
> + ASL_RESOURCE_INFO *Info)
> +{
> + AML_RESOURCE *Descriptor;
> + ACPI_PARSE_OBJECT *InitializerOp;
> + ACPI_PARSE_OBJECT *MinOp = NULL;
> + ACPI_PARSE_OBJECT *MaxOp = NULL;
> + ACPI_PARSE_OBJECT *LengthOp = NULL;
> + ACPI_PARSE_OBJECT *GranOp = NULL;
> + ASL_RESOURCE_NODE *Rnode;
> + UINT16 StringLength = 0;
> + UINT32 OptionIndex = 0;
> + UINT8 *OptionalFields;
> + UINT32 i;
> + BOOLEAN ResSourceIndex = FALSE;
> +
> +
> + InitializerOp = Info->DescriptorTypeOp->Asl.Child;
> + StringLength = RsGetStringDataLength (InitializerOp);
> +
> + Rnode = RsAllocateResourceNode (
> + sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength);
> +
> + Descriptor = Rnode->Buffer;
> + Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32;
> + Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_PCC_NUMBER;
> +
> + /*
> + * Initial descriptor length -- may be enlarged if there are
> + * optional fields present
> + */
> + OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32);
> + Descriptor->Address32.ResourceLength = (UINT16)
> + (sizeof (AML_RESOURCE_ADDRESS32) -
> + sizeof (AML_RESOURCE_LARGE_HEADER));
> +
> +
> + /*
> + * Bit [3] Max Address Fixed, _MAF: 1 (max address is fixed)
> + * Bit [2] Min Address Fixed,_MIF: 1 (min address is fixed)
> + * Bit [1] Decode Type, _DEC: 0 (do not care)
> + * BIT [0] Ignored (must be zero)
> + */
> + Descriptor->Address32.Flags = 0b1100;
> +
> + // No type specific flags. Set to 0.
> + Descriptor->Address32.SpecificFlags = 0;
> +
> + // must be set to zero if _MAX == _MIN.
> + Descriptor->Address32.Granularity = 0x0;
> + /* Process all child initialization nodes */
> +
> + // No translation offset.
> + Descriptor->Address32.TranslationOffset = 0;
> +
> + // Pcc is unique address.
> + Descriptor->Address32.AddressLength = 1;
> +
> + for (i = 0; InitializerOp; i++)
> + {
> + switch (i)
> + {
> +
> + case 0: /* Address Min = Max */
> +
> + Descriptor->Address32.Minimum =
> + (UINT32) InitializerOp->Asl.Value.Integer;
> + Descriptor->Address32.Maximum =
> + (UINT32) InitializerOp->Asl.Value.Integer;
> +
> + break;
> +
> + case 1: /* ResSourceIndex [Optional Field - BYTE] */
> +
> + if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)
> + {
> + /* Found a valid ResourceSourceIndex */
> +
> + OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer;
> + OptionIndex++;
> + Descriptor->Address32.ResourceLength++;
> + ResSourceIndex = TRUE;
> + }
> + break;
> +
> + case 2: /* ResSource [Optional Field - STRING] */
> +
> + if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) &&
> + (InitializerOp->Asl.Value.String))
> + {
> + if (StringLength)
> + {
> + /* Found a valid ResourceSource */
> +
> + Descriptor->Address32.ResourceLength = (UINT16)
> + (Descriptor->Address32.ResourceLength + StringLength);
> +
> + strcpy ((char *)
> + &OptionalFields[OptionIndex],
> + InitializerOp->Asl.Value.String);
> +
> + /* ResourceSourceIndex must also be valid */
> +
> + if (!ResSourceIndex)
> + {
> + AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX,
> + InitializerOp, NULL);
> + }
> + }
> + }
> +
> + break;
> +
> + case 3: // DescriptorName
> + UtAttachNamepathToOwner (Info->DescriptorTypeOp, InitializerOp);
> + break;
> +
> + default:
> +
> + AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL);
> + break;
> + }
> +
> + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
> + }
> +
> + /* Validate the Min/Max/Len/Gran values */
> +
> + RsLargeAddressCheck (
> + (UINT64) Descriptor->Address32.Minimum,
> + (UINT64) Descriptor->Address32.Maximum,
> + (UINT64) Descriptor->Address32.AddressLength,
> + (UINT64) Descriptor->Address32.Granularity,
> + Descriptor->Address32.Flags,
> + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
> +
> + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
> + OptionIndex + StringLength;
> + return (Rnode);
> +}
> +
> +
> /*******************************************************************************
> *
> * FUNCTION: RsDoWordSpaceDescriptor
> diff --git a/src/acpica/source/compiler/asltokens.y b/src/acpica/source/compiler/asltokens.y
> index e47bdb79..b7a4c2d9 100644
> --- a/src/acpica/source/compiler/asltokens.y
> +++ b/src/acpica/source/compiler/asltokens.y
> @@ -256,6 +256,7 @@ NoEcho('
> %token <i> PARSEOP_DWORDCONST
> %token <i> PARSEOP_DWORDIO
> %token <i> PARSEOP_DWORDMEMORY
> +%token <i> PARSEOP_DWORDPCC
> %token <i> PARSEOP_DWORDSPACE
> %token <i> PARSEOP_EISAID
> %token <i> PARSEOP_ELSE
> @@ -410,6 +411,7 @@ NoEcho('
> %token <i> PARSEOP_QWORDCONST
> %token <i> PARSEOP_QWORDIO
> %token <i> PARSEOP_QWORDMEMORY
> +%token <i> PARSEOP_QWORDPCC
> %token <i> PARSEOP_QWORDSPACE
> %token <i> PARSEOP_RANGETYPE_ENTIRE
> %token <i> PARSEOP_RANGETYPE_ISAONLY
> @@ -497,6 +499,7 @@ NoEcho('
> %token <i> PARSEOP_WORDBUSNUMBER
> %token <i> PARSEOP_WORDCONST
> %token <i> PARSEOP_WORDIO
> +%token <i> PARSEOP_WORDPCC
> %token <i> PARSEOP_WORDSPACE
> %token <i> PARSEOP_XFERSIZE_8
> %token <i> PARSEOP_XFERSIZE_16
> diff --git a/src/acpica/source/compiler/asltypes.y b/src/acpica/source/compiler/asltypes.y
> index 920cdf51..5e104d82 100644
> --- a/src/acpica/source/compiler/asltypes.y
> +++ b/src/acpica/source/compiler/asltypes.y
> @@ -419,6 +419,7 @@ NoEcho('
> %type <n> DMATerm
> %type <n> DWordIOTerm
> %type <n> DWordMemoryTerm
> +%type <n> DWordPccTerm
> %type <n> DWordSpaceTerm
> %type <n> EndDependentFnTerm
> %type <n> ExtendedIOTerm
> @@ -446,6 +447,7 @@ NoEcho('
> %type <n> PinGroupFunctionTerm
> %type <n> QWordIOTerm
> %type <n> QWordMemoryTerm
> +%type <n> QWordPccTerm
> %type <n> QWordSpaceTerm
> %type <n> RegisterTerm
> %type <n> SpiSerialBusTerm
> @@ -458,6 +460,7 @@ NoEcho('
> %type <n> VendorShortTerm
> %type <n> WordBusNumberTerm
> %type <n> WordIOTerm
> +%type <n> WordPccTerm
> %type <n> WordSpaceTerm
>
> /* Local types that help construct the AML, not in ACPI spec */
> diff --git a/src/acpica/source/compiler/dtfield.c b/src/acpica/source/compiler/dtfield.c
> index dc63a4e8..7d1df16b 100644
> --- a/src/acpica/source/compiler/dtfield.c
> +++ b/src/acpica/source/compiler/dtfield.c
> @@ -281,8 +281,8 @@ DtCompileString (
> if (Length > ByteLength)
> {
> sprintf (AslGbl_MsgBuffer,
> - "Maximum %u characters, found %u characters [%s]",
> - ByteLength, Length, Field->Value);
> + "Maximum %u characters, found %u characters [%.*s]",
> + ByteLength, Length, (ASL_MSG_BUFFER_SIZE / 2), Field->Value);
> DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, AslGbl_MsgBuffer);
> Length = ByteLength;
> }
> diff --git a/src/acpica/source/compiler/dttable1.c b/src/acpica/source/compiler/dttable1.c
> index 998bda33..0f68f61e 100644
> --- a/src/acpica/source/compiler/dttable1.c
> +++ b/src/acpica/source/compiler/dttable1.c
> @@ -206,7 +206,14 @@ DtCompileAest (
> UINT32 i;
> UINT32 Offset;
> DT_FIELD **PFieldList = (DT_FIELD **) List;
> + ACPI_AEST_NODE_INTERFACE_HEADER *AestNodeHeader;
> + UINT8 Revision;
> + ACPI_TABLE_HEADER *Header;
>
> + ParentTable = DtPeekSubtable ();
> +
> + Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
> + Revision = Header->Revision;
>
> while (*PFieldList)
> {
> @@ -257,8 +264,21 @@ DtCompileAest (
> break;
>
> case ACPI_AEST_VENDOR_ERROR_NODE:
> + switch (Revision)
> + {
> + case 1:
> + InfoTable = AcpiDmTableInfoAestVendorError;
> + break;
>
> - InfoTable = AcpiDmTableInfoAestVendorError;
> + case 2:
> + InfoTable = AcpiDmTableInfoAestVendorV2Error;
> + break;
> +
> + default:
> + AcpiOsPrintf ("Unknown AEST Vendor Error Revision: %X\n",
> + Revision);
> + return (AE_ERROR);
> + }
> break;
>
> case ACPI_AEST_GIC_ERROR_NODE:
> @@ -266,6 +286,16 @@ DtCompileAest (
> InfoTable = AcpiDmTableInfoAestGicError;
> break;
>
> + case ACPI_AEST_PCIE_ERROR_NODE:
> +
> + InfoTable = AcpiDmTableInfoAestPCIeError;
> + break;
> +
> + case ACPI_AEST_PROXY_ERROR_NODE:
> +
> + InfoTable = AcpiDmTableInfoAestProxyError;
> + break;
> +
> /* Error case below */
> default:
> AcpiOsPrintf ("Unknown AEST Subtable Type: %X\n",
> @@ -341,9 +371,57 @@ DtCompileAest (
> }
>
> /* Compile the (required) node interface structure */
> + if (Revision == 1)
> + {
> + InfoTable = AcpiDmTableInfoAestXface;
> + }
> + else if (Revision == 2)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXfaceHeader,
> + &Subtable);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
>
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXface,
> - &Subtable);
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable);
> +
> + Offset += Subtable->Length;
> +
> + AestNodeHeader = ACPI_CAST_PTR (ACPI_AEST_NODE_INTERFACE_HEADER,
> + Subtable->Buffer);
> +
> + switch (AestNodeHeader->GroupFormat)
> + {
> + case ACPI_AEST_NODE_GROUP_FORMAT_4K:
> +
> + InfoTable = AcpiDmTableInfoAestXface4k;
> + break;
> +
> + case ACPI_AEST_NODE_GROUP_FORMAT_16K:
> +
> + InfoTable = AcpiDmTableInfoAestXface16k;
> + break;
> +
> + case ACPI_AEST_NODE_GROUP_FORMAT_64K:
> +
> + InfoTable = AcpiDmTableInfoAestXface64k;
> + break;
> +
> + /* Error case below */
> + default:
> + AcpiOsPrintf ("Unknown AEST Interface Group Format: %X\n",
> + AestNodeHeader->GroupFormat);
> + return (AE_ERROR);
> + }
> + }
> + else
> + {
> + AcpiOsPrintf ("Unknown AEST Revision: %X\n", Revision);
> + }
> +
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -367,8 +445,22 @@ DtCompileAest (
>
> for (i = 0; i < ErrorNodeHeader->NodeInterruptCount; i++)
> {
> - Status = DtCompileTable (PFieldList, AcpiDmTableInfoAestXrupt,
> - &Subtable);
> + switch (Revision) {
> + case 1:
> +
> + InfoTable = AcpiDmTableInfoAestXrupt;
> + break;
> +
> + case 2:
> +
> + InfoTable = AcpiDmTableInfoAestXruptV2;
> + break;
> +
> + default:
> + AcpiOsPrintf ("Unknown AEST Revision: %X\n", Revision);
> + return (AE_ERROR);
> + }
> + Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
> if (ACPI_FAILURE (Status))
> {
> return (Status);
> @@ -974,6 +1066,53 @@ DtCompileCedt (
> ParentTable = DtPeekSubtable ();
> break;
> }
> + case ACPI_CEDT_TYPE_CXIMS: {
> + unsigned char *dump;
> + unsigned int idx, offset, max = 0;
> +
> + /* Compile table with first "Xor map" */
> +
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt2, &Subtable);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> +
> + /* Look in buffer for the number of Xor maps */
> + offset = (unsigned int) ACPI_OFFSET (ACPI_CEDT_CXIMS, NrXormaps);
> + dump = (unsigned char *) Subtable->Buffer - 4; /* place at beginning of cedt2 */
> + max = dump[offset];
> +
> + /* We need to add more XOR maps, so write the current Subtable. */
> +
> + ParentTable = DtPeekSubtable ();
> + DtInsertSubtable (ParentTable, Subtable); /* Insert AcpiDmTableInfoCedt2 table so we can put in */
> + DtPushSubtable (Subtable);
> +
> + /* Now, find out all Xor maps beyond the first. */
> +
> + for (idx = 1; idx < max; idx++) {
> + ParentTable = DtPeekSubtable ();
> +
> + if (*PFieldList)
> + {
> + Status = DtCompileTable (PFieldList, AcpiDmTableInfoCedt2_te, &Subtable);
> + if (ACPI_FAILURE (Status))
> + {
> + return (Status);
> + }
> + if (Subtable)
> + {
> + DtInsertSubtable (ParentTable, Subtable); /* got an Xor map, so insert table. */
> + InsertFlag = 0;
> + }
> + }
> + }
> +
> + DtPopSubtable ();
> + ParentTable = DtPeekSubtable ();
> + break;
> + }
>
> default:
> DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "CEDT");
> diff --git a/src/acpica/source/compiler/dttable2.c b/src/acpica/source/compiler/dttable2.c
> index 5fd92287..39418729 100644
> --- a/src/acpica/source/compiler/dttable2.c
> +++ b/src/acpica/source/compiler/dttable2.c
> @@ -550,7 +550,7 @@ DtCompileMpam (
> RisLength = 0;
>
> /* Iterate over RIS subtables per MSC node */
> - for (UINT32 ris = 0; ris < MpamMscNode->NumResouceNodes; ris++)
> + for (UINT32 ris = 0; ris < MpamMscNode->NumResourceNodes; ris++)
> {
> /* Compile RIS subtable */
> Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpam1,
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index 62b610b3..9e1a8cca 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -157,13 +157,13 @@
>
> const unsigned char TemplateAest[] =
> {
> - 0x41,0x45,0x53,0x54,0xCC,0x02,0x00,0x00, /* 00000000 "AEST...." */
> - 0x01,0x2A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".*INTEL " */
> + 0x41,0x45,0x53,0x54,0x90,0x03,0x00,0x00, /* 00000000 "AEST...." */
> + 0x02,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
> 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> - 0x04,0x06,0x21,0x20,0x00,0x80,0x00,0x00, /* 00000020 "..! ...." */
> + 0x28,0x06,0x23,0x20,0x00,0xA0,0x00,0x00, /* 00000020 "(.# ...." */
> 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 00000028 ",...D..." */
> - 0x74,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "t......." */
> + 0x94,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */
> 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000038 "....gE#." */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */
> @@ -177,76 +177,100 @@ const unsigned char TemplateAest[] =
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */
> 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000090 "........" */
> 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 00000098 ".......x" */
> - 0x56,0x00,0x00,0x00,0x00,0x74,0x00,0x00, /* 000000A0 "V....t.." */
> - 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 000000A8 ",...D..." */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */
> - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000B8 "....gE#." */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */
> - 0x11,0x11,0x00,0x00,0x01,0x00,0x01,0x00, /* 000000D0 "........" */
> - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000D8 "....gE#." */
> - 0x67,0x67,0x67,0x67,0x00,0x00,0x00,0x00, /* 000000E0 "gggg...." */
> - 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000E8 "........" */
> - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000F0 "....gE#." */
> - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000F8 "........" */
> - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */
> - 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000110 "........" */
> - 0x01,0x60,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000118 ".`..,..." */
> - 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "0......." */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000a0 "....gE#." */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000a8 "....gE#." */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000b0 "....gE#." */
> + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 000000b8 ".......x" */
> + 0x00,0x00,0x00,0x00,0x00,0x94,0x00,0x00, /* 000000c0 "........" */
> + 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 000000c8 ",...D..." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000d0 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000d8 "....gE#." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000e0 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000e8 "........" */
> + 0x11,0x11,0x00,0x00,0x01,0x00,0x01,0x00, /* 000000f0 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000000f8 "....gE#." */
> + 0x67,0x67,0x67,0x67,0x00,0x00,0x00,0x00, /* 00000100 "gggg...." */
> + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000108 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000110 "....gE#." */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000118 "........" */
> + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */
> - 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000138 "........" */
> - 0x67,0x45,0x23,0x01,0xAA,0xAA,0x00,0x00, /* 00000140 "gE#....." */
> - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000148 "........" */
> + 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000130 "........" */
> + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 00000138 ".......x" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000140 "....gE#." */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000148 "....gE#." */
> 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000150 "....gE#." */
> - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000158 "........" */
> - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */
> + 0x01,0x80,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000158 "....,..." */
> + 0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "0......." */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000168 "........" */
> - 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000170 "........" */
> - 0x02,0x64,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000178 ".d..,..." */
> - 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "4......." */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000188 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000190 "........" */
> - 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000198 "........" */
> - 0x67,0x45,0x23,0x01,0x55,0x55,0x55,0x55, /* 000001A0 "gE#.UUUU" */
> - 0x66,0x66,0x66,0x66,0x01,0x00,0x00,0x00, /* 000001A8 "ffff...." */
> - 0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 000001B0 "........" */
> - 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 000001B8 "gE#....." */
> - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000001C0 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "........" */
> - 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 000001D0 "........" */
> - 0x00,0x00,0x00,0x00,0x03,0x74,0x00,0x00, /* 000001D8 ".....t.." */
> - 0x2C,0x00,0x00,0x00,0x44,0x00,0x00,0x00, /* 000001E0 ",...D..." */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F0 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */
> - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000200 "....gE#." */
> - 0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, /* 00000208 "3333DDDD" */
> - 0x12,0x23,0x34,0x45,0x56,0x67,0x78,0x89, /* 00000210 ".#4EVgx." */
> - 0x9A,0xAB,0xBC,0xCD,0xDE,0xEF,0xFF,0x55, /* 00000218 ".......U" */
> - 0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000220 "........" */
> - 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000228 "....gE#." */
> - 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000230 "........" */
> - 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000238 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000240 "........" */
> - 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000248 "........" */
> - 0x04,0x7C,0x00,0x00,0x2C,0x00,0x00,0x00, /* 00000250 ".|..,..." */
> - 0x34,0x00,0x00,0x00,0x64,0x00,0x00,0x00, /* 00000258 "4...d..." */
> - 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000260 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000170 "........" */
> + 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000178 "........" */
> + 0x67,0x45,0x23,0x01,0xAA,0xAA,0x00,0x00, /* 00000180 "gE#....." */
> + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000188 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000190 "....gE#." */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000198 "........" */
> + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001a0 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001a8 "........" */
> + 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 000001b0 "........" */
> + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 000001b8 ".......x" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000001c0 "....gE#." */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 000001c8 "....gE#." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001d0 "........" */
> + 0x02,0x84,0x00,0x00,0x2C,0x00,0x00,0x00, /* 000001d8 "....,..." */
> + 0x34,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001e0 "4......." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001e8 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001f0 "........" */
> + 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 000001f8 "........" */
> + 0x67,0x45,0x23,0x01,0x55,0x55,0x55,0x55, /* 00000200 "gE#.UUUU" */
> + 0x66,0x66,0x66,0x66,0x01,0x00,0x00,0x00, /* 00000208 "ffff...." */
> + 0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000210 "........" */
> + 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 00000218 "gE#....." */
> + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000220 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */
> + 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 00000230 "........" */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000238 "........" */
> + 0xEF,0xCD,0xAB,0x78,0xEF,0xCD,0xAB,0x89, /* 00000240 "...x...." */
> + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 00000248 "gE#....." */
> + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 00000250 "gE#....." */
> + 0x67,0x45,0x23,0x01,0x03,0x98,0x00,0x00, /* 00000258 "gE#....." */
> + 0x2C,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000260 ",...H..." */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000268 "........" */
> - 0x00,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000270 "........" */
> - 0x67,0x45,0x23,0x01,0x03,0x00,0x00,0x00, /* 00000278 "gE#....." */
> - 0x88,0x88,0x77,0x77,0x00,0x00,0x00,0x00, /* 00000280 "..ww...." */
> - 0x03,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 00000288 "........" */
> - 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 00000290 "gE#....." */
> - 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000298 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002A0 "........" */
> - 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 000002A8 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002B0 "........" */
> - 0xBB,0xBB,0xAA,0xAA,0xCC,0x00,0x00,0x00, /* 000002B8 "........" */
> - 0x01,0x00,0x00,0x01,0xEF,0xCD,0xAB,0x78, /* 000002C0 ".......x" */
> - 0x56,0x00,0x00,0x00 /* 000002C8 "V..." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000270 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000278 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000280 "....gE#." */
> + 0x33,0x33,0x33,0x33,0x22,0x22,0x22,0x22, /* 00000288 "3333""""" */
> + 0x44,0x44,0x44,0x44,0x12,0x23,0x34,0x45, /* 00000290 "DDDD.#4E" */
> + 0x56,0x67,0x78,0x89,0x9A,0xAB,0xBC,0xCD, /* 00000298 "Vgx....." */
> + 0xDE,0xEF,0xFF,0x55,0x01,0x00,0x00,0x00, /* 000002a0 "...U...." */
> + 0x02,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x89, /* 000002a8 "........" */
> + 0x67,0x45,0x23,0x01,0x00,0x00,0x00,0x00, /* 000002b0 "gE#....." */
> + 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000002b8 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000002c0 "........" */
> + 0x00,0x00,0x00,0x00,0x11,0x11,0x11,0x01, /* 000002c8 "........" */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000002d0 "........" */
> + 0xEF,0xCD,0xAB,0x78,0xEF,0xCD,0xAB,0x89, /* 000002d8 "...x...." */
> + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 000002e0 "gE#....." */
> + 0x67,0x45,0x23,0x01,0xEF,0xCD,0xAB,0x89, /* 000002e8 "gE#....." */
> + 0x67,0x45,0x23,0x01,0x04,0x9C,0x00,0x00, /* 000002f0 "gE#....." */
> + 0x2C,0x00,0x00,0x00,0x34,0x00,0x00,0x00, /* 000002f8 ",...4..." */
> + 0x84,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000300 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000308 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000310 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000318 "....gE#." */
> + 0x03,0x00,0x00,0x00,0x88,0x88,0x77,0x77, /* 00000320 "......ww" */
> + 0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000328 "........" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000330 "....gE#." */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000338 "........" */
> + 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000340 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000348 "........" */
> + 0x11,0x11,0x11,0x01,0x00,0x00,0x00,0x00, /* 00000350 "........" */
> + 0x01,0x00,0x00,0x00,0xEF,0xCD,0xAB,0x78, /* 00000358 ".......x" */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000360 "....gE#." */
> + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000368 "....gE#." */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000370 "........" */
> + 0x00,0x00,0x00,0x00,0xBB,0xBB,0xAA,0xAA, /* 00000378 "........" */
> + 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x01, /* 00000380 "........" */
> + 0xEF,0xCD,0xAB,0x78,0x00,0x00,0x00,0x00, /* 00000388 "...x...." */
> };
>
> const unsigned char TemplateAgdi[] =
> @@ -1252,10 +1276,10 @@ const unsigned char TemplateMsdm[] =
> const unsigned char TemplateMpam[] =
> {
> 0x4D,0x50,0x41,0x4D,0xFC,0x00,0x00,0x00, /* 00000000 "MPAM...." */
> - 0x02,0x34,0x48,0x49,0x53,0x49,0x20,0x20, /* 00000008 ".4HISI " */
> + 0x02,0x35,0x48,0x49,0x53,0x49,0x20,0x20, /* 00000008 ".5HISI " */
> 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> 0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> - 0x20,0x10,0x22,0x20,0x60,0x00,0x00,0x00, /* 00000020 " ." `..." */
> + 0x28,0x06,0x23,0x20,0x60,0x00,0x00,0x00, /* 00000020 "(.# `..." */
> 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0, /* 00000028 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000030 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> @@ -1896,8 +1920,8 @@ const unsigned char TemplateSlit[] =
>
> const unsigned char TemplateSpcr[] =
> {
> - 0x53,0x50,0x43,0x52,0x50,0x00,0x00,0x00, /* 00000000 "SPCRP..." */
> - 0x01,0xE3,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> + 0x53,0x50,0x43,0x52,0x5A,0x00,0x00,0x00, /* 00000000 "SPCRZ..." */
> + 0x04,0x4E,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
> 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
> 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
> 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */
> @@ -1905,7 +1929,9 @@ const unsigned char TemplateSpcr[] =
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
> 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
> - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000048 "........" */
> + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */
> + 0x00,0x00,0x00,0x00,0x02,0x00,0x58,0x00, /* 00000050 "......X." */
> + 0x2E,0x00 /* 00000058 ".." */
> };
>
> const unsigned char TemplateSpmi[] =
> diff --git a/src/acpica/source/compiler/dtutils.c b/src/acpica/source/compiler/dtutils.c
> index 82a51cb8..a3dcb507 100644
> --- a/src/acpica/source/compiler/dtutils.c
> +++ b/src/acpica/source/compiler/dtutils.c
> @@ -439,6 +439,8 @@ DtGetFieldType (
> case ACPI_DMT_BUF12:
> case ACPI_DMT_BUF16:
> case ACPI_DMT_BUF18:
> + case ACPI_DMT_BUF32:
> + case ACPI_DMT_BUF112:
> case ACPI_DMT_BUF128:
> case ACPI_DMT_PCI_PATH:
> case ACPI_DMT_PMTT_VENDOR:
> @@ -746,6 +748,16 @@ DtGetFieldLength (
> ByteLength = 18;
> break;
>
> + case ACPI_DMT_BUF32:
> +
> + ByteLength = 32;
> + break;
> +
> + case ACPI_DMT_BUF112:
> +
> + ByteLength = 112;
> + break;
> +
> case ACPI_DMT_BUF128:
>
> ByteLength = 128;
> diff --git a/src/acpica/source/compiler/prmacros.c b/src/acpica/source/compiler/prmacros.c
> index f3368de5..4610ccc2 100644
> --- a/src/acpica/source/compiler/prmacros.c
> +++ b/src/acpica/source/compiler/prmacros.c
> @@ -455,7 +455,7 @@ PrAddMacro (
> }
>
> DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> - "Macro param: %s \n",
> + "Macro param: %s\n",
> AslGbl_CurrentLineNumber, Token);
>
> Args[i].Name = UtLocalCalloc (strlen (Token) + 1);
> @@ -497,7 +497,7 @@ PrAddMacro (
>
>
> DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> - "Macro Arg #%u: %s UseCount %u Offset %u \n",
> + "Macro Arg #%u: %s UseCount %u Offset %u\n",
> AslGbl_CurrentLineNumber, i, Token,
> UseCount+1, Args[i].Offset[UseCount]);
>
> @@ -544,7 +544,7 @@ AddMacroToList:
> }
>
> DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> - "Macro body: %s \n",
> + "Macro body: %s\n",
> AslGbl_CurrentLineNumber, BodyInSource);
>
> /* Add macro to the #define list */
> @@ -668,7 +668,7 @@ PrDoMacroInvocation (
> PrReplaceResizeSubstring (Args, Diff1, Diff2, i, Token);
>
> DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> - "ExpandArg: %s \n",
> + "ExpandArg: %s\n",
> AslGbl_CurrentLineNumber, AslGbl_MacroTokenBuffer);
> }
>
> @@ -696,7 +696,7 @@ BadInvocation:
> THIS_TOKEN_OFFSET (MacroStart));
>
> DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID
> - "Bad macro invocation: %s \n",
> + "Bad macro invocation: %s\n",
> AslGbl_CurrentLineNumber, AslGbl_MacroTokenBuffer);
> return;
> }
> diff --git a/src/acpica/source/components/debugger/dbconvert.c b/src/acpica/source/components/debugger/dbconvert.c
> index 6a410000..32ad5be1 100644
> --- a/src/acpica/source/components/debugger/dbconvert.c
> +++ b/src/acpica/source/components/debugger/dbconvert.c
> @@ -354,6 +354,8 @@ AcpiDbConvertToPackage (
>
> Elements = ACPI_ALLOCATE_ZEROED (
> DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT));
> + if (!Elements)
> + return (AE_NO_MEMORY);
>
> This = String;
> for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++)
> diff --git a/src/acpica/source/components/disassembler/dmwalk.c b/src/acpica/source/components/disassembler/dmwalk.c
> index 90e4a06c..a4d18cad 100644
> --- a/src/acpica/source/components/disassembler/dmwalk.c
> +++ b/src/acpica/source/components/disassembler/dmwalk.c
> @@ -969,8 +969,6 @@ AcpiDmDescendingOp (
> AcpiDmPredefinedDescription (Op->Asl.Parent);
> }
>
> - AcpiDmPredefinedDescription (Op->Asl.Parent);
> -
> AcpiOsPrintf ("\n");
> AcpiDmIndent (Info->Level);
> AcpiOsPrintf ("{\n");
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index ec38892b..360f16cc 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -165,7 +165,8 @@ AcpiExConvertToAscii (
> UINT64 Integer,
> UINT16 Base,
> UINT8 *String,
> - UINT8 MaxLength);
> + UINT8 MaxLength,
> + BOOLEAN LeadingZeros);
>
>
> /*******************************************************************************
> @@ -412,6 +413,7 @@ AcpiExConvertToBuffer (
> * Base - ACPI_STRING_DECIMAL or ACPI_STRING_HEX
> * String - Where the string is returned
> * DataWidth - Size of data item to be converted, in bytes
> + * LeadingZeros - Allow leading zeros
> *
> * RETURN: Actual string length
> *
> @@ -424,7 +426,8 @@ AcpiExConvertToAscii (
> UINT64 Integer,
> UINT16 Base,
> UINT8 *String,
> - UINT8 DataWidth)
> + UINT8 DataWidth,
> + BOOLEAN LeadingZeros)
> {
> UINT64 Digit;
> UINT32 i;
> @@ -433,7 +436,8 @@ AcpiExConvertToAscii (
> UINT32 HexLength;
> UINT32 DecimalLength;
> UINT32 Remainder;
> - BOOLEAN SupressZeros;
> + BOOLEAN SupressZeros = !LeadingZeros;
> + UINT8 HexChar;
>
>
> ACPI_FUNCTION_ENTRY ();
> @@ -464,7 +468,6 @@ AcpiExConvertToAscii (
> break;
> }
>
> - SupressZeros = TRUE; /* No leading zeros */
> Remainder = 0;
>
> for (i = DecimalLength; i > 0; i--)
> @@ -501,8 +504,18 @@ AcpiExConvertToAscii (
> {
> /* Get one hex digit, most significant digits first */
>
> - String[k] = (UINT8)
> + HexChar = (UINT8)
> AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j));
> +
> + /* Supress leading zeros until the first non-zero character */
> +
> + if (HexChar == ACPI_ASCII_ZERO && SupressZeros)
> + {
> + continue;
> + }
> +
> + SupressZeros = FALSE;
> + String[k] = HexChar;
> k++;
> }
> break;
> @@ -556,6 +569,7 @@ AcpiExConvertToString (
> UINT32 StringLength = 0;
> UINT16 Base = 16;
> UINT8 Separator = ',';
> + BOOLEAN LeadingZeros;
>
>
> ACPI_FUNCTION_TRACE_PTR (ExConvertToString, ObjDesc);
> @@ -581,14 +595,25 @@ AcpiExConvertToString (
> * Make room for the maximum decimal number size
> */
> StringLength = ACPI_MAX_DECIMAL_DIGITS;
> + LeadingZeros = FALSE;
> Base = 10;
> break;
>
> + case ACPI_EXPLICIT_CONVERT_HEX:
> + /*
> + * From ToHexString.
> + *
> + * Supress leading zeros and append "0x"
> + */
> + StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth) + 2;
> + LeadingZeros = FALSE;
> + break;
> default:
>
> /* Two hex string characters for each integer byte */
>
> StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth);
> + LeadingZeros = TRUE;
> break;
> }
>
> @@ -603,15 +628,29 @@ AcpiExConvertToString (
> }
>
> NewBuf = ReturnDesc->Buffer.Pointer;
> + if (Type == ACPI_EXPLICIT_CONVERT_HEX)
> + {
> + /* Append "0x" prefix for explicit hex conversion */
> +
> + *NewBuf++ = '0';
> + *NewBuf++ = 'x';
> + }
>
> /* Convert integer to string */
>
> StringLength = AcpiExConvertToAscii (
> - ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth);
> + ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth, LeadingZeros);
>
> /* Null terminate at the correct place */
>
> ReturnDesc->String.Length = StringLength;
> + if (Type == ACPI_EXPLICIT_CONVERT_HEX)
> + {
> + /* Take "0x" prefix into account */
> +
> + ReturnDesc->String.Length += 2;
> + }
> +
> NewBuf [StringLength] = 0;
> break;
>
> @@ -628,6 +667,7 @@ AcpiExConvertToString (
> * From ACPI: "If the input is a buffer, it is converted to a
> * a string of decimal values separated by commas."
> */
> + LeadingZeros = FALSE;
> Base = 10;
>
> /*
> @@ -661,6 +701,7 @@ AcpiExConvertToString (
> *
> * Each hex number is prefixed with 0x (11/2018)
> */
> + LeadingZeros = TRUE;
> Separator = ' ';
> StringLength = (ObjDesc->Buffer.Length * 5);
> break;
> @@ -674,6 +715,7 @@ AcpiExConvertToString (
> *
> * Each hex number is prefixed with 0x (11/2018)
> */
> + LeadingZeros = TRUE;
> Separator = ',';
> StringLength = (ObjDesc->Buffer.Length * 5);
> break;
> @@ -715,7 +757,7 @@ AcpiExConvertToString (
> }
>
> NewBuf += AcpiExConvertToAscii (
> - (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1);
> + (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1, LeadingZeros);
>
> /* Each digit is separated by either a comma or space */
>
> diff --git a/src/acpica/source/components/executer/exprep.c b/src/acpica/source/components/executer/exprep.c
> index 545ca0c3..f2164fe8 100644
> --- a/src/acpica/source/components/executer/exprep.c
> +++ b/src/acpica/source/components/executer/exprep.c
> @@ -611,6 +611,10 @@ AcpiExPrepFieldValue (
> if (Info->ConnectionNode)
> {
> SecondDesc = Info->ConnectionNode->Object;
> + if (SecondDesc == NULL)
> + {
> + break;
> + }
> if (!(SecondDesc->Common.Flags & AOPOBJ_DATA_VALID))
> {
> Status = AcpiDsGetBufferArguments (SecondDesc);
> diff --git a/src/acpica/source/components/executer/exregion.c b/src/acpica/source/components/executer/exregion.c
> index c625b668..5da92941 100644
> --- a/src/acpica/source/components/executer/exregion.c
> +++ b/src/acpica/source/components/executer/exregion.c
> @@ -191,7 +191,6 @@ AcpiExSystemMemorySpaceHandler (
> ACPI_MEM_MAPPING *Mm = MemInfo->CurMm;
> UINT32 Length;
> ACPI_SIZE MapLength;
> - ACPI_SIZE PageBoundaryMapLength;
> #ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED
> UINT32 Remainder;
> #endif
> @@ -298,27 +297,9 @@ AcpiExSystemMemorySpaceHandler (
> MapLength = (ACPI_SIZE)
> ((MemInfo->Address + MemInfo->Length) - Address);
>
> - /*
> - * If mapping the entire remaining portion of the region will cross
> - * a page boundary, just map up to the page boundary, do not cross.
> - * On some systems, crossing a page boundary while mapping regions
> - * can cause warnings if the pages have different attributes
> - * due to resource management.
> - *
> - * This has the added benefit of constraining a single mapping to
> - * one page, which is similar to the original code that used a 4k
> - * maximum window.
> - */
> - PageBoundaryMapLength = (ACPI_SIZE)
> - (ACPI_ROUND_UP (Address, ACPI_DEFAULT_PAGE_SIZE) - Address);
> - if (PageBoundaryMapLength == 0)
> - {
> - PageBoundaryMapLength = ACPI_DEFAULT_PAGE_SIZE;
> - }
> -
> - if (MapLength > PageBoundaryMapLength)
> + if (MapLength > ACPI_DEFAULT_PAGE_SIZE)
> {
> - MapLength = PageBoundaryMapLength;
> + MapLength = ACPI_DEFAULT_PAGE_SIZE;
> }
>
> /* Create a new mapping starting at the address given */
> diff --git a/src/acpica/source/components/executer/exsystem.c b/src/acpica/source/components/executer/exsystem.c
> index 16fb5ea1..bc134172 100644
> --- a/src/acpica/source/components/executer/exsystem.c
> +++ b/src/acpica/source/components/executer/exsystem.c
> @@ -296,7 +296,7 @@ AcpiExSystemDoStall (
> * (ACPI specifies 100 usec as max, but this gives some slack in
> * order to support existing BIOSs)
> */
> - ACPI_ERROR ((AE_INFO,
> + ACPI_ERROR_ONCE ((AE_INFO,
> "Time parameter is too large (%u)", HowLongUs));
> Status = AE_AML_OPERAND_VALUE;
> }
> @@ -304,7 +304,7 @@ AcpiExSystemDoStall (
> {
> if (HowLongUs > 100)
> {
> - ACPI_WARNING ((AE_INFO,
> + ACPI_WARNING_ONCE ((AE_INFO,
> "Time parameter %u us > 100 us violating ACPI spec, please fix the firmware.", HowLongUs));
> }
> AcpiOsStall (HowLongUs);
> diff --git a/src/acpica/source/components/hardware/hwxfsleep.c b/src/acpica/source/components/hardware/hwxfsleep.c
> index 66118a4e..6605a58e 100644
> --- a/src/acpica/source/components/hardware/hwxfsleep.c
> +++ b/src/acpica/source/components/hardware/hwxfsleep.c
> @@ -159,13 +159,11 @@
>
> /* Local prototypes */
>
> -#if (!ACPI_REDUCED_HARDWARE)
> static ACPI_STATUS
> AcpiHwSetFirmwareWakingVector (
> ACPI_TABLE_FACS *Facs,
> ACPI_PHYSICAL_ADDRESS PhysicalAddress,
> ACPI_PHYSICAL_ADDRESS PhysicalAddress64);
> -#endif
>
> static ACPI_STATUS
> AcpiHwSleepDispatch (
> @@ -199,13 +197,6 @@ static ACPI_SLEEP_FUNCTIONS AcpiSleepDispatch[] =
> };
>
>
> -/*
> - * These functions are removed for the ACPI_REDUCED_HARDWARE case:
> - * AcpiSetFirmwareWakingVector
> - * AcpiEnterSleepStateS4bios
> - */
> -
> -#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiHwSetFirmwareWakingVector
> @@ -298,6 +289,12 @@ AcpiSetFirmwareWakingVector (
> ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector)
>
>
> +/*
> + * These functions are removed for the ACPI_REDUCED_HARDWARE case:
> + * AcpiEnterSleepStateS4bios
> + */
> +
> +#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiEnterSleepStateS4bios
> diff --git a/src/acpica/source/components/parser/psargs.c b/src/acpica/source/components/parser/psargs.c
> index 728ac559..24cf6f84 100644
> --- a/src/acpica/source/components/parser/psargs.c
> +++ b/src/acpica/source/components/parser/psargs.c
> @@ -170,6 +170,10 @@ static ACPI_PARSE_OBJECT *
> AcpiPsGetNextField (
> ACPI_PARSE_STATE *ParserState);
>
> +static void
> +AcpiPsFreeFieldList (
> + ACPI_PARSE_OBJECT *Start);
> +
>
> /*******************************************************************************
> *
> @@ -872,6 +876,43 @@ AcpiPsGetNextField (
> return_PTR (Field);
> }
>
> +/*******************************************************************************
> + *
> + * FUNCTION: AcpiPsFreeFieldList
> + *
> + * PARAMETERS: Start - First Op in field list
> + *
> + * RETURN: None.
> + *
> + * DESCRIPTION: Free all Op objects inside a field list.
> + *
> + ******************************************************************************/
> +
> +static void
> +AcpiPsFreeFieldList (
> + ACPI_PARSE_OBJECT *Start)
> +{
> + ACPI_PARSE_OBJECT *Current = Start;
> + ACPI_PARSE_OBJECT *Next;
> + ACPI_PARSE_OBJECT *Arg;
> +
> + while (Current)
> + {
> + Next = Current->Common.Next;
> +
> + /* AML_INT_CONNECTION_OP can have a single argument */
> +
> + Arg = AcpiPsGetArg (Current, 0);
> + if (Arg)
> + {
> + AcpiPsFreeOp (Arg);
> + }
> +
> + AcpiPsFreeOp(Current);
> + Current = Next;
> + }
> +}
> +
>
> /*******************************************************************************
> *
> @@ -948,6 +989,11 @@ AcpiPsGetNextArg (
> Field = AcpiPsGetNextField (ParserState);
> if (!Field)
> {
> + if (Arg)
> + {
> + AcpiPsFreeFieldList(Arg);
> + }
> +
> return_ACPI_STATUS (AE_NO_MEMORY);
> }
>
> @@ -1016,6 +1062,11 @@ AcpiPsGetNextArg (
>
> Status = AcpiPsGetNextNamepath (WalkState, ParserState,
> Arg, ACPI_NOT_METHOD_CALL);
> + if (ACPI_FAILURE(Status))
> + {
> + AcpiPsFreeOp (Arg);
> + return_ACPI_STATUS (Status);
> + }
> }
> else
> {
> @@ -1048,6 +1099,11 @@ AcpiPsGetNextArg (
>
> Status = AcpiPsGetNextNamepath (WalkState, ParserState,
> Arg, ACPI_POSSIBLE_METHOD_CALL);
> + if (ACPI_FAILURE(Status))
> + {
> + AcpiPsFreeOp (Arg);
> + return_ACPI_STATUS (Status);
> + }
>
> if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP)
> {
> diff --git a/src/acpica/source/components/resources/rsaddr.c b/src/acpica/source/components/resources/rsaddr.c
> index ec97ab8e..2289f2dd 100644
> --- a/src/acpica/source/components/resources/rsaddr.c
> +++ b/src/acpica/source/components/resources/rsaddr.c
> @@ -441,7 +441,8 @@ AcpiRsGetAddressCommon (
> /* Validate the Resource Type */
>
> if ((Address.ResourceType > 2) &&
> - (Address.ResourceType < 0xC0))
> + (Address.ResourceType < 0xC0) &&
> + (Address.ResourceType != 0x0A))
> {
> return (FALSE);
> }
> diff --git a/src/acpica/source/components/resources/rsdump.c b/src/acpica/source/components/resources/rsdump.c
> index b12d72df..2a4d178c 100644
> --- a/src/acpica/source/components/resources/rsdump.c
> +++ b/src/acpica/source/components/resources/rsdump.c
> @@ -230,6 +230,7 @@ AcpiRsDumpDescriptor (
> ACPI_RSDUMP_INFO *Table);
>
>
> +#ifdef ACPI_DEBUGGER
> /*******************************************************************************
> *
> * FUNCTION: AcpiRsDumpResourceList
> @@ -359,7 +360,7 @@ AcpiRsDumpIrqList (
> PrtElement, PrtElement->Length);
> }
> }
> -
> +#endif
>
> /*******************************************************************************
> *
> diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c
> index df19488d..feb698f8 100644
> --- a/src/acpica/source/components/tables/tbfadt.c
> +++ b/src/acpica/source/components/tables/tbfadt.c
> @@ -489,24 +489,19 @@ AcpiTbParseFadt (
> ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
> &AcpiGbl_DsdtIndex);
>
> - /* If Hardware Reduced flag is set, there is no FACS */
> -
> - if (!AcpiGbl_ReducedHardware)
> + if (AcpiGbl_FADT.Facs)
> {
> - if (AcpiGbl_FADT.Facs)
> - {
> - AcpiTbInstallStandardTable (
> - (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs,
> - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
> - &AcpiGbl_FacsIndex);
> - }
> - if (AcpiGbl_FADT.XFacs)
> - {
> - AcpiTbInstallStandardTable (
> - (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
> - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
> - &AcpiGbl_XFacsIndex);
> - }
> + AcpiTbInstallStandardTable (
> + (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.Facs,
> + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
> + &AcpiGbl_FacsIndex);
> + }
> + if (AcpiGbl_FADT.XFacs)
> + {
> + AcpiTbInstallStandardTable (
> + (ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs,
> + ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, NULL, FALSE, TRUE,
> + &AcpiGbl_XFacsIndex);
> }
> }
>
> diff --git a/src/acpica/source/components/tables/tbutils.c b/src/acpica/source/components/tables/tbutils.c
> index 3e288971..2c5f68be 100644
> --- a/src/acpica/source/components/tables/tbutils.c
> +++ b/src/acpica/source/components/tables/tbutils.c
> @@ -165,7 +165,6 @@ AcpiTbGetRootTableEntry (
> UINT32 TableEntrySize);
>
>
> -#if (!ACPI_REDUCED_HARDWARE)
> /*******************************************************************************
> *
> * FUNCTION: AcpiTbInitializeFacs
> @@ -185,15 +184,7 @@ AcpiTbInitializeFacs (
> {
> ACPI_TABLE_FACS *Facs;
>
> -
> - /* If Hardware Reduced flag is set, there is no FACS */
> -
> - if (AcpiGbl_ReducedHardware)
> - {
> - AcpiGbl_FACS = NULL;
> - return (AE_OK);
> - }
> - else if (AcpiGbl_FADT.XFacs &&
> + if (AcpiGbl_FADT.XFacs &&
> (!AcpiGbl_FADT.Facs || !AcpiGbl_Use32BitFacsAddresses))
> {
> (void) AcpiGetTableByIndex (AcpiGbl_XFacsIndex,
> @@ -211,7 +202,6 @@ AcpiTbInitializeFacs (
>
> return (AE_OK);
> }
> -#endif /* !ACPI_REDUCED_HARDWARE */
>
>
> /*******************************************************************************
> diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
> index e194dd40..922358d7 100644
> --- a/src/acpica/source/components/utilities/utdelete.c
> +++ b/src/acpica/source/components/utilities/utdelete.c
> @@ -293,7 +293,7 @@ AcpiUtDeleteInternalObj (
> /* Global Lock has extra semaphore */
>
> (void) AcpiOsDeleteSemaphore (AcpiGbl_GlobalLockSemaphore);
> - AcpiGbl_GlobalLockSemaphore = NULL;
> + AcpiGbl_GlobalLockSemaphore = ACPI_SEMAPHORE_NULL;
>
> AcpiOsDeleteMutex (Object->Mutex.OsMutex);
> AcpiGbl_GlobalLockMutex = NULL;
> @@ -312,7 +312,7 @@ AcpiUtDeleteInternalObj (
> Object, Object->Event.OsSemaphore));
>
> (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore);
> - Object->Event.OsSemaphore = NULL;
> + Object->Event.OsSemaphore = ACPI_SEMAPHORE_NULL;
> break;
>
> case ACPI_TYPE_METHOD:
> diff --git a/src/acpica/source/components/utilities/utinit.c b/src/acpica/source/components/utilities/utinit.c
> index 4d8d0e13..e100e0f3 100644
> --- a/src/acpica/source/components/utilities/utinit.c
> +++ b/src/acpica/source/components/utilities/utinit.c
> @@ -316,7 +316,7 @@ AcpiUtInitGlobals (
>
> /* Global Lock support */
>
> - AcpiGbl_GlobalLockSemaphore = NULL;
> + AcpiGbl_GlobalLockSemaphore = ACPI_SEMAPHORE_NULL;
> AcpiGbl_GlobalLockMutex = NULL;
> AcpiGbl_GlobalLockAcquired = FALSE;
> AcpiGbl_GlobalLockHandle = 0;
> diff --git a/src/acpica/source/components/utilities/utosi.c b/src/acpica/source/components/utilities/utosi.c
> index 789fe0fe..ebf04d27 100644
> --- a/src/acpica/source/components/utilities/utosi.c
> +++ b/src/acpica/source/components/utilities/utosi.c
> @@ -222,6 +222,7 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
> {"Windows 2019", NULL, 0, ACPI_OSI_WIN_10_19H1}, /* Windows 10 version 1903 - Added 08/2019 */
> {"Windows 2020", NULL, 0, ACPI_OSI_WIN_10_20H1}, /* Windows 10 version 2004 - Added 08/2021 */
> {"Windows 2021", NULL, 0, ACPI_OSI_WIN_11}, /* Windows 11 - Added 01/2022 */
> + {"Windows 2022", NULL, 0, ACPI_OSI_WIN_11_22H2}, /* Windows 11 version 22H2 - Added 04/2024 */
>
> /* Feature Group Strings */
>
> diff --git a/src/acpica/source/components/utilities/utxfinit.c b/src/acpica/source/components/utilities/utxfinit.c
> index adf7429f..c8bb0cea 100644
> --- a/src/acpica/source/components/utilities/utxfinit.c
> +++ b/src/acpica/source/components/utilities/utxfinit.c
> @@ -276,6 +276,20 @@ AcpiEnableSubsystem (
> */
> AcpiGbl_EarlyInitialization = FALSE;
>
> + /*
> + * Obtain a permanent mapping for the FACS. This is required for the
> + * Global Lock and the Firmware Waking Vector
> + */
> + if (!(Flags & ACPI_NO_FACS_INIT))
> + {
> + Status = AcpiTbInitializeFacs ();
> + if (ACPI_FAILURE (Status))
> + {
> + ACPI_WARNING ((AE_INFO, "Could not map the FACS table"));
> + return_ACPI_STATUS (Status);
> + }
> + }
> +
> #if (!ACPI_REDUCED_HARDWARE)
>
> /* Enable ACPI mode */
> @@ -294,20 +308,6 @@ AcpiEnableSubsystem (
> }
> }
>
> - /*
> - * Obtain a permanent mapping for the FACS. This is required for the
> - * Global Lock and the Firmware Waking Vector
> - */
> - if (!(Flags & ACPI_NO_FACS_INIT))
> - {
> - Status = AcpiTbInitializeFacs ();
> - if (ACPI_FAILURE (Status))
> - {
> - ACPI_WARNING ((AE_INFO, "Could not map the FACS table"));
> - return_ACPI_STATUS (Status);
> - }
> - }
> -
> /*
> * Initialize ACPI Event handling (Fixed and General Purpose)
> *
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index f795b19e..7af986fc 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -210,7 +210,6 @@
> * General Purpose Events (GPEs)
> * Global Lock
> * ACPI PM timer
> - * FACS table (Waking vectors and Global Lock)
> */
> #ifndef ACPI_REDUCED_HARDWARE
> #define ACPI_REDUCED_HARDWARE FALSE
> diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
> index 91ec2943..01acb57f 100644
> --- a/src/acpica/source/include/acdisasm.h
> +++ b/src/acpica/source/include/acdisasm.h
> @@ -226,6 +226,8 @@ typedef enum
> ACPI_DMT_BUF12,
> ACPI_DMT_BUF16,
> ACPI_DMT_BUF18,
> + ACPI_DMT_BUF32,
> + ACPI_DMT_BUF112,
> ACPI_DMT_BUF128,
> ACPI_DMT_SIG,
> ACPI_DMT_STRING,
> @@ -382,9 +384,17 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestGenRsrc[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestMemError[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestSmmuError[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorError[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestVendorV2Error[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestGicError[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestPCIeError[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestProxyError[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXfaceHeader[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface4k[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface16k[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXface64k[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXrupt[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoAestXruptV2[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAgdi[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoApmtNode[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[];
> @@ -418,6 +428,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedtHdr[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt0[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt1_te[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2[];
> +extern ACPI_DMTABLE_INFO AcpiDmTableInfoCedt2_te[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[];
> extern ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[];
> diff --git a/src/acpica/source/include/acglobal.h b/src/acpica/source/include/acglobal.h
> index 7a87d125..fa14d6e5 100644
> --- a/src/acpica/source/include/acglobal.h
> +++ b/src/acpica/source/include/acglobal.h
> @@ -172,11 +172,7 @@ ACPI_INIT_GLOBAL (UINT32, AcpiGbl_DsdtIndex, ACPI_INVALID_TABLE_IN
> ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FacsIndex, ACPI_INVALID_TABLE_INDEX);
> ACPI_INIT_GLOBAL (UINT32, AcpiGbl_XFacsIndex, ACPI_INVALID_TABLE_INDEX);
> ACPI_INIT_GLOBAL (UINT32, AcpiGbl_FadtIndex, ACPI_INVALID_TABLE_INDEX);
> -
> -#if (!ACPI_REDUCED_HARDWARE)
> -ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS);
> -
> -#endif /* !ACPI_REDUCED_HARDWARE */
> +ACPI_INIT_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS, NULL);
>
> /* These addresses are calculated from the FADT Event Block addresses */
>
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index 477034fb..c8beb6f1 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -1412,6 +1412,8 @@ typedef struct acpi_port_info
> #define ACPI_ADDRESS_TYPE_IO_RANGE 1
> #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2
>
> +#define ACPI_ADDRESS_TYPE_PCC_NUMBER 0xA
> +
> /* Resource descriptor types and masks */
>
> #define ACPI_RESOURCE_NAME_LARGE 0x80
> diff --git a/src/acpica/source/include/acoutput.h b/src/acpica/source/include/acoutput.h
> index 6e1b317d..c270d2c8 100644
> --- a/src/acpica/source/include/acoutput.h
> +++ b/src/acpica/source/include/acoutput.h
> @@ -336,6 +336,7 @@
> */
> #ifndef ACPI_NO_ERROR_MESSAGES
> #define AE_INFO _AcpiModuleName, __LINE__
> +#define ACPI_ONCE(_fn, _plist) { static char _done; if (!_done) { _done = 1; _fn _plist; } }
>
> /*
> * Error reporting. Callers module and line number are inserted by AE_INFO,
> @@ -344,8 +345,10 @@
> */
> #define ACPI_INFO(plist) AcpiInfo plist
> #define ACPI_WARNING(plist) AcpiWarning plist
> +#define ACPI_WARNING_ONCE(plist) ACPI_ONCE(AcpiWarning, plist)
> #define ACPI_EXCEPTION(plist) AcpiException plist
> #define ACPI_ERROR(plist) AcpiError plist
> +#define ACPI_ERROR_ONCE(plist) ACPI_ONCE(AcpiError, plist)
> #define ACPI_BIOS_WARNING(plist) AcpiBiosWarning plist
> #define ACPI_BIOS_EXCEPTION(plist) AcpiBiosException plist
> #define ACPI_BIOS_ERROR(plist) AcpiBiosError plist
> @@ -357,8 +360,10 @@
>
> #define ACPI_INFO(plist)
> #define ACPI_WARNING(plist)
> +#define ACPI_WARNING_ONCE(plist)
> #define ACPI_EXCEPTION(plist)
> #define ACPI_ERROR(plist)
> +#define ACPI_ERROR_ONCE(plist)
> #define ACPI_BIOS_WARNING(plist)
> #define ACPI_BIOS_EXCEPTION(plist)
> #define ACPI_BIOS_ERROR(plist)
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index ba4adf28..53d56a95 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>
> /* Current ACPICA subsystem version in YYYYMMDD format */
>
> -#define ACPI_CA_VERSION 0x20240322
> +#define ACPI_CA_VERSION 0x20240827
>
> #include "acconfig.h"
> #include "actypes.h"
> @@ -1295,7 +1295,7 @@ ACPI_STATUS
> AcpiLeaveSleepState (
> UINT8 SleepState))
>
> -ACPI_HW_DEPENDENT_RETURN_STATUS (
> +ACPI_EXTERNAL_RETURN_STATUS (
> ACPI_STATUS
> AcpiSetFirmwareWakingVector (
> ACPI_PHYSICAL_ADDRESS PhysicalAddress,
> diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
> index c8ac10b2..144aedf0 100644
> --- a/src/acpica/source/include/acpredef.h
> +++ b/src/acpica/source/include/acpredef.h
> @@ -587,7 +587,7 @@ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] =
> METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Buf, 1 Pkg */
> PACKAGE_INFO (ACPI_PTYPE2_UUID_PAIR, ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_PACKAGE, 1,0),
>
> - {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_PACKAGE),
> + {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_ANY) | ARG_COUNT_IS_MINIMUM,
> METHOD_RETURNS (ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */
>
> {{"_DSS", METHOD_1ARGS (ACPI_TYPE_INTEGER),
> diff --git a/src/acpica/source/include/actbinfo.h b/src/acpica/source/include/actbinfo.h
> index 4f2bfd1f..19692837 100644
> --- a/src/acpica/source/include/actbinfo.h
> +++ b/src/acpica/source/include/actbinfo.h
> @@ -225,9 +225,17 @@
> #define ACPI_AEST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_MEMORY,f)
> #define ACPI_AEST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_SMMU,f)
> #define ACPI_AEST3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_VENDOR,f)
> +#define ACPI_AEST3A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_VENDOR_V2,f)
> #define ACPI_AEST4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_GIC,f)
> +#define ACPI_AEST5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_PCIE,f)
> +#define ACPI_AEST6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_PROXY,f)
> #define ACPI_AEST0D_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE,f)
> +#define ACPI_AEST0DH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_HEADER,f)
> +#define ACPI_AEST0D4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_4K,f)
> +#define ACPI_AEST0D16_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_16K,f)
> +#define ACPI_AEST0D64_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERFACE_64K,f)
> #define ACPI_AEST0E_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERRUPT,f)
> +#define ACPI_AEST0EA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_AEST_NODE_INTERRUPT_V2,f)
> #define ACPI_APMTN_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_APMT_NODE,f)
> #define ACPI_ASF0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f)
> #define ACPI_ASF1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f)
> @@ -253,6 +261,8 @@
> #define ACPI_CEDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CHBS, f)
> #define ACPI_CEDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CFMWS, f)
> #define ACPI_CEDT1_TE_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CFMWS_TARGET_ELEMENT, f)
> +#define ACPI_CEDT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CXIMS, f)
> +#define ACPI_CEDT2_TE_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CEDT_CXIMS_TARGET_ELEMENT, f)
> #define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f)
> #define ACPI_CSRT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f)
> #define ACPI_CSRT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_SHARED_INFO,f)
> @@ -446,6 +456,7 @@
> #define ACPI_AEST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_PROCESSOR,f,o)
> #define ACPI_AEST0D_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERFACE,f,o)
> #define ACPI_AEST0E_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT,f,o)
> +#define ACPI_AEST0EA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_AEST_NODE_INTERRUPT_V2,f,o)
> #define ACPI_AGDI_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_AGDI,f,o)
> #define ACPI_APMTN_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_APMT_NODE,f,o)
> #define ACPI_BGRT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_BGRT,f,o)
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index 5816a812..71cbc36d 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -822,13 +822,20 @@ typedef struct acpi_cedt_cfmws_target_element
>
> /* 2: CXL XOR Interleave Math Structure */
>
> -struct acpi_cedt_cxims {
> +typedef struct acpi_cedt_cxims {
> ACPI_CEDT_HEADER Header;
> UINT16 Reserved1;
> UINT8 Hbig;
> UINT8 NrXormaps;
> UINT64 XormapList[];
> -};
> +} ACPI_CEDT_CXIMS;
> +
> +typedef struct acpi_cedt_cxims_target_element
> +{
> + UINT64 Xormap;
> +
> +} ACPI_CEDT_CXIMS_TARGET_ELEMENT;
> +
>
> /* 3: CXL RCEC Downstream Port Association Structure */
>
> @@ -1038,6 +1045,7 @@ typedef struct acpi_dbg2_device
> #define ACPI_DBG2_16550_WITH_GAS 0x0012
> #define ACPI_DBG2_SDM845_7_372MHZ 0x0013
> #define ACPI_DBG2_INTEL_LPSS 0x0014
> +#define ACPI_DBG2_RISCV_SBI_CON 0x0015
>
> #define ACPI_DBG2_1394_STANDARD 0x0000
>
> @@ -2262,7 +2270,7 @@ typedef struct acpi_hmat_cache
> UINT32 Reserved1;
> UINT64 CacheSize;
> UINT32 CacheAttributes;
> - UINT16 Reserved2;
> + UINT16 AddressMode;
> UINT16 NumberOfSMBIOSHandles;
>
> } ACPI_HMAT_CACHE;
> @@ -2275,6 +2283,9 @@ typedef struct acpi_hmat_cache
> #define ACPI_HMAT_WRITE_POLICY (0x0000F000)
> #define ACPI_HMAT_CACHE_LINE_SIZE (0xFFFF0000)
>
> +#define ACPI_HMAT_CACHE_MODE_UNKNOWN (0)
> +#define ACPI_HMAT_CACHE_MODE_EXTENDED_LINEAR (1)
> +
> /* Values for cache associativity flag */
>
> #define ACPI_HMAT_CA_NONE (0)
> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
> index 99076bbc..cc09702b 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -259,7 +259,9 @@ typedef struct acpi_aest_hdr
> #define ACPI_AEST_SMMU_ERROR_NODE 2
> #define ACPI_AEST_VENDOR_ERROR_NODE 3
> #define ACPI_AEST_GIC_ERROR_NODE 4
> -#define ACPI_AEST_NODE_TYPE_RESERVED 5 /* 5 and above are reserved */
> +#define ACPI_AEST_PCIE_ERROR_NODE 5
> +#define ACPI_AEST_PROXY_ERROR_NODE 6
> +#define ACPI_AEST_NODE_TYPE_RESERVED 7 /* 7 and above are reserved */
>
>
> /*
> @@ -346,6 +348,16 @@ typedef struct acpi_aest_vendor
>
> } ACPI_AEST_VENDOR;
>
> +/* 3: Vendor Defined V2 */
> +
> +typedef struct acpi_aest_vendor_v2
> +{
> + UINT64 AcpiHid;
> + UINT32 AcpiUid;
> + UINT8 VendorSpecificData[16];
> +
> +} ACPI_AEST_VENDOR_V2;
> +
> /* 4: Gic Error */
>
> typedef struct acpi_aest_gic
> @@ -363,6 +375,22 @@ typedef struct acpi_aest_gic
> #define ACPI_AEST_GIC_ITS 3
> #define ACPI_AEST_GIC_RESERVED 4 /* 4 and above are reserved */
>
> +/* 5: PCIe Error */
> +
> +typedef struct acpi_aest_pcie
> +{
> + UINT32 IortNodeReference;
> +
> +} ACPI_AEST_PCIE;
> +
> +
> +/* 6: Proxy Error */
> +
> +typedef struct acpi_aest_proxy
> +{
> + UINT64 NodeAddress;
> +
> +} ACPI_AEST_PROXY;
>
> /* Node Interface Structure */
>
> @@ -380,11 +408,67 @@ typedef struct acpi_aest_node_interface
>
> } ACPI_AEST_NODE_INTERFACE;
>
> +/* Node Interface Structure V2*/
> +
> +typedef struct acpi_aest_node_interface_header
> +{
> + UINT8 Type;
> + UINT8 GroupFormat;
> + UINT8 Reserved[2];
> + UINT32 Flags;
> + UINT64 Address;
> + UINT32 ErrorRecordIndex;
> + UINT32 ErrorRecordCount;
> +
> +} ACPI_AEST_NODE_INTERFACE_HEADER;
> +
> +#define ACPI_AEST_NODE_GROUP_FORMAT_4K 0
> +#define ACPI_AEST_NODE_GROUP_FORMAT_16K 1
> +#define ACPI_AEST_NODE_GROUP_FORMAT_64K 2
> +
> +typedef struct acpi_aest_node_interface_common
> +{
> + UINT32 ErrorNodeDevice;
> + UINT32 ProcessorAffinity;
> + UINT64 ErrorGroupRegisterBase;
> + UINT64 FaultInjectRegisterBase;
> + UINT64 InterruptConfigRegisterBase;
> +
> +} ACPI_AEST_NODE_INTERFACE_COMMON;
> +
> +typedef struct acpi_aest_node_interface_4k
> +{
> + UINT64 ErrorRecordImplemented;
> + UINT64 ErrorStatusReporting;
> + UINT64 AddressingMode;
> + ACPI_AEST_NODE_INTERFACE_COMMON Common;
> +
> +} ACPI_AEST_NODE_INTERFACE_4K;
> +
> +typedef struct acpi_aest_node_interface_16k
> +{
> + UINT64 ErrorRecordImplemented[4];
> + UINT64 ErrorStatusReporting[4];
> + UINT64 AddressingMode[4];
> + ACPI_AEST_NODE_INTERFACE_COMMON Common;
> +
> +} ACPI_AEST_NODE_INTERFACE_16K;
> +
> +typedef struct acpi_aest_node_interface_64k
> +{
> + INT64 ErrorRecordImplemented[14];
> + UINT64 ErrorStatusReporting[14];
> + UINT64 AddressingMode[14];
> + ACPI_AEST_NODE_INTERFACE_COMMON Common;
> +
> +} ACPI_AEST_NODE_INTERFACE_64K;
> +
> /* Values for Type field above */
>
> -#define ACPI_AEST_NODE_SYSTEM_REGISTER 0
> -#define ACPI_AEST_NODE_MEMORY_MAPPED 1
> -#define ACPI_AEST_XFACE_RESERVED 2 /* 2 and above are reserved */
> +#define ACPI_AEST_NODE_SYSTEM_REGISTER 0
> +#define ACPI_AEST_NODE_MEMORY_MAPPED 1
> +#define ACPI_AEST_NODE_SINGLE_RECORD_MEMORY_MAPPED 2
> +#define ACPI_AEST_XFACE_RESERVED 3 /* 2 and above are reserved */
>
> /* Node Interrupt Structure */
>
> @@ -399,6 +483,18 @@ typedef struct acpi_aest_node_interrupt
>
> } ACPI_AEST_NODE_INTERRUPT;
>
> +/* Node Interrupt Structure V2 */
> +
> +typedef struct acpi_aest_node_interrupt_v2
> +{
> + UINT8 Type;
> + UINT8 Reserved[2];
> + UINT8 Flags;
> + UINT32 Gsiv;
> + UINT8 Reserved1[4];
> +
> +} ACPI_AEST_NODE_INTERRUPT_V2;
> +
> /* Values for Type field above */
>
> #define ACPI_AEST_NODE_FAULT_HANDLING 0
> @@ -548,7 +644,7 @@ typedef struct acpi_table_ccel
> * IORT - IO Remapping Table
> *
> * Conforms to "IO Remapping Table System Software on ARM Platforms",
> - * Document number: ARM DEN 0049E.e, Sep 2022
> + * Document number: ARM DEN 0049E.f, Apr 2024
> *
> ******************************************************************************/
>
> @@ -631,6 +727,7 @@ typedef struct acpi_iort_memory_access
>
> #define ACPI_IORT_MF_COHERENCY (1)
> #define ACPI_IORT_MF_ATTRIBUTES (1<<1)
> +#define ACPI_IORT_MF_CANWBS (1<<2)
>
>
> /*
> @@ -1835,7 +1932,7 @@ typedef struct acpi_mpam_msc_node
> UINT32 MaxNrdyUsec;
> UINT64 HardwareIdLinkedDevice;
> UINT32 InstanceIdLinkedDevice;
> - UINT32 NumResouceNodes;
> + UINT32 NumResourceNodes;
> } ACPI_MPAM_MSC_NODE;
>
> typedef struct acpi_table_mpam
> diff --git a/src/acpica/source/include/actbl3.h b/src/acpica/source/include/actbl3.h
> index 477d70af..31619792 100644
> --- a/src/acpica/source/include/actbl3.h
> +++ b/src/acpica/source/include/actbl3.h
> @@ -243,10 +243,10 @@ typedef struct acpi_table_slit
> /*******************************************************************************
> *
> * SPCR - Serial Port Console Redirection table
> - * Version 2
> + * Version 4
> *
> * Conforms to "Serial Port Console Redirection Table",
> - * Version 1.03, August 10, 2015
> + * Version 1.10, Jan 5, 2023
> *
> ******************************************************************************/
>
> @@ -264,7 +264,7 @@ typedef struct acpi_table_spcr
> UINT8 StopBits;
> UINT8 FlowControl;
> UINT8 TerminalType;
> - UINT8 Reserved1;
> + UINT8 Language;
> UINT16 PciDeviceId;
> UINT16 PciVendorId;
> UINT8 PciBus;
> @@ -272,7 +272,11 @@ typedef struct acpi_table_spcr
> UINT8 PciFunction;
> UINT32 PciFlags;
> UINT8 PciSegment;
> - UINT32 Reserved2;
> + UINT32 UartClkFreq;
> + UINT32 PreciseBaudrate;
> + UINT16 NameSpaceStringLength;
> + UINT16 NameSpaceStringOffset;
> + char NameSpaceString[];
>
> } ACPI_TABLE_SPCR;
>
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index 695dbb14..5e1012d8 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -1561,6 +1561,7 @@ typedef enum
> #define ACPI_OSI_WIN_10_19H1 0x14
> #define ACPI_OSI_WIN_10_20H1 0x15
> #define ACPI_OSI_WIN_11 0x16
> +#define ACPI_OSI_WIN_11_22H2 0x17
>
>
> /* Definitions of getopt */
> diff --git a/src/acpica/source/include/platform/acenv.h b/src/acpica/source/include/platform/acenv.h
> index e7c8678d..cc198c01 100644
> --- a/src/acpica/source/include/platform/acenv.h
> +++ b/src/acpica/source/include/platform/acenv.h
> @@ -403,6 +403,12 @@
> #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pending) Pending = 0
> #endif
>
> +/* NULL/invalid value to use for destroyed or not-yet-created semaphores. */
> +
> +#ifndef ACPI_SEMAPHORE_NULL
> +#define ACPI_SEMAPHORE_NULL NULL
> +#endif
> +
> /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */
>
> #ifndef ACPI_FLUSH_CPU_CACHE
More information about the fwts-devel
mailing list