]>
Commit | Line | Data |
---|---|---|
b643ab7e JB |
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 | |
5 | ||
6 | Signed-off-by: Al Stone <ahs3@redhat.com> | |
7 | --- | |
8 | source/common/dmtbdump2.c | 18 ++++++++++-------- | |
9 | 1 file changed, 10 insertions(+), 8 deletions(-) | |
10 | ||
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 ( | |
16 | { | |
17 | ACPI_STATUS Status; | |
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; | |
23 | ||
24 | ||
25 | /* Main table */ | |
26 | @@ -2157,17 +2158,18 @@ AcpiDmDumpPmtt ( | |
27 | /* Subtables */ | |
28 | ||
29 | Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset); | |
30 | - while (Offset < Table->Length) | |
31 | + while (Offset < Length) | |
32 | { | |
33 | /* Each of the types below contain the common subtable header */ | |
34 | ||
35 | AcpiOsPrintf ("\n"); | |
36 | + SubtableLength = AcpiUtReadUint16 (&Subtable->Length); | |
37 | switch (Subtable->Type) | |
38 | { | |
39 | case ACPI_PMTT_TYPE_SOCKET: | |
40 | ||
41 | Status = AcpiDmDumpTable (Length, Offset, Subtable, | |
42 | - Subtable->Length, AcpiDmTableInfoPmtt0); | |
43 | + SubtableLength, AcpiDmTableInfoPmtt0); | |
44 | if (ACPI_FAILURE (Status)) | |
45 | { | |
46 | return; | |
47 | @@ -2176,7 +2178,7 @@ AcpiDmDumpPmtt ( | |
48 | ||
49 | case ACPI_PMTT_TYPE_CONTROLLER: | |
50 | Status = AcpiDmDumpTable (Length, Offset, Subtable, | |
51 | - Subtable->Length, AcpiDmTableInfoPmtt1); | |
52 | + SubtableLength, AcpiDmTableInfoPmtt1); | |
53 | if (ACPI_FAILURE (Status)) | |
54 | { | |
55 | return; | |
56 | @@ -2185,7 +2187,7 @@ AcpiDmDumpPmtt ( | |
57 | ||
58 | case ACPI_PMTT_TYPE_DIMM: | |
59 | Status = AcpiDmDumpTable (Length, Offset, Subtable, | |
60 | - Subtable->Length, AcpiDmTableInfoPmtt2); | |
61 | + SubtableLength, AcpiDmTableInfoPmtt2); | |
62 | if (ACPI_FAILURE (Status)) | |
63 | { | |
64 | return; | |
65 | @@ -2194,7 +2196,7 @@ AcpiDmDumpPmtt ( | |
66 | ||
67 | case ACPI_PMTT_TYPE_VENDOR: | |
68 | Status = AcpiDmDumpTable (Length, Offset, Subtable, | |
69 | - Subtable->Length, AcpiDmTableInfoPmttVendor); | |
70 | + SubtableLength, AcpiDmTableInfoPmttVendor); | |
71 | if (ACPI_FAILURE (Status)) | |
72 | { | |
73 | return; | |
74 | @@ -2210,9 +2212,9 @@ AcpiDmDumpPmtt ( | |
75 | ||
76 | /* Point to next subtable */ | |
77 | ||
78 | - Offset += Subtable->Length; | |
79 | + Offset += SubtableLength; | |
80 | Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, | |
81 | - Subtable, Subtable->Length); | |
82 | + Subtable, SubtableLength); | |
83 | } | |
84 | } | |
85 |