aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2021-06-05 04:00:36 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2021-06-05 05:58:00 +0000
commit1970d69303946116e6c88ab5b903ae4b65efddc5 (patch)
tree4685656c766056208d24f7e88fa7078b5fadd6a8
parent295855e80f9d4c5caffe30ec8ac95e5f8a457daf (diff)
downloadsrc-1970d69303946116e6c88ab5b903ae4b65efddc5.tar.gz
src-1970d69303946116e6c88ab5b903ae4b65efddc5.zip
Import ACPICA 20210604
(cherry picked from commit 395770967c3664ec744e63fa47acc19670d32f47)
-rw-r--r--sys/contrib/dev/acpica/changes.txt42
-rw-r--r--sys/contrib/dev/acpica/common/ahtable.c42
-rw-r--r--sys/contrib/dev/acpica/common/dmtable.c116
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump2.c230
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump3.c60
-rw-r--r--sys/contrib/dev/acpica/common/dmtbinfo1.c13
-rw-r--r--sys/contrib/dev/acpica/common/dmtbinfo2.c211
-rw-r--r--sys/contrib/dev/acpica/common/dmtbinfo3.c24
-rw-r--r--sys/contrib/dev/acpica/compiler/aslcompiler.h4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmessages.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/aslmessages.h4
-rw-r--r--sys/contrib/dev/acpica/compiler/aslutils.c40
-rw-r--r--sys/contrib/dev/acpica/compiler/asluuid.c47
-rw-r--r--sys/contrib/dev/acpica/compiler/dtcompiler.h16
-rw-r--r--sys/contrib/dev/acpica/compiler/dtfield.c4
-rw-r--r--sys/contrib/dev/acpica/compiler/dtio.c6
-rw-r--r--sys/contrib/dev/acpica/compiler/dttable1.c274
-rw-r--r--sys/contrib/dev/acpica/compiler/dttable2.c169
-rw-r--r--sys/contrib/dev/acpica/compiler/dttemplate.h212
-rw-r--r--sys/contrib/dev/acpica/compiler/dtutils.c19
-rw-r--r--sys/contrib/dev/acpica/components/executer/exfield.c6
-rw-r--r--sys/contrib/dev/acpica/components/executer/exserial.c12
-rw-r--r--sys/contrib/dev/acpica/components/namespace/nsrepair2.c7
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utdelete.c8
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utuuid.c48
-rw-r--r--sys/contrib/dev/acpica/include/acbuffer.h9
-rw-r--r--sys/contrib/dev/acpica/include/acconfig.h1
-rw-r--r--sys/contrib/dev/acpica/include/acdisasm.h37
-rw-r--r--sys/contrib/dev/acpica/include/acpixf.h2
-rw-r--r--sys/contrib/dev/acpica/include/actbinfo.h9
-rw-r--r--sys/contrib/dev/acpica/include/actbl1.h43
-rw-r--r--sys/contrib/dev/acpica/include/actbl2.h156
-rw-r--r--sys/contrib/dev/acpica/include/acutils.h5
33 files changed, 1645 insertions, 237 deletions
diff --git a/sys/contrib/dev/acpica/changes.txt b/sys/contrib/dev/acpica/changes.txt
index 0b71b266a6ba..31b4eaff62fb 100644
--- a/sys/contrib/dev/acpica/changes.txt
+++ b/sys/contrib/dev/acpica/changes.txt
@@ -1,4 +1,46 @@
----------------------------------------
+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:
This release is available at https://acpica.org/downloads, and includes
diff --git a/sys/contrib/dev/acpica/common/ahtable.c b/sys/contrib/dev/acpica/common/ahtable.c
index 3d3eee5b41b4..b1da441deda4 100644
--- a/sys/contrib/dev/acpica/common/ahtable.c
+++ b/sys/contrib/dev/acpica/common/ahtable.c
@@ -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}
};
diff --git a/sys/contrib/dev/acpica/common/dmtable.c b/sys/contrib/dev/acpica/common/dmtable.c
index 6f34e82c1b62..cc72fa0512a8 100644
--- a/sys/contrib/dev/acpica/common/dmtable.c
+++ b/sys/contrib/dev/acpica/common/dmtable.c
@@ -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;
}
diff --git a/sys/contrib/dev/acpica/common/dmtbdump2.c b/sys/contrib/dev/acpica/common/dmtbdump2.c
index e3ab39b53078..a13e77e5c03b 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump2.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump2.c
@@ -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);
}
}
}
@@ -1925,6 +2005,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
*
* PARAMETERS: Table - A S3PT table
diff --git a/sys/contrib/dev/acpica/common/dmtbdump3.c b/sys/contrib/dev/acpica/common/dmtbdump3.c
index 6f3b8f17e039..38404bc3317c 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump3.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump3.c
@@ -422,6 +422,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
*
* PARAMETERS: Table - A TCPA table
@@ -502,6 +561,7 @@ AcpiDmDumpTcpa (
* DESCRIPTION: Format the contents of a TPM2.
*
******************************************************************************/
+
static void
AcpiDmDumpTpm2Rev3 (
ACPI_TABLE_HEADER *Table)
diff --git a/sys/contrib/dev/acpica/common/dmtbinfo1.c b/sys/contrib/dev/acpica/common/dmtbinfo1.c
index 1e4eb0542d71..a6c46e55bf0a 100644
--- a/sys/contrib/dev/acpica/common/dmtbinfo1.c
+++ b/sys/contrib/dev/acpica/common/dmtbinfo1.c
@@ -297,6 +297,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
*
******************************************************************************/
diff --git a/sys/contrib/dev/acpica/common/dmtbinfo2.c b/sys/contrib/dev/acpica/common/dmtbinfo2.c
index b51acd654997..3eb4e44902d3 100644
--- a/sys/contrib/dev/acpica/common/dmtbinfo2.c
+++ b/sys/contrib/dev/acpica/common/dmtbinfo2.c
@@ -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_TERMINATOR
-};
-
-/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */
-
-ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] =
+ {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) Device Entry Block */
+
+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_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_RAW_BUFFER, 0, "UID", DT_OPTIONAL},
+ {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
};
@@ -1539,6 +1596,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
*
******************************************************************************/
@@ -1552,6 +1655,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 !*/
diff --git a/sys/contrib/dev/acpica/common/dmtbinfo3.c b/sys/contrib/dev/acpica/common/dmtbinfo3.c
index 496535613556..b34d59ced086 100644
--- a/sys/contrib/dev/acpica/common/dmtbinfo3.c
+++ b/sys/contrib/dev/acpica/common/dmtbinfo3.c
@@ -405,6 +405,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)
*
* NOTE: There are two versions of the table with the same signature --
diff --git a/sys/contrib/dev/acpica/compiler/aslcompiler.h b/sys/contrib/dev/acpica/compiler/aslcompiler.h
index 52757037c5da..a8ef42781065 100644
--- a/sys/contrib/dev/acpica/compiler/aslcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/aslcompiler.h
@@ -1224,6 +1224,10 @@ DbgPrint (
#define ASL_PARSE_OUTPUT 1
#define ASL_TREE_OUTPUT 2
+BOOLEAN
+UtIsIdInteger (
+ UINT8 *Target);
+
UINT8
UtIsBigEndianMachine (
void);
diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.c b/sys/contrib/dev/acpica/compiler/aslmessages.c
index b7674e255cce..238213db0d24 100644
--- a/sys/contrib/dev/acpica/compiler/aslmessages.c
+++ b/sys/contrib/dev/acpica/compiler/aslmessages.c
@@ -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 */
diff --git a/sys/contrib/dev/acpica/compiler/aslmessages.h b/sys/contrib/dev/acpica/compiler/aslmessages.h
index 1d9f7becb12d..69c2561bad0f 100644
--- a/sys/contrib/dev/acpica/compiler/aslmessages.h
+++ b/sys/contrib/dev/acpica/compiler/aslmessages.h
@@ -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 */
diff --git a/sys/contrib/dev/acpica/compiler/aslutils.c b/sys/contrib/dev/acpica/compiler/aslutils.c
index 718240f1f371..ea5a7bf1fbf2 100644
--- a/sys/contrib/dev/acpica/compiler/aslutils.c
+++ b/sys/contrib/dev/acpica/compiler/aslutils.c
@@ -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
diff --git a/sys/contrib/dev/acpica/compiler/asluuid.c b/sys/contrib/dev/acpica/compiler/asluuid.c
index ab3ac4688339..a4d0ccebdb4e 100644
--- a/sys/contrib/dev/acpica/compiler/asluuid.c
+++ b/sys/contrib/dev/acpica/compiler/asluuid.c
@@ -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);
-}
diff --git a/sys/contrib/dev/acpica/compiler/dtcompiler.h b/sys/contrib/dev/acpica/compiler/dtcompiler.h
index 69032d7727cb..2d563aecbc11 100644
--- a/sys/contrib/dev/acpica/compiler/dtcompiler.h
+++ b/sys/contrib/dev/acpica/compiler/dtcompiler.h
@@ -674,6 +674,14 @@ DtCompilePptt (
void **PFieldList);
ACPI_STATUS
+DtCompilePrmt (
+ void **PFieldList);
+
+ACPI_STATUS
+DtCompileRgrt (
+ void **PFieldList);
+
+ACPI_STATUS
DtCompileRsdt (
void **PFieldList);
@@ -702,6 +710,10 @@ 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[];
diff --git a/sys/contrib/dev/acpica/compiler/dtfield.c b/sys/contrib/dev/acpica/compiler/dtfield.c
index 6d641fcb1ef2..77862a7ac45c 100644
--- a/sys/contrib/dev/acpica/compiler/dtfield.c
+++ b/sys/contrib/dev/acpica/compiler/dtfield.c
@@ -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;
}
diff --git a/sys/contrib/dev/acpica/compiler/dtio.c b/sys/contrib/dev/acpica/compiler/dtio.c
index 38d77b058056..54b41628285a 100644
--- a/sys/contrib/dev/acpica/compiler/dtio.c
+++ b/sys/contrib/dev/acpica/compiler/dtio.c
@@ -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");
diff --git a/sys/contrib/dev/acpica/compiler/dttable1.c b/sys/contrib/dev/acpica/compiler/dttable1.c
index 4c1604ce722c..a533a51ab697 100644
--- a/sys/contrib/dev/acpica/compiler/dttable1.c
+++ b/sys/contrib/dev/acpica/compiler/dttable1.c
@@ -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,12 +2080,16 @@ 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);
@@ -2085,122 +2100,263 @@ 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,
- &Subtable);
- if (ACPI_FAILURE (Status))
- {
- return (Status);
- }
- ParentTable = DtPeekSubtable ();
- DtInsertSubtable (ParentTable, Subtable);
- DtPushSubtable (Subtable);
+ /* Compile the SubtableType integer */
- IvrsHeader = ACPI_CAST_PTR (ACPI_IVRS_HEADER, Subtable->Buffer);
+ DtCompileInteger (&SubtableType, *PFieldList, 1, 0);
- switch (IvrsHeader->Type)
+ switch (SubtableType)
{
+
+ /* Type 10h, IVHD (I/O Virtualization Hardware Definition) */
+
case ACPI_IVRS_TYPE_HARDWARE1:
- InfoTable = AcpiDmTableInfoIvrs0;
+ InfoTable = AcpiDmTableInfoIvrsHware1;
break;
+ /* Types 11h, 40h, IVHD (I/O Virtualization Hardware Definition) */
+
case ACPI_IVRS_TYPE_HARDWARE2:
+ case ACPI_IVRS_TYPE_HARDWARE3:
- InfoTable = AcpiDmTableInfoIvrs01;
+ 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 = AcpiDmTableInfoIvrs1;
+ 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");
+ DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart,
+ "IVRS Device Entry");
return (AE_ERROR);
}
- Status = DtCompileTable (PFieldList, InfoTable, &Subtable);
+ /* Compile the InfoTable from above */
+
+ Status = DtCompileTable (PFieldList, InfoTable,
+ &Subtable);
if (ACPI_FAILURE (Status))
{
return (Status);
}
ParentTable = DtPeekSubtable ();
- DtInsertSubtable (ParentTable, 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);
+ }
- if (IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE1 ||
- IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE2)
+ switch (SubtableType)
{
- while (*PFieldList &&
- !strcmp ((*PFieldList)->Name, "Entry Type"))
+ case ACPI_IVRS_TYPE_HARDWARE1:
+ case ACPI_IVRS_TYPE_HARDWARE2:
+ case ACPI_IVRS_TYPE_HARDWARE3:
+ case ACPI_IVRS_TYPE_MEMORY1:
+ case ACPI_IVRS_TYPE_MEMORY2:
+ case ACPI_IVRS_TYPE_MEMORY3:
+
+ /* Insert these IVHDs/IVMDs at the root subtable */
+
+ DtInsertSubtable (MainSubtable, Subtable);
+ DtPushSubtable (Subtable);
+ ParentTable = MainSubtable;
+ break;
+
+ case ACPI_IVRS_TYPE_HID:
+
+ /* Special handling for the HID named device entry (0xF0) */
+
+ if (ParentTable)
+ {
+ DtInsertSubtable (ParentTable, Subtable);
+ }
+
+ /*
+ * Process the HID value. First, get the HID value as a string.
+ */
+ DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0);
+
+ /*
+ * 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))
{
- SubtableStart = *PFieldList;
- DtCompileInteger (&EntryType, *PFieldList, 1, 0);
+ /* Compile the HID value as an integer */
- switch (EntryType)
+ DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0);
+
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidInteger,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
{
- /* 4-byte device entries */
+ return (Status);
+ }
+ }
+ else
+ {
+ /* Compile the HID value as a string */
- 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:
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidString,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+ }
- InfoTable = AcpiDmTableInfoIvrs4;
- break;
+ DtInsertSubtable (ParentTable, Subtable);
- /* 8-byte entries, type A */
+ /*
+ * Process the CID value. First, get the CID value as a string.
+ */
+ DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0);
- case ACPI_IVRS_TYPE_ALIAS_SELECT:
- case ACPI_IVRS_TYPE_ALIAS_START:
+ if (UtIsIdInteger ((UINT8 *) &Temp64))
+ {
+ /* Compile the CID value as an integer */
- InfoTable = AcpiDmTableInfoIvrs8a;
- break;
+ DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0);
- /* 8-byte entries, type B */
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidInteger,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+ }
+ else
+ {
+ /* Compile the CID value as a string */
- case ACPI_IVRS_TYPE_PAD8:
- case ACPI_IVRS_TYPE_EXT_SELECT:
- case ACPI_IVRS_TYPE_EXT_START:
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidString,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+ }
- InfoTable = AcpiDmTableInfoIvrs8b;
- break;
+ DtInsertSubtable (ParentTable, Subtable);
- /* 8-byte entries, type C */
+ /*
+ * Process the UID value. First, get and decode the "UID Format" field (Integer).
+ */
+ if (!*PFieldList)
+ {
+ return (AE_OK);
+ }
- case ACPI_IVRS_TYPE_SPECIAL:
+ DtCompileOneField (&Temp8, *PFieldList, 1, DT_FIELD_TYPE_INTEGER, 0);
- InfoTable = AcpiDmTableInfoIvrs8c;
- break;
+ switch (Temp8)
+ {
+ case ACPI_IVRS_UID_NOT_PRESENT:
+ break;
- default:
+ case ACPI_IVRS_UID_IS_INTEGER:
- DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart,
- "IVRS Device Entry");
- return (AE_ERROR);
+ Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidInteger,
+ &Subtable);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
}
+ DtInsertSubtable (ParentTable, Subtable);
+ break;
- Status = DtCompileTable (PFieldList, InfoTable,
+ 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);
}
- }
- DtPopSubtable ();
+ default:
+
+ /* All other subtable types come through here */
+ break;
+ }
}
return (AE_OK);
diff --git a/sys/contrib/dev/acpica/compiler/dttable2.c b/sys/contrib/dev/acpica/compiler/dttable2.c
index 8d776c9d5526..c6638a0efa21 100644
--- a/sys/contrib/dev/acpica/compiler/dttable2.c
+++ b/sys/contrib/dev/acpica/compiler/dttable2.c
@@ -1337,6 +1337,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
*
* PARAMETERS: List - Current field list pointer
@@ -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
diff --git a/sys/contrib/dev/acpica/compiler/dttemplate.h b/sys/contrib/dev/acpica/compiler/dttemplate.h
index fbe68ec9f8f1..224a6a111dc2 100644
--- a/sys/contrib/dev/acpica/compiler/dttemplate.h
+++ b/sys/contrib/dev/acpica/compiler/dttemplate.h
@@ -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..." */
diff --git a/sys/contrib/dev/acpica/compiler/dtutils.c b/sys/contrib/dev/acpica/compiler/dtutils.c
index 7cd33ab65489..41782cdb5b08 100644
--- a/sys/contrib/dev/acpica/compiler/dtutils.c
+++ b/sys/contrib/dev/acpica/compiler/dtutils.c
@@ -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);
diff --git a/sys/contrib/dev/acpica/components/executer/exfield.c b/sys/contrib/dev/acpica/components/executer/exfield.c
index 4319af75a90a..4d226437df65 100644
--- a/sys/contrib/dev/acpica/components/executer/exfield.c
+++ b/sys/contrib/dev/acpica/components/executer/exfield.c
@@ -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 */
diff --git a/sys/contrib/dev/acpica/components/executer/exserial.c b/sys/contrib/dev/acpica/components/executer/exserial.c
index 51ef22a31b8e..f95da2cacea8 100644
--- a/sys/contrib/dev/acpica/components/executer/exserial.c
+++ b/sys/contrib/dev/acpica/components/executer/exserial.c
@@ -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);
}
diff --git a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
index a107164cf3a2..1ba499939cd2 100644
--- a/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
+++ b/sys/contrib/dev/acpica/components/namespace/nsrepair2.c
@@ -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++;
diff --git a/sys/contrib/dev/acpica/components/utilities/utdelete.c b/sys/contrib/dev/acpica/components/utilities/utdelete.c
index ea657bb4ce3c..35c57c8dd12e 100644
--- a/sys/contrib/dev/acpica/components/utilities/utdelete.c
+++ b/sys/contrib/dev/acpica/components/utilities/utdelete.c
@@ -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;
diff --git a/sys/contrib/dev/acpica/components/utilities/utuuid.c b/sys/contrib/dev/acpica/components/utilities/utuuid.c
index 7880a75b6405..37637c9b5767 100644
--- a/sys/contrib/dev/acpica/components/utilities/utuuid.c
+++ b/sys/contrib/dev/acpica/components/utilities/utuuid.c
@@ -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
diff --git a/sys/contrib/dev/acpica/include/acbuffer.h b/sys/contrib/dev/acpica/include/acbuffer.h
index 3c541751c0f6..1576afa6ff95 100644
--- a/sys/contrib/dev/acpica/include/acbuffer.h
+++ b/sys/contrib/dev/acpica/include/acbuffer.h
@@ -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 */
diff --git a/sys/contrib/dev/acpica/include/acconfig.h b/sys/contrib/dev/acpica/include/acconfig.h
index b320a97e3a23..a580852698ab 100644
--- a/sys/contrib/dev/acpica/include/acconfig.h
+++ b/sys/contrib/dev/acpica/include/acconfig.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 */
diff --git a/sys/contrib/dev/acpica/include/acdisasm.h b/sys/contrib/dev/acpica/include/acdisasm.h
index 822a1bf0bba7..0f9997c4d4ea 100644
--- a/sys/contrib/dev/acpica/include/acdisasm.h
+++ b/sys/contrib/dev/acpica/include/acdisasm.h
@@ -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);
@@ -807,6 +830,10 @@ AcpiDmDumpStao (
ACPI_TABLE_HEADER *Table);
void
+AcpiDmDumpSvkl (
+ ACPI_TABLE_HEADER *Table);
+
+void
AcpiDmDumpTcpa (
ACPI_TABLE_HEADER *Table);
diff --git a/sys/contrib/dev/acpica/include/acpixf.h b/sys/contrib/dev/acpica/include/acpixf.h
index a9a749a33b77..aca3ee4c893a 100644
--- a/sys/contrib/dev/acpica/include/acpixf.h
+++ b/sys/contrib/dev/acpica/include/acpixf.h
@@ -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>
diff --git a/sys/contrib/dev/acpica/include/actbinfo.h b/sys/contrib/dev/acpica/include/actbinfo.h
index af10c774d4c6..027e6085cbe1 100644
--- a/sys/contrib/dev/acpica/include/actbinfo.h
+++ b/sys/contrib/dev/acpica/include/actbinfo.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)
diff --git a/sys/contrib/dev/acpica/include/actbl1.h b/sys/contrib/dev/acpica/include/actbl1.h
index 437a122b1a6a..136ebf129389 100644
--- a/sys/contrib/dev/acpica/include/actbl1.h
+++ b/sys/contrib/dev/acpica/include/actbl1.h
@@ -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)
diff --git a/sys/contrib/dev/acpica/include/actbl2.h b/sys/contrib/dev/acpica/include/actbl2.h
index 71c39e86295c..cb237a6b0076 100644
--- a/sys/contrib/dev/acpica/include/actbl2.h
+++ b/sys/contrib/dev/acpica/include/actbl2.h
@@ -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 */
/*
@@ -211,6 +215,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
*
* Conforms to "IO Remapping Table System Software on ARM Platforms",
@@ -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
@@ -2102,6 +2144,52 @@ typedef struct 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)
* Version 1
*
@@ -2211,6 +2299,36 @@ enum AcpiRasfStatus
/*******************************************************************************
*
+ * 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
* Version 1
*
@@ -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()
diff --git a/sys/contrib/dev/acpica/include/acutils.h b/sys/contrib/dev/acpica/include/acutils.h
index 9520b6026760..3b837e37b811 100644
--- a/sys/contrib/dev/acpica/include/acutils.h
+++ b/sys/contrib/dev/acpica/include/acutils.h
@@ -1268,6 +1268,11 @@ void
AcpiUtConvertStringToUuid (
char *InString,
UINT8 *UuidBuffer);
+
+ACPI_STATUS
+AcpiUtConvertUuidToString (
+ char *UuidBuffer,
+ char *OutString);
#endif
#endif /* _ACUTILS_H */