3df7a96ee8
This patch handles most of the disassembler issues I could uncover. There may be others still lurking. Signed-off-by: Al Stone <ahs3@redhat.com>
2537 lines
85 KiB
Diff
2537 lines
85 KiB
Diff
diff -Naur acpica-unix2-20160930/source/common/acfileio.c acpica-unix2-20160930-s390/source/common/acfileio.c
|
|
--- acpica-unix2-20160930/source/common/acfileio.c 2016-09-30 10:43:55.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/common/acfileio.c 2016-10-28 14:25:41.845397957 -0600
|
|
@@ -241,6 +241,7 @@
|
|
ACPI_TABLE_HEADER *Table;
|
|
INT32 Count;
|
|
long TableOffset;
|
|
+ UINT32 TableLen;
|
|
|
|
|
|
*ReturnTable = NULL;
|
|
@@ -281,7 +282,8 @@
|
|
|
|
/* Allocate a buffer for the entire table */
|
|
|
|
- Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length);
|
|
+ ACPI_MOVE_32_TO_32(&TableLen, &TableHeader.Length);
|
|
+ Table = AcpiOsAllocate ((ACPI_SIZE) TableLen);
|
|
if (!Table)
|
|
{
|
|
return (AE_NO_MEMORY);
|
|
@@ -291,8 +293,8 @@
|
|
|
|
fseek (File, TableOffset, SEEK_SET);
|
|
|
|
- Count = fread (Table, 1, TableHeader.Length, File);
|
|
- if (Count != (INT32) TableHeader.Length)
|
|
+ Count = fread (Table, 1, TableLen, File);
|
|
+ if (Count != (INT32) TableLen)
|
|
{
|
|
Status = AE_ERROR;
|
|
goto ErrorExit;
|
|
@@ -300,7 +302,7 @@
|
|
|
|
/* Validate the checksum (just issue a warning) */
|
|
|
|
- Status = AcpiTbVerifyChecksum (Table, TableHeader.Length);
|
|
+ Status = AcpiTbVerifyChecksum (Table, TableLen);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
Status = AcCheckTextModeCorruption (Table);
|
|
@@ -392,6 +394,7 @@
|
|
ACPI_SIZE Actual;
|
|
long OriginalOffset;
|
|
UINT32 FileSize;
|
|
+ UINT32 TableLength;
|
|
UINT32 i;
|
|
|
|
|
|
@@ -423,11 +426,12 @@
|
|
/* Validate table length against bytes remaining in the file */
|
|
|
|
FileSize = CmGetFileSize (File);
|
|
- if (TableHeader.Length > (UINT32) (FileSize - TableOffset))
|
|
+ ACPI_MOVE_32_TO_32(&TableLength, &TableHeader.Length);
|
|
+ if (TableLength > (UINT32) (FileSize - TableOffset))
|
|
{
|
|
fprintf (stderr, "Table [%4.4s] is too long for file - "
|
|
"needs: 0x%.2X, remaining in file: 0x%.2X\n",
|
|
- TableHeader.Signature, TableHeader.Length,
|
|
+ TableHeader.Signature, TableLength,
|
|
(UINT32) (FileSize - TableOffset));
|
|
return (AE_BAD_HEADER);
|
|
}
|
|
diff -Naur acpica-unix2-20160930/source/common/ahpredef.c acpica-unix2-20160930-s390/source/common/ahpredef.c
|
|
--- acpica-unix2-20160930/source/common/ahpredef.c 2016-09-30 10:43:56.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/common/ahpredef.c 2016-10-28 14:25:41.844397962 -0600
|
|
@@ -358,7 +358,7 @@
|
|
char *Nameseg)
|
|
{
|
|
const AH_PREDEFINED_NAME *Info;
|
|
-
|
|
+
|
|
|
|
for (Info = AslPredefinedInfo; Info->Name; Info++)
|
|
{
|
|
diff -Naur acpica-unix2-20160930/source/common/dmtable.c acpica-unix2-20160930-s390/source/common/dmtable.c
|
|
--- acpica-unix2-20160930/source/common/dmtable.c 2016-09-30 10:43:56.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/common/dmtable.c 2016-10-28 14:25:41.840397982 -0600
|
|
@@ -499,7 +499,7 @@
|
|
*/
|
|
if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))
|
|
{
|
|
- Length = Table->Length;
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -513,13 +513,14 @@
|
|
else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT))
|
|
{
|
|
Length = AcpiDmDumpS3pt (Table);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
}
|
|
else
|
|
{
|
|
/*
|
|
* All other tables must use the common ACPI table header, dump it now
|
|
*/
|
|
- Length = Table->Length;
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -730,6 +731,7 @@
|
|
BOOLEAN LastOutputBlankLine = FALSE;
|
|
ACPI_STATUS Status;
|
|
char RepairedName[8];
|
|
+ UINT16 Val16;
|
|
|
|
|
|
if (!Info)
|
|
@@ -1097,8 +1099,9 @@
|
|
/* Checksum, display and validate */
|
|
|
|
AcpiOsPrintf ("%2.2X", *Target);
|
|
- Temp8 = AcpiDmGenerateChecksum (Table,
|
|
- ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length,
|
|
+ ACPI_MOVE_32_TO_32(&Temp32,
|
|
+ &ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length);
|
|
+ Temp8 = AcpiDmGenerateChecksum (Table, Temp32,
|
|
ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
|
|
|
|
if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum)
|
|
@@ -1163,14 +1166,14 @@
|
|
|
|
/* DMAR subtable types */
|
|
|
|
- Temp16 = ACPI_GET16 (Target);
|
|
+ Val16 = ACPI_GET16 (Target);
|
|
+ ACPI_MOVE_16_TO_16(&Temp16, &Val16);
|
|
if (Temp16 > ACPI_DMAR_TYPE_RESERVED)
|
|
{
|
|
Temp16 = ACPI_DMAR_TYPE_RESERVED;
|
|
}
|
|
|
|
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
|
|
- AcpiDmDmarSubnames[Temp16]);
|
|
+ AcpiOsPrintf (UINT16_FORMAT, Temp16, AcpiDmDmarSubnames[Temp16]);
|
|
break;
|
|
|
|
case ACPI_DMT_DMAR_SCOPE:
|
|
@@ -1261,14 +1264,14 @@
|
|
|
|
/* HEST subtable types */
|
|
|
|
- Temp16 = ACPI_GET16 (Target);
|
|
+ Val16 = ACPI_GET16 (Target);
|
|
+ ACPI_MOVE_16_TO_16(&Temp16, &Val16);
|
|
if (Temp16 > ACPI_HEST_TYPE_RESERVED)
|
|
{
|
|
Temp16 = ACPI_HEST_TYPE_RESERVED;
|
|
}
|
|
|
|
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
|
|
- AcpiDmHestSubnames[Temp16]);
|
|
+ AcpiOsPrintf (UINT16_FORMAT, Temp16, AcpiDmHestSubnames[Temp16]);
|
|
break;
|
|
|
|
case ACPI_DMT_HESTNTFY:
|
|
@@ -1334,13 +1337,14 @@
|
|
|
|
/* NFIT subtable types */
|
|
|
|
- Temp16 = ACPI_GET16 (Target);
|
|
+ Val16 = ACPI_GET16 (Target);
|
|
+ ACPI_MOVE_16_TO_16(&Temp16, &Val16);
|
|
if (Temp16 > ACPI_NFIT_TYPE_RESERVED)
|
|
{
|
|
Temp16 = ACPI_NFIT_TYPE_RESERVED;
|
|
}
|
|
|
|
- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target),
|
|
+ AcpiOsPrintf (UINT16_FORMAT, Temp16,
|
|
AcpiDmNfitSubnames[Temp16]);
|
|
break;
|
|
|
|
diff -Naur acpica-unix2-20160930/source/common/dmtables.c acpica-unix2-20160930-s390/source/common/dmtables.c
|
|
--- acpica-unix2-20160930/source/common/dmtables.c 2016-09-30 10:43:56.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/common/dmtables.c 2016-10-28 14:25:41.844397962 -0600
|
|
@@ -140,7 +140,9 @@
|
|
ACPI_TABLE_HEADER *Table)
|
|
{
|
|
UINT8 Checksum;
|
|
-
|
|
+ UINT32 TableLen;
|
|
+ UINT32 OemRev;
|
|
+ UINT32 CompilerRev;
|
|
|
|
/* Reset globals for External statements */
|
|
|
|
@@ -152,9 +154,10 @@
|
|
*/
|
|
AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE);
|
|
|
|
+ ACPI_MOVE_32_TO_32(&TableLen, &Table->Length);
|
|
AcpiOsPrintf (" * Original Table Header:\n");
|
|
AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature);
|
|
- AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length);
|
|
+ AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", TableLen, TableLen);
|
|
|
|
/* Print and validate the revision */
|
|
|
|
@@ -186,7 +189,7 @@
|
|
|
|
AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum);
|
|
|
|
- Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length);
|
|
+ Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), TableLen);
|
|
if (Checksum)
|
|
{
|
|
AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X",
|
|
@@ -196,9 +199,11 @@
|
|
AcpiOsPrintf ("\n");
|
|
AcpiOsPrintf (" * OEM ID \"%.6s\"\n", Table->OemId);
|
|
AcpiOsPrintf (" * OEM Table ID \"%.8s\"\n", Table->OemTableId);
|
|
- AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision);
|
|
+ ACPI_MOVE_32_TO_32(&OemRev, &Table->OemRevision);
|
|
+ AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", OemRev, OemRev);
|
|
AcpiOsPrintf (" * Compiler ID \"%.4s\"\n", Table->AslCompilerId);
|
|
- AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision);
|
|
+ ACPI_MOVE_32_TO_32(&CompilerRev, &Table->AslCompilerRevision);
|
|
+ AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", CompilerRev, CompilerRev);
|
|
AcpiOsPrintf (" */\n");
|
|
|
|
/*
|
|
@@ -211,7 +216,7 @@
|
|
AcpiOsPrintf (
|
|
"DefinitionBlock (\"\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
|
|
Table->Signature, Table->Revision,
|
|
- Table->OemId, Table->OemTableId, Table->OemRevision);
|
|
+ Table->OemId, Table->OemTableId, OemRev);
|
|
}
|
|
|
|
|
|
@@ -386,7 +391,8 @@
|
|
|
|
fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature);
|
|
|
|
- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER);
|
|
+ ACPI_MOVE_32_TO_32(&AmlLength, &Table->Length);
|
|
+ AmlLength -= sizeof (ACPI_TABLE_HEADER);
|
|
AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER));
|
|
|
|
/* Create the root object */
|
|
diff -Naur acpica-unix2-20160930/source/common/dmtbdump.c acpica-unix2-20160930-s390/source/common/dmtbdump.c
|
|
--- acpica-unix2-20160930/source/common/dmtbdump.c 2016-09-30 10:43:56.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/common/dmtbdump.c 2016-10-28 14:25:41.841397977 -0600
|
|
@@ -296,6 +296,8 @@
|
|
UINT32 Entries;
|
|
UINT32 Offset;
|
|
UINT32 i;
|
|
+ UINT32 Length;
|
|
+ UINT32 Address;
|
|
|
|
|
|
/* Point to start of table pointer array */
|
|
@@ -305,12 +307,14 @@
|
|
|
|
/* RSDT uses 32-bit pointers */
|
|
|
|
- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Entries = (Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32);
|
|
|
|
for (i = 0; i < Entries; i++)
|
|
{
|
|
AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i);
|
|
- AcpiOsPrintf ("%8.8X\n", Array[i]);
|
|
+ ACPI_MOVE_32_TO_32(&Address, &Array[i]);
|
|
+ AcpiOsPrintf ("%8.8X\n", Address);
|
|
Offset += sizeof (UINT32);
|
|
}
|
|
}
|
|
@@ -336,6 +340,8 @@
|
|
UINT32 Entries;
|
|
UINT32 Offset;
|
|
UINT32 i;
|
|
+ UINT32 Length;
|
|
+ UINT64 Address;
|
|
|
|
|
|
/* Point to start of table pointer array */
|
|
@@ -345,12 +351,14 @@
|
|
|
|
/* XSDT uses 64-bit pointers */
|
|
|
|
- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Entries = (Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64);
|
|
|
|
for (i = 0; i < Entries; i++)
|
|
{
|
|
AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i);
|
|
- AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i]));
|
|
+ ACPI_MOVE_64_TO_64(&Address, &Array[i]);
|
|
+ AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Address));
|
|
Offset += sizeof (UINT64);
|
|
}
|
|
}
|
|
@@ -384,6 +392,7 @@
|
|
ACPI_STATUS Status;
|
|
UINT8 FadtRevision;
|
|
UINT32 ExpectedLength;
|
|
+ UINT32 ActualLength;
|
|
UINT32 i;
|
|
|
|
|
|
@@ -400,6 +409,7 @@
|
|
return;
|
|
}
|
|
|
|
+ ACPI_MOVE_32_TO_32(&ActualLength, &Table->Length);
|
|
if (FadtRevision > ACPI_FADT_MAX_VERSION)
|
|
{
|
|
AcpiOsPrintf ("// ACPI Warning: Revision %u is not fully supported, "
|
|
@@ -409,12 +419,12 @@
|
|
else
|
|
{
|
|
ExpectedLength = FadtRevisionLength[FadtRevision];
|
|
- if (Table->Length != ExpectedLength)
|
|
+ if (ActualLength != ExpectedLength)
|
|
{
|
|
AcpiOsPrintf (
|
|
"// ACPI Warning: Input FADT revision %X does not match "
|
|
"expected length: found 0x%X expected 0x%X\n",
|
|
- FadtRevision, Table->Length, ExpectedLength);
|
|
+ FadtRevision, ActualLength, ExpectedLength);
|
|
}
|
|
}
|
|
|
|
@@ -432,14 +442,14 @@
|
|
|
|
/* Dump the fields specific to FADT revision[i] */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
|
+ Status = AcpiDmDumpTable (ActualLength, 0, Table, 0,
|
|
FadtRevisionInfo[i]);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
}
|
|
|
|
- if (Table->Length <= FadtRevisionLength[i])
|
|
+ if (ActualLength <= FadtRevisionLength[i])
|
|
{
|
|
break; /* End of table */
|
|
}
|
|
@@ -447,7 +457,7 @@
|
|
|
|
/* Build a local FADT to test some FADT values */
|
|
|
|
- AcpiTbCreateLocalFadt (Table, Table->Length);
|
|
+ AcpiTbCreateLocalFadt (Table, ActualLength);
|
|
}
|
|
|
|
|
|
@@ -478,17 +488,21 @@
|
|
UINT32 DataOffset = 0;
|
|
UINT32 i;
|
|
UINT8 Type;
|
|
+ UINT32 Len;
|
|
+ UINT16 SubLen;
|
|
|
|
|
|
/* No main table, only subtables */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Len, &Table->Length);
|
|
SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Len)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- SubTable->Header.Length, AcpiDmTableInfoAsfHdr);
|
|
+ ACPI_MOVE_16_TO_16(&SubLen, &SubTable->Header.Length);
|
|
+ Status = AcpiDmDumpTable (Len, Offset, SubTable,
|
|
+ SubLen, AcpiDmTableInfoAsfHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -545,8 +559,7 @@
|
|
return;
|
|
}
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- SubTable->Header.Length, InfoTable);
|
|
+ Status = AcpiDmDumpTable (Len, Offset, SubTable, SubLen, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -562,7 +575,7 @@
|
|
for (i = 0; i < DataCount; i++)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, DataOffset,
|
|
+ Status = AcpiDmDumpTable (Len, DataOffset,
|
|
DataTable, DataLength, DataInfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -608,15 +621,14 @@
|
|
|
|
/* Point to next subtable */
|
|
|
|
- if (!SubTable->Header.Length)
|
|
+ if (!SubLen)
|
|
{
|
|
AcpiOsPrintf ("Invalid zero subtable header length\n");
|
|
return;
|
|
}
|
|
|
|
- Offset += SubTable->Header.Length;
|
|
- SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable,
|
|
- SubTable->Header.Length);
|
|
+ Offset += SubLen;
|
|
+ SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, SubLen);
|
|
}
|
|
}
|
|
|
|
@@ -640,12 +652,13 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_CPEP_POLLING *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_CPEP);
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -655,7 +668,7 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
@@ -695,7 +708,10 @@
|
|
ACPI_CSRT_GROUP *SubTable;
|
|
ACPI_CSRT_SHARED_INFO *SharedInfoTable;
|
|
ACPI_CSRT_DESCRIPTOR *SubSubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
+ UINT32 SubLength;
|
|
+ UINT32 SubSubLength;
|
|
+ UINT32 SharedInfoLength;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_CSRT);
|
|
UINT32 SubOffset;
|
|
UINT32 SubSubOffset;
|
|
@@ -706,14 +722,16 @@
|
|
|
|
/* Subtables (Resource Groups) */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Resource group subtable */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_32_TO_32(&SubLength, &SubTable->Length);
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoCsrt0);
|
|
+ SubLength, AcpiDmTableInfoCsrt0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -733,19 +751,20 @@
|
|
return;
|
|
}
|
|
|
|
- SubOffset += SubTable->SharedInfoLength;
|
|
+ ACPI_MOVE_32_TO_32(&SharedInfoLength, &SubTable->SharedInfoLength);
|
|
+ SubOffset += SharedInfoLength;
|
|
|
|
/* Sub-Subtables (Resource Descriptors) */
|
|
|
|
SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table,
|
|
Offset + SubOffset);
|
|
|
|
- while ((SubOffset < SubTable->Length) &&
|
|
- ((Offset + SubOffset) < Table->Length))
|
|
+ while ((SubOffset < SubLength) && ((Offset + SubOffset) < Length))
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_32_TO_32(&SubSubLength, &SubSubTable->Length);
|
|
Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubTable,
|
|
- SubSubTable->Length, AcpiDmTableInfoCsrt2);
|
|
+ SubSubLength, AcpiDmTableInfoCsrt2);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -755,7 +774,7 @@
|
|
|
|
/* Resource-specific info buffer */
|
|
|
|
- InfoLength = SubSubTable->Length - SubSubOffset;
|
|
+ InfoLength = SubSubLength - SubSubOffset;
|
|
if (InfoLength)
|
|
{
|
|
Status = AcpiDmDumpTable (Length,
|
|
@@ -770,16 +789,15 @@
|
|
|
|
/* Point to next sub-subtable */
|
|
|
|
- SubOffset += SubSubTable->Length;
|
|
+ SubOffset += SubSubLength;
|
|
SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubTable,
|
|
- SubSubTable->Length);
|
|
+ SubSubLength);
|
|
}
|
|
|
|
/* Point to next subtable */
|
|
|
|
- Offset += SubTable->Length;
|
|
- SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable,
|
|
- SubTable->Length);
|
|
+ Offset += SubLength;
|
|
+ SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable, SubLength);
|
|
}
|
|
}
|
|
|
|
@@ -803,16 +821,20 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_DBG2_DEVICE *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
+ UINT16 SubLength;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_DBG2);
|
|
UINT32 i;
|
|
UINT32 ArrayOffset;
|
|
UINT32 AbsoluteOffset;
|
|
UINT8 *Array;
|
|
+ UINT16 Tmp16;
|
|
+ UINT16 AlsoTmp16;
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -822,11 +844,12 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_16_TO_16(&SubLength, &SubTable->Length);
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoDbg2Device);
|
|
+ SubLength, AcpiDmTableInfoDbg2Device);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -836,13 +859,13 @@
|
|
|
|
for (i = 0; i < SubTable->RegisterCount; i++)
|
|
{
|
|
- ArrayOffset = SubTable->BaseAddressOffset +
|
|
- (sizeof (ACPI_GENERIC_ADDRESS) * i);
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &SubTable->BaseAddressOffset);
|
|
+ ArrayOffset = Tmp16 + (sizeof (ACPI_GENERIC_ADDRESS) * i);
|
|
AbsoluteOffset = Offset + ArrayOffset;
|
|
Array = (UINT8 *) SubTable + ArrayOffset;
|
|
|
|
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
|
|
- SubTable->Length, AcpiDmTableInfoDbg2Addr);
|
|
+ SubLength, AcpiDmTableInfoDbg2Addr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -853,13 +876,13 @@
|
|
|
|
for (i = 0; i < SubTable->RegisterCount; i++)
|
|
{
|
|
- ArrayOffset = SubTable->AddressSizeOffset +
|
|
- (sizeof (UINT32) * i);
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &SubTable->AddressSizeOffset);
|
|
+ ArrayOffset = Tmp16 + (sizeof (UINT32) * i);
|
|
AbsoluteOffset = Offset + ArrayOffset;
|
|
Array = (UINT8 *) SubTable + ArrayOffset;
|
|
|
|
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
|
|
- SubTable->Length, AcpiDmTableInfoDbg2Size);
|
|
+ SubLength, AcpiDmTableInfoDbg2Size);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -869,12 +892,13 @@
|
|
/* Dump the Namestring (required) */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- ArrayOffset = SubTable->NamepathOffset;
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &SubTable->NamepathOffset);
|
|
+ ArrayOffset = Tmp16;
|
|
AbsoluteOffset = Offset + ArrayOffset;
|
|
Array = (UINT8 *) SubTable + ArrayOffset;
|
|
|
|
Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
|
|
- SubTable->Length, AcpiDmTableInfoDbg2Name);
|
|
+ SubLength, AcpiDmTableInfoDbg2Name);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -884,9 +908,10 @@
|
|
|
|
if (SubTable->OemDataOffset)
|
|
{
|
|
- Status = AcpiDmDumpTable (Length, Offset + SubTable->OemDataOffset,
|
|
- Table, SubTable->OemDataLength,
|
|
- AcpiDmTableInfoDbg2OemData);
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &SubTable->OemDataOffset);
|
|
+ ACPI_MOVE_16_TO_16(&AlsoTmp16, &SubTable->OemDataLength);
|
|
+ Status = AcpiDmDumpTable (Length, Offset + Tmp16,
|
|
+ Table, AlsoTmp16, AcpiDmTableInfoDbg2OemData);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -895,9 +920,9 @@
|
|
|
|
/* Point to next subtable */
|
|
|
|
- Offset += SubTable->Length;
|
|
+ Offset += SubLength;
|
|
SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable,
|
|
- SubTable->Length);
|
|
+ SubLength);
|
|
}
|
|
}
|
|
|
|
@@ -921,17 +946,20 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_DMAR_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
+ UINT16 SubLength;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_DMAR);
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
ACPI_DMAR_DEVICE_SCOPE *ScopeTable;
|
|
UINT32 ScopeOffset;
|
|
UINT8 *PciPath;
|
|
UINT32 PathOffset;
|
|
+ UINT16 SubType;
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -941,13 +969,14 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_16_TO_16(&SubLength, &SubTable->Length);
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoDmarHdr);
|
|
+ SubLength, AcpiDmTableInfoDmarHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -955,7 +984,8 @@
|
|
|
|
AcpiOsPrintf ("\n");
|
|
|
|
- switch (SubTable->Type)
|
|
+ ACPI_MOVE_16_TO_16(&SubType, &SubTable->Type);
|
|
+ switch (SubType)
|
|
{
|
|
case ACPI_DMAR_TYPE_HARDWARE_UNIT:
|
|
|
|
@@ -990,12 +1020,12 @@
|
|
default:
|
|
|
|
AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
|
|
- SubTable->Type);
|
|
+ SubType);
|
|
return;
|
|
}
|
|
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, InfoTable);
|
|
+ SubLength, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1004,8 +1034,8 @@
|
|
/*
|
|
* Dump the optional device scope entries
|
|
*/
|
|
- if ((SubTable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
|
|
- (SubTable->Type == ACPI_DMAR_TYPE_NAMESPACE))
|
|
+ if ((SubType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) ||
|
|
+ (SubType == ACPI_DMAR_TYPE_NAMESPACE))
|
|
{
|
|
/* These types do not support device scopes */
|
|
|
|
@@ -1013,7 +1043,7 @@
|
|
}
|
|
|
|
ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, SubTable, ScopeOffset);
|
|
- while (ScopeOffset < SubTable->Length)
|
|
+ while (ScopeOffset < SubLength)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable,
|
|
@@ -1054,9 +1084,8 @@
|
|
NextSubtable:
|
|
/* Point to next subtable */
|
|
|
|
- Offset += SubTable->Length;
|
|
- SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable,
|
|
- SubTable->Length);
|
|
+ Offset += SubLength;
|
|
+ SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubLength);
|
|
}
|
|
}
|
|
|
|
@@ -1083,12 +1112,15 @@
|
|
ACPI_DRTM_RESOURCE_LIST *DrtmRl;
|
|
ACPI_DRTM_DPS_ID *DrtmDps;
|
|
UINT32 Count;
|
|
+ UINT32 ValidatedCount;
|
|
+ UINT32 ResourceCount;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
|
|
- AcpiDmTableInfoDrtm);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDrtm);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1102,7 +1134,7 @@
|
|
|
|
DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset);
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
|
+ Status = AcpiDmDumpTable (Length, Offset,
|
|
DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables),
|
|
AcpiDmTableInfoDrtm0);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1115,10 +1147,11 @@
|
|
/* Dump Validated table addresses */
|
|
|
|
Count = 0;
|
|
- while ((Offset < Table->Length) &&
|
|
- (DrtmVtl->ValidatedTableCount > Count))
|
|
+ ACPI_MOVE_32_TO_32(&ValidatedCount, &DrtmVtl->ValidatedTableCount);
|
|
+ while ((Offset < Length) &&
|
|
+ (ValidatedCount > Count))
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
|
+ Status = AcpiDmDumpTable (Length, Offset,
|
|
ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64),
|
|
AcpiDmTableInfoDrtm0a);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1134,7 +1167,7 @@
|
|
|
|
DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset);
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
|
+ Status = AcpiDmDumpTable (Length, Offset,
|
|
DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources),
|
|
AcpiDmTableInfoDrtm1);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1147,10 +1180,11 @@
|
|
/* Dump the Resource List */
|
|
|
|
Count = 0;
|
|
- while ((Offset < Table->Length) &&
|
|
- (DrtmRl->ResourceCount > Count))
|
|
+ ACPI_MOVE_32_TO_32(&ResourceCount, &DrtmRl->ResourceCount);
|
|
+ while ((Offset < Length) &&
|
|
+ (ResourceCount > Count))
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset,
|
|
+ Status = AcpiDmDumpTable (Length, Offset,
|
|
ACPI_ADD_PTR (void, Table, Offset),
|
|
sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1166,7 +1200,7 @@
|
|
|
|
DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset);
|
|
AcpiOsPrintf ("\n");
|
|
- (void) AcpiDmDumpTable (Table->Length, Offset,
|
|
+ (void) AcpiDmDumpTable (Length, Offset,
|
|
DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2);
|
|
}
|
|
|
|
@@ -1190,12 +1224,13 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_WHEA_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_EINJ);
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -1205,7 +1240,7 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
@@ -1243,12 +1278,13 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_WHEA_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_ERST);
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -1258,7 +1294,7 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
@@ -1296,17 +1332,19 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_FPDT_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_FPDT);
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
+ UINT16 Type;
|
|
|
|
|
|
/* There is no main table (other than the standard ACPI header) */
|
|
|
|
/* Subtables */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
@@ -1318,7 +1356,8 @@
|
|
return;
|
|
}
|
|
|
|
- switch (SubTable->Type)
|
|
+ ACPI_MOVE_16_TO_16(&Type, &SubTable->Type);
|
|
+ switch (Type)
|
|
{
|
|
case ACPI_FPDT_TYPE_BOOT:
|
|
|
|
@@ -1332,8 +1371,7 @@
|
|
|
|
default:
|
|
|
|
- AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n",
|
|
- SubTable->Type);
|
|
+ AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", Type);
|
|
|
|
/* Attempt to continue */
|
|
|
|
@@ -1381,16 +1419,19 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_GTDT_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
+ UINT16 SubLength;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_GTDT);
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
UINT32 SubTableLength;
|
|
UINT32 GtCount;
|
|
+ UINT32 Tmp32;
|
|
ACPI_GTDT_TIMER_ENTRY *GtxTable;
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -1400,7 +1441,7 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
@@ -1418,8 +1459,9 @@
|
|
case ACPI_GTDT_TYPE_TIMER_BLOCK:
|
|
|
|
SubTableLength = sizeof (ACPI_GTDT_TIMER_BLOCK);
|
|
- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
|
|
+ Tmp32 = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK,
|
|
SubTable))->TimerCount;
|
|
+ ACPI_MOVE_32_TO_32(&GtCount, &Tmp32);
|
|
|
|
InfoTable = AcpiDmTableInfoGtdt0;
|
|
break;
|
|
@@ -1440,8 +1482,9 @@
|
|
return;
|
|
}
|
|
|
|
+ ACPI_MOVE_16_TO_16(&SubLength, &SubTable->Length);
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, InfoTable);
|
|
+ SubLength, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1500,16 +1543,18 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_HEST_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_HEST);
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
UINT32 SubTableLength;
|
|
UINT32 BankCount;
|
|
ACPI_HEST_IA_ERROR_BANK *BankTable;
|
|
+ UINT16 SubType;
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -1519,10 +1564,11 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
BankCount = 0;
|
|
- switch (SubTable->Type)
|
|
+ ACPI_MOVE_16_TO_16(&SubType, &SubTable->Type);
|
|
+ switch (SubType)
|
|
{
|
|
case ACPI_HEST_TYPE_IA32_CHECK:
|
|
|
|
@@ -1651,15 +1697,21 @@
|
|
ACPI_IORT_SMMU *IortSmmu = NULL;
|
|
UINT32 Offset;
|
|
UINT32 NodeOffset;
|
|
+ UINT16 NodeLength;
|
|
UINT32 Length;
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
char *String;
|
|
UINT32 i;
|
|
-
|
|
+ UINT32 TableLen;
|
|
+ UINT32 ItsCount;
|
|
+ UINT32 MappingCount;
|
|
+ UINT32 CtxIntCount;
|
|
+ UINT32 PmuIntCount;
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort);
|
|
+ ACPI_MOVE_32_TO_32(&TableLen, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (TableLen, 0, Table, 0, AcpiDmTableInfoIort);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1670,18 +1722,19 @@
|
|
|
|
/* Dump the OptionalPadding (optional) */
|
|
|
|
- if (Iort->NodeOffset > Offset)
|
|
+ ACPI_MOVE_32_TO_32(&NodeOffset, &Iort->NodeOffset);
|
|
+ if (NodeOffset > Offset)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, Table,
|
|
- Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad);
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset, Table,
|
|
+ NodeOffset - Offset, AcpiDmTableInfoIortPad);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
- Offset = Iort->NodeOffset;
|
|
- while (Offset < Table->Length)
|
|
+ ACPI_MOVE_32_TO_32(&Offset, &Iort->NodeOffset);
|
|
+ while (Offset < TableLen)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
@@ -1717,7 +1770,8 @@
|
|
case ACPI_IORT_NODE_PCI_ROOT_COMPLEX:
|
|
|
|
InfoTable = AcpiDmTableInfoIort2;
|
|
- Length = IortNode->Length - NodeOffset;
|
|
+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
|
|
+ Length = NodeLength - NodeOffset;
|
|
break;
|
|
|
|
case ACPI_IORT_NODE_SMMU:
|
|
@@ -1730,7 +1784,8 @@
|
|
case ACPI_IORT_NODE_SMMU_V3:
|
|
|
|
InfoTable = AcpiDmTableInfoIort4;
|
|
- Length = IortNode->Length - NodeOffset;
|
|
+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
|
|
+ Length = NodeLength - NodeOffset;
|
|
break;
|
|
|
|
default:
|
|
@@ -1740,7 +1795,8 @@
|
|
|
|
/* Attempt to continue */
|
|
|
|
- if (!IortNode->Length)
|
|
+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
|
|
+ if (!NodeLength)
|
|
{
|
|
AcpiOsPrintf ("Invalid zero length IORT node\n");
|
|
return;
|
|
@@ -1751,7 +1807,7 @@
|
|
/* Dump the node subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
|
Length, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1771,9 +1827,10 @@
|
|
|
|
if (IortItsGroup)
|
|
{
|
|
- for (i = 0; i < IortItsGroup->ItsCount; i++)
|
|
+ ACPI_MOVE_32_TO_32(&ItsCount, &IortItsGroup->ItsCount);
|
|
+ for (i = 0; i < ItsCount; i++)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
|
4, AcpiDmTableInfoIort0a);
|
|
NodeOffset += 4;
|
|
@@ -1785,11 +1842,11 @@
|
|
|
|
/* Dump the Padding (optional) */
|
|
|
|
- if (IortNode->Length > NodeOffset)
|
|
+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
|
|
+ if (NodeLength > NodeOffset)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
- Table, IortNode->Length - NodeOffset,
|
|
- AcpiDmTableInfoIort1a);
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
+ Table, NodeLength - NodeOffset, AcpiDmTableInfoIort1a);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1806,8 +1863,8 @@
|
|
if (IortSmmu)
|
|
{
|
|
Length = 2 * sizeof (UINT64);
|
|
- NodeOffset = IortSmmu->GlobalInterruptOffset;
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->GlobalInterruptOffset);
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
|
Length, AcpiDmTableInfoIort3a);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1815,10 +1872,11 @@
|
|
return;
|
|
}
|
|
|
|
- NodeOffset = IortSmmu->ContextInterruptOffset;
|
|
- for (i = 0; i < IortSmmu->ContextInterruptCount; i++)
|
|
+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->ContextInterruptOffset);
|
|
+ ACPI_MOVE_32_TO_32(&CtxIntCount, &IortSmmu->ContextInterruptCount);
|
|
+ for (i = 0; i < CtxIntCount; i++)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
|
8, AcpiDmTableInfoIort3b);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1829,10 +1887,11 @@
|
|
NodeOffset += 8;
|
|
}
|
|
|
|
- NodeOffset = IortSmmu->PmuInterruptOffset;
|
|
- for (i = 0; i < IortSmmu->PmuInterruptCount; i++)
|
|
+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->PmuInterruptOffset);
|
|
+ ACPI_MOVE_32_TO_32(&PmuIntCount, &IortSmmu->PmuInterruptCount);
|
|
+ for (i = 0; i < PmuIntCount; i++)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
|
8, AcpiDmTableInfoIort3c);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1852,12 +1911,13 @@
|
|
|
|
/* Dump the ID mappings */
|
|
|
|
- NodeOffset = IortNode->MappingOffset;
|
|
- for (i = 0; i < IortNode->MappingCount; i++)
|
|
+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortNode->MappingOffset);
|
|
+ ACPI_MOVE_32_TO_32(&MappingCount, &IortNode->MappingCount);
|
|
+ for (i = 0; i < MappingCount; i++)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
Length = sizeof (ACPI_IORT_ID_MAPPING);
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
|
|
+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
|
|
ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset),
|
|
Length, AcpiDmTableInfoIortMap);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -1871,8 +1931,9 @@
|
|
NextSubTable:
|
|
/* Point to next node subtable */
|
|
|
|
- Offset += IortNode->Length;
|
|
- IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, IortNode->Length);
|
|
+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
|
|
+ Offset += NodeLength;
|
|
+ IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeLength);
|
|
}
|
|
}
|
|
|
|
@@ -1903,11 +1964,14 @@
|
|
ACPI_IVRS_DE_HEADER *DeviceEntry;
|
|
ACPI_IVRS_HEADER *SubTable;
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
+ UINT32 Length;
|
|
+ UINT16 SubLength;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoIvrs);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1916,13 +1980,14 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoIvrsHdr);
|
|
+ ACPI_MOVE_16_TO_16(&SubLength, &SubTable->Length);
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
+ SubLength, AcpiDmTableInfoIvrsHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1949,7 +2014,7 @@
|
|
|
|
/* Attempt to continue */
|
|
|
|
- if (!SubTable->Length)
|
|
+ if (!SubLength)
|
|
{
|
|
AcpiOsPrintf ("Invalid zero length subtable\n");
|
|
return;
|
|
@@ -1960,8 +2025,8 @@
|
|
/* Dump the subtable */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- SubTable->Length, InfoTable);
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
+ SubLength, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -1975,7 +2040,7 @@
|
|
DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, SubTable,
|
|
sizeof (ACPI_IVRS_HARDWARE));
|
|
|
|
- while (EntryOffset < (Offset + SubTable->Length))
|
|
+ while (EntryOffset < (Offset + SubLength))
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
/*
|
|
@@ -2037,7 +2102,7 @@
|
|
|
|
/* Dump the Device Entry */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
|
|
+ Status = AcpiDmDumpTable (Length, EntryOffset,
|
|
DeviceEntry, EntryLength, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2053,8 +2118,8 @@
|
|
NextSubTable:
|
|
/* Point to next subtable */
|
|
|
|
- Offset += SubTable->Length;
|
|
- SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, SubTable, SubTable->Length);
|
|
+ Offset += SubLength;
|
|
+ SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, SubTable, SubLength);
|
|
}
|
|
}
|
|
|
|
@@ -2080,7 +2145,7 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_LPIT_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_LPIT);
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
UINT32 SubTableLength;
|
|
@@ -2088,8 +2153,9 @@
|
|
|
|
/* Subtables */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
SubTable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
@@ -2153,13 +2219,14 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_SUBTABLE_HEADER *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_MADT);
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2169,7 +2236,7 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
@@ -2315,11 +2382,13 @@
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_MCFG);
|
|
ACPI_MCFG_ALLOCATION *SubTable;
|
|
+ UINT32 Len;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg);
|
|
+ ACPI_MOVE_32_TO_32(&Len, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Len, 0, Table, 0, AcpiDmTableInfoMcfg);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2328,17 +2397,17 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Len)
|
|
{
|
|
- if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length)
|
|
+ if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Len)
|
|
{
|
|
AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n",
|
|
- sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
|
|
+ sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Len));
|
|
return;
|
|
}
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Len, Offset, SubTable,
|
|
sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2372,6 +2441,7 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_MPST);
|
|
+ ACPI_TABLE_MPST *Mpst;
|
|
ACPI_MPST_POWER_NODE *SubTable0;
|
|
ACPI_MPST_POWER_STATE *SubTable0A;
|
|
ACPI_MPST_COMPONENT *SubTable0B;
|
|
@@ -2380,11 +2450,13 @@
|
|
UINT16 SubtableCount;
|
|
UINT32 PowerStateCount;
|
|
UINT32 ComponentCount;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMpst);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2392,13 +2464,14 @@
|
|
|
|
/* Subtable: Memory Power Node(s) */
|
|
|
|
- SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount;
|
|
+ Mpst = ACPI_CAST_PTR (ACPI_TABLE_MPST, Table);
|
|
+ ACPI_MOVE_16_TO_16(&SubtableCount, &Mpst->PowerNodeCount);
|
|
SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset);
|
|
|
|
- while ((Offset < Table->Length) && SubtableCount)
|
|
+ while ((Offset < Length) && SubtableCount)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable0,
|
|
sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2407,8 +2480,8 @@
|
|
|
|
/* Extract the sub-subtable counts */
|
|
|
|
- PowerStateCount = SubTable0->NumPowerStates;
|
|
- ComponentCount = SubTable0->NumPhysicalComponents;
|
|
+ ACPI_MOVE_32_TO_32(&PowerStateCount, &SubTable0->NumPowerStates);
|
|
+ ACPI_MOVE_32_TO_32(&ComponentCount, &SubTable0->NumPhysicalComponents);
|
|
Offset += sizeof (ACPI_MPST_POWER_NODE);
|
|
|
|
/* Sub-subtables - Memory Power State Structure(s) */
|
|
@@ -2419,7 +2492,7 @@
|
|
while (PowerStateCount)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable0A,
|
|
sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2429,7 +2502,7 @@
|
|
SubTable0A++;
|
|
PowerStateCount--;
|
|
Offset += sizeof (ACPI_MPST_POWER_STATE);
|
|
- }
|
|
+ }
|
|
|
|
/* Sub-subtables - Physical Component ID Structure(s) */
|
|
|
|
@@ -2442,7 +2515,7 @@
|
|
|
|
while (ComponentCount)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable0B,
|
|
sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2457,17 +2530,19 @@
|
|
/* Point to next Memory Power Node subtable */
|
|
|
|
SubtableCount--;
|
|
+ ACPI_MOVE_32_TO_32(&PowerStateCount, &SubTable0->NumPowerStates);
|
|
+ ACPI_MOVE_32_TO_32(&ComponentCount, &SubTable0->NumPhysicalComponents);
|
|
SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, SubTable0,
|
|
sizeof (ACPI_MPST_POWER_NODE) +
|
|
- (sizeof (ACPI_MPST_POWER_STATE) * SubTable0->NumPowerStates) +
|
|
- (sizeof (ACPI_MPST_COMPONENT) * SubTable0->NumPhysicalComponents));
|
|
+ (sizeof (ACPI_MPST_POWER_STATE) * PowerStateCount) +
|
|
+ (sizeof (ACPI_MPST_COMPONENT) * ComponentCount));
|
|
}
|
|
|
|
/* Subtable: Count of Memory Power State Characteristic structures */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0);
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable1,
|
|
sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2482,10 +2557,10 @@
|
|
SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1,
|
|
sizeof (ACPI_MPST_DATA_HDR));
|
|
|
|
- while ((Offset < Table->Length) && SubtableCount)
|
|
+ while ((Offset < Length) && SubtableCount)
|
|
{
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable2,
|
|
sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2518,11 +2593,13 @@
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_MSCT);
|
|
ACPI_MSCT_PROXIMITY *SubTable;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMsct);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2531,12 +2608,12 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2571,11 +2648,13 @@
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_MTMR);
|
|
ACPI_MTMR_ENTRY *SubTable;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMtmr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2584,12 +2663,12 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2631,11 +2710,17 @@
|
|
ACPI_NFIT_SMBIOS *SmbiosInfo = NULL;
|
|
ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL;
|
|
UINT32 i;
|
|
+ UINT32 TableLength;
|
|
+ UINT16 SubLength;
|
|
+ UINT16 SubType;
|
|
+ UINT32 Count;
|
|
+ UINT16 Count16;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit);
|
|
+ ACPI_MOVE_32_TO_32(&TableLength, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNfit);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2644,19 +2729,21 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < TableLength)
|
|
{
|
|
/* NFIT subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoNfitHdr);
|
|
+ ACPI_MOVE_16_TO_16(&SubLength, &SubTable->Length);
|
|
+ Status = AcpiDmDumpTable (TableLength, Offset, SubTable,
|
|
+ SubLength, AcpiDmTableInfoNfitHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
}
|
|
|
|
- switch (SubTable->Type)
|
|
+ ACPI_MOVE_16_TO_16(&SubType, &SubTable->Type);
|
|
+ switch (SubType)
|
|
{
|
|
case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
|
|
|
|
@@ -2708,7 +2795,7 @@
|
|
|
|
/* Attempt to continue */
|
|
|
|
- if (!SubTable->Length)
|
|
+ if (!SubLength)
|
|
{
|
|
AcpiOsPrintf ("Invalid zero length subtable\n");
|
|
return;
|
|
@@ -2717,8 +2804,8 @@
|
|
}
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- SubTable->Length, InfoTable);
|
|
+ Status = AcpiDmDumpTable (TableLength, Offset, SubTable,
|
|
+ SubLength, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2726,13 +2813,14 @@
|
|
|
|
/* Per-subtable variable-length fields */
|
|
|
|
- switch (SubTable->Type)
|
|
+ switch (SubType)
|
|
{
|
|
case ACPI_NFIT_TYPE_INTERLEAVE:
|
|
|
|
- for (i = 0; i < Interleave->LineCount; i++)
|
|
+ ACPI_MOVE_32_TO_32(&Count, &Interleave->LineCount);
|
|
+ for (i = 0; i < Count; i++)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
|
|
+ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset,
|
|
&Interleave->LineOffset[i],
|
|
sizeof (UINT32), AcpiDmTableInfoNfit2a);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -2746,12 +2834,11 @@
|
|
|
|
case ACPI_NFIT_TYPE_SMBIOS:
|
|
|
|
- Length = SubTable->Length -
|
|
- sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
|
|
+ Length = SubLength - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
|
|
|
|
if (Length)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length,
|
|
+ Status = AcpiDmDumpTable (TableLength,
|
|
sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
|
|
SmbiosInfo,
|
|
Length, AcpiDmTableInfoNfit3a);
|
|
@@ -2765,9 +2852,10 @@
|
|
|
|
case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
|
|
|
|
- for (i = 0; i < Hint->HintCount; i++)
|
|
+ ACPI_MOVE_16_TO_16(&Count16, &Hint->HintCount);
|
|
+ for (i = 0; i < Count16; i++)
|
|
{
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset,
|
|
+ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset,
|
|
&Hint->HintAddress[i],
|
|
sizeof (UINT64), AcpiDmTableInfoNfit6a);
|
|
if (ACPI_FAILURE (Status))
|
|
@@ -2786,8 +2874,8 @@
|
|
NextSubTable:
|
|
/* Point to next subtable */
|
|
|
|
- Offset += SubTable->Length;
|
|
- SubTable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, SubTable, SubTable->Length);
|
|
+ Offset += SubLength;
|
|
+ SubTable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, SubTable, SubLength);
|
|
}
|
|
}
|
|
|
|
@@ -2812,12 +2900,13 @@
|
|
ACPI_STATUS Status;
|
|
ACPI_PCCT_SUBSPACE *SubTable;
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_PCCT);
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2827,7 +2916,7 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
@@ -2903,16 +2992,21 @@
|
|
ACPI_PMTT_HEADER *MemSubTable;
|
|
ACPI_PMTT_HEADER *DimmSubTable;
|
|
ACPI_PMTT_DOMAIN *DomainArray;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
|
|
UINT32 MemOffset;
|
|
UINT32 DimmOffset;
|
|
UINT32 DomainOffset;
|
|
- UINT32 DomainCount;
|
|
+ UINT16 DomainCount;
|
|
+ UINT16 SubLength;
|
|
+ UINT16 Tmp16;
|
|
+ UINT16 MemLength;
|
|
+ UINT16 DimmLength;
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -2922,13 +3016,14 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_16_TO_16(&SubLength, &SubTable->Length);
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoPmttHdr);
|
|
+ SubLength, AcpiDmTableInfoPmttHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2947,7 +3042,7 @@
|
|
/* Dump the fixed-length portion of the subtable */
|
|
|
|
Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
- SubTable->Length, AcpiDmTableInfoPmtt0);
|
|
+ SubLength, AcpiDmTableInfoPmtt0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2959,15 +3054,16 @@
|
|
MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable,
|
|
sizeof (ACPI_PMTT_SOCKET));
|
|
|
|
- while (((Offset + MemOffset) < Table->Length) &&
|
|
- (MemOffset < SubTable->Length))
|
|
+ while (((Offset + MemOffset) < Length) &&
|
|
+ (MemOffset < SubLength))
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_16_TO_16(&MemLength, &MemSubTable->Length);
|
|
Status = AcpiDmDumpTable (Length,
|
|
Offset + MemOffset, MemSubTable,
|
|
- MemSubTable->Length, AcpiDmTableInfoPmttHdr);
|
|
+ MemLength, AcpiDmTableInfoPmttHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2987,7 +3083,7 @@
|
|
|
|
Status = AcpiDmDumpTable (Length,
|
|
Offset + MemOffset, MemSubTable,
|
|
- MemSubTable->Length, AcpiDmTableInfoPmtt1);
|
|
+ MemLength, AcpiDmTableInfoPmtt1);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -2995,13 +3091,14 @@
|
|
|
|
/* Walk the variable count of proximity domains */
|
|
|
|
- DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubTable)->DomainCount;
|
|
+ Tmp16 = ((ACPI_PMTT_CONTROLLER *) MemSubTable)->DomainCount;
|
|
+ ACPI_MOVE_16_TO_16(&DomainCount, &Tmp16);
|
|
DomainOffset = sizeof (ACPI_PMTT_CONTROLLER);
|
|
DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubTable,
|
|
sizeof (ACPI_PMTT_CONTROLLER));
|
|
|
|
- while (((Offset + MemOffset + DomainOffset) < Table->Length) &&
|
|
- ((MemOffset + DomainOffset) < SubTable->Length) &&
|
|
+ while (((Offset + MemOffset + DomainOffset) < Length) &&
|
|
+ ((MemOffset + DomainOffset) < SubLength) &&
|
|
DomainCount)
|
|
{
|
|
Status = AcpiDmDumpTable (Length,
|
|
@@ -3029,15 +3126,16 @@
|
|
DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubTable,
|
|
DomainOffset);
|
|
|
|
- while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
|
|
- (DimmOffset < MemSubTable->Length))
|
|
+ while (((Offset + MemOffset + DimmOffset) < Length) &&
|
|
+ (DimmOffset < MemLength))
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
+ ACPI_MOVE_16_TO_16(&DimmLength, &DimmSubTable->Length);
|
|
Status = AcpiDmDumpTable (Length,
|
|
Offset + MemOffset + DimmOffset, DimmSubTable,
|
|
- DimmSubTable->Length, AcpiDmTableInfoPmttHdr);
|
|
+ DimmLength, AcpiDmTableInfoPmttHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -3057,7 +3155,7 @@
|
|
|
|
Status = AcpiDmDumpTable (Length,
|
|
Offset + MemOffset + DimmOffset, DimmSubTable,
|
|
- DimmSubTable->Length, AcpiDmTableInfoPmtt2);
|
|
+ DimmLength, AcpiDmTableInfoPmtt2);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -3065,23 +3163,22 @@
|
|
|
|
/* Point to next DIMM subtable */
|
|
|
|
- DimmOffset += DimmSubTable->Length;
|
|
+ DimmOffset += DimmLength;
|
|
DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
|
- DimmSubTable, DimmSubTable->Length);
|
|
+ DimmSubTable, DimmLength);
|
|
}
|
|
|
|
/* Point to next Controller subtable */
|
|
|
|
- MemOffset += MemSubTable->Length;
|
|
+ MemOffset += MemLength;
|
|
MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
|
- MemSubTable, MemSubTable->Length);
|
|
+ MemSubTable, MemLength);
|
|
}
|
|
|
|
/* Point to next Socket subtable */
|
|
|
|
- Offset += SubTable->Length;
|
|
- SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
|
|
- SubTable, SubTable->Length);
|
|
+ Offset += SubLength;
|
|
+ SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable, SubLength);
|
|
}
|
|
}
|
|
|
|
@@ -3107,6 +3204,8 @@
|
|
ACPI_FPDT_HEADER *SubTable;
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables);
|
|
+ UINT32 Length;
|
|
+ UINT16 SubType;
|
|
|
|
|
|
/* Main table */
|
|
@@ -3117,20 +3216,22 @@
|
|
return 0;
|
|
}
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &S3ptTable->Length);
|
|
SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
|
|
- while (Offset < S3ptTable->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
SubTable->Length, AcpiDmTableInfoS3ptHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
- switch (SubTable->Type)
|
|
+ ACPI_MOVE_16_TO_16(&SubType, &SubTable->Type);
|
|
+ switch (SubType)
|
|
{
|
|
case ACPI_S3PT_TYPE_RESUME:
|
|
|
|
@@ -3145,7 +3246,7 @@
|
|
default:
|
|
|
|
AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
|
|
- SubTable->Type);
|
|
+ SubType);
|
|
|
|
/* Attempt to continue */
|
|
|
|
@@ -3158,7 +3259,7 @@
|
|
}
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
SubTable->Length, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3192,9 +3293,11 @@
|
|
AcpiDmDumpSlic (
|
|
ACPI_TABLE_HEADER *Table)
|
|
{
|
|
+ UINT32 Length;
|
|
|
|
- (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table,
|
|
- Table->Length - sizeof (*Table), AcpiDmTableInfoSlic);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ (void) AcpiDmDumpTable (Length, sizeof (ACPI_TABLE_HEADER), Table,
|
|
+ Length - sizeof (*Table), AcpiDmTableInfoSlic);
|
|
}
|
|
|
|
|
|
@@ -3217,14 +3320,17 @@
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset;
|
|
UINT8 *Row;
|
|
- UINT32 Localities;
|
|
+ UINT64 Localities;
|
|
UINT32 i;
|
|
UINT32 j;
|
|
+ UINT32 Length;
|
|
+ UINT64 Tmp64;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSlit);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -3232,7 +3338,8 @@
|
|
|
|
/* Display the Locality NxN Matrix */
|
|
|
|
- Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount;
|
|
+ Tmp64 = (UINT64) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount;
|
|
+ ACPI_MOVE_64_TO_64(&Localities, &Tmp64);
|
|
Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]);
|
|
Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry;
|
|
|
|
@@ -3245,7 +3352,7 @@
|
|
{
|
|
/* Check for beyond EOT */
|
|
|
|
- if (Offset >= Table->Length)
|
|
+ if (Offset >= Length)
|
|
{
|
|
AcpiOsPrintf (
|
|
"\n**** Not enough room in table for all localities\n");
|
|
@@ -3297,11 +3404,13 @@
|
|
UINT32 Offset = sizeof (ACPI_TABLE_SRAT);
|
|
ACPI_SUBTABLE_HEADER *SubTable;
|
|
ACPI_DMTABLE_INFO *InfoTable;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSrat);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -3310,12 +3419,12 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
SubTable->Length, AcpiDmTableInfoSratHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3359,7 +3468,7 @@
|
|
}
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
SubTable->Length, InfoTable);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3396,13 +3505,14 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
char *Namepath;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT32 StringLength;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_STAO);
|
|
|
|
|
|
/* Main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3411,7 +3521,7 @@
|
|
|
|
/* The rest of the table consists of Namepath strings */
|
|
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
Namepath = ACPI_ADD_PTR (char, Table, Offset);
|
|
StringLength = strlen (Namepath) + 1;
|
|
@@ -3453,11 +3563,14 @@
|
|
ACPI_TABLE_TCPA_HDR *SubTable = ACPI_ADD_PTR (
|
|
ACPI_TABLE_TCPA_HDR, Table, Offset);
|
|
ACPI_STATUS Status;
|
|
+ UINT32 Length;
|
|
+ UINT16 PlatformClass;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table,
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table,
|
|
0, AcpiDmTableInfoTcpaHdr);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3468,18 +3581,19 @@
|
|
* Examine the PlatformClass field to determine the table type.
|
|
* Either a client or server table. Only one.
|
|
*/
|
|
- switch (CommonHeader->PlatformClass)
|
|
+ ACPI_MOVE_16_TO_16(&PlatformClass, &CommonHeader->PlatformClass);
|
|
+ switch (PlatformClass)
|
|
{
|
|
case ACPI_TCPA_CLIENT_TABLE:
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- Table->Length - Offset, AcpiDmTableInfoTcpaClient);
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
+ Length - Offset, AcpiDmTableInfoTcpaClient);
|
|
break;
|
|
|
|
case ACPI_TCPA_SERVER_TABLE:
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
- Table->Length - Offset, AcpiDmTableInfoTcpaServer);
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
+ Length - Offset, AcpiDmTableInfoTcpaServer);
|
|
break;
|
|
|
|
default:
|
|
@@ -3516,11 +3630,13 @@
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_VRTC);
|
|
ACPI_VRTC_ENTRY *SubTable;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoVrtc);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -3529,12 +3645,12 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3569,11 +3685,13 @@
|
|
ACPI_STATUS Status;
|
|
UINT32 Offset = sizeof (ACPI_TABLE_WDAT);
|
|
ACPI_WDAT_ENTRY *SubTable;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* Main table */
|
|
|
|
- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat);
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWdat);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
return;
|
|
@@ -3582,12 +3700,12 @@
|
|
/* Subtables */
|
|
|
|
SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset);
|
|
- while (Offset < Table->Length)
|
|
+ while (Offset < Length)
|
|
{
|
|
/* Common subtable header */
|
|
|
|
AcpiOsPrintf ("\n");
|
|
- Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
|
|
+ Status = AcpiDmDumpTable (Length, Offset, SubTable,
|
|
sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3622,12 +3740,13 @@
|
|
{
|
|
ACPI_STATUS Status;
|
|
ACPI_TABLE_WPBT *SubTable;
|
|
- UINT32 Length = Table->Length;
|
|
+ UINT32 Length;
|
|
UINT16 ArgumentsLength;
|
|
|
|
|
|
/* Dump the main table */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Length, &Table->Length);
|
|
Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWpbt);
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
@@ -3637,10 +3756,10 @@
|
|
/* Extract the arguments buffer length from the main table */
|
|
|
|
SubTable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table);
|
|
- ArgumentsLength = SubTable->ArgumentsLength;
|
|
+ ACPI_MOVE_16_TO_16(&ArgumentsLength, &SubTable->ArgumentsLength);
|
|
|
|
/* Dump the arguments buffer */
|
|
|
|
- (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength,
|
|
+ (void) AcpiDmDumpTable (Length, 0, Table, ArgumentsLength,
|
|
AcpiDmTableInfoWpbt0);
|
|
}
|
|
diff -Naur acpica-unix2-20160930/source/components/disassembler/dmbuffer.c acpica-unix2-20160930-s390/source/components/disassembler/dmbuffer.c
|
|
--- acpica-unix2-20160930/source/components/disassembler/dmbuffer.c 2016-09-30 10:43:58.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/disassembler/dmbuffer.c 2016-10-28 14:25:41.876397798 -0600
|
|
@@ -204,7 +204,7 @@
|
|
|
|
|
|
ByteData = Op->Named.Data;
|
|
- ByteCount = (UINT32) Op->Common.Value.Integer;
|
|
+ ByteCount = (UINT32) Op->Common.Value.Size;
|
|
|
|
/*
|
|
* The byte list belongs to a buffer, and can be produced by either
|
|
@@ -304,7 +304,8 @@
|
|
/* Extract the byte list info */
|
|
|
|
ByteData = NextOp->Named.Data;
|
|
- ByteCount = (UINT32) NextOp->Common.Value.Integer;
|
|
+ /* ByteCount = (UINT32) NextOp->Common.Value.Integer; */
|
|
+ ByteCount = (UINT32) NextOp->Common.Value.Size;
|
|
|
|
/* Byte count must be exactly 16 */
|
|
|
|
@@ -954,16 +955,18 @@
|
|
ACPI_PARSE_OBJECT *Op)
|
|
{
|
|
UINT32 Name;
|
|
+ UINT32 TmpName;
|
|
ACPI_PARSE_OBJECT *NextOp;
|
|
|
|
|
|
/* Get the NameSegment */
|
|
|
|
- Name = AcpiPsGetName (Op);
|
|
- if (!Name)
|
|
+ TmpName = AcpiPsGetName (Op);
|
|
+ if (!TmpName)
|
|
{
|
|
return;
|
|
}
|
|
+ ACPI_MOVE_32_TO_32(&Name, &TmpName);
|
|
|
|
NextOp = AcpiPsGetDepthNext (NULL, Op);
|
|
if (!NextOp)
|
|
diff -Naur acpica-unix2-20160930/source/components/disassembler/dmopcode.c acpica-unix2-20160930-s390/source/components/disassembler/dmopcode.c
|
|
--- acpica-unix2-20160930/source/components/disassembler/dmopcode.c 2016-09-30 10:43:58.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/disassembler/dmopcode.c 2016-10-28 14:25:41.877397793 -0600
|
|
@@ -244,6 +244,7 @@
|
|
char *NameString;
|
|
int LastCharIsDigit;
|
|
int LastCharsAreHex;
|
|
+ char TmpName[ACPI_NAME_SIZE + 1];
|
|
|
|
|
|
if (!Op)
|
|
@@ -261,7 +262,9 @@
|
|
|
|
/* Predefined name must start with an underscore */
|
|
|
|
- NameString = ACPI_CAST_PTR (char, &Op->Named.Name);
|
|
+ memset(TmpName, 0, ACPI_NAME_SIZE + 1);
|
|
+ ACPI_MOVE_32_TO_32(TmpName, &Op->Named.Name);
|
|
+ NameString = TmpName;
|
|
if (NameString[0] != '_')
|
|
{
|
|
return;
|
|
@@ -871,21 +874,26 @@
|
|
AcpiDmNamestring (Op->Common.Value.Name);
|
|
break;
|
|
|
|
- case AML_INT_NAMEDFIELD_OP:
|
|
+ case AML_INT_NAMEDFIELD_OP: {
|
|
|
|
- Length = AcpiDmDumpName (Op->Named.Name);
|
|
+ UINT32 TmpName;
|
|
+
|
|
+ ACPI_MOVE_32_TO_32(&TmpName, &Op->Named.Name);
|
|
+ Length = AcpiDmDumpName (TmpName);
|
|
AcpiOsPrintf (",%*.s %u", (unsigned) (5 - Length), " ",
|
|
- (UINT32) Op->Common.Value.Integer);
|
|
+ (UINT32) Op->Common.Value.Size);
|
|
AcpiDmCommaIfFieldMember (Op);
|
|
|
|
- Info->BitOffset += (UINT32) Op->Common.Value.Integer;
|
|
+ Info->BitOffset += (UINT32) Op->Common.Value.Size;
|
|
break;
|
|
+ }
|
|
|
|
case AML_INT_RESERVEDFIELD_OP:
|
|
|
|
/* Offset() -- Must account for previous offsets */
|
|
|
|
- Offset = (UINT32) Op->Common.Value.Integer;
|
|
+ //DEBUG
|
|
+ Offset = Op->Common.Value.Size;
|
|
Info->BitOffset += Offset;
|
|
|
|
if (Info->BitOffset % 8 == 0)
|
|
diff -Naur acpica-unix2-20160930/source/components/disassembler/dmresrc.c acpica-unix2-20160930-s390/source/components/disassembler/dmresrc.c
|
|
--- acpica-unix2-20160930/source/components/disassembler/dmresrc.c 2016-09-30 10:43:58.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/disassembler/dmresrc.c 2016-10-28 14:25:41.878397788 -0600
|
|
@@ -392,7 +392,7 @@
|
|
ACPI_PARSE_OBJECT *NextOp;
|
|
UINT8 *Aml;
|
|
UINT8 *EndAml;
|
|
- ACPI_SIZE Length;
|
|
+ UINT32 Length;
|
|
|
|
|
|
/* This op must be a buffer */
|
|
@@ -418,7 +418,7 @@
|
|
}
|
|
|
|
Aml = NextOp->Named.Data;
|
|
- Length = (ACPI_SIZE) NextOp->Common.Value.Integer;
|
|
+ Length = NextOp->Common.Value.Size;
|
|
|
|
/* Walk the byte list, abort on any invalid descriptor type or length */
|
|
|
|
diff -Naur acpica-unix2-20160930/source/components/disassembler/dmresrcl.c acpica-unix2-20160930-s390/source/components/disassembler/dmresrcl.c
|
|
--- acpica-unix2-20160930/source/components/disassembler/dmresrcl.c 2016-09-30 10:43:58.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/disassembler/dmresrcl.c 2016-10-28 14:25:41.876397798 -0600
|
|
@@ -141,7 +141,8 @@
|
|
UINT32 Level)
|
|
{
|
|
UINT32 i;
|
|
-
|
|
+ UINT16 Tmp16;
|
|
+ UINT32 Tmp32;
|
|
|
|
for (i = 0; i < 4; i++)
|
|
{
|
|
@@ -151,14 +152,14 @@
|
|
{
|
|
case 16:
|
|
|
|
- AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
|
|
- AcpiDmMemoryNames[i]);
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &(ACPI_CAST_PTR (UINT16, Source)[i]));
|
|
+ AcpiDmDumpInteger16 (Tmp16, AcpiDmMemoryNames[i]);
|
|
break;
|
|
|
|
case 32:
|
|
|
|
- AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
|
|
- AcpiDmMemoryNames[i]);
|
|
+ ACPI_MOVE_32_TO_32(&Tmp32, &(ACPI_CAST_PTR (UINT32, Source)[i]));
|
|
+ AcpiDmDumpInteger32 (Tmp32, AcpiDmMemoryNames[i]);
|
|
break;
|
|
|
|
default:
|
|
@@ -190,7 +191,9 @@
|
|
UINT32 Level)
|
|
{
|
|
UINT32 i;
|
|
-
|
|
+ UINT16 Tmp16;
|
|
+ UINT32 Tmp32;
|
|
+ UINT64 Tmp64;
|
|
|
|
AcpiOsPrintf ("\n");
|
|
|
|
@@ -202,20 +205,20 @@
|
|
{
|
|
case 16:
|
|
|
|
- AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i],
|
|
- AcpiDmAddressNames[i]);
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &(ACPI_CAST_PTR (UINT16, Source)[i]));
|
|
+ AcpiDmDumpInteger16 (Tmp16, AcpiDmAddressNames[i]);
|
|
break;
|
|
|
|
case 32:
|
|
|
|
- AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i],
|
|
- AcpiDmAddressNames[i]);
|
|
+ ACPI_MOVE_32_TO_32(&Tmp32, &(ACPI_CAST_PTR (UINT32, Source)[i]));
|
|
+ AcpiDmDumpInteger32 (Tmp32, AcpiDmAddressNames[i]);
|
|
break;
|
|
|
|
case 64:
|
|
|
|
- AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i],
|
|
- AcpiDmAddressNames[i]);
|
|
+ ACPI_MOVE_64_TO_64(&Tmp64, &(ACPI_CAST_PTR (UINT64, Source)[i]));
|
|
+ AcpiDmDumpInteger64 (Tmp64, AcpiDmAddressNames[i]);
|
|
break;
|
|
|
|
default:
|
|
@@ -868,6 +871,7 @@
|
|
UINT32 Length,
|
|
UINT32 Level)
|
|
{
|
|
+ UINT32 Tmp;
|
|
|
|
/* Dump name and read/write flag */
|
|
|
|
@@ -876,12 +880,12 @@
|
|
AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]);
|
|
|
|
AcpiDmIndent (Level + 1);
|
|
- AcpiDmDumpInteger32 (Resource->FixedMemory32.Address,
|
|
- "Address Base");
|
|
+ ACPI_MOVE_32_TO_32(&Tmp, &Resource->FixedMemory32.Address);
|
|
+ AcpiDmDumpInteger32 (Tmp, "Address Base");
|
|
|
|
AcpiDmIndent (Level + 1);
|
|
- AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength,
|
|
- "Address Length");
|
|
+ ACPI_MOVE_32_TO_32(&Tmp, &Resource->FixedMemory32.AddressLength);
|
|
+ AcpiDmDumpInteger32 (Tmp, "Address Length");
|
|
|
|
/* Insert a descriptor name */
|
|
|
|
@@ -972,7 +976,7 @@
|
|
UINT32 Level)
|
|
{
|
|
UINT32 i;
|
|
-
|
|
+ UINT16 Tmp16;
|
|
|
|
AcpiDmIndent (Level);
|
|
AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ",
|
|
@@ -986,10 +990,11 @@
|
|
* list. Must compute length based on length of the list. First xrupt
|
|
* is included in the struct (reason for -1 below)
|
|
*/
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->ExtendedIrq.ResourceLength);
|
|
AcpiDmResourceSource (Resource,
|
|
sizeof (AML_RESOURCE_EXTENDED_IRQ) +
|
|
((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32),
|
|
- Resource->ExtendedIrq.ResourceLength);
|
|
+ Tmp16);
|
|
|
|
/* Insert a descriptor name */
|
|
|
|
@@ -1002,9 +1007,12 @@
|
|
AcpiOsPrintf ("{\n");
|
|
for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++)
|
|
{
|
|
+ UINT32 Tmp32, Val32;
|
|
+
|
|
AcpiDmIndent (Level + 1);
|
|
- AcpiOsPrintf ("0x%8.8X,\n",
|
|
- (UINT32) Resource->ExtendedIrq.Interrupts[i]);
|
|
+ Val32 = (UINT32) Resource->ExtendedIrq.Interrupts[i];
|
|
+ ACPI_MOVE_32_TO_32(&Tmp32, &Val32);
|
|
+ AcpiOsPrintf ("0x%8.8X,\n", Tmp32);
|
|
}
|
|
|
|
AcpiDmIndent (Level);
|
|
diff -Naur acpica-unix2-20160930/source/components/disassembler/dmresrcs.c acpica-unix2-20160930-s390/source/components/disassembler/dmresrcs.c
|
|
--- acpica-unix2-20160930/source/components/disassembler/dmresrcs.c 2016-09-30 10:43:58.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/disassembler/dmresrcs.c 2016-10-28 14:25:41.876397798 -0600
|
|
@@ -72,6 +72,7 @@
|
|
UINT32 Length,
|
|
UINT32 Level)
|
|
{
|
|
+ UINT16 Tmp;
|
|
|
|
AcpiDmIndent (Level);
|
|
AcpiOsPrintf ("%s (",
|
|
@@ -93,7 +94,8 @@
|
|
AcpiOsPrintf (")\n");
|
|
|
|
AcpiDmIndent (Level + 1);
|
|
- AcpiDmBitList (Resource->Irq.IrqMask);
|
|
+ ACPI_MOVE_16_TO_16(&Tmp, &Resource->Irq.IrqMask);
|
|
+ AcpiDmBitList (Tmp);
|
|
}
|
|
|
|
|
|
@@ -204,16 +206,19 @@
|
|
UINT32 Length,
|
|
UINT32 Level)
|
|
{
|
|
+ UINT16 Tmp16;
|
|
|
|
AcpiDmIndent (Level);
|
|
AcpiOsPrintf ("IO (%s,\n",
|
|
AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);
|
|
|
|
AcpiDmIndent (Level + 1);
|
|
- AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Io.Minimum);
|
|
+ AcpiDmDumpInteger16 (Tmp16, "Range Minimum");
|
|
|
|
AcpiDmIndent (Level + 1);
|
|
- AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
|
|
+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Io.Maximum);
|
|
+ AcpiDmDumpInteger16 (Tmp16, "Range Maximum");
|
|
|
|
AcpiDmIndent (Level + 1);
|
|
AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
|
|
diff -Naur acpica-unix2-20160930/source/components/dispatcher/dsfield.c acpica-unix2-20160930-s390/source/components/dispatcher/dsfield.c
|
|
--- acpica-unix2-20160930/source/components/dispatcher/dsfield.c 2016-09-30 10:43:58.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/dispatcher/dsfield.c 2016-10-28 14:25:41.879397782 -0600
|
|
@@ -318,6 +318,7 @@
|
|
ACPI_STATUS Status;
|
|
UINT64 Position;
|
|
ACPI_PARSE_OBJECT *Child;
|
|
+ UINT32 TmpName;
|
|
|
|
|
|
ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info);
|
|
@@ -424,10 +425,17 @@
|
|
|
|
/* Lookup the name, it should already exist */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&TmpName, &Arg->Named.Name);
|
|
+ Status = AcpiNsLookup (WalkState->ScopeInfo,
|
|
+ (char *) &TmpName, Info->FieldType,
|
|
+ ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,
|
|
+ WalkState, &Info->FieldNode);
|
|
+ /*
|
|
Status = AcpiNsLookup (WalkState->ScopeInfo,
|
|
(char *) &Arg->Named.Name, Info->FieldType,
|
|
ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE,
|
|
WalkState, &Info->FieldNode);
|
|
+ */
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status);
|
|
@@ -652,9 +660,17 @@
|
|
*/
|
|
if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP)
|
|
{
|
|
+ UINT32 TmpName;
|
|
+
|
|
+ ACPI_MOVE_32_TO_32(&TmpName, &Arg->Named.Name);
|
|
+ Status = AcpiNsLookup (WalkState->ScopeInfo,
|
|
+ (char *) &TmpName, Type, ACPI_IMODE_LOAD_PASS1,
|
|
+ Flags, WalkState, &Node);
|
|
+ /*
|
|
Status = AcpiNsLookup (WalkState->ScopeInfo,
|
|
(char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1,
|
|
Flags, WalkState, &Node);
|
|
+ */
|
|
if (ACPI_FAILURE (Status))
|
|
{
|
|
ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status);
|
|
diff -Naur acpica-unix2-20160930/source/components/namespace/nsparse.c acpica-unix2-20160930-s390/source/components/namespace/nsparse.c
|
|
--- acpica-unix2-20160930/source/components/namespace/nsparse.c 2016-09-30 10:43:59.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/namespace/nsparse.c 2016-10-28 14:25:41.895397700 -0600
|
|
@@ -196,13 +196,14 @@
|
|
|
|
/* Table must consist of at least a complete header */
|
|
|
|
- if (Table->Length < sizeof (ACPI_TABLE_HEADER))
|
|
+ ACPI_MOVE_32_TO_32(&AmlLength, &Table->Length);
|
|
+ if (AmlLength < sizeof (ACPI_TABLE_HEADER))
|
|
{
|
|
return_ACPI_STATUS (AE_BAD_HEADER);
|
|
}
|
|
|
|
AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER);
|
|
- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER);
|
|
+ AmlLength -= sizeof (ACPI_TABLE_HEADER);
|
|
|
|
Status = AcpiTbGetOwnerId (TableIndex, &OwnerId);
|
|
if (ACPI_FAILURE (Status))
|
|
diff -Naur acpica-unix2-20160930/source/components/tables/tbprint.c acpica-unix2-20160930-s390/source/components/tables/tbprint.c
|
|
--- acpica-unix2-20160930/source/components/tables/tbprint.c 2016-09-30 10:43:59.000000000 -0600
|
|
+++ acpica-unix2-20160930-s390/source/components/tables/tbprint.c 2016-10-28 14:25:41.902397665 -0600
|
|
@@ -143,15 +143,18 @@
|
|
ACPI_TABLE_HEADER *Header)
|
|
{
|
|
ACPI_TABLE_HEADER LocalHeader;
|
|
+ UINT32 Len;
|
|
+ UINT32 OemRev;
|
|
+ UINT32 CompilerRev;
|
|
|
|
|
|
if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS))
|
|
{
|
|
/* FACS only has signature and length fields */
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Len, &Header->Length);
|
|
ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X",
|
|
- Header->Signature, ACPI_FORMAT_UINT64 (Address),
|
|
- Header->Length));
|
|
+ Header->Signature, ACPI_FORMAT_UINT64 (Address), Len));
|
|
}
|
|
else if (ACPI_VALIDATE_RSDP_SIG (Header->Signature))
|
|
{
|
|
@@ -174,13 +177,16 @@
|
|
|
|
AcpiTbCleanupTableHeader (&LocalHeader, Header);
|
|
|
|
+ ACPI_MOVE_32_TO_32(&Len, &LocalHeader.Length);
|
|
+ ACPI_MOVE_32_TO_32(&OemRev, &LocalHeader.OemRevision);
|
|
+ ACPI_MOVE_32_TO_32(&CompilerRev, &LocalHeader.AslCompilerRevision);
|
|
ACPI_INFO ((
|
|
"%-4.4s 0x%8.8X%8.8X"
|
|
" %06X (v%.2d %-6.6s %-8.8s %08X %-4.4s %08X)",
|
|
LocalHeader.Signature, ACPI_FORMAT_UINT64 (Address),
|
|
- LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId,
|
|
- LocalHeader.OemTableId, LocalHeader.OemRevision,
|
|
- LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision));
|
|
+ Len, LocalHeader.Revision, LocalHeader.OemId,
|
|
+ LocalHeader.OemTableId, OemRev,
|
|
+ LocalHeader.AslCompilerId, CompilerRev));
|
|
}
|
|
}
|
|
|
|
diff -Naur acpica-unix2-20160930/source/include/platform/aclinux.h acpica-unix2-20160930-s390/source/include/platform/aclinux.h
|
|
--- acpica-unix2-20160930/source/include/platform/aclinux.h 2016-10-28 14:24:20.839813236 -0600
|
|
+++ acpica-unix2-20160930-s390/source/include/platform/aclinux.h 2016-10-28 14:25:41.909397629 -0600
|
|
@@ -210,6 +210,10 @@
|
|
#define __cdecl
|
|
#endif
|
|
|
|
+#if defined(__PPC64__) || defined(__s390x__)
|
|
+#define ACPI_BIG_ENDIAN
|
|
+#endif
|
|
+
|
|
#endif /* __KERNEL__ */
|
|
|
|
#endif /* __ACLINUX_H__ */
|