summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/common
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2015-04-18 08:01:12 +0000
committerjkim <jkim@FreeBSD.org>2015-04-18 08:01:12 +0000
commitc90c234f291222de71399eb6bf3cf20dd5146286 (patch)
treeaa7f3f24f120870935af1a85c50092755374cc6e /sys/contrib/dev/acpica/common
parent07d63652f3a52adc1f72560c92bb639de8bffbe1 (diff)
downloadFreeBSD-src-c90c234f291222de71399eb6bf3cf20dd5146286.zip
FreeBSD-src-c90c234f291222de71399eb6bf3cf20dd5146286.tar.gz
MFC: r281396, r281475
Merge ACPICA 20150410. Relnotes: yes
Diffstat (limited to 'sys/contrib/dev/acpica/common')
-rw-r--r--sys/contrib/dev/acpica/common/adfile.c10
-rw-r--r--sys/contrib/dev/acpica/common/adisasm.c95
-rw-r--r--sys/contrib/dev/acpica/common/dmtable.c136
-rw-r--r--sys/contrib/dev/acpica/common/dmtbdump.c100
-rw-r--r--sys/contrib/dev/acpica/common/dmtbinfo.c42
5 files changed, 184 insertions, 199 deletions
diff --git a/sys/contrib/dev/acpica/common/adfile.c b/sys/contrib/dev/acpica/common/adfile.c
index edf4513..2bfe7ed 100644
--- a/sys/contrib/dev/acpica/common/adfile.c
+++ b/sys/contrib/dev/acpica/common/adfile.c
@@ -295,7 +295,10 @@ FlSplitInputPathname (
char *Filename;
- *OutDirectoryPath = NULL;
+ if (OutDirectoryPath)
+ {
+ *OutDirectoryPath = NULL;
+ }
if (!InputPath)
{
@@ -340,7 +343,10 @@ FlSplitInputPathname (
return (AE_NO_MEMORY);
}
- *OutDirectoryPath = DirectoryPath;
+ if (OutDirectoryPath)
+ {
+ *OutDirectoryPath = DirectoryPath;
+ }
if (OutFilename)
{
diff --git a/sys/contrib/dev/acpica/common/adisasm.c b/sys/contrib/dev/acpica/common/adisasm.c
index 2212450..658b5be 100644
--- a/sys/contrib/dev/acpica/common/adisasm.c
+++ b/sys/contrib/dev/acpica/common/adisasm.c
@@ -64,6 +64,11 @@ AdCreateTableHeader (
char *Filename,
ACPI_TABLE_HEADER *Table);
+static ACPI_STATUS
+AdStoreTable (
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIndex);
+
/* Stubs for ASL compiler */
#ifndef ACPI_ASL_COMPILER
@@ -298,7 +303,7 @@ AdAmlDisassemble (
return (Status);
}
- if (!AcpiGbl_DbOpt_disasm)
+ if (!AcpiGbl_DbOpt_Disasm)
{
return (AE_OK);
}
@@ -337,7 +342,6 @@ AdAmlDisassemble (
{
fprintf (stderr, "Could not open output file %s\n", DisasmFilename);
Status = AE_ERROR;
- ACPI_FREE (DisasmFilename);
goto Cleanup;
}
@@ -346,9 +350,11 @@ AdAmlDisassemble (
*OutFilename = DisasmFilename;
- if (!AcpiUtIsAmlTable (Table))
+ /* ForceAmlDisassembly means to assume the table contains valid AML */
+
+ if (!AcpiGbl_ForceAmlDisassembly && !AcpiUtIsAmlTable (Table))
{
- AdDisassemblerHeader (Filename);
+ AdDisassemblerHeader (Filename, ACPI_IS_DATA_TABLE);
AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n",
Table->Signature);
AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] "
@@ -486,7 +492,7 @@ AdAmlDisassemble (
/* Optional displays */
- if (AcpiGbl_DbOpt_disasm)
+ if (AcpiGbl_DbOpt_Disasm)
{
/* This is the real disassembly */
@@ -515,7 +521,7 @@ AdAmlDisassemble (
Cleanup:
- if (Table && !AcpiUtIsAmlTable (Table))
+ if (Table && !AcpiGbl_ForceAmlDisassembly &&!AcpiUtIsAmlTable (Table))
{
ACPI_FREE (Table);
}
@@ -543,6 +549,7 @@ Cleanup:
* FUNCTION: AdDisassemblerHeader
*
* PARAMETERS: Filename - Input file for the table
+ * TableType - Either AML or DataTable
*
* RETURN: None
*
@@ -553,7 +560,8 @@ Cleanup:
void
AdDisassemblerHeader (
- char *Filename)
+ char *Filename,
+ UINT8 TableType)
{
time_t Timer;
@@ -565,17 +573,20 @@ AdDisassemblerHeader (
AcpiOsPrintf ("/*\n");
AcpiOsPrintf (ACPI_COMMON_HEADER (AML_DISASSEMBLER_NAME, " * "));
- if (AcpiGbl_CstyleDisassembly)
+ if (TableType == ACPI_IS_AML_TABLE)
{
- AcpiOsPrintf (
- " * Disassembling to symbolic ASL+ operators\n"
- " *\n");
- }
- else
- {
- AcpiOsPrintf (
- " * Disassembling to non-symbolic legacy ASL operators\n"
- " *\n");
+ if (AcpiGbl_CstyleDisassembly)
+ {
+ AcpiOsPrintf (
+ " * Disassembling to symbolic ASL+ operators\n"
+ " *\n");
+ }
+ else
+ {
+ AcpiOsPrintf (
+ " * Disassembling to non-symbolic legacy ASL operators\n"
+ " *\n");
+ }
}
AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer));
@@ -609,7 +620,7 @@ AdCreateTableHeader (
/*
* Print file header and dump original table header
*/
- AdDisassemblerHeader (Filename);
+ AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE);
AcpiOsPrintf (" * Original Table Header:\n");
AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature);
@@ -717,7 +728,7 @@ AdDisplayTables (
return (AE_NOT_EXIST);
}
- if (!AcpiGbl_DbOpt_verbose)
+ if (!AcpiGbl_DbOpt_Verbose)
{
AdCreateTableHeader (Filename, Table);
}
@@ -725,7 +736,7 @@ AdDisplayTables (
AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX);
MpEmitMappingInfo ();
- if (AcpiGbl_DbOpt_verbose)
+ if (AcpiGbl_DbOpt_Verbose)
{
AcpiOsPrintf ("\n\nTable Header:\n");
AcpiUtDebugDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER),
@@ -740,6 +751,43 @@ AdDisplayTables (
}
+/*******************************************************************************
+ *
+ * FUNCTION: AdStoreTable
+ *
+ * PARAMETERS: Table - Table header
+ * TableIndex - Where the table index is returned
+ *
+ * RETURN: Status and table index.
+ *
+ * DESCRIPTION: Add an ACPI table to the global table list
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AdStoreTable (
+ ACPI_TABLE_HEADER *Table,
+ UINT32 *TableIndex)
+{
+ ACPI_STATUS Status;
+ ACPI_TABLE_DESC *TableDesc;
+
+
+ Status = AcpiTbGetNextTableDescriptor (TableIndex, &TableDesc);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+
+ /* Initialize added table */
+
+ AcpiTbInitTableDescriptor (TableDesc, ACPI_PTR_TO_PHYSADDR (Table),
+ ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, Table);
+ AcpiTbValidateTable (TableDesc);
+ return (AE_OK);
+}
+
+
/******************************************************************************
*
* FUNCTION: AdGetLocalTables
@@ -777,8 +825,7 @@ AdGetLocalTables (
/* Store DSDT in the Table Manager */
- Status = AcpiTbStoreTable (0, NewTable, NewTable->Length,
- 0, &TableIndex);
+ Status = AdStoreTable (NewTable, &TableIndex);
if (ACPI_FAILURE (Status))
{
fprintf (stderr, "Could not store DSDT\n");
@@ -871,9 +918,7 @@ AdParseTable (
if (LoadTable)
{
- Status = AcpiTbStoreTable ((ACPI_PHYSICAL_ADDRESS) Table, Table,
- Table->Length, ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL,
- &TableIndex);
+ Status = AdStoreTable (Table, &TableIndex);
if (ACPI_FAILURE (Status))
{
return (Status);
diff --git a/sys/contrib/dev/acpica/common/dmtable.c b/sys/contrib/dev/acpica/common/dmtable.c
index d33d86f..b1875f8 100644
--- a/sys/contrib/dev/acpica/common/dmtable.c
+++ b/sys/contrib/dev/acpica/common/dmtable.c
@@ -241,13 +241,6 @@ static const char *AcpiDmPmttSubnames[] =
"Unknown SubTable Type" /* Reserved */
};
-static const char *AcpiDmSlicSubnames[] =
-{
- "Public Key Structure",
- "Windows Marker Structure",
- "Unknown SubTable Type" /* Reserved */
-};
-
static const char *AcpiDmSratSubnames[] =
{
"Processor Local APIC/SAPIC Affinity",
@@ -339,6 +332,7 @@ ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi, "Management Controller Host Interface table"},
{ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst, "Memory Power State Table"},
{ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct, "Maximum System Characteristics Table"},
+ {ACPI_SIG_MSDM, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateMsdm, "Microsoft Data Management table"},
{ACPI_SIG_MTMR, NULL, AcpiDmDumpMtmr, DtCompileMtmr, TemplateMtmr, "MID Timer Table"},
{ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct, "Platform Communications Channel Table"},
{ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt, "Platform Memory Topology Table"},
@@ -515,10 +509,20 @@ AcpiDmDumpDataTable (
}
else
{
- AcpiOsPrintf ("\n**** Unknown ACPI table type [%4.4s]\n\n",
+ AcpiOsPrintf ("\n**** Unknown ACPI table signature [%4.4s]\n\n",
Table->Signature);
- fprintf (stderr, "Unknown ACPI table signature [%4.4s], decoding header only\n",
+
+ fprintf (stderr, "Unknown ACPI table signature [%4.4s], ",
Table->Signature);
+
+ if (!AcpiGbl_ForceAmlDisassembly)
+ {
+ fprintf (stderr, "decoding ACPI table header only\n");
+ }
+ else
+ {
+ fprintf (stderr, "assuming table contains valid AML code\n");
+ }
}
}
else if (TableData->TableHandler)
@@ -686,6 +690,7 @@ AcpiDmDumpTable (
UINT32 ByteLength;
UINT8 Temp8;
UINT16 Temp16;
+ UINT32 Temp32;
UINT64 Value;
ACPI_DMTABLE_DATA *TableData;
const char *Name;
@@ -715,7 +720,8 @@ AcpiDmDumpTable (
if ((CurrentOffset >= TableLength) ||
(SubtableLength && (Info->Offset >= SubtableLength)))
{
- AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure!\n");
+ AcpiOsPrintf (
+ "**** ACPI table terminates in the middle of a data structure! (dump table)\n");
return (AE_BAD_DATA);
}
@@ -760,7 +766,6 @@ AcpiDmDumpTable (
case ACPI_DMT_UINT32:
case ACPI_DMT_NAME4:
case ACPI_DMT_SIG:
- case ACPI_DMT_SLIC:
case ACPI_DMT_LPIT:
ByteLength = 4;
@@ -805,6 +810,12 @@ AcpiDmDumpTable (
ByteLength = 128;
break;
+ case ACPI_DMT_BUFFER:
+ case ACPI_DMT_RAW_BUFFER:
+
+ ByteLength = SubtableLength;
+ break;
+
case ACPI_DMT_STRING:
ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1;
@@ -838,7 +849,8 @@ AcpiDmDumpTable (
if (CurrentOffset + ByteLength > TableLength)
{
- AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure!\n");
+ AcpiOsPrintf (
+ "**** ACPI table terminates in the middle of a data structure!\n");
return (AE_BAD_DATA);
}
@@ -1005,8 +1017,9 @@ AcpiDmDumpTable (
AcpiOsPrintf ("%2.2X", *Target);
Temp8 = AcpiDmGenerateChecksum (Table,
- ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
- ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
+ ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
+ ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
+
if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum)
{
AcpiOsPrintf (
@@ -1032,7 +1045,7 @@ AcpiDmDumpTable (
Temp8 = ACPI_GAS_WIDTH_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, Temp8, AcpiDmGasAccessWidth[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGasAccessWidth[Temp8]);
break;
case ACPI_DMT_GAS:
@@ -1069,7 +1082,8 @@ AcpiDmDumpTable (
Temp16 = ACPI_DMAR_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmDmarSubnames[Temp16]);
+ AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
+ AcpiDmDmarSubnames[Temp16]);
break;
case ACPI_DMT_DMAR_SCOPE:
@@ -1082,7 +1096,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_DMAR_SCOPE_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmDmarScope[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmDmarScope[Temp8]);
break;
case ACPI_DMT_EINJACT:
@@ -1095,7 +1110,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_EINJ_ACTION_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmEinjActions[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmEinjActions[Temp8]);
break;
case ACPI_DMT_EINJINST:
@@ -1108,7 +1124,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmEinjInstructions[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmEinjInstructions[Temp8]);
break;
case ACPI_DMT_ERSTACT:
@@ -1121,7 +1138,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_ERST_ACTION_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstActions[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmErstActions[Temp8]);
break;
case ACPI_DMT_ERSTINST:
@@ -1134,7 +1152,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_ERST_INSTRUCTION_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstInstructions[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmErstInstructions[Temp8]);
break;
case ACPI_DMT_GTDT:
@@ -1147,7 +1166,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_GTDT_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmGtdtSubnames[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmGtdtSubnames[Temp8]);
break;
case ACPI_DMT_HEST:
@@ -1160,12 +1180,15 @@ AcpiDmDumpTable (
Temp16 = ACPI_HEST_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmHestSubnames[Temp16]);
+ AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
+ AcpiDmHestSubnames[Temp16]);
break;
case ACPI_DMT_HESTNTFY:
- AcpiOsPrintf (STRING_FORMAT, "Hardware Error Notification Structure");
+ AcpiOsPrintf (STRING_FORMAT,
+ "Hardware Error Notification Structure");
+
AcpiDmDumpTable (TableLength, CurrentOffset, Target,
sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify);
AcpiOsPrintf ("\n");
@@ -1182,7 +1205,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_HEST_NOTIFY_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmHestNotifySubnames[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmHestNotifySubnames[Temp8]);
break;
case ACPI_DMT_MADT:
@@ -1195,7 +1219,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_MADT_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmMadtSubnames[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmMadtSubnames[Temp8]);
break;
case ACPI_DMT_PCCT:
@@ -1208,7 +1233,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_PCCT_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPcctSubnames[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmPcctSubnames[Temp8]);
break;
case ACPI_DMT_PMTT:
@@ -1221,20 +1247,20 @@ AcpiDmDumpTable (
Temp8 = ACPI_PMTT_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPmttSubnames[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmPmttSubnames[Temp8]);
break;
- case ACPI_DMT_SLIC:
-
- /* SLIC subtable types */
-
- Temp8 = *Target;
- if (Temp8 > ACPI_SLIC_TYPE_RESERVED)
- {
- Temp8 = ACPI_SLIC_TYPE_RESERVED;
- }
+ case ACPI_DMT_RAW_BUFFER:
+ /*
+ * Currently only used for SLIC table
+ */
+ AcpiOsPrintf ("/* Proprietary data structure */ ");
- AcpiOsPrintf (UINT32_FORMAT, *Target, AcpiDmSlicSubnames[Temp8]);
+ AcpiDmDumpBuffer (Table, sizeof (ACPI_TABLE_HEADER),
+ ByteLength, sizeof (ACPI_TABLE_HEADER),
+ "Licensing Data", TRUE);
+ AcpiOsPrintf ("\n");
break;
case ACPI_DMT_SRAT:
@@ -1247,7 +1273,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_SRAT_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmSratSubnames[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmSratSubnames[Temp8]);
break;
case ACPI_DMT_FADTPM:
@@ -1260,7 +1287,8 @@ AcpiDmDumpTable (
Temp8 = ACPI_FADT_PM_RESERVED;
}
- AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmFadtProfiles[Temp8]);
+ AcpiOsPrintf (UINT8_FORMAT, *Target,
+ AcpiDmFadtProfiles[Temp8]);
break;
case ACPI_DMT_IVRS:
@@ -1295,26 +1323,14 @@ AcpiDmDumpTable (
/* LPIT subtable types */
- Temp8 = *Target;
- switch (Temp8)
+ Temp32 = ACPI_GET32 (Target);
+ if (Temp32 > ACPI_LPIT_TYPE_RESERVED)
{
- case ACPI_LPIT_TYPE_NATIVE_CSTATE:
-
- Name = AcpiDmLpitSubnames[0];
- break;
-
- case ACPI_LPIT_TYPE_SIMPLE_IO:
-
- Name = AcpiDmLpitSubnames[1];
- break;
-
- default:
-
- Name = AcpiDmLpitSubnames[2];
- break;
+ Temp32 = ACPI_LPIT_TYPE_RESERVED;
}
- AcpiOsPrintf (UINT32_FORMAT, *Target, Name);
+ AcpiOsPrintf (UINT32_FORMAT, ACPI_GET32 (Target),
+ AcpiDmLpitSubnames[Temp32]);
break;
case ACPI_DMT_EXIT:
@@ -1331,8 +1347,10 @@ AcpiDmDumpTable (
if (TableOffset && !SubtableLength)
{
- /* If this table is not the main table, subtable must have valid length */
-
+ /*
+ * If this table is not the main table, the subtable must have a
+ * valid length
+ */
AcpiOsPrintf ("Invalid zero length subtable\n");
return (AE_BAD_DATA);
}
diff --git a/sys/contrib/dev/acpica/common/dmtbdump.c b/sys/contrib/dev/acpica/common/dmtbdump.c
index 399afa5..8a44328 100644
--- a/sys/contrib/dev/acpica/common/dmtbdump.c
+++ b/sys/contrib/dev/acpica/common/dmtbdump.c
@@ -59,14 +59,6 @@ AcpiDmValidateFadtLength (
UINT32 Revision,
UINT32 Length);
-static void
-AcpiDmDumpBuffer (
- void *Table,
- UINT32 BufferOffset,
- UINT32 Length,
- UINT32 AbsoluteOffset,
- char *Header);
-
/*******************************************************************************
*
@@ -78,6 +70,7 @@ AcpiDmDumpBuffer (
* AbsoluteOffset - Offset of buffer in the main ACPI table
* Header - Name of the buffer field (printed on the
* first line only.)
+ * MultiLine - TRUE if a large, multi-line buffer
*
* RETURN: None
*
@@ -86,13 +79,14 @@ AcpiDmDumpBuffer (
*
******************************************************************************/
-static void
+void
AcpiDmDumpBuffer (
void *Table,
UINT32 BufferOffset,
UINT32 Length,
UINT32 AbsoluteOffset,
- char *Header)
+ char *Header,
+ BOOLEAN MultiLine)
{
UINT8 *Buffer;
UINT32 i;
@@ -110,10 +104,19 @@ AcpiDmDumpBuffer (
{
if (!(i % 16))
{
- AcpiOsPrintf ("\n");
- AcpiDmLineHeader (AbsoluteOffset,
- ((Length - i) > 16) ? 16 : (Length - i), Header);
- Header = NULL;
+ if (MultiLine)
+ {
+ /* Insert a backslash - line continuation character */
+
+ AcpiOsPrintf ("\\\n ");
+ }
+ else
+ {
+ AcpiOsPrintf ("\n");
+ AcpiDmLineHeader (AbsoluteOffset,
+ ((Length - i) > 16) ? 16 : (Length - i), Header);
+ Header = NULL;
+ }
}
AcpiOsPrintf ("%.02X ", *Buffer);
@@ -526,7 +529,7 @@ AcpiDmDumpAsf (
DataOffset++;
if (DataOffset > Table->Length)
{
- AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure!\n");
+ AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure! (ASF! table)\n");
return;
}
}
@@ -692,7 +695,7 @@ AcpiDmDumpCsrt (
InfoLength = SubSubTable->Length - SubSubOffset;
AcpiDmDumpBuffer (SubSubTable, SubSubOffset, InfoLength,
- Offset + SubOffset + SubSubOffset, "ResourceInfo");
+ Offset + SubOffset + SubSubOffset, "ResourceInfo", FALSE);
SubSubOffset += InfoLength;
/* Point to next sub-subtable */
@@ -812,7 +815,7 @@ AcpiDmDumpDbg2 (
if (SubTable->OemDataOffset)
{
AcpiDmDumpBuffer (SubTable, SubTable->OemDataOffset, SubTable->OemDataLength,
- Offset + SubTable->OemDataOffset, "OEM Data");
+ Offset + SubTable->OemDataOffset, "OEM Data", FALSE);
}
/* Point to next subtable */
@@ -2535,67 +2538,8 @@ void
AcpiDmDumpSlic (
ACPI_TABLE_HEADER *Table)
{
- ACPI_STATUS Status;
- UINT32 Offset = sizeof (ACPI_TABLE_SLIC);
- ACPI_SLIC_HEADER *SubTable;
- ACPI_DMTABLE_INFO *InfoTable;
-
-
- /* There is no main SLIC table, only subtables */
-
- SubTable = ACPI_ADD_PTR (ACPI_SLIC_HEADER, Table, Offset);
- while (Offset < Table->Length)
- {
- /* Common subtable header */
-
- AcpiOsPrintf ("\n");
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
- SubTable->Length, AcpiDmTableInfoSlicHdr);
- if (ACPI_FAILURE (Status))
- {
- return;
- }
-
- switch (SubTable->Type)
- {
- case ACPI_SLIC_TYPE_PUBLIC_KEY:
-
- InfoTable = AcpiDmTableInfoSlic0;
- break;
-
- case ACPI_SLIC_TYPE_WINDOWS_MARKER:
-
- InfoTable = AcpiDmTableInfoSlic1;
- break;
-
- default:
-
- AcpiOsPrintf ("\n**** Unknown SLIC subtable type 0x%X\n", SubTable->Type);
-
- /* Attempt to continue */
-
- if (!SubTable->Length)
- {
- AcpiOsPrintf ("Invalid zero length subtable\n");
- return;
- }
- goto NextSubTable;
- }
-
- AcpiOsPrintf ("\n");
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
- SubTable->Length, InfoTable);
- if (ACPI_FAILURE (Status))
- {
- return;
- }
-
-NextSubTable:
- /* Point to next subtable */
-
- Offset += SubTable->Length;
- SubTable = ACPI_ADD_PTR (ACPI_SLIC_HEADER, SubTable, SubTable->Length);
- }
+ AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
+ Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
}
diff --git a/sys/contrib/dev/acpica/common/dmtbinfo.c b/sys/contrib/dev/acpica/common/dmtbinfo.c
index 6a71c8a..4ce802b 100644
--- a/sys/contrib/dev/acpica/common/dmtbinfo.c
+++ b/sys/contrib/dev/acpica/common/dmtbinfo.c
@@ -200,9 +200,7 @@
#define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_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)
-#define ACPI_SLICH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_HEADER,f)
-#define ACPI_SLIC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_KEY,f)
-#define ACPI_SLIC1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_MARKER,f)
+#define ACPI_SLIC_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIC,f)
#define ACPI_SRATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f)
#define ACPI_SRAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f)
#define ACPI_SRAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f)
@@ -2043,42 +2041,16 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[] =
/*******************************************************************************
*
- * SLIC - Software Licensing Description Table. There is no common table, just
- * the standard ACPI header and then subtables.
+ * SLIC - Software Licensing Description Table. This table contains the standard
+ * ACPI header followed by proprietary data structures
*
******************************************************************************/
-/* Common Subtable header (one per Subtable) */
-
-ACPI_DMTABLE_INFO AcpiDmTableInfoSlicHdr[] =
-{
- {ACPI_DMT_SLIC, ACPI_SLICH_OFFSET (Type), "Subtable Type", 0},
- {ACPI_DMT_UINT32, ACPI_SLICH_OFFSET (Length), "Length", DT_LENGTH},
- ACPI_DMT_TERMINATOR
-};
-
-ACPI_DMTABLE_INFO AcpiDmTableInfoSlic0[] =
-{
- {ACPI_DMT_UINT8, ACPI_SLIC0_OFFSET (KeyType), "Key Type", 0},
- {ACPI_DMT_UINT8, ACPI_SLIC0_OFFSET (Version), "Version", 0},
- {ACPI_DMT_UINT16, ACPI_SLIC0_OFFSET (Reserved), "Reserved", 0},
- {ACPI_DMT_UINT32, ACPI_SLIC0_OFFSET (Algorithm), "Algorithm", 0},
- {ACPI_DMT_NAME4, ACPI_SLIC0_OFFSET (Magic), "Magic", 0},
- {ACPI_DMT_UINT32, ACPI_SLIC0_OFFSET (BitLength), "BitLength", 0},
- {ACPI_DMT_UINT32, ACPI_SLIC0_OFFSET (Exponent), "Exponent", 0},
- {ACPI_DMT_BUF128, ACPI_SLIC0_OFFSET (Modulus[0]), "Modulus", 0},
- ACPI_DMT_TERMINATOR
-};
+/* Single subtable, a proprietary format, so treat it as a buffer */
-ACPI_DMTABLE_INFO AcpiDmTableInfoSlic1[] =
+ACPI_DMTABLE_INFO AcpiDmTableInfoSlic[] =
{
- {ACPI_DMT_UINT32, ACPI_SLIC1_OFFSET (Version), "Version", 0},
- {ACPI_DMT_NAME6, ACPI_SLIC1_OFFSET (OemId[0]), "Oem ID", 0},
- {ACPI_DMT_NAME8, ACPI_SLIC1_OFFSET (OemTableId[0]), "Oem Table ID", 0},
- {ACPI_DMT_NAME8, ACPI_SLIC1_OFFSET (WindowsFlag[0]), "Windows Flag", 0},
- {ACPI_DMT_UINT32, ACPI_SLIC1_OFFSET (SlicVersion), "SLIC Version", 0},
- {ACPI_DMT_BUF16, ACPI_SLIC1_OFFSET (Reserved[0]), "Reserved", 0},
- {ACPI_DMT_BUF128, ACPI_SLIC1_OFFSET (Signature[0]), "Signature", 0},
+ {ACPI_DMT_RAW_BUFFER, 0, "Software Licensing Structure", 0},
ACPI_DMT_TERMINATOR
};
@@ -2091,7 +2063,7 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoSlic1[] =
ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[] =
{
- {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities", 0},
+ {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities", 0},
ACPI_DMT_TERMINATOR
};
OpenPOWER on IntegriCloud