]> git.pld-linux.org Git - packages/acpica.git/blob - 0042-Support-IVRS-in-a-big-endian-world.patch
- updated tests
[packages/acpica.git] / 0042-Support-IVRS-in-a-big-endian-world.patch
1 From b64cff82b2b33ed659826d777d2db039f64fd198 Mon Sep 17 00:00:00 2001
2 From: Al Stone <ahs3@redhat.com>
3 Date: Tue, 29 Jun 2021 17:45:24 -0600
4 Subject: [PATCH 42/45] Support IVRS in a big-endian world
5
6 Signed-off-by: Al Stone <ahs3@redhat.com>
7 ---
8  source/common/dmtbdump2.c | 34 +++++++++++++++++++---------------
9  1 file changed, 19 insertions(+), 15 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 @@ -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.087222 seconds and 3 git commands to generate.