Import ACPICA 20210604

(cherry picked from commit 395770967c3664ec744e63fa47acc19670d32f47)
This commit is contained in:
Jung-uk Kim 2021-06-05 00:00:36 -04:00
parent 295855e80f
commit 1970d69303
33 changed files with 1667 additions and 259 deletions

View File

@ -1,3 +1,45 @@
----------------------------------------
04 June 2021. Summary of changes for version 20210604:
1) ACPICA kernel-resident subsystem:
Cleaned up (delete) the context mutex during local address handler object
deletion.
Fixed a memory leak caused by the _CID repair function.
Added support for PlatformRtMechanism OperationRegion handler. Adds a new
utility function, AcpiUtConvertUuidToString. Writing a buffer to a
PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
input buffer contains 26 bytes containing 9 bytes of status, a command
byte and a 16-byte UUID. This change will simply pass this incoming
buffer to a handler registered by the OS.
2) iASL Compiler/Disassembler and ACPICA tools:
Added full support for the PRMT ACPI table (Platform Runtime Mechanism
Table). Includes support in the iASL compiler, the disassembler, and the
template generator.
Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
table.
Added full support for the SVKL (Storage Volume Key Location Table) ACPI
table. Header file support from Kuppuswamy Sathyanarayanan
<sathyanarayanan.kuppuswamy@linux.intel.com>.
Completed full support for the IVRS (I/O Virtualization Reporting
Structure) ACPI table. Added compiler support for IVRS, updated
disassembler support. Adds a new utility, UtIsIdInteger, to determine if
a HID/CID is an integer or a string.
Headers: Added more structs to the CEDT table: CXL fixed memory window
structure.
ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
----------------------------------------
31 March 2021. Summary of changes for version 20210331:

View File

@ -199,20 +199,21 @@ AcpiAhGetTableInfo (
*/
const AH_TABLE AcpiGbl_SupportedTables[] =
{
{ACPI_SIG_ASF, "Alert Standard Format table"},
{ACPI_SIG_ASF, "Alert Standard Format Table"},
{ACPI_SIG_BDAT, "BIOS Data ACPI Table"},
{ACPI_SIG_BERT, "Boot Error Record Table"},
{ACPI_SIG_BGRT, "Boot Graphics Resource Table"},
{ACPI_SIG_BOOT, "Simple Boot Flag Table"},
{ACPI_SIG_CEDT, "CXL Early Discovery Table"},
{ACPI_SIG_CPEP, "Corrected Platform Error Polling table"},
{ACPI_SIG_CPEP, "Corrected Platform Error Polling Table"},
{ACPI_SIG_CSRT, "Core System Resource Table"},
{ACPI_SIG_DBG2, "Debug Port table type 2"},
{ACPI_SIG_DBGP, "Debug Port table"},
{ACPI_SIG_DMAR, "DMA Remapping table"},
{ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement table"},
{ACPI_SIG_DBG2, "Debug Port Table type 2"},
{ACPI_SIG_DBGP, "Debug Port Table"},
{ACPI_SIG_DMAR, "DMA Remapping Table"},
{ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement Table"},
{ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"},
{ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"},
{ACPI_SIG_EINJ, "Error Injection table"},
{ACPI_SIG_EINJ, "Error Injection Table"},
{ACPI_SIG_ERST, "Error Record Serialization Table"},
{ACPI_SIG_FACS, "Firmware ACPI Control Structure"},
{ACPI_SIG_FADT, "Fixed ACPI Description Table (FADT)"},
@ -220,38 +221,41 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
{ACPI_SIG_GTDT, "Generic Timer Description Table"},
{ACPI_SIG_HEST, "Hardware Error Source Table"},
{ACPI_SIG_HMAT, "Heterogeneous Memory Attributes Table"},
{ACPI_SIG_HPET, "High Precision Event Timer table"},
{ACPI_SIG_HPET, "High Precision Event Timer Table"},
{ACPI_SIG_IORT, "IO Remapping Table"},
{ACPI_SIG_IVRS, "I/O Virtualization Reporting Structure"},
{ACPI_SIG_LPIT, "Low Power Idle Table"},
{ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"},
{ACPI_SIG_MCFG, "Memory Mapped Configuration table"},
{ACPI_SIG_MCHI, "Management Controller Host Interface table"},
{ACPI_SIG_MCFG, "Memory Mapped Configuration Table"},
{ACPI_SIG_MCHI, "Management Controller Host Interface Table"},
{ACPI_SIG_MPST, "Memory Power State Table"},
{ACPI_SIG_MSCT, "Maximum System Characteristics Table"},
{ACPI_SIG_MSDM, "Microsoft Data Management table"},
{ACPI_SIG_MSDM, "Microsoft Data Management Table"},
{ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"},
{ACPI_SIG_PCCT, "Platform Communications Channel Table"},
{ACPI_SIG_PHAT, "Platform Health Assessment Table"},
{ACPI_SIG_PDTT, "Platform Debug Trigger Table"},
{ACPI_SIG_PHAT, "Platform Health Assessment Table"},
{ACPI_SIG_PMTT, "Platform Memory Topology Table"},
{ACPI_SIG_PPTT, "Processor Properties Topology Table"},
{ACPI_SIG_PRMT, "Platform Runtime Mechanism Table"},
{ACPI_SIG_RASF, "RAS Features Table"},
{ACPI_SIG_RGRT, "Regulatory Graphics Resource Table"},
{ACPI_RSDP_NAME,"Root System Description Pointer"},
{ACPI_SIG_RSDT, "Root System Description Table"},
{ACPI_SIG_S3PT, "S3 Performance Table"},
{ACPI_SIG_SBST, "Smart Battery Specification Table"},
{ACPI_SIG_SDEI, "Software Delegated Exception Interface Table"},
{ACPI_SIG_SDEV, "Secure Devices table"},
{ACPI_SIG_SDEV, "Secure Devices Table"},
{ACPI_SIG_SLIC, "Software Licensing Description Table"},
{ACPI_SIG_SLIT, "System Locality Information Table"},
{ACPI_SIG_SPCR, "Serial Port Console Redirection table"},
{ACPI_SIG_SPMI, "Server Platform Management Interface table"},
{ACPI_SIG_SPCR, "Serial Port Console Redirection Table"},
{ACPI_SIG_SPMI, "Server Platform Management Interface Table"},
{ACPI_SIG_SRAT, "System Resource Affinity Table"},
{ACPI_SIG_SSDT, "Secondary System Description Table (AML table)"},
{ACPI_SIG_STAO, "Status Override table"},
{ACPI_SIG_TCPA, "Trusted Computing Platform Alliance table"},
{ACPI_SIG_TPM2, "Trusted Platform Module hardware interface table"},
{ACPI_SIG_STAO, "Status Override Table"},
{ACPI_SIG_SVKL, "Storage Volume Key Location Table"},
{ACPI_SIG_TCPA, "Trusted Computing Platform Alliance Table"},
{ACPI_SIG_TPM2, "Trusted Platform Module hardware interface Table"},
{ACPI_SIG_UEFI, "UEFI Boot Optimization Table"},
{ACPI_SIG_VIOT, "Virtual I/O Translation Table"},
{ACPI_SIG_WAET, "Windows ACPI Emulated Devices Table"},
@ -260,7 +264,7 @@ const AH_TABLE AcpiGbl_SupportedTables[] =
{ACPI_SIG_WDRT, "Watchdog Resource Table"},
{ACPI_SIG_WPBT, "Windows Platform Binary Table"},
{ACPI_SIG_WSMT, "Windows SMM Security Mitigations Table"},
{ACPI_SIG_XENV, "Xen Environment table"},
{ACPI_SIG_XENV, "Xen Environment Table"},
{ACPI_SIG_XSDT, "Extended System Description Table"},
{NULL, NULL}
};

View File

@ -187,6 +187,7 @@ static const char *AcpiDmAsfSubnames[] =
static const char *AcpiDmCedtSubnames[] =
{
"CXL Host Bridge Structure",
"CXL Fixed Memory Window Structure",
"Unknown Subtable Type" /* Reserved */
};
@ -350,6 +351,7 @@ static const char *AcpiDmMadtSubnames[] =
"Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */
"Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */
"Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */
"Mutiprocessor Wakeup", /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */
"Unknown Subtable Type" /* Reserved */
};
@ -401,6 +403,12 @@ static const char *AcpiDmPpttSubnames[] =
"Unknown Subtable Type" /* Reserved */
};
static const char *AcpiDmRgrtSubnames[] =
{
"Unknown/Reserved Image Type", /* ACPI_RGRT_TYPE_RESERVED0 */
"Type PNG" /* ACPI_RGRT_IMAGE_TYPE_PNG */
};
static const char *AcpiDmSdevSubnames[] =
{
"Namespace Device", /* ACPI_SDEV_TYPE_NAMESPACE_DEVICE */
@ -438,9 +446,28 @@ static const char *AcpiDmTpm2Subnames[] =
static const char *AcpiDmIvrsSubnames[] =
{
"Hardware Definition Block",
"Memory Definition Block",
"Unknown Subtable Type" /* Reserved */
"Hardware Definition Block (IVHD)",
"Hardware Definition Block - Mixed Format (IVHD)",
"Memory Definition Block (IVMD)",
"Unknown/Reserved Subtable Type" /* Reserved */
};
static const char *AcpiDmIvrsDevEntryNames[] =
{
"Unknown/Reserved Device Entry Type", /* 0- Reserved */
"Device Entry: Select All Devices", /* 1 */
"Device Entry: Select One Device", /* 2 */
"Device Entry: Start of Range", /* 3 */
"Device Entry: End of Range", /* 4 */
"Device Entry: Alias Select", /* 66 */
"Device Entry: Alias Start of Range", /* 67 */
"Unknown/Reserved Device Entry Type", /* 68- Reserved */
"Unknown/Reserved Device Entry Type", /* 69- Reserved */
"Device Entry: Extended Select", /* 70 */
"Device Entry: Extended Start of Range", /* 71 */
"Device Entry: Special Device", /* 72 */
"Device Entry: ACPI HID Named Device", /* 240 */
"Unknown/Reserved Device Entry Type" /* Reserved */
};
static const char *AcpiDmLpitSubnames[] =
@ -507,6 +534,7 @@ static const char *AcpiDmGasAccessWidth[] =
const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{
{ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf},
{ACPI_SIG_BDAT, AcpiDmTableInfoBdat, NULL, NULL, TemplateBdat},
{ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert},
{ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt},
{ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot},
@ -541,7 +569,9 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat},
{ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt},
{ACPI_SIG_PPTT, NULL, AcpiDmDumpPptt, DtCompilePptt, TemplatePptt},
{ACPI_SIG_PRMT, NULL, AcpiDmDumpPrmt, DtCompilePrmt, TemplatePrmt},
{ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf},
{ACPI_SIG_RGRT, NULL, AcpiDmDumpRgrt, DtCompileRgrt, TemplateRgrt},
{ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt},
{ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt},
{ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst},
@ -553,6 +583,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi},
{ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat},
{ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao},
{ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl, DtCompileSvkl, TemplateSvkl},
{ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa},
{ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2},
{ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi},
@ -940,8 +971,8 @@ AcpiDmDumpTable (
if (SubtableLength && (Info->Offset >= SubtableLength))
{
AcpiOsPrintf (
"/**** ACPI subtable terminates early - "
"may be older version (dump table) */\n");
"/**** ACPI subtable terminates early (Len %u) - "
"may be older version (dump table) */\n", SubtableLength);
/* Move on to next subtable */
@ -966,11 +997,13 @@ AcpiDmDumpTable (
case ACPI_DMT_ACCWIDTH:
case ACPI_DMT_CEDT:
case ACPI_DMT_IVRS:
case ACPI_DMT_IVRS_DE:
case ACPI_DMT_GTDT:
case ACPI_DMT_MADT:
case ACPI_DMT_PCCT:
case ACPI_DMT_PMTT:
case ACPI_DMT_PPTT:
case ACPI_DMT_RGRT:
case ACPI_DMT_SDEV:
case ACPI_DMT_SRAT:
case ACPI_DMT_ASF:
@ -1077,6 +1110,11 @@ AcpiDmDumpTable (
ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1;
break;
case ACPI_DMT_IVRS_UNTERMINATED_STRING:
ByteLength = ((ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, Target) -1)->UidLength);
break;
case ACPI_DMT_GAS:
if (!LastOutputBlankLine)
@ -1273,7 +1311,7 @@ AcpiDmDumpTable (
/* Convert 16-byte UUID buffer to 36-byte formatted UUID string */
(void) AuConvertUuidToString ((char *) Target, AslGbl_MsgBuffer);
(void) AcpiUtConvertUuidToString ((char *) Target, AslGbl_MsgBuffer);
AcpiOsPrintf ("%s\n", AslGbl_MsgBuffer);
break;
@ -1283,6 +1321,11 @@ AcpiDmDumpTable (
AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target));
break;
case ACPI_DMT_IVRS_UNTERMINATED_STRING:
AcpiOsPrintf ("\"%.*s\"\n", ByteLength, ACPI_CAST_PTR (char, Target));
break;
/* Fixed length ASCII name fields */
case ACPI_DMT_SIG:
@ -1684,6 +1727,20 @@ AcpiDmDumpTable (
AcpiDmDumpBuffer (Target, 0, ByteLength, 0, NULL);
break;
case ACPI_DMT_RGRT:
/* RGRT subtable types */
Temp8 = *Target;
if (Temp8 >= ACPI_RGRT_TYPE_RESERVED)
{
Temp8 = ACPI_RGRT_TYPE_RESERVED0;
}
AcpiOsPrintf (UINT8_FORMAT, *Target,
AcpiDmRgrtSubnames[Temp8]);
break;
case ACPI_DMT_SDEV:
/* SDEV subtable types */
@ -1750,21 +1807,62 @@ AcpiDmDumpTable (
{
case ACPI_IVRS_TYPE_HARDWARE1:
case ACPI_IVRS_TYPE_HARDWARE2:
case ACPI_IVRS_TYPE_HARDWARE3:
Name = AcpiDmIvrsSubnames[0];
break;
case ACPI_IVRS_TYPE_HARDWARE3:
Name = AcpiDmIvrsSubnames[1];
break;
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
Name = AcpiDmIvrsSubnames[1];
Name = AcpiDmIvrsSubnames[2];
break;
default:
Name = AcpiDmIvrsSubnames[2];
Name = AcpiDmIvrsSubnames[3];
break;
}
AcpiOsPrintf (UINT8_FORMAT, *Target, Name);
break;
case ACPI_DMT_IVRS_DE:
/* IVRS device entry types */
Temp8 = *Target;
switch (Temp8)
{
case ACPI_IVRS_TYPE_ALL:
case ACPI_IVRS_TYPE_SELECT:
case ACPI_IVRS_TYPE_START:
case ACPI_IVRS_TYPE_END:
Name = AcpiDmIvrsDevEntryNames[Temp8];
break;
case ACPI_IVRS_TYPE_ALIAS_SELECT:
case ACPI_IVRS_TYPE_ALIAS_START:
case ACPI_IVRS_TYPE_EXT_SELECT:
case ACPI_IVRS_TYPE_EXT_START:
case ACPI_IVRS_TYPE_SPECIAL:
Name = AcpiDmIvrsDevEntryNames[Temp8 - 61];
break;
case ACPI_IVRS_TYPE_HID:
Name = AcpiDmIvrsDevEntryNames[Temp8 - 228];
break;
default:
Name = AcpiDmIvrsDevEntryNames[0]; /* Unknown/Reserved */
break;
}

View File

@ -153,6 +153,7 @@
#include <contrib/dev/acpica/include/accommon.h>
#include <contrib/dev/acpica/include/acdisasm.h>
#include <contrib/dev/acpica/include/actables.h>
#include <contrib/dev/acpica/compiler/aslcompiler.h>
/* This module used for application-level code only */
@ -483,7 +484,18 @@ AcpiDmDumpIort (
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a IVRS
* DESCRIPTION: Format the contents of a IVRS. Notes:
* The IVRS is essentially a flat table, with the following
* structure:
* <Main ACPI Table Header>
* <Main subtable - virtualization info>
* <IVHD>
* <Device Entries>
* ...
* <IVHD>
* <Device Entries>
* <IVMD>
* ...
*
******************************************************************************/
@ -513,36 +525,36 @@ AcpiDmDumpIvrs (
/* Subtables */
Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
while (Offset < Table->Length)
{
/* Common subtable header */
AcpiOsPrintf ("\n");
Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
Subtable->Length, AcpiDmTableInfoIvrsHdr);
if (ACPI_FAILURE (Status))
{
return;
}
switch (Subtable->Type)
{
/* Type 10h, IVHD (I/O Virtualization Hardware Definition) */
case ACPI_IVRS_TYPE_HARDWARE1:
InfoTable = AcpiDmTableInfoIvrs0;
AcpiOsPrintf ("\n");
InfoTable = AcpiDmTableInfoIvrsHware1;
break;
/* Types 11h, 40h, IVHD (I/O Virtualization Hardware Definition) */
case ACPI_IVRS_TYPE_HARDWARE2:
case ACPI_IVRS_TYPE_HARDWARE3:
InfoTable = AcpiDmTableInfoIvrs01;
AcpiOsPrintf ("\n");
InfoTable = AcpiDmTableInfoIvrsHware23;
break;
/* Types 20h-22h, IVMD (I/O Virtualization Memory Definition Block) */
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
InfoTable = AcpiDmTableInfoIvrs1;
AcpiOsPrintf ("\n");
InfoTable = AcpiDmTableInfoIvrsMemory;
break;
default:
@ -562,7 +574,6 @@ AcpiDmDumpIvrs (
/* Dump the subtable */
AcpiOsPrintf ("\n");
Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
Subtable->Length, InfoTable);
if (ACPI_FAILURE (Status))
@ -570,7 +581,7 @@ AcpiDmDumpIvrs (
return;
}
/* The hardware subtable can contain multiple device entries */
/* The hardware subtables (IVHD) can contain multiple device entries */
if (Subtable->Type == ACPI_IVRS_TYPE_HARDWARE1 ||
Subtable->Type == ACPI_IVRS_TYPE_HARDWARE2 ||
@ -584,16 +595,19 @@ AcpiDmDumpIvrs (
}
else
{
/* ACPI_IVRS_TYPE_HARDWARE2 subtable type */
/* ACPI_IVRS_TYPE_HARDWARE2, HARDWARE3 subtable types */
EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE2);
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, Subtable,
sizeof (ACPI_IVRS_HARDWARE2));
}
/* Process all of the Device Entries */
while (EntryOffset < (Offset + Subtable->Length))
{
AcpiOsPrintf ("\n");
/*
* Upper 2 bits of Type encode the length of the device entry
*
@ -645,7 +659,7 @@ AcpiDmDumpIvrs (
case ACPI_IVRS_TYPE_HID:
EntryLength = 22;
EntryLength = 4;
InfoTable = AcpiDmTableInfoIvrsHid;
break;
@ -669,21 +683,87 @@ AcpiDmDumpIvrs (
HidSubtable = ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, DeviceEntry);
EntryOffset += EntryLength;
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry,
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, HidSubtable,
EntryLength);
if (EntryType == ACPI_IVRS_TYPE_HID)
{
EntryLength = HidSubtable->UidLength;
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
Table, EntryLength, AcpiDmTableInfoIvrsHid1);
/*
* Determine if the HID is an integer or a string.
* An integer is defined to be 32 bits, with the upper 32 bits
* set to zero. (from the ACPI Spec): "The HID can be a 32-bit
* integer or a character string. If an integer, the lower
* 4 bytes of the field contain the integer and the upper
* 4 bytes are padded with 0".
*/
if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiHid))
{
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
&HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidInteger);
}
else
{
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
&HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidString);
}
if (ACPI_FAILURE (Status))
{
return;
}
EntryOffset += EntryLength;
EntryOffset += 8;
/*
* Determine if the CID is an integer or a string. The format
* of the CID is the same as the HID above. From ACPI Spec:
* "If present, CID must be a single Compatible Device ID
* following the same format as the HID field."
*/
if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiCid))
{
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
&HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidInteger);
}
else
{
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
&HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidString);
}
if (ACPI_FAILURE (Status))
{
return;
}
EntryOffset += 8;
EntryLength = HidSubtable->UidLength;
if (EntryLength > ACPI_IVRS_UID_NOT_PRESENT)
{
/* Dump the UID based upon the UidType field (String or Integer) */
if (HidSubtable->UidType == ACPI_IVRS_UID_IS_STRING)
{
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
&HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidString);
if (ACPI_FAILURE (Status))
{
return;
}
}
else /* ACPI_IVRS_UID_IS_INTEGER */
{
Status = AcpiDmDumpTable (Table->Length, EntryOffset,
&HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidInteger);
if (ACPI_FAILURE (Status))
{
return;
}
}
}
EntryOffset += EntryLength+2;
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER,
DeviceEntry, EntryLength);
Table, EntryOffset);
}
}
}
@ -1923,6 +2003,108 @@ AcpiDmDumpPptt (
}
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpPrmt
*
* PARAMETERS: Table - A PRMT table
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a PRMT. This table type consists
* of an open-ended number of subtables.
*
******************************************************************************/
void
AcpiDmDumpPrmt (
ACPI_TABLE_HEADER *Table)
{
UINT32 CurrentOffset = sizeof (ACPI_TABLE_HEADER);
ACPI_TABLE_PRMT_HEADER *PrmtHeader;
ACPI_PRMT_MODULE_INFO *PrmtModuleInfo;
ACPI_PRMT_HANDLER_INFO *PrmtHandlerInfo;
ACPI_STATUS Status;
UINT32 i, j;
/* Main table header */
PrmtHeader = ACPI_ADD_PTR (ACPI_TABLE_PRMT_HEADER, Table, CurrentOffset);
Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtHeader,
sizeof (ACPI_TABLE_PRMT_HEADER), AcpiDmTableInfoPrmtHdr);
if (ACPI_FAILURE (Status))
{
AcpiOsPrintf ("Invalid PRMT header\n");
return;
}
CurrentOffset += sizeof (ACPI_TABLE_PRMT_HEADER);
/* PRM Module Information Structure array */
for (i = 0; i < PrmtHeader->ModuleInfoCount; ++i)
{
PrmtModuleInfo = ACPI_ADD_PTR (ACPI_PRMT_MODULE_INFO, Table, CurrentOffset);
Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtModuleInfo,
sizeof (ACPI_PRMT_MODULE_INFO), AcpiDmTableInfoPrmtModule);
CurrentOffset += sizeof (ACPI_PRMT_MODULE_INFO);
/* PRM handler information structure array */
for (j = 0; j < PrmtModuleInfo->HandlerInfoCount; ++j)
{
PrmtHandlerInfo = ACPI_ADD_PTR (ACPI_PRMT_HANDLER_INFO, Table, CurrentOffset);
Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtHandlerInfo,
sizeof (ACPI_PRMT_HANDLER_INFO), AcpiDmTableInfoPrmtHandler);
CurrentOffset += sizeof (ACPI_PRMT_HANDLER_INFO);
}
}
}
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpRgrt
*
* PARAMETERS: Table - A RGRT table
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a RGRT
*
******************************************************************************/
void
AcpiDmDumpRgrt (
ACPI_TABLE_HEADER *Table)
{
ACPI_STATUS Status;
ACPI_TABLE_RGRT *Subtable = ACPI_CAST_PTR (ACPI_TABLE_RGRT, Table);
UINT32 Offset = sizeof (ACPI_TABLE_RGRT);
/* Main table */
Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoRgrt);
if (ACPI_FAILURE (Status))
{
return;
}
/* Dump the binary image as a subtable */
Status = AcpiDmDumpTable (Table->Length, Offset, &Subtable->Image,
Table->Length - Offset, AcpiDmTableInfoRgrt0);
if (ACPI_FAILURE (Status))
{
return;
}
}
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpS3pt

View File

@ -420,6 +420,65 @@ AcpiDmDumpStao (
}
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpSvkl
*
* PARAMETERS: Table - A SVKL table
*
* RETURN: None
*
* DESCRIPTION: Format the contents of a SVKL. This is a variable-length
* table that contains an open-ended number of key subtables at
* the end of the header.
*
* NOTES: SVKL is essentially a flat table, with a small main table and
* a variable number of a single type of subtable.
*
******************************************************************************/
void
AcpiDmDumpSvkl (
ACPI_TABLE_HEADER *Table)
{
ACPI_STATUS Status;
UINT32 Length = Table->Length;
UINT32 Offset = sizeof (ACPI_TABLE_SVKL);
ACPI_SVKL_KEY *Subtable;
/* Main table */
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSvkl);
if (ACPI_FAILURE (Status))
{
return;
}
/* The rest of the table consists of subtables (single type) */
Subtable = ACPI_ADD_PTR (ACPI_SVKL_KEY, Table, Offset);
while (Offset < Table->Length)
{
/* Dump the subtable */
AcpiOsPrintf ("\n");
Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
sizeof (ACPI_SVKL_KEY), AcpiDmTableInfoSvkl0);
if (ACPI_FAILURE (Status))
{
return;
}
/* Point to next subtable */
Offset += sizeof (ACPI_SVKL_KEY);
Subtable = ACPI_ADD_PTR (ACPI_SVKL_KEY, Subtable,
sizeof (ACPI_SVKL_KEY));
}
}
/*******************************************************************************
*
* FUNCTION: AcpiDmDumpTcpa
@ -502,6 +561,7 @@ AcpiDmDumpTcpa (
* DESCRIPTION: Format the contents of a TPM2.
*
******************************************************************************/
static void
AcpiDmDumpTpm2Rev3 (
ACPI_TABLE_HEADER *Table)

View File

@ -295,6 +295,19 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] =
};
/*******************************************************************************
*
* BDAT - BIOS Data ACPI Table
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoBdat[] =
{
{ACPI_DMT_GAS, ACPI_BDAT_OFFSET (Gas), "BDAT Generic Address", 0},
ACPI_DMT_TERMINATOR
};
/*******************************************************************************
*
* BERT - Boot Error Record table

View File

@ -414,23 +414,24 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[] =
ACPI_DMT_TERMINATOR
};
/* Common Subtable header (one per Subtable) */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[] =
{
{ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0},
{ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags", 0},
{ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH},
{ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0},
ACPI_DMT_TERMINATOR
};
/* IVRS subtables */
/* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware1[] =
{
{ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0},
{ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
{ACPI_DMT_FLAG0, ACPI_IVRS_FLAG_OFFSET (Flags,0), "HtTunEn", 0},
{ACPI_DMT_FLAG1, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PassPW", 0},
{ACPI_DMT_FLAG2, ACPI_IVRS_FLAG_OFFSET (Flags,0), "ResPassPW", 0},
{ACPI_DMT_FLAG3, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Isoc Control", 0},
{ACPI_DMT_FLAG4, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Iotlb Support", 0},
{ACPI_DMT_FLAG5, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Coherent", 0},
{ACPI_DMT_FLAG6, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Prefetch Support", 0},
{ACPI_DMT_FLAG7, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PPR Support", 0},
{ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH},
{ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0},
{ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (CapabilityOffset), "Capability Offset", 0},
{ACPI_DMT_UINT64, ACPI_IVRS0_OFFSET (BaseAddress), "Base Address", 0},
{ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (PciSegmentGroup), "PCI Segment Group", 0},
@ -439,24 +440,44 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] =
ACPI_DMT_TERMINATOR
};
/* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */
/* 0x11, 0x40: I/O Virtualization Hardware Definition (IVHD) Block */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs01[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware23[] =
{
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (CapabilityOffset), "Capability Offset", 0},
{ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (BaseAddress), "Base Address", 0},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (PciSegmentGroup), "PCI Segment Group", 0},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Info), "Virtualization Info", 0},
{ACPI_DMT_UINT32, ACPI_IVRS01_OFFSET (Attributes), "Attributes", 0},
{ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (EfrRegisterImage), "EFR Image", 0},
{ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0},
{ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
{ACPI_DMT_FLAG0, ACPI_IVRS_FLAG_OFFSET (Flags,0), "HtTunEn", 0},
{ACPI_DMT_FLAG1, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PassPW", 0},
{ACPI_DMT_FLAG2, ACPI_IVRS_FLAG_OFFSET (Flags,0), "ResPassPW", 0},
{ACPI_DMT_FLAG3, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Isoc Control", 0},
{ACPI_DMT_FLAG4, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Iotlb Support", 0},
{ACPI_DMT_FLAG5, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Coherent", 0},
{ACPI_DMT_FLAG6, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Prefetch Support", 0},
{ACPI_DMT_FLAG7, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PPR Support", 0},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Header.Length), "Length", DT_LENGTH},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Header.DeviceId), "DeviceId", 0},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (CapabilityOffset), "Capability Offset", 0},
{ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (BaseAddress), "Base Address", 0},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (PciSegmentGroup), "PCI Segment Group", 0},
{ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Info), "Virtualization Info", 0},
{ACPI_DMT_UINT32, ACPI_IVRS01_OFFSET (Attributes), "Attributes", 0},
{ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (EfrRegisterImage), "EFR Image", 0},
{ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (Reserved), "Reserved", 0},
ACPI_DMT_TERMINATOR
};
/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */
/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Device Entry Block */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsMemory[] =
{
{ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0},
{ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG},
{ACPI_DMT_FLAG0, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Unity", 0},
{ACPI_DMT_FLAG1, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Readable", 0},
{ACPI_DMT_FLAG2, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Writeable", 0},
{ACPI_DMT_FLAG3, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Exclusion Range", 0},
{ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH},
{ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0},
{ACPI_DMT_UINT16, ACPI_IVRS1_OFFSET (AuxData), "Auxiliary Data", 0},
{ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (Reserved), "Reserved", 0},
{ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (StartAddress), "Start Address", 0},
@ -467,19 +488,26 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] =
/* Device entry header for IVHD block */
#define ACPI_DMT_IVRS_DE_HEADER \
{ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (Type), "Entry Type", 0}, \
{ACPI_DMT_IVRS_DE, ACPI_IVRSD_OFFSET (Type), "Subtable Type", 0}, \
{ACPI_DMT_UINT16, ACPI_IVRSD_OFFSET (Id), "Device ID", 0}, \
{ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting", 0}
{ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting (decoded below)", 0}, \
{ACPI_DMT_FLAG0, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "INITPass", 0}, \
{ACPI_DMT_FLAG1, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "EIntPass", 0}, \
{ACPI_DMT_FLAG2, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "NMIPass", 0}, \
{ACPI_DMT_FLAG3, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "Reserved", 0}, \
{ACPI_DMT_FLAGS4, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "System MGMT", 0}, \
{ACPI_DMT_FLAG6, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "LINT0 Pass", 0}, \
{ACPI_DMT_FLAG7, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "LINT1 Pass", 0}
/* 4-byte device entry */
/* 4-byte device entry (Types 1,2,3,4) */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[] =
{
ACPI_DMT_IVRS_DE_HEADER,
{ACPI_DMT_EXIT, 0, NULL, 0},
ACPI_DMT_TERMINATOR
};
/* 8-byte device entry */
/* 8-byte device entry (Type Alias Select, Alias Start of Range) */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] =
{
@ -490,7 +518,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] =
ACPI_DMT_TERMINATOR
};
/* 8-byte device entry */
/* 8-byte device entry (Type Extended Select, Extended Start of Range) */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] =
{
@ -499,7 +527,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] =
ACPI_DMT_TERMINATOR
};
/* 8-byte device entry */
/* 8-byte device entry (Type Special Device) */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] =
{
@ -510,21 +538,50 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] =
ACPI_DMT_TERMINATOR
};
/* Variable-length device entry */
/* Variable-length Device Entry Type 0xF0 */
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[] =
{
ACPI_DMT_IVRS_DE_HEADER,
{ACPI_DMT_NAME8, ACPI_IVRSHID_OFFSET (AcpiHid), "ACPI HID", 0},
{ACPI_DMT_NAME8, ACPI_IVRSHID_OFFSET (AcpiCid), "ACPI CID", 0},
{ACPI_DMT_UINT8, ACPI_IVRSHID_OFFSET (UidType), "UID Format", DT_DESCRIBES_OPTIONAL},
{ACPI_DMT_UINT8, ACPI_IVRSHID_OFFSET (UidLength), "UID Length", DT_DESCRIBES_OPTIONAL},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidString[] =
{
{ACPI_DMT_RAW_BUFFER, 0, "UID", DT_OPTIONAL},
{ACPI_DMT_UINT8, 0, "UID Format", DT_DESCRIBES_OPTIONAL},
{ACPI_DMT_UINT8, 1, "UID Length", DT_DESCRIBES_OPTIONAL},
{ACPI_DMT_IVRS_UNTERMINATED_STRING, 2, "UID", DT_OPTIONAL},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidInteger[] =
{
{ACPI_DMT_UINT8, 0, "UID Format", DT_DESCRIBES_OPTIONAL},
{ACPI_DMT_UINT8, 1, "UID Length", DT_DESCRIBES_OPTIONAL},
{ACPI_DMT_UINT64, 2, "UID", DT_OPTIONAL},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidString[] =
{
{ACPI_DMT_NAME8, 0, "ACPI HID", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidInteger[] =
{
{ACPI_DMT_UINT64, 0, "ACPI HID", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidString[] =
{
{ACPI_DMT_NAME8, 0, "ACPI CID", 0},
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidInteger[] =
{
{ACPI_DMT_UINT64, 0, "ACPI CID", 0},
ACPI_DMT_TERMINATOR
};
@ -1537,6 +1594,52 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[] =
};
/*******************************************************************************
*
* PRMT - Platform Runtime Mechanism Table
* Version 1
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHdr[] =
{
{ACPI_DMT_UUID, ACPI_PRMTH_OFFSET (PlatformGuid[0]), "Platform GUID", 0},
{ACPI_DMT_UINT32, ACPI_PRMTH_OFFSET (ModuleInfoOffset), "Module info offset", 0},
{ACPI_DMT_UINT32, ACPI_PRMTH_OFFSET (ModuleInfoCount), "Module info count", 0},
ACPI_DMT_NEW_LINE,
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtModule[] =
{
{ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (Revision), "Revision", 0},
{ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (Length), "Length", 0},
{ACPI_DMT_UUID, ACPI_PRMT0_OFFSET (ModuleGuid[0]), "Module GUID", 0},
{ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (MajorRev), "Major Revision", 0},
{ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (MinorRev), "Minor Revision", 0},
{ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (HandlerInfoCount), "Handler Info Count", 0},
{ACPI_DMT_UINT32, ACPI_PRMT0_OFFSET (HandlerInfoOffset), "Handler Info Offset", 0},
{ACPI_DMT_UINT64, ACPI_PRMT0_OFFSET (MmioListPointer), "Mmio List pointer", 0},
ACPI_DMT_NEW_LINE,
ACPI_DMT_TERMINATOR
};
ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[] =
{
{ACPI_DMT_UINT16, ACPI_PRMT1_OFFSET (Revision), "Revision", 0},
{ACPI_DMT_UINT16, ACPI_PRMT1_OFFSET (Length), "Length", 0},
{ACPI_DMT_UUID, ACPI_PRMT1_OFFSET (HandlerGuid[0]), "Handler GUID", 0},
{ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (HandlerAddress), "Handler address", 0},
{ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (StaticDataBufferAddress),"Satic Data Address", 0},
{ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (AcpiParamBufferAddress), "ACPI Parameter Address", 0},
ACPI_DMT_NEW_LINE,
ACPI_DMT_TERMINATOR
};
/*******************************************************************************
*
* RASF - RAS Feature table
@ -1550,6 +1653,31 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[] =
};
/*******************************************************************************
*
* RGRT - Regulatory Graphics Resource Table
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[] =
{
{ACPI_DMT_UINT16, ACPI_RGRT_OFFSET (Version), "Version", 0},
{ACPI_DMT_RGRT, ACPI_RGRT_OFFSET (ImageType), "Image Type", 0},
{ACPI_DMT_UINT8, ACPI_RGRT_OFFSET (Reserved), "Reserved", 0},
ACPI_DMT_TERMINATOR
};
/*
* We treat the binary image field as its own subtable (to make
* ACPI_DMT_RAW_BUFFER work properly).
*/
ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[] =
{
{ACPI_DMT_RAW_BUFFER, 0, "Image", 0},
ACPI_DMT_TERMINATOR
};
/*******************************************************************************
*
* S3PT - S3 Performance Table
@ -1734,4 +1862,5 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSdev1b[] =
{ACPI_DMT_RAW_BUFFER, 0, "Vendor Data", 0}, /*, DT_OPTIONAL}, */
ACPI_DMT_TERMINATOR
};
/*! [End] no source code translation !*/

View File

@ -403,6 +403,30 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[] =
};
/*******************************************************************************
*
* SVKL - Storage Volume Key Location table
*
******************************************************************************/
ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[] =
{
{ACPI_DMT_UINT32, ACPI_SVKL_OFFSET (Count), "Key Count", 0},
ACPI_DMT_TERMINATOR
};
/* SVKL subtables */
ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[] =
{
{ACPI_DMT_UINT16, ACPI_SVKL0_OFFSET (Type), "Key Type", 0},
{ACPI_DMT_UINT16, ACPI_SVKL0_OFFSET (Format), "Key Format", 0},
{ACPI_DMT_UINT32, ACPI_SVKL0_OFFSET (Size), "Key Size", 0},
{ACPI_DMT_UINT64, ACPI_SVKL0_OFFSET (Address), "Key Address", 0},
ACPI_DMT_TERMINATOR
};
/*******************************************************************************
*
* TCPA - Trusted Computing Platform Alliance table (Client)

View File

@ -1224,6 +1224,10 @@ DbgPrint (
#define ASL_PARSE_OUTPUT 1
#define ASL_TREE_OUTPUT 2
BOOLEAN
UtIsIdInteger (
UINT8 *Target);
UINT8
UtIsBigEndianMachine (
void);

View File

@ -400,14 +400,16 @@ const char *AslTableCompilerMsgs [] =
/* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name",
/* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant",
/* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents",
/* ASL_MSG_RESERVED_VALUE */ "Reserved field",
/* ASL_MSG_RESERVED_FIELD */ "Reserved field",
/* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined",
/* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type",
/* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature",
/* ASL_MSG_ZERO_VALUE */ "Value must be non-zero",
/* ASL_MSG_INVALID_LABEL */ "Invalid field label detected",
/* ASL_MSG_BUFFER_LIST */ "Invalid buffer initializer list",
/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list"
/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list",
/* ASL_MSG_UNKNOWN_FORMAT */ "Unknown format value",
/* ASL_MSG_RESERVED_VALUE */ "Value for field is reserved or unknown",
};
/* Preprocessor */

View File

@ -402,7 +402,7 @@ typedef enum
ASL_MSG_INVALID_FIELD_NAME,
ASL_MSG_INVALID_HEX_INTEGER,
ASL_MSG_OEM_TABLE,
ASL_MSG_RESERVED_VALUE,
ASL_MSG_RESERVED_FIELD,
ASL_MSG_UNKNOWN_LABEL,
ASL_MSG_UNKNOWN_SUBTABLE,
ASL_MSG_UNKNOWN_TABLE,
@ -410,6 +410,8 @@ typedef enum
ASL_MSG_INVALID_LABEL,
ASL_MSG_BUFFER_LIST,
ASL_MSG_ENTRY_LIST,
ASL_MSG_UNKNOWN_FORMAT,
ASL_MSG_RESERVED_VALUE,
/* These messages are used by the Preprocessor only */

View File

@ -206,6 +206,46 @@ UtIsBigEndianMachine (
}
/*******************************************************************************
*
* FUNCTION: UtIsIdInteger
*
* PARAMETERS: Pointer to an ACPI ID (HID, CID) string
*
* RETURN: TRUE if string is an integer
* FALSE if string is not an integer
*
* DESCRIPTION: Determine whether the input ACPI ID string can be converted to
* an integer value.
*
******************************************************************************/
BOOLEAN
UtIsIdInteger (
UINT8 *Target)
{
UINT32 i;
/* The first three characters of the string must be alphabetic */
for (i = 0; i < 3; i++)
{
if (!isalpha ((int) Target[i]))
{
break;
}
}
if (i < 3)
{
return (TRUE);
}
return (FALSE);
}
/******************************************************************************
*
* FUNCTION: UtQueryForOverwrite

View File

@ -212,50 +212,3 @@ AuValidateUuid (
return (AE_OK);
}
/*******************************************************************************
*
* FUNCTION: AuConvertUuidToString
*
* PARAMETERS: UuidBuffer - 16-byte UUID buffer
* OutString - 36-byte formatted UUID string
*
* RETURN: Status
*
* DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string
* OutString must be 37 bytes to include null terminator.
*
******************************************************************************/
ACPI_STATUS
AuConvertUuidToString (
char *UuidBuffer,
char *OutString)
{
UINT32 i;
if (!UuidBuffer || !OutString)
{
return (AE_BAD_PARAMETER);
}
for (i = 0; i < UUID_BUFFER_LENGTH; i++)
{
OutString[AcpiGbl_MapToUuidOffset[i]] =
AcpiUtHexToAsciiChar (UuidBuffer[i], 4);
OutString[AcpiGbl_MapToUuidOffset[i] + 1] =
AcpiUtHexToAsciiChar (UuidBuffer[i], 0);
}
/* Insert required hyphens (dashes) */
OutString[UUID_HYPHEN1_OFFSET] =
OutString[UUID_HYPHEN2_OFFSET] =
OutString[UUID_HYPHEN3_OFFSET] =
OutString[UUID_HYPHEN4_OFFSET] = '-';
OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */
return (AE_OK);
}

View File

@ -673,6 +673,14 @@ ACPI_STATUS
DtCompilePptt (
void **PFieldList);
ACPI_STATUS
DtCompilePrmt (
void **PFieldList);
ACPI_STATUS
DtCompileRgrt (
void **PFieldList);
ACPI_STATUS
DtCompileRsdt (
void **PFieldList);
@ -701,6 +709,10 @@ ACPI_STATUS
DtCompileStao (
void **PFieldList);
ACPI_STATUS
DtCompileSvkl (
void **PFieldList);
ACPI_STATUS
DtCompileTcpa (
void **PFieldList);
@ -743,6 +755,7 @@ DtGetGenericTableInfo (
extern const unsigned char TemplateAsf[];
extern const unsigned char TemplateBoot[];
extern const unsigned char TemplateBdat[];
extern const unsigned char TemplateBert[];
extern const unsigned char TemplateBgrt[];
extern const unsigned char TemplateCedt[];
@ -776,7 +789,9 @@ extern const unsigned char TemplatePdtt[];
extern const unsigned char TemplatePhat[];
extern const unsigned char TemplatePmtt[];
extern const unsigned char TemplatePptt[];
extern const unsigned char TemplatePrmt[];
extern const unsigned char TemplateRasf[];
extern const unsigned char TemplateRgrt[];
extern const unsigned char TemplateRsdt[];
extern const unsigned char TemplateS3pt[];
extern const unsigned char TemplateSbst[];
@ -788,6 +803,7 @@ extern const unsigned char TemplateSpcr[];
extern const unsigned char TemplateSpmi[];
extern const unsigned char TemplateSrat[];
extern const unsigned char TemplateStao[];
extern const unsigned char TemplateSvkl[];
extern const unsigned char TemplateTcpa[];
extern const unsigned char TemplateTpm2[];
extern const unsigned char TemplateUefi[];

View File

@ -434,14 +434,14 @@ DtCompileInteger (
{
if (Value != 1)
{
DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field,
DtError (ASL_WARNING, ASL_MSG_RESERVED_FIELD, Field,
"Must be one, setting to one");
Value = 1;
}
}
else if (Value != 0)
{
DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field,
DtError (ASL_WARNING, ASL_MSG_RESERVED_FIELD, Field,
"Must be zero, setting to zero");
Value = 0;
}

View File

@ -1086,9 +1086,9 @@ DtDumpSubtableTree (
{
DbgPrint (ASL_DEBUG_OUTPUT,
"[%.04X] %24s %*s%p (%.02X) - (%.02X)\n",
"[%.04X] %24s %*s%p (%.02X) - (%.02X) %.02X\n",
Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ",
Subtable, Subtable->Length, Subtable->TotalLength);
Subtable, Subtable->Length, Subtable->TotalLength, *Subtable->Buffer);
}
@ -1123,7 +1123,7 @@ DtDumpSubtableList (
DtWalkTableTree (AslGbl_RootTable, DtDumpSubtableInfo, NULL, NULL);
DbgPrint (ASL_DEBUG_OUTPUT,
"\nSubtable Tree: (Depth, Name, Subtable, Length, TotalLength)\n\n");
"\nSubtable Tree: (Depth, Name, Subtable, Length, TotalLength, Integer Value)\n\n");
DtWalkTableTree (AslGbl_RootTable, DtDumpSubtableTree, NULL, NULL);
DbgPrint (ASL_DEBUG_OUTPUT, "\n");

View File

@ -2058,7 +2058,18 @@ DtCompileIort (
*
* RETURN: Status
*
* DESCRIPTION: Compile IVRS.
* DESCRIPTION: Compile IVRS. Notes:
* The IVRS is essentially a flat table, with the following
* structure:
* <Main ACPI Table Header>
* <Main subtable - virtualization info>
* <IVHD>
* <Device Entries>
* ...
* <IVHD>
* <Device Entries>
* <IVMD>
* ...
*
*****************************************************************************/
@ -2069,13 +2080,17 @@ DtCompileIvrs (
ACPI_STATUS Status;
DT_SUBTABLE *Subtable;
DT_SUBTABLE *ParentTable;
DT_SUBTABLE *MainSubtable;
DT_FIELD **PFieldList = (DT_FIELD **) List;
DT_FIELD *SubtableStart;
ACPI_DMTABLE_INFO *InfoTable;
ACPI_IVRS_HEADER *IvrsHeader;
UINT8 EntryType;
ACPI_DMTABLE_INFO *InfoTable = NULL;
UINT8 SubtableType;
UINT8 Temp64[16];
UINT8 Temp8;
/* Main table */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrs,
&Subtable);
if (ACPI_FAILURE (Status))
@ -2085,11 +2100,98 @@ DtCompileIvrs (
ParentTable = DtPeekSubtable ();
DtInsertSubtable (ParentTable, Subtable);
DtPushSubtable (Subtable);
/* Save a pointer to the main subtable */
MainSubtable = Subtable;
while (*PFieldList)
{
SubtableStart = *PFieldList;
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHdr,
/* Compile the SubtableType integer */
DtCompileInteger (&SubtableType, *PFieldList, 1, 0);
switch (SubtableType)
{
/* Type 10h, IVHD (I/O Virtualization Hardware Definition) */
case ACPI_IVRS_TYPE_HARDWARE1:
InfoTable = AcpiDmTableInfoIvrsHware1;
break;
/* Types 11h, 40h, IVHD (I/O Virtualization Hardware Definition) */
case ACPI_IVRS_TYPE_HARDWARE2:
case ACPI_IVRS_TYPE_HARDWARE3:
InfoTable = AcpiDmTableInfoIvrsHware23;
break;
/* Types 20h, 21h, 22h, IVMD (I/O Virtualization Memory Definition Block) */
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
InfoTable = AcpiDmTableInfoIvrsMemory;
break;
/* 4-byte device entries */
case ACPI_IVRS_TYPE_PAD4:
case ACPI_IVRS_TYPE_ALL:
case ACPI_IVRS_TYPE_SELECT:
case ACPI_IVRS_TYPE_START:
case ACPI_IVRS_TYPE_END:
InfoTable = AcpiDmTableInfoIvrs4;
break;
/* 8-byte device entries, type A */
case ACPI_IVRS_TYPE_ALIAS_SELECT:
case ACPI_IVRS_TYPE_ALIAS_START:
InfoTable = AcpiDmTableInfoIvrs8a;
break;
/* 8-byte device entries, type B */
case ACPI_IVRS_TYPE_EXT_SELECT:
case ACPI_IVRS_TYPE_EXT_START:
InfoTable = AcpiDmTableInfoIvrs8b;
break;
/* 8-byte device entries, type C */
case ACPI_IVRS_TYPE_SPECIAL:
InfoTable = AcpiDmTableInfoIvrs8c;
break;
/* Variable device entries, type F0h */
case ACPI_IVRS_TYPE_HID:
InfoTable = AcpiDmTableInfoIvrsHid;
break;
default:
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart,
"IVRS Device Entry");
return (AE_ERROR);
}
/* Compile the InfoTable from above */
Status = DtCompileTable (PFieldList, InfoTable,
&Subtable);
if (ACPI_FAILURE (Status))
{
@ -2097,110 +2199,164 @@ DtCompileIvrs (
}
ParentTable = DtPeekSubtable ();
DtInsertSubtable (ParentTable, Subtable);
DtPushSubtable (Subtable);
if (SubtableType != ACPI_IVRS_TYPE_HARDWARE1 &&
SubtableType != ACPI_IVRS_TYPE_HARDWARE2 &&
SubtableType != ACPI_IVRS_TYPE_HARDWARE3 &&
SubtableType != ACPI_IVRS_TYPE_HID &&
SubtableType != ACPI_IVRS_TYPE_MEMORY1 &&
SubtableType != ACPI_IVRS_TYPE_MEMORY2 &&
SubtableType != ACPI_IVRS_TYPE_MEMORY3)
{
if (ParentTable)
DtInsertSubtable (ParentTable, Subtable);
}
IvrsHeader = ACPI_CAST_PTR (ACPI_IVRS_HEADER, Subtable->Buffer);
switch (IvrsHeader->Type)
switch (SubtableType)
{
case ACPI_IVRS_TYPE_HARDWARE1:
InfoTable = AcpiDmTableInfoIvrs0;
break;
case ACPI_IVRS_TYPE_HARDWARE2:
InfoTable = AcpiDmTableInfoIvrs01;
break;
case ACPI_IVRS_TYPE_HARDWARE3:
case ACPI_IVRS_TYPE_MEMORY1:
case ACPI_IVRS_TYPE_MEMORY2:
case ACPI_IVRS_TYPE_MEMORY3:
InfoTable = AcpiDmTableInfoIvrs1;
/* Insert these IVHDs/IVMDs at the root subtable */
DtInsertSubtable (MainSubtable, Subtable);
DtPushSubtable (Subtable);
ParentTable = MainSubtable;
break;
default:
case ACPI_IVRS_TYPE_HID:
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS");
return (AE_ERROR);
}
/* Special handling for the HID named device entry (0xF0) */
Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
ParentTable = DtPeekSubtable ();
DtInsertSubtable (ParentTable, Subtable);
if (IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE1 ||
IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE2)
{
while (*PFieldList &&
!strcmp ((*PFieldList)->Name, "Entry Type"))
if (ParentTable)
{
SubtableStart = *PFieldList;
DtCompileInteger (&EntryType, *PFieldList, 1, 0);
DtInsertSubtable (ParentTable, Subtable);
}
switch (EntryType)
{
/* 4-byte device entries */
/*
* Process the HID value. First, get the HID value as a string.
*/
DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0);
case ACPI_IVRS_TYPE_PAD4:
case ACPI_IVRS_TYPE_ALL:
case ACPI_IVRS_TYPE_SELECT:
case ACPI_IVRS_TYPE_START:
case ACPI_IVRS_TYPE_END:
/*
* Determine if the HID is an integer or a string.
* An integer is defined to be 32 bits, with the upper 32 bits
* set to zero. (from the ACPI Spec): "The HID can be a 32-bit
* integer or a character string. If an integer, the lower
* 4 bytes of the field contain the integer and the upper
* 4 bytes are padded with 0".
*/
if (UtIsIdInteger ((UINT8 *) &Temp64))
{
/* Compile the HID value as an integer */
InfoTable = AcpiDmTableInfoIvrs4;
break;
DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0);
/* 8-byte entries, type A */
case ACPI_IVRS_TYPE_ALIAS_SELECT:
case ACPI_IVRS_TYPE_ALIAS_START:
InfoTable = AcpiDmTableInfoIvrs8a;
break;
/* 8-byte entries, type B */
case ACPI_IVRS_TYPE_PAD8:
case ACPI_IVRS_TYPE_EXT_SELECT:
case ACPI_IVRS_TYPE_EXT_START:
InfoTable = AcpiDmTableInfoIvrs8b;
break;
/* 8-byte entries, type C */
case ACPI_IVRS_TYPE_SPECIAL:
InfoTable = AcpiDmTableInfoIvrs8c;
break;
default:
DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart,
"IVRS Device Entry");
return (AE_ERROR);
}
Status = DtCompileTable (PFieldList, InfoTable,
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidInteger,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
}
}
else
{
/* Compile the HID value as a string */
DtPopSubtable ();
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidString,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
}
DtInsertSubtable (ParentTable, Subtable);
/*
* Process the CID value. First, get the CID value as a string.
*/
DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0);
if (UtIsIdInteger ((UINT8 *) &Temp64))
{
/* Compile the CID value as an integer */
DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0);
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidInteger,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
}
else
{
/* Compile the CID value as a string */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidString,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
}
DtInsertSubtable (ParentTable, Subtable);
/*
* Process the UID value. First, get and decode the "UID Format" field (Integer).
*/
if (!*PFieldList)
{
return (AE_OK);
}
DtCompileOneField (&Temp8, *PFieldList, 1, DT_FIELD_TYPE_INTEGER, 0);
switch (Temp8)
{
case ACPI_IVRS_UID_NOT_PRESENT:
break;
case ACPI_IVRS_UID_IS_INTEGER:
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidInteger,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
break;
case ACPI_IVRS_UID_IS_STRING:
Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidString,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
break;
default:
DtFatal (ASL_MSG_UNKNOWN_FORMAT, SubtableStart,
"IVRS Device Entry");
return (AE_ERROR);
}
default:
/* All other subtable types come through here */
break;
}
}
return (AE_OK);

View File

@ -1335,6 +1335,118 @@ DtCompilePptt (
}
/******************************************************************************
*
* FUNCTION: DtCompilePrmt
*
* PARAMETERS: List - Current field list pointer
*
* RETURN: Status
*
* DESCRIPTION: Compile PRMT.
*
*****************************************************************************/
ACPI_STATUS
DtCompilePrmt (
void **List)
{
ACPI_STATUS Status;
ACPI_TABLE_PRMT_HEADER *PrmtHeader;
ACPI_PRMT_MODULE_INFO *PrmtModuleInfo;
DT_SUBTABLE *Subtable;
DT_SUBTABLE *ParentTable;
DT_FIELD **PFieldList = (DT_FIELD **) List;
UINT32 i, j;
ParentTable = DtPeekSubtable ();
/* Compile PRMT subtable header */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtHdr,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
PrmtHeader = ACPI_CAST_PTR (ACPI_TABLE_PRMT_HEADER, Subtable->Buffer);
for (i = 0; i < PrmtHeader->ModuleInfoCount; i++)
{
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtModule,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
PrmtModuleInfo = ACPI_CAST_PTR (ACPI_PRMT_MODULE_INFO, Subtable->Buffer);
for (j = 0; j < PrmtModuleInfo->HandlerInfoCount; j++)
{
Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtHandler,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
}
}
return (AE_OK);
}
/******************************************************************************
*
* FUNCTION: DtCompileRgrt
*
* PARAMETERS: List - Current field list pointer
*
* RETURN: Status
*
* DESCRIPTION: Compile RGRT.
*
*****************************************************************************/
ACPI_STATUS
DtCompileRgrt (
void **List)
{
ACPI_STATUS Status;
DT_SUBTABLE *Subtable;
DT_SUBTABLE *ParentTable;
DT_FIELD **PFieldList = (DT_FIELD **) List;
/* Compile the main table */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoRgrt,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
ParentTable = DtPeekSubtable ();
DtInsertSubtable (ParentTable, Subtable);
/* Compile the "Subtable" -- actually just the binary (PNG) image */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoRgrt0,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
DtInsertSubtable (ParentTable, Subtable);
return (AE_OK);
}
/******************************************************************************
*
* FUNCTION: DtCompileRsdt
@ -2024,6 +2136,63 @@ DtCompileStao (
}
/******************************************************************************
*
* FUNCTION: DtCompileSvkl
*
* PARAMETERS: PFieldList - Current field list pointer
*
* RETURN: Status
*
* DESCRIPTION: Compile SVKL.
*
* NOTES: SVKL is essentially a flat table, with a small main table and
* a variable number of a single type of subtable.
*
*****************************************************************************/
ACPI_STATUS
DtCompileSvkl (
void **List)
{
DT_FIELD **PFieldList = (DT_FIELD **) List;
DT_SUBTABLE *Subtable;
DT_SUBTABLE *ParentTable;
ACPI_STATUS Status;
/* Compile the main table */
Status = DtCompileTable (PFieldList, AcpiDmTableInfoSvkl,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
ParentTable = DtPeekSubtable ();
DtInsertSubtable (ParentTable, Subtable);
/* Compile each subtable */
while (*PFieldList)
{
Status = DtCompileTable (PFieldList, AcpiDmTableInfoSvkl0,
&Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
ParentTable = DtPeekSubtable ();
DtInsertSubtable (ParentTable, Subtable);
}
return (AE_OK);
}
/******************************************************************************
*
* FUNCTION: DtCompileTcpa

View File

@ -174,6 +174,16 @@ const unsigned char TemplateAsf[] =
0x01,0x00 /* 00000070 ".." */
};
const unsigned char TemplateBdat[] =
{
0x42,0x44,0x41,0x54,0x30,0x00,0x00,0x00, /* 00000000 "BDAT0..." */
0x01,0xED,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" */
0x31,0x03,0x21,0x20,0x01,0x08,0x00,0x01, /* 00000020 "1.! ...." */
0xF0,0xDE,0xBC,0x9A,0x78,0x56,0x34,0x12 /* 00000028 "....xV4." */
};
const unsigned char TemplateBgrt[] =
{
0x42,0x47,0x52,0x54,0x38,0x00,0x00,0x00, /* 00000000 "BGRT8..." */
@ -794,30 +804,72 @@ const unsigned char TemplateIort[] =
const unsigned char TemplateIvrs[] =
{
0x49,0x56,0x52,0x53,0xBC,0x00,0x00,0x00, /* 00000000 "IVRS...." */
0x01,0x87,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
0x49,0x56,0x52,0x53,0x10,0x02,0x00,0x00, /* 00000000 "IVRS...." */
0x02,0x6C,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".lINTEL " */
0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */
0x31,0x03,0x21,0x20,0x41,0x30,0x20,0x00, /* 00000020 "1.! A0 ." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */
0x10,0x14,0x34,0x00,0x00,0x00,0x00,0x00, /* 00000030 "..4....." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */
0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, /* 00000048 "....@..." */
0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00, /* 00000050 "....B..." */
0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000058 "....H..." */
0x00,0x00,0x00,0x00,0x20,0x08,0x20,0x00, /* 00000060 ".... . ." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */
0x00,0x00,0x00,0x00,0x21,0x04,0x20,0x00, /* 00000080 "....!. ." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */
0x00,0x00,0x00,0x00,0x10,0x14,0x18,0x00, /* 000000A0 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */
0x00,0x00,0x00,0x00 /* 000000B8 "...." */
0x10,0xB0,0x64,0x00,0x02,0x00,0x40,0x00, /* 00000030 "..d...@." */
0x00,0x00,0xF0,0xFD,0x00,0x00,0x00,0x00, /* 00000038 "........" */
0x00,0x00,0x00,0x00,0x6F,0x8F,0x04,0x80, /* 00000040 "....o..." */
0x03,0x08,0x00,0x00,0x01,0x08,0x00,0x00, /* 00000048 "........" */
0x02,0x08,0x00,0x00,0x04,0xFE,0xFF,0x00, /* 00000050 "........" */
0x42,0x00,0xFF,0x00,0x00,0xA5,0x00,0x00, /* 00000058 "B......." */
0x43,0x00,0xFF,0x00,0x00,0xA5,0x00,0x00, /* 00000060 "C......." */
0x46,0x00,0xFF,0x00,0x44,0x33,0x22,0x11, /* 00000068 "F...D3"." */
0x47,0x00,0xFF,0x00,0x44,0x33,0x22,0x11, /* 00000070 "G...D3"." */
0x04,0xFF,0xFF,0x00,0x48,0x00,0x00,0x00, /* 00000078 "....H..." */
0x00,0xA0,0x00,0x02,0x48,0x00,0x00,0xD7, /* 00000080 "....H..." */
0x21,0xA0,0x00,0x01,0x48,0x00,0x00,0x00, /* 00000088 "!...H..." */
0x22,0x01,0x00,0x01,0x11,0xB0,0x48,0x00, /* 00000090 "".....H." */
0x02,0x00,0x40,0x00,0x00,0x00,0xF0,0xFD, /* 00000098 "..@....." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */
0x00,0x02,0x04,0x00,0xDE,0x4A,0x25,0x22, /* 000000A8 ".....J%"" */
0xEF,0x73,0x6D,0x20,0x00,0x00,0x00,0x00, /* 000000B0 ".sm ...." */
0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00, /* 000000B8 "........" */
0x04,0xFE,0xFF,0x00,0x43,0x00,0xFF,0x00, /* 000000C0 "....C..." */
0x00,0xA5,0x00,0x00,0x04,0xFF,0xFF,0x00, /* 000000C8 "........" */
0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 000000D0 "....H..." */
0x00,0xA0,0x00,0x02,0x40,0xB0,0xD4,0x00, /* 000000D8 "....@..." */
0x02,0x00,0x40,0x00,0x00,0x00,0xF0,0xFD, /* 000000E0 "..@....." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */
0x00,0x02,0x04,0x00,0xDE,0x4A,0x25,0x22, /* 000000F0 ".....J%"" */
0xEF,0x73,0x6D,0x20,0x00,0x00,0x00,0x00, /* 000000F8 ".sm ...." */
0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00, /* 00000100 "........" */
0x04,0xFE,0xFF,0x00,0x43,0x00,0xFF,0x00, /* 00000108 "....C..." */
0x00,0xA5,0x00,0x00,0x04,0xFF,0xFF,0x00, /* 00000110 "........" */
0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000118 "....H..." */
0x00,0xA0,0x00,0x02,0x48,0x00,0x00,0xD7, /* 00000120 "....H..." */
0x21,0xA0,0x00,0x01,0x48,0x00,0x00,0x00, /* 00000128 "!...H..." */
0x22,0x01,0x00,0x01,0xF0,0xA5,0x00,0x40, /* 00000130 ""......@" */
0x49,0x4E,0x54,0x43,0x30,0x30,0x32,0x30, /* 00000138 "INTC0020" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */
0x02,0x09,0x5C,0x5F,0x53,0x42,0x2E,0x44, /* 00000148 "..\_SB.D" */
0x45,0x56,0x30,0xF0,0xA5,0x00,0x40,0x49, /* 00000150 "EV0...@I" */
0x4E,0x54,0x43,0x30,0x30,0x32,0x30,0x00, /* 00000158 "NTC0020." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, /* 00000160 "........" */
0x09,0x5C,0x5F,0x53,0x42,0x2E,0x44,0x45, /* 00000168 ".\_SB.DE" */
0x56,0x31,0xF0,0xA5,0x00,0x40,0x49,0x4E, /* 00000170 "V1...@IN" */
0x54,0x43,0x30,0x30,0x32,0x30,0x00,0x00, /* 00000178 "TC0020.." */
0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x09, /* 00000180 "........" */
0x5C,0x5F,0x53,0x42,0x2E,0x44,0x45,0x56, /* 00000188 "\_SB.DEV" */
0x32,0xF0,0xA5,0x00,0x40,0x49,0x4E,0x54, /* 00000190 "2...@INT" */
0x43,0x30,0x30,0x32,0x30,0x00,0x00,0x00, /* 00000198 "C0020..." */
0x00,0x00,0x00,0x00,0x00,0x02,0x09,0x5C, /* 000001A0 ".......\" */
0x5F,0x53,0x42,0x2E,0x44,0x45,0x56,0x33, /* 000001A8 "_SB.DEV3" */
0x20,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001B0 " . ."..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */
0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 000001C0 "..xV4..." */
0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "........" */
0x21,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001D0 "!. ."..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */
0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 000001E0 "..xV4..." */
0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */
0x22,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001F0 "". ."..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */
0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 00000200 "..xV4..." */
0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000208 "........" */
};
const unsigned char TemplateLpit[] =
@ -1205,6 +1257,97 @@ const unsigned char TemplatePptt[] =
0x00,0x00 /* 00000070 ".." */
};
const unsigned char TemplatePrmt[] =
{
0x50,0x52,0x4D,0x54,0xB8,0x02,0x00,0x00, /* 00000000 "PRMT...." */
0x00,0x13,0x4F,0x45,0x4D,0x43,0x41,0x20, /* 00000008 "..OEMCA " */
0x4F,0x45,0x4D,0x43,0x41,0x20,0x20,0x20, /* 00000010 "OEMCA " */
0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
0x17,0x07,0x20,0x20,0xA5,0x61,0x6B,0xB6, /* 00000020 ".. .ak." */
0x01,0xA1,0x46,0xED,0xA6,0xA3,0xCA,0xC1, /* 00000028 "..F....." */
0xC4,0xD1,0x30,0x1E,0x3C,0x00,0x00,0x00, /* 00000030 "..0.<..." */
0x04,0x00,0x00,0x00,0x00,0x00,0xAA,0x00, /* 00000038 "........" */
0xC2,0xB3,0x52,0x16,0xA1,0xA7,0xAC,0x46, /* 00000040 "..R....F" */
0xAF,0x93,0xDD,0x6D,0xEE,0x44,0x66,0x69, /* 00000048 "...m.Dfi" */
0x01,0x00,0x00,0x00,0x03,0x00,0x26,0x00, /* 00000050 "......&." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */
0x00,0x00,0x00,0x00,0x2C,0x00,0x5F,0xAD, /* 00000060 "....,._." */
0xF2,0xD5,0x47,0xA3,0x3E,0x4D,0x87,0xBC, /* 00000068 "..G.>M.." */
0xC2,0xCE,0x63,0x02,0x9C,0xC8,0x90,0xC2, /* 00000070 "..c....." */
0x5E,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "^......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */
0x2C,0x00,0xC3,0xAD,0xE7,0xA9,0xD0,0x8C, /* 00000090 ",......." */
0x9A,0x42,0x89,0x15,0x10,0x94,0x6E,0xBD, /* 00000098 ".B....n." */
0xE3,0x18,0xC0,0xC2,0x5E,0x8A,0x00,0x00, /* 000000A0 "....^..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */
0x00,0x00,0x00,0x00,0x2C,0x00,0x14,0xC2, /* 000000B8 "....,..." */
0x88,0xB6,0x81,0x40,0xEB,0x4E,0x8D,0x26, /* 000000C0 "...@.N.&" */
0x1E,0xB5,0xA3,0xBC,0xF1,0x1A,0xF0,0xC2, /* 000000C8 "........" */
0x5E,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D0 "^......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */
0x52,0x00,0xA6,0x58,0x2A,0xDC,0x27,0x59, /* 000000E8 "R..X*.'Y" */
0x76,0x47,0xB9,0x95,0xD1,0x18,0xA2,0x73, /* 000000F0 "vG.....s" */
0x35,0xA2,0x01,0x00,0x00,0x00,0x01,0x00, /* 000000F8 "5......." */
0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "&......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00, /* 00000108 "......,." */
0x13,0x2D,0x4F,0x2E,0x40,0x62,0xD0,0x4E, /* 00000110 ".-O.@b.N" */
0xA4,0x01,0xC7,0x23,0xFB,0xDC,0x34,0xE8, /* 00000118 "...#..4." */
0x90,0x32,0x5E,0x8A,0x00,0x00,0x00,0x00, /* 00000120 ".2^....." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */
0xF8,0x7F,0x71,0x8A,0x00,0x00,0x00,0x00, /* 00000130 "..q....." */
0x00,0x00,0x2E,0x01,0xD7,0x3E,0xF9,0x0E, /* 00000138 ".....>.." */
0xAE,0x14,0x5B,0x42,0x92,0x8F,0xB8,0x5A, /* 00000140 "..[B...Z" */
0x62,0x13,0xB5,0x7E,0x01,0x00,0x00,0x00, /* 00000148 "b..~...." */
0x06,0x00,0x26,0x00,0x00,0x00,0xE0,0x3F, /* 00000150 "..&....?" */
0x71,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "q......." */
0x2C,0x00,0x3C,0xCD,0x20,0x21,0x8B,0x84, /* 00000160 ",.<. !.." */
0x8F,0x4D,0xAB,0xBB,0x4B,0x74,0xCE,0x64, /* 00000168 ".M..Kt.d" */
0xAC,0x89,0x4C,0xA6,0x5D,0x8A,0x00,0x00, /* 00000170 "..L.]..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "........" */
0x00,0x00,0x00,0x00,0x2C,0x00,0xA7,0x35, /* 00000188 "....,..5" */
0x09,0xEA,0x6B,0x50,0x59,0x41,0xBB,0xBB, /* 00000190 "..kPYA.." */
0x48,0xDE,0xEE,0xCB,0x6F,0x58,0x34,0xA7, /* 00000198 "H...oX4." */
0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A0 "]......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B0 "........" */
0x2C,0x00,0xA9,0xBD,0xD1,0x1B,0x9A,0x90, /* 000001B8 ",......." */
0x14,0x46,0x96,0x99,0x25,0xEC,0x0C,0x27, /* 000001C0 ".F..%..'" */
0x83,0xF7,0x94,0xA7,0x5D,0x8A,0x00,0x00, /* 000001C8 "....]..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D0 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */
0x00,0x00,0x00,0x00,0x2C,0x00,0xE7,0xB4, /* 000001E0 "....,..." */
0x28,0x5D,0x67,0x38,0xEE,0x4A,0xAA,0x09, /* 000001E8 "(]g8.J.." */
0x51,0xFC,0x28,0x2C,0x3B,0x22,0x9C,0xA6, /* 000001F0 "Q.(,;".." */
0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "]......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000200 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000208 "........" */
0x2C,0x00,0x02,0xB7,0x64,0x4B,0x2B,0x4D, /* 00000210 ",...dK+M" */
0xFE,0x4D,0xAC,0x5A,0x0B,0x41,0x10,0xA2, /* 00000218 ".M.Z.A.." */
0xCA,0x47,0x48,0xA7,0x5D,0x8A,0x00,0x00, /* 00000220 ".GH.]..." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000230 "........" */
0x00,0x00,0x00,0x00,0x2C,0x00,0xDE,0xFD, /* 00000238 "....,..." */
0x0E,0x8A,0xD0,0x78,0xF0,0x45,0xAE,0xA0, /* 00000240 "...x.E.." */
0xC2,0x82,0x45,0xC7,0xE1,0xDB,0x98,0xA7, /* 00000248 "..E....." */
0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000250 "]......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000260 "........" */
0x52,0x00,0x2B,0xF4,0x6C,0x5A,0xB4,0x8B, /* 00000268 "R.+.lZ.." */
0x2C,0x47,0xA2,0x33,0x5C,0x4D,0xC4,0x03, /* 00000270 ",G.3\M.." */
0x3D,0xC7,0x01,0x00,0x00,0x00,0x01,0x00, /* 00000278 "=......." */
0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000280 "&......." */
0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00, /* 00000288 "......,." */
0x81,0x60,0x46,0xE1,0x62,0x75,0x0F,0x43, /* 00000290 ".`F.bu.C" */
0x89,0x6B,0xB0,0xE5,0x23,0xDC,0x33,0x5A, /* 00000298 ".k..#.3Z" */
0x90,0x12,0x5D,0x8A,0x00,0x00,0x00,0x00, /* 000002A0 "..]....." */
0xE0,0x5F,0x71,0x8A,0x00,0x00,0x00,0x00, /* 000002A8 "._q....." */
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 000002B0 "........" */
};
const unsigned char TemplateRasf[] =
{
0x52,0x41,0x53,0x46,0x30,0x00,0x00,0x00, /* 00000000 "RASF0..." */
@ -1215,6 +1358,20 @@ const unsigned char TemplateRasf[] =
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000028 "........" */
};
const unsigned char TemplateRgrt[] =
{
0x52,0x47,0x52,0x54,0x50,0x00,0x00,0x00, /* 00000000 "RGRTP..." */
0x01,0x33,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".3INTEL " */
0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
0x31,0x03,0x21,0x20,0x01,0x00,0x01,0x00, /* 00000020 "1.! ...." */
0xAA,0x01,0x02,0x03,0x04,0x05,0x06,0x07, /* 00000028 "........" */
0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /* 00000030 "........" */
0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, /* 00000038 "........" */
0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, /* 00000040 "........" */
0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 /* 00000048 " !"#$%&'" */
};
const unsigned char TemplateRsdp[] =
{
0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */
@ -1475,6 +1632,19 @@ const unsigned char TemplateStao[] =
0x31,0x2E,0x50,0x54,0x31,0x00 /* 00000078 "1.PT1." */
};
const unsigned char TemplateSvkl[] =
{
0x53,0x56,0x4B,0x4C,0x48,0x00,0x00,0x00, /* 00000000 "SVKLH..." */
0x04,0xDB,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" */
0x31,0x03,0x21,0x20,0x02,0x00,0x00,0x00, /* 00000020 "1.! ...." */
0x00,0x00,0x00,0x00,0x21,0x43,0xAA,0xAA, /* 00000028 "....!C.." */
0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000030 "....gE#." */
0x00,0x00,0x00,0x00,0x21,0x43,0xBB,0xBB, /* 00000038 "....!C.." */
0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01 /* 00000040 "....gE#." */
};
const unsigned char TemplateTcpa[] =
{
0x54,0x43,0x50,0x41,0x64,0x00,0x00,0x00, /* 00000000 "TCPAd..." */

View File

@ -426,6 +426,7 @@ DtGetFieldType (
case ACPI_DMT_NAME6:
case ACPI_DMT_NAME8:
case ACPI_DMT_STRING:
case ACPI_DMT_IVRS_UNTERMINATED_STRING:
Type = DT_FIELD_TYPE_STRING;
break;
@ -576,11 +577,13 @@ DtGetFieldLength (
case ACPI_DMT_ACCWIDTH:
case ACPI_DMT_CEDT:
case ACPI_DMT_IVRS:
case ACPI_DMT_IVRS_DE:
case ACPI_DMT_GTDT:
case ACPI_DMT_MADT:
case ACPI_DMT_PCCT:
case ACPI_DMT_PMTT:
case ACPI_DMT_PPTT:
case ACPI_DMT_RGRT:
case ACPI_DMT_SDEV:
case ACPI_DMT_SRAT:
case ACPI_DMT_ASF:
@ -660,6 +663,22 @@ DtGetFieldLength (
}
break;
case ACPI_DMT_IVRS_UNTERMINATED_STRING:
Value = DtGetFieldValue (Field);
if (Value)
{
ByteLength = strlen (Value);
}
else
{ /* At this point, this is a fatal error */
sprintf (AslGbl_MsgBuffer, "Expected \"%s\"", Info->Name);
DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, AslGbl_MsgBuffer);
return (0);
}
break;
case ACPI_DMT_GAS:
ByteLength = sizeof (ACPI_GENERIC_ADDRESS);

View File

@ -295,7 +295,8 @@ AcpiExReadDataFromField (
else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
(ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI))
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI ||
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT))
{
/* SMBus, GSBus, IPMI serial */
@ -467,7 +468,8 @@ AcpiExWriteDataToField (
else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
(ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS ||
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS ||
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI))
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI ||
ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT))
{
/* SMBus, GSBus, IPMI serial */

View File

@ -353,6 +353,12 @@ AcpiExReadSerialBus (
Function = ACPI_READ | (AccessorType << 16);
break;
case ACPI_ADR_SPACE_PLATFORM_RT:
BufferLength = ACPI_PRM_INPUT_BUFFER_SIZE;
Function = ACPI_READ;
break;
default:
return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
}
@ -472,6 +478,12 @@ AcpiExWriteSerialBus (
Function = ACPI_WRITE | (AccessorType << 16);
break;
case ACPI_ADR_SPACE_PLATFORM_RT:
BufferLength = ACPI_PRM_INPUT_BUFFER_SIZE;
Function = ACPI_WRITE;
break;
default:
return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID);
}

View File

@ -565,6 +565,13 @@ AcpiNsRepair_CID (
(*ElementPtr)->Common.ReferenceCount =
OriginalRefCount;
/*
* The OriginalElement holds a reference from the package object
* that represents _HID. Since a new element was created by _HID,
* remove the reference from the _CID package.
*/
AcpiUtRemoveReference (OriginalElement);
}
ElementPtr++;

View File

@ -443,6 +443,14 @@ AcpiUtDeleteInternalObj (
}
break;
case ACPI_TYPE_LOCAL_ADDRESS_HANDLER:
ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS,
"***** Address handler %p\n", Object));
AcpiOsDeleteMutex (Object->AddressSpace.ContextMutex);
break;
default:
break;

View File

@ -208,4 +208,52 @@ AcpiUtConvertStringToUuid (
InString[AcpiGbl_MapToUuidOffset[i] + 1]);
}
}
/*******************************************************************************
*
* FUNCTION: AcpiUtConvertUuidToString
*
* PARAMETERS: UuidBuffer - 16-byte UUID buffer
* OutString - 36-byte formatted UUID string
*
* RETURN: Status
*
* DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string
* OutString must be 37 bytes to include null terminator.
*
******************************************************************************/
ACPI_STATUS
AcpiUtConvertUuidToString (
char *UuidBuffer,
char *OutString)
{
UINT32 i;
if (!UuidBuffer || !OutString)
{
return (AE_BAD_PARAMETER);
}
for (i = 0; i < UUID_BUFFER_LENGTH; i++)
{
OutString[AcpiGbl_MapToUuidOffset[i]] =
AcpiUtHexToAsciiChar (UuidBuffer[i], 4);
OutString[AcpiGbl_MapToUuidOffset[i] + 1] =
AcpiUtHexToAsciiChar (UuidBuffer[i], 0);
}
/* Insert required hyphens (dashes) */
OutString[UUID_HYPHEN1_OFFSET] =
OutString[UUID_HYPHEN2_OFFSET] =
OutString[UUID_HYPHEN3_OFFSET] =
OutString[UUID_HYPHEN4_OFFSET] = '-';
OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */
return (AE_OK);
}
#endif

View File

@ -359,5 +359,14 @@ typedef struct acpi_pld_info
#define ACPI_PLD_GET_HORIZ_OFFSET(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK)
#define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */
/* Panel position defined in _PLD section of ACPI Specification 6.3 */
#define ACPI_PLD_PANEL_TOP 0
#define ACPI_PLD_PANEL_BOTTOM 1
#define ACPI_PLD_PANEL_LEFT 2
#define ACPI_PLD_PANEL_RIGHT 3
#define ACPI_PLD_PANEL_FRONT 4
#define ACPI_PLD_PANEL_BACK 5
#define ACPI_PLD_PANEL_UNKNOWN 6
#endif /* ACBUFFER_H */

View File

@ -333,6 +333,7 @@
#define ACPI_MAX_GSBUS_DATA_SIZE 255
#define ACPI_MAX_GSBUS_BUFFER_SIZE ACPI_SERIAL_HEADER_SIZE + ACPI_MAX_GSBUS_DATA_SIZE
#define ACPI_PRM_INPUT_BUFFER_SIZE 26
/* _SxD and _SxW control methods */

View File

@ -266,6 +266,8 @@ typedef enum
ACPI_DMT_HMAT,
ACPI_DMT_IORTMEM,
ACPI_DMT_IVRS,
ACPI_DMT_IVRS_DE,
ACPI_DMT_IVRS_UNTERMINATED_STRING,
ACPI_DMT_LPIT,
ACPI_DMT_MADT,
ACPI_DMT_NFIT,
@ -274,6 +276,7 @@ typedef enum
ACPI_DMT_PMTT,
ACPI_DMT_PMTT_VENDOR,
ACPI_DMT_PPTT,
ACPI_DMT_RGRT,
ACPI_DMT_SDEI,
ACPI_DMT_SDEV,
ACPI_DMT_SLIC,
@ -365,6 +368,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBdat[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[];
@ -465,16 +469,20 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortHdr3[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs01[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware23[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsMemory[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidString[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidInteger[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidString[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidInteger[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidString[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidInteger[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[];
@ -546,7 +554,12 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPpttHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtModule[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[];
@ -580,6 +593,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat4[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[];
@ -774,6 +789,14 @@ void
AcpiDmDumpPptt (
ACPI_TABLE_HEADER *Table);
void
AcpiDmDumpPrmt (
ACPI_TABLE_HEADER *Table);
void
AcpiDmDumpRgrt (
ACPI_TABLE_HEADER *Table);
UINT32
AcpiDmDumpRsdp (
ACPI_TABLE_HEADER *Table);
@ -806,6 +829,10 @@ void
AcpiDmDumpStao (
ACPI_TABLE_HEADER *Table);
void
AcpiDmDumpSvkl (
ACPI_TABLE_HEADER *Table);
void
AcpiDmDumpTcpa (
ACPI_TABLE_HEADER *Table);

View File

@ -154,7 +154,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
#define ACPI_CA_VERSION 0x20210331
#define ACPI_CA_VERSION 0x20210604
#include <contrib/dev/acpica/include/acconfig.h>
#include <contrib/dev/acpica/include/actypes.h>

View File

@ -156,6 +156,7 @@
#define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f)
#define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f)
#define ACPI_RSDP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f)
#define ACPI_BDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BDAT,f)
#define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f)
#define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f)
#define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f)
@ -183,6 +184,7 @@
#define ACPI_PDTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PDTT,f)
#define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f)
#define ACPI_RASF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f)
#define ACPI_RGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RGRT,f)
#define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f)
#define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f)
#define ACPI_SDEI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SDEI,f)
@ -192,6 +194,7 @@
#define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f)
#define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f)
#define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f)
#define ACPI_SVKL_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SVKL,f)
#define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_HDR,f)
#define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f)
#define ACPI_TPM23_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM23,f)
@ -334,6 +337,9 @@
#define ACPI_PPTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE,f)
#define ACPI_PPTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE_V1,f)
#define ACPI_PPTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_ID,f)
#define ACPI_PRMTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PRMT_HEADER,f)
#define ACPI_PRMT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_MODULE_INFO,f)
#define ACPI_PRMT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_HANDLER_INFO,f)
#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f)
#define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f)
#define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f)
@ -353,6 +359,7 @@
#define ACPI_SRAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f)
#define ACPI_SRAT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f)
#define ACPI_SRAT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f)
#define ACPI_SVKL0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SVKL_KEY,f)
#define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
#define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
#define ACPI_TPM2A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
@ -398,6 +405,8 @@
#define ACPI_IORT6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_RMR,f,o)
#define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o)
#define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o)
#define ACPI_IVRS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_HEADER,f,o)
#define ACPI_IVRSDE_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_DE_HEADER,f,o)
#define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o)
#define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o)
#define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o)

View File

@ -523,9 +523,19 @@ typedef struct acpi_cedt_header
enum AcpiCedtType
{
ACPI_CEDT_TYPE_CHBS = 0,
ACPI_CEDT_TYPE_RESERVED = 1
ACPI_CEDT_TYPE_CFMWS = 1,
ACPI_CEDT_TYPE_RESERVED = 2,
};
/* Values for version field above */
#define ACPI_CEDT_CHBS_VERSION_CXL11 (0)
#define ACPI_CEDT_CHBS_VERSION_CXL20 (1)
/* Values for length field above */
#define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000)
#define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000)
/*
* CEDT subtables
@ -545,6 +555,37 @@ typedef struct acpi_cedt_chbs
} ACPI_CEDT_CHBS;
/* 1: CXL Fixed Memory Window Structure */
typedef struct acpi_cedt_cfmws
{
ACPI_CEDT_HEADER Header;
UINT32 Reserved1;
UINT64 BaseHpa;
UINT64 WindowSize;
UINT8 InterleaveWays;
UINT8 InterleaveArithmetic;
UINT16 Reserved2;
UINT32 Granularity;
UINT16 Restrictions;
UINT16 QtgId;
UINT32 InterleaveTargets[];
} ACPI_CEDT_CFMWS;
/* Values for Interleave Arithmetic field above */
#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0)
/* Values for Restrictions field above */
#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1)
#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1)
#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2)
#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3)
#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4)
/*******************************************************************************
*
* CPEP - Corrected Platform Error Polling table (ACPI 4.0)

View File

@ -168,6 +168,7 @@
* file. Useful because they make it more difficult to inadvertently type in
* the wrong signature.
*/
#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */
#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
@ -183,11 +184,14 @@
#define ACPI_SIG_PHAT "PHAT" /* Platform Health Assessment Table */
#define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */
#define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */
#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */
#define ACPI_SIG_RASF "RASF" /* RAS Feature table */
#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */
#define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */
#define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */
#define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */
#define ACPI_SIG_NHLT "NHLT" /* Non-HDAudio Link Table */
#define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key Location Table */
/*
@ -209,6 +213,23 @@
*/
/*******************************************************************************
*
* BDAT - BIOS Data ACPI Table
*
* Conforms to "BIOS Data ACPI Table", Interface Specification v4.0 Draft 5
* Nov 2020
*
******************************************************************************/
typedef struct acpi_table_bdat
{
ACPI_TABLE_HEADER Header;
ACPI_GENERIC_ADDRESS Gas;
} ACPI_TABLE_BDAT;
/*******************************************************************************
*
* IORT - IO Remapping Table
@ -649,6 +670,11 @@ typedef struct acpi_ivrs_device_hid
} ACPI_IVRS_DEVICE_HID;
/* Values for UidType above */
#define ACPI_IVRS_UID_NOT_PRESENT 0
#define ACPI_IVRS_UID_IS_INTEGER 1
#define ACPI_IVRS_UID_IS_STRING 2
/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */
@ -1034,6 +1060,22 @@ typedef struct acpi_madt_multiproc_wakeup
} ACPI_MADT_MULTIPROC_WAKEUP;
#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE 2032
#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE 2048
typedef struct acpi_madt_multiproc_wakeup_mailbox
{
UINT16 Command;
UINT16 Reserved; /* reserved - must be zero */
UINT32 ApicId;
UINT64 WakeupVector;
UINT8 ReservedOs[ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE]; /* reserved for OS use */
UINT8 ReservedFirmware[ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE]; /* reserved for firmware use */
} ACPI_MADT_MULTIPROC_WAKEUP_MAILBOX;
#define ACPI_MP_WAKE_COMMAND_WAKEUP 1
/*
* Common flags fields for MADT subtables
@ -2100,6 +2142,52 @@ typedef struct acpi_pptt_id
} ACPI_PPTT_ID;
/*******************************************************************************
*
* PRMT - Platform Runtime Mechanism Table
* Version 1
*
******************************************************************************/
typedef struct acpi_table_prmt
{
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
} ACPI_TABLE_PRMT;
typedef struct acpi_table_prmt_header
{
UINT8 PlatformGuid[16];
UINT32 ModuleInfoOffset;
UINT32 ModuleInfoCount;
} ACPI_TABLE_PRMT_HEADER;
typedef struct acpi_prmt_module_info
{
UINT16 Revision;
UINT16 Length;
UINT8 ModuleGuid[16];
UINT16 MajorRev;
UINT16 MinorRev;
UINT16 HandlerInfoCount;
UINT32 HandlerInfoOffset;
UINT64 MmioListPointer;
} ACPI_PRMT_MODULE_INFO;
typedef struct acpi_prmt_handler_info
{
UINT16 Revision;
UINT16 Length;
UINT8 HandlerGuid[16];
UINT64 HandlerAddress;
UINT64 StaticDataBufferAddress;
UINT64 AcpiParamBufferAddress;
} ACPI_PRMT_HANDLER_INFO;
/*******************************************************************************
*
* RASF - RAS Feature Table (ACPI 5.0)
@ -2209,6 +2297,36 @@ enum AcpiRasfStatus
#define ACPI_RASF_STATUS (0x1F<<3)
/*******************************************************************************
*
* RGRT - Regulatory Graphics Resource Table
* Version 1
*
* Conforms to "ACPI RGRT" available at:
* https://microsoft.github.io/mu/dyn/mu_plus/MsCorePkg/AcpiRGRT/feature_acpi_rgrt/
*
******************************************************************************/
typedef struct acpi_table_rgrt
{
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
UINT16 Version;
UINT8 ImageType;
UINT8 Reserved;
UINT8 Image[0];
} ACPI_TABLE_RGRT;
/* ImageType values */
enum AcpiRgrtImageType
{
ACPI_RGRT_TYPE_RESERVED0 = 0,
ACPI_RGRT_IMAGE_TYPE_PNG = 1,
ACPI_RGRT_TYPE_RESERVED = 2 /* 2 and greater are reserved */
};
/*******************************************************************************
*
* SBST - Smart Battery Specification Table
@ -2371,6 +2489,44 @@ typedef struct acpi_sdev_pcie_path
} ACPI_SDEV_PCIE_PATH;
/*******************************************************************************
*
* SVKL - Storage Volume Key Location Table (ACPI 6.4)
* From: "Guest-Host-Communication Interface (GHCI) for Intel
* Trust Domain Extensions (Intel TDX)".
* Version 1
*
******************************************************************************/
typedef struct acpi_table_svkl
{
ACPI_TABLE_HEADER Header; /* Common ACPI table header */
UINT32 Count;
} ACPI_TABLE_SVKL;
typedef struct acpi_svkl_key
{
UINT16 Type;
UINT16 Format;
UINT32 Size;
UINT64 Address;
} ACPI_SVKL_KEY;
enum acpi_svkl_type
{
ACPI_SVKL_TYPE_MAIN_STORAGE = 0,
ACPI_SVKL_TYPE_RESERVED = 1 /* 1 and greater are reserved */
};
enum acpi_svkl_format
{
ACPI_SVKL_FORMAT_RAW_BINARY = 0,
ACPI_SVKL_FORMAT_RESERVED = 1 /* 1 and greater are reserved */
};
/* Reset to default packing */
#pragma pack()

View File

@ -1268,6 +1268,11 @@ void
AcpiUtConvertStringToUuid (
char *InString,
UINT8 *UuidBuffer);
ACPI_STATUS
AcpiUtConvertUuidToString (
char *UuidBuffer,
char *OutString);
#endif
#endif /* _ACUTILS_H */