]>
Commit | Line | Data |
---|---|---|
b643ab7e JB |
1 | From 0a25688f36df62579f4dd0444ceba33a0f8d4dcc Mon Sep 17 00:00:00 2001 |
2 | From: Al Stone <ahs3@redhat.com> | |
3 | Date: Wed, 23 Sep 2020 16:08:24 -0600 | |
4 | Subject: [PATCH 25/45] Support MPST in a big-endian world | |
5 | ||
6 | Signed-off-by: Al Stone <ahs3@redhat.com> | |
7 | --- | |
8 | source/common/dmtbdump2.c | 33 +++++++++++++++++++-------------- | |
9 | source/compiler/dttable2.c | 8 ++++---- | |
10 | 2 files changed, 23 insertions(+), 18 deletions(-) | |
11 | ||
12 | Index: acpica-unix2-20220331/source/common/dmtbdump2.c | |
13 | =================================================================== | |
14 | --- acpica-unix2-20220331.orig/source/common/dmtbdump2.c | |
15 | +++ acpica-unix2-20220331/source/common/dmtbdump2.c | |
16 | @@ -1047,11 +1047,13 @@ AcpiDmDumpMpst ( | |
17 | UINT16 SubtableCount; | |
18 | UINT32 PowerStateCount; | |
19 | UINT32 ComponentCount; | |
20 | + UINT32 TableLength = AcpiUtReadUint32 (&Table->Length); | |
21 | + UINT16 Tmp16; | |
22 | ||
23 | ||
24 | /* Main table */ | |
25 | ||
26 | - Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst); | |
27 | + Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMpst); | |
28 | if (ACPI_FAILURE (Status)) | |
29 | { | |
30 | return; | |
31 | @@ -1059,13 +1061,14 @@ AcpiDmDumpMpst ( | |
32 | ||
33 | /* Subtable: Memory Power Node(s) */ | |
34 | ||
35 | - SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; | |
36 | + Tmp16 = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; | |
37 | + SubtableCount = AcpiUtReadUint16 (&Tmp16); | |
38 | Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset); | |
39 | ||
40 | - while ((Offset < Table->Length) && SubtableCount) | |
41 | + while ((Offset < TableLength) && SubtableCount) | |
42 | { | |
43 | AcpiOsPrintf ("\n"); | |
44 | - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0, | |
45 | + Status = AcpiDmDumpTable (TableLength, Offset, Subtable0, | |
46 | sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); | |
47 | if (ACPI_FAILURE (Status)) | |
48 | { | |
49 | @@ -1074,8 +1077,8 @@ AcpiDmDumpMpst ( | |
50 | ||
51 | /* Extract the sub-subtable counts */ | |
52 | ||
53 | - PowerStateCount = Subtable0->NumPowerStates; | |
54 | - ComponentCount = Subtable0->NumPhysicalComponents; | |
55 | + PowerStateCount = AcpiUtReadUint16 (&Subtable0->NumPowerStates); | |
56 | + ComponentCount = AcpiUtReadUint16 (&Subtable0->NumPhysicalComponents); | |
57 | Offset += sizeof (ACPI_MPST_POWER_NODE); | |
58 | ||
59 | /* Sub-subtables - Memory Power State Structure(s) */ | |
60 | @@ -1086,7 +1089,7 @@ AcpiDmDumpMpst ( | |
61 | while (PowerStateCount) | |
62 | { | |
63 | AcpiOsPrintf ("\n"); | |
64 | - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A, | |
65 | + Status = AcpiDmDumpTable (TableLength, Offset, Subtable0A, | |
66 | sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); | |
67 | if (ACPI_FAILURE (Status)) | |
68 | { | |
69 | @@ -1109,7 +1112,7 @@ AcpiDmDumpMpst ( | |
70 | ||
71 | while (ComponentCount) | |
72 | { | |
73 | - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B, | |
74 | + Status = AcpiDmDumpTable (TableLength, Offset, Subtable0B, | |
75 | sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); | |
76 | if (ACPI_FAILURE (Status)) | |
77 | { | |
78 | @@ -1126,22 +1129,24 @@ AcpiDmDumpMpst ( | |
79 | SubtableCount--; | |
80 | Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0, | |
81 | sizeof (ACPI_MPST_POWER_NODE) + | |
82 | - (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) + | |
83 | - (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents)); | |
84 | + (sizeof (ACPI_MPST_POWER_STATE) * | |
85 | + AcpiUtReadUint16 (&Subtable0->NumPowerStates)) + | |
86 | + (sizeof (ACPI_MPST_COMPONENT) * | |
87 | + AcpiUtReadUint16 (&Subtable0->NumPhysicalComponents))); | |
88 | } | |
89 | ||
90 | /* Subtable: Count of Memory Power State Characteristic structures */ | |
91 | ||
92 | AcpiOsPrintf ("\n"); | |
93 | Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0); | |
94 | - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1, | |
95 | + Status = AcpiDmDumpTable (TableLength, Offset, Subtable1, | |
96 | sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); | |
97 | if (ACPI_FAILURE (Status)) | |
98 | { | |
99 | return; | |
100 | } | |
101 | ||
102 | - SubtableCount = Subtable1->CharacteristicsCount; | |
103 | + SubtableCount = AcpiUtReadUint16 (&Subtable1->CharacteristicsCount); | |
104 | Offset += sizeof (ACPI_MPST_DATA_HDR); | |
105 | ||
106 | /* Subtable: Memory Power State Characteristics structure(s) */ | |
107 | @@ -1149,10 +1154,10 @@ AcpiDmDumpMpst ( | |
108 | Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1, | |
109 | sizeof (ACPI_MPST_DATA_HDR)); | |
110 | ||
111 | - while ((Offset < Table->Length) && SubtableCount) | |
112 | + while ((Offset < TableLength) && SubtableCount) | |
113 | { | |
114 | AcpiOsPrintf ("\n"); | |
115 | - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2, | |
116 | + Status = AcpiDmDumpTable (TableLength, Offset, Subtable2, | |
117 | sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); | |
118 | if (ACPI_FAILURE (Status)) | |
119 | { | |
120 | Index: acpica-unix2-20220331/source/compiler/dttable2.c | |
121 | =================================================================== | |
122 | --- acpica-unix2-20220331.orig/source/compiler/dttable2.c | |
123 | +++ acpica-unix2-20220331/source/compiler/dttable2.c | |
124 | @@ -359,7 +359,7 @@ DtCompileMpst ( | |
125 | DtPushSubtable (Subtable); | |
126 | ||
127 | MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer); | |
128 | - SubtableCount = MpstChannelInfo->PowerNodeCount; | |
129 | + SubtableCount = AcpiUtReadUint16 (&MpstChannelInfo->PowerNodeCount); | |
130 | ||
131 | while (*PFieldList && SubtableCount) | |
132 | { | |
133 | @@ -377,8 +377,8 @@ DtCompileMpst ( | |
134 | DtPushSubtable (Subtable); | |
135 | ||
136 | MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer); | |
137 | - PowerStateCount = MpstPowerNode->NumPowerStates; | |
138 | - ComponentCount = MpstPowerNode->NumPhysicalComponents; | |
139 | + PowerStateCount = AcpiUtReadUint16 (&MpstPowerNode->NumPowerStates); | |
140 | + ComponentCount = AcpiUtReadUint16 (&MpstPowerNode->NumPhysicalComponents); | |
141 | ||
142 | ParentTable = DtPeekSubtable (); | |
143 | ||
144 | @@ -431,7 +431,7 @@ DtCompileMpst ( | |
145 | DtPushSubtable (Subtable); | |
146 | ||
147 | MpstDataHeader = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable->Buffer); | |
148 | - SubtableCount = MpstDataHeader->CharacteristicsCount; | |
149 | + SubtableCount = AcpiUtReadUint16(&MpstDataHeader->CharacteristicsCount); | |
150 | ||
151 | ParentTable = DtPeekSubtable (); | |
152 |