Import ACPICA 20210604
(cherry picked from commit 395770967c3664ec744e63fa47acc19670d32f47)
This commit is contained in:
parent
295855e80f
commit
1970d69303
@ -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:
|
||||
|
||||
|
@ -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}
|
||||
};
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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 @@ NextSubtable:
|
||||
*
|
||||
* 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 @@ NextSubtable:
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
* 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
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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 !*/
|
||||
|
@ -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)
|
||||
|
@ -1224,6 +1224,10 @@ DbgPrint (
|
||||
#define ASL_PARSE_OUTPUT 1
|
||||
#define ASL_TREE_OUTPUT 2
|
||||
|
||||
BOOLEAN
|
||||
UtIsIdInteger (
|
||||
UINT8 *Target);
|
||||
|
||||
UINT8
|
||||
UtIsBigEndianMachine (
|
||||
void);
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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[];
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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..." */
|
||||
|
@ -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);
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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++;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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>
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
|
@ -1268,6 +1268,11 @@ void
|
||||
AcpiUtConvertStringToUuid (
|
||||
char *InString,
|
||||
UINT8 *UuidBuffer);
|
||||
|
||||
ACPI_STATUS
|
||||
AcpiUtConvertUuidToString (
|
||||
char *UuidBuffer,
|
||||
char *OutString);
|
||||
#endif
|
||||
|
||||
#endif /* _ACUTILS_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user