]> git.pld-linux.org Git - packages/acpica.git/blame - 0042-Support-IVRS-in-a-big-endian-world.patch
- noted download URL
[packages/acpica.git] / 0042-Support-IVRS-in-a-big-endian-world.patch
CommitLineData
b643ab7e
JB
1From b64cff82b2b33ed659826d777d2db039f64fd198 Mon Sep 17 00:00:00 2001
2From: Al Stone <ahs3@redhat.com>
3Date: Tue, 29 Jun 2021 17:45:24 -0600
4Subject: [PATCH 42/45] Support IVRS in a big-endian world
5
6Signed-off-by: Al Stone <ahs3@redhat.com>
7---
8 source/common/dmtbdump2.c | 34 +++++++++++++++++++---------------
9 1 file changed, 19 insertions(+), 15 deletions(-)
10
11Index: 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@@ -419,11 +419,14 @@ AcpiDmDumpIvrs (
16 ACPI_IVRS_DE_HEADER *DeviceEntry;
17 ACPI_IVRS_HEADER *Subtable;
18 ACPI_DMTABLE_INFO *InfoTable;
19+ UINT32 TableLength = AcpiUtReadUint32 (&Table->Length);
20+ UINT16 SubtableLength;
21+
22
23
24 /* Main table */
25
26- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs);
27+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoIvrs);
28 if (ACPI_FAILURE (Status))
29 {
30 return;
31@@ -433,8 +436,9 @@ AcpiDmDumpIvrs (
32
33 Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
34
35- while (Offset < Table->Length)
36+ while (Offset < TableLength)
37 {
38+ SubtableLength = AcpiUtReadUint16 (&Subtable->Length);
39 switch (Subtable->Type)
40 {
41 /* Type 10h, IVHD (I/O Virtualization Hardware Definition) */
42@@ -471,7 +475,7 @@ AcpiDmDumpIvrs (
43
44 /* Attempt to continue */
45
46- if (!Subtable->Length)
47+ if (!SubtableLength)
48 {
49 AcpiOsPrintf ("Invalid zero length subtable\n");
50 return;
51@@ -481,8 +485,8 @@ AcpiDmDumpIvrs (
52
53 /* Dump the subtable */
54
55- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
56- Subtable->Length, InfoTable);
57+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
58+ SubtableLength, InfoTable);
59 if (ACPI_FAILURE (Status))
60 {
61 return;
62@@ -511,7 +515,7 @@ AcpiDmDumpIvrs (
63
64 /* Process all of the Device Entries */
65
66- while (EntryOffset < (Offset + Subtable->Length))
67+ while (EntryOffset < (Offset + SubtableLength))
68 {
69 AcpiOsPrintf ("\n");
70
71@@ -581,7 +585,7 @@ AcpiDmDumpIvrs (
72
73 /* Dump the Device Entry */
74
75- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
76+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
77 DeviceEntry, EntryLength, InfoTable);
78 if (ACPI_FAILURE (Status))
79 {
80@@ -605,12 +609,12 @@ AcpiDmDumpIvrs (
81 */
82 if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiHid))
83 {
84- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
85+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
86 &HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidInteger);
87 }
88 else
89 {
90- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
91+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
92 &HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidString);
93 }
94 if (ACPI_FAILURE (Status))
95@@ -628,12 +632,12 @@ AcpiDmDumpIvrs (
96 */
97 if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiCid))
98 {
99- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
100+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
101 &HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidInteger);
102 }
103 else
104 {
105- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
106+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
107 &HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidString);
108 }
109 if (ACPI_FAILURE (Status))
110@@ -650,7 +654,7 @@ AcpiDmDumpIvrs (
111
112 if (HidSubtable->UidType == ACPI_IVRS_UID_IS_STRING)
113 {
114- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
115+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
116 &HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidString);
117 if (ACPI_FAILURE (Status))
118 {
119@@ -659,7 +663,7 @@ AcpiDmDumpIvrs (
120 }
121 else /* ACPI_IVRS_UID_IS_INTEGER */
122 {
123- Status = AcpiDmDumpTable (Table->Length, EntryOffset,
124+ Status = AcpiDmDumpTable (TableLength, EntryOffset,
125 &HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidInteger);
126 if (ACPI_FAILURE (Status))
127 {
128@@ -678,8 +682,8 @@ AcpiDmDumpIvrs (
129 NextSubtable:
130 /* Point to next subtable */
131
132- Offset += Subtable->Length;
133- Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length);
134+ Offset += SubtableLength;
135+ Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, SubtableLength);
136 }
137 }
138
This page took 0.061848 seconds and 4 git commands to generate.