1 From bd19995fa268ed3e93c071162d0e9c2d35ada0d4 Mon Sep 17 00:00:00 2001
2 From: Al Stone <ahs3@redhat.com>
3 Date: Tue, 29 Jun 2021 16:23:30 -0600
4 Subject: [PATCH 38/45] Support PMTT in a big-endian world
6 Signed-off-by: Al Stone <ahs3@redhat.com>
8 source/common/dmtbdump2.c | 18 ++++++++++--------
9 1 file changed, 10 insertions(+), 8 deletions(-)
11 Index: acpica-unix2-20220331/source/common/dmtbdump2.c
12 ===================================================================
13 --- acpica-unix2-20220331.orig/source/common/dmtbdump2.c
14 +++ acpica-unix2-20220331/source/common/dmtbdump2.c
15 @@ -2142,8 +2142,9 @@ AcpiDmDumpPmtt (
18 ACPI_PMTT_HEADER *Subtable;
19 - UINT32 Length = Table->Length;
20 + UINT32 Length = AcpiUtReadUint32 (&Table->Length);
21 UINT32 Offset = sizeof (ACPI_TABLE_PMTT);
22 + UINT16 SubtableLength;
26 @@ -2157,17 +2158,18 @@ AcpiDmDumpPmtt (
29 Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
30 - while (Offset < Table->Length)
31 + while (Offset < Length)
33 /* Each of the types below contain the common subtable header */
36 + SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
37 switch (Subtable->Type)
39 case ACPI_PMTT_TYPE_SOCKET:
41 Status = AcpiDmDumpTable (Length, Offset, Subtable,
42 - Subtable->Length, AcpiDmTableInfoPmtt0);
43 + SubtableLength, AcpiDmTableInfoPmtt0);
44 if (ACPI_FAILURE (Status))
47 @@ -2176,7 +2178,7 @@ AcpiDmDumpPmtt (
49 case ACPI_PMTT_TYPE_CONTROLLER:
50 Status = AcpiDmDumpTable (Length, Offset, Subtable,
51 - Subtable->Length, AcpiDmTableInfoPmtt1);
52 + SubtableLength, AcpiDmTableInfoPmtt1);
53 if (ACPI_FAILURE (Status))
56 @@ -2185,7 +2187,7 @@ AcpiDmDumpPmtt (
58 case ACPI_PMTT_TYPE_DIMM:
59 Status = AcpiDmDumpTable (Length, Offset, Subtable,
60 - Subtable->Length, AcpiDmTableInfoPmtt2);
61 + SubtableLength, AcpiDmTableInfoPmtt2);
62 if (ACPI_FAILURE (Status))
65 @@ -2194,7 +2196,7 @@ AcpiDmDumpPmtt (
67 case ACPI_PMTT_TYPE_VENDOR:
68 Status = AcpiDmDumpTable (Length, Offset, Subtable,
69 - Subtable->Length, AcpiDmTableInfoPmttVendor);
70 + SubtableLength, AcpiDmTableInfoPmttVendor);
71 if (ACPI_FAILURE (Status))
74 @@ -2210,9 +2212,9 @@ AcpiDmDumpPmtt (
76 /* Point to next subtable */
78 - Offset += Subtable->Length;
79 + Offset += SubtableLength;
80 Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
81 - Subtable, Subtable->Length);
82 + Subtable, SubtableLength);