Merge pull request #911 from winterddd/master

iASL: Add support for the AEST V2 table
This commit is contained in:
Saket Dumbre 2024-03-26 16:54:03 -07:00 committed by GitHub
commit 8ff276b77c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 543 additions and 90 deletions

View File

@ -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 */
};
@ -1198,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;
@ -1409,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.

View File

@ -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");
}
}

View File

@ -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!")

View File

@ -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);

View File

@ -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[] =

View File

@ -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;

View File

@ -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[];

View File

@ -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)
@ -448,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)

View File

@ -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

View File

@ -727,12 +727,14 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = {
{"ACPI_AEST_MEMORY", SRC_TYPE_STRUCT},
{"ACPI_AEST_NODE_INTERFACE", SRC_TYPE_STRUCT},
{"ACPI_AEST_NODE_INTERRUPT", SRC_TYPE_STRUCT},
{"ACPI_AEST_NODE_INTERRUPT_V2", SRC_TYPE_STRUCT},
{"ACPI_AEST_PROCESSOR", SRC_TYPE_STRUCT},
{"ACPI_AEST_PROCESSOR_CACHE", SRC_TYPE_STRUCT},
{"ACPI_AEST_PROCESSOR_GENERIC", SRC_TYPE_STRUCT},
{"ACPI_AEST_PROCESSOR_TLB", SRC_TYPE_STRUCT},
{"ACPI_AEST_SMMU", SRC_TYPE_STRUCT},
{"ACPI_AEST_VENDOR", SRC_TYPE_STRUCT},
{"ACPI_AEST_VENDOR_V2", SRC_TYPE_STRUCT},
{"ACPI_ASF_ADDRESS", SRC_TYPE_STRUCT},
{"ACPI_ASF_ALERT", SRC_TYPE_STRUCT},
{"ACPI_ASF_ALERT_DATA", SRC_TYPE_STRUCT},