The package rpms/acpica-tools.git has added or updated architecture specific content in its spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s): https://src.fedoraproject.org/cgit/rpms/acpica-tools.git/commit/?id=7ae04aaa... https://src.fedoraproject.org/cgit/rpms/acpica-tools.git/commit/?id=17d826f1... https://src.fedoraproject.org/cgit/rpms/acpica-tools.git/commit/?id=edb6c784....
Change: -%ifarch i686 armv7hl -%ifarch i686 armv7hl +%ifarch i686 armv7hl
Thanks.
Full change: ============
commit defe2b64332fc44bf9915c8f57d2614c529cdb43 Author: Al Stone ahs3@redhat.com Date: Thu Oct 29 14:13:33 2020 -0600
Missed a couple of minor endianness corrections
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch b/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch index 76d5fa5..471ab55 100644 --- a/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch +++ b/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch @@ -1,19 +1,22 @@ -From 71357f9d65334b1667a87a940a3ac06049c9aedb Mon Sep 17 00:00:00 2001 +From e942e785b3ec47693029e3841075becba31f2635 Mon Sep 17 00:00:00 2001 From: Al Stone ahs3@redhat.com Date: Wed, 28 Oct 2020 12:53:34 -0600 Subject: [PATCH] Correct a couple of endianness issues previously unseen
+Just odds and ends of some resource types and ASL analysis + Signed-off-by: Al Stone ahs3@redhat.com --- - source/compiler/aslanalyze.c | 4 ++-- - source/compiler/aslrestype1.c | 16 ++++++++-------- - 2 files changed, 10 insertions(+), 10 deletions(-) + source/compiler/aslanalyze.c | 4 ++-- + source/compiler/aslrestype1.c | 16 ++++++++-------- + source/compiler/aslrestype1i.c | 2 +- + 3 files changed, 11 insertions(+), 11 deletions(-)
-Index: acpica-unix2-20200925/source/compiler/aslanalyze.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslanalyze.c -+++ acpica-unix2-20200925/source/compiler/aslanalyze.c -@@ -469,7 +469,7 @@ ApCheckForGpeNameConflict ( +diff --git a/source/compiler/aslanalyze.c b/source/compiler/aslanalyze.c +index 63feba2b1..f76a8c3cd 100644 +--- a/source/compiler/aslanalyze.c ++++ b/source/compiler/aslanalyze.c +@@ -577,7 +577,7 @@ ApCheckForGpeNameConflict (
/* Need a null-terminated string version of NameSeg */
@@ -22,7 +25,7 @@ Index: acpica-unix2-20200925/source/compiler/aslanalyze.c Name[ACPI_NAMESEG_SIZE] = 0;
/* -@@ -496,7 +496,7 @@ ApCheckForGpeNameConflict ( +@@ -604,7 +604,7 @@ ApCheckForGpeNameConflict ( * We are now sure we have an _Lxx or _Exx. * Create the target name that would cause collision (Flip E/L) */ @@ -31,11 +34,11 @@ Index: acpica-unix2-20200925/source/compiler/aslanalyze.c
/* Inject opposite letter ("L" versus "E") */
-Index: acpica-unix2-20200925/source/compiler/aslrestype1.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype1.c -+++ acpica-unix2-20200925/source/compiler/aslrestype1.c -@@ -220,10 +220,10 @@ RsDoMemory24Descriptor ( +diff --git a/source/compiler/aslrestype1.c b/source/compiler/aslrestype1.c +index e7639c0bb..fd4428aab 100644 +--- a/source/compiler/aslrestype1.c ++++ b/source/compiler/aslrestype1.c +@@ -328,10 +328,10 @@ RsDoMemory24Descriptor ( /* Validate the Min/Max/Len/Align values (Alignment==0 means 64K) */
RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY24, @@ -43,14 +46,14 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c - Descriptor->Memory24.Maximum, - Descriptor->Memory24.AddressLength, - Descriptor->Memory24.Alignment, -+ AcpiUtReadUint32(&Descriptor->Memory24.Minimum), -+ AcpiUtReadUint32(&Descriptor->Memory24.Maximum), -+ AcpiUtReadUint32(&Descriptor->Memory24.AddressLength), -+ AcpiUtReadUint32(&Descriptor->Memory24.Alignment), ++ (UINT32) AcpiUtReadUint16(&Descriptor->Memory24.Minimum), ++ (UINT32) AcpiUtReadUint16(&Descriptor->Memory24.Maximum), ++ (UINT32) AcpiUtReadUint16(&Descriptor->Memory24.AddressLength), ++ (UINT32) AcpiUtReadUint16(&Descriptor->Memory24.Alignment), MinOp, MaxOp, LengthOp, NULL, Info->DescriptorTypeOp);
return (Rnode); -@@ -334,10 +334,10 @@ RsDoMemory32Descriptor ( +@@ -442,10 +442,10 @@ RsDoMemory32Descriptor ( /* Validate the Min/Max/Len/Align values */
RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY32, @@ -65,3 +68,19 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
return (Rnode); +diff --git a/source/compiler/aslrestype1i.c b/source/compiler/aslrestype1i.c +index 532553c4b..d41e3a1e8 100644 +--- a/source/compiler/aslrestype1i.c ++++ b/source/compiler/aslrestype1i.c +@@ -436,7 +436,7 @@ RsDoFixedIoDescriptor ( + + /* Error checks */ + +- if (Descriptor->FixedIo.Address > 0x03FF) ++ if (AcpiUtReadUint16(&Descriptor->FixedIo.Address) > 0x03FF) + { + AslError (ASL_WARNING, ASL_MSG_ISA_ADDRESS, AddressOp, NULL); + } +-- +2.26.2 +
commit 7ae04aaa722084b5b75aeeaa45d50b5dc4356c89 Author: Al Stone ahs3@redhat.com Date: Thu Oct 29 10:46:20 2020 -0600
Use %autopatch in the spec file
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/acpica-tools.spec b/acpica-tools.spec index e492c77..265b3b8 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -136,73 +136,7 @@ This version of the tools is being released under GPLv2 license. %setup -q -n acpica-unix2-%{version} gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f -
-# apply the big-endian patches -%patch0 -p1 -%patch1 -p1 -%patch2 -p1 -%patch3 -p1 -%patch4 -p1 -%patch5 -p1 -%patch6 -p1 -%patch7 -p1 -%patch8 -p1 -%patch9 -p1 -%patch10 -p1 -%patch11 -p1 -%patch12 -p1 -%patch13 -p1 -%patch14 -p1 -%patch15 -p1 -%patch16 -p1 -%patch17 -p1 -%patch18 -p1 -%patch19 -p1 -%patch20 -p1 -%patch21 -p1 -%patch22 -p1 -%patch23 -p1 -%patch24 -p1 -%patch25 -p1 -%patch26 -p1 -%patch27 -p1 -%patch28 -p1 -%patch29 -p1 -%patch30 -p1 -%patch31 -p1 -%patch32 -p1 -%patch33 -p1 -%patch34 -p1 -%patch35 -p1 -%patch36 -p1 -%patch37 -p1 -%patch38 -p1 -%patch39 -p1 -%patch40 -p1 -%patch41 -p1 -%patch42 -p1 -%patch43 -p1 -%patch44 -p1 - -# apply the remaining patches -%patch100 -p1 -%patch101 -p1 -%patch102 -p1 -%patch103 -p1 -%patch104 -p1 -%patch105 -p1 -%patch106 -p1 -%patch107 -p1 -%patch108 -p1 -%patch109 -p1 -%patch110 -p1 -%patch111 -p1 -%patch112 -p1 -%patch113 -p1 -%patch114 -p1 -%patch115 -p1 -%ifarch i686 armv7hl -%patch116 -p1 -%endif +%autopatch -p1
cp -p %{SOURCE2} README.Fedora cp -p %{SOURCE3} iasl.1 diff --git a/ull-32bit.patch b/ull-32bit.patch index 0568e11..3d8fe39 100644 --- a/ull-32bit.patch +++ b/ull-32bit.patch @@ -1,12 +1,15 @@ diff -Naur acpica-unix2-20200925.orig/source/common/dmtbdump.c acpica-unix2-20200925/source/common/dmtbdump.c ---- acpica-unix2-20200925.orig/source/common/dmtbdump.c 2020-10-16 18:33:41.108600489 -0600 -+++ acpica-unix2-20200925/source/common/dmtbdump.c 2020-10-16 18:35:01.970316862 -0600 -@@ -333,7 +333,7 @@ +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c 2020-10-27 08:50:34.949398104 -0500 ++++ acpica-unix2-20200925/source/common/dmtbdump.c 2020-10-27 08:54:27.609955141 -0500 +@@ -333,7 +333,11 @@ for (i = 0; i < Entries; i++) { AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); -- AcpiOsPrintf ("%16.16lX\n", AcpiUtReadUint64(&Array[i])); ++#if ACPI_MACHINE_WIDTH == 32 + AcpiOsPrintf ("%16.16llX\n", AcpiUtReadUint64(&Array[i])); ++#else + AcpiOsPrintf ("%16.16lX\n", AcpiUtReadUint64(&Array[i])); ++#endif Offset += sizeof (UINT64); } }
commit 41d9121d77c38828eef8dddb190394fd36ef02b1 Author: Al Stone ahs3@redhat.com Date: Wed Oct 28 15:27:56 2020 -0600
Fixed two more obscure endian problems
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch b/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch new file mode 100644 index 0000000..76d5fa5 --- /dev/null +++ b/0045-Correct-a-couple-of-endianness-issues-previously-uns.patch @@ -0,0 +1,67 @@ +From 71357f9d65334b1667a87a940a3ac06049c9aedb Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 28 Oct 2020 12:53:34 -0600 +Subject: [PATCH] Correct a couple of endianness issues previously unseen + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/compiler/aslanalyze.c | 4 ++-- + source/compiler/aslrestype1.c | 16 ++++++++-------- + 2 files changed, 10 insertions(+), 10 deletions(-) + +Index: acpica-unix2-20200925/source/compiler/aslanalyze.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslanalyze.c ++++ acpica-unix2-20200925/source/compiler/aslanalyze.c +@@ -469,7 +469,7 @@ ApCheckForGpeNameConflict ( + + /* Need a null-terminated string version of NameSeg */ + +- ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg); ++ ACPI_COPY_NAMESEG (Name, Op->Asl.NameSeg); + Name[ACPI_NAMESEG_SIZE] = 0; + + /* +@@ -496,7 +496,7 @@ ApCheckForGpeNameConflict ( + * We are now sure we have an _Lxx or _Exx. + * Create the target name that would cause collision (Flip E/L) + */ +- ACPI_MOVE_32_TO_32 (Target, Name); ++ ACPI_COPY_NAMESEG (Target, Name); + + /* Inject opposite letter ("L" versus "E") */ + +Index: acpica-unix2-20200925/source/compiler/aslrestype1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype1.c ++++ acpica-unix2-20200925/source/compiler/aslrestype1.c +@@ -220,10 +220,10 @@ RsDoMemory24Descriptor ( + /* Validate the Min/Max/Len/Align values (Alignment==0 means 64K) */ + + RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY24, +- Descriptor->Memory24.Minimum, +- Descriptor->Memory24.Maximum, +- Descriptor->Memory24.AddressLength, +- Descriptor->Memory24.Alignment, ++ AcpiUtReadUint32(&Descriptor->Memory24.Minimum), ++ AcpiUtReadUint32(&Descriptor->Memory24.Maximum), ++ AcpiUtReadUint32(&Descriptor->Memory24.AddressLength), ++ AcpiUtReadUint32(&Descriptor->Memory24.Alignment), + MinOp, MaxOp, LengthOp, NULL, Info->DescriptorTypeOp); + + return (Rnode); +@@ -334,10 +334,10 @@ RsDoMemory32Descriptor ( + /* Validate the Min/Max/Len/Align values */ + + RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY32, +- Descriptor->Memory32.Minimum, +- Descriptor->Memory32.Maximum, +- Descriptor->Memory32.AddressLength, +- Descriptor->Memory32.Alignment, ++ AcpiUtReadUint32(&Descriptor->Memory32.Minimum), ++ AcpiUtReadUint32(&Descriptor->Memory32.Maximum), ++ AcpiUtReadUint32(&Descriptor->Memory32.AddressLength), ++ AcpiUtReadUint32(&Descriptor->Memory32.Alignment), + MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp); + + return (Rnode); diff --git a/acpica-tools.spec b/acpica-tools.spec index 0dcf7e8..e492c77 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -68,6 +68,7 @@ Patch40: 0041-Support-MTMR-in-a-big-endian-world.patch Patch41: 0042-Support-VRTC-in-a-big-endian-world.patch Patch42: 0043-Support-S3PT-in-a-big-endian-world.patch Patch43: 0044-Correct-an-endian-ness-problem-when-converting-ASL-t.patch +Patch44: 0045-Correct-a-couple-of-endianness-issues-previously-uns.patch
# other miscellaneous patches Patch100: unaligned.patch @@ -180,6 +181,7 @@ gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f - %patch41 -p1 %patch42 -p1 %patch43 -p1 +%patch44 -p1
# apply the remaining patches %patch100 -p1
commit c6ecf612fe865089147297d1ad62345030147601 Author: Al Stone ahs3@redhat.com Date: Tue Oct 27 17:54:15 2020 -0600
Add a patch to correct for endianness when converting ASL to ASL+
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0044-Correct-an-endian-ness-problem-when-converting-ASL-t.patch b/0044-Correct-an-endian-ness-problem-when-converting-ASL-t.patch new file mode 100644 index 0000000..5d7da5b --- /dev/null +++ b/0044-Correct-an-endian-ness-problem-when-converting-ASL-t.patch @@ -0,0 +1,43 @@ +From 9dc82e99776b18fe19314695d7d83e79c7fea934 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Tue, 27 Oct 2020 17:50:52 -0600 +Subject: [PATCH] Correct an endian-ness problem when converting ASL to ASL+ + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/compiler/cvparser.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/source/compiler/cvparser.c b/source/compiler/cvparser.c +index 370b80361..7311e031a 100644 +--- a/source/compiler/cvparser.c ++++ b/source/compiler/cvparser.c +@@ -144,6 +144,7 @@ CvInitFileTree ( + char *ChildFilename = NULL; + UINT8 *AmlStart; + UINT32 AmlLength; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + if (!AcpiGbl_CaptureComments) +@@ -152,7 +153,7 @@ CvInitFileTree ( + } + + +- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); ++ AmlLength = TableLength - sizeof (ACPI_TABLE_HEADER); + AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); + + CvDbgPrint ("AmlLength: %x\n", AmlLength); +@@ -162,7 +163,7 @@ CvInitFileTree ( + AcpiGbl_FileTreeRoot = AcpiOsAcquireObject (AcpiGbl_FileCache); + + AcpiGbl_FileTreeRoot->FileStart = (char *)(AmlStart); +- AcpiGbl_FileTreeRoot->FileEnd = (char *)(AmlStart + Table->Length); ++ AcpiGbl_FileTreeRoot->FileEnd = (char *)(AmlStart + TableLength); + AcpiGbl_FileTreeRoot->Next = NULL; + AcpiGbl_FileTreeRoot->Parent = NULL; + AcpiGbl_FileTreeRoot->Filename = (char *)(AmlStart+2); +-- +2.26.2 + diff --git a/acpica-tools.spec b/acpica-tools.spec index 5409cda..0dcf7e8 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -67,6 +67,7 @@ Patch39: 0040-Support-DSDT-SSDT-in-a-big-endian-world.patch Patch40: 0041-Support-MTMR-in-a-big-endian-world.patch Patch41: 0042-Support-VRTC-in-a-big-endian-world.patch Patch42: 0043-Support-S3PT-in-a-big-endian-world.patch +Patch43: 0044-Correct-an-endian-ness-problem-when-converting-ASL-t.patch
# other miscellaneous patches Patch100: unaligned.patch @@ -178,6 +179,7 @@ gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f - %patch40 -p1 %patch41 -p1 %patch42 -p1 +%patch43 -p1
# apply the remaining patches %patch100 -p1
commit 38a008cb324d2830fa0e3fcbf5f85c35a0a34410 Author: Al Stone ahs3@redhat.com Date: Sun Oct 25 11:36:21 2020 -0600
Fix up patches to account for displacements due to SPDX info
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0039-Add-partial-big-endian-support-for-WPBT-tables.patch b/0039-Add-partial-big-endian-support-for-WPBT-tables.patch index 071d600..3207b7d 100644 --- a/0039-Add-partial-big-endian-support-for-WPBT-tables.patch +++ b/0039-Add-partial-big-endian-support-for-WPBT-tables.patch @@ -12,11 +12,11 @@ Signed-off-by: Al Stone ahs3@redhat.com source/compiler/dttable2.c | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-)
-diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c -index d2f2bf7b7..da9b81c92 100644 ---- a/source/common/dmtbdump3.c -+++ b/source/common/dmtbdump3.c -@@ -736,13 +736,13 @@ AcpiDmDumpWpbt ( +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -628,13 +628,13 @@ AcpiDmDumpWpbt ( { ACPI_STATUS Status; ACPI_TABLE_WPBT *Subtable; @@ -32,7 +32,7 @@ index d2f2bf7b7..da9b81c92 100644 if (ACPI_FAILURE (Status)) { return; -@@ -751,10 +751,10 @@ AcpiDmDumpWpbt ( +@@ -643,10 +643,10 @@ AcpiDmDumpWpbt ( /* Extract the arguments buffer length from the main table */
Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table); @@ -45,11 +45,11 @@ index d2f2bf7b7..da9b81c92 100644 + (void) AcpiDmDumpTable (TableLength, 0, Table, ArgumentsLength, AcpiDmTableInfoWpbt0); } -diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c -index 584c09ee8..48729b48f 100644 ---- a/source/compiler/dttable2.c -+++ b/source/compiler/dttable2.c -@@ -2298,7 +2298,8 @@ DtCompileWpbt ( +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -2190,7 +2190,8 @@ DtCompileWpbt (
/* Extract the length of the Arguments buffer, insert into main table */
@@ -59,6 +59,3 @@ index 584c09ee8..48729b48f 100644 Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer); Table->ArgumentsLength = Length;
--- -2.26.2 - diff --git a/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch b/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch index 43b4114..bfa106b 100644 --- a/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch +++ b/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch @@ -39,11 +39,11 @@ Signed-off-by: Al Stone ahs3@redhat.com source/components/namespace/nsutils.c | 7 +- 25 files changed, 682 insertions(+), 323 deletions(-)
-diff --git a/source/common/dmrestag.c b/source/common/dmrestag.c -index fe6e74146..eed863037 100644 ---- a/source/common/dmrestag.c -+++ b/source/common/dmrestag.c -@@ -1146,7 +1146,7 @@ AcpiDmAddResourcesToNamespace ( +Index: acpica-unix2-20200925/source/common/dmrestag.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmrestag.c ++++ acpica-unix2-20200925/source/common/dmrestag.c +@@ -1038,7 +1038,7 @@ AcpiDmAddResourcesToNamespace ( * NextOp contains the Aml pointer and the Aml length */ AcpiUtWalkAmlResources (NULL, (UINT8 *) NextOp->Named.Data, @@ -52,11 +52,11 @@ index fe6e74146..eed863037 100644 AcpiDmAddResourceToNamespace, (void **) BufferNode); }
-diff --git a/source/common/dmtables.c b/source/common/dmtables.c -index ee18d26c9..2a5551ece 100644 ---- a/source/common/dmtables.c -+++ b/source/common/dmtables.c -@@ -250,6 +250,10 @@ AdCreateTableHeader ( +Index: acpica-unix2-20200925/source/common/dmtables.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtables.c ++++ acpica-unix2-20200925/source/common/dmtables.c +@@ -142,6 +142,10 @@ AdCreateTableHeader ( ACPI_TABLE_HEADER *Table) { UINT8 Checksum; @@ -67,7 +67,7 @@ index ee18d26c9..2a5551ece 100644
/* Reset globals for External statements */ -@@ -264,7 +268,7 @@ AdCreateTableHeader ( +@@ -156,7 +160,7 @@ AdCreateTableHeader (
AcpiOsPrintf (" * Original Table Header:\n"); AcpiOsPrintf (" * Signature "%4.4s"\n", Table->Signature); @@ -76,7 +76,7 @@ index ee18d26c9..2a5551ece 100644
/* Print and validate the revision */
-@@ -296,7 +300,7 @@ AdCreateTableHeader ( +@@ -188,7 +192,7 @@ AdCreateTableHeader (
AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum);
@@ -85,7 +85,7 @@ index ee18d26c9..2a5551ece 100644 if (Checksum) { AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", -@@ -306,9 +310,9 @@ AdCreateTableHeader ( +@@ -198,9 +202,9 @@ AdCreateTableHeader ( AcpiOsPrintf ("\n"); AcpiOsPrintf (" * OEM ID "%.6s"\n", Table->OemId); AcpiOsPrintf (" * OEM Table ID "%.8s"\n", Table->OemTableId); @@ -97,7 +97,7 @@ index ee18d26c9..2a5551ece 100644 AcpiOsPrintf (" */\n");
/* -@@ -329,7 +333,7 @@ AdCreateTableHeader ( +@@ -221,7 +225,7 @@ AdCreateTableHeader ( AcpiOsPrintf ( "DefinitionBlock ("", "%4.4s", %u, "%.6s", "%.8s", 0x%8.8X)\n", Table->Signature, Table->Revision, @@ -106,7 +106,7 @@ index ee18d26c9..2a5551ece 100644 }
-@@ -504,7 +508,8 @@ AdParseTable ( +@@ -396,7 +400,8 @@ AdParseTable (
fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature);
@@ -116,11 +116,11 @@ index ee18d26c9..2a5551ece 100644 AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER));
AcpiUtSetIntegerWidth (Table->Revision); -diff --git a/source/common/dmtbdump.c b/source/common/dmtbdump.c -index 92d86930b..5ad20ff62 100644 ---- a/source/common/dmtbdump.c -+++ b/source/common/dmtbdump.c -@@ -441,8 +441,7 @@ AcpiDmDumpXsdt ( +Index: acpica-unix2-20200925/source/common/dmtbdump.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c ++++ acpica-unix2-20200925/source/common/dmtbdump.c +@@ -333,8 +333,7 @@ AcpiDmDumpXsdt ( for (i = 0; i < Entries; i++) { AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); @@ -130,11 +130,11 @@ index 92d86930b..5ad20ff62 100644 Offset += sizeof (UINT64); } } -diff --git a/source/compiler/aslcodegen.c b/source/compiler/aslcodegen.c -index ba0384e84..14be9dcc2 100644 ---- a/source/compiler/aslcodegen.c -+++ b/source/compiler/aslcodegen.c -@@ -346,6 +346,10 @@ CgWriteAmlOpcode ( +Index: acpica-unix2-20200925/source/compiler/aslcodegen.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslcodegen.c ++++ acpica-unix2-20200925/source/compiler/aslcodegen.c +@@ -238,6 +238,10 @@ CgWriteAmlOpcode ( { UINT8 PkgLenFirstByte; UINT32 i; @@ -145,7 +145,7 @@ index ba0384e84..14be9dcc2 100644 union { UINT16 Opcode; UINT8 OpcodeBytes[2]; -@@ -413,25 +417,26 @@ CgWriteAmlOpcode ( +@@ -305,25 +309,26 @@ CgWriteAmlOpcode (
/* Value is the length to be encoded (Used in field definitions) */
@@ -176,7 +176,7 @@ index ba0384e84..14be9dcc2 100644 break; }
-@@ -443,7 +448,8 @@ CgWriteAmlOpcode ( +@@ -335,7 +340,8 @@ CgWriteAmlOpcode ( { /* Simplest case -- no bytes to follow, just write the count */
@@ -186,7 +186,7 @@ index ba0384e84..14be9dcc2 100644 } else if (Op->Asl.AmlPkgLenBytes != 0) { -@@ -451,9 +457,10 @@ CgWriteAmlOpcode ( +@@ -343,9 +349,10 @@ CgWriteAmlOpcode ( * Encode the "bytes to follow" in the first byte, top two bits. * The low-order nybble of the length is in the bottom 4 bits */ @@ -198,7 +198,7 @@ index ba0384e84..14be9dcc2 100644
CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1);
-@@ -467,6 +474,9 @@ CgWriteAmlOpcode ( +@@ -359,6 +366,9 @@ CgWriteAmlOpcode ( * Now we can write the remaining bytes - * either 1, 2, or 3 bytes */ @@ -208,7 +208,7 @@ index ba0384e84..14be9dcc2 100644 for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++) { CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1); -@@ -478,22 +488,30 @@ CgWriteAmlOpcode ( +@@ -370,22 +380,30 @@ CgWriteAmlOpcode ( { case AML_BYTE_OP:
@@ -243,7 +243,7 @@ index ba0384e84..14be9dcc2 100644 break;
case AML_STRING_OP: -@@ -531,6 +549,7 @@ CgWriteTableHeader ( +@@ -423,6 +441,7 @@ CgWriteTableHeader ( ACPI_PARSE_OBJECT *Child; UINT32 CommentLength; ACPI_COMMENT_NODE *Current; @@ -251,7 +251,7 @@ index ba0384e84..14be9dcc2 100644
memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); -@@ -586,7 +605,9 @@ CgWriteTableHeader ( +@@ -478,7 +497,9 @@ CgWriteTableHeader ( /* OEM Revision */
Child = Child->Asl.Next; @@ -262,7 +262,7 @@ index ba0384e84..14be9dcc2 100644
/* Compiler ID */
-@@ -594,7 +615,8 @@ CgWriteTableHeader ( +@@ -486,7 +507,8 @@ CgWriteTableHeader (
/* Compiler version */
@@ -272,7 +272,7 @@ index ba0384e84..14be9dcc2 100644
/* Table length. Checksum zero for now, will rewrite later */
-@@ -649,6 +671,15 @@ CgWriteTableHeader ( +@@ -541,6 +563,15 @@ CgWriteTableHeader ( AslGbl_TableHeader.Checksum = 0; Op->Asl.FinalAmlOffset = ftell (AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle);
@@ -288,7 +288,7 @@ index ba0384e84..14be9dcc2 100644 /* Write entire header and clear the table header global */
CgLocalWriteAmlData (Op, &AslGbl_TableHeader, sizeof (ACPI_TABLE_HEADER)); -@@ -733,6 +764,7 @@ CgWriteNode ( +@@ -625,6 +656,7 @@ CgWriteNode ( ACPI_PARSE_OBJECT *Op) { ASL_RESOURCE_NODE *Rnode; @@ -296,7 +296,7 @@ index ba0384e84..14be9dcc2 100644
/* Write all comments here. */ -@@ -761,7 +793,10 @@ CgWriteNode ( +@@ -653,7 +685,10 @@ CgWriteNode ( case AML_RAW_DATA_DWORD: case AML_RAW_DATA_QWORD:
@@ -308,11 +308,11 @@ index ba0384e84..14be9dcc2 100644 return;
-diff --git a/source/compiler/aslopcodes.c b/source/compiler/aslopcodes.c -index b2a023650..afc9004af 100644 ---- a/source/compiler/aslopcodes.c -+++ b/source/compiler/aslopcodes.c -@@ -619,7 +619,8 @@ OpcDoUnicode ( +Index: acpica-unix2-20200925/source/compiler/aslopcodes.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslopcodes.c ++++ acpica-unix2-20200925/source/compiler/aslopcodes.c +@@ -511,7 +511,8 @@ OpcDoUnicode (
for (i = 0; i < Count; i++) { @@ -322,11 +322,11 @@ index b2a023650..afc9004af 100644 }
/* -diff --git a/source/compiler/aslrestype1.c b/source/compiler/aslrestype1.c -index 4dff4607d..e7639c0bb 100644 ---- a/source/compiler/aslrestype1.c -+++ b/source/compiler/aslrestype1.c -@@ -251,6 +251,7 @@ RsDoMemory24Descriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype1.c ++++ acpica-unix2-20200925/source/compiler/aslrestype1.c +@@ -143,6 +143,7 @@ RsDoMemory24Descriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -334,7 +334,7 @@ index 4dff4607d..e7639c0bb 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -259,7 +260,8 @@ RsDoMemory24Descriptor ( +@@ -151,7 +152,8 @@ RsDoMemory24Descriptor (
Descriptor = Rnode->Buffer; Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24; @@ -344,7 +344,7 @@ index 4dff4607d..e7639c0bb 100644
/* Process all child initialization nodes */
-@@ -276,7 +278,8 @@ RsDoMemory24Descriptor ( +@@ -168,7 +170,8 @@ RsDoMemory24Descriptor (
case 1: /* Min Address */
@@ -354,7 +354,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum)); MinOp = InitializerOp; -@@ -284,7 +287,8 @@ RsDoMemory24Descriptor ( +@@ -176,7 +179,8 @@ RsDoMemory24Descriptor (
case 2: /* Max Address */
@@ -364,7 +364,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum)); MaxOp = InitializerOp; -@@ -292,14 +296,16 @@ RsDoMemory24Descriptor ( +@@ -184,14 +188,16 @@ RsDoMemory24Descriptor (
case 3: /* Alignment */
@@ -383,7 +383,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength)); LengthOp = InitializerOp; -@@ -357,6 +363,8 @@ RsDoMemory32Descriptor ( +@@ -249,6 +255,8 @@ RsDoMemory32Descriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -392,7 +392,7 @@ index 4dff4607d..e7639c0bb 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -365,7 +373,8 @@ RsDoMemory32Descriptor ( +@@ -257,7 +265,8 @@ RsDoMemory32Descriptor (
Descriptor = Rnode->Buffer; Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32; @@ -402,7 +402,7 @@ index 4dff4607d..e7639c0bb 100644
/* Process all child initialization nodes */
-@@ -382,7 +391,8 @@ RsDoMemory32Descriptor ( +@@ -274,7 +283,8 @@ RsDoMemory32Descriptor (
case 1: /* Min Address */
@@ -412,7 +412,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum)); MinOp = InitializerOp; -@@ -390,7 +400,8 @@ RsDoMemory32Descriptor ( +@@ -282,7 +292,8 @@ RsDoMemory32Descriptor (
case 2: /* Max Address */
@@ -422,7 +422,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum)); MaxOp = InitializerOp; -@@ -398,7 +409,8 @@ RsDoMemory32Descriptor ( +@@ -290,7 +301,8 @@ RsDoMemory32Descriptor (
case 3: /* Alignment */
@@ -432,7 +432,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment)); AlignOp = InitializerOp; -@@ -406,7 +418,8 @@ RsDoMemory32Descriptor ( +@@ -298,7 +310,8 @@ RsDoMemory32Descriptor (
case 4: /* Length */
@@ -442,7 +442,7 @@ index 4dff4607d..e7639c0bb 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength)); LengthOp = InitializerOp; -@@ -460,6 +473,8 @@ RsDoMemory32FixedDescriptor ( +@@ -352,6 +365,8 @@ RsDoMemory32FixedDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -451,7 +451,7 @@ index 4dff4607d..e7639c0bb 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -468,7 +483,8 @@ RsDoMemory32FixedDescriptor ( +@@ -360,7 +375,8 @@ RsDoMemory32FixedDescriptor (
Descriptor = Rnode->Buffer; Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32; @@ -461,7 +461,7 @@ index 4dff4607d..e7639c0bb 100644
/* Process all child initialization nodes */
-@@ -485,14 +501,16 @@ RsDoMemory32FixedDescriptor ( +@@ -377,14 +393,16 @@ RsDoMemory32FixedDescriptor (
case 1: /* Address */
@@ -480,11 +480,11 @@ index 4dff4607d..e7639c0bb 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength)); break; -diff --git a/source/compiler/aslrestype1i.c b/source/compiler/aslrestype1i.c -index 9e9bc2096..532553c4b 100644 ---- a/source/compiler/aslrestype1i.c -+++ b/source/compiler/aslrestype1i.c -@@ -307,6 +307,7 @@ RsDoFixedDmaDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype1i.c ++++ acpica-unix2-20200925/source/compiler/aslrestype1i.c +@@ -199,6 +199,7 @@ RsDoFixedDmaDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -492,7 +492,7 @@ index 9e9bc2096..532553c4b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -325,14 +326,16 @@ RsDoFixedDmaDescriptor ( +@@ -217,14 +218,16 @@ RsDoFixedDmaDescriptor ( { case 0: /* DMA Request Lines [WORD] (_DMA) */
@@ -511,7 +511,7 @@ index 9e9bc2096..532553c4b 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels)); break; -@@ -383,6 +386,7 @@ RsDoFixedIoDescriptor ( +@@ -275,6 +278,7 @@ RsDoFixedIoDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -519,7 +519,7 @@ index 9e9bc2096..532553c4b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -401,8 +405,8 @@ RsDoFixedIoDescriptor ( +@@ -293,8 +297,8 @@ RsDoFixedIoDescriptor ( { case 0: /* Base Address */
@@ -530,7 +530,7 @@ index 9e9bc2096..532553c4b 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address)); AddressOp = InitializerOp; -@@ -466,6 +470,7 @@ RsDoIoDescriptor ( +@@ -358,6 +362,7 @@ RsDoIoDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -538,7 +538,7 @@ index 9e9bc2096..532553c4b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -491,8 +496,8 @@ RsDoIoDescriptor ( +@@ -383,8 +388,8 @@ RsDoIoDescriptor (
case 1: /* Min Address */
@@ -549,7 +549,7 @@ index 9e9bc2096..532553c4b 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum)); MinOp = InitializerOp; -@@ -500,8 +505,8 @@ RsDoIoDescriptor ( +@@ -392,8 +397,8 @@ RsDoIoDescriptor (
case 2: /* Max Address */
@@ -560,7 +560,7 @@ index 9e9bc2096..532553c4b 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum)); MaxOp = InitializerOp; -@@ -542,10 +547,10 @@ RsDoIoDescriptor ( +@@ -434,10 +439,10 @@ RsDoIoDescriptor ( /* Validate the Min/Max/Len/Align values */
RsSmallAddressCheck (ACPI_RESOURCE_NAME_IO, @@ -575,7 +575,7 @@ index 9e9bc2096..532553c4b 100644 MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
return (Rnode); -@@ -669,7 +674,7 @@ RsDoIrqDescriptor ( +@@ -561,7 +566,7 @@ RsDoIrqDescriptor (
/* Now we can set the channel mask */
@@ -584,7 +584,7 @@ index 9e9bc2096..532553c4b 100644 return (Rnode); }
-@@ -768,6 +773,6 @@ RsDoIrqNoFlagsDescriptor ( +@@ -660,6 +665,6 @@ RsDoIrqNoFlagsDescriptor (
/* Now we can set the interrupt mask */
@@ -592,11 +592,11 @@ index 9e9bc2096..532553c4b 100644 + Descriptor->Irq.IrqMask = AcpiUtReadUint16(&IrqMask); return (Rnode); } -diff --git a/source/compiler/aslrestype2.c b/source/compiler/aslrestype2.c -index 93236853a..13d0476e7 100644 ---- a/source/compiler/aslrestype2.c -+++ b/source/compiler/aslrestype2.c -@@ -185,6 +185,8 @@ RsDoGeneralRegisterDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2.c +@@ -77,6 +77,8 @@ RsDoGeneralRegisterDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -605,7 +605,7 @@ index 93236853a..13d0476e7 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -193,7 +195,8 @@ RsDoGeneralRegisterDescriptor ( +@@ -85,7 +87,8 @@ RsDoGeneralRegisterDescriptor (
Descriptor = Rnode->Buffer; Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER; @@ -615,7 +615,7 @@ index 93236853a..13d0476e7 100644
/* Process all child initialization nodes */
-@@ -224,7 +227,8 @@ RsDoGeneralRegisterDescriptor ( +@@ -116,7 +119,8 @@ RsDoGeneralRegisterDescriptor (
case 3: /* Register Address */
@@ -625,7 +625,7 @@ index 93236853a..13d0476e7 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address)); break; -@@ -292,6 +296,8 @@ RsDoInterruptDescriptor ( +@@ -184,6 +188,8 @@ RsDoInterruptDescriptor ( BOOLEAN HasResSourceIndex = FALSE; UINT8 ResSourceIndex = 0; UINT8 *ResSourceString = NULL; @@ -634,7 +634,7 @@ index 93236853a..13d0476e7 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -333,7 +339,7 @@ RsDoInterruptDescriptor ( +@@ -225,7 +231,7 @@ RsDoInterruptDescriptor ( * Initial descriptor length -- may be enlarged if there are * optional fields present */ @@ -643,7 +643,7 @@ index 93236853a..13d0476e7 100644 Descriptor->ExtendedIrq.InterruptCount = 0;
Rover = ACPI_CAST_PTR (AML_RESOURCE, -@@ -441,7 +447,8 @@ RsDoInterruptDescriptor ( +@@ -333,7 +339,8 @@ RsDoInterruptDescriptor (
/* Save the integer and move pointer to the next one */
@@ -653,7 +653,7 @@ index 93236853a..13d0476e7 100644 Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4); Descriptor->ExtendedIrq.InterruptCount++; Descriptor->ExtendedIrq.ResourceLength += 4; -@@ -492,6 +499,8 @@ RsDoInterruptDescriptor ( +@@ -384,6 +391,8 @@ RsDoInterruptDescriptor ( Descriptor->ExtendedIrq.ResourceLength = (UINT16) (Descriptor->ExtendedIrq.ResourceLength + StringLength); } @@ -662,7 +662,7 @@ index 93236853a..13d0476e7 100644
Rnode->BufferLength = (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) - -@@ -544,7 +553,8 @@ RsDoVendorLargeDescriptor ( +@@ -436,7 +445,8 @@ RsDoVendorLargeDescriptor (
Descriptor = Rnode->Buffer; Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE; @@ -672,11 +672,11 @@ index 93236853a..13d0476e7 100644
/* Point to end-of-descriptor for vendor data */
-diff --git a/source/compiler/aslrestype2d.c b/source/compiler/aslrestype2d.c -index 394530ae3..fd9dc91de 100644 ---- a/source/compiler/aslrestype2d.c -+++ b/source/compiler/aslrestype2d.c -@@ -192,6 +192,8 @@ RsDoDwordIoDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2d.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2d.c +@@ -84,6 +84,8 @@ RsDoDwordIoDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -685,7 +685,7 @@ index 394530ae3..fd9dc91de 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -255,8 +257,8 @@ RsDoDwordIoDescriptor ( +@@ -147,8 +149,8 @@ RsDoDwordIoDescriptor (
case 5: /* Address Granularity */
@@ -696,7 +696,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; -@@ -264,8 +266,8 @@ RsDoDwordIoDescriptor ( +@@ -156,8 +158,8 @@ RsDoDwordIoDescriptor (
case 6: /* Address Min */
@@ -707,7 +707,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; -@@ -273,8 +275,8 @@ RsDoDwordIoDescriptor ( +@@ -165,8 +167,8 @@ RsDoDwordIoDescriptor (
case 7: /* Address Max */
@@ -718,7 +718,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; -@@ -282,16 +284,16 @@ RsDoDwordIoDescriptor ( +@@ -174,16 +176,16 @@ RsDoDwordIoDescriptor (
case 8: /* Translation Offset */
@@ -739,7 +739,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; -@@ -379,11 +381,14 @@ RsDoDwordIoDescriptor ( +@@ -271,11 +273,14 @@ RsDoDwordIoDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -758,7 +758,7 @@ index 394530ae3..fd9dc91de 100644 Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -422,6 +427,8 @@ RsDoDwordMemoryDescriptor ( +@@ -314,6 +319,8 @@ RsDoDwordMemoryDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -767,7 +767,7 @@ index 394530ae3..fd9dc91de 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -493,8 +500,8 @@ RsDoDwordMemoryDescriptor ( +@@ -385,8 +392,8 @@ RsDoDwordMemoryDescriptor (
case 6: /* Address Granularity */
@@ -778,7 +778,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; -@@ -502,8 +509,8 @@ RsDoDwordMemoryDescriptor ( +@@ -394,8 +401,8 @@ RsDoDwordMemoryDescriptor (
case 7: /* Min Address */
@@ -789,7 +789,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; -@@ -511,8 +518,8 @@ RsDoDwordMemoryDescriptor ( +@@ -403,8 +410,8 @@ RsDoDwordMemoryDescriptor (
case 8: /* Max Address */
@@ -800,7 +800,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; -@@ -520,16 +527,16 @@ RsDoDwordMemoryDescriptor ( +@@ -412,16 +419,16 @@ RsDoDwordMemoryDescriptor (
case 9: /* Translation Offset */
@@ -821,7 +821,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; -@@ -614,11 +621,14 @@ RsDoDwordMemoryDescriptor ( +@@ -506,11 +513,14 @@ RsDoDwordMemoryDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -840,7 +840,7 @@ index 394530ae3..fd9dc91de 100644 Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -657,6 +667,8 @@ RsDoDwordSpaceDescriptor ( +@@ -549,6 +559,8 @@ RsDoDwordSpaceDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -849,7 +849,7 @@ index 394530ae3..fd9dc91de 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -724,8 +736,8 @@ RsDoDwordSpaceDescriptor ( +@@ -616,8 +628,8 @@ RsDoDwordSpaceDescriptor (
case 6: /* Address Granularity */
@@ -860,7 +860,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; -@@ -733,8 +745,8 @@ RsDoDwordSpaceDescriptor ( +@@ -625,8 +637,8 @@ RsDoDwordSpaceDescriptor (
case 7: /* Min Address */
@@ -871,7 +871,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; -@@ -742,8 +754,8 @@ RsDoDwordSpaceDescriptor ( +@@ -634,8 +646,8 @@ RsDoDwordSpaceDescriptor (
case 8: /* Max Address */
@@ -882,7 +882,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; -@@ -751,16 +763,16 @@ RsDoDwordSpaceDescriptor ( +@@ -643,16 +655,16 @@ RsDoDwordSpaceDescriptor (
case 9: /* Translation Offset */
@@ -903,7 +903,7 @@ index 394530ae3..fd9dc91de 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; -@@ -831,11 +843,14 @@ RsDoDwordSpaceDescriptor ( +@@ -723,11 +735,14 @@ RsDoDwordSpaceDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -922,11 +922,11 @@ index 394530ae3..fd9dc91de 100644 Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-diff --git a/source/compiler/aslrestype2e.c b/source/compiler/aslrestype2e.c -index b188994d3..ad61efc77 100644 ---- a/source/compiler/aslrestype2e.c -+++ b/source/compiler/aslrestype2e.c -@@ -188,6 +188,7 @@ RsDoExtendedIoDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2e.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2e.c +@@ -80,6 +80,7 @@ RsDoExtendedIoDescriptor ( UINT16 StringLength = 0; UINT32 CurrentByteOffset; UINT32 i; @@ -934,7 +934,7 @@ index b188994d3..ad61efc77 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -247,7 +248,8 @@ RsDoExtendedIoDescriptor ( +@@ -139,7 +140,8 @@ RsDoExtendedIoDescriptor (
case 5: /* Address Granularity */
@@ -944,7 +944,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; -@@ -255,7 +257,8 @@ RsDoExtendedIoDescriptor ( +@@ -147,7 +149,8 @@ RsDoExtendedIoDescriptor (
case 6: /* Address Min */
@@ -954,7 +954,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; -@@ -263,7 +266,8 @@ RsDoExtendedIoDescriptor ( +@@ -155,7 +158,8 @@ RsDoExtendedIoDescriptor (
case 7: /* Address Max */
@@ -964,7 +964,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; -@@ -271,14 +275,16 @@ RsDoExtendedIoDescriptor ( +@@ -163,14 +167,16 @@ RsDoExtendedIoDescriptor (
case 8: /* Translation Offset */
@@ -983,7 +983,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; -@@ -286,7 +292,8 @@ RsDoExtendedIoDescriptor ( +@@ -178,7 +184,8 @@ RsDoExtendedIoDescriptor (
case 10: /* Type-Specific Attributes */
@@ -993,7 +993,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; -@@ -321,11 +328,14 @@ RsDoExtendedIoDescriptor ( +@@ -213,11 +220,14 @@ RsDoExtendedIoDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1012,7 +1012,7 @@ index b188994d3..ad61efc77 100644 Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -361,6 +371,7 @@ RsDoExtendedMemoryDescriptor ( +@@ -253,6 +263,7 @@ RsDoExtendedMemoryDescriptor ( UINT16 StringLength = 0; UINT32 CurrentByteOffset; UINT32 i; @@ -1020,7 +1020,7 @@ index b188994d3..ad61efc77 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -427,7 +438,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -319,7 +330,8 @@ RsDoExtendedMemoryDescriptor (
case 6: /* Address Granularity */
@@ -1030,7 +1030,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; -@@ -435,7 +447,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -327,7 +339,8 @@ RsDoExtendedMemoryDescriptor (
case 7: /* Min Address */
@@ -1040,7 +1040,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; -@@ -443,7 +456,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -335,7 +348,8 @@ RsDoExtendedMemoryDescriptor (
case 8: /* Max Address */
@@ -1050,7 +1050,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; -@@ -451,14 +465,16 @@ RsDoExtendedMemoryDescriptor ( +@@ -343,14 +357,16 @@ RsDoExtendedMemoryDescriptor (
case 9: /* Translation Offset */
@@ -1069,7 +1069,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; -@@ -466,7 +482,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -358,7 +374,8 @@ RsDoExtendedMemoryDescriptor (
case 11: /* Type-Specific Attributes */
@@ -1079,7 +1079,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; -@@ -502,11 +519,14 @@ RsDoExtendedMemoryDescriptor ( +@@ -394,11 +411,14 @@ RsDoExtendedMemoryDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1098,7 +1098,7 @@ index b188994d3..ad61efc77 100644 Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -542,6 +562,7 @@ RsDoExtendedSpaceDescriptor ( +@@ -434,6 +454,7 @@ RsDoExtendedSpaceDescriptor ( UINT16 StringLength = 0; UINT32 CurrentByteOffset; UINT32 i; @@ -1106,7 +1106,7 @@ index b188994d3..ad61efc77 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -605,7 +626,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -497,7 +518,8 @@ RsDoExtendedSpaceDescriptor (
case 6: /* Address Granularity */
@@ -1116,7 +1116,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; -@@ -613,7 +635,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -505,7 +527,8 @@ RsDoExtendedSpaceDescriptor (
case 7: /* Min Address */
@@ -1126,7 +1126,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; -@@ -621,7 +644,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -513,7 +536,8 @@ RsDoExtendedSpaceDescriptor (
case 8: /* Max Address */
@@ -1136,7 +1136,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; -@@ -629,14 +653,16 @@ RsDoExtendedSpaceDescriptor ( +@@ -521,14 +545,16 @@ RsDoExtendedSpaceDescriptor (
case 9: /* Translation Offset */
@@ -1155,7 +1155,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; -@@ -644,7 +670,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -536,7 +562,8 @@ RsDoExtendedSpaceDescriptor (
case 11: /* Type-Specific Attributes */
@@ -1165,7 +1165,7 @@ index b188994d3..ad61efc77 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; -@@ -665,11 +692,14 @@ RsDoExtendedSpaceDescriptor ( +@@ -557,11 +584,14 @@ RsDoExtendedSpaceDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1184,11 +1184,11 @@ index b188994d3..ad61efc77 100644 Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-diff --git a/source/compiler/aslrestype2q.c b/source/compiler/aslrestype2q.c -index 02db0ab34..7706b07ac 100644 ---- a/source/compiler/aslrestype2q.c -+++ b/source/compiler/aslrestype2q.c -@@ -192,6 +192,7 @@ RsDoQwordIoDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2q.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2q.c +@@ -84,6 +84,7 @@ RsDoQwordIoDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1196,7 +1196,7 @@ index 02db0ab34..7706b07ac 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -255,7 +256,8 @@ RsDoQwordIoDescriptor ( +@@ -147,7 +148,8 @@ RsDoQwordIoDescriptor (
case 5: /* Address Granularity */
@@ -1206,7 +1206,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; -@@ -263,7 +265,8 @@ RsDoQwordIoDescriptor ( +@@ -155,7 +157,8 @@ RsDoQwordIoDescriptor (
case 6: /* Address Min */
@@ -1216,7 +1216,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; -@@ -271,7 +274,8 @@ RsDoQwordIoDescriptor ( +@@ -163,7 +166,8 @@ RsDoQwordIoDescriptor (
case 7: /* Address Max */
@@ -1226,7 +1226,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; -@@ -279,14 +283,16 @@ RsDoQwordIoDescriptor ( +@@ -171,14 +175,16 @@ RsDoQwordIoDescriptor (
case 8: /* Translation Offset */
@@ -1245,7 +1245,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; -@@ -370,11 +376,14 @@ RsDoQwordIoDescriptor ( +@@ -262,11 +268,14 @@ RsDoQwordIoDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1264,7 +1264,7 @@ index 02db0ab34..7706b07ac 100644 Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -413,6 +422,7 @@ RsDoQwordMemoryDescriptor ( +@@ -305,6 +314,7 @@ RsDoQwordMemoryDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1272,7 +1272,7 @@ index 02db0ab34..7706b07ac 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -483,7 +493,8 @@ RsDoQwordMemoryDescriptor ( +@@ -375,7 +385,8 @@ RsDoQwordMemoryDescriptor (
case 6: /* Address Granularity */
@@ -1282,7 +1282,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; -@@ -491,7 +502,8 @@ RsDoQwordMemoryDescriptor ( +@@ -383,7 +394,8 @@ RsDoQwordMemoryDescriptor (
case 7: /* Min Address */
@@ -1292,7 +1292,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; -@@ -499,7 +511,8 @@ RsDoQwordMemoryDescriptor ( +@@ -391,7 +403,8 @@ RsDoQwordMemoryDescriptor (
case 8: /* Max Address */
@@ -1302,7 +1302,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; -@@ -507,14 +520,16 @@ RsDoQwordMemoryDescriptor ( +@@ -399,14 +412,16 @@ RsDoQwordMemoryDescriptor (
case 9: /* Translation Offset */
@@ -1321,7 +1321,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; -@@ -599,11 +614,14 @@ RsDoQwordMemoryDescriptor ( +@@ -491,11 +506,14 @@ RsDoQwordMemoryDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1340,7 +1340,7 @@ index 02db0ab34..7706b07ac 100644 Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -642,6 +660,7 @@ RsDoQwordSpaceDescriptor ( +@@ -534,6 +552,7 @@ RsDoQwordSpaceDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1348,7 +1348,7 @@ index 02db0ab34..7706b07ac 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -709,7 +728,8 @@ RsDoQwordSpaceDescriptor ( +@@ -601,7 +620,8 @@ RsDoQwordSpaceDescriptor (
case 6: /* Address Granularity */
@@ -1358,7 +1358,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; -@@ -717,7 +737,8 @@ RsDoQwordSpaceDescriptor ( +@@ -609,7 +629,8 @@ RsDoQwordSpaceDescriptor (
case 7: /* Min Address */
@@ -1368,7 +1368,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; -@@ -725,7 +746,8 @@ RsDoQwordSpaceDescriptor ( +@@ -617,7 +638,8 @@ RsDoQwordSpaceDescriptor (
case 8: /* Max Address */
@@ -1378,7 +1378,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; -@@ -733,14 +755,16 @@ RsDoQwordSpaceDescriptor ( +@@ -625,14 +647,16 @@ RsDoQwordSpaceDescriptor (
case 9: /* Translation Offset */
@@ -1397,7 +1397,7 @@ index 02db0ab34..7706b07ac 100644 RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; -@@ -810,11 +834,14 @@ RsDoQwordSpaceDescriptor ( +@@ -702,11 +726,14 @@ RsDoQwordSpaceDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1416,11 +1416,11 @@ index 02db0ab34..7706b07ac 100644 Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-diff --git a/source/compiler/aslrestype2s.c b/source/compiler/aslrestype2s.c -index c075c89c9..7aa23a35b 100644 ---- a/source/compiler/aslrestype2s.c -+++ b/source/compiler/aslrestype2s.c -@@ -451,6 +451,7 @@ RsDoGpioIntDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2s.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2s.c +@@ -343,6 +343,7 @@ RsDoGpioIntDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1428,7 +1428,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -593,7 +594,8 @@ RsDoGpioIntDescriptor ( +@@ -485,7 +486,8 @@ RsDoGpioIntDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1438,7 +1438,7 @@ index c075c89c9..7aa23a35b 100644 InterruptList++; PinCount++;
-@@ -626,6 +628,27 @@ RsDoGpioIntDescriptor ( +@@ -518,6 +520,27 @@ RsDoGpioIntDescriptor (
MpSaveGpioInfo (Info->MappingOp, Descriptor, PinCount, PinList, ResourceSource); @@ -1466,7 +1466,7 @@ index c075c89c9..7aa23a35b 100644 return (Rnode); }
-@@ -660,6 +683,7 @@ RsDoGpioIoDescriptor ( +@@ -552,6 +575,7 @@ RsDoGpioIoDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1474,7 +1474,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -799,7 +823,8 @@ RsDoGpioIoDescriptor ( +@@ -691,7 +715,8 @@ RsDoGpioIoDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1484,7 +1484,7 @@ index c075c89c9..7aa23a35b 100644 InterruptList++; PinCount++;
-@@ -832,6 +857,27 @@ RsDoGpioIoDescriptor ( +@@ -724,6 +749,27 @@ RsDoGpioIoDescriptor (
MpSaveGpioInfo (Info->MappingOp, Descriptor, PinCount, PinList, ResourceSource); @@ -1512,7 +1512,7 @@ index c075c89c9..7aa23a35b 100644 return (Rnode); }
-@@ -862,6 +908,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -754,6 +800,8 @@ RsDoI2cSerialBusDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1521,7 +1521,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -889,7 +937,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -781,7 +829,8 @@ RsDoI2cSerialBusDescriptor ( Descriptor->I2cSerialBus.RevisionId = AML_RESOURCE_I2C_REVISION; Descriptor->I2cSerialBus.TypeRevisionId = AML_RESOURCE_I2C_TYPE_REVISION; Descriptor->I2cSerialBus.Type = AML_RESOURCE_I2C_SERIALBUSTYPE; @@ -1531,7 +1531,7 @@ index c075c89c9..7aa23a35b 100644
if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_I2C_SERIALBUS_V2) { -@@ -903,13 +952,15 @@ RsDoI2cSerialBusDescriptor ( +@@ -795,13 +844,15 @@ RsDoI2cSerialBusDescriptor (
/* Process all child initialization nodes */
@@ -1548,7 +1548,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress)); break; -@@ -923,16 +974,19 @@ RsDoI2cSerialBusDescriptor ( +@@ -815,16 +866,19 @@ RsDoI2cSerialBusDescriptor (
case 2: /* Connection Speed [DWORD] (_SPE) */
@@ -1570,7 +1570,7 @@ index c075c89c9..7aa23a35b 100644 break;
case 4: /* ResSource [Optional Field - STRING] */ -@@ -990,6 +1044,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -882,6 +936,8 @@ RsDoI2cSerialBusDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1579,7 +1579,7 @@ index c075c89c9..7aa23a35b 100644 MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource); return (Rnode); } -@@ -1021,6 +1077,8 @@ RsDoSpiSerialBusDescriptor ( +@@ -913,6 +969,8 @@ RsDoSpiSerialBusDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1588,7 +1588,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -1043,12 +1101,13 @@ RsDoSpiSerialBusDescriptor ( +@@ -935,12 +993,13 @@ RsDoSpiSerialBusDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1604,7 +1604,7 @@ index c075c89c9..7aa23a35b 100644
if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_SPI_SERIALBUS_V2) { -@@ -1063,29 +1122,35 @@ RsDoSpiSerialBusDescriptor ( +@@ -955,29 +1014,35 @@ RsDoSpiSerialBusDescriptor (
/* Process all child initialization nodes */
@@ -1643,7 +1643,7 @@ index c075c89c9..7aa23a35b 100644 break;
case 3: /* Device Bit Length [BYTE] (_LEN) */ -@@ -1104,7 +1169,8 @@ RsDoSpiSerialBusDescriptor ( +@@ -996,7 +1061,8 @@ RsDoSpiSerialBusDescriptor (
case 5: /* Connection Speed [DWORD] (_SPE) */
@@ -1653,7 +1653,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed)); break; -@@ -1209,6 +1275,8 @@ RsDoUartSerialBusDescriptor ( +@@ -1101,6 +1167,8 @@ RsDoUartSerialBusDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1662,7 +1662,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -1231,12 +1299,13 @@ RsDoUartSerialBusDescriptor ( +@@ -1123,12 +1191,13 @@ RsDoUartSerialBusDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1678,7 +1678,7 @@ index c075c89c9..7aa23a35b 100644
if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_UART_SERIALBUS_V2) { -@@ -1250,29 +1319,35 @@ RsDoUartSerialBusDescriptor ( +@@ -1142,29 +1211,35 @@ RsDoUartSerialBusDescriptor (
/* Process all child initialization nodes */
@@ -1717,7 +1717,7 @@ index c075c89c9..7aa23a35b 100644 break;
case 3: /* Lines In Use [BYTE] (_LIN) */ -@@ -1284,9 +1359,11 @@ RsDoUartSerialBusDescriptor ( +@@ -1176,9 +1251,11 @@ RsDoUartSerialBusDescriptor (
case 4: /* Endianness [Flag] (_END) */
@@ -1730,7 +1730,7 @@ index c075c89c9..7aa23a35b 100644 break;
case 5: /* Parity [BYTE] (_PAR) */ -@@ -1298,21 +1375,25 @@ RsDoUartSerialBusDescriptor ( +@@ -1190,21 +1267,25 @@ RsDoUartSerialBusDescriptor (
case 6: /* Flow Control [Flags] (_FLC) */
@@ -1759,7 +1759,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize)); break; -@@ -1416,6 +1497,7 @@ RsDoPinFunctionDescriptor ( +@@ -1308,6 +1389,7 @@ RsDoPinFunctionDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1767,7 +1767,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1439,7 +1521,7 @@ RsDoPinFunctionDescriptor ( +@@ -1331,7 +1413,7 @@ RsDoPinFunctionDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1776,7 +1776,7 @@ index c075c89c9..7aa23a35b 100644 Descriptor->PinFunction.DescriptorType = ACPI_RESOURCE_NAME_PIN_FUNCTION; Descriptor->PinFunction.RevisionId = AML_RESOURCE_PIN_FUNCTION_REVISION;
-@@ -1479,7 +1561,8 @@ RsDoPinFunctionDescriptor ( +@@ -1371,7 +1453,8 @@ RsDoPinFunctionDescriptor (
case 2: /* Function Number [WORD] (_FUN) */
@@ -1786,7 +1786,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_FUNCTION, CurrentByteOffset + ASL_RESDESC_OFFSET (PinFunction.FunctionNumber)); break; -@@ -1527,6 +1610,12 @@ RsDoPinFunctionDescriptor ( +@@ -1419,6 +1502,12 @@ RsDoPinFunctionDescriptor ( { Descriptor->PinFunction.VendorLength = VendorLength; } @@ -1799,7 +1799,7 @@ index c075c89c9..7aa23a35b 100644 break;
default: -@@ -1538,7 +1627,8 @@ RsDoPinFunctionDescriptor ( +@@ -1430,7 +1519,8 @@ RsDoPinFunctionDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1809,7 +1809,7 @@ index c075c89c9..7aa23a35b 100644 PinList++; PinCount++;
-@@ -1569,6 +1659,13 @@ RsDoPinFunctionDescriptor ( +@@ -1461,6 +1551,13 @@ RsDoPinFunctionDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1823,7 +1823,7 @@ index c075c89c9..7aa23a35b 100644 return (Rnode); }
-@@ -1602,6 +1699,8 @@ RsDoPinConfigDescriptor ( +@@ -1494,6 +1591,8 @@ RsDoPinConfigDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1832,7 +1832,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1625,7 +1724,7 @@ RsDoPinConfigDescriptor ( +@@ -1517,7 +1616,7 @@ RsDoPinConfigDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1841,7 +1841,7 @@ index c075c89c9..7aa23a35b 100644 Descriptor->PinConfig.DescriptorType = ACPI_RESOURCE_NAME_PIN_CONFIG; Descriptor->PinConfig.RevisionId = AML_RESOURCE_PIN_CONFIG_REVISION;
-@@ -1679,7 +1778,8 @@ RsDoPinConfigDescriptor ( +@@ -1571,7 +1670,8 @@ RsDoPinConfigDescriptor (
case 2: /* Pin Config Value [DWORD] (_VAL) */
@@ -1851,7 +1851,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_PINCONFIG_VALUE, CurrentByteOffset + ASL_RESDESC_OFFSET (PinConfig.PinConfigValue)); break; -@@ -1738,7 +1838,8 @@ RsDoPinConfigDescriptor ( +@@ -1630,7 +1730,8 @@ RsDoPinConfigDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1861,7 +1861,7 @@ index c075c89c9..7aa23a35b 100644 PinList++; PinCount++;
-@@ -1769,6 +1870,16 @@ RsDoPinConfigDescriptor ( +@@ -1661,6 +1762,16 @@ RsDoPinConfigDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1878,7 +1878,7 @@ index c075c89c9..7aa23a35b 100644 return (Rnode); }
-@@ -1802,6 +1913,7 @@ RsDoPinGroupDescriptor ( +@@ -1694,6 +1805,7 @@ RsDoPinGroupDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1886,7 +1886,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1825,7 +1937,7 @@ RsDoPinGroupDescriptor ( +@@ -1717,7 +1829,7 @@ RsDoPinGroupDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1895,7 +1895,7 @@ index c075c89c9..7aa23a35b 100644 Descriptor->PinGroup.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP; Descriptor->PinGroup.RevisionId = AML_RESOURCE_PIN_GROUP_REVISION;
-@@ -1892,7 +2004,8 @@ RsDoPinGroupDescriptor ( +@@ -1784,7 +1896,8 @@ RsDoPinGroupDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1905,7 +1905,7 @@ index c075c89c9..7aa23a35b 100644 PinList++; PinCount++;
-@@ -1923,6 +2036,16 @@ RsDoPinGroupDescriptor ( +@@ -1815,6 +1928,16 @@ RsDoPinGroupDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1922,7 +1922,7 @@ index c075c89c9..7aa23a35b 100644 return (Rnode); }
-@@ -1955,6 +2078,7 @@ RsDoPinGroupFunctionDescriptor ( +@@ -1847,6 +1970,7 @@ RsDoPinGroupFunctionDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1930,7 +1930,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1978,7 +2102,7 @@ RsDoPinGroupFunctionDescriptor ( +@@ -1870,7 +1994,7 @@ RsDoPinGroupFunctionDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1939,7 +1939,7 @@ index c075c89c9..7aa23a35b 100644 Descriptor->PinGroupFunction.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION; Descriptor->PinGroupFunction.RevisionId = AML_RESOURCE_PIN_GROUP_FUNCTION_REVISION;
-@@ -2010,7 +2134,8 @@ RsDoPinGroupFunctionDescriptor ( +@@ -1902,7 +2026,8 @@ RsDoPinGroupFunctionDescriptor (
case 1: /* Function Number [WORD] */
@@ -1949,7 +1949,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_FUNCTION, CurrentByteOffset + ASL_RESDESC_OFFSET (PinGroupFunction.FunctionNumber)); break; -@@ -2069,6 +2194,16 @@ RsDoPinGroupFunctionDescriptor ( +@@ -1961,6 +2086,16 @@ RsDoPinGroupFunctionDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1966,7 +1966,7 @@ index c075c89c9..7aa23a35b 100644 return (Rnode); }
-@@ -2101,6 +2236,8 @@ RsDoPinGroupConfigDescriptor ( +@@ -1993,6 +2128,8 @@ RsDoPinGroupConfigDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1975,7 +1975,7 @@ index c075c89c9..7aa23a35b 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -2124,7 +2261,7 @@ RsDoPinGroupConfigDescriptor ( +@@ -2016,7 +2153,7 @@ RsDoPinGroupConfigDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1984,7 +1984,7 @@ index c075c89c9..7aa23a35b 100644 Descriptor->PinGroupConfig.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG; Descriptor->PinGroupConfig.RevisionId = AML_RESOURCE_PIN_GROUP_CONFIG_REVISION;
-@@ -2177,7 +2314,8 @@ RsDoPinGroupConfigDescriptor ( +@@ -2069,7 +2206,8 @@ RsDoPinGroupConfigDescriptor (
case 2: /* Pin Config Value [DWORD] (_VAL) */
@@ -1994,7 +1994,7 @@ index c075c89c9..7aa23a35b 100644 RsCreateDwordField (InitializerOp, ACPI_RESTAG_PINCONFIG_VALUE, CurrentByteOffset + ASL_RESDESC_OFFSET (PinGroupConfig.PinConfigValue)); break; -@@ -2238,5 +2376,15 @@ RsDoPinGroupConfigDescriptor ( +@@ -2130,5 +2268,15 @@ RsDoPinGroupConfigDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -2010,11 +2010,11 @@ index c075c89c9..7aa23a35b 100644 + return (Rnode); } -diff --git a/source/compiler/aslrestype2w.c b/source/compiler/aslrestype2w.c -index b2113f4c9..6077f5f1a 100644 ---- a/source/compiler/aslrestype2w.c -+++ b/source/compiler/aslrestype2w.c -@@ -192,6 +192,7 @@ RsDoWordIoDescriptor ( +Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2w.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2w.c +@@ -84,6 +84,7 @@ RsDoWordIoDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -2022,7 +2022,7 @@ index b2113f4c9..6077f5f1a 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -255,7 +256,8 @@ RsDoWordIoDescriptor ( +@@ -147,7 +148,8 @@ RsDoWordIoDescriptor (
case 5: /* Address Granularity */
@@ -2032,7 +2032,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; -@@ -263,7 +265,8 @@ RsDoWordIoDescriptor ( +@@ -155,7 +157,8 @@ RsDoWordIoDescriptor (
case 6: /* Address Min */
@@ -2042,7 +2042,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; -@@ -271,7 +274,8 @@ RsDoWordIoDescriptor ( +@@ -163,7 +166,8 @@ RsDoWordIoDescriptor (
case 7: /* Address Max */
@@ -2052,7 +2052,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; -@@ -279,14 +283,16 @@ RsDoWordIoDescriptor ( +@@ -171,14 +175,16 @@ RsDoWordIoDescriptor (
case 8: /* Translation Offset */
@@ -2071,7 +2071,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; -@@ -371,13 +377,17 @@ RsDoWordIoDescriptor ( +@@ -263,13 +269,17 @@ RsDoWordIoDescriptor ( /* Validate the Min/Max/Len/Gran values */
RsLargeAddressCheck ( @@ -2093,7 +2093,7 @@ index b2113f4c9..6077f5f1a 100644 Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); -@@ -413,6 +423,7 @@ RsDoWordBusNumberDescriptor ( +@@ -305,6 +315,7 @@ RsDoWordBusNumberDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -2101,7 +2101,7 @@ index b2113f4c9..6077f5f1a 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -469,8 +480,8 @@ RsDoWordBusNumberDescriptor ( +@@ -361,8 +372,8 @@ RsDoWordBusNumberDescriptor (
case 4: /* Address Granularity */
@@ -2112,7 +2112,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; -@@ -478,8 +489,8 @@ RsDoWordBusNumberDescriptor ( +@@ -370,8 +381,8 @@ RsDoWordBusNumberDescriptor (
case 5: /* Min Address */
@@ -2123,7 +2123,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; -@@ -487,8 +498,8 @@ RsDoWordBusNumberDescriptor ( +@@ -379,8 +390,8 @@ RsDoWordBusNumberDescriptor (
case 6: /* Max Address */
@@ -2134,7 +2134,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; -@@ -496,16 +507,16 @@ RsDoWordBusNumberDescriptor ( +@@ -388,16 +399,16 @@ RsDoWordBusNumberDescriptor (
case 7: /* Translation Offset */
@@ -2155,7 +2155,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; -@@ -576,13 +587,17 @@ RsDoWordBusNumberDescriptor ( +@@ -468,13 +479,17 @@ RsDoWordBusNumberDescriptor ( /* Validate the Min/Max/Len/Gran values */
RsLargeAddressCheck ( @@ -2177,7 +2177,7 @@ index b2113f4c9..6077f5f1a 100644 Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); -@@ -618,6 +633,7 @@ RsDoWordSpaceDescriptor ( +@@ -510,6 +525,7 @@ RsDoWordSpaceDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -2185,7 +2185,7 @@ index b2113f4c9..6077f5f1a 100644
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -685,8 +701,8 @@ RsDoWordSpaceDescriptor ( +@@ -577,8 +593,8 @@ RsDoWordSpaceDescriptor (
case 6: /* Address Granularity */
@@ -2196,7 +2196,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; -@@ -694,8 +710,8 @@ RsDoWordSpaceDescriptor ( +@@ -586,8 +602,8 @@ RsDoWordSpaceDescriptor (
case 7: /* Min Address */
@@ -2207,7 +2207,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; -@@ -703,8 +719,8 @@ RsDoWordSpaceDescriptor ( +@@ -595,8 +611,8 @@ RsDoWordSpaceDescriptor (
case 8: /* Max Address */
@@ -2218,7 +2218,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; -@@ -712,16 +728,16 @@ RsDoWordSpaceDescriptor ( +@@ -604,16 +620,16 @@ RsDoWordSpaceDescriptor (
case 9: /* Translation Offset */
@@ -2239,7 +2239,7 @@ index b2113f4c9..6077f5f1a 100644 RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; -@@ -792,13 +808,17 @@ RsDoWordSpaceDescriptor ( +@@ -684,13 +700,17 @@ RsDoWordSpaceDescriptor ( /* Validate the Min/Max/Len/Gran values */
RsLargeAddressCheck ( @@ -2261,11 +2261,11 @@ index b2113f4c9..6077f5f1a 100644 Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); -diff --git a/source/components/disassembler/dmbuffer.c b/source/components/disassembler/dmbuffer.c -index 810f727fa..6960e9913 100644 ---- a/source/components/disassembler/dmbuffer.c -+++ b/source/components/disassembler/dmbuffer.c -@@ -312,7 +312,7 @@ AcpiDmByteList ( +Index: acpica-unix2-20200925/source/components/disassembler/dmbuffer.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmbuffer.c ++++ acpica-unix2-20200925/source/components/disassembler/dmbuffer.c +@@ -204,7 +204,7 @@ AcpiDmByteList (
ByteData = Op->Named.Data; @@ -2274,7 +2274,7 @@ index 810f727fa..6960e9913 100644
/* * The byte list belongs to a buffer, and can be produced by either -@@ -416,7 +416,7 @@ AcpiDmIsUuidBuffer ( +@@ -308,7 +308,7 @@ AcpiDmIsUuidBuffer ( /* Extract the byte list info */
ByteData = NextOp->Named.Data; @@ -2283,7 +2283,7 @@ index 810f727fa..6960e9913 100644
/* Byte count must be exactly 16 */
-@@ -544,7 +544,7 @@ AcpiDmIsUnicodeBuffer ( +@@ -436,7 +436,7 @@ AcpiDmIsUnicodeBuffer ( /* Extract the byte list info */
ByteData = NextOp->Named.Data; @@ -2292,7 +2292,7 @@ index 810f727fa..6960e9913 100644 WordCount = ACPI_DIV_2 (ByteCount);
/* -@@ -986,14 +986,14 @@ AcpiDmUnicode ( +@@ -878,14 +878,14 @@ AcpiDmUnicode ( /* Extract the buffer info as a WORD buffer */
WordData = ACPI_CAST_PTR (UINT16, Op->Named.Data); @@ -2309,11 +2309,11 @@ index 810f727fa..6960e9913 100644
/* Handle values that must be escaped */
-diff --git a/source/components/disassembler/dmopcode.c b/source/components/disassembler/dmopcode.c -index 1372a0f25..bb7abab2c 100644 ---- a/source/components/disassembler/dmopcode.c -+++ b/source/components/disassembler/dmopcode.c -@@ -990,23 +990,23 @@ AcpiDmDisassembleOneOp ( +Index: acpica-unix2-20200925/source/components/disassembler/dmopcode.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmopcode.c ++++ acpica-unix2-20200925/source/components/disassembler/dmopcode.c +@@ -882,23 +882,23 @@ AcpiDmDisassembleOneOp (
case AML_INT_NAMEDFIELD_OP:
@@ -2341,11 +2341,11 @@ index 1372a0f25..bb7abab2c 100644 Info->BitOffset += Offset;
if (Info->BitOffset % 8 == 0) -diff --git a/source/components/disassembler/dmresrc.c b/source/components/disassembler/dmresrc.c -index a3403322b..af75a7833 100644 ---- a/source/components/disassembler/dmresrc.c -+++ b/source/components/disassembler/dmresrc.c -@@ -525,7 +525,7 @@ AcpiDmIsResourceTemplate ( +Index: acpica-unix2-20200925/source/components/disassembler/dmresrc.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrc.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrc.c +@@ -417,7 +417,7 @@ AcpiDmIsResourceTemplate ( return (AE_TYPE); }
@@ -2354,11 +2354,11 @@ index a3403322b..af75a7833 100644
/* Get the length of the raw initialization byte list */
-diff --git a/source/components/disassembler/dmresrcl.c b/source/components/disassembler/dmresrcl.c -index e9d391df3..eed859928 100644 ---- a/source/components/disassembler/dmresrcl.c -+++ b/source/components/disassembler/dmresrcl.c -@@ -249,6 +249,8 @@ AcpiDmMemoryFields ( +Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcl.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrcl.c +@@ -141,6 +141,8 @@ AcpiDmMemoryFields ( UINT32 Level) { UINT32 i; @@ -2367,7 +2367,7 @@ index e9d391df3..eed859928 100644
for (i = 0; i < 4; i++) -@@ -259,14 +261,16 @@ AcpiDmMemoryFields ( +@@ -151,14 +153,16 @@ AcpiDmMemoryFields ( { case 16:
@@ -2388,7 +2388,7 @@ index e9d391df3..eed859928 100644 break;
default: -@@ -298,6 +302,9 @@ AcpiDmAddressFields ( +@@ -190,6 +194,9 @@ AcpiDmAddressFields ( UINT32 Level) { UINT32 i; @@ -2398,7 +2398,7 @@ index e9d391df3..eed859928 100644
AcpiOsPrintf ("\n"); -@@ -310,20 +317,23 @@ AcpiDmAddressFields ( +@@ -202,20 +209,23 @@ AcpiDmAddressFields ( { case 16:
@@ -2428,7 +2428,7 @@ index e9d391df3..eed859928 100644 break;
default: -@@ -857,7 +867,7 @@ AcpiDmExtendedDescriptor ( +@@ -749,7 +759,7 @@ AcpiDmExtendedDescriptor ( /* Extra field for this descriptor only */
AcpiDmIndent (Level + 1); @@ -2437,7 +2437,7 @@ index e9d391df3..eed859928 100644 "Type-Specific Attributes");
/* Insert a descriptor name */ -@@ -984,11 +994,11 @@ AcpiDmFixedMemory32Descriptor ( +@@ -876,11 +886,11 @@ AcpiDmFixedMemory32Descriptor ( AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]);
AcpiDmIndent (Level + 1); @@ -2451,7 +2451,7 @@ index e9d391df3..eed859928 100644 "Address Length");
/* Insert a descriptor name */ -@@ -1034,7 +1044,8 @@ AcpiDmGenericRegisterDescriptor ( +@@ -926,7 +936,8 @@ AcpiDmGenericRegisterDescriptor ( AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset");
AcpiDmIndent (Level + 1); @@ -2461,7 +2461,7 @@ index e9d391df3..eed859928 100644
/* Optional field for ACPI 3.0 */
-@@ -1097,7 +1108,7 @@ AcpiDmInterruptDescriptor ( +@@ -989,7 +1000,7 @@ AcpiDmInterruptDescriptor ( AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_EXTENDED_IRQ) + ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), @@ -2470,7 +2470,7 @@ index e9d391df3..eed859928 100644
/* Insert a descriptor name */
-@@ -1112,7 +1123,7 @@ AcpiDmInterruptDescriptor ( +@@ -1004,7 +1015,7 @@ AcpiDmInterruptDescriptor ( { AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%8.8X,\n", @@ -2479,11 +2479,11 @@ index e9d391df3..eed859928 100644 }
AcpiDmIndent (Level); -diff --git a/source/components/disassembler/dmresrcl2.c b/source/components/disassembler/dmresrcl2.c -index a2a85dfdc..11c3af1af 100644 ---- a/source/components/disassembler/dmresrcl2.c -+++ b/source/components/disassembler/dmresrcl2.c -@@ -299,22 +299,27 @@ AcpiDmGpioCommon ( +Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcl2.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c +@@ -191,22 +191,27 @@ AcpiDmGpioCommon ( char *DeviceName = NULL; UINT32 PinCount; UINT32 i; @@ -2515,7 +2515,7 @@ index a2a85dfdc..11c3af1af 100644
/* Insert a descriptor name */
-@@ -323,15 +328,15 @@ AcpiDmGpioCommon ( +@@ -215,15 +220,15 @@ AcpiDmGpioCommon (
/* Dump the vendor data */
@@ -2536,7 +2536,7 @@ index a2a85dfdc..11c3af1af 100644 }
AcpiOsPrintf (")\n"); -@@ -341,17 +346,17 @@ AcpiDmGpioCommon ( +@@ -233,17 +238,17 @@ AcpiDmGpioCommon ( AcpiDmIndent (Level + 1); AcpiOsPrintf ("{ // Pin list\n");
@@ -2559,7 +2559,7 @@ index a2a85dfdc..11c3af1af 100644 ((i + 1) < PinCount) ? "," : ""); }
-@@ -385,16 +390,18 @@ AcpiDmGpioIntDescriptor ( +@@ -277,16 +282,18 @@ AcpiDmGpioIntDescriptor ( UINT32 Length, UINT32 Level) { @@ -2581,7 +2581,7 @@ index a2a85dfdc..11c3af1af 100644
/* PinConfig, DebounceTimeout */
-@@ -407,7 +414,8 @@ AcpiDmGpioIntDescriptor ( +@@ -299,7 +306,8 @@ AcpiDmGpioIntDescriptor ( { AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.PinConfig); } @@ -2591,7 +2591,7 @@ index a2a85dfdc..11c3af1af 100644
/* Dump the GpioInt/GpioIo common portion of the descriptor */
-@@ -437,14 +445,16 @@ AcpiDmGpioIoDescriptor ( +@@ -329,14 +337,16 @@ AcpiDmGpioIoDescriptor ( UINT32 Length, UINT32 Level) { @@ -2609,7 +2609,7 @@ index a2a85dfdc..11c3af1af 100644
if (Resource->Gpio.PinConfig <= 3) { -@@ -458,10 +468,10 @@ AcpiDmGpioIoDescriptor ( +@@ -350,10 +360,10 @@ AcpiDmGpioIoDescriptor (
/* DebounceTimeout, DriveStrength, IoRestriction */
@@ -2624,7 +2624,7 @@ index a2a85dfdc..11c3af1af 100644
/* Dump the GpioInt/GpioIo common portion of the descriptor */
-@@ -542,6 +552,9 @@ AcpiDmPinFunctionDescriptor ( +@@ -434,6 +444,9 @@ AcpiDmPinFunctionDescriptor ( char *DeviceName = NULL; UINT32 PinCount; UINT32 i; @@ -2634,7 +2634,7 @@ index a2a85dfdc..11c3af1af 100644
AcpiDmIndent (Level); AcpiOsPrintf ("PinFunction (%s, ", -@@ -559,12 +572,14 @@ AcpiDmPinFunctionDescriptor ( +@@ -451,12 +464,14 @@ AcpiDmPinFunctionDescriptor (
/* FunctionNumber */
@@ -2652,7 +2652,7 @@ index a2a85dfdc..11c3af1af 100644 AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); }
-@@ -584,15 +599,15 @@ AcpiDmPinFunctionDescriptor ( +@@ -476,15 +491,15 @@ AcpiDmPinFunctionDescriptor (
/* Dump the vendor data */
@@ -2673,7 +2673,7 @@ index a2a85dfdc..11c3af1af 100644 }
AcpiOsPrintf (")\n"); -@@ -603,17 +618,17 @@ AcpiDmPinFunctionDescriptor ( +@@ -495,17 +510,17 @@ AcpiDmPinFunctionDescriptor (
AcpiOsPrintf ("{ // Pin list\n");
@@ -2696,7 +2696,7 @@ index a2a85dfdc..11c3af1af 100644 ((i + 1) < PinCount) ? "," : ""); }
-@@ -649,7 +664,8 @@ AcpiDmDumpSerialBusVendorData ( +@@ -541,7 +556,8 @@ AcpiDmDumpSerialBusVendorData ( { case AML_RESOURCE_I2C_SERIALBUSTYPE:
@@ -2706,7 +2706,7 @@ index a2a85dfdc..11c3af1af 100644 AML_RESOURCE_I2C_MIN_DATA_LEN;
VendorData = ACPI_ADD_PTR (UINT8, Resource, -@@ -658,7 +674,8 @@ AcpiDmDumpSerialBusVendorData ( +@@ -550,7 +566,8 @@ AcpiDmDumpSerialBusVendorData (
case AML_RESOURCE_SPI_SERIALBUSTYPE:
@@ -2716,7 +2716,7 @@ index a2a85dfdc..11c3af1af 100644 AML_RESOURCE_SPI_MIN_DATA_LEN;
VendorData = ACPI_ADD_PTR (UINT8, Resource, -@@ -667,7 +684,8 @@ AcpiDmDumpSerialBusVendorData ( +@@ -559,7 +576,8 @@ AcpiDmDumpSerialBusVendorData (
case AML_RESOURCE_UART_SERIALBUSTYPE:
@@ -2726,7 +2726,7 @@ index a2a85dfdc..11c3af1af 100644 AML_RESOURCE_UART_MIN_DATA_LEN;
VendorData = ACPI_ADD_PTR (UINT8, Resource, -@@ -715,9 +733,9 @@ AcpiDmI2cSerialBusDescriptor ( +@@ -607,9 +625,9 @@ AcpiDmI2cSerialBusDescriptor (
AcpiDmIndent (Level); AcpiOsPrintf ("I2cSerialBusV2 (0x%4.4X, %s, 0x%8.8X,\n", @@ -2738,7 +2738,7 @@ index a2a85dfdc..11c3af1af 100644
AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, ", -@@ -726,7 +744,7 @@ AcpiDmI2cSerialBusDescriptor ( +@@ -618,7 +636,7 @@ AcpiDmI2cSerialBusDescriptor ( /* ResourceSource is a required field */
ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + @@ -2747,7 +2747,7 @@ index a2a85dfdc..11c3af1af 100644
DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); -@@ -783,15 +801,17 @@ AcpiDmSpiSerialBusDescriptor ( +@@ -675,15 +693,17 @@ AcpiDmSpiSerialBusDescriptor ( { UINT32 ResourceSourceOffset; char *DeviceName; @@ -2768,7 +2768,7 @@ index a2a85dfdc..11c3af1af 100644 Resource->SpiSerialBus.DataBitLength);
/* SlaveMode, ConnectionSpeed, ClockPolarity, ClockPhase */ -@@ -799,7 +819,7 @@ AcpiDmSpiSerialBusDescriptor ( +@@ -691,7 +711,7 @@ AcpiDmSpiSerialBusDescriptor ( AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, 0x%8.8X, %s,\n", AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.Flags)], @@ -2777,7 +2777,7 @@ index a2a85dfdc..11c3af1af 100644 AcpiGbl_CpoDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.ClockPolarity)]);
AcpiDmIndent (Level + 1); -@@ -809,7 +829,7 @@ AcpiDmSpiSerialBusDescriptor ( +@@ -701,7 +721,7 @@ AcpiDmSpiSerialBusDescriptor ( /* ResourceSource is a required field */
ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + @@ -2786,7 +2786,7 @@ index a2a85dfdc..11c3af1af 100644
DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); -@@ -866,15 +886,17 @@ AcpiDmUartSerialBusDescriptor ( +@@ -758,15 +778,17 @@ AcpiDmUartSerialBusDescriptor ( { UINT32 ResourceSourceOffset; char *DeviceName; @@ -2807,7 +2807,7 @@ index a2a85dfdc..11c3af1af 100644
/* LinesInUse, IsBigEndian, Parity, FlowControl */
-@@ -889,13 +911,13 @@ AcpiDmUartSerialBusDescriptor ( +@@ -781,13 +803,13 @@ AcpiDmUartSerialBusDescriptor (
AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%4.4X, 0x%4.4X, ", @@ -2824,11 +2824,11 @@ index a2a85dfdc..11c3af1af 100644
DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); -diff --git a/source/components/disassembler/dmresrcs.c b/source/components/disassembler/dmresrcs.c -index 5f5c7edaf..21d397637 100644 ---- a/source/components/disassembler/dmresrcs.c -+++ b/source/components/disassembler/dmresrcs.c -@@ -201,7 +201,7 @@ AcpiDmIrqDescriptor ( +Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcs.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrcs.c +@@ -93,7 +93,7 @@ AcpiDmIrqDescriptor ( AcpiOsPrintf (")\n");
AcpiDmIndent (Level + 1); @@ -2837,7 +2837,7 @@ index 5f5c7edaf..21d397637 100644 }
-@@ -269,8 +269,8 @@ AcpiDmFixedDmaDescriptor ( +@@ -161,8 +161,8 @@ AcpiDmFixedDmaDescriptor (
AcpiDmIndent (Level); AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", @@ -2848,7 +2848,7 @@ index 5f5c7edaf..21d397637 100644
if (Resource->FixedDma.Width <= 5) { -@@ -318,10 +318,12 @@ AcpiDmIoDescriptor ( +@@ -210,10 +210,12 @@ AcpiDmIoDescriptor ( AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);
AcpiDmIndent (Level + 1); @@ -2863,7 +2863,7 @@ index 5f5c7edaf..21d397637 100644
AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); -@@ -364,10 +366,12 @@ AcpiDmFixedIoDescriptor ( +@@ -256,10 +258,12 @@ AcpiDmFixedIoDescriptor ( AcpiOsPrintf ("FixedIO (\n");
AcpiDmIndent (Level + 1); @@ -2878,11 +2878,11 @@ index 5f5c7edaf..21d397637 100644
/* Insert a descriptor name */
-diff --git a/source/components/disassembler/dmwalk.c b/source/components/disassembler/dmwalk.c -index 76ef0aacb..069c11fbb 100644 ---- a/source/components/disassembler/dmwalk.c -+++ b/source/components/disassembler/dmwalk.c -@@ -1263,7 +1263,7 @@ AcpiDmAscendingOp ( +Index: acpica-unix2-20200925/source/components/disassembler/dmwalk.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmwalk.c ++++ acpica-unix2-20200925/source/components/disassembler/dmwalk.c +@@ -1155,7 +1155,7 @@ AcpiDmAscendingOp ( { ParentOp->Common.DisasmFlags |= ACPI_PARSEOP_EMPTY_TERMLIST; ASL_CV_CLOSE_PAREN (Op, Level); @@ -2891,11 +2891,11 @@ index 76ef0aacb..069c11fbb 100644 } }
-diff --git a/source/components/dispatcher/dsfield.c b/source/components/dispatcher/dsfield.c -index f41990780..937c1e9f5 100644 ---- a/source/components/dispatcher/dsfield.c -+++ b/source/components/dispatcher/dsfield.c -@@ -444,6 +444,8 @@ AcpiDsGetFieldNames ( +Index: acpica-unix2-20200925/source/components/dispatcher/dsfield.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/dispatcher/dsfield.c ++++ acpica-unix2-20200925/source/components/dispatcher/dsfield.c +@@ -336,6 +336,8 @@ AcpiDsGetFieldNames ( char *NamePath; #endif
@@ -2904,7 +2904,7 @@ index f41990780..937c1e9f5 100644
ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info);
-@@ -550,14 +552,17 @@ AcpiDsGetFieldNames ( +@@ -442,14 +444,17 @@ AcpiDsGetFieldNames (
/* Lookup the name, it should already exist */
@@ -2924,7 +2924,7 @@ index f41990780..937c1e9f5 100644 return_ACPI_STATUS (Status); } else -@@ -811,8 +816,13 @@ AcpiDsInitFieldObjects ( +@@ -703,8 +708,13 @@ AcpiDsInitFieldObjects ( */ if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { @@ -2939,11 +2939,11 @@ index f41990780..937c1e9f5 100644 Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { -diff --git a/source/components/namespace/nsaccess.c b/source/components/namespace/nsaccess.c -index f9227ee4d..55e768698 100644 ---- a/source/components/namespace/nsaccess.c -+++ b/source/components/namespace/nsaccess.c -@@ -753,7 +753,7 @@ AcpiNsLookup ( +Index: acpica-unix2-20200925/source/components/namespace/nsaccess.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsaccess.c ++++ acpica-unix2-20200925/source/components/namespace/nsaccess.c +@@ -645,7 +645,7 @@ AcpiNsLookup (
/* Extract one ACPI name from the front of the pathname */
@@ -2952,11 +2952,11 @@ index f9227ee4d..55e768698 100644
/* Try to find the single (4 character) ACPI name */
-diff --git a/source/components/namespace/nsnames.c b/source/components/namespace/nsnames.c -index a27a87f02..16202ce32 100644 ---- a/source/components/namespace/nsnames.c -+++ b/source/components/namespace/nsnames.c -@@ -408,7 +408,7 @@ AcpiNsBuildNormalizedPath ( +Index: acpica-unix2-20200925/source/components/namespace/nsnames.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsnames.c ++++ acpica-unix2-20200925/source/components/namespace/nsnames.c +@@ -300,7 +300,7 @@ AcpiNsBuildNormalizedPath ( ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); }
@@ -2965,11 +2965,11 @@ index a27a87f02..16202ce32 100644 DoNoTrailing = NoTrailing; for (i = 0; i < 4; i++) { -diff --git a/source/components/namespace/nsparse.c b/source/components/namespace/nsparse.c -index f10db0e4d..a5cb221aa 100644 ---- a/source/components/namespace/nsparse.c -+++ b/source/components/namespace/nsparse.c -@@ -311,6 +311,7 @@ AcpiNsOneCompleteParse ( +Index: acpica-unix2-20200925/source/components/namespace/nsparse.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsparse.c ++++ acpica-unix2-20200925/source/components/namespace/nsparse.c +@@ -203,6 +203,7 @@ AcpiNsOneCompleteParse ( ACPI_WALK_STATE *WalkState; ACPI_TABLE_HEADER *Table; ACPI_OWNER_ID OwnerId; @@ -2977,7 +2977,7 @@ index f10db0e4d..a5cb221aa 100644
ACPI_FUNCTION_TRACE (NsOneCompleteParse); -@@ -324,13 +325,14 @@ AcpiNsOneCompleteParse ( +@@ -216,13 +217,14 @@ AcpiNsOneCompleteParse (
/* Table must consist of at least a complete header */
@@ -2994,11 +2994,11 @@ index f10db0e4d..a5cb221aa 100644
Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); if (ACPI_FAILURE (Status)) -diff --git a/source/components/namespace/nsutils.c b/source/components/namespace/nsutils.c -index a74dd1299..6df0d087d 100644 ---- a/source/components/namespace/nsutils.c -+++ b/source/components/namespace/nsutils.c -@@ -380,7 +380,6 @@ AcpiNsBuildInternalName ( +Index: acpica-unix2-20200925/source/components/namespace/nsutils.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsutils.c ++++ acpica-unix2-20200925/source/components/namespace/nsutils.c +@@ -272,7 +272,6 @@ AcpiNsBuildInternalName ( const char *ExternalName = Info->NextExternalChar; char *Result = NULL; UINT32 i; @@ -3006,7 +3006,7 @@ index a74dd1299..6df0d087d 100644
ACPI_FUNCTION_TRACE (NsBuildInternalName); -@@ -444,7 +443,6 @@ AcpiNsBuildInternalName ( +@@ -336,7 +335,6 @@ AcpiNsBuildInternalName (
for (; NumSegments; NumSegments--) { @@ -3014,7 +3014,7 @@ index a74dd1299..6df0d087d 100644 for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (ACPI_IS_PATH_SEPARATOR (*ExternalName) || -@@ -452,17 +450,16 @@ AcpiNsBuildInternalName ( +@@ -344,17 +342,16 @@ AcpiNsBuildInternalName ( { /* Pad the segment with underscore(s) if segment is short */
@@ -3034,6 +3034,3 @@ index a74dd1299..6df0d087d 100644
/* Now we must have a path separator, or the pathname is bad */
--- -2.26.2 - diff --git a/0041-Support-MTMR-in-a-big-endian-world.patch b/0041-Support-MTMR-in-a-big-endian-world.patch index afb4976..c1245bd 100644 --- a/0041-Support-MTMR-in-a-big-endian-world.patch +++ b/0041-Support-MTMR-in-a-big-endian-world.patch @@ -8,11 +8,11 @@ Signed-off-by: Al Stone ahs3@redhat.com source/common/dmtbdump2.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
-diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c -index 285fd30d7..7450ca3f7 100644 ---- a/source/common/dmtbdump2.c -+++ b/source/common/dmtbdump2.c -@@ -1156,11 +1156,12 @@ AcpiDmDumpMtmr ( +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1048,11 +1048,12 @@ AcpiDmDumpMtmr ( ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_MTMR); ACPI_MTMR_ENTRY *Subtable; @@ -26,7 +26,7 @@ index 285fd30d7..7450ca3f7 100644 if (ACPI_FAILURE (Status)) { return; -@@ -1169,12 +1170,12 @@ AcpiDmDumpMtmr ( +@@ -1061,12 +1062,12 @@ AcpiDmDumpMtmr ( /* Subtables */
Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset); @@ -41,6 +41,3 @@ index 285fd30d7..7450ca3f7 100644 sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); if (ACPI_FAILURE (Status)) { --- -2.26.2 - diff --git a/0042-Support-VRTC-in-a-big-endian-world.patch b/0042-Support-VRTC-in-a-big-endian-world.patch index 6bd6d62..e66d27e 100644 --- a/0042-Support-VRTC-in-a-big-endian-world.patch +++ b/0042-Support-VRTC-in-a-big-endian-world.patch @@ -7,11 +7,11 @@ Subject: [PATCH 4/5] Support VRTC in a big-endian world source/common/dmtbdump3.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
-diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c -index da9b81c92..db2f54ffb 100644 ---- a/source/common/dmtbdump3.c -+++ b/source/common/dmtbdump3.c -@@ -629,11 +629,12 @@ AcpiDmDumpVrtc ( +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -521,11 +521,12 @@ AcpiDmDumpVrtc ( ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_VRTC); ACPI_VRTC_ENTRY *Subtable; @@ -25,7 +25,7 @@ index da9b81c92..db2f54ffb 100644 if (ACPI_FAILURE (Status)) { return; -@@ -642,12 +643,12 @@ AcpiDmDumpVrtc ( +@@ -534,12 +535,12 @@ AcpiDmDumpVrtc ( /* Subtables */
Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset); @@ -40,6 +40,3 @@ index da9b81c92..db2f54ffb 100644 sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); if (ACPI_FAILURE (Status)) { --- -2.26.2 - diff --git a/0043-Support-S3PT-in-a-big-endian-world.patch b/0043-Support-S3PT-in-a-big-endian-world.patch index 3e41bfe..b8c804e 100644 --- a/0043-Support-S3PT-in-a-big-endian-world.patch +++ b/0043-Support-S3PT-in-a-big-endian-world.patch @@ -8,11 +8,11 @@ Subject: [PATCH 5/5] Support S3PT in a big-endian world source/compiler/dttable2.c | 4 +++- 2 files changed, 12 insertions(+), 7 deletions(-)
-diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c -index 7450ca3f7..ada564cd5 100644 ---- a/source/common/dmtbdump2.c -+++ b/source/common/dmtbdump2.c -@@ -1917,6 +1917,8 @@ AcpiDmDumpS3pt ( +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1809,6 +1809,8 @@ AcpiDmDumpS3pt ( ACPI_FPDT_HEADER *Subtable; ACPI_DMTABLE_INFO *InfoTable; ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables); @@ -21,7 +21,7 @@ index 7450ca3f7..ada564cd5 100644
/* Main table */ -@@ -1928,19 +1930,20 @@ AcpiDmDumpS3pt ( +@@ -1820,19 +1822,20 @@ AcpiDmDumpS3pt ( }
Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset); @@ -45,7 +45,7 @@ index 7450ca3f7..ada564cd5 100644 { case ACPI_S3PT_TYPE_RESUME:
-@@ -1955,7 +1958,7 @@ AcpiDmDumpS3pt ( +@@ -1847,7 +1850,7 @@ AcpiDmDumpS3pt ( default:
AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", @@ -54,7 +54,7 @@ index 7450ca3f7..ada564cd5 100644
/* Attempt to continue */
-@@ -1968,7 +1971,7 @@ AcpiDmDumpS3pt ( +@@ -1860,7 +1863,7 @@ AcpiDmDumpS3pt ( }
AcpiOsPrintf ("\n"); @@ -63,7 +63,7 @@ index 7450ca3f7..ada564cd5 100644 Subtable->Length, InfoTable); if (ACPI_FAILURE (Status)) { -@@ -1982,7 +1985,7 @@ NextSubtable: +@@ -1874,7 +1877,7 @@ NextSubtable: Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable, Subtable->Length); }
@@ -72,11 +72,11 @@ index 7450ca3f7..ada564cd5 100644 }
-diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c -index 48729b48f..1ac063795 100644 ---- a/source/compiler/dttable2.c -+++ b/source/compiler/dttable2.c -@@ -1296,6 +1296,7 @@ DtCompileS3pt ( +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -1188,6 +1188,7 @@ DtCompileS3pt ( DT_SUBTABLE *ParentTable; ACPI_DMTABLE_INFO *InfoTable; DT_FIELD *SubtableStart; @@ -84,7 +84,7 @@ index 48729b48f..1ac063795 100644
Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt, -@@ -1323,7 +1324,8 @@ DtCompileS3pt ( +@@ -1215,7 +1216,8 @@ DtCompileS3pt (
S3ptHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
@@ -94,6 +94,3 @@ index 48729b48f..1ac063795 100644 { case ACPI_S3PT_TYPE_RESUME:
--- -2.26.2 -
commit 6c29d6805886b3c4efc53e39596ac8496b3f4122 Author: Al Stone ahs3@redhat.com Date: Fri Oct 23 18:40:24 2020 -0600
Update some of the big-endian patches with corrections
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0039-Add-partial-big-endian-support-for-WPBT-tables.patch b/0039-Add-partial-big-endian-support-for-WPBT-tables.patch index e5192e5..071d600 100644 --- a/0039-Add-partial-big-endian-support-for-WPBT-tables.patch +++ b/0039-Add-partial-big-endian-support-for-WPBT-tables.patch @@ -1,7 +1,7 @@ From 9d7f9c8f4ecbee2e621d471a8c4944cebe62947d Mon Sep 17 00:00:00 2001 From: Al Stone ahs3@redhat.com Date: Wed, 30 Sep 2020 18:59:57 -0600 -Subject: [PATCH 39/40] Add partial big-endian support for WPBT tables +Subject: [PATCH 1/5] Add partial big-endian support for WPBT tables
There's some weirdness here that at present does not warrant further investigation; this is just a really low priority table. @@ -12,11 +12,11 @@ Signed-off-by: Al Stone ahs3@redhat.com source/compiler/dttable2.c | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-)
-Index: acpica-unix2-20200925/source/common/dmtbdump3.c -=================================================================== ---- acpica-unix2-20200925.orig/source/common/dmtbdump3.c -+++ acpica-unix2-20200925/source/common/dmtbdump3.c -@@ -628,13 +628,13 @@ AcpiDmDumpWpbt ( +diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c +index d2f2bf7b7..da9b81c92 100644 +--- a/source/common/dmtbdump3.c ++++ b/source/common/dmtbdump3.c +@@ -736,13 +736,13 @@ AcpiDmDumpWpbt ( { ACPI_STATUS Status; ACPI_TABLE_WPBT *Subtable; @@ -32,7 +32,7 @@ Index: acpica-unix2-20200925/source/common/dmtbdump3.c if (ACPI_FAILURE (Status)) { return; -@@ -643,10 +643,10 @@ AcpiDmDumpWpbt ( +@@ -751,10 +751,10 @@ AcpiDmDumpWpbt ( /* Extract the arguments buffer length from the main table */
Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table); @@ -45,11 +45,11 @@ Index: acpica-unix2-20200925/source/common/dmtbdump3.c + (void) AcpiDmDumpTable (TableLength, 0, Table, ArgumentsLength, AcpiDmTableInfoWpbt0); } -Index: acpica-unix2-20200925/source/compiler/dttable2.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/dttable2.c -+++ acpica-unix2-20200925/source/compiler/dttable2.c -@@ -2190,7 +2190,8 @@ DtCompileWpbt ( +diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c +index 584c09ee8..48729b48f 100644 +--- a/source/compiler/dttable2.c ++++ b/source/compiler/dttable2.c +@@ -2298,7 +2298,8 @@ DtCompileWpbt (
/* Extract the length of the Arguments buffer, insert into main table */
@@ -59,3 +59,6 @@ Index: acpica-unix2-20200925/source/compiler/dttable2.c Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer); Table->ArgumentsLength = Length;
+-- +2.26.2 + diff --git a/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch b/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch index b5087dc..43b4114 100644 --- a/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch +++ b/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch @@ -1,7 +1,7 @@ -From 355bbdd2ecf184e56108a2446244761895f93a62 Mon Sep 17 00:00:00 2001 +From a11c0a997dca2b40d1bcff68368d9d5d5297b781 Mon Sep 17 00:00:00 2001 From: Al Stone ahs3@redhat.com Date: Thu, 15 Oct 2020 11:35:23 -0600 -Subject: [PATCH 40/40] Support DSDT/SSDT in a big-endian world +Subject: [PATCH 2/5] Support DSDT/SSDT in a big-endian world
NB: this is a very large diff. The problem is that ResourceTemplates are treated differently during compilation and disassembly so each of @@ -15,33 +15,35 @@ Signed-off-by: Al Stone ahs3@redhat.com source/common/dmrestag.c | 2 +- source/common/dmtables.c | 17 +- source/common/dmtbdump.c | 3 +- - source/compiler/aslcodegen.c | 61 +++++-- + source/compiler/aslcodegen.c | 61 ++++-- + source/compiler/aslopcodes.c | 3 +- source/compiler/aslrestype1.c | 44 +++-- source/compiler/aslrestype1i.c | 33 ++-- - source/compiler/aslrestype2.c | 20 ++- - source/compiler/aslrestype2d.c | 99 ++++++----- - source/compiler/aslrestype2e.c | 90 ++++++---- - source/compiler/aslrestype2q.c | 81 ++++++--- - source/compiler/aslrestype2s.c | 181 ++++++++++++++++++--- - source/compiler/aslrestype2w.c | 94 ++++++----- - source/components/disassembler/dmbuffer.c | 2 +- + source/compiler/aslrestype2.c | 20 +- + source/compiler/aslrestype2d.c | 99 ++++++---- + source/compiler/aslrestype2e.c | 90 ++++++--- + source/compiler/aslrestype2q.c | 81 +++++--- + source/compiler/aslrestype2s.c | 214 +++++++++++++++++---- + source/compiler/aslrestype2w.c | 94 +++++---- + source/components/disassembler/dmbuffer.c | 10 +- source/components/disassembler/dmopcode.c | 8 +- source/components/disassembler/dmresrc.c | 2 +- source/components/disassembler/dmresrcl.c | 43 +++-- - source/components/disassembler/dmresrcl2.c | 64 +++++--- + source/components/disassembler/dmresrcl2.c | 128 +++++++----- source/components/disassembler/dmresrcs.c | 18 +- + source/components/disassembler/dmwalk.c | 2 +- source/components/dispatcher/dsfield.c | 16 +- source/components/namespace/nsaccess.c | 2 +- source/components/namespace/nsnames.c | 2 +- source/components/namespace/nsparse.c | 6 +- source/components/namespace/nsutils.c | 7 +- - 23 files changed, 613 insertions(+), 282 deletions(-) + 25 files changed, 682 insertions(+), 323 deletions(-)
-Index: acpica-unix2-20200925/source/common/dmrestag.c -=================================================================== ---- acpica-unix2-20200925.orig/source/common/dmrestag.c -+++ acpica-unix2-20200925/source/common/dmrestag.c -@@ -1038,7 +1038,7 @@ AcpiDmAddResourcesToNamespace ( +diff --git a/source/common/dmrestag.c b/source/common/dmrestag.c +index fe6e74146..eed863037 100644 +--- a/source/common/dmrestag.c ++++ b/source/common/dmrestag.c +@@ -1146,7 +1146,7 @@ AcpiDmAddResourcesToNamespace ( * NextOp contains the Aml pointer and the Aml length */ AcpiUtWalkAmlResources (NULL, (UINT8 *) NextOp->Named.Data, @@ -50,11 +52,11 @@ Index: acpica-unix2-20200925/source/common/dmrestag.c AcpiDmAddResourceToNamespace, (void **) BufferNode); }
-Index: acpica-unix2-20200925/source/common/dmtables.c -=================================================================== ---- acpica-unix2-20200925.orig/source/common/dmtables.c -+++ acpica-unix2-20200925/source/common/dmtables.c -@@ -142,6 +142,10 @@ AdCreateTableHeader ( +diff --git a/source/common/dmtables.c b/source/common/dmtables.c +index ee18d26c9..2a5551ece 100644 +--- a/source/common/dmtables.c ++++ b/source/common/dmtables.c +@@ -250,6 +250,10 @@ AdCreateTableHeader ( ACPI_TABLE_HEADER *Table) { UINT8 Checksum; @@ -65,7 +67,7 @@ Index: acpica-unix2-20200925/source/common/dmtables.c
/* Reset globals for External statements */ -@@ -156,7 +160,7 @@ AdCreateTableHeader ( +@@ -264,7 +268,7 @@ AdCreateTableHeader (
AcpiOsPrintf (" * Original Table Header:\n"); AcpiOsPrintf (" * Signature "%4.4s"\n", Table->Signature); @@ -74,7 +76,7 @@ Index: acpica-unix2-20200925/source/common/dmtables.c
/* Print and validate the revision */
-@@ -188,7 +192,7 @@ AdCreateTableHeader ( +@@ -296,7 +300,7 @@ AdCreateTableHeader (
AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum);
@@ -83,7 +85,7 @@ Index: acpica-unix2-20200925/source/common/dmtables.c if (Checksum) { AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", -@@ -198,9 +202,9 @@ AdCreateTableHeader ( +@@ -306,9 +310,9 @@ AdCreateTableHeader ( AcpiOsPrintf ("\n"); AcpiOsPrintf (" * OEM ID "%.6s"\n", Table->OemId); AcpiOsPrintf (" * OEM Table ID "%.8s"\n", Table->OemTableId); @@ -95,7 +97,7 @@ Index: acpica-unix2-20200925/source/common/dmtables.c AcpiOsPrintf (" */\n");
/* -@@ -221,7 +225,7 @@ AdCreateTableHeader ( +@@ -329,7 +333,7 @@ AdCreateTableHeader ( AcpiOsPrintf ( "DefinitionBlock ("", "%4.4s", %u, "%.6s", "%.8s", 0x%8.8X)\n", Table->Signature, Table->Revision, @@ -104,7 +106,7 @@ Index: acpica-unix2-20200925/source/common/dmtables.c }
-@@ -396,7 +400,8 @@ AdParseTable ( +@@ -504,7 +508,8 @@ AdParseTable (
fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature);
@@ -114,11 +116,11 @@ Index: acpica-unix2-20200925/source/common/dmtables.c AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER));
AcpiUtSetIntegerWidth (Table->Revision); -Index: acpica-unix2-20200925/source/common/dmtbdump.c -=================================================================== ---- acpica-unix2-20200925.orig/source/common/dmtbdump.c -+++ acpica-unix2-20200925/source/common/dmtbdump.c -@@ -333,8 +333,7 @@ AcpiDmDumpXsdt ( +diff --git a/source/common/dmtbdump.c b/source/common/dmtbdump.c +index 92d86930b..5ad20ff62 100644 +--- a/source/common/dmtbdump.c ++++ b/source/common/dmtbdump.c +@@ -441,8 +441,7 @@ AcpiDmDumpXsdt ( for (i = 0; i < Entries; i++) { AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); @@ -128,11 +130,11 @@ Index: acpica-unix2-20200925/source/common/dmtbdump.c Offset += sizeof (UINT64); } } -Index: acpica-unix2-20200925/source/compiler/aslcodegen.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslcodegen.c -+++ acpica-unix2-20200925/source/compiler/aslcodegen.c -@@ -238,6 +238,10 @@ CgWriteAmlOpcode ( +diff --git a/source/compiler/aslcodegen.c b/source/compiler/aslcodegen.c +index ba0384e84..14be9dcc2 100644 +--- a/source/compiler/aslcodegen.c ++++ b/source/compiler/aslcodegen.c +@@ -346,6 +346,10 @@ CgWriteAmlOpcode ( { UINT8 PkgLenFirstByte; UINT32 i; @@ -143,7 +145,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c union { UINT16 Opcode; UINT8 OpcodeBytes[2]; -@@ -305,25 +309,26 @@ CgWriteAmlOpcode ( +@@ -413,25 +417,26 @@ CgWriteAmlOpcode (
/* Value is the length to be encoded (Used in field definitions) */
@@ -174,7 +176,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c break; }
-@@ -335,7 +340,8 @@ CgWriteAmlOpcode ( +@@ -443,7 +448,8 @@ CgWriteAmlOpcode ( { /* Simplest case -- no bytes to follow, just write the count */
@@ -184,7 +186,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c } else if (Op->Asl.AmlPkgLenBytes != 0) { -@@ -343,9 +349,10 @@ CgWriteAmlOpcode ( +@@ -451,9 +457,10 @@ CgWriteAmlOpcode ( * Encode the "bytes to follow" in the first byte, top two bits. * The low-order nybble of the length is in the bottom 4 bits */ @@ -196,7 +198,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c
CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1);
-@@ -359,6 +366,9 @@ CgWriteAmlOpcode ( +@@ -467,6 +474,9 @@ CgWriteAmlOpcode ( * Now we can write the remaining bytes - * either 1, 2, or 3 bytes */ @@ -206,7 +208,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++) { CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1); -@@ -370,22 +380,30 @@ CgWriteAmlOpcode ( +@@ -478,22 +488,30 @@ CgWriteAmlOpcode ( { case AML_BYTE_OP:
@@ -241,7 +243,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c break;
case AML_STRING_OP: -@@ -423,6 +441,7 @@ CgWriteTableHeader ( +@@ -531,6 +549,7 @@ CgWriteTableHeader ( ACPI_PARSE_OBJECT *Child; UINT32 CommentLength; ACPI_COMMENT_NODE *Current; @@ -249,7 +251,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c
memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); -@@ -478,7 +497,9 @@ CgWriteTableHeader ( +@@ -586,7 +605,9 @@ CgWriteTableHeader ( /* OEM Revision */
Child = Child->Asl.Next; @@ -260,7 +262,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c
/* Compiler ID */
-@@ -486,7 +507,8 @@ CgWriteTableHeader ( +@@ -594,7 +615,8 @@ CgWriteTableHeader (
/* Compiler version */
@@ -270,7 +272,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c
/* Table length. Checksum zero for now, will rewrite later */
-@@ -541,6 +563,15 @@ CgWriteTableHeader ( +@@ -649,6 +671,15 @@ CgWriteTableHeader ( AslGbl_TableHeader.Checksum = 0; Op->Asl.FinalAmlOffset = ftell (AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle);
@@ -286,7 +288,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c /* Write entire header and clear the table header global */
CgLocalWriteAmlData (Op, &AslGbl_TableHeader, sizeof (ACPI_TABLE_HEADER)); -@@ -625,6 +656,7 @@ CgWriteNode ( +@@ -733,6 +764,7 @@ CgWriteNode ( ACPI_PARSE_OBJECT *Op) { ASL_RESOURCE_NODE *Rnode; @@ -294,7 +296,7 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c
/* Write all comments here. */ -@@ -653,7 +685,10 @@ CgWriteNode ( +@@ -761,7 +793,10 @@ CgWriteNode ( case AML_RAW_DATA_DWORD: case AML_RAW_DATA_QWORD:
@@ -306,11 +308,25 @@ Index: acpica-unix2-20200925/source/compiler/aslcodegen.c return;
-Index: acpica-unix2-20200925/source/compiler/aslrestype1.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype1.c -+++ acpica-unix2-20200925/source/compiler/aslrestype1.c -@@ -143,6 +143,7 @@ RsDoMemory24Descriptor ( +diff --git a/source/compiler/aslopcodes.c b/source/compiler/aslopcodes.c +index b2a023650..afc9004af 100644 +--- a/source/compiler/aslopcodes.c ++++ b/source/compiler/aslopcodes.c +@@ -619,7 +619,8 @@ OpcDoUnicode ( + + for (i = 0; i < Count; i++) + { +- UnicodeString[i] = (UINT16) AsciiString[i]; ++ AcpiUtWriteUint(&UnicodeString[i], sizeof(UINT16), ++ &AsciiString[i], sizeof(UINT8)); + } + + /* +diff --git a/source/compiler/aslrestype1.c b/source/compiler/aslrestype1.c +index 4dff4607d..e7639c0bb 100644 +--- a/source/compiler/aslrestype1.c ++++ b/source/compiler/aslrestype1.c +@@ -251,6 +251,7 @@ RsDoMemory24Descriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -318,7 +334,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -151,7 +152,8 @@ RsDoMemory24Descriptor ( +@@ -259,7 +260,8 @@ RsDoMemory24Descriptor (
Descriptor = Rnode->Buffer; Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24; @@ -328,7 +344,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c
/* Process all child initialization nodes */
-@@ -168,7 +170,8 @@ RsDoMemory24Descriptor ( +@@ -276,7 +278,8 @@ RsDoMemory24Descriptor (
case 1: /* Min Address */
@@ -338,7 +354,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum)); MinOp = InitializerOp; -@@ -176,7 +179,8 @@ RsDoMemory24Descriptor ( +@@ -284,7 +287,8 @@ RsDoMemory24Descriptor (
case 2: /* Max Address */
@@ -348,7 +364,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum)); MaxOp = InitializerOp; -@@ -184,14 +188,16 @@ RsDoMemory24Descriptor ( +@@ -292,14 +296,16 @@ RsDoMemory24Descriptor (
case 3: /* Alignment */
@@ -367,7 +383,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength)); LengthOp = InitializerOp; -@@ -249,6 +255,8 @@ RsDoMemory32Descriptor ( +@@ -357,6 +363,8 @@ RsDoMemory32Descriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -376,7 +392,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -257,7 +265,8 @@ RsDoMemory32Descriptor ( +@@ -365,7 +373,8 @@ RsDoMemory32Descriptor (
Descriptor = Rnode->Buffer; Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32; @@ -386,7 +402,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c
/* Process all child initialization nodes */
-@@ -274,7 +283,8 @@ RsDoMemory32Descriptor ( +@@ -382,7 +391,8 @@ RsDoMemory32Descriptor (
case 1: /* Min Address */
@@ -396,7 +412,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum)); MinOp = InitializerOp; -@@ -282,7 +292,8 @@ RsDoMemory32Descriptor ( +@@ -390,7 +400,8 @@ RsDoMemory32Descriptor (
case 2: /* Max Address */
@@ -406,7 +422,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum)); MaxOp = InitializerOp; -@@ -290,7 +301,8 @@ RsDoMemory32Descriptor ( +@@ -398,7 +409,8 @@ RsDoMemory32Descriptor (
case 3: /* Alignment */
@@ -416,7 +432,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment)); AlignOp = InitializerOp; -@@ -298,7 +310,8 @@ RsDoMemory32Descriptor ( +@@ -406,7 +418,8 @@ RsDoMemory32Descriptor (
case 4: /* Length */
@@ -426,7 +442,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength)); LengthOp = InitializerOp; -@@ -352,6 +365,8 @@ RsDoMemory32FixedDescriptor ( +@@ -460,6 +473,8 @@ RsDoMemory32FixedDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -435,7 +451,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -360,7 +375,8 @@ RsDoMemory32FixedDescriptor ( +@@ -468,7 +483,8 @@ RsDoMemory32FixedDescriptor (
Descriptor = Rnode->Buffer; Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32; @@ -445,7 +461,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c
/* Process all child initialization nodes */
-@@ -377,14 +393,16 @@ RsDoMemory32FixedDescriptor ( +@@ -485,14 +501,16 @@ RsDoMemory32FixedDescriptor (
case 1: /* Address */
@@ -464,11 +480,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength)); break; -Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype1i.c -+++ acpica-unix2-20200925/source/compiler/aslrestype1i.c -@@ -199,6 +199,7 @@ RsDoFixedDmaDescriptor ( +diff --git a/source/compiler/aslrestype1i.c b/source/compiler/aslrestype1i.c +index 9e9bc2096..532553c4b 100644 +--- a/source/compiler/aslrestype1i.c ++++ b/source/compiler/aslrestype1i.c +@@ -307,6 +307,7 @@ RsDoFixedDmaDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -476,7 +492,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -217,14 +218,16 @@ RsDoFixedDmaDescriptor ( +@@ -325,14 +326,16 @@ RsDoFixedDmaDescriptor ( { case 0: /* DMA Request Lines [WORD] (_DMA) */
@@ -495,7 +511,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels)); break; -@@ -275,6 +278,7 @@ RsDoFixedIoDescriptor ( +@@ -383,6 +386,7 @@ RsDoFixedIoDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -503,7 +519,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -293,8 +297,8 @@ RsDoFixedIoDescriptor ( +@@ -401,8 +405,8 @@ RsDoFixedIoDescriptor ( { case 0: /* Base Address */
@@ -514,7 +530,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address)); AddressOp = InitializerOp; -@@ -358,6 +362,7 @@ RsDoIoDescriptor ( +@@ -466,6 +470,7 @@ RsDoIoDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -522,7 +538,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -383,8 +388,8 @@ RsDoIoDescriptor ( +@@ -491,8 +496,8 @@ RsDoIoDescriptor (
case 1: /* Min Address */
@@ -533,7 +549,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum)); MinOp = InitializerOp; -@@ -392,8 +397,8 @@ RsDoIoDescriptor ( +@@ -500,8 +505,8 @@ RsDoIoDescriptor (
case 2: /* Max Address */
@@ -544,7 +560,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum)); MaxOp = InitializerOp; -@@ -434,10 +439,10 @@ RsDoIoDescriptor ( +@@ -542,10 +547,10 @@ RsDoIoDescriptor ( /* Validate the Min/Max/Len/Align values */
RsSmallAddressCheck (ACPI_RESOURCE_NAME_IO, @@ -559,7 +575,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp);
return (Rnode); -@@ -561,7 +566,7 @@ RsDoIrqDescriptor ( +@@ -669,7 +674,7 @@ RsDoIrqDescriptor (
/* Now we can set the channel mask */
@@ -568,7 +584,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c return (Rnode); }
-@@ -660,6 +665,6 @@ RsDoIrqNoFlagsDescriptor ( +@@ -768,6 +773,6 @@ RsDoIrqNoFlagsDescriptor (
/* Now we can set the interrupt mask */
@@ -576,11 +592,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c + Descriptor->Irq.IrqMask = AcpiUtReadUint16(&IrqMask); return (Rnode); } -Index: acpica-unix2-20200925/source/compiler/aslrestype2.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype2.c -+++ acpica-unix2-20200925/source/compiler/aslrestype2.c -@@ -77,6 +77,8 @@ RsDoGeneralRegisterDescriptor ( +diff --git a/source/compiler/aslrestype2.c b/source/compiler/aslrestype2.c +index 93236853a..13d0476e7 100644 +--- a/source/compiler/aslrestype2.c ++++ b/source/compiler/aslrestype2.c +@@ -185,6 +185,8 @@ RsDoGeneralRegisterDescriptor ( ASL_RESOURCE_NODE *Rnode; UINT32 CurrentByteOffset; UINT32 i; @@ -589,7 +605,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -85,7 +87,8 @@ RsDoGeneralRegisterDescriptor ( +@@ -193,7 +195,8 @@ RsDoGeneralRegisterDescriptor (
Descriptor = Rnode->Buffer; Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER; @@ -599,7 +615,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c
/* Process all child initialization nodes */
-@@ -116,7 +119,8 @@ RsDoGeneralRegisterDescriptor ( +@@ -224,7 +227,8 @@ RsDoGeneralRegisterDescriptor (
case 3: /* Register Address */
@@ -609,7 +625,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address)); break; -@@ -184,6 +188,8 @@ RsDoInterruptDescriptor ( +@@ -292,6 +296,8 @@ RsDoInterruptDescriptor ( BOOLEAN HasResSourceIndex = FALSE; UINT8 ResSourceIndex = 0; UINT8 *ResSourceString = NULL; @@ -618,7 +634,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -225,7 +231,7 @@ RsDoInterruptDescriptor ( +@@ -333,7 +339,7 @@ RsDoInterruptDescriptor ( * Initial descriptor length -- may be enlarged if there are * optional fields present */ @@ -627,7 +643,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c Descriptor->ExtendedIrq.InterruptCount = 0;
Rover = ACPI_CAST_PTR (AML_RESOURCE, -@@ -333,7 +339,8 @@ RsDoInterruptDescriptor ( +@@ -441,7 +447,8 @@ RsDoInterruptDescriptor (
/* Save the integer and move pointer to the next one */
@@ -637,7 +653,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4); Descriptor->ExtendedIrq.InterruptCount++; Descriptor->ExtendedIrq.ResourceLength += 4; -@@ -384,6 +391,8 @@ RsDoInterruptDescriptor ( +@@ -492,6 +499,8 @@ RsDoInterruptDescriptor ( Descriptor->ExtendedIrq.ResourceLength = (UINT16) (Descriptor->ExtendedIrq.ResourceLength + StringLength); } @@ -646,7 +662,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c
Rnode->BufferLength = (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) - -@@ -436,7 +445,8 @@ RsDoVendorLargeDescriptor ( +@@ -544,7 +553,8 @@ RsDoVendorLargeDescriptor (
Descriptor = Rnode->Buffer; Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE; @@ -656,11 +672,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2.c
/* Point to end-of-descriptor for vendor data */
-Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype2d.c -+++ acpica-unix2-20200925/source/compiler/aslrestype2d.c -@@ -84,6 +84,8 @@ RsDoDwordIoDescriptor ( +diff --git a/source/compiler/aslrestype2d.c b/source/compiler/aslrestype2d.c +index 394530ae3..fd9dc91de 100644 +--- a/source/compiler/aslrestype2d.c ++++ b/source/compiler/aslrestype2d.c +@@ -192,6 +192,8 @@ RsDoDwordIoDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -669,7 +685,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -147,8 +149,8 @@ RsDoDwordIoDescriptor ( +@@ -255,8 +257,8 @@ RsDoDwordIoDescriptor (
case 5: /* Address Granularity */
@@ -680,7 +696,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; -@@ -156,8 +158,8 @@ RsDoDwordIoDescriptor ( +@@ -264,8 +266,8 @@ RsDoDwordIoDescriptor (
case 6: /* Address Min */
@@ -691,7 +707,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; -@@ -165,8 +167,8 @@ RsDoDwordIoDescriptor ( +@@ -273,8 +275,8 @@ RsDoDwordIoDescriptor (
case 7: /* Address Max */
@@ -702,7 +718,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; -@@ -174,16 +176,16 @@ RsDoDwordIoDescriptor ( +@@ -282,16 +284,16 @@ RsDoDwordIoDescriptor (
case 8: /* Translation Offset */
@@ -723,7 +739,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; -@@ -271,11 +273,14 @@ RsDoDwordIoDescriptor ( +@@ -379,11 +381,14 @@ RsDoDwordIoDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -742,7 +758,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -314,6 +319,8 @@ RsDoDwordMemoryDescriptor ( +@@ -422,6 +427,8 @@ RsDoDwordMemoryDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -751,7 +767,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -385,8 +392,8 @@ RsDoDwordMemoryDescriptor ( +@@ -493,8 +500,8 @@ RsDoDwordMemoryDescriptor (
case 6: /* Address Granularity */
@@ -762,7 +778,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; -@@ -394,8 +401,8 @@ RsDoDwordMemoryDescriptor ( +@@ -502,8 +509,8 @@ RsDoDwordMemoryDescriptor (
case 7: /* Min Address */
@@ -773,7 +789,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; -@@ -403,8 +410,8 @@ RsDoDwordMemoryDescriptor ( +@@ -511,8 +518,8 @@ RsDoDwordMemoryDescriptor (
case 8: /* Max Address */
@@ -784,7 +800,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; -@@ -412,16 +419,16 @@ RsDoDwordMemoryDescriptor ( +@@ -520,16 +527,16 @@ RsDoDwordMemoryDescriptor (
case 9: /* Translation Offset */
@@ -805,7 +821,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; -@@ -506,11 +513,14 @@ RsDoDwordMemoryDescriptor ( +@@ -614,11 +621,14 @@ RsDoDwordMemoryDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -824,7 +840,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -549,6 +559,8 @@ RsDoDwordSpaceDescriptor ( +@@ -657,6 +667,8 @@ RsDoDwordSpaceDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -833,7 +849,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -616,8 +628,8 @@ RsDoDwordSpaceDescriptor ( +@@ -724,8 +736,8 @@ RsDoDwordSpaceDescriptor (
case 6: /* Address Granularity */
@@ -844,7 +860,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; -@@ -625,8 +637,8 @@ RsDoDwordSpaceDescriptor ( +@@ -733,8 +745,8 @@ RsDoDwordSpaceDescriptor (
case 7: /* Min Address */
@@ -855,7 +871,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; -@@ -634,8 +646,8 @@ RsDoDwordSpaceDescriptor ( +@@ -742,8 +754,8 @@ RsDoDwordSpaceDescriptor (
case 8: /* Max Address */
@@ -866,7 +882,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; -@@ -643,16 +655,16 @@ RsDoDwordSpaceDescriptor ( +@@ -751,16 +763,16 @@ RsDoDwordSpaceDescriptor (
case 9: /* Translation Offset */
@@ -887,7 +903,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; -@@ -723,11 +735,14 @@ RsDoDwordSpaceDescriptor ( +@@ -831,11 +843,14 @@ RsDoDwordSpaceDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -906,11 +922,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype2e.c -+++ acpica-unix2-20200925/source/compiler/aslrestype2e.c -@@ -80,6 +80,7 @@ RsDoExtendedIoDescriptor ( +diff --git a/source/compiler/aslrestype2e.c b/source/compiler/aslrestype2e.c +index b188994d3..ad61efc77 100644 +--- a/source/compiler/aslrestype2e.c ++++ b/source/compiler/aslrestype2e.c +@@ -188,6 +188,7 @@ RsDoExtendedIoDescriptor ( UINT16 StringLength = 0; UINT32 CurrentByteOffset; UINT32 i; @@ -918,7 +934,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -139,7 +140,8 @@ RsDoExtendedIoDescriptor ( +@@ -247,7 +248,8 @@ RsDoExtendedIoDescriptor (
case 5: /* Address Granularity */
@@ -928,7 +944,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; -@@ -147,7 +149,8 @@ RsDoExtendedIoDescriptor ( +@@ -255,7 +257,8 @@ RsDoExtendedIoDescriptor (
case 6: /* Address Min */
@@ -938,7 +954,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; -@@ -155,7 +158,8 @@ RsDoExtendedIoDescriptor ( +@@ -263,7 +266,8 @@ RsDoExtendedIoDescriptor (
case 7: /* Address Max */
@@ -948,7 +964,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; -@@ -163,14 +167,16 @@ RsDoExtendedIoDescriptor ( +@@ -271,14 +275,16 @@ RsDoExtendedIoDescriptor (
case 8: /* Translation Offset */
@@ -967,7 +983,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; -@@ -178,7 +184,8 @@ RsDoExtendedIoDescriptor ( +@@ -286,7 +292,8 @@ RsDoExtendedIoDescriptor (
case 10: /* Type-Specific Attributes */
@@ -977,7 +993,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; -@@ -213,11 +220,14 @@ RsDoExtendedIoDescriptor ( +@@ -321,11 +328,14 @@ RsDoExtendedIoDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -996,7 +1012,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -253,6 +263,7 @@ RsDoExtendedMemoryDescriptor ( +@@ -361,6 +371,7 @@ RsDoExtendedMemoryDescriptor ( UINT16 StringLength = 0; UINT32 CurrentByteOffset; UINT32 i; @@ -1004,7 +1020,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -319,7 +330,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -427,7 +438,8 @@ RsDoExtendedMemoryDescriptor (
case 6: /* Address Granularity */
@@ -1014,7 +1030,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; -@@ -327,7 +339,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -435,7 +447,8 @@ RsDoExtendedMemoryDescriptor (
case 7: /* Min Address */
@@ -1024,7 +1040,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; -@@ -335,7 +348,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -443,7 +456,8 @@ RsDoExtendedMemoryDescriptor (
case 8: /* Max Address */
@@ -1034,7 +1050,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; -@@ -343,14 +357,16 @@ RsDoExtendedMemoryDescriptor ( +@@ -451,14 +465,16 @@ RsDoExtendedMemoryDescriptor (
case 9: /* Translation Offset */
@@ -1053,7 +1069,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; -@@ -358,7 +374,8 @@ RsDoExtendedMemoryDescriptor ( +@@ -466,7 +482,8 @@ RsDoExtendedMemoryDescriptor (
case 11: /* Type-Specific Attributes */
@@ -1063,7 +1079,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; -@@ -394,11 +411,14 @@ RsDoExtendedMemoryDescriptor ( +@@ -502,11 +519,14 @@ RsDoExtendedMemoryDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1082,7 +1098,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -434,6 +454,7 @@ RsDoExtendedSpaceDescriptor ( +@@ -542,6 +562,7 @@ RsDoExtendedSpaceDescriptor ( UINT16 StringLength = 0; UINT32 CurrentByteOffset; UINT32 i; @@ -1090,7 +1106,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -497,7 +518,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -605,7 +626,8 @@ RsDoExtendedSpaceDescriptor (
case 6: /* Address Granularity */
@@ -1100,7 +1116,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; -@@ -505,7 +527,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -613,7 +635,8 @@ RsDoExtendedSpaceDescriptor (
case 7: /* Min Address */
@@ -1110,7 +1126,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; -@@ -513,7 +536,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -621,7 +644,8 @@ RsDoExtendedSpaceDescriptor (
case 8: /* Max Address */
@@ -1120,7 +1136,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; -@@ -521,14 +545,16 @@ RsDoExtendedSpaceDescriptor ( +@@ -629,14 +653,16 @@ RsDoExtendedSpaceDescriptor (
case 9: /* Translation Offset */
@@ -1139,7 +1155,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; -@@ -536,7 +562,8 @@ RsDoExtendedSpaceDescriptor ( +@@ -644,7 +670,8 @@ RsDoExtendedSpaceDescriptor (
case 11: /* Type-Specific Attributes */
@@ -1149,7 +1165,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; -@@ -557,11 +584,14 @@ RsDoExtendedSpaceDescriptor ( +@@ -665,11 +692,14 @@ RsDoExtendedSpaceDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1168,11 +1184,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype2q.c -+++ acpica-unix2-20200925/source/compiler/aslrestype2q.c -@@ -84,6 +84,7 @@ RsDoQwordIoDescriptor ( +diff --git a/source/compiler/aslrestype2q.c b/source/compiler/aslrestype2q.c +index 02db0ab34..7706b07ac 100644 +--- a/source/compiler/aslrestype2q.c ++++ b/source/compiler/aslrestype2q.c +@@ -192,6 +192,7 @@ RsDoQwordIoDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1180,7 +1196,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -147,7 +148,8 @@ RsDoQwordIoDescriptor ( +@@ -255,7 +256,8 @@ RsDoQwordIoDescriptor (
case 5: /* Address Granularity */
@@ -1190,7 +1206,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; -@@ -155,7 +157,8 @@ RsDoQwordIoDescriptor ( +@@ -263,7 +265,8 @@ RsDoQwordIoDescriptor (
case 6: /* Address Min */
@@ -1200,7 +1216,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; -@@ -163,7 +166,8 @@ RsDoQwordIoDescriptor ( +@@ -271,7 +274,8 @@ RsDoQwordIoDescriptor (
case 7: /* Address Max */
@@ -1210,7 +1226,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; -@@ -171,14 +175,16 @@ RsDoQwordIoDescriptor ( +@@ -279,14 +283,16 @@ RsDoQwordIoDescriptor (
case 8: /* Translation Offset */
@@ -1229,7 +1245,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; -@@ -262,11 +268,14 @@ RsDoQwordIoDescriptor ( +@@ -370,11 +376,14 @@ RsDoQwordIoDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1248,7 +1264,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -305,6 +314,7 @@ RsDoQwordMemoryDescriptor ( +@@ -413,6 +422,7 @@ RsDoQwordMemoryDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1256,7 +1272,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -375,7 +385,8 @@ RsDoQwordMemoryDescriptor ( +@@ -483,7 +493,8 @@ RsDoQwordMemoryDescriptor (
case 6: /* Address Granularity */
@@ -1266,7 +1282,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; -@@ -383,7 +394,8 @@ RsDoQwordMemoryDescriptor ( +@@ -491,7 +502,8 @@ RsDoQwordMemoryDescriptor (
case 7: /* Min Address */
@@ -1276,7 +1292,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; -@@ -391,7 +403,8 @@ RsDoQwordMemoryDescriptor ( +@@ -499,7 +511,8 @@ RsDoQwordMemoryDescriptor (
case 8: /* Max Address */
@@ -1286,7 +1302,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; -@@ -399,14 +412,16 @@ RsDoQwordMemoryDescriptor ( +@@ -507,14 +520,16 @@ RsDoQwordMemoryDescriptor (
case 9: /* Translation Offset */
@@ -1305,7 +1321,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; -@@ -491,11 +506,14 @@ RsDoQwordMemoryDescriptor ( +@@ -599,11 +614,14 @@ RsDoQwordMemoryDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1324,7 +1340,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-@@ -534,6 +552,7 @@ RsDoQwordSpaceDescriptor ( +@@ -642,6 +660,7 @@ RsDoQwordSpaceDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1332,7 +1348,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -601,7 +620,8 @@ RsDoQwordSpaceDescriptor ( +@@ -709,7 +728,8 @@ RsDoQwordSpaceDescriptor (
case 6: /* Address Granularity */
@@ -1342,7 +1358,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; -@@ -609,7 +629,8 @@ RsDoQwordSpaceDescriptor ( +@@ -717,7 +737,8 @@ RsDoQwordSpaceDescriptor (
case 7: /* Min Address */
@@ -1352,7 +1368,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; -@@ -617,7 +638,8 @@ RsDoQwordSpaceDescriptor ( +@@ -725,7 +746,8 @@ RsDoQwordSpaceDescriptor (
case 8: /* Max Address */
@@ -1362,7 +1378,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; -@@ -625,14 +647,16 @@ RsDoQwordSpaceDescriptor ( +@@ -733,14 +755,16 @@ RsDoQwordSpaceDescriptor (
case 9: /* Translation Offset */
@@ -1381,7 +1397,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; -@@ -702,11 +726,14 @@ RsDoQwordSpaceDescriptor ( +@@ -810,11 +834,14 @@ RsDoQwordSpaceDescriptor (
/* Validate the Min/Max/Len/Gran values */
@@ -1400,11 +1416,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp);
-Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype2s.c -+++ acpica-unix2-20200925/source/compiler/aslrestype2s.c -@@ -343,6 +343,7 @@ RsDoGpioIntDescriptor ( +diff --git a/source/compiler/aslrestype2s.c b/source/compiler/aslrestype2s.c +index c075c89c9..7aa23a35b 100644 +--- a/source/compiler/aslrestype2s.c ++++ b/source/compiler/aslrestype2s.c +@@ -451,6 +451,7 @@ RsDoGpioIntDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1412,7 +1428,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -485,7 +486,8 @@ RsDoGpioIntDescriptor ( +@@ -593,7 +594,8 @@ RsDoGpioIntDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1422,7 +1438,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c InterruptList++; PinCount++;
-@@ -518,6 +520,27 @@ RsDoGpioIntDescriptor ( +@@ -626,6 +628,27 @@ RsDoGpioIntDescriptor (
MpSaveGpioInfo (Info->MappingOp, Descriptor, PinCount, PinList, ResourceSource); @@ -1450,7 +1466,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c return (Rnode); }
-@@ -552,6 +575,7 @@ RsDoGpioIoDescriptor ( +@@ -660,6 +683,7 @@ RsDoGpioIoDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1458,7 +1474,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -691,7 +715,8 @@ RsDoGpioIoDescriptor ( +@@ -799,7 +823,8 @@ RsDoGpioIoDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1468,7 +1484,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c InterruptList++; PinCount++;
-@@ -724,6 +749,27 @@ RsDoGpioIoDescriptor ( +@@ -832,6 +857,27 @@ RsDoGpioIoDescriptor (
MpSaveGpioInfo (Info->MappingOp, Descriptor, PinCount, PinList, ResourceSource); @@ -1496,7 +1512,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c return (Rnode); }
-@@ -754,6 +800,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -862,6 +908,8 @@ RsDoI2cSerialBusDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1505,7 +1521,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -781,7 +829,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -889,7 +937,8 @@ RsDoI2cSerialBusDescriptor ( Descriptor->I2cSerialBus.RevisionId = AML_RESOURCE_I2C_REVISION; Descriptor->I2cSerialBus.TypeRevisionId = AML_RESOURCE_I2C_TYPE_REVISION; Descriptor->I2cSerialBus.Type = AML_RESOURCE_I2C_SERIALBUSTYPE; @@ -1515,7 +1531,14 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_I2C_SERIALBUS_V2) { -@@ -801,7 +850,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -903,13 +952,15 @@ RsDoI2cSerialBusDescriptor ( + + /* Process all child initialization nodes */ + ++ Descriptor->I2cSerialBus.TypeSpecificFlags = 0; + for (i = 0; InitializerOp; i++) + { + switch (i) { case 0: /* Slave Address [WORD] (_ADR) */
@@ -1525,7 +1548,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress)); break; -@@ -815,7 +865,8 @@ RsDoI2cSerialBusDescriptor ( +@@ -923,16 +974,19 @@ RsDoI2cSerialBusDescriptor (
case 2: /* Connection Speed [DWORD] (_SPE) */
@@ -1535,7 +1558,28 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.ConnectionSpeed)); break; -@@ -913,6 +964,8 @@ RsDoSpiSerialBusDescriptor ( + + case 3: /* Addressing Mode [Flag] (_MOD) */ + +- RsSetFlagBits16 (&Descriptor->I2cSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->I2cSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 0, 0); + RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, + CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.TypeSpecificFlags), 0); ++ Descriptor->I2cSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16); + break; + + case 4: /* ResSource [Optional Field - STRING] */ +@@ -990,6 +1044,8 @@ RsDoI2cSerialBusDescriptor ( + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + ++ Tmp16 = Descriptor->I2cSerialBus.ResourceLength; ++ Descriptor->I2cSerialBus.ResourceLength = AcpiUtReadUint16(&Tmp16); + MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource); + return (Rnode); + } +@@ -1021,6 +1077,8 @@ RsDoSpiSerialBusDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1544,7 +1588,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -935,12 +988,13 @@ RsDoSpiSerialBusDescriptor ( +@@ -1043,12 +1101,13 @@ RsDoSpiSerialBusDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1560,7 +1604,14 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_SPI_SERIALBUS_V2) { -@@ -961,7 +1015,8 @@ RsDoSpiSerialBusDescriptor ( +@@ -1063,29 +1122,35 @@ RsDoSpiSerialBusDescriptor ( + + /* Process all child initialization nodes */ + ++ Descriptor->SpiSerialBus.TypeSpecificFlags = 0; + for (i = 0; InitializerOp; i++) + { + switch (i) { case 0: /* Device Selection [WORD] (_ADR) */
@@ -1570,7 +1621,29 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.DeviceSelection)); break; -@@ -996,7 +1051,8 @@ RsDoSpiSerialBusDescriptor ( + + case 1: /* Device Polarity [Flag] (_DPL) */ + +- RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 1, 0); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->SpiSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 1, 0); + RsCreateBitField (InitializerOp, ACPI_RESTAG_DEVICEPOLARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 1); ++ Descriptor->SpiSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16); + break; + + case 2: /* Wire Mode [Flag] (_MOD) */ + +- RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->SpiSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 0, 0); + RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, + CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 0); ++ Descriptor->SpiSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16); + break; + + case 3: /* Device Bit Length [BYTE] (_LEN) */ +@@ -1104,7 +1169,8 @@ RsDoSpiSerialBusDescriptor (
case 5: /* Connection Speed [DWORD] (_SPE) */
@@ -1580,7 +1653,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed)); break; -@@ -1101,6 +1157,8 @@ RsDoUartSerialBusDescriptor ( +@@ -1209,6 +1275,8 @@ RsDoUartSerialBusDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1589,7 +1662,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -1123,12 +1181,13 @@ RsDoUartSerialBusDescriptor ( +@@ -1231,12 +1299,13 @@ RsDoUartSerialBusDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1605,7 +1678,14 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_UART_SERIALBUS_V2) { -@@ -1148,7 +1207,8 @@ RsDoUartSerialBusDescriptor ( +@@ -1250,29 +1319,35 @@ RsDoUartSerialBusDescriptor ( + + /* Process all child initialization nodes */ + ++ Descriptor->UartSerialBus.TypeSpecificFlags = 0; + for (i = 0; InitializerOp; i++) + { + switch (i) { case 0: /* Connection Speed (Baud Rate) [DWORD] (_SPE) */
@@ -1615,7 +1695,52 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.DefaultBaudRate)); break; -@@ -1197,14 +1257,16 @@ RsDoUartSerialBusDescriptor ( + + case 1: /* Bits Per Byte [Flags] (_LEN) */ + +- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 4, 3); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->UartSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 4, 3); + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 4, 3); ++ Descriptor->UartSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16);; + break; + + case 2: /* Stop Bits [Flags] (_STB) */ + +- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 2, 1); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->UartSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 2, 1); + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_STOPBITS, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 2, 2); ++ Descriptor->UartSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16);; + break; + + case 3: /* Lines In Use [BYTE] (_LIN) */ +@@ -1284,9 +1359,11 @@ RsDoUartSerialBusDescriptor ( + + case 4: /* Endianness [Flag] (_END) */ + +- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 7, 0); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->UartSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 7, 0); + RsCreateBitField (InitializerOp, ACPI_RESTAG_ENDIANNESS, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 7); ++ Descriptor->UartSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16);; + break; + + case 5: /* Parity [BYTE] (_PAR) */ +@@ -1298,21 +1375,25 @@ RsDoUartSerialBusDescriptor ( + + case 6: /* Flow Control [Flags] (_FLC) */ + +- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); ++ Tmp16 = AcpiUtReadUint16(&Descriptor->UartSerialBus.TypeSpecificFlags); ++ RsSetFlagBits16 (&Tmp16, InitializerOp, 0, 0); + RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_FLOWCONTROL, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 0, 2); ++ Descriptor->UartSerialBus.TypeSpecificFlags = AcpiUtReadUint16(&Tmp16);; + break;
case 7: /* Rx Buffer Size [WORD] (_RXL) */
@@ -1634,7 +1759,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize)); break; -@@ -1308,6 +1370,7 @@ RsDoPinFunctionDescriptor ( +@@ -1416,6 +1497,7 @@ RsDoPinFunctionDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1642,7 +1767,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1331,7 +1394,7 @@ RsDoPinFunctionDescriptor ( +@@ -1439,7 +1521,7 @@ RsDoPinFunctionDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1651,7 +1776,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c Descriptor->PinFunction.DescriptorType = ACPI_RESOURCE_NAME_PIN_FUNCTION; Descriptor->PinFunction.RevisionId = AML_RESOURCE_PIN_FUNCTION_REVISION;
-@@ -1371,7 +1434,8 @@ RsDoPinFunctionDescriptor ( +@@ -1479,7 +1561,8 @@ RsDoPinFunctionDescriptor (
case 2: /* Function Number [WORD] (_FUN) */
@@ -1661,7 +1786,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_FUNCTION, CurrentByteOffset + ASL_RESDESC_OFFSET (PinFunction.FunctionNumber)); break; -@@ -1419,6 +1483,12 @@ RsDoPinFunctionDescriptor ( +@@ -1527,6 +1610,12 @@ RsDoPinFunctionDescriptor ( { Descriptor->PinFunction.VendorLength = VendorLength; } @@ -1674,7 +1799,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c break;
default: -@@ -1430,7 +1500,8 @@ RsDoPinFunctionDescriptor ( +@@ -1538,7 +1627,8 @@ RsDoPinFunctionDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1684,7 +1809,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c PinList++; PinCount++;
-@@ -1461,6 +1532,13 @@ RsDoPinFunctionDescriptor ( +@@ -1569,6 +1659,13 @@ RsDoPinFunctionDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1698,7 +1823,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c return (Rnode); }
-@@ -1494,6 +1572,8 @@ RsDoPinConfigDescriptor ( +@@ -1602,6 +1699,8 @@ RsDoPinConfigDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1707,7 +1832,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1517,7 +1597,7 @@ RsDoPinConfigDescriptor ( +@@ -1625,7 +1724,7 @@ RsDoPinConfigDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1716,7 +1841,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c Descriptor->PinConfig.DescriptorType = ACPI_RESOURCE_NAME_PIN_CONFIG; Descriptor->PinConfig.RevisionId = AML_RESOURCE_PIN_CONFIG_REVISION;
-@@ -1571,7 +1651,8 @@ RsDoPinConfigDescriptor ( +@@ -1679,7 +1778,8 @@ RsDoPinConfigDescriptor (
case 2: /* Pin Config Value [DWORD] (_VAL) */
@@ -1726,7 +1851,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_PINCONFIG_VALUE, CurrentByteOffset + ASL_RESDESC_OFFSET (PinConfig.PinConfigValue)); break; -@@ -1630,7 +1711,8 @@ RsDoPinConfigDescriptor ( +@@ -1738,7 +1838,8 @@ RsDoPinConfigDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1736,7 +1861,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c PinList++; PinCount++;
-@@ -1661,6 +1743,16 @@ RsDoPinConfigDescriptor ( +@@ -1769,6 +1870,16 @@ RsDoPinConfigDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1753,7 +1878,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c return (Rnode); }
-@@ -1694,6 +1786,7 @@ RsDoPinGroupDescriptor ( +@@ -1802,6 +1913,7 @@ RsDoPinGroupDescriptor ( UINT32 CurrentByteOffset; UINT32 PinCount = 0; UINT32 i; @@ -1761,7 +1886,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1717,7 +1810,7 @@ RsDoPinGroupDescriptor ( +@@ -1825,7 +1937,7 @@ RsDoPinGroupDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1770,7 +1895,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c Descriptor->PinGroup.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP; Descriptor->PinGroup.RevisionId = AML_RESOURCE_PIN_GROUP_REVISION;
-@@ -1784,7 +1877,8 @@ RsDoPinGroupDescriptor ( +@@ -1892,7 +2004,8 @@ RsDoPinGroupDescriptor ( * (implies resource source must immediately follow the pin list.) * Name: _PIN */ @@ -1780,7 +1905,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c PinList++; PinCount++;
-@@ -1815,6 +1909,16 @@ RsDoPinGroupDescriptor ( +@@ -1923,6 +2036,16 @@ RsDoPinGroupDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1797,7 +1922,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c return (Rnode); }
-@@ -1847,6 +1951,7 @@ RsDoPinGroupFunctionDescriptor ( +@@ -1955,6 +2078,7 @@ RsDoPinGroupFunctionDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1805,7 +1930,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -1870,7 +1975,7 @@ RsDoPinGroupFunctionDescriptor ( +@@ -1978,7 +2102,7 @@ RsDoPinGroupFunctionDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1814,7 +1939,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c Descriptor->PinGroupFunction.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION; Descriptor->PinGroupFunction.RevisionId = AML_RESOURCE_PIN_GROUP_FUNCTION_REVISION;
-@@ -1902,7 +2007,8 @@ RsDoPinGroupFunctionDescriptor ( +@@ -2010,7 +2134,8 @@ RsDoPinGroupFunctionDescriptor (
case 1: /* Function Number [WORD] */
@@ -1824,7 +1949,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_FUNCTION, CurrentByteOffset + ASL_RESDESC_OFFSET (PinGroupFunction.FunctionNumber)); break; -@@ -1961,6 +2067,16 @@ RsDoPinGroupFunctionDescriptor ( +@@ -2069,6 +2194,16 @@ RsDoPinGroupFunctionDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1841,7 +1966,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c return (Rnode); }
-@@ -1993,6 +2109,8 @@ RsDoPinGroupConfigDescriptor ( +@@ -2101,6 +2236,8 @@ RsDoPinGroupConfigDescriptor ( UINT16 DescriptorSize; UINT32 CurrentByteOffset; UINT32 i; @@ -1850,7 +1975,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; CurrentByteOffset = Info->CurrentByteOffset; -@@ -2016,7 +2134,7 @@ RsDoPinGroupConfigDescriptor ( +@@ -2124,7 +2261,7 @@ RsDoPinGroupConfigDescriptor ( sizeof (AML_RESOURCE_LARGE_HEADER));
Descriptor = Rnode->Buffer; @@ -1859,7 +1984,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c Descriptor->PinGroupConfig.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG; Descriptor->PinGroupConfig.RevisionId = AML_RESOURCE_PIN_GROUP_CONFIG_REVISION;
-@@ -2069,7 +2187,8 @@ RsDoPinGroupConfigDescriptor ( +@@ -2177,7 +2314,8 @@ RsDoPinGroupConfigDescriptor (
case 2: /* Pin Config Value [DWORD] (_VAL) */
@@ -1869,7 +1994,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c RsCreateDwordField (InitializerOp, ACPI_RESTAG_PINCONFIG_VALUE, CurrentByteOffset + ASL_RESDESC_OFFSET (PinGroupConfig.PinConfigValue)); break; -@@ -2130,5 +2249,15 @@ RsDoPinGroupConfigDescriptor ( +@@ -2238,5 +2376,15 @@ RsDoPinGroupConfigDescriptor ( InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); }
@@ -1885,11 +2010,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c + return (Rnode); } -Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c -=================================================================== ---- acpica-unix2-20200925.orig/source/compiler/aslrestype2w.c -+++ acpica-unix2-20200925/source/compiler/aslrestype2w.c -@@ -84,6 +84,7 @@ RsDoWordIoDescriptor ( +diff --git a/source/compiler/aslrestype2w.c b/source/compiler/aslrestype2w.c +index b2113f4c9..6077f5f1a 100644 +--- a/source/compiler/aslrestype2w.c ++++ b/source/compiler/aslrestype2w.c +@@ -192,6 +192,7 @@ RsDoWordIoDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1897,7 +2022,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -147,7 +148,8 @@ RsDoWordIoDescriptor ( +@@ -255,7 +256,8 @@ RsDoWordIoDescriptor (
case 5: /* Address Granularity */
@@ -1907,7 +2032,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; -@@ -155,7 +157,8 @@ RsDoWordIoDescriptor ( +@@ -263,7 +265,8 @@ RsDoWordIoDescriptor (
case 6: /* Address Min */
@@ -1917,7 +2042,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; -@@ -163,7 +166,8 @@ RsDoWordIoDescriptor ( +@@ -271,7 +274,8 @@ RsDoWordIoDescriptor (
case 7: /* Address Max */
@@ -1927,7 +2052,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; -@@ -171,14 +175,16 @@ RsDoWordIoDescriptor ( +@@ -279,14 +283,16 @@ RsDoWordIoDescriptor (
case 8: /* Translation Offset */
@@ -1946,7 +2071,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; -@@ -263,13 +269,17 @@ RsDoWordIoDescriptor ( +@@ -371,13 +377,17 @@ RsDoWordIoDescriptor ( /* Validate the Min/Max/Len/Gran values */
RsLargeAddressCheck ( @@ -1968,7 +2093,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); -@@ -305,6 +315,7 @@ RsDoWordBusNumberDescriptor ( +@@ -413,6 +423,7 @@ RsDoWordBusNumberDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -1976,7 +2101,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -361,8 +372,8 @@ RsDoWordBusNumberDescriptor ( +@@ -469,8 +480,8 @@ RsDoWordBusNumberDescriptor (
case 4: /* Address Granularity */
@@ -1987,7 +2112,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; -@@ -370,8 +381,8 @@ RsDoWordBusNumberDescriptor ( +@@ -478,8 +489,8 @@ RsDoWordBusNumberDescriptor (
case 5: /* Min Address */
@@ -1998,7 +2123,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; -@@ -379,8 +390,8 @@ RsDoWordBusNumberDescriptor ( +@@ -487,8 +498,8 @@ RsDoWordBusNumberDescriptor (
case 6: /* Max Address */
@@ -2009,7 +2134,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; -@@ -388,16 +399,16 @@ RsDoWordBusNumberDescriptor ( +@@ -496,16 +507,16 @@ RsDoWordBusNumberDescriptor (
case 7: /* Translation Offset */
@@ -2030,7 +2155,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; -@@ -468,13 +479,17 @@ RsDoWordBusNumberDescriptor ( +@@ -576,13 +587,17 @@ RsDoWordBusNumberDescriptor ( /* Validate the Min/Max/Len/Gran values */
RsLargeAddressCheck ( @@ -2052,7 +2177,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); -@@ -510,6 +525,7 @@ RsDoWordSpaceDescriptor ( +@@ -618,6 +633,7 @@ RsDoWordSpaceDescriptor ( UINT32 CurrentByteOffset; UINT32 i; BOOLEAN ResSourceIndex = FALSE; @@ -2060,7 +2185,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c
InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -577,8 +593,8 @@ RsDoWordSpaceDescriptor ( +@@ -685,8 +701,8 @@ RsDoWordSpaceDescriptor (
case 6: /* Address Granularity */
@@ -2071,7 +2196,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; -@@ -586,8 +602,8 @@ RsDoWordSpaceDescriptor ( +@@ -694,8 +710,8 @@ RsDoWordSpaceDescriptor (
case 7: /* Min Address */
@@ -2082,7 +2207,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; -@@ -595,8 +611,8 @@ RsDoWordSpaceDescriptor ( +@@ -703,8 +719,8 @@ RsDoWordSpaceDescriptor (
case 8: /* Max Address */
@@ -2093,7 +2218,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; -@@ -604,16 +620,16 @@ RsDoWordSpaceDescriptor ( +@@ -712,16 +728,16 @@ RsDoWordSpaceDescriptor (
case 9: /* Translation Offset */
@@ -2114,7 +2239,7 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; -@@ -684,13 +700,17 @@ RsDoWordSpaceDescriptor ( +@@ -792,13 +808,17 @@ RsDoWordSpaceDescriptor ( /* Validate the Min/Max/Len/Gran values */
RsLargeAddressCheck ( @@ -2136,11 +2261,11 @@ Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); -Index: acpica-unix2-20200925/source/components/disassembler/dmbuffer.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/disassembler/dmbuffer.c -+++ acpica-unix2-20200925/source/components/disassembler/dmbuffer.c -@@ -204,7 +204,7 @@ AcpiDmByteList ( +diff --git a/source/components/disassembler/dmbuffer.c b/source/components/disassembler/dmbuffer.c +index 810f727fa..6960e9913 100644 +--- a/source/components/disassembler/dmbuffer.c ++++ b/source/components/disassembler/dmbuffer.c +@@ -312,7 +312,7 @@ AcpiDmByteList (
ByteData = Op->Named.Data; @@ -2149,11 +2274,46 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmbuffer.c
/* * The byte list belongs to a buffer, and can be produced by either -Index: acpica-unix2-20200925/source/components/disassembler/dmopcode.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/disassembler/dmopcode.c -+++ acpica-unix2-20200925/source/components/disassembler/dmopcode.c -@@ -882,23 +882,23 @@ AcpiDmDisassembleOneOp ( +@@ -416,7 +416,7 @@ AcpiDmIsUuidBuffer ( + /* Extract the byte list info */ + + ByteData = NextOp->Named.Data; +- ByteCount = (UINT32) NextOp->Common.Value.Integer; ++ ByteCount = (UINT32) NextOp->Common.Value.Size; + + /* Byte count must be exactly 16 */ + +@@ -544,7 +544,7 @@ AcpiDmIsUnicodeBuffer ( + /* Extract the byte list info */ + + ByteData = NextOp->Named.Data; +- ByteCount = (UINT32) NextOp->Common.Value.Integer; ++ ByteCount = (UINT32) NextOp->Common.Value.Size; + WordCount = ACPI_DIV_2 (ByteCount); + + /* +@@ -986,14 +986,14 @@ AcpiDmUnicode ( + /* Extract the buffer info as a WORD buffer */ + + WordData = ACPI_CAST_PTR (UINT16, Op->Named.Data); +- WordCount = ACPI_DIV_2 (((UINT32) Op->Common.Value.Integer)); ++ WordCount = ACPI_DIV_2 (((UINT32) Op->Common.Value.Size)); + + /* Write every other byte as an ASCII character */ + + AcpiOsPrintf ("""); + for (i = 0; i < (WordCount - 1); i++) + { +- OutputValue = (int) WordData[i]; ++ OutputValue = (int) AcpiUtReadUint16(&WordData[i]); + + /* Handle values that must be escaped */ + +diff --git a/source/components/disassembler/dmopcode.c b/source/components/disassembler/dmopcode.c +index 1372a0f25..bb7abab2c 100644 +--- a/source/components/disassembler/dmopcode.c ++++ b/source/components/disassembler/dmopcode.c +@@ -990,23 +990,23 @@ AcpiDmDisassembleOneOp (
case AML_INT_NAMEDFIELD_OP:
@@ -2181,11 +2341,11 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmopcode.c Info->BitOffset += Offset;
if (Info->BitOffset % 8 == 0) -Index: acpica-unix2-20200925/source/components/disassembler/dmresrc.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/disassembler/dmresrc.c -+++ acpica-unix2-20200925/source/components/disassembler/dmresrc.c -@@ -417,7 +417,7 @@ AcpiDmIsResourceTemplate ( +diff --git a/source/components/disassembler/dmresrc.c b/source/components/disassembler/dmresrc.c +index a3403322b..af75a7833 100644 +--- a/source/components/disassembler/dmresrc.c ++++ b/source/components/disassembler/dmresrc.c +@@ -525,7 +525,7 @@ AcpiDmIsResourceTemplate ( return (AE_TYPE); }
@@ -2194,11 +2354,11 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrc.c
/* Get the length of the raw initialization byte list */
-Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcl.c -+++ acpica-unix2-20200925/source/components/disassembler/dmresrcl.c -@@ -141,6 +141,8 @@ AcpiDmMemoryFields ( +diff --git a/source/components/disassembler/dmresrcl.c b/source/components/disassembler/dmresrcl.c +index e9d391df3..eed859928 100644 +--- a/source/components/disassembler/dmresrcl.c ++++ b/source/components/disassembler/dmresrcl.c +@@ -249,6 +249,8 @@ AcpiDmMemoryFields ( UINT32 Level) { UINT32 i; @@ -2207,7 +2367,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c
for (i = 0; i < 4; i++) -@@ -151,14 +153,16 @@ AcpiDmMemoryFields ( +@@ -259,14 +261,16 @@ AcpiDmMemoryFields ( { case 16:
@@ -2228,7 +2388,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c break;
default: -@@ -190,6 +194,9 @@ AcpiDmAddressFields ( +@@ -298,6 +302,9 @@ AcpiDmAddressFields ( UINT32 Level) { UINT32 i; @@ -2238,7 +2398,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c
AcpiOsPrintf ("\n"); -@@ -202,20 +209,23 @@ AcpiDmAddressFields ( +@@ -310,20 +317,23 @@ AcpiDmAddressFields ( { case 16:
@@ -2268,7 +2428,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c break;
default: -@@ -749,7 +759,7 @@ AcpiDmExtendedDescriptor ( +@@ -857,7 +867,7 @@ AcpiDmExtendedDescriptor ( /* Extra field for this descriptor only */
AcpiDmIndent (Level + 1); @@ -2277,7 +2437,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c "Type-Specific Attributes");
/* Insert a descriptor name */ -@@ -876,11 +886,11 @@ AcpiDmFixedMemory32Descriptor ( +@@ -984,11 +994,11 @@ AcpiDmFixedMemory32Descriptor ( AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]);
AcpiDmIndent (Level + 1); @@ -2291,7 +2451,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c "Address Length");
/* Insert a descriptor name */ -@@ -926,7 +936,8 @@ AcpiDmGenericRegisterDescriptor ( +@@ -1034,7 +1044,8 @@ AcpiDmGenericRegisterDescriptor ( AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset");
AcpiDmIndent (Level + 1); @@ -2301,7 +2461,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c
/* Optional field for ACPI 3.0 */
-@@ -989,7 +1000,7 @@ AcpiDmInterruptDescriptor ( +@@ -1097,7 +1108,7 @@ AcpiDmInterruptDescriptor ( AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_EXTENDED_IRQ) + ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), @@ -2310,7 +2470,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c
/* Insert a descriptor name */
-@@ -1004,7 +1015,7 @@ AcpiDmInterruptDescriptor ( +@@ -1112,7 +1123,7 @@ AcpiDmInterruptDescriptor ( { AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%8.8X,\n", @@ -2319,17 +2479,18 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c }
AcpiDmIndent (Level); -Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcl2.c -+++ acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c -@@ -191,15 +191,19 @@ AcpiDmGpioCommon ( +diff --git a/source/components/disassembler/dmresrcl2.c b/source/components/disassembler/dmresrcl2.c +index a2a85dfdc..11c3af1af 100644 +--- a/source/components/disassembler/dmresrcl2.c ++++ b/source/components/disassembler/dmresrcl2.c +@@ -299,22 +299,27 @@ AcpiDmGpioCommon ( char *DeviceName = NULL; UINT32 PinCount; UINT32 i; + UINT16 ResSourceOffset; + UINT16 VendorOffset; + UINT16 VendorLength; ++ UINT16 Tmp16;
/* ResourceSource, ResourceSourceIndex, ResourceType */ @@ -2345,7 +2506,16 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); }
-@@ -215,15 +219,15 @@ AcpiDmGpioCommon ( + AcpiOsPrintf (", "); + AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.ResSourceIndex); +- AcpiOsPrintf ("%s, ", +- AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.Flags)]); ++ Tmp16 = AcpiUtReadUint16(&Resource->Gpio.Flags); ++ AcpiOsPrintf ("%s, ", AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Tmp16)]); + + /* Insert a descriptor name */ + +@@ -323,15 +328,15 @@ AcpiDmGpioCommon (
/* Dump the vendor data */
@@ -2366,17 +2536,16 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c }
AcpiOsPrintf (")\n"); -@@ -233,17 +237,21 @@ AcpiDmGpioCommon ( +@@ -341,17 +346,17 @@ AcpiDmGpioCommon ( AcpiDmIndent (Level + 1); AcpiOsPrintf ("{ // Pin list\n");
+- PinCount = ((UINT32) (Resource->Gpio.ResSourceOffset - +- Resource->Gpio.PinTableOffset)) / +- sizeof (UINT16); + PinCount = (UINT32) AcpiUtReadUint16(&Resource->Gpio.ResSourceOffset); + PinCount -= (UINT32) AcpiUtReadUint16(&Resource->Gpio.PinTableOffset); + PinCount /= sizeof (UINT16); -+ - PinCount = ((UINT32) (Resource->Gpio.ResSourceOffset - - Resource->Gpio.PinTableOffset)) / - sizeof (UINT16);
PinList = (UINT16 *) ACPI_ADD_PTR (char, Resource, - Resource->Gpio.PinTableOffset); @@ -2390,7 +2559,29 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c ((i + 1) < PinCount) ? "," : ""); }
-@@ -299,7 +307,8 @@ AcpiDmGpioIntDescriptor ( +@@ -385,16 +390,18 @@ AcpiDmGpioIntDescriptor ( + UINT32 Length, + UINT32 Level) + { ++ UINT16 Tmp16; + + /* Dump the GpioInt-specific portion of the descriptor */ + + /* EdgeLevel, ActiveLevel, Shared */ + + AcpiDmIndent (Level); ++ Tmp16 = AcpiUtReadUint16(&Resource->Gpio.IntFlags); + AcpiOsPrintf ("GpioInt (%s, %s, %s, ", +- AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.IntFlags)], +- AcpiGbl_LlDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 1)], +- AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); ++ AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Tmp16)], ++ AcpiGbl_LlDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 1)], ++ AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 3)]); + + /* PinConfig, DebounceTimeout */ + +@@ -407,7 +414,8 @@ AcpiDmGpioIntDescriptor ( { AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.PinConfig); } @@ -2400,18 +2591,40 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c
/* Dump the GpioInt/GpioIo common portion of the descriptor */
-@@ -350,8 +359,8 @@ AcpiDmGpioIoDescriptor ( +@@ -437,14 +445,16 @@ AcpiDmGpioIoDescriptor ( + UINT32 Length, + UINT32 Level) + { ++ UINT16 Tmp16; + + /* Dump the GpioIo-specific portion of the descriptor */ + + /* Shared, PinConfig */ + + AcpiDmIndent (Level); ++ Tmp16 = AcpiUtReadUint16(&Resource->Gpio.IntFlags); + AcpiOsPrintf ("GpioIo (%s, ", +- AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); ++ AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 3)]); + + if (Resource->Gpio.PinConfig <= 3) + { +@@ -458,10 +468,10 @@ AcpiDmGpioIoDescriptor (
/* DebounceTimeout, DriveStrength, IoRestriction */
- AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DebounceTimeout); - AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DriveStrength); +- AcpiOsPrintf ("%s,\n", +- AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Resource->Gpio.IntFlags)]); + AcpiOsPrintf ("0x%4.4X, ", AcpiUtReadUint16(&Resource->Gpio.DebounceTimeout)); + AcpiOsPrintf ("0x%4.4X, ", AcpiUtReadUint16(&Resource->Gpio.DriveStrength)); - AcpiOsPrintf ("%s,\n", - AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Resource->Gpio.IntFlags)]); ++ Tmp16 = AcpiUtReadUint16(&Resource->Gpio.IntFlags); ++ AcpiOsPrintf ("%s,\n", AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Tmp16)]); + + /* Dump the GpioInt/GpioIo common portion of the descriptor */
-@@ -434,6 +443,9 @@ AcpiDmPinFunctionDescriptor ( +@@ -542,6 +552,9 @@ AcpiDmPinFunctionDescriptor ( char *DeviceName = NULL; UINT32 PinCount; UINT32 i; @@ -2421,7 +2634,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c
AcpiDmIndent (Level); AcpiOsPrintf ("PinFunction (%s, ", -@@ -451,12 +463,14 @@ AcpiDmPinFunctionDescriptor ( +@@ -559,12 +572,14 @@ AcpiDmPinFunctionDescriptor (
/* FunctionNumber */
@@ -2439,7 +2652,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); }
-@@ -476,15 +490,15 @@ AcpiDmPinFunctionDescriptor ( +@@ -584,15 +599,15 @@ AcpiDmPinFunctionDescriptor (
/* Dump the vendor data */
@@ -2460,7 +2673,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c }
AcpiOsPrintf (")\n"); -@@ -495,17 +509,17 @@ AcpiDmPinFunctionDescriptor ( +@@ -603,17 +618,17 @@ AcpiDmPinFunctionDescriptor (
AcpiOsPrintf ("{ // Pin list\n");
@@ -2483,11 +2696,139 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c ((i + 1) < PinCount) ? "," : ""); }
-Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcs.c -+++ acpica-unix2-20200925/source/components/disassembler/dmresrcs.c -@@ -93,7 +93,7 @@ AcpiDmIrqDescriptor ( +@@ -649,7 +664,8 @@ AcpiDmDumpSerialBusVendorData ( + { + case AML_RESOURCE_I2C_SERIALBUSTYPE: + +- VendorLength = Resource->CommonSerialBus.TypeDataLength - ++ VendorLength = ++ AcpiUtReadUint16(&Resource->CommonSerialBus.TypeDataLength) - + AML_RESOURCE_I2C_MIN_DATA_LEN; + + VendorData = ACPI_ADD_PTR (UINT8, Resource, +@@ -658,7 +674,8 @@ AcpiDmDumpSerialBusVendorData ( + + case AML_RESOURCE_SPI_SERIALBUSTYPE: + +- VendorLength = Resource->CommonSerialBus.TypeDataLength - ++ VendorLength = ++ AcpiUtReadUint16(&Resource->CommonSerialBus.TypeDataLength) - + AML_RESOURCE_SPI_MIN_DATA_LEN; + + VendorData = ACPI_ADD_PTR (UINT8, Resource, +@@ -667,7 +684,8 @@ AcpiDmDumpSerialBusVendorData ( + + case AML_RESOURCE_UART_SERIALBUSTYPE: + +- VendorLength = Resource->CommonSerialBus.TypeDataLength - ++ VendorLength = ++ AcpiUtReadUint16(&Resource->CommonSerialBus.TypeDataLength) - + AML_RESOURCE_UART_MIN_DATA_LEN; + + VendorData = ACPI_ADD_PTR (UINT8, Resource, +@@ -715,9 +733,9 @@ AcpiDmI2cSerialBusDescriptor ( + + AcpiDmIndent (Level); + AcpiOsPrintf ("I2cSerialBusV2 (0x%4.4X, %s, 0x%8.8X,\n", +- Resource->I2cSerialBus.SlaveAddress, ++ AcpiUtReadUint16(&Resource->I2cSerialBus.SlaveAddress), + AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.Flags)], +- Resource->I2cSerialBus.ConnectionSpeed); ++ AcpiUtReadUint32(&Resource->I2cSerialBus.ConnectionSpeed)); + + AcpiDmIndent (Level + 1); + AcpiOsPrintf ("%s, ", +@@ -726,7 +744,7 @@ AcpiDmI2cSerialBusDescriptor ( + /* ResourceSource is a required field */ + + ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + +- Resource->CommonSerialBus.TypeDataLength; ++ AcpiUtReadUint16(&Resource->CommonSerialBus.TypeDataLength); + + DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); + AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); +@@ -783,15 +801,17 @@ AcpiDmSpiSerialBusDescriptor ( + { + UINT32 ResourceSourceOffset; + char *DeviceName; ++ UINT16 Tmp16; + + + /* DeviceSelection, DeviceSelectionPolarity, WireMode, DataBitLength */ + + AcpiDmIndent (Level); ++ Tmp16 = AcpiUtReadUint16(&Resource->SpiSerialBus.TypeSpecificFlags); + AcpiOsPrintf ("SpiSerialBusV2 (0x%4.4X, %s, %s, 0x%2.2X,\n", +- Resource->SpiSerialBus.DeviceSelection, +- AcpiGbl_DpDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->SpiSerialBus.TypeSpecificFlags, 1)], +- AcpiGbl_WmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.TypeSpecificFlags)], ++ AcpiUtReadUint16(&Resource->SpiSerialBus.DeviceSelection), ++ AcpiGbl_DpDecode [ACPI_EXTRACT_1BIT_FLAG (Tmp16, 1)], ++ AcpiGbl_WmDecode [ACPI_GET_1BIT_FLAG (Tmp16)], + Resource->SpiSerialBus.DataBitLength); + + /* SlaveMode, ConnectionSpeed, ClockPolarity, ClockPhase */ +@@ -799,7 +819,7 @@ AcpiDmSpiSerialBusDescriptor ( + AcpiDmIndent (Level + 1); + AcpiOsPrintf ("%s, 0x%8.8X, %s,\n", + AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.Flags)], +- Resource->SpiSerialBus.ConnectionSpeed, ++ AcpiUtReadUint32(&Resource->SpiSerialBus.ConnectionSpeed), + AcpiGbl_CpoDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.ClockPolarity)]); + + AcpiDmIndent (Level + 1); +@@ -809,7 +829,7 @@ AcpiDmSpiSerialBusDescriptor ( + /* ResourceSource is a required field */ + + ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + +- Resource->CommonSerialBus.TypeDataLength; ++ AcpiUtReadUint16(&Resource->CommonSerialBus.TypeDataLength); + + DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); + AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); +@@ -866,15 +886,17 @@ AcpiDmUartSerialBusDescriptor ( + { + UINT32 ResourceSourceOffset; + char *DeviceName; ++ UINT16 Tmp16; + + + /* ConnectionSpeed, BitsPerByte, StopBits */ + + AcpiDmIndent (Level); ++ Tmp16 = AcpiUtReadUint16(&Resource->UartSerialBus.TypeSpecificFlags); + AcpiOsPrintf ("UartSerialBusV2 (0x%8.8X, %s, %s,\n", +- Resource->UartSerialBus.DefaultBaudRate, +- AcpiGbl_BpbDecode [ACPI_EXTRACT_3BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 4)], +- AcpiGbl_SbDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 2)]); ++ AcpiUtReadUint32(&Resource->UartSerialBus.DefaultBaudRate), ++ AcpiGbl_BpbDecode [ACPI_EXTRACT_3BIT_FLAG (Tmp16, 4)], ++ AcpiGbl_SbDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 2)]); + + /* LinesInUse, IsBigEndian, Parity, FlowControl */ + +@@ -889,13 +911,13 @@ AcpiDmUartSerialBusDescriptor ( + + AcpiDmIndent (Level + 1); + AcpiOsPrintf ("0x%4.4X, 0x%4.4X, ", +- Resource->UartSerialBus.RxFifoSize, +- Resource->UartSerialBus.TxFifoSize); ++ AcpiUtReadUint16(&Resource->UartSerialBus.RxFifoSize), ++ AcpiUtReadUint16(&Resource->UartSerialBus.TxFifoSize)); + + /* ResourceSource is a required field */ + + ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + +- Resource->CommonSerialBus.TypeDataLength; ++ AcpiUtReadUint16(&Resource->CommonSerialBus.TypeDataLength); + + DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); + AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); +diff --git a/source/components/disassembler/dmresrcs.c b/source/components/disassembler/dmresrcs.c +index 5f5c7edaf..21d397637 100644 +--- a/source/components/disassembler/dmresrcs.c ++++ b/source/components/disassembler/dmresrcs.c +@@ -201,7 +201,7 @@ AcpiDmIrqDescriptor ( AcpiOsPrintf (")\n");
AcpiDmIndent (Level + 1); @@ -2496,7 +2837,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c }
-@@ -161,8 +161,8 @@ AcpiDmFixedDmaDescriptor ( +@@ -269,8 +269,8 @@ AcpiDmFixedDmaDescriptor (
AcpiDmIndent (Level); AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", @@ -2507,7 +2848,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c
if (Resource->FixedDma.Width <= 5) { -@@ -210,10 +210,12 @@ AcpiDmIoDescriptor ( +@@ -318,10 +318,12 @@ AcpiDmIoDescriptor ( AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);
AcpiDmIndent (Level + 1); @@ -2522,7 +2863,7 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c
AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); -@@ -256,10 +258,12 @@ AcpiDmFixedIoDescriptor ( +@@ -364,10 +366,12 @@ AcpiDmFixedIoDescriptor ( AcpiOsPrintf ("FixedIO (\n");
AcpiDmIndent (Level + 1); @@ -2537,11 +2878,24 @@ Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c
/* Insert a descriptor name */
-Index: acpica-unix2-20200925/source/components/dispatcher/dsfield.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/dispatcher/dsfield.c -+++ acpica-unix2-20200925/source/components/dispatcher/dsfield.c -@@ -336,6 +336,8 @@ AcpiDsGetFieldNames ( +diff --git a/source/components/disassembler/dmwalk.c b/source/components/disassembler/dmwalk.c +index 76ef0aacb..069c11fbb 100644 +--- a/source/components/disassembler/dmwalk.c ++++ b/source/components/disassembler/dmwalk.c +@@ -1263,7 +1263,7 @@ AcpiDmAscendingOp ( + { + ParentOp->Common.DisasmFlags |= ACPI_PARSEOP_EMPTY_TERMLIST; + ASL_CV_CLOSE_PAREN (Op, Level); +- AcpiOsPrintf ("{"); ++ AcpiOsPrintf (" {"); + } + } + +diff --git a/source/components/dispatcher/dsfield.c b/source/components/dispatcher/dsfield.c +index f41990780..937c1e9f5 100644 +--- a/source/components/dispatcher/dsfield.c ++++ b/source/components/dispatcher/dsfield.c +@@ -444,6 +444,8 @@ AcpiDsGetFieldNames ( char *NamePath; #endif
@@ -2550,7 +2904,7 @@ Index: acpica-unix2-20200925/source/components/dispatcher/dsfield.c
ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info);
-@@ -442,14 +444,17 @@ AcpiDsGetFieldNames ( +@@ -550,14 +552,17 @@ AcpiDsGetFieldNames (
/* Lookup the name, it should already exist */
@@ -2570,7 +2924,7 @@ Index: acpica-unix2-20200925/source/components/dispatcher/dsfield.c return_ACPI_STATUS (Status); } else -@@ -703,8 +708,13 @@ AcpiDsInitFieldObjects ( +@@ -811,8 +816,13 @@ AcpiDsInitFieldObjects ( */ if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { @@ -2585,11 +2939,11 @@ Index: acpica-unix2-20200925/source/components/dispatcher/dsfield.c Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { -Index: acpica-unix2-20200925/source/components/namespace/nsaccess.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/namespace/nsaccess.c -+++ acpica-unix2-20200925/source/components/namespace/nsaccess.c -@@ -645,7 +645,7 @@ AcpiNsLookup ( +diff --git a/source/components/namespace/nsaccess.c b/source/components/namespace/nsaccess.c +index f9227ee4d..55e768698 100644 +--- a/source/components/namespace/nsaccess.c ++++ b/source/components/namespace/nsaccess.c +@@ -753,7 +753,7 @@ AcpiNsLookup (
/* Extract one ACPI name from the front of the pathname */
@@ -2598,11 +2952,11 @@ Index: acpica-unix2-20200925/source/components/namespace/nsaccess.c
/* Try to find the single (4 character) ACPI name */
-Index: acpica-unix2-20200925/source/components/namespace/nsnames.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/namespace/nsnames.c -+++ acpica-unix2-20200925/source/components/namespace/nsnames.c -@@ -300,7 +300,7 @@ AcpiNsBuildNormalizedPath ( +diff --git a/source/components/namespace/nsnames.c b/source/components/namespace/nsnames.c +index a27a87f02..16202ce32 100644 +--- a/source/components/namespace/nsnames.c ++++ b/source/components/namespace/nsnames.c +@@ -408,7 +408,7 @@ AcpiNsBuildNormalizedPath ( ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); }
@@ -2611,11 +2965,11 @@ Index: acpica-unix2-20200925/source/components/namespace/nsnames.c DoNoTrailing = NoTrailing; for (i = 0; i < 4; i++) { -Index: acpica-unix2-20200925/source/components/namespace/nsparse.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/namespace/nsparse.c -+++ acpica-unix2-20200925/source/components/namespace/nsparse.c -@@ -203,6 +203,7 @@ AcpiNsOneCompleteParse ( +diff --git a/source/components/namespace/nsparse.c b/source/components/namespace/nsparse.c +index f10db0e4d..a5cb221aa 100644 +--- a/source/components/namespace/nsparse.c ++++ b/source/components/namespace/nsparse.c +@@ -311,6 +311,7 @@ AcpiNsOneCompleteParse ( ACPI_WALK_STATE *WalkState; ACPI_TABLE_HEADER *Table; ACPI_OWNER_ID OwnerId; @@ -2623,7 +2977,7 @@ Index: acpica-unix2-20200925/source/components/namespace/nsparse.c
ACPI_FUNCTION_TRACE (NsOneCompleteParse); -@@ -216,13 +217,14 @@ AcpiNsOneCompleteParse ( +@@ -324,13 +325,14 @@ AcpiNsOneCompleteParse (
/* Table must consist of at least a complete header */
@@ -2640,11 +2994,11 @@ Index: acpica-unix2-20200925/source/components/namespace/nsparse.c
Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); if (ACPI_FAILURE (Status)) -Index: acpica-unix2-20200925/source/components/namespace/nsutils.c -=================================================================== ---- acpica-unix2-20200925.orig/source/components/namespace/nsutils.c -+++ acpica-unix2-20200925/source/components/namespace/nsutils.c -@@ -272,7 +272,6 @@ AcpiNsBuildInternalName ( +diff --git a/source/components/namespace/nsutils.c b/source/components/namespace/nsutils.c +index a74dd1299..6df0d087d 100644 +--- a/source/components/namespace/nsutils.c ++++ b/source/components/namespace/nsutils.c +@@ -380,7 +380,6 @@ AcpiNsBuildInternalName ( const char *ExternalName = Info->NextExternalChar; char *Result = NULL; UINT32 i; @@ -2652,7 +3006,7 @@ Index: acpica-unix2-20200925/source/components/namespace/nsutils.c
ACPI_FUNCTION_TRACE (NsBuildInternalName); -@@ -336,7 +335,6 @@ AcpiNsBuildInternalName ( +@@ -444,7 +443,6 @@ AcpiNsBuildInternalName (
for (; NumSegments; NumSegments--) { @@ -2660,7 +3014,7 @@ Index: acpica-unix2-20200925/source/components/namespace/nsutils.c for (i = 0; i < ACPI_NAMESEG_SIZE; i++) { if (ACPI_IS_PATH_SEPARATOR (*ExternalName) || -@@ -344,17 +342,16 @@ AcpiNsBuildInternalName ( +@@ -452,17 +450,16 @@ AcpiNsBuildInternalName ( { /* Pad the segment with underscore(s) if segment is short */
@@ -2680,3 +3034,6 @@ Index: acpica-unix2-20200925/source/components/namespace/nsutils.c
/* Now we must have a path separator, or the pathname is bad */
+-- +2.26.2 + diff --git a/0041-Support-MTMR-in-a-big-endian-world.patch b/0041-Support-MTMR-in-a-big-endian-world.patch index dc4ad0b..afb4976 100644 --- a/0041-Support-MTMR-in-a-big-endian-world.patch +++ b/0041-Support-MTMR-in-a-big-endian-world.patch @@ -1,7 +1,7 @@ -From 902266037614bc0b3ff31c1dfeb350c80e517d90 Mon Sep 17 00:00:00 2001 +From 62c6c5b94772b7f8f5de6136a2ba61e31d0c7b3c Mon Sep 17 00:00:00 2001 From: Al Stone ahs3@redhat.com Date: Fri, 16 Oct 2020 20:52:43 -0400 -Subject: [PATCH 1/4] Support MTMR in a big-endian world +Subject: [PATCH 3/5] Support MTMR in a big-endian world
Signed-off-by: Al Stone ahs3@redhat.com --- @@ -42,5 +42,5 @@ index 285fd30d7..7450ca3f7 100644 if (ACPI_FAILURE (Status)) { -- -2.28.0 +2.26.2
diff --git a/0042-Support-VRTC-in-a-big-endian-world.patch b/0042-Support-VRTC-in-a-big-endian-world.patch index 24e50c2..6bd6d62 100644 --- a/0042-Support-VRTC-in-a-big-endian-world.patch +++ b/0042-Support-VRTC-in-a-big-endian-world.patch @@ -1,7 +1,7 @@ -From b8d25df79205c128057dba4112b34a7b714a7c43 Mon Sep 17 00:00:00 2001 +From 19eefeadf92a471f1c4fbc6dd4d035e45fa76dcd Mon Sep 17 00:00:00 2001 From: Al Stone ahs3@redhat.com Date: Mon, 19 Oct 2020 17:17:40 -0400 -Subject: [PATCH 2/4] Support VRTC in a big-endian world +Subject: [PATCH 4/5] Support VRTC in a big-endian world
--- source/common/dmtbdump3.c | 7 ++++--- @@ -41,5 +41,5 @@ index da9b81c92..db2f54ffb 100644 if (ACPI_FAILURE (Status)) { -- -2.28.0 +2.26.2
diff --git a/0043-Support-S3PT-in-a-big-endian-world.patch b/0043-Support-S3PT-in-a-big-endian-world.patch index bf1be6f..3e41bfe 100644 --- a/0043-Support-S3PT-in-a-big-endian-world.patch +++ b/0043-Support-S3PT-in-a-big-endian-world.patch @@ -1,7 +1,7 @@ -From 1652084e864a8048b44486548d9df40eb64cd8de Mon Sep 17 00:00:00 2001 +From 5805d42c0cec5366daa12e0f4caed7a58b13fe5b Mon Sep 17 00:00:00 2001 From: Al Stone ahs3@redhat.com Date: Mon, 19 Oct 2020 17:30:30 -0400 -Subject: [PATCH 3/4] Support S3PT in a big-endian world +Subject: [PATCH 5/5] Support S3PT in a big-endian world
--- source/common/dmtbdump2.c | 15 +++++++++------ @@ -95,5 +95,5 @@ index 48729b48f..1ac063795 100644 case ACPI_S3PT_TYPE_RESUME:
-- -2.28.0 +2.26.2
commit 249abc074a65613c3303687151979a4b4065dd1f Author: Al Stone ahs3@redhat.com Date: Fri Oct 23 13:04:26 2020 -0600
Add big-endian support for three additional tables: MTMR, VRTC and S3PT
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0041-Support-MTMR-in-a-big-endian-world.patch b/0041-Support-MTMR-in-a-big-endian-world.patch new file mode 100644 index 0000000..dc4ad0b --- /dev/null +++ b/0041-Support-MTMR-in-a-big-endian-world.patch @@ -0,0 +1,46 @@ +From 902266037614bc0b3ff31c1dfeb350c80e517d90 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 16 Oct 2020 20:52:43 -0400 +Subject: [PATCH 1/4] Support MTMR in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c +index 285fd30d7..7450ca3f7 100644 +--- a/source/common/dmtbdump2.c ++++ b/source/common/dmtbdump2.c +@@ -1156,11 +1156,12 @@ AcpiDmDumpMtmr ( + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_MTMR); + ACPI_MTMR_ENTRY *Subtable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMtmr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1169,12 +1170,12 @@ AcpiDmDumpMtmr ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); + if (ACPI_FAILURE (Status)) + { +-- +2.28.0 + diff --git a/0042-Support-VRTC-in-a-big-endian-world.patch b/0042-Support-VRTC-in-a-big-endian-world.patch new file mode 100644 index 0000000..24e50c2 --- /dev/null +++ b/0042-Support-VRTC-in-a-big-endian-world.patch @@ -0,0 +1,45 @@ +From b8d25df79205c128057dba4112b34a7b714a7c43 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 19 Oct 2020 17:17:40 -0400 +Subject: [PATCH 2/4] Support VRTC in a big-endian world + +--- + source/common/dmtbdump3.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/source/common/dmtbdump3.c b/source/common/dmtbdump3.c +index da9b81c92..db2f54ffb 100644 +--- a/source/common/dmtbdump3.c ++++ b/source/common/dmtbdump3.c +@@ -629,11 +629,12 @@ AcpiDmDumpVrtc ( + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_VRTC); + ACPI_VRTC_ENTRY *Subtable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoVrtc); + if (ACPI_FAILURE (Status)) + { + return; +@@ -642,12 +643,12 @@ AcpiDmDumpVrtc ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); + if (ACPI_FAILURE (Status)) + { +-- +2.28.0 + diff --git a/0043-Support-S3PT-in-a-big-endian-world.patch b/0043-Support-S3PT-in-a-big-endian-world.patch new file mode 100644 index 0000000..bf1be6f --- /dev/null +++ b/0043-Support-S3PT-in-a-big-endian-world.patch @@ -0,0 +1,99 @@ +From 1652084e864a8048b44486548d9df40eb64cd8de Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 19 Oct 2020 17:30:30 -0400 +Subject: [PATCH 3/4] Support S3PT in a big-endian world + +--- + source/common/dmtbdump2.c | 15 +++++++++------ + source/compiler/dttable2.c | 4 +++- + 2 files changed, 12 insertions(+), 7 deletions(-) + +diff --git a/source/common/dmtbdump2.c b/source/common/dmtbdump2.c +index 7450ca3f7..ada564cd5 100644 +--- a/source/common/dmtbdump2.c ++++ b/source/common/dmtbdump2.c +@@ -1917,6 +1917,8 @@ AcpiDmDumpS3pt ( + ACPI_FPDT_HEADER *Subtable; + ACPI_DMTABLE_INFO *InfoTable; + ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables); ++ UINT32 S3ptTableLength = AcpiUtReadUint32(&S3ptTable->Length); ++ UINT16 SubtableType; + + + /* Main table */ +@@ -1928,19 +1930,20 @@ AcpiDmDumpS3pt ( + } + + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset); +- while (Offset < S3ptTable->Length) ++ while (Offset < S3ptTableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (S3ptTableLength, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoS3ptHdr); + if (ACPI_FAILURE (Status)) + { + return 0; + } + +- switch (Subtable->Type) ++ SubtableType = AcpiUtReadUint16(&Subtable->Type); ++ switch (SubtableType) + { + case ACPI_S3PT_TYPE_RESUME: + +@@ -1955,7 +1958,7 @@ AcpiDmDumpS3pt ( + default: + + AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", +- Subtable->Type); ++ SubtableType); + + /* Attempt to continue */ + +@@ -1968,7 +1971,7 @@ AcpiDmDumpS3pt ( + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (S3ptTableLength, Offset, Subtable, + Subtable->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { +@@ -1982,7 +1985,7 @@ NextSubtable: + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Subtable, Subtable->Length); + } + +- return (S3ptTable->Length); ++ return (S3ptTableLength); + } + + +diff --git a/source/compiler/dttable2.c b/source/compiler/dttable2.c +index 48729b48f..1ac063795 100644 +--- a/source/compiler/dttable2.c ++++ b/source/compiler/dttable2.c +@@ -1296,6 +1296,7 @@ DtCompileS3pt ( + DT_SUBTABLE *ParentTable; + ACPI_DMTABLE_INFO *InfoTable; + DT_FIELD *SubtableStart; ++ UINT16 S3ptHeaderType; + + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt, +@@ -1323,7 +1324,8 @@ DtCompileS3pt ( + + S3ptHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer); + +- switch (S3ptHeader->Type) ++ S3ptHeaderType = AcpiUtReadUint16(&S3ptHeader->Type); ++ switch (S3ptHeaderType) + { + case ACPI_S3PT_TYPE_RESUME: + +-- +2.28.0 + diff --git a/acpica-tools.spec b/acpica-tools.spec index 2a6d3e5..5409cda 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -64,6 +64,9 @@ Patch36: 0037-Support-IVRS-in-a-big-endian-world.patch Patch37: 0038-Support-TPM2-in-a-big-endian-world.patch Patch38: 0039-Add-partial-big-endian-support-for-WPBT-tables.patch Patch39: 0040-Support-DSDT-SSDT-in-a-big-endian-world.patch +Patch40: 0041-Support-MTMR-in-a-big-endian-world.patch +Patch41: 0042-Support-VRTC-in-a-big-endian-world.patch +Patch42: 0043-Support-S3PT-in-a-big-endian-world.patch
# other miscellaneous patches Patch100: unaligned.patch @@ -172,6 +175,9 @@ gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f - %patch37 -p1 %patch38 -p1 %patch39 -p1 +%patch40 -p1 +%patch41 -p1 +%patch42 -p1
# apply the remaining patches %patch100 -p1
commit 17d826f180de62ba31303b919cf69d5f411692e9 Author: Al Stone ahs3@redhat.com Date: Mon Oct 19 12:38:41 2020 -0600
Minor fix to spec file
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/acpica-tools.spec b/acpica-tools.spec index 7123e29..2a6d3e5 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -82,9 +82,7 @@ Patch112: ptr-cast.patch Patch113: facp.patch Patch114: armv7-str-fixes.patch Patch115: dbtest.patch -%ifarch i686 armv7hl Patch116: ull-32bit.patch -%endif
BuildRequires: bison patchutils flex gcc
commit edb6c78416617cb61568d79ba861ba6d367c653a Author: Al Stone ahs3@redhat.com Date: Mon Oct 19 12:24:09 2020 -0600
Update to upstream 20200925 version
This update also means a major update for all of the big-endian patching that has been done. The older mechanism was getting to unwieldy to keep maintained, and too sensitive to upstream changes. Hence, redid all of the old patches, and took the opportunity to make them more amenable to change over time. Ultimately, the goal is to have upstream accept these in some form.
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/0001-Add-in-basic-infrastructure-for-big-endian-support.patch b/0001-Add-in-basic-infrastructure-for-big-endian-support.patch new file mode 100644 index 0000000..abd9298 --- /dev/null +++ b/0001-Add-in-basic-infrastructure-for-big-endian-support.patch @@ -0,0 +1,372 @@ +From bb45113bc9aed952a499cd1c53988dc81f597582 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Thu, 15 Oct 2020 11:53:33 -0600 +Subject: [PATCH 01/40] Add in basic infrastructure for big-endian support + +This adds in some basic functions -- AcpiUtReadUint32(), for example, +to read a UINT32 value in little-endian form and return it in host-native +format -- along with AcpiUtWriteUint() that writes out an integer in +host-native format as a little-endian value. + +But, to do that, I'm adding the functions in a new file: utendian.c. So, +the header files need fixing, and the makefiles need to be sure to compile +the new code. + +However, this sets things up for the future, where endian-aware code can +be added as the need is uncovered. For now, these functions cover all of +the cases I know about. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + generate/unix/acpibin/Makefile | 1 + + generate/unix/acpidump/Makefile | 1 + + generate/unix/acpiexamples/Makefile | 1 + + generate/unix/acpiexec/Makefile | 1 + + generate/unix/acpihelp/Makefile | 1 + + generate/unix/iasl/Makefile | 1 + + source/components/utilities/utendian.c | 205 +++++++++++++++++++++++++ + source/include/acutils.h | 26 ++++ + source/include/platform/aclinux.h | 5 + + 9 files changed, 242 insertions(+) + create mode 100644 source/components/utilities/utendian.c + +Index: acpica-unix2-20200925/generate/unix/acpibin/Makefile +=================================================================== +--- acpica-unix2-20200925.orig/generate/unix/acpibin/Makefile ++++ acpica-unix2-20200925/generate/unix/acpibin/Makefile +@@ -37,6 +37,7 @@ OBJECTS = \ + $(OBJDIR)/utcache.o\ + $(OBJDIR)/utdebug.o\ + $(OBJDIR)/utdecode.o\ ++ $(OBJDIR)/utendian.o\ + $(OBJDIR)/utexcep.o\ + $(OBJDIR)/utglobal.o\ + $(OBJDIR)/utlock.o\ +Index: acpica-unix2-20200925/generate/unix/acpidump/Makefile +=================================================================== +--- acpica-unix2-20200925.orig/generate/unix/acpidump/Makefile ++++ acpica-unix2-20200925/generate/unix/acpidump/Makefile +@@ -36,6 +36,7 @@ OBJECTS = \ + $(OBJDIR)/osunixdir.o\ + $(OBJDIR)/osunixmap.o\ + $(OBJDIR)/osunixxf.o\ ++ $(OBJDIR)/utendian.o\ + $(OBJDIR)/tbprint.o\ + $(OBJDIR)/tbxfroot.o\ + $(OBJDIR)/utascii.o\ +Index: acpica-unix2-20200925/generate/unix/acpiexamples/Makefile +=================================================================== +--- acpica-unix2-20200925.orig/generate/unix/acpiexamples/Makefile ++++ acpica-unix2-20200925/generate/unix/acpiexamples/Makefile +@@ -139,6 +139,7 @@ OBJECTS = \ + $(OBJDIR)/utdebug.o\ + $(OBJDIR)/utdecode.o\ + $(OBJDIR)/utdelete.o\ ++ $(OBJDIR)/utendian.o\ + $(OBJDIR)/uterror.o\ + $(OBJDIR)/uteval.o\ + $(OBJDIR)/utexcep.o\ +Index: acpica-unix2-20200925/generate/unix/acpiexec/Makefile +=================================================================== +--- acpica-unix2-20200925.orig/generate/unix/acpiexec/Makefile ++++ acpica-unix2-20200925/generate/unix/acpiexec/Makefile +@@ -214,6 +214,7 @@ OBJECTS = \ + $(OBJDIR)/utdebug.o\ + $(OBJDIR)/utdecode.o\ + $(OBJDIR)/utdelete.o\ ++ $(OBJDIR)/utendian.o\ + $(OBJDIR)/uterror.o\ + $(OBJDIR)/uteval.o\ + $(OBJDIR)/utexcep.o\ +Index: acpica-unix2-20200925/generate/unix/acpihelp/Makefile +=================================================================== +--- acpica-unix2-20200925.orig/generate/unix/acpihelp/Makefile ++++ acpica-unix2-20200925/generate/unix/acpihelp/Makefile +@@ -43,6 +43,7 @@ OBJECTS = \ + $(OBJDIR)/getopt.o\ + $(OBJDIR)/osunixxf.o\ + $(OBJDIR)/utdebug.o\ ++ $(OBJDIR)/utendian.o\ + $(OBJDIR)/utexcep.o\ + $(OBJDIR)/utglobal.o\ + $(OBJDIR)/uthex.o\ +Index: acpica-unix2-20200925/generate/unix/iasl/Makefile +=================================================================== +--- acpica-unix2-20200925.orig/generate/unix/iasl/Makefile ++++ acpica-unix2-20200925/generate/unix/iasl/Makefile +@@ -225,6 +225,7 @@ OBJECTS = \ + $(OBJDIR)/utdebug.o\ + $(OBJDIR)/utdecode.o\ + $(OBJDIR)/utdelete.o\ ++ $(OBJDIR)/utendian.o\ + $(OBJDIR)/uterror.o\ + $(OBJDIR)/utexcep.o\ + $(OBJDIR)/utglobal.o\ +Index: acpica-unix2-20200925/source/components/utilities/utendian.c +=================================================================== +--- /dev/null ++++ acpica-unix2-20200925/source/components/utilities/utendian.c +@@ -0,0 +1,205 @@ ++/****************************************************************************** ++ * ++ * Module Name: utendian -- byte swapping support for other-endianness ++ * ++ *****************************************************************************/ ++ ++/***************************************************************************** ++ * ++ * Copyright (c) 2020, Al Stone ahs3@redhat.com ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions ++ * are met: ++ * 1. Redistributions of source code must retain the above copyright ++ * notice, this list of conditions, and the following disclaimer, ++ * without modification. ++ * 2. Redistributions in binary form must reproduce at minimum a disclaimer ++ * substantially similar to the "NO WARRANTY" disclaimer below ++ * ("Disclaimer") and any redistribution must be conditioned upon ++ * including a substantially similar Disclaimer requirement for further ++ * binary redistribution. ++ * 3. Neither the names of the above-listed copyright holders nor the names ++ * of any contributors may be used to endorse or promote products derived ++ * from this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ * ++ * Alternatively, you may choose to be licensed under the terms of the ++ * GNU General Public License ("GPL") version 2 as published by the Free ++ * Software Foundation. ++ * ++ *****************************************************************************/ ++ ++#include "acpi.h" ++#include "accommon.h" ++ ++#define _COMPONENT ACPI_COMPILER ++ ACPI_MODULE_NAME ("utendian") ++ ++ ++/* ++ * Endianness support functions. ++ * ++ * Ultimately, everything in ACPI tables or AML must be in little-endian ++ * format. However, we sometimes find it necessary to run on a big-endian ++ * machine and create or read those little-endian values. This is a small ++ * libary of functions to make that easier, and more visible. ++ * ++ */ ++ ++ ++/******************************************************************************* ++ * ++ * FUNCTION: AcpiUtReadUint16 ++ * ++ * PARAMETERS: Src - location containing the little-endian ++ * value ++ * ++ * RETURN: UINT16 value in host-native form ++ * ++ * DESCRIPTION: Read a UINT16 little-endian value from a given location ++ * and return it in host-native form ++ * ++ ******************************************************************************/ ++ ++#if defined(ACPI_BIG_ENDIAN) ++UINT16 AcpiUtReadUint16 (void *SrcPtr) ++{ ++ UINT16 Result = 0; ++ UINT8 *Dst = (UINT8 *)&Result; ++ UINT8 *Src = (UINT8 *)SrcPtr; ++ ++ Dst[0] = Src[1]; ++ Dst[1] = Src[0]; ++ ++ return Result; ++} ++#else ++UINT16 AcpiUtReadUint16 (void *SrcPtr) { return *(UINT16 *)SrcPtr; } ++#endif ++ ++/******************************************************************************* ++ * ++ * FUNCTION: AcpiUtReadUint32 ++ * ++ * PARAMETERS: Src - location containing the little-endian ++ * value ++ * ++ * RETURN: UINT32 value in host-native form ++ * ++ * DESCRIPTION: Read a UINT32 little-endian value from a given location ++ * and return it in host-native form ++ * ++ ******************************************************************************/ ++ ++#if defined(ACPI_BIG_ENDIAN) ++UINT32 AcpiUtReadUint32 (void *SrcPtr) ++{ ++ UINT32 Result = 0; ++ UINT8 *Dst = (UINT8 *)&Result; ++ UINT8 *Src = (UINT8 *)SrcPtr; ++ ++ Dst[0] = Src[3]; ++ Dst[1] = Src[2]; ++ Dst[2] = Src[1]; ++ Dst[3] = Src[0]; ++ ++ return Result; ++} ++#else ++UINT32 AcpiUtReadUint32 (void *SrcPtr) { return *(UINT32 *)SrcPtr; } ++#endif ++ ++/******************************************************************************* ++ * ++ * FUNCTION: AcpiUtReadUint64 ++ * ++ * PARAMETERS: Src - location containing the little-endian ++ * value ++ * ++ * RETURN: UINT64 value in host-native form ++ * ++ * DESCRIPTION: Read a UINT64 little-endian value from a given location ++ * and return it in host-native form ++ * ++ ******************************************************************************/ ++ ++#if defined(ACPI_BIG_ENDIAN) ++UINT64 AcpiUtReadUint64 (void *SrcPtr) ++{ ++ UINT64 Result = 0; ++ UINT8 *Dst = (UINT8 *)&Result; ++ UINT8 *Src = (UINT8 *)SrcPtr; ++ ++ Dst[0] = Src[7]; ++ Dst[1] = Src[6]; ++ Dst[2] = Src[5]; ++ Dst[3] = Src[4]; ++ Dst[4] = Src[3]; ++ Dst[5] = Src[2]; ++ Dst[6] = Src[1]; ++ Dst[7] = Src[0]; ++ ++ return Result; ++} ++#else ++UINT64 AcpiUtReadUint64 (void *SrcPtr) { return *(UINT64 *)SrcPtr; } ++#endif ++ ++/******************************************************************************* ++ * ++ * FUNCTION: AcpiUtWriteUint ++ * ++ * PARAMETERS: DstPtr - where to place the retrieved value ++ * DstLength - space in bytes for this int type ++ * SrcPtr - where the little-endian value lives ++ * SrcLength - space in bytes for this int type ++ * ++ * RETURN: None. ++ * ++ * DESCRIPTION: Write a host-native integer value of the given size, and ++ * store it in the location specified in little-endian form. ++ * Given the amount of integer type casting done, this general ++ * version seems the most useful (vs 32->32, 32->16, 16->32, ++ * ad infinitum) ++ * ++ ******************************************************************************/ ++ ++#if defined(ACPI_BIG_ENDIAN) ++void AcpiUtWriteUint (void *DstPtr, int DstLength, ++ const void *SrcPtr, const int SrcLength) ++{ ++ UINT8 *Dst = (UINT8 *)DstPtr; ++ UINT8 *Src = (UINT8 *)SrcPtr; ++ int Length; ++ int ii; ++ ++ Length = SrcLength >= DstLength ? DstLength : SrcLength; ++ for (ii = 0; ii < Length; ii++) ++ Dst[ii] = Src[SrcLength - ii - 1]; ++ ++} ++#else ++void AcpiUtWriteUint (void *DstPtr, int DstLength, ++ const void *SrcPtr, const int SrcLength) ++{ ++ UINT8 *Dst = (UINT8 *)DstPtr; ++ UINT8 *Src = (UINT8 *)SrcPtr; ++ uint Length; ++ ++ Length = SrcLength > DstLength ? DstLength : SrcLength; ++ memcpy(Dst, Src, Length); ++} ++#endif ++ +Index: acpica-unix2-20200925/source/include/acutils.h +=================================================================== +--- acpica-unix2-20200925.orig/source/include/acutils.h ++++ acpica-unix2-20200925/source/include/acutils.h +@@ -1161,4 +1161,30 @@ AcpiUtConvertStringToUuid ( + UINT8 *UuidBuffer); + #endif + ++/* ++ * utendian -- byte-swapping for big-endian support ++ */ ++#if defined(ACPI_ASL_COMPILER) || defined(ACPI_EXEC_APP) || \ ++ defined(ACPI_HELP_APP) || defined(ACPI_DUMP_APP) || \ ++ defined(ACPI_EXAMPLE_APP) || defined(ACPI_BIN_APP) ++UINT32 ++AcpiUtReadUint32 ( ++ void *SrcPtr); ++ ++UINT16 ++AcpiUtReadUint16 ( ++ void *SrcPtr); ++ ++UINT64 ++AcpiUtReadUint64 ( ++ void *SrcPtr); ++ ++void ++AcpiUtWriteUint ( ++ void *DstPtr, ++ int DstLength, ++ const void *SrcPtr, ++ const int SrcLength); ++#endif ++ + #endif /* _ACUTILS_H */ +Index: acpica-unix2-20200925/source/include/platform/aclinux.h +=================================================================== +--- acpica-unix2-20200925.orig/source/include/platform/aclinux.h ++++ acpica-unix2-20200925/source/include/platform/aclinux.h +@@ -198,6 +198,7 @@ + + #ifdef ACPI_USE_STANDARD_HEADERS + #include <unistd.h> ++#include <endian.h> + #endif + + /* Define/disable kernel-specific declarators */ +@@ -233,6 +234,10 @@ + #define __cdecl + #endif + ++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ ++#define ACPI_BIG_ENDIAN ++#endif ++ + #endif /* __KERNEL__ */ + + #endif /* __ACLINUX_H__ */ diff --git a/0002-Modify-utility-functions-to-be-endian-agnostic.patch b/0002-Modify-utility-functions-to-be-endian-agnostic.patch new file mode 100644 index 0000000..4b99375 --- /dev/null +++ b/0002-Modify-utility-functions-to-be-endian-agnostic.patch @@ -0,0 +1,200 @@ +From d0c879747147c24c47bae363359127d62cd0cae1 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 18 Sep 2020 15:14:30 -0600 +Subject: [PATCH 02/40] Modify utility functions to be endian-agnostic + +All of the modifications here use the big-endian code previously added +(see utendian.c) to make themselves endian-agnostic; i.e., that the code +does not need to change further to work on both big- and little-endian +machines. + +These particular files were changed to handle the reading and writing +of files (the length is often embedded in the binary stream), and to +handle the reading and writing of integer values. The common cases are +to "read" a 32-bit unsigned int in little-endian format, but convert it +to host-native, and to write a byte, word, double word or quad word value +as little-endian, regardless of host-native format. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/acfileio.c | 16 ++++++++++------ + source/common/dmtable.c | 8 ++++---- + source/compiler/dtfield.c | 2 +- + source/compiler/dtsubtable.c | 4 ++-- + source/components/tables/tbprint.c | 13 +++++++++---- + 5 files changed, 26 insertions(+), 17 deletions(-) + +Index: acpica-unix2-20200925/source/common/acfileio.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/acfileio.c ++++ acpica-unix2-20200925/source/common/acfileio.c +@@ -280,6 +280,7 @@ AcGetOneTableFromFile ( + ACPI_TABLE_HEADER *Table; + INT32 Count; + long TableOffset; ++ UINT32 Length; + + + *ReturnTable = NULL; +@@ -319,7 +320,8 @@ AcGetOneTableFromFile ( + + /* Allocate a buffer for the entire table */ + +- Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length); ++ Length = AcpiUtReadUint32(&TableHeader.Length); ++ Table = AcpiOsAllocate ((ACPI_SIZE) Length); + if (!Table) + { + return (AE_NO_MEMORY); +@@ -329,13 +331,13 @@ AcGetOneTableFromFile ( + + fseek (File, TableOffset, SEEK_SET); + +- Count = fread (Table, 1, TableHeader.Length, File); ++ Count = fread (Table, 1, Length, File); + + /* + * Checks for data table headers happen later in the execution. Only verify + * for Aml tables at this point in the code. + */ +- if (GetOnlyAmlTables && Count != (INT32) TableHeader.Length) ++ if (GetOnlyAmlTables && Count != (INT32) Length) + { + Status = AE_ERROR; + goto ErrorExit; +@@ -343,7 +345,7 @@ AcGetOneTableFromFile ( + + /* Validate the checksum (just issue a warning) */ + +- Status = AcpiTbVerifyChecksum (Table, TableHeader.Length); ++ Status = AcpiTbVerifyChecksum (Table, Length); + if (ACPI_FAILURE (Status)) + { + Status = AcCheckTextModeCorruption (Table); +@@ -436,6 +438,7 @@ AcValidateTableHeader ( + long OriginalOffset; + UINT32 FileSize; + UINT32 i; ++ UINT32 Length; + + + ACPI_FUNCTION_TRACE (AcValidateTableHeader); +@@ -464,11 +467,12 @@ AcValidateTableHeader ( + /* Validate table length against bytes remaining in the file */ + + FileSize = CmGetFileSize (File); +- if (TableHeader.Length > (UINT32) (FileSize - TableOffset)) ++ Length = AcpiUtReadUint32(&TableHeader.Length); ++ if (Length > (UINT32) (FileSize - TableOffset)) + { + fprintf (stderr, "Table [%4.4s] is too long for file - " + "needs: 0x%.2X, remaining in file: 0x%.2X\n", +- TableHeader.Signature, TableHeader.Length, ++ TableHeader.Signature, Length, + (UINT32) (FileSize - TableOffset)); + return (AE_BAD_HEADER); + } +Index: acpica-unix2-20200925/source/common/dmtable.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtable.c ++++ acpica-unix2-20200925/source/common/dmtable.c +@@ -534,7 +534,7 @@ AcpiDmDumpDataTable ( + { + /* Dump the raw table data */ + +- Length = Table->Length; ++ Length = AcpiUtReadUint32(&Table->Length); + + AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n", + ACPI_RAW_TABLE_DATA_HEADER, Length, Length); +@@ -551,7 +551,7 @@ AcpiDmDumpDataTable ( + */ + if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) + { +- Length = Table->Length; ++ Length = AcpiUtReadUint32(&Table->Length); + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); + if (ACPI_FAILURE (Status)) + { +@@ -571,7 +571,7 @@ AcpiDmDumpDataTable ( + /* + * All other tables must use the common ACPI table header, dump it now + */ +- Length = Table->Length; ++ Length = AcpiUtReadUint32(&Table->Length); + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader); + if (ACPI_FAILURE (Status)) + { +@@ -1179,7 +1179,7 @@ AcpiDmDumpTable ( + + AcpiOsPrintf ("%2.2X", *Target); + Temp8 = AcpiDmGenerateChecksum (Table, +- ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, ++ AcpiUtReadUint32(&(ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length)), + ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); + + if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) +Index: acpica-unix2-20200925/source/compiler/dtfield.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dtfield.c ++++ acpica-unix2-20200925/source/compiler/dtfield.c +@@ -361,7 +361,7 @@ DtCompileInteger ( + DtError (ASL_ERROR, ASL_MSG_INTEGER_SIZE, Field, AslGbl_MsgBuffer); + } + +- memcpy (Buffer, &Value, ByteLength); ++ AcpiUtWriteUint(Buffer, ByteLength, &Value, sizeof(UINT64)); + return; + } + +Index: acpica-unix2-20200925/source/compiler/dtsubtable.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dtsubtable.c ++++ acpica-unix2-20200925/source/compiler/dtsubtable.c +@@ -378,6 +378,6 @@ DtSetSubtableLength ( + return; + } + +- memcpy (Subtable->LengthField, &Subtable->TotalLength, +- Subtable->SizeOfLengthField); ++ AcpiUtWriteUint(Subtable->LengthField, Subtable->SizeOfLengthField, ++ &Subtable->TotalLength, sizeof(Subtable->TotalLength)); + } +Index: acpica-unix2-20200925/source/components/tables/tbprint.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/tables/tbprint.c ++++ acpica-unix2-20200925/source/components/tables/tbprint.c +@@ -44,6 +44,8 @@ + #include "acpi.h" + #include "accommon.h" + #include "actables.h" ++#include "platform/acenv.h" ++#include "acutils.h" + + #define _COMPONENT ACPI_TABLES + ACPI_MODULE_NAME ("tbprint") +@@ -151,7 +153,7 @@ AcpiTbPrintTableHeader ( + + ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X", + Header->Signature, ACPI_FORMAT_UINT64 (Address), +- Header->Length)); ++ AcpiUtReadUint32(&Header->Length))); + } + else if (ACPI_VALIDATE_RSDP_SIG (Header->Signature)) + { +@@ -178,9 +180,12 @@ AcpiTbPrintTableHeader ( + "%-4.4s 0x%8.8X%8.8X" + " %06X (v%.2d %-6.6s %-8.8s %08X %-4.4s %08X)", + LocalHeader.Signature, ACPI_FORMAT_UINT64 (Address), +- LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId, +- LocalHeader.OemTableId, LocalHeader.OemRevision, +- LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision)); ++ AcpiUtReadUint32(&LocalHeader.Length), ++ LocalHeader.Revision, LocalHeader.OemId, ++ LocalHeader.OemTableId, ++ AcpiUtReadUint32(&LocalHeader.OemRevision), ++ LocalHeader.AslCompilerId, ++ AcpiUtReadUint32(&LocalHeader.AslCompilerRevision))); + } + } + diff --git a/0003-Always-display-table-header-content-in-human-readabl.patch b/0003-Always-display-table-header-content-in-human-readabl.patch new file mode 100644 index 0000000..4ba465b --- /dev/null +++ b/0003-Always-display-table-header-content-in-human-readabl.patch @@ -0,0 +1,51 @@ +From 08862d9a4be8262c045549c287adf1e6c320cbec Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 18 Sep 2020 15:20:37 -0600 +Subject: [PATCH 03/40] Always display table header content in human-readable + form + +When comparing two binary data tables, little-endian values are read +from each table header and printed out. Make sure they show up in a +form that makes sense to humans. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/tools/acpibin/abcompare.c | 13 ++++++++++--- + 1 file changed, 10 insertions(+), 3 deletions(-) + +Index: acpica-unix2-20200925/source/tools/acpibin/abcompare.c +=================================================================== +--- acpica-unix2-20200925.orig/source/tools/acpibin/abcompare.c ++++ acpica-unix2-20200925/source/tools/acpibin/abcompare.c +@@ -42,6 +42,7 @@ + */ + + #include "acpibin.h" ++#include "acutils.h" + + + ACPI_TABLE_HEADER Header1; +@@ -179,14 +180,20 @@ AbPrintHeadersInfo ( + /* Display header information for both headers */ + + printf ("Signature %8.4s : %4.4s\n", Header->Signature, Header2->Signature); +- printf ("Length %8.8X : %8.8X\n", Header->Length, Header2->Length); ++ printf ("Length %8.8X : %8.8X\n", ++ AcpiUtReadUint32(&Header->Length), ++ AcpiUtReadUint32(&Header2->Length)); + printf ("Revision %8.2X : %2.2X\n", Header->Revision, Header2->Revision); + printf ("Checksum %8.2X : %2.2X\n", Header->Checksum, Header2->Checksum); + printf ("OEM ID %8.6s : %.6s\n", Header->OemId, Header2->OemId); + printf ("OEM Table ID %8.8s : %.8s\n", Header->OemTableId, Header2->OemTableId); +- printf ("OEM Revision %8.8X : %8.8X\n", Header->OemRevision, Header2->OemRevision); ++ printf ("OEM Revision %8.8X : %8.8X\n", ++ AcpiUtReadUint32(&Header->OemRevision), ++ AcpiUtReadUint32(&Header2->OemRevision)); + printf ("ASL Compiler ID %8.4s : %.4s\n", Header->AslCompilerId, Header2->AslCompilerId); +- printf ("Compiler Revision %8.8X : %8.8X\n", Header->AslCompilerRevision, Header2->AslCompilerRevision); ++ printf ("Compiler Revision %8.8X : %8.8X\n", ++ AcpiUtReadUint32(&Header->AslCompilerRevision), ++ AcpiUtReadUint32(&Header2->AslCompilerRevision)); + printf ("\n"); + } + diff --git a/0004-Re-enable-support-for-big-endian-machines.patch b/0004-Re-enable-support-for-big-endian-machines.patch new file mode 100644 index 0000000..c88eee8 --- /dev/null +++ b/0004-Re-enable-support-for-big-endian-machines.patch @@ -0,0 +1,78 @@ +From 16c399a7e2a2c7bd8fb8f38fed202f23c3a786a9 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 16 Sep 2020 16:27:06 -0600 +Subject: [PATCH 04/40] Re-enable support for big-endian machines + +First, disable the big-endian check and fail. Then, make sure the +namespace gets initialized properly (NB: needed even if we are only +compiling/disassembling data tables). + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/compiler/aslmain.c | 12 ------------ + source/components/namespace/nsutils.c | 7 +++++-- + 2 files changed, 5 insertions(+), 14 deletions(-) + +Index: acpica-unix2-20200925/source/compiler/aslmain.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslmain.c ++++ acpica-unix2-20200925/source/compiler/aslmain.c +@@ -101,18 +101,6 @@ main ( + + signal (SIGINT, AslSignalHandler); + +- /* +- * Big-endian machines are not currently supported. ACPI tables must +- * be little-endian, and support for big-endian machines needs to +- * be implemented. +- */ +- if (UtIsBigEndianMachine ()) +- { +- fprintf (stderr, +- "iASL is not currently supported on big-endian machines.\n"); +- return (-1); +- } +- + AcpiOsInitialize (); + ACPI_DEBUG_INITIALIZE (); /* For debug version only */ + +Index: acpica-unix2-20200925/source/components/namespace/nsutils.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsutils.c ++++ acpica-unix2-20200925/source/components/namespace/nsutils.c +@@ -272,6 +272,7 @@ AcpiNsBuildInternalName ( + const char *ExternalName = Info->NextExternalChar; + char *Result = NULL; + UINT32 i; ++ char TmpSeg[ACPI_NAMESEG_SIZE+1]; + + + ACPI_FUNCTION_TRACE (NsBuildInternalName); +@@ -335,6 +336,7 @@ AcpiNsBuildInternalName ( + + for (; NumSegments; NumSegments--) + { ++ memset(TmpSeg, 0, ACPI_NAMESEG_SIZE+1); + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) + { + if (ACPI_IS_PATH_SEPARATOR (*ExternalName) || +@@ -342,16 +344,17 @@ AcpiNsBuildInternalName ( + { + /* Pad the segment with underscore(s) if segment is short */ + +- Result[i] = '_'; ++ TmpSeg[i] = '_'; + } + else + { + /* Convert the character to uppercase and save it */ + +- Result[i] = (char) toupper ((int) *ExternalName); ++ TmpSeg[i] = (char) toupper ((int) *ExternalName); + ExternalName++; + } + } ++ AcpiUtWriteUint(Result, ACPI_NAMESEG_SIZE, TmpSeg, ACPI_NAMESEG_SIZE); + + /* Now we must have a path separator, or the pathname is bad */ + diff --git a/0005-Support-MADT-aka-APIC-in-a-big-endian-world.patch b/0005-Support-MADT-aka-APIC-in-a-big-endian-world.patch new file mode 100644 index 0000000..cc1392b --- /dev/null +++ b/0005-Support-MADT-aka-APIC-in-a-big-endian-world.patch @@ -0,0 +1,32 @@ +From f11fb1c691174eb7d236d60ad48da19e56291fef Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Thu, 15 Oct 2020 12:12:11 -0600 +Subject: [PATCH 05/40] Support MADT (aka APIC) in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -607,7 +607,7 @@ AcpiDmDumpMadt ( + { + ACPI_STATUS Status; + ACPI_SUBTABLE_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_MADT); + ACPI_DMTABLE_INFO *InfoTable; + +@@ -623,7 +623,7 @@ AcpiDmDumpMadt ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + /* Common subtable header */ + diff --git a/0006-Support-ASF-tables-in-a-big-endian-world.patch b/0006-Support-ASF-tables-in-a-big-endian-world.patch new file mode 100644 index 0000000..194e5ca --- /dev/null +++ b/0006-Support-ASF-tables-in-a-big-endian-world.patch @@ -0,0 +1,55 @@ +From 5ac8e9cca71eacd4f18dba2eb89e9b65a805f712 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 18 Sep 2020 16:41:02 -0600 +Subject: [PATCH 06/40] Support ASF! tables in a big-endian world + +Read the table length properly and it all works right for big-endian. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 10 ++++++---- + 1 file changed, 6 insertions(+), 4 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -79,16 +79,18 @@ AcpiDmDumpAsf ( + UINT32 DataOffset = 0; + UINT32 i; + UINT8 Type; ++ UINT32 TableLength; + + + /* No main table, only subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset); +- while (Offset < Table->Length) ++ TableLength = AcpiUtReadUint32(&Table->Length); ++ while (Offset < TableLength) + { + /* Common subtable header */ + +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Header.Length, AcpiDmTableInfoAsfHdr); + if (ACPI_FAILURE (Status)) + { +@@ -146,7 +148,7 @@ AcpiDmDumpAsf ( + return; + } + +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Header.Length, InfoTable); + if (ACPI_FAILURE (Status)) + { +@@ -163,7 +165,7 @@ AcpiDmDumpAsf ( + for (i = 0; i < DataCount; i++) + { + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, DataOffset, ++ Status = AcpiDmDumpTable (TableLength, DataOffset, + DataTable, DataLength, DataInfoTable); + if (ACPI_FAILURE (Status)) + { diff --git a/0007-Support-CPEP-tables-in-a-big-endian-world.patch b/0007-Support-CPEP-tables-in-a-big-endian-world.patch new file mode 100644 index 0000000..f58cf61 --- /dev/null +++ b/0007-Support-CPEP-tables-in-a-big-endian-world.patch @@ -0,0 +1,32 @@ +From d66af65b4cd0a2719e5a06b77f8eda5e892bfc63 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 18 Sep 2020 16:54:13 -0600 +Subject: [PATCH 07/40] Support CPEP tables in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -243,7 +243,7 @@ AcpiDmDumpCpep ( + { + ACPI_STATUS Status; + ACPI_CPEP_POLLING *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_CPEP); + + +@@ -258,7 +258,7 @@ AcpiDmDumpCpep ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset, Subtable, diff --git a/0008-Support-DBG2-table-in-a-big-endian-world.patch b/0008-Support-DBG2-table-in-a-big-endian-world.patch new file mode 100644 index 0000000..d0dac5e --- /dev/null +++ b/0008-Support-DBG2-table-in-a-big-endian-world.patch @@ -0,0 +1,254 @@ +From 2d7396fe2b270b0bed6a6436f9e3d15cfbb9abfc Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sat, 19 Sep 2020 13:37:38 -0600 +Subject: [PATCH 08/40] Support DBG2 table in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 35 +++++++++++++++++-------------- + source/compiler/dttable1.c | 43 ++++++++++++++++++++++++-------------- + 2 files changed, 46 insertions(+), 32 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -298,7 +298,7 @@ AcpiDmDumpCsrt ( + ACPI_CSRT_GROUP *Subtable; + ACPI_CSRT_SHARED_INFO *SharedInfoTable; + ACPI_CSRT_DESCRIPTOR *SubSubtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_CSRT); + UINT32 SubOffset; + UINT32 SubSubOffset; +@@ -310,7 +310,7 @@ AcpiDmDumpCsrt ( + /* Subtables (Resource Groups) */ + + Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + /* Resource group subtable */ + +@@ -344,7 +344,7 @@ AcpiDmDumpCsrt ( + Offset + SubOffset); + + while ((SubOffset < Subtable->Length) && +- ((Offset + SubOffset) < Table->Length)) ++ ((Offset + SubOffset) < Length)) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubtable, +@@ -405,12 +405,13 @@ AcpiDmDumpDbg2 ( + { + ACPI_STATUS Status; + ACPI_DBG2_DEVICE *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_DBG2); + UINT32 i; + UINT32 ArrayOffset; + UINT32 AbsoluteOffset; + UINT8 *Array; ++ UINT16 SubtableLength; + + + /* Main table */ +@@ -424,11 +425,12 @@ AcpiDmDumpDbg2 ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + AcpiOsPrintf ("\n"); ++ SubtableLength = AcpiUtReadUint16(&Subtable->Length); + Status = AcpiDmDumpTable (Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoDbg2Device); ++ SubtableLength, AcpiDmTableInfoDbg2Device); + if (ACPI_FAILURE (Status)) + { + return; +@@ -438,13 +440,13 @@ AcpiDmDumpDbg2 ( + + for (i = 0; i < Subtable->RegisterCount; i++) + { +- ArrayOffset = Subtable->BaseAddressOffset + ++ ArrayOffset = AcpiUtReadUint16(&Subtable->BaseAddressOffset) + + (sizeof (ACPI_GENERIC_ADDRESS) * i); + AbsoluteOffset = Offset + ArrayOffset; + Array = (UINT8 *) Subtable + ArrayOffset; + + Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, +- Subtable->Length, AcpiDmTableInfoDbg2Addr); ++ SubtableLength, AcpiDmTableInfoDbg2Addr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -455,13 +457,13 @@ AcpiDmDumpDbg2 ( + + for (i = 0; i < Subtable->RegisterCount; i++) + { +- ArrayOffset = Subtable->AddressSizeOffset + ++ ArrayOffset = AcpiUtReadUint16(&Subtable->AddressSizeOffset) + + (sizeof (UINT32) * i); + AbsoluteOffset = Offset + ArrayOffset; + Array = (UINT8 *) Subtable + ArrayOffset; + + Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, +- Subtable->Length, AcpiDmTableInfoDbg2Size); ++ SubtableLength, AcpiDmTableInfoDbg2Size); + if (ACPI_FAILURE (Status)) + { + return; +@@ -471,12 +473,12 @@ AcpiDmDumpDbg2 ( + /* Dump the Namestring (required) */ + + AcpiOsPrintf ("\n"); +- ArrayOffset = Subtable->NamepathOffset; ++ ArrayOffset = AcpiUtReadUint16(&Subtable->NamepathOffset); + AbsoluteOffset = Offset + ArrayOffset; + Array = (UINT8 *) Subtable + ArrayOffset; + + Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, +- Subtable->Length, AcpiDmTableInfoDbg2Name); ++ SubtableLength, AcpiDmTableInfoDbg2Name); + if (ACPI_FAILURE (Status)) + { + return; +@@ -486,8 +488,9 @@ AcpiDmDumpDbg2 ( + + if (Subtable->OemDataOffset) + { +- Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset, +- Table, Subtable->OemDataLength, ++ Status = AcpiDmDumpTable (Length, ++ Offset + AcpiUtReadUint16(&Subtable->OemDataOffset), ++ Table, AcpiUtReadUint16(&Subtable->OemDataLength), + AcpiDmTableInfoDbg2OemData); + if (ACPI_FAILURE (Status)) + { +@@ -497,9 +500,9 @@ AcpiDmDumpDbg2 ( + + /* Point to next subtable */ + +- Offset += Subtable->Length; ++ Offset += SubtableLength; + Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Subtable, +- Subtable->Length); ++ SubtableLength); + } + } + +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -281,6 +281,7 @@ DtCompileCsrt ( + DT_FIELD **PFieldList = (DT_FIELD **) List; + UINT32 DescriptorCount; + UINT32 GroupLength; ++ UINT32 Tmp; + + + /* Subtables (Resource Groups) */ +@@ -299,12 +300,13 @@ DtCompileCsrt ( + + /* Compute the number of resource descriptors */ + +- GroupLength = +- (ACPI_CAST_PTR (ACPI_CSRT_GROUP, +- Subtable->Buffer))->Length - +- (ACPI_CAST_PTR (ACPI_CSRT_GROUP, +- Subtable->Buffer))->SharedInfoLength - +- sizeof (ACPI_CSRT_GROUP); ++ Tmp = AcpiUtReadUint32(&(ACPI_CAST_PTR (ACPI_CSRT_GROUP, ++ Subtable->Buffer))->Length); ++ GroupLength = Tmp; ++ Tmp = AcpiUtReadUint32(&(ACPI_CAST_PTR (ACPI_CSRT_GROUP, ++ Subtable->Buffer))->SharedInfoLength); ++ GroupLength -= Tmp; ++ GroupLength -= sizeof (ACPI_CSRT_GROUP); + + DescriptorCount = (GroupLength / + sizeof (ACPI_CSRT_DESCRIPTOR)); +@@ -392,6 +394,7 @@ DtCompileDbg2 ( + ACPI_DBG2_DEVICE *DeviceInfo; + UINT16 CurrentOffset; + UINT32 i; ++ UINT32 Tmp; + + + /* Main table */ +@@ -408,10 +411,12 @@ DtCompileDbg2 ( + /* Main table fields */ + + Dbg2Header = ACPI_CAST_PTR (ACPI_DBG2_HEADER, Subtable->Buffer); +- Dbg2Header->InfoOffset = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF ( +- ACPI_ADD_PTR (UINT8, Dbg2Header, sizeof (ACPI_DBG2_HEADER)), Dbg2Header); ++ Tmp = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF ( ++ ACPI_ADD_PTR (UINT8, Dbg2Header, sizeof (ACPI_DBG2_HEADER)), Dbg2Header); ++ AcpiUtWriteUint(&Dbg2Header->InfoOffset, sizeof(UINT32), ++ &Tmp, sizeof(UINT32)); + +- SubtableCount = Dbg2Header->InfoCount; ++ SubtableCount = Tmp; + DtPushSubtable (Subtable); + + /* Process all Device Information subtables (Count = InfoCount) */ +@@ -438,7 +443,8 @@ DtCompileDbg2 ( + + /* BaseAddressRegister GAS array (Required, size is RegisterCount) */ + +- DeviceInfo->BaseAddressOffset = CurrentOffset; ++ AcpiUtWriteUint(&DeviceInfo->BaseAddressOffset, sizeof(UINT16), ++ &CurrentOffset, sizeof(UINT16)); + for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Addr, +@@ -454,7 +460,8 @@ DtCompileDbg2 ( + + /* AddressSize array (Required, size = RegisterCount) */ + +- DeviceInfo->AddressSizeOffset = CurrentOffset; ++ AcpiUtWriteUint(&DeviceInfo->AddressSizeOffset, sizeof(UINT16), ++ &CurrentOffset, sizeof(UINT16)); + for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Size, +@@ -470,7 +477,8 @@ DtCompileDbg2 ( + + /* NamespaceString device identifier (Required, size = NamePathLength) */ + +- DeviceInfo->NamepathOffset = CurrentOffset; ++ AcpiUtWriteUint(&DeviceInfo->NamepathOffset, sizeof(UINT16), ++ &CurrentOffset, sizeof(UINT16)); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Name, + &Subtable); + if (ACPI_FAILURE (Status)) +@@ -480,8 +488,9 @@ DtCompileDbg2 ( + + /* Update the device info header */ + +- DeviceInfo->NamepathLength = (UINT16) Subtable->Length; +- CurrentOffset += (UINT16) DeviceInfo->NamepathLength; ++ AcpiUtWriteUint(&DeviceInfo->NamepathLength, sizeof(UINT16), ++ &Subtable->Length, sizeof(UINT32)); ++ CurrentOffset += AcpiUtReadUint16(&DeviceInfo->NamepathLength); + DtInsertSubtable (ParentTable, Subtable); + + /* OemData - Variable-length data (Optional, size = OemDataLength) */ +@@ -508,8 +517,10 @@ DtCompileDbg2 ( + + if (Subtable && Subtable->Length) + { +- DeviceInfo->OemDataOffset = CurrentOffset; +- DeviceInfo->OemDataLength = (UINT16) Subtable->Length; ++ AcpiUtWriteUint(&DeviceInfo->OemDataOffset, sizeof(UINT16), ++ &CurrentOffset, sizeof(UINT16)); ++ AcpiUtWriteUint(&DeviceInfo->OemDataLength, sizeof(UINT16), ++ &Subtable->Length, sizeof(UINT32)); + + DtInsertSubtable (ParentTable, Subtable); + } diff --git a/0009-Support-DMAR-in-a-big-endian-world.patch b/0009-Support-DMAR-in-a-big-endian-world.patch new file mode 100644 index 0000000..d80d519 --- /dev/null +++ b/0009-Support-DMAR-in-a-big-endian-world.patch @@ -0,0 +1,171 @@ +From 01aad41e59efd615ac075fcedbaab0c60f9e1e11 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sat, 19 Sep 2020 15:22:00 -0600 +Subject: [PATCH 09/40] Support DMAR in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtable.c | 4 ++-- + source/common/dmtbdump1.c | 26 +++++++++++++++----------- + source/compiler/dttable1.c | 12 +++++++----- + 3 files changed, 24 insertions(+), 18 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtable.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtable.c ++++ acpica-unix2-20200925/source/common/dmtable.c +@@ -1244,13 +1244,13 @@ AcpiDmDumpTable ( + + /* DMAR subtable types */ + +- Temp16 = ACPI_GET16 (Target); ++ Temp16 = AcpiUtReadUint16 (Target); + if (Temp16 > ACPI_DMAR_TYPE_RESERVED) + { + Temp16 = ACPI_DMAR_TYPE_RESERVED; + } + +- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), ++ AcpiOsPrintf (UINT16_FORMAT, Temp16, + AcpiDmDmarSubnames[Temp16]); + break; + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -526,13 +526,15 @@ AcpiDmDumpDmar ( + { + ACPI_STATUS Status; + ACPI_DMAR_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_DMAR); + ACPI_DMTABLE_INFO *InfoTable; + ACPI_DMAR_DEVICE_SCOPE *ScopeTable; + UINT32 ScopeOffset; + UINT8 *PciPath; + UINT32 PathOffset; ++ UINT16 SubtableType; ++ UINT16 SubtableLength; + + + /* Main table */ +@@ -546,13 +548,14 @@ AcpiDmDumpDmar ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); ++ SubtableLength = AcpiUtReadUint16(&Subtable->Length); + Status = AcpiDmDumpTable (Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoDmarHdr); ++ SubtableLength, AcpiDmTableInfoDmarHdr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -560,7 +563,8 @@ AcpiDmDumpDmar ( + + AcpiOsPrintf ("\n"); + +- switch (Subtable->Type) ++ SubtableType = AcpiUtReadUint16(&Subtable->Type); ++ switch (SubtableType) + { + case ACPI_DMAR_TYPE_HARDWARE_UNIT: + +@@ -595,12 +599,12 @@ AcpiDmDumpDmar ( + default: + + AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", +- Subtable->Type); ++ SubtableType); + return; + } + + Status = AcpiDmDumpTable (Length, Offset, Subtable, +- Subtable->Length, InfoTable); ++ SubtableLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; +@@ -609,8 +613,8 @@ AcpiDmDumpDmar ( + /* + * Dump the optional device scope entries + */ +- if ((Subtable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || +- (Subtable->Type == ACPI_DMAR_TYPE_NAMESPACE)) ++ if ((SubtableType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || ++ (SubtableType == ACPI_DMAR_TYPE_NAMESPACE)) + { + /* These types do not support device scopes */ + +@@ -618,7 +622,7 @@ AcpiDmDumpDmar ( + } + + ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, Subtable, ScopeOffset); +- while (ScopeOffset < Subtable->Length) ++ while (ScopeOffset < SubtableLength) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, +@@ -659,9 +663,9 @@ AcpiDmDumpDmar ( + NextSubtable: + /* Point to next subtable */ + +- Offset += Subtable->Length; ++ Offset += SubtableLength; + Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable, +- Subtable->Length); ++ SubtableLength); + } + } + +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -560,6 +560,7 @@ DtCompileDmar ( + ACPI_DMAR_DEVICE_SCOPE *DmarDeviceScope; + UINT32 DeviceScopeLength; + UINT32 PciPathLength; ++ UINT16 DmarHeaderType; + + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable); +@@ -590,7 +591,8 @@ DtCompileDmar ( + + DmarHeader = ACPI_CAST_PTR (ACPI_DMAR_HEADER, Subtable->Buffer); + +- switch (DmarHeader->Type) ++ DmarHeaderType = AcpiUtReadUint16(&DmarHeader->Type); ++ switch (DmarHeaderType) + { + case ACPI_DMAR_TYPE_HARDWARE_UNIT: + +@@ -637,8 +639,8 @@ DtCompileDmar ( + /* + * Optional Device Scope subtables + */ +- if ((DmarHeader->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || +- (DmarHeader->Type == ACPI_DMAR_TYPE_NAMESPACE)) ++ if ((DmarHeaderType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || ++ (DmarHeaderType == ACPI_DMAR_TYPE_NAMESPACE)) + { + /* These types do not support device scopes */ + +@@ -647,8 +649,8 @@ DtCompileDmar ( + } + + DtPushSubtable (Subtable); +- DeviceScopeLength = DmarHeader->Length - Subtable->Length - +- ParentTable->Length; ++ DeviceScopeLength = AcpiUtReadUint16(&DmarHeader->Length) - ++ Subtable->Length - ParentTable->Length; + while (DeviceScopeLength) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarScope, diff --git a/0010-Support-DRTM-in-a-big-endian-world.patch b/0010-Support-DRTM-in-a-big-endian-world.patch new file mode 100644 index 0000000..d4d94af --- /dev/null +++ b/0010-Support-DRTM-in-a-big-endian-world.patch @@ -0,0 +1,112 @@ +From 9583e760908d4b7d2dabec82137d16f2492d2773 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sat, 19 Sep 2020 15:44:06 -0600 +Subject: [PATCH 10/40] Support DRTM in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 25 +++++++++++++++---------- + source/compiler/dttable1.c | 6 ++++-- + 2 files changed, 19 insertions(+), 12 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -692,11 +692,14 @@ AcpiDmDumpDrtm ( + ACPI_DRTM_RESOURCE_LIST *DrtmRl; + ACPI_DRTM_DPS_ID *DrtmDps; + UINT32 Count; ++ UINT32 ResourceCount; ++ UINT32 ValidatedTableCount; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, + AcpiDmTableInfoDrtm); + if (ACPI_FAILURE (Status)) + { +@@ -711,7 +714,7 @@ AcpiDmDumpDrtm ( + + DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset); + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, ++ Status = AcpiDmDumpTable (TableLength, Offset, + DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), + AcpiDmTableInfoDrtm0); + if (ACPI_FAILURE (Status)) +@@ -724,10 +727,11 @@ AcpiDmDumpDrtm ( + /* Dump Validated table addresses */ + + Count = 0; +- while ((Offset < Table->Length) && +- (DrtmVtl->ValidatedTableCount > Count)) ++ ValidatedTableCount = AcpiUtReadUint32(&DrtmVtl->ValidatedTableCount); ++ while ((Offset < TableLength) && ++ (ValidatedTableCount > Count)) + { +- Status = AcpiDmDumpTable (Table->Length, Offset, ++ Status = AcpiDmDumpTable (TableLength, Offset, + ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), + AcpiDmTableInfoDrtm0a); + if (ACPI_FAILURE (Status)) +@@ -743,7 +747,7 @@ AcpiDmDumpDrtm ( + + DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset); + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, ++ Status = AcpiDmDumpTable (TableLength, Offset, + DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), + AcpiDmTableInfoDrtm1); + if (ACPI_FAILURE (Status)) +@@ -756,10 +760,11 @@ AcpiDmDumpDrtm ( + /* Dump the Resource List */ + + Count = 0; +- while ((Offset < Table->Length) && +- (DrtmRl->ResourceCount > Count)) ++ ResourceCount = AcpiUtReadUint32(&DrtmRl->ResourceCount); ++ while ((Offset < TableLength) && ++ (ResourceCount > Count)) + { +- Status = AcpiDmDumpTable (Table->Length, Offset, ++ Status = AcpiDmDumpTable (TableLength, Offset, + ACPI_ADD_PTR (void, Table, Offset), + sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a); + if (ACPI_FAILURE (Status)) +@@ -775,7 +780,7 @@ AcpiDmDumpDrtm ( + + DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset); + AcpiOsPrintf ("\n"); +- (void) AcpiDmDumpTable (Table->Length, Offset, ++ (void) AcpiDmDumpTable (TableLength, Offset, + DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2); + } + +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -775,7 +775,8 @@ DtCompileDrtm ( + Count++; + } + +- DrtmVtl->ValidatedTableCount = Count; ++ AcpiUtWriteUint(&DrtmVtl->ValidatedTableCount, sizeof(UINT32), ++ &Count, sizeof(UINT32)); + DtPopSubtable (); + ParentTable = DtPeekSubtable (); + +@@ -813,7 +814,8 @@ DtCompileDrtm ( + Count++; + } + +- DrtmRl->ResourceCount = Count; ++ AcpiUtWriteUint(&DrtmRl->ResourceCount, sizeof(UINT32), ++ &Count, sizeof(UINT32)); + DtPopSubtable (); + ParentTable = DtPeekSubtable (); + diff --git a/0011-Support-EINJ-in-a-big-endian-world.patch b/0011-Support-EINJ-in-a-big-endian-world.patch new file mode 100644 index 0000000..acb64f1 --- /dev/null +++ b/0011-Support-EINJ-in-a-big-endian-world.patch @@ -0,0 +1,32 @@ +From b264cb9a07faa05e6d8e5e6c2381270c218d88c4 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sat, 19 Sep 2020 15:50:19 -0600 +Subject: [PATCH 11/40] Support EINJ in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -804,7 +804,7 @@ AcpiDmDumpEinj ( + { + ACPI_STATUS Status; + ACPI_WHEA_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_EINJ); + + +@@ -819,7 +819,7 @@ AcpiDmDumpEinj ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset, Subtable, diff --git a/0012-Support-ERST-in-a-big-endian-world.patch b/0012-Support-ERST-in-a-big-endian-world.patch new file mode 100644 index 0000000..2bd176e --- /dev/null +++ b/0012-Support-ERST-in-a-big-endian-world.patch @@ -0,0 +1,32 @@ +From 99f27aa1a38868a716aefd9408a8cd3788644d13 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sat, 19 Sep 2020 15:54:56 -0600 +Subject: [PATCH 12/40] Support ERST in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -857,7 +857,7 @@ AcpiDmDumpErst ( + { + ACPI_STATUS Status; + ACPI_WHEA_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_ERST); + + +@@ -872,7 +872,7 @@ AcpiDmDumpErst ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Length, Offset, Subtable, diff --git a/0013-Support-FADT-aka-FACP-in-a-big-endian-world.patch b/0013-Support-FADT-aka-FACP-in-a-big-endian-world.patch new file mode 100644 index 0000000..9fd3120 --- /dev/null +++ b/0013-Support-FADT-aka-FACP-in-a-big-endian-world.patch @@ -0,0 +1,189 @@ +From 3288b60b3ddc2df4656842d424bfc1e6a51b2ad2 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sun, 20 Sep 2020 11:42:21 -0600 +Subject: [PATCH 13/40] Support FADT (aka, FACP) in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump.c | 25 ++++++++++++----------- + source/components/tables/tbfadt.c | 34 +++++++++++++++++++++++-------- + 2 files changed, 38 insertions(+), 21 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c ++++ acpica-unix2-20200925/source/common/dmtbdump.c +@@ -358,11 +358,12 @@ AcpiDmDumpFadt ( + ACPI_TABLE_HEADER *Table) + { + ACPI_STATUS Status; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, + AcpiDmTableInfoFadt1); + if (ACPI_FAILURE (Status)) + { +@@ -371,10 +372,10 @@ AcpiDmDumpFadt ( + + /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */ + +- if ((Table->Length > ACPI_FADT_V1_SIZE) && +- (Table->Length <= ACPI_FADT_V2_SIZE)) ++ if ((TableLength > ACPI_FADT_V1_SIZE) && ++ (TableLength <= ACPI_FADT_V2_SIZE)) + { +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, + AcpiDmTableInfoFadt2); + if (ACPI_FAILURE (Status)) + { +@@ -384,9 +385,9 @@ AcpiDmDumpFadt ( + + /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */ + +- else if (Table->Length > ACPI_FADT_V2_SIZE) ++ else if (TableLength > ACPI_FADT_V2_SIZE) + { +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, + AcpiDmTableInfoFadt3); + if (ACPI_FAILURE (Status)) + { +@@ -395,9 +396,9 @@ AcpiDmDumpFadt ( + + /* Check for FADT revision 5 fields and up (ACPI 5.0+) */ + +- if (Table->Length > ACPI_FADT_V3_SIZE) ++ if (TableLength > ACPI_FADT_V3_SIZE) + { +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, + AcpiDmTableInfoFadt5); + if (ACPI_FAILURE (Status)) + { +@@ -407,9 +408,9 @@ AcpiDmDumpFadt ( + + /* Check for FADT revision 6 fields and up (ACPI 6.0+) */ + +- if (Table->Length > ACPI_FADT_V3_SIZE) ++ if (TableLength > ACPI_FADT_V3_SIZE) + { +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, + AcpiDmTableInfoFadt6); + if (ACPI_FAILURE (Status)) + { +@@ -420,11 +421,11 @@ AcpiDmDumpFadt ( + + /* Validate various fields in the FADT, including length */ + +- AcpiTbCreateLocalFadt (Table, Table->Length); ++ AcpiTbCreateLocalFadt (Table, TableLength); + + /* Validate FADT length against the revision */ + +- AcpiDmValidateFadtLength (Table->Revision, Table->Length); ++ AcpiDmValidateFadtLength (Table->Revision, TableLength); + } + + +Index: acpica-unix2-20200925/source/components/tables/tbfadt.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/tables/tbfadt.c ++++ acpica-unix2-20200925/source/components/tables/tbfadt.c +@@ -289,7 +289,6 @@ AcpiTbSelectAddress ( + UINT32 Address32, + UINT64 Address64) + { +- + if (!Address64) + { + /* 64-bit address is zero, use 32-bit address */ +@@ -520,6 +519,9 @@ AcpiTbConvertFadt ( + UINT8 Length; + UINT8 Flags; + UINT32 i; ++ UINT32 Tmp; ++ UINT32 Value32; ++ UINT64 Value64; + + + /* +@@ -533,7 +535,7 @@ AcpiTbConvertFadt ( + * Note: The FADT revision value is unreliable. Only the length can be + * trusted. + */ +- if (AcpiGbl_FADT.Header.Length <= ACPI_FADT_V2_SIZE) ++ if (AcpiUtReadUint32(&AcpiGbl_FADT.Header.Length) <= ACPI_FADT_V2_SIZE) + { + AcpiGbl_FADT.PreferredProfile = 0; + AcpiGbl_FADT.PstateControl = 0; +@@ -546,14 +548,19 @@ AcpiTbConvertFadt ( + * current FADT version as defined by the ACPI specification. + * Thus, we will have a common FADT internally. + */ +- AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT); ++ Tmp = sizeof (ACPI_TABLE_FADT); ++ AcpiUtWriteUint(&AcpiGbl_FADT.Header.Length, sizeof(UINT32), ++ &Tmp, sizeof(UINT32)); + + /* + * Expand the 32-bit DSDT addresses to 64-bit as necessary. + * Later ACPICA code will always use the X 64-bit field. + */ +- AcpiGbl_FADT.XDsdt = AcpiTbSelectAddress ("DSDT", +- AcpiGbl_FADT.Dsdt, AcpiGbl_FADT.XDsdt); ++ Value32 = AcpiUtReadUint32(&AcpiGbl_FADT.Dsdt); ++ Value64 = AcpiUtReadUint64(&AcpiGbl_FADT.XDsdt); ++ Value64 = AcpiTbSelectAddress ("DSDT", Value32, Value64); ++ AcpiUtWriteUint(&AcpiGbl_FADT.XDsdt, sizeof(UINT64), ++ &Value64, sizeof(UINT64)); + + /* If Hardware Reduced flag is set, we are all done */ + +@@ -614,7 +621,11 @@ AcpiTbConvertFadt ( + { + if (Address64->Address) + { +- if (Address64->Address != (UINT64) Address32) ++ Value32 = AcpiUtReadUint32(&Address32); ++ Value64 = AcpiUtReadUint64(&Address64->Address); ++ ++ /* if (Address64->Address != (UINT64) Address32) */ ++ if (Value64 != (UINT64) Value32) + { + /* Address mismatch */ + +@@ -655,9 +666,10 @@ AcpiTbConvertFadt ( + */ + if (!Address64->Address || AcpiGbl_Use32BitFadtAddresses) + { ++ Value32 = AcpiUtReadUint32(&Address32); + AcpiTbInitGenericAddress (Address64, + ACPI_ADR_SPACE_SYSTEM_IO, Length, +- (UINT64) Address32, Name, Flags); ++ (UINT64) Value32, Name, Flags); + } + } + +@@ -780,10 +792,14 @@ AcpiTbSetupFadtRegisters ( + + if (Source64->Address) + { ++ UINT64 Address64; ++ ++ Address64 = AcpiUtReadUint64(&Source64->Address); ++ Address64 += ++ (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth); + AcpiTbInitGenericAddress (FadtPmInfoTable[i].Target, + Source64->SpaceId, Pm1RegisterByteWidth, +- Source64->Address + +- (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth), ++ Address64, + "PmRegisters", 0); + } + } diff --git a/0014-Support-most-FPDTs-in-a-big-endian-world.patch b/0014-Support-most-FPDTs-in-a-big-endian-world.patch new file mode 100644 index 0000000..f1f9715 --- /dev/null +++ b/0014-Support-most-FPDTs-in-a-big-endian-world.patch @@ -0,0 +1,85 @@ +From f0cba59f1ce62095cb0a0cecdf8d661b77bf2baf Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Tue, 22 Sep 2020 17:51:45 -0600 +Subject: [PATCH 14/40] Support most FPDTs in a big-endian world + +NB: there is no support for vendor specific records even in +the little-endian version. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 12 +++++++----- + source/compiler/dttable1.c | 4 +++- + 2 files changed, 10 insertions(+), 6 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -910,9 +910,10 @@ AcpiDmDumpFpdt ( + { + ACPI_STATUS Status; + ACPI_FPDT_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_FPDT); + ACPI_DMTABLE_INFO *InfoTable; ++ UINT16 SubtableType; + + + /* There is no main table (other than the standard ACPI header) */ +@@ -920,19 +921,20 @@ AcpiDmDumpFpdt ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoFpdtHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + +- switch (Subtable->Type) ++ SubtableType = AcpiUtReadUint16(&Subtable->Type); ++ switch (SubtableType) + { + case ACPI_FPDT_TYPE_BOOT: + +@@ -959,7 +961,7 @@ AcpiDmDumpFpdt ( + goto NextSubtable; + } + +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -1051,6 +1051,7 @@ DtCompileFpdt ( + ACPI_DMTABLE_INFO *InfoTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; ++ UINT16 SubtableType; + + + while (*PFieldList) +@@ -1069,7 +1070,8 @@ DtCompileFpdt ( + + FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer); + +- switch (FpdtHeader->Type) ++ SubtableType = AcpiUtReadUint16(&FpdtHeader->Type); ++ switch (SubtableType) + { + case ACPI_FPDT_TYPE_BOOT: + diff --git a/0015-Support-GTDT-in-a-big-endian-world.patch b/0015-Support-GTDT-in-a-big-endian-world.patch new file mode 100644 index 0000000..7302133 --- /dev/null +++ b/0015-Support-GTDT-in-a-big-endian-world.patch @@ -0,0 +1,69 @@ +From faba93b1dd7ce4aa8983880e917d108496cd173f Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Tue, 22 Sep 2020 18:12:01 -0600 +Subject: [PATCH 15/40] Support GTDT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 13 +++++++++---- + source/compiler/dttable1.c | 9 +++++++-- + 2 files changed, 16 insertions(+), 6 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -997,7 +997,7 @@ AcpiDmDumpGtdt ( + { + ACPI_STATUS Status; + ACPI_GTDT_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_GTDT); + ACPI_DMTABLE_INFO *InfoTable; + UINT32 SubtableLength; +@@ -1033,7 +1033,7 @@ AcpiDmDumpGtdt ( + + /* Subtables */ + +- while (Offset < Table->Length) ++ while (Offset < Length) + { + /* Common subtable header */ + +@@ -1051,8 +1051,13 @@ AcpiDmDumpGtdt ( + case ACPI_GTDT_TYPE_TIMER_BLOCK: + + SubtableLength = sizeof (ACPI_GTDT_TIMER_BLOCK); +- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, +- Subtable))->TimerCount; ++ { ++ UINT32 Tmp32; ++ ++ Tmp32 = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, ++ Subtable))->TimerCount; ++ GtCount = AcpiUtReadUint32(&Tmp32); ++ } + + InfoTable = AcpiDmTableInfoGtdt0; + break; +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -997,8 +997,13 @@ DtCompileGtdt ( + DtPushSubtable (Subtable); + ParentTable = DtPeekSubtable (); + +- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, +- Subtable->Buffer - sizeof(ACPI_GTDT_HEADER)))->TimerCount; ++ { ++ UINT32 Tmp32; ++ ++ Tmp32 = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, ++ Subtable->Buffer - sizeof(ACPI_GTDT_HEADER)))->TimerCount; ++ GtCount = AcpiUtReadUint32(&Tmp32); ++ } + + while (GtCount) + { diff --git a/0016-Support-HEST-in-a-big-endian-world.patch b/0016-Support-HEST-in-a-big-endian-world.patch new file mode 100644 index 0000000..e38456f --- /dev/null +++ b/0016-Support-HEST-in-a-big-endian-world.patch @@ -0,0 +1,75 @@ +From 1104928443b11ff1c0446ed1604882c0e6ae4dc1 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 11:54:49 -0600 +Subject: [PATCH 16/40] Support HEST in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 10 ++++++---- + source/compiler/dttable1.c | 4 +++- + 2 files changed, 9 insertions(+), 5 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -1138,12 +1138,13 @@ AcpiDmDumpHest ( + { + ACPI_STATUS Status; + ACPI_HEST_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 Length = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_HEST); + ACPI_DMTABLE_INFO *InfoTable; + UINT32 SubtableLength; + UINT32 BankCount; + ACPI_HEST_IA_ERROR_BANK *BankTable; ++ UINT16 SubtableType; + + + /* Main table */ +@@ -1157,10 +1158,11 @@ AcpiDmDumpHest ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < Length) + { + BankCount = 0; +- switch (Subtable->Type) ++ SubtableType = Subtable->Type; ++ switch (SubtableType) + { + case ACPI_HEST_TYPE_IA32_CHECK: + +@@ -1227,7 +1229,7 @@ AcpiDmDumpHest ( + /* Cannot continue on unknown type - no length */ + + AcpiOsPrintf ("\n**** Unknown HEST subtable type 0x%X\n", +- Subtable->Type); ++ SubtableType); + return; + } + +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -1133,6 +1133,7 @@ DtCompileHest ( + DT_FIELD *SubtableStart; + ACPI_DMTABLE_INFO *InfoTable; + UINT16 Type; ++ UINT16 Tmp16; + UINT32 BankCount; + + +@@ -1151,7 +1152,8 @@ DtCompileHest ( + /* Get subtable type */ + + SubtableStart = *PFieldList; +- DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0); ++ DtCompileInteger ((UINT8 *) &Tmp16, *PFieldList, 2, 0); ++ Type = AcpiUtReadUint32(&Tmp16); + + switch (Type) + { diff --git a/0017-Support-RSDT-RSD-PTR-in-a-big-endian-world.patch b/0017-Support-RSDT-RSD-PTR-in-a-big-endian-world.patch new file mode 100644 index 0000000..4925302 --- /dev/null +++ b/0017-Support-RSDT-RSD-PTR-in-a-big-endian-world.patch @@ -0,0 +1,37 @@ +From 6565935b43c4795387aa4814d171dcd3c02bee33 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 12:11:46 -0600 +Subject: [PATCH 17/40] Support RSDT ('RSD PTR') in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c ++++ acpica-unix2-20200925/source/common/dmtbdump.c +@@ -277,6 +277,7 @@ AcpiDmDumpRsdt ( + UINT32 Entries; + UINT32 Offset; + UINT32 i; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Point to start of table pointer array */ +@@ -286,12 +287,12 @@ AcpiDmDumpRsdt ( + + /* RSDT uses 32-bit pointers */ + +- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); ++ Entries = (TableLength - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); + + for (i = 0; i < Entries; i++) + { + AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i); +- AcpiOsPrintf ("%8.8X\n", Array[i]); ++ AcpiOsPrintf ("%8.8X\n", AcpiUtReadUint32(&Array[i])); + Offset += sizeof (UINT32); + } + } diff --git a/0018-Support-XSDT-in-a-big-endian-world.patch b/0018-Support-XSDT-in-a-big-endian-world.patch new file mode 100644 index 0000000..7ae8ea1 --- /dev/null +++ b/0018-Support-XSDT-in-a-big-endian-world.patch @@ -0,0 +1,38 @@ +From 8d0ea4932cebc5d13cc811eb4f78b66a5e3cfd2c Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 12:16:37 -0600 +Subject: [PATCH 18/40] Support XSDT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump.c | 6 ++++-- + 1 file changed, 4 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c ++++ acpica-unix2-20200925/source/common/dmtbdump.c +@@ -318,6 +318,7 @@ AcpiDmDumpXsdt ( + UINT32 Entries; + UINT32 Offset; + UINT32 i; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Point to start of table pointer array */ +@@ -327,12 +328,13 @@ AcpiDmDumpXsdt ( + + /* XSDT uses 64-bit pointers */ + +- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); ++ Entries = (TableLength - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); + + for (i = 0; i < Entries; i++) + { + AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); +- AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i])); ++ AcpiOsPrintf ("%8.8X%8.8X\n", ++ ACPI_FORMAT_UINT64 (AcpiUtReadUint64(&Array[i]))); + Offset += sizeof (UINT64); + } + } diff --git a/0019-Support-SRAT-in-a-big-endian-world.patch b/0019-Support-SRAT-in-a-big-endian-world.patch new file mode 100644 index 0000000..6bb6215 --- /dev/null +++ b/0019-Support-SRAT-in-a-big-endian-world.patch @@ -0,0 +1,52 @@ +From 82421dd7d534f78edf85b862b196bae256cf8f87 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 12:25:38 -0600 +Subject: [PATCH 19/40] Support SRAT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -173,11 +173,12 @@ AcpiDmDumpSrat ( + UINT32 Offset = sizeof (ACPI_TABLE_SRAT); + ACPI_SUBTABLE_HEADER *Subtable; + ACPI_DMTABLE_INFO *InfoTable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSrat); + if (ACPI_FAILURE (Status)) + { + return; +@@ -186,12 +187,12 @@ AcpiDmDumpSrat ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoSratHdr); + if (ACPI_FAILURE (Status)) + { +@@ -245,7 +246,7 @@ AcpiDmDumpSrat ( + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { diff --git a/0020-Support-SLIT-in-a-big-endian-world.patch b/0020-Support-SLIT-in-a-big-endian-world.patch new file mode 100644 index 0000000..a0e3a5e --- /dev/null +++ b/0020-Support-SLIT-in-a-big-endian-world.patch @@ -0,0 +1,61 @@ +From 4e76aa1a5556f250f51a3802734fd6cb77718299 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 12:49:52 -0600 +Subject: [PATCH 20/40] Support SLIT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 8 +++++--- + source/compiler/dttable2.c | 2 +- + 2 files changed, 6 insertions(+), 4 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -96,11 +96,12 @@ AcpiDmDumpSlit ( + UINT32 Localities; + UINT32 i; + UINT32 j; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSlit); + if (ACPI_FAILURE (Status)) + { + return; +@@ -108,7 +109,8 @@ AcpiDmDumpSlit ( + + /* Display the Locality NxN Matrix */ + +- Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount; ++ Localities = (UINT32) ++ AcpiUtReadUint64(&ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount); + Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]); + Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry; + +@@ -121,7 +123,7 @@ AcpiDmDumpSlit ( + { + /* Check for beyond EOT */ + +- if (Offset >= Table->Length) ++ if (Offset >= TableLength) + { + AcpiOsPrintf ( + "\n**** Not enough room in table for all localities\n"); +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -1529,7 +1529,7 @@ DtCompileSlit ( + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + +- Localities = *ACPI_CAST_PTR (UINT32, Subtable->Buffer); ++ Localities = (UINT32) AcpiUtReadUint64(Subtable->Buffer); + LocalityBuffer = UtLocalCalloc (Localities); + LocalityListLength = 0; + diff --git a/0021-Support-MSCT-in-a-big-endian-world.patch b/0021-Support-MSCT-in-a-big-endian-world.patch new file mode 100644 index 0000000..3a59eaa --- /dev/null +++ b/0021-Support-MSCT-in-a-big-endian-world.patch @@ -0,0 +1,43 @@ +From 4ca38d182bb40ba750d8f5ac6ff8560c40f06625 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 15:44:21 -0600 +Subject: [PATCH 21/40] Support MSCT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -972,11 +972,12 @@ AcpiDmDumpMsct ( + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_MSCT); + ACPI_MSCT_PROXIMITY *Subtable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMsct); + if (ACPI_FAILURE (Status)) + { + return; +@@ -985,12 +986,12 @@ AcpiDmDumpMsct ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); + if (ACPI_FAILURE (Status)) + { diff --git a/0022-Support-MPST-in-a-big-endian-world.patch b/0022-Support-MPST-in-a-big-endian-world.patch new file mode 100644 index 0000000..2b4c2e3 --- /dev/null +++ b/0022-Support-MPST-in-a-big-endian-world.patch @@ -0,0 +1,152 @@ +From dfe414b053fb9feb905271785b319afa7ba72932 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 23 Sep 2020 16:08:24 -0600 +Subject: [PATCH 22/40] Support MPST in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 33 +++++++++++++++++++-------------- + source/compiler/dttable2.c | 8 ++++---- + 2 files changed, 23 insertions(+), 18 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -834,11 +834,13 @@ AcpiDmDumpMpst ( + UINT16 SubtableCount; + UINT32 PowerStateCount; + UINT32 ComponentCount; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); ++ UINT16 Tmp16; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMpst); + if (ACPI_FAILURE (Status)) + { + return; +@@ -846,13 +848,14 @@ AcpiDmDumpMpst ( + + /* Subtable: Memory Power Node(s) */ + +- SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; ++ Tmp16 = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; ++ SubtableCount = AcpiUtReadUint16(&Tmp16); + Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset); + +- while ((Offset < Table->Length) && SubtableCount) ++ while ((Offset < TableLength) && SubtableCount) + { + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable0, + sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); + if (ACPI_FAILURE (Status)) + { +@@ -861,8 +864,8 @@ AcpiDmDumpMpst ( + + /* Extract the sub-subtable counts */ + +- PowerStateCount = Subtable0->NumPowerStates; +- ComponentCount = Subtable0->NumPhysicalComponents; ++ PowerStateCount = AcpiUtReadUint16(&Subtable0->NumPowerStates); ++ ComponentCount = AcpiUtReadUint16(&Subtable0->NumPhysicalComponents); + Offset += sizeof (ACPI_MPST_POWER_NODE); + + /* Sub-subtables - Memory Power State Structure(s) */ +@@ -873,7 +876,7 @@ AcpiDmDumpMpst ( + while (PowerStateCount) + { + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable0A, + sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); + if (ACPI_FAILURE (Status)) + { +@@ -896,7 +899,7 @@ AcpiDmDumpMpst ( + + while (ComponentCount) + { +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable0B, + sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); + if (ACPI_FAILURE (Status)) + { +@@ -913,22 +916,24 @@ AcpiDmDumpMpst ( + SubtableCount--; + Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0, + sizeof (ACPI_MPST_POWER_NODE) + +- (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) + +- (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents)); ++ (sizeof (ACPI_MPST_POWER_STATE) * ++ AcpiUtReadUint16(&Subtable0->NumPowerStates)) + ++ (sizeof (ACPI_MPST_COMPONENT) * ++ AcpiUtReadUint16(&Subtable0->NumPhysicalComponents))); + } + + /* Subtable: Count of Memory Power State Characteristic structures */ + + AcpiOsPrintf ("\n"); + Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable1, + sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); + if (ACPI_FAILURE (Status)) + { + return; + } + +- SubtableCount = Subtable1->CharacteristicsCount; ++ SubtableCount = AcpiUtReadUint16(&Subtable1->CharacteristicsCount); + Offset += sizeof (ACPI_MPST_DATA_HDR); + + /* Subtable: Memory Power State Characteristics structure(s) */ +@@ -936,10 +941,10 @@ AcpiDmDumpMpst ( + Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1, + sizeof (ACPI_MPST_DATA_HDR)); + +- while ((Offset < Table->Length) && SubtableCount) ++ while ((Offset < TableLength) && SubtableCount) + { + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable2, + sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); + if (ACPI_FAILURE (Status)) + { +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -345,7 +345,7 @@ DtCompileMpst ( + DtPushSubtable (Subtable); + + MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer); +- SubtableCount = MpstChannelInfo->PowerNodeCount; ++ SubtableCount = AcpiUtReadUint16(&MpstChannelInfo->PowerNodeCount); + + while (*PFieldList && SubtableCount) + { +@@ -363,8 +363,8 @@ DtCompileMpst ( + DtPushSubtable (Subtable); + + MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer); +- PowerStateCount = MpstPowerNode->NumPowerStates; +- ComponentCount = MpstPowerNode->NumPhysicalComponents; ++ PowerStateCount = AcpiUtReadUint16(&MpstPowerNode->NumPowerStates); ++ ComponentCount = AcpiUtReadUint16(&MpstPowerNode->NumPhysicalComponents); + + ParentTable = DtPeekSubtable (); + +@@ -417,7 +417,7 @@ DtCompileMpst ( + DtPushSubtable (Subtable); + + MpstDataHeader = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable->Buffer); +- SubtableCount = MpstDataHeader->CharacteristicsCount; ++ SubtableCount = AcpiUtReadUint16(&MpstDataHeader->CharacteristicsCount); + + ParentTable = DtPeekSubtable (); + diff --git a/0023-Support-NFIT-in-a-big-endian-world.patch b/0023-Support-NFIT-in-a-big-endian-world.patch new file mode 100644 index 0000000..42d5a7d --- /dev/null +++ b/0023-Support-NFIT-in-a-big-endian-world.patch @@ -0,0 +1,221 @@ +From 2a1f049c35736ddba45300bc5aba4db9c9df3be7 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Thu, 24 Sep 2020 15:25:53 -0600 +Subject: [PATCH 23/40] Support NFIT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtable.c | 4 ++-- + source/common/dmtbdump2.c | 47 +++++++++++++++++++++++--------------- + source/compiler/dttable2.c | 11 ++++++--- + 3 files changed, 38 insertions(+), 24 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtable.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtable.c ++++ acpica-unix2-20200925/source/common/dmtable.c +@@ -1429,13 +1429,13 @@ AcpiDmDumpTable ( + + /* NFIT subtable types */ + +- Temp16 = ACPI_GET16 (Target); ++ Temp16 = AcpiUtReadUint16(Target); + if (Temp16 > ACPI_NFIT_TYPE_RESERVED) + { + Temp16 = ACPI_NFIT_TYPE_RESERVED; + } + +- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), ++ AcpiOsPrintf (UINT16_FORMAT, Temp16, + AcpiDmNfitSubnames[Temp16]); + break; + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1084,18 +1084,23 @@ AcpiDmDumpNfit ( + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_NFIT); + UINT32 FieldOffset = 0; +- UINT32 Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + ACPI_NFIT_HEADER *Subtable; + ACPI_DMTABLE_INFO *InfoTable; + ACPI_NFIT_INTERLEAVE *Interleave = NULL; + ACPI_NFIT_SMBIOS *SmbiosInfo = NULL; + ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL; + UINT32 i; ++ UINT32 Length; ++ UINT32 LineCount; ++ UINT16 SubtableLength; ++ UINT16 SubtableType; ++ UINT16 HintCount; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNfit); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1104,19 +1109,21 @@ AcpiDmDumpNfit ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* NFIT subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoNfitHdr); ++ SubtableType = AcpiUtReadUint16(&Subtable->Type); ++ SubtableLength = AcpiUtReadUint16(&Subtable->Length); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, AcpiDmTableInfoNfitHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + +- switch (Subtable->Type) ++ switch (SubtableType) + { + case ACPI_NFIT_TYPE_SYSTEM_ADDRESS: + +@@ -1167,11 +1174,11 @@ AcpiDmDumpNfit ( + + default: + AcpiOsPrintf ("\n**** Unknown NFIT subtable type 0x%X\n", +- Subtable->Type); ++ SubtableType); + + /* Attempt to continue */ + +- if (!Subtable->Length) ++ if (!SubtableLength) + { + AcpiOsPrintf ("Invalid zero length subtable\n"); + return; +@@ -1180,8 +1187,8 @@ AcpiDmDumpNfit ( + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Subtable->Length, InfoTable); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1189,14 +1196,15 @@ AcpiDmDumpNfit ( + + /* Per-subtable variable-length fields */ + +- switch (Subtable->Type) ++ switch (SubtableType) + { + case ACPI_NFIT_TYPE_INTERLEAVE: + + Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable); +- for (i = 0; i < Interleave->LineCount; i++) ++ LineCount = AcpiUtReadUint32(&Interleave->LineCount); ++ for (i = 0; i < LineCount; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset, + &Interleave->LineOffset[i], + sizeof (UINT32), AcpiDmTableInfoNfit2a); + if (ACPI_FAILURE (Status)) +@@ -1210,12 +1218,12 @@ AcpiDmDumpNfit ( + + case ACPI_NFIT_TYPE_SMBIOS: + +- Length = Subtable->Length - ++ Length = SubtableLength - + sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); + + if (Length) + { +- Status = AcpiDmDumpTable (Table->Length, ++ Status = AcpiDmDumpTable (TableLength, + sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), + SmbiosInfo, + Length, AcpiDmTableInfoNfit3a); +@@ -1230,9 +1238,10 @@ AcpiDmDumpNfit ( + case ACPI_NFIT_TYPE_FLUSH_ADDRESS: + + Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable); +- for (i = 0; i < Hint->HintCount; i++) ++ HintCount = AcpiUtReadUint16(&Hint->HintCount); ++ for (i = 0; i < HintCount; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset, + &Hint->HintAddress[i], + sizeof (UINT64), AcpiDmTableInfoNfit6a); + if (ACPI_FAILURE (Status)) +@@ -1251,8 +1260,8 @@ AcpiDmDumpNfit ( + NextSubtable: + /* Point to next subtable */ + +- Offset += Subtable->Length; +- Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length); ++ Offset += SubtableLength; ++ Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, SubtableLength); + } + } + +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -517,6 +517,7 @@ DtCompileNfit ( + UINT32 Count; + ACPI_NFIT_INTERLEAVE *Interleave = NULL; + ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL; ++ UINT16 NfitHeaderType; + + + /* Main table */ +@@ -550,7 +551,8 @@ DtCompileNfit ( + + NfitHeader = ACPI_CAST_PTR (ACPI_NFIT_HEADER, Subtable->Buffer); + +- switch (NfitHeader->Type) ++ NfitHeaderType = AcpiUtReadUint16(&NfitHeader->Type); ++ switch (NfitHeaderType) + { + case ACPI_NFIT_TYPE_SYSTEM_ADDRESS: + +@@ -610,7 +612,7 @@ DtCompileNfit ( + DtInsertSubtable (ParentTable, Subtable); + DtPopSubtable (); + +- switch (NfitHeader->Type) ++ switch (NfitHeaderType) + { + case ACPI_NFIT_TYPE_INTERLEAVE: + +@@ -636,7 +638,8 @@ DtCompileNfit ( + Count++; + } + +- Interleave->LineCount = Count; ++ AcpiUtWriteUint(&Interleave->LineCount, sizeof(UINT32), ++ &Count, sizeof(UINT32)); + break; + + case ACPI_NFIT_TYPE_SMBIOS: +@@ -682,6 +685,8 @@ DtCompileNfit ( + } + + Hint->HintCount = (UINT16) Count; ++ AcpiUtWriteUint(&Hint->HintCount, sizeof(UINT16), ++ &Count, sizeof(UINT32)); + break; + + default: diff --git a/0024-Support-SDEV-in-a-big-endian-world.patch b/0024-Support-SDEV-in-a-big-endian-world.patch new file mode 100644 index 0000000..f6d36bd --- /dev/null +++ b/0024-Support-SDEV-in-a-big-endian-world.patch @@ -0,0 +1,256 @@ +From af44bec6c062a26034a43809d81af2a0ea17343e Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 25 Sep 2020 16:05:59 -0600 +Subject: [PATCH 24/40] Support SDEV in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 50 +++++++++++++++++++----------------- + source/compiler/dttable2.c | 52 ++++++++++++++++++++++++++++---------- + 2 files changed, 65 insertions(+), 37 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1871,17 +1871,18 @@ AcpiDmDumpSdev ( + ACPI_SDEV_PCIE *Pcie; + ACPI_SDEV_NAMESPACE *Namesp; + ACPI_DMTABLE_INFO *InfoTable; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_SDEV); + UINT16 PathOffset; + UINT16 PathLength; + UINT16 VendorDataOffset; + UINT16 VendorDataLength; ++ UINT16 SubtableLength; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSdev); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoSdev); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1890,13 +1891,14 @@ AcpiDmDumpSdev ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoSdevHdr); ++ SubtableLength = AcpiUtReadUint16(&Subtable->Length); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, AcpiDmTableInfoSdevHdr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1919,8 +1921,8 @@ AcpiDmDumpSdev ( + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Subtable->Length, InfoTable); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1933,12 +1935,12 @@ AcpiDmDumpSdev ( + /* Dump the PCIe device ID(s) */ + + Namesp = ACPI_CAST_PTR (ACPI_SDEV_NAMESPACE, Subtable); +- PathOffset = Namesp->DeviceIdOffset; +- PathLength = Namesp->DeviceIdLength; ++ PathOffset = AcpiUtReadUint16(&Namesp->DeviceIdOffset); ++ PathLength = AcpiUtReadUint16(&Namesp->DeviceIdLength); + + if (PathLength) + { +- Status = AcpiDmDumpTable (Table->Length, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, + ACPI_ADD_PTR (UINT8, Namesp, PathOffset), + PathLength, AcpiDmTableInfoSdev0a); + if (ACPI_FAILURE (Status)) +@@ -1949,14 +1951,14 @@ AcpiDmDumpSdev ( + + /* Dump the vendor-specific data */ + +- VendorDataLength = +- Namesp->VendorDataLength; +- VendorDataOffset = +- Namesp->DeviceIdOffset + Namesp->DeviceIdLength; ++ VendorDataLength = AcpiUtReadUint16(&Namesp->VendorDataLength); ++ VendorDataOffset = ++ AcpiUtReadUint16(&Namesp->DeviceIdOffset) + ++ AcpiUtReadUint16(&Namesp->DeviceIdLength); + + if (VendorDataLength) + { +- Status = AcpiDmDumpTable (Table->Length, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, + ACPI_ADD_PTR (UINT8, Namesp, VendorDataOffset), + VendorDataLength, AcpiDmTableInfoSdev1b); + if (ACPI_FAILURE (Status)) +@@ -1971,12 +1973,12 @@ AcpiDmDumpSdev ( + /* PCI path substructures */ + + Pcie = ACPI_CAST_PTR (ACPI_SDEV_PCIE, Subtable); +- PathOffset = Pcie->PathOffset; +- PathLength = Pcie->PathLength; ++ PathOffset = AcpiUtReadUint16(&Pcie->PathOffset); ++ PathLength = AcpiUtReadUint16(&Pcie->PathLength); + + while (PathLength) + { +- Status = AcpiDmDumpTable (Table->Length, ++ Status = AcpiDmDumpTable (TableLength, + PathOffset + Offset, + ACPI_ADD_PTR (UINT8, Pcie, PathOffset), + sizeof (ACPI_SDEV_PCIE_PATH), AcpiDmTableInfoSdev1a); +@@ -1991,12 +1993,14 @@ AcpiDmDumpSdev ( + + /* VendorData */ + +- VendorDataLength = Pcie->VendorDataLength; +- VendorDataOffset = Pcie->PathOffset + Pcie->PathLength; ++ VendorDataLength = AcpiUtReadUint16(&Pcie->VendorDataLength); ++ VendorDataOffset = ++ AcpiUtReadUint16(&Pcie->PathOffset) + ++ AcpiUtReadUint16(&Pcie->PathLength); + + if (VendorDataLength) + { +- Status = AcpiDmDumpTable (Table->Length, 0, ++ Status = AcpiDmDumpTable (TableLength, 0, + ACPI_ADD_PTR (UINT8, Pcie, VendorDataOffset), + VendorDataLength, AcpiDmTableInfoSdev1b); + if (ACPI_FAILURE (Status)) +@@ -2013,8 +2017,8 @@ AcpiDmDumpSdev ( + NextSubtable: + /* Point to next subtable */ + +- Offset += Subtable->Length; ++ Offset += SubtableLength; + Subtable = ACPI_ADD_PTR (ACPI_SDEV_HEADER, Subtable, +- Subtable->Length); ++ SubtableLength); + } + } +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -1268,6 +1268,7 @@ DtCompileSdev ( + ACPI_SDEV_PCIE *Pcie = NULL; + ACPI_SDEV_NAMESPACE *Namesp = NULL; + UINT32 EntryCount; ++ UINT16 Tmp16; + + + /* Subtables */ +@@ -1289,7 +1290,7 @@ DtCompileSdev ( + DtPushSubtable (Subtable); + + SdevHeader = ACPI_CAST_PTR (ACPI_SDEV_HEADER, Subtable->Buffer); +- SdevHeader->Length = (UINT8)(sizeof (ACPI_SDEV_HEADER)); ++ SdevHeader->Length = (UINT16) (sizeof (ACPI_SDEV_HEADER)); + + switch (SdevHeader->Type) + { +@@ -1345,7 +1346,7 @@ DtCompileSdev ( + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + +- Namesp->DeviceIdOffset = sizeof (ACPI_SDEV_NAMESPACE); ++ Namesp->DeviceIdOffset = (UINT16) sizeof (ACPI_SDEV_NAMESPACE); + Namesp->DeviceIdLength = (UINT16) Subtable->Length; + + /* Append Vendor data */ +@@ -1367,18 +1368,32 @@ DtCompileSdev ( + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + +- Namesp->VendorDataOffset = +- Namesp->DeviceIdOffset + Namesp->DeviceIdLength; +- Namesp->VendorDataLength = +- (UINT16) Subtable->Length; ++ Namesp->VendorDataOffset = ++ Namesp->DeviceIdOffset + ++ Namesp->DeviceIdLength; ++ Namesp->VendorDataLength = (UINT16) Subtable->Length; + + /* Final size of entire namespace structure */ + +- SdevHeader->Length = (UINT16)(sizeof(ACPI_SDEV_NAMESPACE) + +- Subtable->Length + Namesp->DeviceIdLength); ++ SdevHeader->Length = (UINT16) ++ (sizeof(ACPI_SDEV_NAMESPACE) + ++ Subtable->Length + ++ Namesp->DeviceIdLength); + } + } + ++ /* Make sure everything is now little-endian */ ++ Tmp16 = AcpiUtReadUint16(&SdevHeader->Length); ++ SdevHeader->Length = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Namesp->DeviceIdOffset); ++ Namesp->DeviceIdOffset = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Namesp->DeviceIdLength); ++ Namesp->DeviceIdLength = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Namesp->VendorDataOffset); ++ Namesp->VendorDataOffset = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Namesp->VendorDataLength); ++ Namesp->VendorDataLength = Tmp16; ++ + break; + + case ACPI_SDEV_TYPE_PCIE_ENDPOINT_DEVICE: +@@ -1408,9 +1423,9 @@ DtCompileSdev ( + + /* Path offset will point immediately after the main subtable */ + +- Pcie->PathOffset = sizeof (ACPI_SDEV_PCIE); ++ Pcie->PathOffset = sizeof (ACPI_SDEV_PCIE); + Pcie->PathLength = (UINT16) +- (EntryCount * sizeof (ACPI_SDEV_PCIE_PATH)); ++ (EntryCount * sizeof (ACPI_SDEV_PCIE_PATH)); + + /* Append the Vendor Data last */ + +@@ -1432,15 +1447,24 @@ DtCompileSdev ( + DtInsertSubtable (ParentTable, Subtable); + + Pcie->VendorDataOffset = +- Pcie->PathOffset + Pcie->PathLength; +- Pcie->VendorDataLength = (UINT16) +- Subtable->Length; ++ Pcie->PathOffset + Pcie->PathLength; ++ Pcie->VendorDataLength = (UINT16) Subtable->Length; + } + } + + SdevHeader->Length = +- sizeof (ACPI_SDEV_PCIE) + ++ sizeof (ACPI_SDEV_PCIE) + + Pcie->PathLength + Pcie->VendorDataLength; ++ Tmp16 = AcpiUtReadUint16(&SdevHeader->Length); ++ SdevHeader->Length = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Pcie->PathOffset); ++ Pcie->PathOffset = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Pcie->PathLength); ++ Pcie->PathLength = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Pcie->VendorDataOffset); ++ Pcie->VendorDataOffset = Tmp16; ++ Tmp16 = AcpiUtReadUint16(&Pcie->VendorDataLength); ++ Pcie->VendorDataLength = Tmp16; + break; + + default: diff --git a/0025-Support-HMAT-in-a-big-endian-world.patch b/0025-Support-HMAT-in-a-big-endian-world.patch new file mode 100644 index 0000000..39ebf62 --- /dev/null +++ b/0025-Support-HMAT-in-a-big-endian-world.patch @@ -0,0 +1,278 @@ +From 03425774d2c19874ad4483ec6b7e13c0146e81f7 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 25 Sep 2020 16:56:55 -0600 +Subject: [PATCH 25/40] Support HMAT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump1.c | 70 ++++++++++++++++++++++---------------- + source/compiler/dttable1.c | 24 ++++++++++--- + 2 files changed, 59 insertions(+), 35 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump1.c ++++ acpica-unix2-20200925/source/common/dmtbdump1.c +@@ -1301,37 +1301,45 @@ AcpiDmDumpHmat ( + UINT32 Length; + ACPI_DMTABLE_INFO *InfoTable; + UINT32 i, j; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); ++ UINT16 HmatStructType; ++ UINT32 HmatStructLength; ++ UINT32 InitPDs; ++ UINT32 TgtPDs; ++ UINT16 SMBIOSHandles; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoHmat); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoHmat); + if (ACPI_FAILURE (Status)) + { + return; + } + Offset = sizeof (ACPI_TABLE_HMAT); + +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + AcpiOsPrintf ("\n"); + + /* Dump HMAT structure header */ + + HmatStruct = ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, Table, Offset); +- if (HmatStruct->Length < sizeof (ACPI_HMAT_STRUCTURE)) ++ HmatStructLength = AcpiUtReadUint32(&HmatStruct->Length); ++ if (HmatStructLength < sizeof (ACPI_HMAT_STRUCTURE)) + { + AcpiOsPrintf ("Invalid HMAT structure length\n"); + return; + } +- Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct, +- HmatStruct->Length, AcpiDmTableInfoHmatHdr); ++ Status = AcpiDmDumpTable (TableLength, Offset, HmatStruct, ++ HmatStructLength, AcpiDmTableInfoHmatHdr); + if (ACPI_FAILURE (Status)) + { + return; + } + +- switch (HmatStruct->Type) ++ HmatStructType = AcpiUtReadUint16(&HmatStruct->Type); ++ switch (HmatStructType) + { + case ACPI_HMAT_TYPE_ADDRESS_RANGE: + +@@ -1354,7 +1362,7 @@ AcpiDmDumpHmat ( + default: + + AcpiOsPrintf ("\n**** Unknown HMAT structure type 0x%X\n", +- HmatStruct->Type); ++ HmatStructType); + + /* Attempt to continue */ + +@@ -1363,13 +1371,13 @@ AcpiDmDumpHmat ( + + /* Dump HMAT structure body */ + +- if (HmatStruct->Length < Length) ++ if (HmatStructLength < Length) + { + AcpiOsPrintf ("Invalid HMAT structure length\n"); + return; + } +- Status = AcpiDmDumpTable (Table->Length, Offset, HmatStruct, +- HmatStruct->Length, InfoTable); ++ Status = AcpiDmDumpTable (TableLength, Offset, HmatStruct, ++ HmatStructLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1377,7 +1385,7 @@ AcpiDmDumpHmat ( + + /* Dump HMAT structure additionals */ + +- switch (HmatStruct->Type) ++ switch (HmatStructType) + { + case ACPI_HMAT_TYPE_LOCALITY: + +@@ -1386,15 +1394,16 @@ AcpiDmDumpHmat ( + + /* Dump initiator proximity domains */ + +- if ((UINT32)(HmatStruct->Length - SubtableOffset) < +- (UINT32)(HmatLocality->NumberOfInitiatorPDs * 4)) ++ InitPDs = AcpiUtReadUint32(&HmatLocality->NumberOfInitiatorPDs); ++ if ((UINT32)(HmatStructLength - SubtableOffset) < ++ (UINT32)(InitPDs * 4)) + { + AcpiOsPrintf ("Invalid initiator proximity domain number\n"); + return; + } +- for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++) ++ for (i = 0; i < InitPDs; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset), + 4, AcpiDmTableInfoHmat1a); + if (ACPI_FAILURE (Status)) +@@ -1407,15 +1416,16 @@ AcpiDmDumpHmat ( + + /* Dump target proximity domains */ + +- if ((UINT32)(HmatStruct->Length - SubtableOffset) < +- (UINT32)(HmatLocality->NumberOfTargetPDs * 4)) ++ TgtPDs = AcpiUtReadUint32(&HmatLocality->NumberOfTargetPDs); ++ if ((UINT32)(HmatStructLength - SubtableOffset) < ++ (UINT32)(TgtPDs * 4)) + { + AcpiOsPrintf ("Invalid target proximity domain number\n"); + return; + } +- for (i = 0; i < HmatLocality->NumberOfTargetPDs; i++) ++ for (i = 0; i < TgtPDs; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset), + 4, AcpiDmTableInfoHmat1b); + if (ACPI_FAILURE (Status)) +@@ -1428,18 +1438,17 @@ AcpiDmDumpHmat ( + + /* Dump latency/bandwidth entris */ + +- if ((UINT32)(HmatStruct->Length - SubtableOffset) < +- (UINT32)(HmatLocality->NumberOfInitiatorPDs * +- HmatLocality->NumberOfTargetPDs * 2)) ++ if ((UINT32)(HmatStructLength - SubtableOffset) < ++ (UINT32)(InitPDs * TgtPDs * 2)) + { + AcpiOsPrintf ("Invalid latency/bandwidth entry number\n"); + return; + } +- for (i = 0; i < HmatLocality->NumberOfInitiatorPDs; i++) ++ for (i = 0; i < InitPDs; i++) + { +- for (j = 0; j < HmatLocality->NumberOfTargetPDs; j++) ++ for (j = 0; j < TgtPDs; j++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset), + 2, AcpiDmTableInfoHmat1c); + if (ACPI_FAILURE(Status)) +@@ -1459,15 +1468,16 @@ AcpiDmDumpHmat ( + + /* Dump SMBIOS handles */ + +- if ((UINT32)(HmatStruct->Length - SubtableOffset) < +- (UINT32)(HmatCache->NumberOfSMBIOSHandles * 2)) ++ SMBIOSHandles = AcpiUtReadUint16(&HmatCache->NumberOfSMBIOSHandles); ++ if ((UINT32)(HmatStructLength - SubtableOffset) < ++ (UINT32)(SMBIOSHandles * 2)) + { + AcpiOsPrintf ("Invalid SMBIOS handle number\n"); + return; + } +- for (i = 0; i < HmatCache->NumberOfSMBIOSHandles; i++) ++ for (i = 0; i < SMBIOSHandles; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_HMAT_STRUCTURE, HmatStruct, SubtableOffset), + 2, AcpiDmTableInfoHmat2a); + if (ACPI_FAILURE (Status)) +@@ -1487,6 +1497,6 @@ AcpiDmDumpHmat ( + NextSubtable: + /* Point to next HMAT structure subtable */ + +- Offset += (HmatStruct->Length); ++ Offset += (HmatStructLength); + } + } +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -1295,6 +1295,8 @@ DtCompileHmat ( + UINT32 TgtPDNumber; + UINT64 EntryNumber; + UINT16 SMBIOSHandleNumber; ++ UINT16 HmatStructType; ++ UINT32 Length; + + + ParentTable = DtPeekSubtable (); +@@ -1325,7 +1327,8 @@ DtCompileHmat ( + + /* Compile HMAT structure body */ + +- switch (HmatStruct->Type) ++ HmatStructType = AcpiUtReadUint16(&HmatStruct->Type); ++ switch (HmatStructType) + { + case ACPI_HMAT_TYPE_ADDRESS_RANGE: + +@@ -1358,7 +1361,7 @@ DtCompileHmat ( + + /* Compile HMAT structure additionals */ + +- switch (HmatStruct->Type) ++ switch (HmatStructType) + { + case ACPI_HMAT_TYPE_LOCALITY: + +@@ -1384,7 +1387,7 @@ DtCompileHmat ( + HmatStruct->Length += Subtable->Length; + IntPDNumber++; + } +- HmatLocality->NumberOfInitiatorPDs = IntPDNumber; ++ HmatLocality->NumberOfInitiatorPDs = AcpiUtReadUint32(&IntPDNumber); + + /* Compile target proximity domain list */ + +@@ -1405,7 +1408,7 @@ DtCompileHmat ( + HmatStruct->Length += Subtable->Length; + TgtPDNumber++; + } +- HmatLocality->NumberOfTargetPDs = TgtPDNumber; ++ HmatLocality->NumberOfTargetPDs = AcpiUtReadUint32(&TgtPDNumber); + + /* Save start of the entries for reporting errors */ + +@@ -1430,6 +1433,9 @@ DtCompileHmat ( + HmatStruct->Length += Subtable->Length; + EntryNumber++; + } ++ ++ Length = AcpiUtReadUint32(&HmatStruct->Length); ++ HmatStruct->Length = Length; + + /* Validate number of entries */ + +@@ -1464,11 +1470,19 @@ DtCompileHmat ( + HmatStruct->Length += Subtable->Length; + SMBIOSHandleNumber++; + } +- HmatCache->NumberOfSMBIOSHandles = SMBIOSHandleNumber; ++ HmatCache->NumberOfSMBIOSHandles = ++ AcpiUtReadUint16(&SMBIOSHandleNumber); ++ ++ Length = AcpiUtReadUint32(&HmatStruct->Length); ++ HmatStruct->Length = Length; ++ + break; + + default: + ++ Length = AcpiUtReadUint32(&HmatStruct->Length); ++ HmatStruct->Length = Length; ++ + break; + } + } diff --git a/0026-Support-PDTT-in-a-big-endian-world.patch b/0026-Support-PDTT-in-a-big-endian-world.patch new file mode 100644 index 0000000..5b4269f --- /dev/null +++ b/0026-Support-PDTT-in-a-big-endian-world.patch @@ -0,0 +1,43 @@ +From afaa9043357a3b8adbaa1ea389a62da48f561896 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 25 Sep 2020 17:03:05 -0600 +Subject: [PATCH 26/40] Support PDTT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1385,13 +1385,13 @@ AcpiDmDumpPdtt ( + { + ACPI_STATUS Status; + ACPI_PDTT_CHANNEL *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_PDTT); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPdtt); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoPdtt); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1400,10 +1400,10 @@ AcpiDmDumpPdtt ( + /* Subtables. Currently there is only one type, but can be multiples */ + + Subtable = ACPI_ADD_PTR (ACPI_PDTT_CHANNEL, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_PDTT_CHANNEL), AcpiDmTableInfoPdtt0); + if (ACPI_FAILURE (Status)) + { diff --git a/0027-Support-PPTT-in-a-big-endian-world.patch b/0027-Support-PPTT-in-a-big-endian-world.patch new file mode 100644 index 0000000..a047d45 --- /dev/null +++ b/0027-Support-PPTT-in-a-big-endian-world.patch @@ -0,0 +1,104 @@ +From c5d7294c6deb7fe87eac981234d4c484313d5e40 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 25 Sep 2020 17:16:12 -0600 +Subject: [PATCH 27/40] Support PPTT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 15 +++++++++------ + source/compiler/dttable2.c | 7 +++++-- + 2 files changed, 14 insertions(+), 8 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1649,6 +1649,8 @@ AcpiDmDumpPptt ( + UINT32 Offset = sizeof (ACPI_TABLE_FPDT); + ACPI_DMTABLE_INFO *InfoTable; + UINT32 i; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); ++ UINT32 NumPrivRes; + + + /* There is no main table (other than the standard ACPI header) */ +@@ -1656,7 +1658,7 @@ AcpiDmDumpPptt ( + /* Subtables */ + + Offset = sizeof (ACPI_TABLE_HEADER); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + AcpiOsPrintf ("\n"); + +@@ -1668,7 +1670,7 @@ AcpiDmDumpPptt ( + AcpiOsPrintf ("Invalid subtable length\n"); + return; + } +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Length, AcpiDmTableInfoPpttHdr); + if (ACPI_FAILURE (Status)) + { +@@ -1710,7 +1712,7 @@ AcpiDmDumpPptt ( + AcpiOsPrintf ("Invalid subtable length\n"); + return; + } +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Length, InfoTable); + if (ACPI_FAILURE (Status)) + { +@@ -1726,15 +1728,16 @@ AcpiDmDumpPptt ( + + /* Dump SMBIOS handles */ + ++ NumPrivRes = AcpiUtReadUint32(&PpttProcessor->NumberOfPrivResources); + if ((UINT8)(Subtable->Length - SubtableOffset) < +- (UINT8)(PpttProcessor->NumberOfPrivResources * 4)) ++ (UINT8)(NumPrivRes * 4)) + { + AcpiOsPrintf ("Invalid private resource number\n"); + return; + } +- for (i = 0; i < PpttProcessor->NumberOfPrivResources; i++) ++ for (i = 0; i < NumPrivRes; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + SubtableOffset, + ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset), + 4, AcpiDmTableInfoPptt0a); + if (ACPI_FAILURE (Status)) +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -1028,6 +1028,7 @@ DtCompilePptt ( + ACPI_DMTABLE_INFO *InfoTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_FIELD *SubtableStart; ++ UINT32 NumPrivRes; + + + ParentTable = DtPeekSubtable (); +@@ -1092,7 +1093,7 @@ DtCompilePptt ( + { + /* Compile initiator proximity domain list */ + +- PpttProcessor->NumberOfPrivResources = 0; ++ NumPrivRes = 0; + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, +@@ -1108,8 +1109,10 @@ DtCompilePptt ( + + DtInsertSubtable (ParentTable, Subtable); + PpttHeader->Length += (UINT8)(Subtable->Length); +- PpttProcessor->NumberOfPrivResources++; ++ NumPrivRes++; + } ++ PpttProcessor->NumberOfPrivResources = ++ AcpiUtReadUint32(&NumPrivRes); + } + break; + diff --git a/0028-Support-PCCT-in-a-big-endian-world.patch b/0028-Support-PCCT-in-a-big-endian-world.patch new file mode 100644 index 0000000..49607ea --- /dev/null +++ b/0028-Support-PCCT-in-a-big-endian-world.patch @@ -0,0 +1,54 @@ +From 661f59c00e991553fb3f5fe7786eb0e2f640805c Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 25 Sep 2020 17:39:34 -0600 +Subject: [PATCH 28/40] Support PCCT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 10 +++++----- + 1 file changed, 5 insertions(+), 5 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1286,13 +1286,13 @@ AcpiDmDumpPcct ( + ACPI_STATUS Status; + ACPI_PCCT_SUBSPACE *Subtable; + ACPI_DMTABLE_INFO *InfoTable; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_PCCT); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoPcct); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1301,12 +1301,12 @@ AcpiDmDumpPcct ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Header.Length, AcpiDmTableInfoPcctHdr); + if (ACPI_FAILURE (Status)) + { +@@ -1349,7 +1349,7 @@ AcpiDmDumpPcct ( + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Subtable->Header.Length, InfoTable); + if (ACPI_FAILURE (Status)) + { diff --git a/0029-Support-WDAT-in-a-big-endian-world.patch b/0029-Support-WDAT-in-a-big-endian-world.patch new file mode 100644 index 0000000..3e0661c --- /dev/null +++ b/0029-Support-WDAT-in-a-big-endian-world.patch @@ -0,0 +1,43 @@ +From 520e143b2bacb39032c06a33f61ae05583be6b2a Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Fri, 25 Sep 2020 18:13:20 -0600 +Subject: [PATCH 29/40] Support WDAT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -568,11 +568,12 @@ AcpiDmDumpWdat ( + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_WDAT); + ACPI_WDAT_ENTRY *Subtable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoWdat); + if (ACPI_FAILURE (Status)) + { + return; +@@ -581,12 +582,12 @@ AcpiDmDumpWdat ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); + if (ACPI_FAILURE (Status)) + { diff --git a/0030-Support-TCPA-in-a-big-endian-world.patch b/0030-Support-TCPA-in-a-big-endian-world.patch new file mode 100644 index 0000000..4c9780e --- /dev/null +++ b/0030-Support-TCPA-in-a-big-endian-world.patch @@ -0,0 +1,76 @@ +From b2e9a4397077ad56fea5a8b3f9f63ce3be65ae48 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Sun, 27 Sep 2020 12:09:28 -0600 +Subject: [PATCH 30/40] Support TCPA in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 13 ++++++++----- + source/compiler/dttable2.c | 4 +++- + 2 files changed, 11 insertions(+), 6 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -342,11 +342,13 @@ AcpiDmDumpTcpa ( + ACPI_TABLE_TCPA_HDR *Subtable = ACPI_ADD_PTR ( + ACPI_TABLE_TCPA_HDR, Table, Offset); + ACPI_STATUS Status; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); ++ UINT16 PlatformClass; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, ++ Status = AcpiDmDumpTable (TableLength, 0, Table, + 0, AcpiDmTableInfoTcpaHdr); + if (ACPI_FAILURE (Status)) + { +@@ -357,18 +359,19 @@ AcpiDmDumpTcpa ( + * Examine the PlatformClass field to determine the table type. + * Either a client or server table. Only one. + */ +- switch (CommonHeader->PlatformClass) ++ PlatformClass = AcpiUtReadUint16(&CommonHeader->PlatformClass); ++ switch (PlatformClass) + { + case ACPI_TCPA_CLIENT_TABLE: + +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + Table->Length - Offset, AcpiDmTableInfoTcpaClient); + break; + + case ACPI_TCPA_SERVER_TABLE: + +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Table->Length - Offset, AcpiDmTableInfoTcpaServer); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ TableLength - Offset, AcpiDmTableInfoTcpaServer); + break; + + default: +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -1773,6 +1773,7 @@ DtCompileTcpa ( + ACPI_TABLE_TCPA_HDR *TcpaHeader; + DT_SUBTABLE *ParentTable; + ACPI_STATUS Status; ++ UINT16 PlatformClass; + + + /* Compile the main table */ +@@ -1793,7 +1794,8 @@ DtCompileTcpa ( + */ + TcpaHeader = ACPI_CAST_PTR (ACPI_TABLE_TCPA_HDR, ParentTable->Buffer); + +- switch (TcpaHeader->PlatformClass) ++ PlatformClass = AcpiUtReadUint16(&TcpaHeader->PlatformClass); ++ switch (PlatformClass) + { + case ACPI_TCPA_CLIENT_TABLE: + diff --git a/0031-Support-STAO-in-a-big-endian-world.patch b/0031-Support-STAO-in-a-big-endian-world.patch new file mode 100644 index 0000000..7ea55bc --- /dev/null +++ b/0031-Support-STAO-in-a-big-endian-world.patch @@ -0,0 +1,40 @@ +From 63fc38478f12b8c8b0d263d25f72ff7538fba2ce Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 28 Sep 2020 11:49:42 -0600 +Subject: [PATCH 31/40] Support STAO in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -285,14 +285,14 @@ AcpiDmDumpStao ( + { + ACPI_STATUS Status; + char *Namepath; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 StringLength; + UINT32 Offset = sizeof (ACPI_TABLE_STAO); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoStao); + if (ACPI_FAILURE (Status)) + { + return; +@@ -300,7 +300,7 @@ AcpiDmDumpStao ( + + /* The rest of the table consists of Namepath strings */ + +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + Namepath = ACPI_ADD_PTR (char, Table, Offset); + StringLength = strlen (Namepath) + 1; diff --git a/0032-Support-SLIC-and-MSDM-in-a-big-endian-world.patch b/0032-Support-SLIC-and-MSDM-in-a-big-endian-world.patch new file mode 100644 index 0000000..bc20a15 --- /dev/null +++ b/0032-Support-SLIC-and-MSDM-in-a-big-endian-world.patch @@ -0,0 +1,27 @@ +From 0455d918688d9d208644d7f5f6f10d6199486e9c Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 28 Sep 2020 12:49:23 -0600 +Subject: [PATCH 32/40] Support SLIC and MSDM in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -68,9 +68,10 @@ void + AcpiDmDumpSlic ( + ACPI_TABLE_HEADER *Table) + { ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + +- (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, +- Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); ++ (void) AcpiDmDumpTable (TableLength, sizeof (ACPI_TABLE_HEADER), Table, ++ TableLength - sizeof (*Table), AcpiDmTableInfoSlic); + } + + diff --git a/0033-Support-MCFG-in-a-big-endian-world.patch b/0033-Support-MCFG-in-a-big-endian-world.patch new file mode 100644 index 0000000..f50441b --- /dev/null +++ b/0033-Support-MCFG-in-a-big-endian-world.patch @@ -0,0 +1,50 @@ +From 0fecc447cd64bf9da3345b2912e41e6005eb1011 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 28 Sep 2020 13:01:18 -0600 +Subject: [PATCH 33/40] Support MCFG in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 11 ++++++----- + 1 file changed, 6 insertions(+), 5 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -769,11 +769,12 @@ AcpiDmDumpMcfg ( + ACPI_STATUS Status; + UINT32 Offset = sizeof (ACPI_TABLE_MCFG); + ACPI_MCFG_ALLOCATION *Subtable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoMcfg); + if (ACPI_FAILURE (Status)) + { + return; +@@ -782,17 +783,17 @@ AcpiDmDumpMcfg ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { +- if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length) ++ if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > TableLength) + { + AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n", +- (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length)); ++ (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - TableLength)); + return; + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); + if (ACPI_FAILURE (Status)) + { diff --git a/0034-Support-LPIT-in-a-big-endian-world.patch b/0034-Support-LPIT-in-a-big-endian-world.patch new file mode 100644 index 0000000..fd68c2a --- /dev/null +++ b/0034-Support-LPIT-in-a-big-endian-world.patch @@ -0,0 +1,46 @@ +From b521edcfceab513a900a000aa462d7f86b65a040 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 28 Sep 2020 16:49:30 -0600 +Subject: [PATCH 34/40] Support LPIT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -534,7 +534,7 @@ AcpiDmDumpLpit ( + { + ACPI_STATUS Status; + ACPI_LPIT_HEADER *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_LPIT); + ACPI_DMTABLE_INFO *InfoTable; + UINT32 SubtableLength; +@@ -543,11 +543,11 @@ AcpiDmDumpLpit ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + sizeof (ACPI_LPIT_HEADER), AcpiDmTableInfoLpitHdr); + if (ACPI_FAILURE (Status)) + { +@@ -571,7 +571,7 @@ AcpiDmDumpLpit ( + return; + } + +- Status = AcpiDmDumpTable (Length, Offset, Subtable, ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, + SubtableLength, InfoTable); + if (ACPI_FAILURE (Status)) + { diff --git a/0035-Support-PMTT-in-a-big-endian-world.patch b/0035-Support-PMTT-in-a-big-endian-world.patch new file mode 100644 index 0000000..b6aaee6 --- /dev/null +++ b/0035-Support-PMTT-in-a-big-endian-world.patch @@ -0,0 +1,216 @@ +From b55af37d2419fc5ea630774f49b4ed9b724451b3 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Mon, 28 Sep 2020 18:37:04 -0600 +Subject: [PATCH 35/40] Support PMTT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 66 +++++++++++++++++++++----------------- + source/compiler/dttable2.c | 5 ++- + 2 files changed, 41 insertions(+), 30 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -1442,17 +1442,21 @@ AcpiDmDumpPmtt ( + ACPI_PMTT_HEADER *MemSubtable; + ACPI_PMTT_HEADER *DimmSubtable; + ACPI_PMTT_DOMAIN *DomainArray; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT32 Offset = sizeof (ACPI_TABLE_PMTT); + UINT32 MemOffset; + UINT32 DimmOffset; + UINT32 DomainOffset; + UINT32 DomainCount; ++ UINT16 SubtableLength; ++ UINT16 MemSubtableLength; ++ UINT16 DimmSubtableLength; ++ UINT16 Tmp16; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoPmtt); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1461,13 +1465,14 @@ AcpiDmDumpPmtt ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoPmttHdr); ++ SubtableLength = AcpiUtReadUint16(&Subtable->Length); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, AcpiDmTableInfoPmttHdr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1485,8 +1490,8 @@ AcpiDmDumpPmtt ( + + /* Dump the fixed-length portion of the subtable */ + +- Status = AcpiDmDumpTable (Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoPmtt0); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, AcpiDmTableInfoPmtt0); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1498,15 +1503,16 @@ AcpiDmDumpPmtt ( + MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable, + sizeof (ACPI_PMTT_SOCKET)); + +- while (((Offset + MemOffset) < Table->Length) && +- (MemOffset < Subtable->Length)) ++ while (((Offset + MemOffset) < TableLength) && ++ (MemOffset < SubtableLength)) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, ++ MemSubtableLength = AcpiUtReadUint16(&MemSubtable->Length); ++ Status = AcpiDmDumpTable (TableLength, + Offset + MemOffset, MemSubtable, +- MemSubtable->Length, AcpiDmTableInfoPmttHdr); ++ MemSubtableLength, AcpiDmTableInfoPmttHdr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1524,9 +1530,9 @@ AcpiDmDumpPmtt ( + + /* Dump the fixed-length portion of the controller subtable */ + +- Status = AcpiDmDumpTable (Length, ++ Status = AcpiDmDumpTable (TableLength, + Offset + MemOffset, MemSubtable, +- MemSubtable->Length, AcpiDmTableInfoPmtt1); ++ MemSubtableLength, AcpiDmTableInfoPmtt1); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1534,16 +1540,17 @@ AcpiDmDumpPmtt ( + + /* Walk the variable count of proximity domains */ + +- DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount; ++ Tmp16 = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount; ++ DomainCount = AcpiUtReadUint16(&Tmp16); + DomainOffset = sizeof (ACPI_PMTT_CONTROLLER); + DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubtable, + sizeof (ACPI_PMTT_CONTROLLER)); + +- while (((Offset + MemOffset + DomainOffset) < Table->Length) && +- ((MemOffset + DomainOffset) < Subtable->Length) && ++ while (((Offset + MemOffset + DomainOffset) < TableLength) && ++ ((MemOffset + DomainOffset) < SubtableLength) && + DomainCount) + { +- Status = AcpiDmDumpTable (Length, ++ Status = AcpiDmDumpTable (TableLength, + Offset + MemOffset + DomainOffset, DomainArray, + sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); + if (ACPI_FAILURE (Status)) +@@ -1568,15 +1575,16 @@ AcpiDmDumpPmtt ( + DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable, + DomainOffset); + +- while (((Offset + MemOffset + DimmOffset) < Table->Length) && +- (DimmOffset < MemSubtable->Length)) ++ while (((Offset + MemOffset + DimmOffset) < TableLength) && ++ (DimmOffset < MemSubtableLength)) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Length, ++ DimmSubtableLength = AcpiUtReadUint16(&DimmSubtable->Length); ++ Status = AcpiDmDumpTable (TableLength, + Offset + MemOffset + DimmOffset, DimmSubtable, +- DimmSubtable->Length, AcpiDmTableInfoPmttHdr); ++ DimmSubtableLength, AcpiDmTableInfoPmttHdr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1594,9 +1602,9 @@ AcpiDmDumpPmtt ( + + /* Dump the fixed-length DIMM subtable */ + +- Status = AcpiDmDumpTable (Length, ++ Status = AcpiDmDumpTable (TableLength, + Offset + MemOffset + DimmOffset, DimmSubtable, +- DimmSubtable->Length, AcpiDmTableInfoPmtt2); ++ DimmSubtableLength, AcpiDmTableInfoPmtt2); + if (ACPI_FAILURE (Status)) + { + return; +@@ -1604,23 +1612,23 @@ AcpiDmDumpPmtt ( + + /* Point to next DIMM subtable */ + +- DimmOffset += DimmSubtable->Length; ++ DimmOffset += DimmSubtableLength; + DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, +- DimmSubtable, DimmSubtable->Length); ++ DimmSubtable, DimmSubtableLength); + } + + /* Point to next Controller subtable */ + +- MemOffset += MemSubtable->Length; ++ MemOffset += MemSubtableLength; + MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, +- MemSubtable, MemSubtable->Length); ++ MemSubtable, MemSubtableLength); + } + + /* Point to next Socket subtable */ + +- Offset += Subtable->Length; ++ Offset += SubtableLength; + Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, +- Subtable, Subtable->Length); ++ Subtable, SubtableLength); + } + } + +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -885,6 +885,7 @@ DtCompilePmtt ( + ACPI_PMTT_HEADER *PmttHeader; + ACPI_PMTT_CONTROLLER *PmttController; + UINT16 DomainCount; ++ UINT16 Length; + UINT8 PrevType = ACPI_PMTT_TYPE_SOCKET; + + +@@ -929,6 +930,8 @@ DtCompilePmtt ( + DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + ++ Length = AcpiUtReadUint16(&PmttHeader->Length); ++ PmttHeader->Length = Length; + switch (PmttHeader->Type) + { + case ACPI_PMTT_TYPE_SOCKET: +@@ -962,7 +965,7 @@ DtCompilePmtt ( + + PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER, + (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER))); +- DomainCount = PmttController->DomainCount; ++ DomainCount = AcpiUtReadUint16(&PmttController->DomainCount); + + while (DomainCount) + { diff --git a/0036-Support-IORT-in-a-big-endian-world.patch b/0036-Support-IORT-in-a-big-endian-world.patch new file mode 100644 index 0000000..e44456e --- /dev/null +++ b/0036-Support-IORT-in-a-big-endian-world.patch @@ -0,0 +1,365 @@ +From 88d16feb9d6982cc9c09f2ae9b76b26f0d9c96e0 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 30 Sep 2020 17:48:04 -0600 +Subject: [PATCH 36/40] Support IORT in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 73 ++++++++++++++++++++++---------------- + source/compiler/dttable1.c | 37 ++++++++++--------- + 2 files changed, 64 insertions(+), 46 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -75,16 +75,19 @@ AcpiDmDumpIort ( + ACPI_IORT_SMMU *IortSmmu = NULL; + UINT32 Offset; + UINT32 NodeOffset; ++ UINT32 NodeLength; + UINT32 Length; + ACPI_DMTABLE_INFO *InfoTable; + char *String; + UINT32 i; + UINT32 MappingByteLength; ++ UINT32 MappingCount; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoIort); + if (ACPI_FAILURE (Status)) + { + return; +@@ -95,25 +98,26 @@ AcpiDmDumpIort ( + + /* Dump the OptionalPadding (optional) */ + +- if (Iort->NodeOffset > Offset) ++ NodeOffset = AcpiUtReadUint32(&Iort->NodeOffset); ++ if (NodeOffset > Offset) + { +- Status = AcpiDmDumpTable (Table->Length, Offset, Table, +- Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); ++ Status = AcpiDmDumpTable (TableLength, Offset, Table, ++ NodeOffset - Offset, AcpiDmTableInfoIortPad); + if (ACPI_FAILURE (Status)) + { + return; + } + } + +- Offset = Iort->NodeOffset; +- while (Offset < Table->Length) ++ Offset = AcpiUtReadUint32(&Iort->NodeOffset); ++ while (Offset < TableLength) + { + /* Common subtable header */ + + IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, Table, Offset); + AcpiOsPrintf ("\n"); + Length = ACPI_OFFSET (ACPI_IORT_NODE, NodeData); +- Status = AcpiDmDumpTable (Table->Length, Offset, ++ Status = AcpiDmDumpTable (TableLength, Offset, + IortNode, Length, AcpiDmTableInfoIortHdr); + if (ACPI_FAILURE (Status)) + { +@@ -142,7 +146,7 @@ AcpiDmDumpIort ( + case ACPI_IORT_NODE_PCI_ROOT_COMPLEX: + + InfoTable = AcpiDmTableInfoIort2; +- Length = IortNode->Length - NodeOffset; ++ Length = AcpiUtReadUint16(&IortNode->Length) - NodeOffset; + break; + + case ACPI_IORT_NODE_SMMU: +@@ -155,13 +159,13 @@ AcpiDmDumpIort ( + case ACPI_IORT_NODE_SMMU_V3: + + InfoTable = AcpiDmTableInfoIort4; +- Length = IortNode->Length - NodeOffset; ++ Length = AcpiUtReadUint16(&IortNode->Length) - NodeOffset; + break; + + case ACPI_IORT_NODE_PMCG: + + InfoTable = AcpiDmTableInfoIort5; +- Length = IortNode->Length - NodeOffset; ++ Length = AcpiUtReadUint16(&IortNode->Length) - NodeOffset; + break; + + default: +@@ -171,7 +175,7 @@ AcpiDmDumpIort ( + + /* Attempt to continue */ + +- if (!IortNode->Length) ++ if (!AcpiUtReadUint16(&IortNode->Length)) + { + AcpiOsPrintf ("Invalid zero length IORT node\n"); + return; +@@ -182,7 +186,7 @@ AcpiDmDumpIort ( + /* Dump the node subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, InfoTable); + if (ACPI_FAILURE (Status)) +@@ -202,9 +206,11 @@ AcpiDmDumpIort ( + + if (IortItsGroup) + { +- for (i = 0; i < IortItsGroup->ItsCount; i++) ++ UINT32 ItsCount = AcpiUtReadUint32(&IortItsGroup->ItsCount); ++ ++ for (i = 0; i < ItsCount; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 4, AcpiDmTableInfoIort0a); + if (ACPI_FAILURE (Status)) +@@ -221,12 +227,14 @@ AcpiDmDumpIort ( + + /* Dump the Padding (optional) */ + +- if (IortNode->Length > NodeOffset) ++ NodeLength = AcpiUtReadUint16(&IortNode->Length); ++ if (NodeLength > NodeOffset) + { + MappingByteLength = +- IortNode->MappingCount * sizeof (ACPI_IORT_ID_MAPPING); +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, +- Table, IortNode->Length - NodeOffset - MappingByteLength, ++ AcpiUtReadUint32(&IortNode->MappingCount) * ++ sizeof (ACPI_IORT_ID_MAPPING); ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, ++ Table, NodeLength - NodeOffset - MappingByteLength, + AcpiDmTableInfoIort1a); + if (ACPI_FAILURE (Status)) + { +@@ -243,9 +251,11 @@ AcpiDmDumpIort ( + + if (IortSmmu) + { ++ UINT32 InterruptCount; ++ + Length = 2 * sizeof (UINT64); +- NodeOffset = IortSmmu->GlobalInterruptOffset; +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ++ NodeOffset = AcpiUtReadUint32(&IortSmmu->GlobalInterruptOffset); ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, AcpiDmTableInfoIort3a); + if (ACPI_FAILURE (Status)) +@@ -253,10 +263,11 @@ AcpiDmDumpIort ( + return; + } + +- NodeOffset = IortSmmu->ContextInterruptOffset; +- for (i = 0; i < IortSmmu->ContextInterruptCount; i++) ++ NodeOffset = AcpiUtReadUint32(&IortSmmu->ContextInterruptOffset); ++ InterruptCount = AcpiUtReadUint32(&IortSmmu->ContextInterruptCount); ++ for (i = 0; i < InterruptCount; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 8, AcpiDmTableInfoIort3b); + if (ACPI_FAILURE (Status)) +@@ -267,10 +278,11 @@ AcpiDmDumpIort ( + NodeOffset += 8; + } + +- NodeOffset = IortSmmu->PmuInterruptOffset; +- for (i = 0; i < IortSmmu->PmuInterruptCount; i++) ++ NodeOffset = AcpiUtReadUint32(&IortSmmu->PmuInterruptOffset); ++ InterruptCount = AcpiUtReadUint32(&IortSmmu->PmuInterruptCount); ++ for (i = 0; i < InterruptCount; i++) + { +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + 8, AcpiDmTableInfoIort3c); + if (ACPI_FAILURE (Status)) +@@ -290,12 +302,13 @@ AcpiDmDumpIort ( + + /* Dump the ID mappings */ + +- NodeOffset = IortNode->MappingOffset; +- for (i = 0; i < IortNode->MappingCount; i++) ++ NodeOffset = AcpiUtReadUint32(&IortNode->MappingOffset); ++ MappingCount = AcpiUtReadUint32(&IortNode->MappingCount); ++ for (i = 0; i < MappingCount; i++) + { + AcpiOsPrintf ("\n"); + Length = sizeof (ACPI_IORT_ID_MAPPING); +- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, ++ Status = AcpiDmDumpTable (TableLength, Offset + NodeOffset, + ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), + Length, AcpiDmTableInfoIortMap); + if (ACPI_FAILURE (Status)) +@@ -309,7 +322,7 @@ AcpiDmDumpIort ( + NextSubtable: + /* Point to next node subtable */ + +- Offset += IortNode->Length; ++ Offset += AcpiUtReadUint16(&IortNode->Length); + } + } + +Index: acpica-unix2-20200925/source/compiler/dttable1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable1.c ++++ acpica-unix2-20200925/source/compiler/dttable1.c +@@ -1516,6 +1516,7 @@ DtCompileIort ( + ACPI_IORT_NODE *IortNode; + ACPI_IORT_ITS_GROUP *IortItsGroup; + ACPI_IORT_SMMU *IortSmmu; ++ UINT32 IortNodeOffset; + UINT32 NodeNumber; + UINT32 NodeLength; + UINT32 IdMappingNumber; +@@ -1548,7 +1549,7 @@ DtCompileIort ( + * Optionally allows the generic data types to be used for filling + * this field. + */ +- Iort->NodeOffset = sizeof (ACPI_TABLE_IORT); ++ IortNodeOffset = sizeof (ACPI_TABLE_IORT); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortPad, + &Subtable); + if (ACPI_FAILURE (Status)) +@@ -1558,7 +1559,7 @@ DtCompileIort ( + if (Subtable) + { + DtInsertSubtable (ParentTable, Subtable); +- Iort->NodeOffset += Subtable->Length; ++ IortNodeOffset += Subtable->Length; + } + else + { +@@ -1568,8 +1569,9 @@ DtCompileIort ( + { + return (Status); + } +- Iort->NodeOffset += PaddingLength; ++ IortNodeOffset += PaddingLength; + } ++ Iort->NodeOffset = AcpiUtReadUint32(&IortNodeOffset); + + NodeNumber = 0; + while (*PFieldList) +@@ -1623,7 +1625,7 @@ DtCompileIort ( + ItsNumber++; + } + +- IortItsGroup->ItsCount = ItsNumber; ++ IortItsGroup->ItsCount = AcpiUtReadUint32(&ItsNumber); + break; + + case ACPI_IORT_NODE_NAMED_COMPONENT: +@@ -1657,15 +1659,18 @@ DtCompileIort ( + } + else + { +- if (NodeLength > IortNode->MappingOffset) ++ UINT32 MappingOffset; ++ ++ MappingOffset = IortNode->MappingOffset; ++ if (NodeLength > MappingOffset) + { + return (AE_BAD_DATA); + } + +- if (NodeLength < IortNode->MappingOffset) ++ if (NodeLength < MappingOffset) + { + Status = DtCompilePadding ( +- IortNode->MappingOffset - NodeLength, ++ MappingOffset - NodeLength, + &Subtable); + if (ACPI_FAILURE (Status)) + { +@@ -1673,7 +1678,7 @@ DtCompileIort ( + } + + DtInsertSubtable (ParentTable, Subtable); +- NodeLength = IortNode->MappingOffset; ++ NodeLength = MappingOffset; + } + } + break; +@@ -1706,7 +1711,7 @@ DtCompileIort ( + + /* Compile global interrupt array */ + +- IortSmmu->GlobalInterruptOffset = NodeLength; ++ IortSmmu->GlobalInterruptOffset = AcpiUtReadUint32(&NodeLength); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3a, + &Subtable); + if (ACPI_FAILURE (Status)) +@@ -1720,7 +1725,7 @@ DtCompileIort ( + /* Compile context interrupt array */ + + ContextIrptNumber = 0; +- IortSmmu->ContextInterruptOffset = NodeLength; ++ IortSmmu->ContextInterruptOffset = AcpiUtReadUint32(&NodeLength); + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3b, +@@ -1740,12 +1745,12 @@ DtCompileIort ( + ContextIrptNumber++; + } + +- IortSmmu->ContextInterruptCount = ContextIrptNumber; ++ IortSmmu->ContextInterruptCount = AcpiUtReadUint32(&ContextIrptNumber); + + /* Compile PMU interrupt array */ + + PmuIrptNumber = 0; +- IortSmmu->PmuInterruptOffset = NodeLength; ++ IortSmmu->PmuInterruptOffset = AcpiUtReadUint32(&NodeLength); + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3c, +@@ -1765,7 +1770,7 @@ DtCompileIort ( + PmuIrptNumber++; + } + +- IortSmmu->PmuInterruptCount = PmuIrptNumber; ++ IortSmmu->PmuInterruptCount = AcpiUtReadUint32(&PmuIrptNumber); + break; + + case ACPI_IORT_NODE_SMMU_V3: +@@ -1802,7 +1807,7 @@ DtCompileIort ( + + /* Compile Array of ID mappings */ + +- IortNode->MappingOffset = NodeLength; ++ IortNode->MappingOffset = AcpiUtReadUint32(&NodeLength); + IdMappingNumber = 0; + while (*PFieldList) + { +@@ -1823,7 +1828,7 @@ DtCompileIort ( + IdMappingNumber++; + } + +- IortNode->MappingCount = IdMappingNumber; ++ IortNode->MappingCount = AcpiUtReadUint32(&IdMappingNumber); + if (!IdMappingNumber) + { + IortNode->MappingOffset = 0; +@@ -1838,7 +1843,7 @@ DtCompileIort ( + NodeNumber++; + } + +- Iort->NodeCount = NodeNumber; ++ Iort->NodeCount = AcpiUtReadUint32(&NodeNumber); + return (AE_OK); + } + diff --git a/0037-Support-IVRS-in-a-big-endian-world.patch b/0037-Support-IVRS-in-a-big-endian-world.patch new file mode 100644 index 0000000..53f8bf2 --- /dev/null +++ b/0037-Support-IVRS-in-a-big-endian-world.patch @@ -0,0 +1,96 @@ +From 49b3d77990241c7216412d78e52cf15b3aa6d1ad Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 30 Sep 2020 18:18:07 -0600 +Subject: [PATCH 37/40] Support IVRS in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump2.c | 25 ++++++++++++++----------- + 1 file changed, 14 insertions(+), 11 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump2.c ++++ acpica-unix2-20200925/source/common/dmtbdump2.c +@@ -353,11 +353,13 @@ AcpiDmDumpIvrs ( + ACPI_IVRS_DE_HEADER *DeviceEntry; + ACPI_IVRS_HEADER *Subtable; + ACPI_DMTABLE_INFO *InfoTable; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); ++ UINT16 SubtableLength; + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoIvrs); + if (ACPI_FAILURE (Status)) + { + return; +@@ -366,13 +368,14 @@ AcpiDmDumpIvrs ( + /* Subtables */ + + Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset); +- while (Offset < Table->Length) ++ while (Offset < TableLength) + { + /* Common subtable header */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Subtable->Length, AcpiDmTableInfoIvrsHdr); ++ SubtableLength = AcpiUtReadUint16(&Subtable->Length); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, AcpiDmTableInfoIvrsHdr); + if (ACPI_FAILURE (Status)) + { + return; +@@ -404,7 +407,7 @@ AcpiDmDumpIvrs ( + + /* Attempt to continue */ + +- if (!Subtable->Length) ++ if (!SubtableLength) + { + AcpiOsPrintf ("Invalid zero length subtable\n"); + return; +@@ -415,8 +418,8 @@ AcpiDmDumpIvrs ( + /* Dump the subtable */ + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Subtable->Length, InfoTable); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ SubtableLength, InfoTable); + if (ACPI_FAILURE (Status)) + { + return; +@@ -442,7 +445,7 @@ AcpiDmDumpIvrs ( + sizeof (ACPI_IVRS_HARDWARE2)); + } + +- while (EntryOffset < (Offset + Subtable->Length)) ++ while (EntryOffset < (Offset + SubtableLength)) + { + AcpiOsPrintf ("\n"); + /* +@@ -504,7 +507,7 @@ AcpiDmDumpIvrs ( + + /* Dump the Device Entry */ + +- Status = AcpiDmDumpTable (Table->Length, EntryOffset, ++ Status = AcpiDmDumpTable (TableLength, EntryOffset, + DeviceEntry, EntryLength, InfoTable); + if (ACPI_FAILURE (Status)) + { +@@ -520,8 +523,8 @@ AcpiDmDumpIvrs ( + NextSubtable: + /* Point to next subtable */ + +- Offset += Subtable->Length; +- Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length); ++ Offset += SubtableLength; ++ Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, SubtableLength); + } + } + diff --git a/0038-Support-TPM2-in-a-big-endian-world.patch b/0038-Support-TPM2-in-a-big-endian-world.patch new file mode 100644 index 0000000..b0298bb --- /dev/null +++ b/0038-Support-TPM2-in-a-big-endian-world.patch @@ -0,0 +1,119 @@ +From 1e1129d788087025cf31b0c3babdb9bca01f1c4e Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 30 Sep 2020 18:42:38 -0600 +Subject: [PATCH 38/40] Support TPM2 in a big-endian world + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 18 ++++++++++-------- + source/compiler/dttable2.c | 8 +++++--- + 2 files changed, 15 insertions(+), 11 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -409,11 +409,12 @@ AcpiDmDumpTpm2Rev3 ( + ACPI_TABLE_TPM23 *CommonHeader = ACPI_CAST_PTR (ACPI_TABLE_TPM23, Table); + ACPI_TPM23_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM23_TRAILER, Table, Offset); + ACPI_STATUS Status; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm23); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoTpm23); + if (ACPI_FAILURE (Status)) + { + return; +@@ -425,8 +426,8 @@ AcpiDmDumpTpm2Rev3 ( + { + case ACPI_TPM23_ACPI_START_METHOD: + +- (void) AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Table->Length - Offset, AcpiDmTableInfoTpm23a); ++ (void) AcpiDmDumpTable (TableLength, Offset, Subtable, ++ TableLength - Offset, AcpiDmTableInfoTpm23a); + break; + + default: +@@ -456,6 +457,7 @@ AcpiDmDumpTpm2 ( + ACPI_TPM2_TRAILER *Subtable = ACPI_ADD_PTR (ACPI_TPM2_TRAILER, Table, Offset); + ACPI_TPM2_ARM_SMC *ArmSubtable; + ACPI_STATUS Status; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + + + if (Table->Revision == 3) +@@ -466,7 +468,7 @@ AcpiDmDumpTpm2 ( + + /* Main table */ + +- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoTpm2); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoTpm2); + + if (ACPI_FAILURE (Status)) + { +@@ -474,8 +476,8 @@ AcpiDmDumpTpm2 ( + } + + AcpiOsPrintf ("\n"); +- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, +- Table->Length - Offset, AcpiDmTableInfoTpm2a); ++ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, ++ TableLength - Offset, AcpiDmTableInfoTpm2a); + if (ACPI_FAILURE (Status)) + { + return; +@@ -490,8 +492,8 @@ AcpiDmDumpTpm2 ( + Offset += sizeof (ACPI_TPM2_TRAILER); + + AcpiOsPrintf ("\n"); +- (void) AcpiDmDumpTable (Table->Length, Offset, ArmSubtable, +- Table->Length - Offset, AcpiDmTableInfoTpm211); ++ (void) AcpiDmDumpTable (TableLength, Offset, ArmSubtable, ++ TableLength - Offset, AcpiDmTableInfoTpm211); + break; + + default: +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -1904,6 +1904,7 @@ DtCompileTpm2 ( + DT_SUBTABLE *ParentTable; + ACPI_STATUS Status = AE_OK; + ACPI_TABLE_HEADER *Header; ++ UINT8 StartMethod; + + + ParentTable = DtPeekSubtable (); +@@ -1947,7 +1948,8 @@ DtCompileTpm2 ( + + /* Subtable type depends on the StartMethod */ + +- switch (Tpm2Header->StartMethod) ++ StartMethod = *(UINT8 *)&Tpm2Header->StartMethod; ++ switch (StartMethod) + { + case ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC: + +@@ -1978,7 +1980,7 @@ DtCompileTpm2 ( + case ACPI_TPM2_RESERVED10: + + AcpiOsPrintf ("\n**** Reserved TPM2 Start Method type 0x%X\n", +- Tpm2Header->StartMethod); ++ StartMethod); + Status = AE_ERROR; + break; + +@@ -1986,7 +1988,7 @@ DtCompileTpm2 ( + default: + + AcpiOsPrintf ("\n**** Unknown TPM2 Start Method type 0x%X\n", +- Tpm2Header->StartMethod); ++ StartMethod); + Status = AE_ERROR; + break; + } diff --git a/0039-Add-partial-big-endian-support-for-WPBT-tables.patch b/0039-Add-partial-big-endian-support-for-WPBT-tables.patch new file mode 100644 index 0000000..e5192e5 --- /dev/null +++ b/0039-Add-partial-big-endian-support-for-WPBT-tables.patch @@ -0,0 +1,61 @@ +From 9d7f9c8f4ecbee2e621d471a8c4944cebe62947d Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Wed, 30 Sep 2020 18:59:57 -0600 +Subject: [PATCH 39/40] Add partial big-endian support for WPBT tables + +There's some weirdness here that at present does not warrant +further investigation; this is just a really low priority table. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmtbdump3.c | 8 ++++---- + source/compiler/dttable2.c | 3 ++- + 2 files changed, 6 insertions(+), 5 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmtbdump3.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump3.c ++++ acpica-unix2-20200925/source/common/dmtbdump3.c +@@ -628,13 +628,13 @@ AcpiDmDumpWpbt ( + { + ACPI_STATUS Status; + ACPI_TABLE_WPBT *Subtable; +- UINT32 Length = Table->Length; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); + UINT16 ArgumentsLength; + + + /* Dump the main table */ + +- Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWpbt); ++ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoWpbt); + if (ACPI_FAILURE (Status)) + { + return; +@@ -643,10 +643,10 @@ AcpiDmDumpWpbt ( + /* Extract the arguments buffer length from the main table */ + + Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table); +- ArgumentsLength = Subtable->ArgumentsLength; ++ ArgumentsLength = AcpiUtReadUint16(&Subtable->ArgumentsLength); + + /* Dump the arguments buffer */ + +- (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength, ++ (void) AcpiDmDumpTable (TableLength, 0, Table, ArgumentsLength, + AcpiDmTableInfoWpbt0); + } +Index: acpica-unix2-20200925/source/compiler/dttable2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/dttable2.c ++++ acpica-unix2-20200925/source/compiler/dttable2.c +@@ -2190,7 +2190,8 @@ DtCompileWpbt ( + + /* Extract the length of the Arguments buffer, insert into main table */ + +- Length = (UINT16) Subtable->TotalLength; ++ AcpiUtWriteUint(&Length, sizeof(UINT16), ++ &Subtable->TotalLength, sizeof(UINT32)); + Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer); + Table->ArgumentsLength = Length; + diff --git a/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch b/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch new file mode 100644 index 0000000..b5087dc --- /dev/null +++ b/0040-Support-DSDT-SSDT-in-a-big-endian-world.patch @@ -0,0 +1,2682 @@ +From 355bbdd2ecf184e56108a2446244761895f93a62 Mon Sep 17 00:00:00 2001 +From: Al Stone ahs3@redhat.com +Date: Thu, 15 Oct 2020 11:35:23 -0600 +Subject: [PATCH 40/40] Support DSDT/SSDT in a big-endian world + +NB: this is a very large diff. The problem is that ResourceTemplates +are treated differently during compilation and disassembly so each of +the resource types had code that needed to be touched directly. + +In general, however, just reading or writing individual AML opcodes +wasn't that much of a change, and most of it was on the codegen side. + +Signed-off-by: Al Stone ahs3@redhat.com +--- + source/common/dmrestag.c | 2 +- + source/common/dmtables.c | 17 +- + source/common/dmtbdump.c | 3 +- + source/compiler/aslcodegen.c | 61 +++++-- + source/compiler/aslrestype1.c | 44 +++-- + source/compiler/aslrestype1i.c | 33 ++-- + source/compiler/aslrestype2.c | 20 ++- + source/compiler/aslrestype2d.c | 99 ++++++----- + source/compiler/aslrestype2e.c | 90 ++++++---- + source/compiler/aslrestype2q.c | 81 ++++++--- + source/compiler/aslrestype2s.c | 181 ++++++++++++++++++--- + source/compiler/aslrestype2w.c | 94 ++++++----- + source/components/disassembler/dmbuffer.c | 2 +- + source/components/disassembler/dmopcode.c | 8 +- + source/components/disassembler/dmresrc.c | 2 +- + source/components/disassembler/dmresrcl.c | 43 +++-- + source/components/disassembler/dmresrcl2.c | 64 +++++--- + source/components/disassembler/dmresrcs.c | 18 +- + source/components/dispatcher/dsfield.c | 16 +- + source/components/namespace/nsaccess.c | 2 +- + source/components/namespace/nsnames.c | 2 +- + source/components/namespace/nsparse.c | 6 +- + source/components/namespace/nsutils.c | 7 +- + 23 files changed, 613 insertions(+), 282 deletions(-) + +Index: acpica-unix2-20200925/source/common/dmrestag.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmrestag.c ++++ acpica-unix2-20200925/source/common/dmrestag.c +@@ -1038,7 +1038,7 @@ AcpiDmAddResourcesToNamespace ( + * NextOp contains the Aml pointer and the Aml length + */ + AcpiUtWalkAmlResources (NULL, (UINT8 *) NextOp->Named.Data, +- (ACPI_SIZE) NextOp->Common.Value.Integer, ++ (ACPI_SIZE) NextOp->Common.Value.Size, + AcpiDmAddResourceToNamespace, (void **) BufferNode); + } + +Index: acpica-unix2-20200925/source/common/dmtables.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtables.c ++++ acpica-unix2-20200925/source/common/dmtables.c +@@ -142,6 +142,10 @@ AdCreateTableHeader ( + ACPI_TABLE_HEADER *Table) + { + UINT8 Checksum; ++ UINT32 TableLength = AcpiUtReadUint32(&Table->Length); ++ UINT32 OemRevision = AcpiUtReadUint32(&Table->OemRevision); ++ UINT32 CompilerRevision = ++ AcpiUtReadUint32(&Table->AslCompilerRevision); + + + /* Reset globals for External statements */ +@@ -156,7 +160,7 @@ AdCreateTableHeader ( + + AcpiOsPrintf (" * Original Table Header:\n"); + AcpiOsPrintf (" * Signature "%4.4s"\n", Table->Signature); +- AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); ++ AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", TableLength, TableLength); + + /* Print and validate the revision */ + +@@ -188,7 +192,7 @@ AdCreateTableHeader ( + + AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum); + +- Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); ++ Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), TableLength); + if (Checksum) + { + AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", +@@ -198,9 +202,9 @@ AdCreateTableHeader ( + AcpiOsPrintf ("\n"); + AcpiOsPrintf (" * OEM ID "%.6s"\n", Table->OemId); + AcpiOsPrintf (" * OEM Table ID "%.8s"\n", Table->OemTableId); +- AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); ++ AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", OemRevision, OemRevision); + AcpiOsPrintf (" * Compiler ID "%.4s"\n", Table->AslCompilerId); +- AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); ++ AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", CompilerRevision, CompilerRevision); + AcpiOsPrintf (" */\n"); + + /* +@@ -221,7 +225,7 @@ AdCreateTableHeader ( + AcpiOsPrintf ( + "DefinitionBlock ("", "%4.4s", %u, "%.6s", "%.8s", 0x%8.8X)\n", + Table->Signature, Table->Revision, +- Table->OemId, Table->OemTableId, Table->OemRevision); ++ Table->OemId, Table->OemTableId, OemRevision); + } + + +@@ -396,7 +400,8 @@ AdParseTable ( + + fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); + +- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); ++ AmlLength = AcpiUtReadUint32(&Table->Length); ++ AmlLength -= sizeof (ACPI_TABLE_HEADER); + AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); + + AcpiUtSetIntegerWidth (Table->Revision); +Index: acpica-unix2-20200925/source/common/dmtbdump.c +=================================================================== +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c ++++ acpica-unix2-20200925/source/common/dmtbdump.c +@@ -333,8 +333,7 @@ AcpiDmDumpXsdt ( + for (i = 0; i < Entries; i++) + { + AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); +- AcpiOsPrintf ("%8.8X%8.8X\n", +- ACPI_FORMAT_UINT64 (AcpiUtReadUint64(&Array[i]))); ++ AcpiOsPrintf ("%16.16lX\n", AcpiUtReadUint64(&Array[i])); + Offset += sizeof (UINT64); + } + } +Index: acpica-unix2-20200925/source/compiler/aslcodegen.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslcodegen.c ++++ acpica-unix2-20200925/source/compiler/aslcodegen.c +@@ -238,6 +238,10 @@ CgWriteAmlOpcode ( + { + UINT8 PkgLenFirstByte; + UINT32 i; ++ UINT8 Tmp8; ++ UINT16 Tmp16; ++ UINT32 Tmp32; ++ UINT64 Tmp64; + union { + UINT16 Opcode; + UINT8 OpcodeBytes[2]; +@@ -305,25 +309,26 @@ CgWriteAmlOpcode ( + + /* Value is the length to be encoded (Used in field definitions) */ + +- PkgLen.Len = (UINT32) Op->Asl.Value.Integer; ++ PkgLen.Len = (UINT32) Op->Asl.Value.Integer; + break; + + default: + + /* Check for two-byte opcode */ + ++ Tmp16 = AcpiUtReadUint16(&Aml.Opcode); + if (Aml.Opcode > 0x00FF) + { + /* Write the high byte first */ + +- CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[1], 1); ++ CgLocalWriteAmlData (Op, ((UINT8 *)&Tmp16)+1, 1); + } + +- CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[0], 1); ++ CgLocalWriteAmlData (Op, (UINT8 *)&Tmp16, 1); + + /* Subtreelength doesn't include length of package length bytes */ + +- PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes; ++ PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes; + break; + } + +@@ -335,7 +340,8 @@ CgWriteAmlOpcode ( + { + /* Simplest case -- no bytes to follow, just write the count */ + +- CgLocalWriteAmlData (Op, &PkgLen.LenBytes[0], 1); ++ Tmp8 = (UINT8) PkgLen.Len; ++ CgLocalWriteAmlData (Op, &Tmp8, 1); + } + else if (Op->Asl.AmlPkgLenBytes != 0) + { +@@ -343,9 +349,10 @@ CgWriteAmlOpcode ( + * Encode the "bytes to follow" in the first byte, top two bits. + * The low-order nybble of the length is in the bottom 4 bits + */ ++ Tmp8 = (UINT8) PkgLen.Len; + PkgLenFirstByte = (UINT8) + (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) | +- (PkgLen.LenBytes[0] & 0x0F)); ++ (Tmp8 & 0x0F)); + + CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1); + +@@ -359,6 +366,9 @@ CgWriteAmlOpcode ( + * Now we can write the remaining bytes - + * either 1, 2, or 3 bytes + */ ++ Tmp32 = PkgLen.Len; ++ AcpiUtWriteUint(&PkgLen.Len, Op->Asl.AmlPkgLenBytes, ++ &Tmp32, sizeof(UINT32)); + for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++) + { + CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1); +@@ -370,22 +380,30 @@ CgWriteAmlOpcode ( + { + case AML_BYTE_OP: + +- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 1); ++ Tmp64 = 0; ++ AcpiUtWriteUint(&Tmp64, 1, &Op->Asl.Value.Integer, 8); ++ CgLocalWriteAmlData (Op, &Tmp64, 1); + break; + + case AML_WORD_OP: + +- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 2); ++ Tmp64 = 0; ++ AcpiUtWriteUint(&Tmp64, 2, &Op->Asl.Value.Integer, 8); ++ CgLocalWriteAmlData (Op, &Tmp64, 2); + break; + + case AML_DWORD_OP: + +- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 4); ++ Tmp64 = 0; ++ AcpiUtWriteUint(&Tmp64, 4, &Op->Asl.Value.Integer, 8); ++ CgLocalWriteAmlData (Op, &Tmp64, 4); + break; + + case AML_QWORD_OP: + +- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 8); ++ Tmp64 = 0; ++ AcpiUtWriteUint(&Tmp64, 8, &Op->Asl.Value.Integer, 8); ++ CgLocalWriteAmlData (Op, &Tmp64, 8); + break; + + case AML_STRING_OP: +@@ -423,6 +441,7 @@ CgWriteTableHeader ( + ACPI_PARSE_OBJECT *Child; + UINT32 CommentLength; + ACPI_COMMENT_NODE *Current; ++ UINT32 Tmp32; + + + memset (&AslGbl_TableHeader, 0, sizeof (ACPI_TABLE_HEADER)); +@@ -478,7 +497,9 @@ CgWriteTableHeader ( + /* OEM Revision */ + + Child = Child->Asl.Next; +- AslGbl_TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer; ++ AcpiUtWriteUint(&Tmp32, sizeof(UINT32), ++ &Child->Asl.Value.Integer, sizeof(Child->Asl.Value.Integer)); ++ AslGbl_TableHeader.OemRevision = Tmp32; + + /* Compiler ID */ + +@@ -486,7 +507,8 @@ CgWriteTableHeader ( + + /* Compiler version */ + +- AslGbl_TableHeader.AslCompilerRevision = ACPI_CA_VERSION; ++ Tmp32 = ACPI_CA_VERSION; ++ AslGbl_TableHeader.AslCompilerRevision = AcpiUtReadUint32(&Tmp32); + + /* Table length. Checksum zero for now, will rewrite later */ + +@@ -541,6 +563,15 @@ CgWriteTableHeader ( + AslGbl_TableHeader.Checksum = 0; + Op->Asl.FinalAmlOffset = ftell (AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle); + ++ /* ++ * Adjust the Table length; it will only change when big-endian ++ * but we have to wait until here in case there is arithmetic to ++ * be done on the length before this step in the function ++ */ ++ ++ Tmp32 = AslGbl_TableHeader.Length; ++ AslGbl_TableHeader.Length = AcpiUtReadUint32(&Tmp32); ++ + /* Write entire header and clear the table header global */ + + CgLocalWriteAmlData (Op, &AslGbl_TableHeader, sizeof (ACPI_TABLE_HEADER)); +@@ -625,6 +656,7 @@ CgWriteNode ( + ACPI_PARSE_OBJECT *Op) + { + ASL_RESOURCE_NODE *Rnode; ++ UINT64 Tmp64; + + + /* Write all comments here. */ +@@ -653,7 +685,10 @@ CgWriteNode ( + case AML_RAW_DATA_DWORD: + case AML_RAW_DATA_QWORD: + +- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, Op->Asl.AmlLength); ++ Tmp64 = 0; ++ AcpiUtWriteUint(&Tmp64, Op->Asl.AmlLength, ++ &Op->Asl.Value.Integer, sizeof(UINT64)); ++ CgLocalWriteAmlData (Op, &Tmp64, Op->Asl.AmlLength); + return; + + +Index: acpica-unix2-20200925/source/compiler/aslrestype1.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype1.c ++++ acpica-unix2-20200925/source/compiler/aslrestype1.c +@@ -143,6 +143,7 @@ RsDoMemory24Descriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -151,7 +152,8 @@ RsDoMemory24Descriptor ( + + Descriptor = Rnode->Buffer; + Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24; +- Descriptor->Memory24.ResourceLength = 9; ++ Tmp16 = 9; ++ Descriptor->Memory24.ResourceLength = AcpiUtReadUint16(&Tmp16); + + /* Process all child initialization nodes */ + +@@ -168,7 +170,8 @@ RsDoMemory24Descriptor ( + + case 1: /* Min Address */ + +- Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory24.Minimum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum)); + MinOp = InitializerOp; +@@ -176,7 +179,8 @@ RsDoMemory24Descriptor ( + + case 2: /* Max Address */ + +- Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory24.Maximum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum)); + MaxOp = InitializerOp; +@@ -184,14 +188,16 @@ RsDoMemory24Descriptor ( + + case 3: /* Alignment */ + +- Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory24.Alignment = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment)); + break; + + case 4: /* Length */ + +- Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory24.AddressLength = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength)); + LengthOp = InitializerOp; +@@ -249,6 +255,8 @@ RsDoMemory32Descriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -257,7 +265,8 @@ RsDoMemory32Descriptor ( + + Descriptor = Rnode->Buffer; + Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32; +- Descriptor->Memory32.ResourceLength = 17; ++ Tmp16 = 17; ++ Descriptor->Memory32.ResourceLength = AcpiUtReadUint16(&Tmp16); + + /* Process all child initialization nodes */ + +@@ -274,7 +283,8 @@ RsDoMemory32Descriptor ( + + case 1: /* Min Address */ + +- Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory32.Minimum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum)); + MinOp = InitializerOp; +@@ -282,7 +292,8 @@ RsDoMemory32Descriptor ( + + case 2: /* Max Address */ + +- Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory32.Maximum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum)); + MaxOp = InitializerOp; +@@ -290,7 +301,8 @@ RsDoMemory32Descriptor ( + + case 3: /* Alignment */ + +- Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory32.Alignment = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment)); + AlignOp = InitializerOp; +@@ -298,7 +310,8 @@ RsDoMemory32Descriptor ( + + case 4: /* Length */ + +- Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Memory32.AddressLength = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength)); + LengthOp = InitializerOp; +@@ -352,6 +365,8 @@ RsDoMemory32FixedDescriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -360,7 +375,8 @@ RsDoMemory32FixedDescriptor ( + + Descriptor = Rnode->Buffer; + Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32; +- Descriptor->FixedMemory32.ResourceLength = 9; ++ Tmp16 = 9; ++ Descriptor->FixedMemory32.ResourceLength = AcpiUtReadUint16(&Tmp16); + + /* Process all child initialization nodes */ + +@@ -377,14 +393,16 @@ RsDoMemory32FixedDescriptor ( + + case 1: /* Address */ + +- Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->FixedMemory32.Address = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address)); + break; + + case 2: /* Length */ + +- Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->FixedMemory32.AddressLength = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength)); + break; +Index: acpica-unix2-20200925/source/compiler/aslrestype1i.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype1i.c ++++ acpica-unix2-20200925/source/compiler/aslrestype1i.c +@@ -199,6 +199,7 @@ RsDoFixedDmaDescriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -217,14 +218,16 @@ RsDoFixedDmaDescriptor ( + { + case 0: /* DMA Request Lines [WORD] (_DMA) */ + +- Descriptor->FixedDma.RequestLines = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->FixedDma.RequestLines = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_DMA, + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.RequestLines)); + break; + + case 1: /* DMA Channel [WORD] (_TYP) */ + +- Descriptor->FixedDma.Channels = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->FixedDma.Channels = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE, + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels)); + break; +@@ -275,6 +278,7 @@ RsDoFixedIoDescriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -293,8 +297,8 @@ RsDoFixedIoDescriptor ( + { + case 0: /* Base Address */ + +- Descriptor->FixedIo.Address = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->FixedIo.Address = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, + CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address)); + AddressOp = InitializerOp; +@@ -358,6 +362,7 @@ RsDoIoDescriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -383,8 +388,8 @@ RsDoIoDescriptor ( + + case 1: /* Min Address */ + +- Descriptor->Io.Minimum = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Io.Minimum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum)); + MinOp = InitializerOp; +@@ -392,8 +397,8 @@ RsDoIoDescriptor ( + + case 2: /* Max Address */ + +- Descriptor->Io.Maximum = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Io.Maximum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum)); + MaxOp = InitializerOp; +@@ -434,10 +439,10 @@ RsDoIoDescriptor ( + /* Validate the Min/Max/Len/Align values */ + + RsSmallAddressCheck (ACPI_RESOURCE_NAME_IO, +- Descriptor->Io.Minimum, +- Descriptor->Io.Maximum, +- Descriptor->Io.AddressLength, +- Descriptor->Io.Alignment, ++ (UINT32)(AcpiUtReadUint16(&Descriptor->Io.Minimum)), ++ (UINT32)(AcpiUtReadUint16(&Descriptor->Io.Maximum)), ++ (UINT32)Descriptor->Io.AddressLength, ++ (UINT32)Descriptor->Io.Alignment, + MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp); + + return (Rnode); +@@ -561,7 +566,7 @@ RsDoIrqDescriptor ( + + /* Now we can set the channel mask */ + +- Descriptor->Irq.IrqMask = IrqMask; ++ Descriptor->Irq.IrqMask = AcpiUtReadUint16(&IrqMask); + return (Rnode); + } + +@@ -660,6 +665,6 @@ RsDoIrqNoFlagsDescriptor ( + + /* Now we can set the interrupt mask */ + +- Descriptor->Irq.IrqMask = IrqMask; ++ Descriptor->Irq.IrqMask = AcpiUtReadUint16(&IrqMask); + return (Rnode); + } +Index: acpica-unix2-20200925/source/compiler/aslrestype2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2.c +@@ -77,6 +77,8 @@ RsDoGeneralRegisterDescriptor ( + ASL_RESOURCE_NODE *Rnode; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT64 Tmp64; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -85,7 +87,8 @@ RsDoGeneralRegisterDescriptor ( + + Descriptor = Rnode->Buffer; + Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER; +- Descriptor->GenericReg.ResourceLength = 12; ++ Tmp16 = 12; ++ Descriptor->GenericReg.ResourceLength = AcpiUtReadUint16(&Tmp16); + + /* Process all child initialization nodes */ + +@@ -116,7 +119,8 @@ RsDoGeneralRegisterDescriptor ( + + case 3: /* Register Address */ + +- Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer; ++ Tmp64 = InitializerOp->Asl.Value.Integer; ++ Descriptor->GenericReg.Address = AcpiUtReadUint64(&Tmp64); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS, + CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address)); + break; +@@ -184,6 +188,8 @@ RsDoInterruptDescriptor ( + BOOLEAN HasResSourceIndex = FALSE; + UINT8 ResSourceIndex = 0; + UINT8 *ResSourceString = NULL; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -225,7 +231,7 @@ RsDoInterruptDescriptor ( + * Initial descriptor length -- may be enlarged if there are + * optional fields present + */ +- Descriptor->ExtendedIrq.ResourceLength = 2; /* Flags and table length byte */ ++ Descriptor->ExtendedIrq.ResourceLength = 2; /* Flags and table length byte */ + Descriptor->ExtendedIrq.InterruptCount = 0; + + Rover = ACPI_CAST_PTR (AML_RESOURCE, +@@ -333,7 +339,8 @@ RsDoInterruptDescriptor ( + + /* Save the integer and move pointer to the next one */ + +- Rover->DwordItem = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Rover->DwordItem = AcpiUtReadUint32(&Tmp32); + Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4); + Descriptor->ExtendedIrq.InterruptCount++; + Descriptor->ExtendedIrq.ResourceLength += 4; +@@ -384,6 +391,8 @@ RsDoInterruptDescriptor ( + Descriptor->ExtendedIrq.ResourceLength = (UINT16) + (Descriptor->ExtendedIrq.ResourceLength + StringLength); + } ++ Tmp16 = Descriptor->ExtendedIrq.ResourceLength; ++ Descriptor->ExtendedIrq.ResourceLength = AcpiUtReadUint16(&Tmp16); + + Rnode->BufferLength = + (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) - +@@ -436,7 +445,8 @@ RsDoVendorLargeDescriptor ( + + Descriptor = Rnode->Buffer; + Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE; +- Descriptor->VendorLarge.ResourceLength = (UINT16) i; ++ AcpiUtWriteUint(&Descriptor->VendorLarge.ResourceLength, sizeof(UINT16), ++ &i, sizeof(UINT32)); + + /* Point to end-of-descriptor for vendor data */ + +Index: acpica-unix2-20200925/source/compiler/aslrestype2d.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2d.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2d.c +@@ -84,6 +84,8 @@ RsDoDwordIoDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -147,8 +149,8 @@ RsDoDwordIoDescriptor ( + + case 5: /* Address Granularity */ + +- Descriptor->Address32.Granularity = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Granularity = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); + GranOp = InitializerOp; +@@ -156,8 +158,8 @@ RsDoDwordIoDescriptor ( + + case 6: /* Address Min */ + +- Descriptor->Address32.Minimum = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Minimum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); + MinOp = InitializerOp; +@@ -165,8 +167,8 @@ RsDoDwordIoDescriptor ( + + case 7: /* Address Max */ + +- Descriptor->Address32.Maximum = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Maximum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); + MaxOp = InitializerOp; +@@ -174,16 +176,16 @@ RsDoDwordIoDescriptor ( + + case 8: /* Translation Offset */ + +- Descriptor->Address32.TranslationOffset = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.TranslationOffset = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); + break; + + case 9: /* Address Length */ + +- Descriptor->Address32.AddressLength = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.AddressLength = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); + LengthOp = InitializerOp; +@@ -271,11 +273,14 @@ RsDoDwordIoDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->Address32.ResourceLength; ++ Descriptor->Address32.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- (UINT64) Descriptor->Address32.Minimum, +- (UINT64) Descriptor->Address32.Maximum, +- (UINT64) Descriptor->Address32.AddressLength, +- (UINT64) Descriptor->Address32.Granularity, ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Minimum), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Maximum), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.AddressLength), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Granularity), + Descriptor->Address32.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +@@ -314,6 +319,8 @@ RsDoDwordMemoryDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -385,8 +392,8 @@ RsDoDwordMemoryDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->Address32.Granularity = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Granularity = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); + GranOp = InitializerOp; +@@ -394,8 +401,8 @@ RsDoDwordMemoryDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->Address32.Minimum = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Minimum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); + MinOp = InitializerOp; +@@ -403,8 +410,8 @@ RsDoDwordMemoryDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->Address32.Maximum = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Maximum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); + MaxOp = InitializerOp; +@@ -412,16 +419,16 @@ RsDoDwordMemoryDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->Address32.TranslationOffset = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.TranslationOffset = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->Address32.AddressLength = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.AddressLength = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); + LengthOp = InitializerOp; +@@ -506,11 +513,14 @@ RsDoDwordMemoryDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->Address32.ResourceLength; ++ Descriptor->Address32.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- (UINT64) Descriptor->Address32.Minimum, +- (UINT64) Descriptor->Address32.Maximum, +- (UINT64) Descriptor->Address32.AddressLength, +- (UINT64) Descriptor->Address32.Granularity, ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Minimum), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Maximum), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.AddressLength), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Granularity), + Descriptor->Address32.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +@@ -549,6 +559,8 @@ RsDoDwordSpaceDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -616,8 +628,8 @@ RsDoDwordSpaceDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->Address32.Granularity = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Granularity = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); + GranOp = InitializerOp; +@@ -625,8 +637,8 @@ RsDoDwordSpaceDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->Address32.Minimum = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Minimum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); + MinOp = InitializerOp; +@@ -634,8 +646,8 @@ RsDoDwordSpaceDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->Address32.Maximum = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.Maximum = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); + MaxOp = InitializerOp; +@@ -643,16 +655,16 @@ RsDoDwordSpaceDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->Address32.TranslationOffset = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.TranslationOffset = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->Address32.AddressLength = +- (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address32.AddressLength = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); + LengthOp = InitializerOp; +@@ -723,11 +735,14 @@ RsDoDwordSpaceDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->Address32.ResourceLength; ++ Descriptor->Address32.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- (UINT64) Descriptor->Address32.Minimum, +- (UINT64) Descriptor->Address32.Maximum, +- (UINT64) Descriptor->Address32.AddressLength, +- (UINT64) Descriptor->Address32.Granularity, ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Minimum), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Maximum), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.AddressLength), ++ (UINT64) AcpiUtReadUint32(&Descriptor->Address32.Granularity), + Descriptor->Address32.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +Index: acpica-unix2-20200925/source/compiler/aslrestype2e.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2e.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2e.c +@@ -80,6 +80,7 @@ RsDoExtendedIoDescriptor ( + UINT16 StringLength = 0; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -139,7 +140,8 @@ RsDoExtendedIoDescriptor ( + + case 5: /* Address Granularity */ + +- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Granularity = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); + GranOp = InitializerOp; +@@ -147,7 +149,8 @@ RsDoExtendedIoDescriptor ( + + case 6: /* Address Min */ + +- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Minimum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); + MinOp = InitializerOp; +@@ -155,7 +158,8 @@ RsDoExtendedIoDescriptor ( + + case 7: /* Address Max */ + +- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Maximum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); + MaxOp = InitializerOp; +@@ -163,14 +167,16 @@ RsDoExtendedIoDescriptor ( + + case 8: /* Translation Offset */ + +- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.TranslationOffset = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); + break; + + case 9: /* Address Length */ + +- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.AddressLength = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); + LengthOp = InitializerOp; +@@ -178,7 +184,8 @@ RsDoExtendedIoDescriptor ( + + case 10: /* Type-Specific Attributes */ + +- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.TypeSpecific = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); + break; +@@ -213,11 +220,14 @@ RsDoExtendedIoDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->ExtAddress64.ResourceLength; ++ Descriptor->ExtAddress64.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- Descriptor->ExtAddress64.Minimum, +- Descriptor->ExtAddress64.Maximum, +- Descriptor->ExtAddress64.AddressLength, +- Descriptor->ExtAddress64.Granularity, ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Minimum), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Maximum), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.AddressLength), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Granularity), + Descriptor->ExtAddress64.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +@@ -253,6 +263,7 @@ RsDoExtendedMemoryDescriptor ( + UINT16 StringLength = 0; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -319,7 +330,8 @@ RsDoExtendedMemoryDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Granularity = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); + GranOp = InitializerOp; +@@ -327,7 +339,8 @@ RsDoExtendedMemoryDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Minimum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); + MinOp = InitializerOp; +@@ -335,7 +348,8 @@ RsDoExtendedMemoryDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Maximum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); + MaxOp = InitializerOp; +@@ -343,14 +357,16 @@ RsDoExtendedMemoryDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.TranslationOffset = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.AddressLength = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); + LengthOp = InitializerOp; +@@ -358,7 +374,8 @@ RsDoExtendedMemoryDescriptor ( + + case 11: /* Type-Specific Attributes */ + +- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.TypeSpecific = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); + break; +@@ -394,11 +411,14 @@ RsDoExtendedMemoryDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->ExtAddress64.ResourceLength; ++ Descriptor->ExtAddress64.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- Descriptor->ExtAddress64.Minimum, +- Descriptor->ExtAddress64.Maximum, +- Descriptor->ExtAddress64.AddressLength, +- Descriptor->ExtAddress64.Granularity, ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Minimum), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Maximum), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.AddressLength), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Granularity), + Descriptor->ExtAddress64.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +@@ -434,6 +454,7 @@ RsDoExtendedSpaceDescriptor ( + UINT16 StringLength = 0; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -497,7 +518,8 @@ RsDoExtendedSpaceDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Granularity = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); + GranOp = InitializerOp; +@@ -505,7 +527,8 @@ RsDoExtendedSpaceDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Minimum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); + MinOp = InitializerOp; +@@ -513,7 +536,8 @@ RsDoExtendedSpaceDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.Maximum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); + MaxOp = InitializerOp; +@@ -521,14 +545,16 @@ RsDoExtendedSpaceDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.TranslationOffset = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.AddressLength = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); + LengthOp = InitializerOp; +@@ -536,7 +562,8 @@ RsDoExtendedSpaceDescriptor ( + + case 11: /* Type-Specific Attributes */ + +- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; ++ Descriptor->ExtAddress64.TypeSpecific = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, + CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); + break; +@@ -557,11 +584,14 @@ RsDoExtendedSpaceDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->ExtAddress64.ResourceLength; ++ Descriptor->ExtAddress64.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- Descriptor->ExtAddress64.Minimum, +- Descriptor->ExtAddress64.Maximum, +- Descriptor->ExtAddress64.AddressLength, +- Descriptor->ExtAddress64.Granularity, ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Minimum), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Maximum), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.AddressLength), ++ AcpiUtReadUint64(&Descriptor->ExtAddress64.Granularity), + Descriptor->ExtAddress64.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +Index: acpica-unix2-20200925/source/compiler/aslrestype2q.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2q.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2q.c +@@ -84,6 +84,7 @@ RsDoQwordIoDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -147,7 +148,8 @@ RsDoQwordIoDescriptor ( + + case 5: /* Address Granularity */ + +- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Granularity = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); + GranOp = InitializerOp; +@@ -155,7 +157,8 @@ RsDoQwordIoDescriptor ( + + case 6: /* Address Min */ + +- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Minimum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); + MinOp = InitializerOp; +@@ -163,7 +166,8 @@ RsDoQwordIoDescriptor ( + + case 7: /* Address Max */ + +- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Maximum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); + MaxOp = InitializerOp; +@@ -171,14 +175,16 @@ RsDoQwordIoDescriptor ( + + case 8: /* Translation Offset */ + +- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.TranslationOffset = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); + break; + + case 9: /* Address Length */ + +- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.AddressLength = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); + LengthOp = InitializerOp; +@@ -262,11 +268,14 @@ RsDoQwordIoDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->Address64.ResourceLength; ++ Descriptor->Address64.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- Descriptor->Address64.Minimum, +- Descriptor->Address64.Maximum, +- Descriptor->Address64.AddressLength, +- Descriptor->Address64.Granularity, ++ AcpiUtReadUint64(&Descriptor->Address64.Minimum), ++ AcpiUtReadUint64(&Descriptor->Address64.Maximum), ++ AcpiUtReadUint64(&Descriptor->Address64.AddressLength), ++ AcpiUtReadUint64(&Descriptor->Address64.Granularity), + Descriptor->Address64.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +@@ -305,6 +314,7 @@ RsDoQwordMemoryDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -375,7 +385,8 @@ RsDoQwordMemoryDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Granularity = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); + GranOp = InitializerOp; +@@ -383,7 +394,8 @@ RsDoQwordMemoryDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Minimum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); + MinOp = InitializerOp; +@@ -391,7 +403,8 @@ RsDoQwordMemoryDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Maximum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); + MaxOp = InitializerOp; +@@ -399,14 +412,16 @@ RsDoQwordMemoryDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.TranslationOffset = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.AddressLength = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); + LengthOp = InitializerOp; +@@ -491,11 +506,14 @@ RsDoQwordMemoryDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->Address64.ResourceLength; ++ Descriptor->Address64.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- Descriptor->Address64.Minimum, +- Descriptor->Address64.Maximum, +- Descriptor->Address64.AddressLength, +- Descriptor->Address64.Granularity, ++ AcpiUtReadUint64(&Descriptor->Address64.Minimum), ++ AcpiUtReadUint64(&Descriptor->Address64.Maximum), ++ AcpiUtReadUint64(&Descriptor->Address64.AddressLength), ++ AcpiUtReadUint64(&Descriptor->Address64.Granularity), + Descriptor->Address64.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +@@ -534,6 +552,7 @@ RsDoQwordSpaceDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -601,7 +620,8 @@ RsDoQwordSpaceDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Granularity = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); + GranOp = InitializerOp; +@@ -609,7 +629,8 @@ RsDoQwordSpaceDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Minimum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); + MinOp = InitializerOp; +@@ -617,7 +638,8 @@ RsDoQwordSpaceDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.Maximum = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); + MaxOp = InitializerOp; +@@ -625,14 +647,16 @@ RsDoQwordSpaceDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.TranslationOffset = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; ++ Descriptor->Address64.AddressLength = ++ AcpiUtReadUint64(&InitializerOp->Asl.Value.Integer); + RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); + LengthOp = InitializerOp; +@@ -702,11 +726,14 @@ RsDoQwordSpaceDescriptor ( + + /* Validate the Min/Max/Len/Gran values */ + ++ Tmp16 = Descriptor->Address64.ResourceLength; ++ Descriptor->Address64.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + RsLargeAddressCheck ( +- Descriptor->Address64.Minimum, +- Descriptor->Address64.Maximum, +- Descriptor->Address64.AddressLength, +- Descriptor->Address64.Granularity, ++ AcpiUtReadUint64(&Descriptor->Address64.Minimum), ++ AcpiUtReadUint64(&Descriptor->Address64.Maximum), ++ AcpiUtReadUint64(&Descriptor->Address64.AddressLength), ++ AcpiUtReadUint64(&Descriptor->Address64.Granularity), + Descriptor->Address64.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + +Index: acpica-unix2-20200925/source/compiler/aslrestype2s.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2s.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2s.c +@@ -343,6 +343,7 @@ RsDoGpioIntDescriptor ( + UINT32 CurrentByteOffset; + UINT32 PinCount = 0; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -485,7 +486,8 @@ RsDoGpioIntDescriptor ( + * (implies resource source must immediately follow the pin list.) + * Name: _PIN + */ +- *InterruptList = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ *InterruptList = AcpiUtReadUint16(&Tmp16); + InterruptList++; + PinCount++; + +@@ -518,6 +520,27 @@ RsDoGpioIntDescriptor ( + + MpSaveGpioInfo (Info->MappingOp, Descriptor, + PinCount, PinList, ResourceSource); ++ ++ /* correct endian-ness issues */ ++ Tmp16 = Descriptor->Gpio.ResourceLength; ++ Descriptor->Gpio.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.Flags; ++ Descriptor->Gpio.Flags = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.IntFlags; ++ Descriptor->Gpio.IntFlags = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.DriveStrength; ++ Descriptor->Gpio.DriveStrength = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.DebounceTimeout; ++ Descriptor->Gpio.DebounceTimeout = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.PinTableOffset; ++ Descriptor->Gpio.PinTableOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.ResSourceOffset; ++ Descriptor->Gpio.ResSourceOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.VendorOffset; ++ Descriptor->Gpio.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.VendorLength; ++ Descriptor->Gpio.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } + +@@ -552,6 +575,7 @@ RsDoGpioIoDescriptor ( + UINT32 CurrentByteOffset; + UINT32 PinCount = 0; + UINT32 i; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -691,7 +715,8 @@ RsDoGpioIoDescriptor ( + * (implies resource source must immediately follow the pin list.) + * Name: _PIN + */ +- *InterruptList = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ *InterruptList = AcpiUtReadUint16(&Tmp16); + InterruptList++; + PinCount++; + +@@ -724,6 +749,27 @@ RsDoGpioIoDescriptor ( + + MpSaveGpioInfo (Info->MappingOp, Descriptor, + PinCount, PinList, ResourceSource); ++ ++ /* correct endian-ness issues */ ++ Tmp16 = Descriptor->Gpio.ResourceLength; ++ Descriptor->Gpio.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.Flags; ++ Descriptor->Gpio.Flags = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.IntFlags; ++ Descriptor->Gpio.IntFlags = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.DriveStrength; ++ Descriptor->Gpio.DriveStrength = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.DebounceTimeout; ++ Descriptor->Gpio.DebounceTimeout = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.PinTableOffset; ++ Descriptor->Gpio.PinTableOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.ResSourceOffset; ++ Descriptor->Gpio.ResSourceOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.VendorOffset; ++ Descriptor->Gpio.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->Gpio.VendorLength; ++ Descriptor->Gpio.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } + +@@ -754,6 +800,8 @@ RsDoI2cSerialBusDescriptor ( + UINT16 DescriptorSize; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -781,7 +829,8 @@ RsDoI2cSerialBusDescriptor ( + Descriptor->I2cSerialBus.RevisionId = AML_RESOURCE_I2C_REVISION; + Descriptor->I2cSerialBus.TypeRevisionId = AML_RESOURCE_I2C_TYPE_REVISION; + Descriptor->I2cSerialBus.Type = AML_RESOURCE_I2C_SERIALBUSTYPE; +- Descriptor->I2cSerialBus.TypeDataLength = AML_RESOURCE_I2C_MIN_DATA_LEN + VendorLength; ++ Tmp16 = AML_RESOURCE_I2C_MIN_DATA_LEN + VendorLength; ++ Descriptor->I2cSerialBus.TypeDataLength = AcpiUtReadUint16(&Tmp16); + + if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_I2C_SERIALBUS_V2) + { +@@ -801,7 +850,8 @@ RsDoI2cSerialBusDescriptor ( + { + case 0: /* Slave Address [WORD] (_ADR) */ + +- Descriptor->I2cSerialBus.SlaveAddress = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->I2cSerialBus.SlaveAddress = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, + CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress)); + break; +@@ -815,7 +865,8 @@ RsDoI2cSerialBusDescriptor ( + + case 2: /* Connection Speed [DWORD] (_SPE) */ + +- Descriptor->I2cSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->I2cSerialBus.ConnectionSpeed = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, + CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.ConnectionSpeed)); + break; +@@ -913,6 +964,8 @@ RsDoSpiSerialBusDescriptor ( + UINT16 DescriptorSize; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -935,12 +988,13 @@ RsDoSpiSerialBusDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->SpiSerialBus.ResourceLength = DescriptorSize; ++ Descriptor->SpiSerialBus.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->SpiSerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; + Descriptor->SpiSerialBus.RevisionId = AML_RESOURCE_SPI_REVISION; + Descriptor->SpiSerialBus.TypeRevisionId = AML_RESOURCE_SPI_TYPE_REVISION; + Descriptor->SpiSerialBus.Type = AML_RESOURCE_SPI_SERIALBUSTYPE; +- Descriptor->SpiSerialBus.TypeDataLength = AML_RESOURCE_SPI_MIN_DATA_LEN + VendorLength; ++ Tmp16 = AML_RESOURCE_SPI_MIN_DATA_LEN + VendorLength; ++ Descriptor->SpiSerialBus.TypeDataLength = AcpiUtReadUint16(&Tmp16); + + if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_SPI_SERIALBUS_V2) + { +@@ -961,7 +1015,8 @@ RsDoSpiSerialBusDescriptor ( + { + case 0: /* Device Selection [WORD] (_ADR) */ + +- Descriptor->SpiSerialBus.DeviceSelection = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->SpiSerialBus.DeviceSelection = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, + CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.DeviceSelection)); + break; +@@ -996,7 +1051,8 @@ RsDoSpiSerialBusDescriptor ( + + case 5: /* Connection Speed [DWORD] (_SPE) */ + +- Descriptor->SpiSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->SpiSerialBus.ConnectionSpeed = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, + CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed)); + break; +@@ -1101,6 +1157,8 @@ RsDoUartSerialBusDescriptor ( + UINT16 DescriptorSize; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -1123,12 +1181,13 @@ RsDoUartSerialBusDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->UartSerialBus.ResourceLength = DescriptorSize; ++ Descriptor->UartSerialBus.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->UartSerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; + Descriptor->UartSerialBus.RevisionId = AML_RESOURCE_UART_REVISION; + Descriptor->UartSerialBus.TypeRevisionId = AML_RESOURCE_UART_TYPE_REVISION; + Descriptor->UartSerialBus.Type = AML_RESOURCE_UART_SERIALBUSTYPE; +- Descriptor->UartSerialBus.TypeDataLength = AML_RESOURCE_UART_MIN_DATA_LEN + VendorLength; ++ Tmp16 = AML_RESOURCE_UART_MIN_DATA_LEN + VendorLength; ++ Descriptor->UartSerialBus.TypeDataLength = AcpiUtReadUint16(&Tmp16); + + if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_UART_SERIALBUS_V2) + { +@@ -1148,7 +1207,8 @@ RsDoUartSerialBusDescriptor ( + { + case 0: /* Connection Speed (Baud Rate) [DWORD] (_SPE) */ + +- Descriptor->UartSerialBus.DefaultBaudRate = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->UartSerialBus.DefaultBaudRate = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.DefaultBaudRate)); + break; +@@ -1197,14 +1257,16 @@ RsDoUartSerialBusDescriptor ( + + case 7: /* Rx Buffer Size [WORD] (_RXL) */ + +- Descriptor->UartSerialBus.RxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->UartSerialBus.RxFifoSize = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_RX, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.RxFifoSize)); + break; + + case 8: /* Tx Buffer Size [WORD] (_TXL) */ + +- Descriptor->UartSerialBus.TxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->UartSerialBus.TxFifoSize = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX, + CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize)); + break; +@@ -1308,6 +1370,7 @@ RsDoPinFunctionDescriptor ( + UINT32 CurrentByteOffset; + UINT32 PinCount = 0; + UINT32 i; ++ UINT16 Tmp16; + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; +@@ -1331,7 +1394,7 @@ RsDoPinFunctionDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->PinFunction.ResourceLength = DescriptorSize; ++ Descriptor->PinFunction.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->PinFunction.DescriptorType = ACPI_RESOURCE_NAME_PIN_FUNCTION; + Descriptor->PinFunction.RevisionId = AML_RESOURCE_PIN_FUNCTION_REVISION; + +@@ -1371,7 +1434,8 @@ RsDoPinFunctionDescriptor ( + + case 2: /* Function Number [WORD] (_FUN) */ + +- Descriptor->PinFunction.FunctionNumber = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->PinFunction.FunctionNumber = AcpiUtReadUint16(&Tmp16); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_FUNCTION, + CurrentByteOffset + ASL_RESDESC_OFFSET (PinFunction.FunctionNumber)); + break; +@@ -1419,6 +1483,12 @@ RsDoPinFunctionDescriptor ( + { + Descriptor->PinFunction.VendorLength = VendorLength; + } ++ Tmp16 = (UINT16) ACPI_PTR_DIFF (VendorData, Descriptor); ++ Descriptor->PinFunction.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ ++ Tmp16 = Descriptor->PinFunction.VendorLength; ++ Descriptor->PinFunction.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + break; + + default: +@@ -1430,7 +1500,8 @@ RsDoPinFunctionDescriptor ( + * (implies resource source must immediately follow the pin list.) + * Name: _PIN + */ +- *PinList = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ *PinList = AcpiUtReadUint16(&Tmp16); + PinList++; + PinCount++; + +@@ -1461,6 +1532,13 @@ RsDoPinFunctionDescriptor ( + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + ++ /* correct the endian-ness of the values */ ++ Tmp16 = Descriptor->PinFunction.PinTableOffset; ++ Descriptor->PinFunction.PinTableOffset = AcpiUtReadUint16(&Tmp16); ++ ++ Tmp16 = Descriptor->PinFunction.ResSourceOffset; ++ Descriptor->PinFunction.ResSourceOffset = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } + +@@ -1494,6 +1572,8 @@ RsDoPinConfigDescriptor ( + UINT32 CurrentByteOffset; + UINT32 PinCount = 0; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; +@@ -1517,7 +1597,7 @@ RsDoPinConfigDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->PinConfig.ResourceLength = DescriptorSize; ++ Descriptor->PinConfig.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->PinConfig.DescriptorType = ACPI_RESOURCE_NAME_PIN_CONFIG; + Descriptor->PinConfig.RevisionId = AML_RESOURCE_PIN_CONFIG_REVISION; + +@@ -1571,7 +1651,8 @@ RsDoPinConfigDescriptor ( + + case 2: /* Pin Config Value [DWORD] (_VAL) */ + +- Descriptor->PinConfig.PinConfigValue = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->PinConfig.PinConfigValue = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_PINCONFIG_VALUE, + CurrentByteOffset + ASL_RESDESC_OFFSET (PinConfig.PinConfigValue)); + break; +@@ -1630,7 +1711,8 @@ RsDoPinConfigDescriptor ( + * (implies resource source must immediately follow the pin list.) + * Name: _PIN + */ +- *PinList = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ *PinList = AcpiUtReadUint16(&Tmp16); + PinList++; + PinCount++; + +@@ -1661,6 +1743,16 @@ RsDoPinConfigDescriptor ( + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + ++ /* correct the endianness if needed */ ++ Tmp16 = Descriptor->PinConfig.PinTableOffset; ++ Descriptor->PinConfig.PinTableOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinConfig.ResSourceOffset; ++ Descriptor->PinConfig.ResSourceOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinConfig.VendorOffset; ++ Descriptor->PinConfig.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinConfig.VendorLength; ++ Descriptor->PinConfig.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } + +@@ -1694,6 +1786,7 @@ RsDoPinGroupDescriptor ( + UINT32 CurrentByteOffset; + UINT32 PinCount = 0; + UINT32 i; ++ UINT16 Tmp16; + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; +@@ -1717,7 +1810,7 @@ RsDoPinGroupDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->PinGroup.ResourceLength = DescriptorSize; ++ Descriptor->PinGroup.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->PinGroup.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP; + Descriptor->PinGroup.RevisionId = AML_RESOURCE_PIN_GROUP_REVISION; + +@@ -1784,7 +1877,8 @@ RsDoPinGroupDescriptor ( + * (implies resource source must immediately follow the pin list.) + * Name: _PIN + */ +- *PinList = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ *PinList = AcpiUtReadUint16(&Tmp16); + PinList++; + PinCount++; + +@@ -1815,6 +1909,16 @@ RsDoPinGroupDescriptor ( + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + ++ /* correct enddianness as needed */ ++ Tmp16 = Descriptor->PinGroup.PinTableOffset; ++ Descriptor->PinGroup.PinTableOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroup.LabelOffset; ++ Descriptor->PinGroup.LabelOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroup.VendorOffset; ++ Descriptor->PinGroup.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroup.VendorLength; ++ Descriptor->PinGroup.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } + +@@ -1847,6 +1951,7 @@ RsDoPinGroupFunctionDescriptor ( + UINT16 DescriptorSize; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; +@@ -1870,7 +1975,7 @@ RsDoPinGroupFunctionDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->PinGroupFunction.ResourceLength = DescriptorSize; ++ Descriptor->PinGroupFunction.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->PinGroupFunction.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP_FUNCTION; + Descriptor->PinGroupFunction.RevisionId = AML_RESOURCE_PIN_GROUP_FUNCTION_REVISION; + +@@ -1902,7 +2007,8 @@ RsDoPinGroupFunctionDescriptor ( + + case 1: /* Function Number [WORD] */ + +- Descriptor->PinGroupFunction.FunctionNumber = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->PinGroupFunction.FunctionNumber = AcpiUtReadUint16(&Tmp16); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_FUNCTION, + CurrentByteOffset + ASL_RESDESC_OFFSET (PinGroupFunction.FunctionNumber)); + break; +@@ -1961,6 +2067,16 @@ RsDoPinGroupFunctionDescriptor ( + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + ++ /* correct enddianness as needed */ ++ Tmp16 = Descriptor->PinGroupFunction.ResSourceOffset; ++ Descriptor->PinGroupFunction.ResSourceOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroupFunction.ResSourceLabelOffset; ++ Descriptor->PinGroupFunction.ResSourceLabelOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroupFunction.VendorOffset; ++ Descriptor->PinGroupFunction.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroupFunction.VendorLength; ++ Descriptor->PinGroupFunction.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } + +@@ -1993,6 +2109,8 @@ RsDoPinGroupConfigDescriptor ( + UINT16 DescriptorSize; + UINT32 CurrentByteOffset; + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; + CurrentByteOffset = Info->CurrentByteOffset; +@@ -2016,7 +2134,7 @@ RsDoPinGroupConfigDescriptor ( + sizeof (AML_RESOURCE_LARGE_HEADER)); + + Descriptor = Rnode->Buffer; +- Descriptor->PinGroupConfig.ResourceLength = DescriptorSize; ++ Descriptor->PinGroupConfig.ResourceLength = AcpiUtReadUint16(&DescriptorSize); + Descriptor->PinGroupConfig.DescriptorType = ACPI_RESOURCE_NAME_PIN_GROUP_CONFIG; + Descriptor->PinGroupConfig.RevisionId = AML_RESOURCE_PIN_GROUP_CONFIG_REVISION; + +@@ -2069,7 +2187,8 @@ RsDoPinGroupConfigDescriptor ( + + case 2: /* Pin Config Value [DWORD] (_VAL) */ + +- Descriptor->PinGroupConfig.PinConfigValue = (UINT32) InitializerOp->Asl.Value.Integer; ++ Tmp32 = (UINT32) InitializerOp->Asl.Value.Integer; ++ Descriptor->PinGroupConfig.PinConfigValue = AcpiUtReadUint32(&Tmp32); + RsCreateDwordField (InitializerOp, ACPI_RESTAG_PINCONFIG_VALUE, + CurrentByteOffset + ASL_RESDESC_OFFSET (PinGroupConfig.PinConfigValue)); + break; +@@ -2130,5 +2249,15 @@ RsDoPinGroupConfigDescriptor ( + InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); + } + ++ /* correct enddianness as needed */ ++ Tmp16 = Descriptor->PinGroupConfig.ResSourceOffset; ++ Descriptor->PinGroupConfig.ResSourceOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroupConfig.ResSourceLabelOffset; ++ Descriptor->PinGroupConfig.ResSourceLabelOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroupConfig.VendorOffset; ++ Descriptor->PinGroupConfig.VendorOffset = AcpiUtReadUint16(&Tmp16); ++ Tmp16 = Descriptor->PinGroupConfig.VendorLength; ++ Descriptor->PinGroupConfig.VendorLength = AcpiUtReadUint16(&Tmp16); ++ + return (Rnode); + } +Index: acpica-unix2-20200925/source/compiler/aslrestype2w.c +=================================================================== +--- acpica-unix2-20200925.orig/source/compiler/aslrestype2w.c ++++ acpica-unix2-20200925/source/compiler/aslrestype2w.c +@@ -84,6 +84,7 @@ RsDoWordIoDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -147,7 +148,8 @@ RsDoWordIoDescriptor ( + + case 5: /* Address Granularity */ + +- Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Granularity = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); + GranOp = InitializerOp; +@@ -155,7 +157,8 @@ RsDoWordIoDescriptor ( + + case 6: /* Address Min */ + +- Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Minimum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); + MinOp = InitializerOp; +@@ -163,7 +166,8 @@ RsDoWordIoDescriptor ( + + case 7: /* Address Max */ + +- Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Maximum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); + MaxOp = InitializerOp; +@@ -171,14 +175,16 @@ RsDoWordIoDescriptor ( + + case 8: /* Translation Offset */ + +- Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.TranslationOffset = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); + break; + + case 9: /* Address Length */ + +- Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.AddressLength = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); + LengthOp = InitializerOp; +@@ -263,13 +269,17 @@ RsDoWordIoDescriptor ( + /* Validate the Min/Max/Len/Gran values */ + + RsLargeAddressCheck ( +- (UINT64) Descriptor->Address16.Minimum, +- (UINT64) Descriptor->Address16.Maximum, +- (UINT64) Descriptor->Address16.AddressLength, +- (UINT64) Descriptor->Address16.Granularity, ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Minimum), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Maximum), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.AddressLength), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Granularity), + Descriptor->Address16.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + ++ /* correct enddianness */ ++ Tmp16 = Descriptor->Address16.ResourceLength; ++ Descriptor->Address16.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + + OptionIndex + StringLength; + return (Rnode); +@@ -305,6 +315,7 @@ RsDoWordBusNumberDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -361,8 +372,8 @@ RsDoWordBusNumberDescriptor ( + + case 4: /* Address Granularity */ + +- Descriptor->Address16.Granularity = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Granularity = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); + GranOp = InitializerOp; +@@ -370,8 +381,8 @@ RsDoWordBusNumberDescriptor ( + + case 5: /* Min Address */ + +- Descriptor->Address16.Minimum = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Minimum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); + MinOp = InitializerOp; +@@ -379,8 +390,8 @@ RsDoWordBusNumberDescriptor ( + + case 6: /* Max Address */ + +- Descriptor->Address16.Maximum = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Maximum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); + MaxOp = InitializerOp; +@@ -388,16 +399,16 @@ RsDoWordBusNumberDescriptor ( + + case 7: /* Translation Offset */ + +- Descriptor->Address16.TranslationOffset = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.TranslationOffset = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); + break; + + case 8: /* Address Length */ + +- Descriptor->Address16.AddressLength = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.AddressLength = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); + LengthOp = InitializerOp; +@@ -468,13 +479,17 @@ RsDoWordBusNumberDescriptor ( + /* Validate the Min/Max/Len/Gran values */ + + RsLargeAddressCheck ( +- (UINT64) Descriptor->Address16.Minimum, +- (UINT64) Descriptor->Address16.Maximum, +- (UINT64) Descriptor->Address16.AddressLength, +- (UINT64) Descriptor->Address16.Granularity, ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Minimum), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Maximum), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.AddressLength), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Granularity), + Descriptor->Address16.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + ++ /* correct enddianness */ ++ Tmp16 = Descriptor->Address16.ResourceLength; ++ Descriptor->Address16.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + + OptionIndex + StringLength; + return (Rnode); +@@ -510,6 +525,7 @@ RsDoWordSpaceDescriptor ( + UINT32 CurrentByteOffset; + UINT32 i; + BOOLEAN ResSourceIndex = FALSE; ++ UINT16 Tmp16; + + + InitializerOp = Info->DescriptorTypeOp->Asl.Child; +@@ -577,8 +593,8 @@ RsDoWordSpaceDescriptor ( + + case 6: /* Address Granularity */ + +- Descriptor->Address16.Granularity = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Granularity = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); + GranOp = InitializerOp; +@@ -586,8 +602,8 @@ RsDoWordSpaceDescriptor ( + + case 7: /* Min Address */ + +- Descriptor->Address16.Minimum = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Minimum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); + MinOp = InitializerOp; +@@ -595,8 +611,8 @@ RsDoWordSpaceDescriptor ( + + case 8: /* Max Address */ + +- Descriptor->Address16.Maximum = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.Maximum = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); + MaxOp = InitializerOp; +@@ -604,16 +620,16 @@ RsDoWordSpaceDescriptor ( + + case 9: /* Translation Offset */ + +- Descriptor->Address16.TranslationOffset = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.TranslationOffset = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); + break; + + case 10: /* Address Length */ + +- Descriptor->Address16.AddressLength = +- (UINT16) InitializerOp->Asl.Value.Integer; ++ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; ++ Descriptor->Address16.AddressLength = AcpiUtReadUint16(&Tmp16); + RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, + CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); + LengthOp = InitializerOp; +@@ -684,13 +700,17 @@ RsDoWordSpaceDescriptor ( + /* Validate the Min/Max/Len/Gran values */ + + RsLargeAddressCheck ( +- (UINT64) Descriptor->Address16.Minimum, +- (UINT64) Descriptor->Address16.Maximum, +- (UINT64) Descriptor->Address16.AddressLength, +- (UINT64) Descriptor->Address16.Granularity, ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Minimum), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Maximum), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.AddressLength), ++ (UINT64) AcpiUtReadUint16(&Descriptor->Address16.Granularity), + Descriptor->Address16.Flags, + MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); + ++ /* correct enddianness */ ++ Tmp16 = Descriptor->Address16.ResourceLength; ++ Descriptor->Address16.ResourceLength = AcpiUtReadUint16(&Tmp16); ++ + Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + + OptionIndex + StringLength; + return (Rnode); +Index: acpica-unix2-20200925/source/components/disassembler/dmbuffer.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmbuffer.c ++++ acpica-unix2-20200925/source/components/disassembler/dmbuffer.c +@@ -204,7 +204,7 @@ AcpiDmByteList ( + + + ByteData = Op->Named.Data; +- ByteCount = (UINT32) Op->Common.Value.Integer; ++ ByteCount = (UINT32) Op->Common.Value.Size; + + /* + * The byte list belongs to a buffer, and can be produced by either +Index: acpica-unix2-20200925/source/components/disassembler/dmopcode.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmopcode.c ++++ acpica-unix2-20200925/source/components/disassembler/dmopcode.c +@@ -882,23 +882,23 @@ AcpiDmDisassembleOneOp ( + + case AML_INT_NAMEDFIELD_OP: + +- Length = AcpiDmDumpName (Op->Named.Name); ++ Length = AcpiDmDumpName (AcpiUtReadUint32(&Op->Named.Name)); + + AcpiOsPrintf (","); + ASL_CV_PRINT_ONE_COMMENT (Op, AML_NAMECOMMENT, NULL, 0); + AcpiOsPrintf ("%*.s %u", (unsigned) (5 - Length), " ", +- (UINT32) Op->Common.Value.Integer); ++ (UINT32) Op->Common.Value.Size); + + AcpiDmCommaIfFieldMember (Op); + +- Info->BitOffset += (UINT32) Op->Common.Value.Integer; ++ Info->BitOffset += (UINT32) Op->Common.Value.Size; + break; + + case AML_INT_RESERVEDFIELD_OP: + + /* Offset() -- Must account for previous offsets */ + +- Offset = (UINT32) Op->Common.Value.Integer; ++ Offset = (UINT32) Op->Common.Value.Size; + Info->BitOffset += Offset; + + if (Info->BitOffset % 8 == 0) +Index: acpica-unix2-20200925/source/components/disassembler/dmresrc.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrc.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrc.c +@@ -417,7 +417,7 @@ AcpiDmIsResourceTemplate ( + return (AE_TYPE); + } + +- DeclaredBufferLength = NextOp->Common.Value.Size; ++ DeclaredBufferLength = NextOp->Common.Value.Integer; + + /* Get the length of the raw initialization byte list */ + +Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcl.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrcl.c +@@ -141,6 +141,8 @@ AcpiDmMemoryFields ( + UINT32 Level) + { + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; + + + for (i = 0; i < 4; i++) +@@ -151,14 +153,16 @@ AcpiDmMemoryFields ( + { + case 16: + +- AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], +- AcpiDmMemoryNames[i]); ++ Tmp16 = ACPI_CAST_PTR (UINT16, Source)[i]; ++ AcpiDmDumpInteger16 (AcpiUtReadUint16(&Tmp16), ++ AcpiDmMemoryNames[i]); + break; + + case 32: + +- AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], +- AcpiDmMemoryNames[i]); ++ Tmp32 = ACPI_CAST_PTR (UINT32, Source)[i]; ++ AcpiDmDumpInteger32 (AcpiUtReadUint32(&Tmp32), ++ AcpiDmMemoryNames[i]); + break; + + default: +@@ -190,6 +194,9 @@ AcpiDmAddressFields ( + UINT32 Level) + { + UINT32 i; ++ UINT16 Tmp16; ++ UINT32 Tmp32; ++ UINT64 Tmp64; + + + AcpiOsPrintf ("\n"); +@@ -202,20 +209,23 @@ AcpiDmAddressFields ( + { + case 16: + +- AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], +- AcpiDmAddressNames[i]); ++ Tmp16 = ACPI_CAST_PTR (UINT16, Source)[i]; ++ AcpiDmDumpInteger16 (AcpiUtReadUint16(&Tmp16), ++ AcpiDmAddressNames[i]); + break; + + case 32: + +- AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], +- AcpiDmAddressNames[i]); ++ Tmp32 = ACPI_CAST_PTR (UINT32, Source)[i]; ++ AcpiDmDumpInteger32 (AcpiUtReadUint32(&Tmp32), ++ AcpiDmAddressNames[i]); + break; + + case 64: + +- AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], +- AcpiDmAddressNames[i]); ++ Tmp64 = ACPI_CAST_PTR (UINT64, Source)[i]; ++ AcpiDmDumpInteger64 (AcpiUtReadUint64(&Tmp64), ++ AcpiDmAddressNames[i]); + break; + + default: +@@ -749,7 +759,7 @@ AcpiDmExtendedDescriptor ( + /* Extra field for this descriptor only */ + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, ++ AcpiDmDumpInteger64 (AcpiUtReadUint64(&Resource->ExtAddress64.TypeSpecific), + "Type-Specific Attributes"); + + /* Insert a descriptor name */ +@@ -876,11 +886,11 @@ AcpiDmFixedMemory32Descriptor ( + AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, ++ AcpiDmDumpInteger32 (AcpiUtReadUint32(&Resource->FixedMemory32.Address), + "Address Base"); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, ++ AcpiDmDumpInteger32 (AcpiUtReadUint32(&Resource->FixedMemory32.AddressLength), + "Address Length"); + + /* Insert a descriptor name */ +@@ -926,7 +936,8 @@ AcpiDmGenericRegisterDescriptor ( + AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); ++ AcpiDmDumpInteger64 (AcpiUtReadUint64(&Resource->GenericReg.Address), ++ "Address"); + + /* Optional field for ACPI 3.0 */ + +@@ -989,7 +1000,7 @@ AcpiDmInterruptDescriptor ( + AcpiDmResourceSource (Resource, + sizeof (AML_RESOURCE_EXTENDED_IRQ) + + ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), +- Resource->ExtendedIrq.ResourceLength); ++ AcpiUtReadUint16(&Resource->ExtendedIrq.ResourceLength)); + + /* Insert a descriptor name */ + +@@ -1004,7 +1015,7 @@ AcpiDmInterruptDescriptor ( + { + AcpiDmIndent (Level + 1); + AcpiOsPrintf ("0x%8.8X,\n", +- (UINT32) Resource->ExtendedIrq.Interrupts[i]); ++ AcpiUtReadUint32(&Resource->ExtendedIrq.Interrupts[i])); + } + + AcpiDmIndent (Level); +Index: acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcl2.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrcl2.c +@@ -191,15 +191,19 @@ AcpiDmGpioCommon ( + char *DeviceName = NULL; + UINT32 PinCount; + UINT32 i; ++ UINT16 ResSourceOffset; ++ UINT16 VendorOffset; ++ UINT16 VendorLength; + + + /* ResourceSource, ResourceSourceIndex, ResourceType */ + + AcpiDmIndent (Level + 1); +- if (Resource->Gpio.ResSourceOffset) ++ ResSourceOffset = AcpiUtReadUint16(&Resource->Gpio.ResSourceOffset); ++ if (ResSourceOffset) + { + DeviceName = ACPI_ADD_PTR (char, +- Resource, Resource->Gpio.ResSourceOffset), ++ Resource, ResSourceOffset), + AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); + } + +@@ -215,15 +219,15 @@ AcpiDmGpioCommon ( + + /* Dump the vendor data */ + +- if (Resource->Gpio.VendorOffset) ++ VendorOffset = AcpiUtReadUint16(&Resource->Gpio.VendorOffset); ++ VendorLength = AcpiUtReadUint16(&Resource->Gpio.VendorLength); ++ if (VendorOffset) + { + AcpiOsPrintf ("\n"); + AcpiDmIndent (Level + 1); +- VendorData = ACPI_ADD_PTR (UINT8, Resource, +- Resource->Gpio.VendorOffset); ++ VendorData = ACPI_ADD_PTR (UINT8, Resource, VendorOffset); + +- AcpiDmDumpRawDataBuffer (VendorData, +- Resource->Gpio.VendorLength, Level); ++ AcpiDmDumpRawDataBuffer (VendorData, VendorLength, Level); + } + + AcpiOsPrintf (")\n"); +@@ -233,17 +237,21 @@ AcpiDmGpioCommon ( + AcpiDmIndent (Level + 1); + AcpiOsPrintf ("{ // Pin list\n"); + ++ PinCount = (UINT32) AcpiUtReadUint16(&Resource->Gpio.ResSourceOffset); ++ PinCount -= (UINT32) AcpiUtReadUint16(&Resource->Gpio.PinTableOffset); ++ PinCount /= sizeof (UINT16); ++ + PinCount = ((UINT32) (Resource->Gpio.ResSourceOffset - + Resource->Gpio.PinTableOffset)) / + sizeof (UINT16); + + PinList = (UINT16 *) ACPI_ADD_PTR (char, Resource, +- Resource->Gpio.PinTableOffset); ++ AcpiUtReadUint16(&Resource->Gpio.PinTableOffset)); + + for (i = 0; i < PinCount; i++) + { + AcpiDmIndent (Level + 2); +- AcpiOsPrintf ("0x%4.4X%s\n", PinList[i], ++ AcpiOsPrintf ("0x%4.4X%s\n", AcpiUtReadUint16(&(PinList[i])), + ((i + 1) < PinCount) ? "," : ""); + } + +@@ -299,7 +307,8 @@ AcpiDmGpioIntDescriptor ( + { + AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.PinConfig); + } +- AcpiOsPrintf ("0x%4.4X,\n", Resource->Gpio.DebounceTimeout); ++ AcpiOsPrintf ("0x%4.4X,\n", ++ AcpiUtReadUint16(&Resource->Gpio.DebounceTimeout)); + + /* Dump the GpioInt/GpioIo common portion of the descriptor */ + +@@ -350,8 +359,8 @@ AcpiDmGpioIoDescriptor ( + + /* DebounceTimeout, DriveStrength, IoRestriction */ + +- AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DebounceTimeout); +- AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DriveStrength); ++ AcpiOsPrintf ("0x%4.4X, ", AcpiUtReadUint16(&Resource->Gpio.DebounceTimeout)); ++ AcpiOsPrintf ("0x%4.4X, ", AcpiUtReadUint16(&Resource->Gpio.DriveStrength)); + AcpiOsPrintf ("%s,\n", + AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Resource->Gpio.IntFlags)]); + +@@ -434,6 +443,9 @@ AcpiDmPinFunctionDescriptor ( + char *DeviceName = NULL; + UINT32 PinCount; + UINT32 i; ++ UINT16 ResSourceOffset; ++ UINT16 VendorOffset; ++ UINT16 VendorLength; + + AcpiDmIndent (Level); + AcpiOsPrintf ("PinFunction (%s, ", +@@ -451,12 +463,14 @@ AcpiDmPinFunctionDescriptor ( + + /* FunctionNumber */ + +- AcpiOsPrintf ("0x%4.4X, ", Resource->PinFunction.FunctionNumber); ++ AcpiOsPrintf ("0x%4.4X, ", ++ AcpiUtReadUint16(&Resource->PinFunction.FunctionNumber)); + +- if (Resource->PinFunction.ResSourceOffset) ++ ResSourceOffset = AcpiUtReadUint16(&Resource->PinFunction.ResSourceOffset); ++ if (ResSourceOffset) + { + DeviceName = ACPI_ADD_PTR (char, +- Resource, Resource->PinFunction.ResSourceOffset), ++ Resource, ResSourceOffset), + AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); + } + +@@ -476,15 +490,15 @@ AcpiDmPinFunctionDescriptor ( + + /* Dump the vendor data */ + +- if (Resource->PinFunction.VendorLength) ++ VendorOffset = AcpiUtReadUint16(&Resource->PinFunction.VendorOffset); ++ VendorLength = AcpiUtReadUint16(&Resource->PinFunction.VendorLength); ++ if (VendorLength) + { + AcpiOsPrintf ("\n"); + AcpiDmIndent (Level + 1); +- VendorData = ACPI_ADD_PTR (UINT8, Resource, +- Resource->PinFunction.VendorOffset); ++ VendorData = ACPI_ADD_PTR (UINT8, Resource, VendorOffset); + +- AcpiDmDumpRawDataBuffer (VendorData, +- Resource->PinFunction.VendorLength, Level); ++ AcpiDmDumpRawDataBuffer (VendorData, VendorLength, Level); + } + + AcpiOsPrintf (")\n"); +@@ -495,17 +509,17 @@ AcpiDmPinFunctionDescriptor ( + + AcpiOsPrintf ("{ // Pin list\n"); + +- PinCount = ((UINT32) (Resource->PinFunction.ResSourceOffset - +- Resource->PinFunction.PinTableOffset)) / +- sizeof (UINT16); ++ PinCount = AcpiUtReadUint16(&Resource->PinFunction.ResSourceOffset); ++ PinCount -= AcpiUtReadUint16(&Resource->PinFunction.PinTableOffset); ++ PinCount /= sizeof (UINT16); + + PinList = (UINT16 *) ACPI_ADD_PTR (char, Resource, +- Resource->PinFunction.PinTableOffset); ++ AcpiUtReadUint16(&Resource->PinFunction.PinTableOffset)); + + for (i = 0; i < PinCount; i++) + { + AcpiDmIndent (Level + 2); +- AcpiOsPrintf ("0x%4.4X%s\n", PinList[i], ++ AcpiOsPrintf ("0x%4.4X%s\n", AcpiUtReadUint16(&(PinList[i])), + ((i + 1) < PinCount) ? "," : ""); + } + +Index: acpica-unix2-20200925/source/components/disassembler/dmresrcs.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/disassembler/dmresrcs.c ++++ acpica-unix2-20200925/source/components/disassembler/dmresrcs.c +@@ -93,7 +93,7 @@ AcpiDmIrqDescriptor ( + AcpiOsPrintf (")\n"); + + AcpiDmIndent (Level + 1); +- AcpiDmBitList (Resource->Irq.IrqMask); ++ AcpiDmBitList (AcpiUtReadUint16(&Resource->Irq.IrqMask)); + } + + +@@ -161,8 +161,8 @@ AcpiDmFixedDmaDescriptor ( + + AcpiDmIndent (Level); + AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", +- Resource->FixedDma.RequestLines, +- Resource->FixedDma.Channels); ++ AcpiUtReadUint16(&Resource->FixedDma.RequestLines), ++ AcpiUtReadUint16(&Resource->FixedDma.Channels)); + + if (Resource->FixedDma.Width <= 5) + { +@@ -210,10 +210,12 @@ AcpiDmIoDescriptor ( + AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); ++ AcpiDmDumpInteger16 (AcpiUtReadUint16(&Resource->Io.Minimum), ++ "Range Minimum"); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); ++ AcpiDmDumpInteger16 (AcpiUtReadUint16(&Resource->Io.Maximum), ++ "Range Maximum"); + + AcpiDmIndent (Level + 1); + AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); +@@ -256,10 +258,12 @@ AcpiDmFixedIoDescriptor ( + AcpiOsPrintf ("FixedIO (\n"); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); ++ AcpiDmDumpInteger16 (AcpiUtReadUint16(&Resource->FixedIo.Address), ++ "Address"); + + AcpiDmIndent (Level + 1); +- AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); ++ AcpiDmDumpInteger8 (AcpiUtReadUint16(&Resource->FixedIo.AddressLength), ++ "Length"); + + /* Insert a descriptor name */ + +Index: acpica-unix2-20200925/source/components/dispatcher/dsfield.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/dispatcher/dsfield.c ++++ acpica-unix2-20200925/source/components/dispatcher/dsfield.c +@@ -336,6 +336,8 @@ AcpiDsGetFieldNames ( + char *NamePath; + #endif + ++ char TmpName[ACPI_NAMESEG_SIZE+1]; ++ + + ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info); + +@@ -442,14 +444,17 @@ AcpiDsGetFieldNames ( + + /* Lookup the name, it should already exist */ + ++ memset(TmpName, 0, ACPI_NAMESEG_SIZE+1); ++ AcpiUtWriteUint(TmpName, ACPI_NAMESEG_SIZE, ++ &Arg->Named.Name, ACPI_NAMESEG_SIZE); + Status = AcpiNsLookup (WalkState->ScopeInfo, +- (char *) &Arg->Named.Name, Info->FieldType, ++ TmpName, Info->FieldType, + ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, + WalkState, &Info->FieldNode); + if (ACPI_FAILURE (Status)) + { + ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo, +- (char *) &Arg->Named.Name, Status); ++ TmpName, Status); + return_ACPI_STATUS (Status); + } + else +@@ -703,8 +708,13 @@ AcpiDsInitFieldObjects ( + */ + if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) + { ++ char Tmp[ACPI_NAMESEG_SIZE+1]; ++ ++ memset(&Tmp, 0, ACPI_NAMESEG_SIZE+1); ++ AcpiUtWriteUint(&Tmp, ACPI_NAMESEG_SIZE, ++ &Arg->Named.Name, ACPI_NAMESEG_SIZE); + Status = AcpiNsLookup (WalkState->ScopeInfo, +- (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, ++ Tmp, Type, ACPI_IMODE_LOAD_PASS1, + Flags, WalkState, &Node); + if (ACPI_FAILURE (Status)) + { +Index: acpica-unix2-20200925/source/components/namespace/nsaccess.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsaccess.c ++++ acpica-unix2-20200925/source/components/namespace/nsaccess.c +@@ -645,7 +645,7 @@ AcpiNsLookup ( + + /* Extract one ACPI name from the front of the pathname */ + +- ACPI_MOVE_32_TO_32 (&SimpleName, Path); ++ ACPI_COPY_NAMESEG (&SimpleName, Path); + + /* Try to find the single (4 character) ACPI name */ + +Index: acpica-unix2-20200925/source/components/namespace/nsnames.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsnames.c ++++ acpica-unix2-20200925/source/components/namespace/nsnames.c +@@ -300,7 +300,7 @@ AcpiNsBuildNormalizedPath ( + ACPI_PATH_PUT8(FullPath, PathSize, AML_DUAL_NAME_PREFIX, Length); + } + +- ACPI_MOVE_32_TO_32 (Name, &NextNode->Name); ++ ACPI_COPY_NAMESEG (Name, &NextNode->Name); + DoNoTrailing = NoTrailing; + for (i = 0; i < 4; i++) + { +Index: acpica-unix2-20200925/source/components/namespace/nsparse.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsparse.c ++++ acpica-unix2-20200925/source/components/namespace/nsparse.c +@@ -203,6 +203,7 @@ AcpiNsOneCompleteParse ( + ACPI_WALK_STATE *WalkState; + ACPI_TABLE_HEADER *Table; + ACPI_OWNER_ID OwnerId; ++ UINT32 TableLength; + + + ACPI_FUNCTION_TRACE (NsOneCompleteParse); +@@ -216,13 +217,14 @@ AcpiNsOneCompleteParse ( + + /* Table must consist of at least a complete header */ + +- if (Table->Length < sizeof (ACPI_TABLE_HEADER)) ++ TableLength = AcpiUtReadUint32(&Table->Length); ++ if (TableLength < sizeof (ACPI_TABLE_HEADER)) + { + return_ACPI_STATUS (AE_BAD_HEADER); + } + + AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER); +- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); ++ AmlLength = TableLength - sizeof (ACPI_TABLE_HEADER); + + Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); + if (ACPI_FAILURE (Status)) +Index: acpica-unix2-20200925/source/components/namespace/nsutils.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/namespace/nsutils.c ++++ acpica-unix2-20200925/source/components/namespace/nsutils.c +@@ -272,7 +272,6 @@ AcpiNsBuildInternalName ( + const char *ExternalName = Info->NextExternalChar; + char *Result = NULL; + UINT32 i; +- char TmpSeg[ACPI_NAMESEG_SIZE+1]; + + + ACPI_FUNCTION_TRACE (NsBuildInternalName); +@@ -336,7 +335,6 @@ AcpiNsBuildInternalName ( + + for (; NumSegments; NumSegments--) + { +- memset(TmpSeg, 0, ACPI_NAMESEG_SIZE+1); + for (i = 0; i < ACPI_NAMESEG_SIZE; i++) + { + if (ACPI_IS_PATH_SEPARATOR (*ExternalName) || +@@ -344,17 +342,16 @@ AcpiNsBuildInternalName ( + { + /* Pad the segment with underscore(s) if segment is short */ + +- TmpSeg[i] = '_'; ++ Result[i] = '_'; + } + else + { + /* Convert the character to uppercase and save it */ + +- TmpSeg[i] = (char) toupper ((int) *ExternalName); ++ Result[i] = (char) toupper ((int) *ExternalName); + ExternalName++; + } + } +- AcpiUtWriteUint(Result, ACPI_NAMESEG_SIZE, TmpSeg, ACPI_NAMESEG_SIZE); + + /* Now we must have a path separator, or the pathname is bad */ + diff --git a/OPT_LDFLAGS.patch b/OPT_LDFLAGS.patch index 610d66d..de12ce1 100644 --- a/OPT_LDFLAGS.patch +++ b/OPT_LDFLAGS.patch @@ -1,7 +1,7 @@ -Index: acpica-unix2-20200528/generate/unix/Makefile.config +Index: acpica-unix2-20200925/generate/unix/Makefile.config =================================================================== ---- acpica-unix2-20200528.orig/generate/unix/Makefile.config -+++ acpica-unix2-20200528/generate/unix/Makefile.config +--- acpica-unix2-20200925.orig/generate/unix/Makefile.config ++++ acpica-unix2-20200925/generate/unix/Makefile.config @@ -23,6 +23,9 @@ # OPT_CFLAGS can be overridden on the make command line by # adding OPT_CFLAGS="..." to the invocation. diff --git a/acpica-tools.spec b/acpica-tools.spec index ad94d67..7123e29 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -50,7 +50,7 @@ Patch22: 0023-Support-NFIT-in-a-big-endian-world.patch Patch23: 0024-Support-SDEV-in-a-big-endian-world.patch Patch24: 0025-Support-HMAT-in-a-big-endian-world.patch Patch25: 0026-Support-PDTT-in-a-big-endian-world.patch -Patch25: 0027-Support-PPTT-in-a-big-endian-world.patch +Patch26: 0027-Support-PPTT-in-a-big-endian-world.patch Patch27: 0028-Support-PCCT-in-a-big-endian-world.patch Patch28: 0029-Support-WDAT-in-a-big-endian-world.patch Patch29: 0030-Support-TCPA-in-a-big-endian-world.patch @@ -65,25 +65,26 @@ Patch37: 0038-Support-TPM2-in-a-big-endian-world.patch Patch38: 0039-Add-partial-big-endian-support-for-WPBT-tables.patch Patch39: 0040-Support-DSDT-SSDT-in-a-big-endian-world.patch
-# other miscellaneous patch -Patch40: unaligned.patch -Patch41: OPT_LDFLAGS.patch -Patch42: int-format.patch -Patch43: f23-harden.patch -Patch44: template.patch -Patch45: ppc64le.patch -Patch46: arm7hl.patch -Patch47: simple-64bit.patch -Patch48: mips-be-fix.patch -Patch49: cve-2017-13693.patch -Patch50: cve-2017-13694.patch -Patch51: cve-2017-13695.patch -Patch52: str-trunc-warn.patch -Patch53: ptr-cast.patch -Patch54: aslcodegen.patch -Patch55: facp.patch -Patch56: armv7-str-fixes.patch -Patch57: dbtest.patch +# other miscellaneous patches +Patch100: unaligned.patch +Patch101: OPT_LDFLAGS.patch +Patch102: int-format.patch +Patch103: f23-harden.patch +Patch104: template.patch +Patch105: arm7hl.patch +Patch106: simple-64bit.patch +Patch107: mips-be-fix.patch +Patch108: cve-2017-13693.patch +Patch109: cve-2017-13694.patch +Patch110: cve-2017-13695.patch +Patch111: str-trunc-warn.patch +Patch112: ptr-cast.patch +Patch113: facp.patch +Patch114: armv7-str-fixes.patch +Patch115: dbtest.patch +%ifarch i686 armv7hl +Patch116: ull-32bit.patch +%endif
BuildRequires: bison patchutils flex gcc
@@ -132,65 +133,68 @@ This version of the tools is being released under GPLv2 license. %setup -q -n acpica-unix2-%{version} gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f -
-# apply all the patches -%patch0 -%patch1 -%patch2 -%patch3 -%patch4 -%patch5 -%patch6 -%patch7 -%patch8 -%patch9 -%patch10 -%patch11 -%patch12 -%patch13 -%patch14 -%patch15 -%patch16 -%patch17 -%patch18 -%patch19 -%patch20 -%patch21 -%patch22 -%patch23 -%patch24 -%patch25 -%patch26 -%patch27 -%patch28 -%patch29 -%patch30 -%patch31 -%patch32 -%patch33 -%patch34 -%patch35 -%patch36 -%patch37 -%patch38 -%patch39 -%patch40 -%patch41 -%patch42 -%patch43 -%patch44 -%patch45 -%patch46 -%patch47 -%patch48 -%patch49 -%patch50 -%patch51 -%patch52 -%patch53 -%patch54 -%patch55 -%patch56 -%patch57 +# apply the big-endian patches +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 +%patch38 -p1 +%patch39 -p1 + +# apply the remaining patches +%patch100 -p1 +%patch101 -p1 +%patch102 -p1 +%patch103 -p1 +%patch104 -p1 +%patch105 -p1 +%patch106 -p1 +%patch107 -p1 +%patch108 -p1 +%patch109 -p1 +%patch110 -p1 +%patch111 -p1 +%patch112 -p1 +%patch113 -p1 +%patch114 -p1 +%patch115 -p1 +%ifarch i686 armv7hl +%patch116 -p1 +%endif
cp -p %{SOURCE2} README.Fedora cp -p %{SOURCE3} iasl.1 @@ -306,11 +310,13 @@ fi
%changelog -* Thu Oct 15 2020 Al Stone ahs3@redhat.com - 20200925-1 +* Mon Oct 19 2020 Al Stone ahs3@redhat.com - 20200925-1 - Update to 20200925 source tree -- Completely revamp the old big-endian patches (maintainability was the goal) -- The acpinames command has been deprecated upstrean; acpiexec provides - replacement functionality +- Completely revamp the old big-endian patches (maintainability was the goal). + This results in a much larger patch set, but each patch is more clearly used + for a specific purpose. +- The acpinames command has been deprecated upstream; acpiexec provides + replacement functionality.
* Fri Jul 31 2020 Fedora Release Engineering releng@fedoraproject.org - 20200430-3 - Second attempt - Rebuilt for diff --git a/arm7hl.patch b/arm7hl.patch index 75abf45..bcac21f 100644 --- a/arm7hl.patch +++ b/arm7hl.patch @@ -1,8 +1,8 @@ -Index: acpica-unix-20191018/source/include/acmacros.h +Index: acpica-unix2-20200925/source/include/acmacros.h =================================================================== ---- acpica-unix-20191018.orig/source/include/acmacros.h -+++ acpica-unix-20191018/source/include/acmacros.h -@@ -178,6 +178,8 @@ +--- acpica-unix2-20200925.orig/source/include/acmacros.h ++++ acpica-unix2-20200925/source/include/acmacros.h +@@ -163,6 +163,8 @@
/* 16-bit source, 16/32/64 destination */
@@ -11,7 +11,7 @@ Index: acpica-unix-20191018/source/include/acmacros.h #define ACPI_MOVE_16_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];}
-@@ -199,6 +201,7 @@ +@@ -182,6 +184,7 @@
/* 64-bit source, 16/32/64 destination */
diff --git a/armv7-str-fixes.patch b/armv7-str-fixes.patch index 4de8226..fdc2434 100644 --- a/armv7-str-fixes.patch +++ b/armv7-str-fixes.patch @@ -1,7 +1,8 @@ -diff -Naur acpica-unix2-20200214.orig/source/include/actypes.h acpica-unix2-20200214/source/include/actypes.h ---- acpica-unix2-20200214.orig/source/include/actypes.h 2020-02-25 15:41:26.479349637 -0700 -+++ acpica-unix2-20200214/source/include/actypes.h 2020-02-25 15:44:49.519082258 -0700 -@@ -561,7 +561,7 @@ +Index: acpica-unix2-20200925/source/include/actypes.h +=================================================================== +--- acpica-unix2-20200925.orig/source/include/actypes.h ++++ acpica-unix2-20200925/source/include/actypes.h +@@ -561,7 +561,7 @@ typedef UINT64 #define ACPI_COPY_NAMESEG(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) #else #define ACPI_COMPARE_NAMESEG(a,b) (!strncmp (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAMESEG_SIZE)) diff --git a/aslcodegen.patch b/aslcodegen.patch deleted file mode 100644 index 2e2854e..0000000 --- a/aslcodegen.patch +++ /dev/null @@ -1,29 +0,0 @@ -Changes in the handling of comments caused some length fields to be used -in new ways. The new way broke the existing adaptation for big endian -support; this patch repairs that adaptation. - -Signed-off-by: Al Stone ahs3@redhat.com - -Index: acpica-unix-20191018/source/compiler/aslcodegen.c -=================================================================== ---- acpica-unix-20191018.orig/source/compiler/aslcodegen.c -+++ acpica-unix-20191018/source/compiler/aslcodegen.c -@@ -497,8 +497,7 @@ CgWriteTableHeader ( - - /* Table length. Checksum zero for now, will rewrite later */ - -- DWord = sizeof (ACPI_TABLE_HEADER) + Op->Asl.AmlSubtreeLength; -- ACPI_MOVE_32_TO_32(&AslGbl_TableHeader.Length, &DWord); -+ AslGbl_TableHeader.Length = sizeof (ACPI_TABLE_HEADER) + Op->Asl.AmlSubtreeLength; - - /* Calculate the comment lengths for this definition block parseOp */ - -@@ -544,6 +543,8 @@ CgWriteTableHeader ( - CvDbgPrint (" Length: %u\n", CommentLength); - } - } -+ DWord = AslGbl_TableHeader.Length; -+ ACPI_MOVE_32_TO_32(&AslGbl_TableHeader.Length, &DWord); - - AslGbl_TableHeader.Checksum = 0; - Op->Asl.FinalAmlOffset = ftell (AslGbl_Files[ASL_FILE_AML_OUTPUT].Handle); diff --git a/big-endian-dmtbdump.patch b/big-endian-dmtbdump.patch deleted file mode 100644 index fed81c1..0000000 --- a/big-endian-dmtbdump.patch +++ /dev/null @@ -1,162 +0,0 @@ -Index: acpica-unix-20191018/source/common/dmtbdump.c -=================================================================== ---- acpica-unix-20191018.orig/source/common/dmtbdump.c -+++ acpica-unix-20191018/source/common/dmtbdump.c -@@ -277,6 +277,8 @@ AcpiDmDumpRsdt ( - UINT32 Entries; - UINT32 Offset; - UINT32 i; -+ UINT32 Length; -+ UINT32 Address; - - - /* Point to start of table pointer array */ -@@ -286,12 +288,14 @@ AcpiDmDumpRsdt ( - - /* RSDT uses 32-bit pointers */ - -- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Entries = (Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); - - for (i = 0; i < Entries; i++) - { - AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i); -- AcpiOsPrintf ("%8.8X\n", Array[i]); -+ ACPI_MOVE_32_TO_32(&Address, &Array[i]); -+ AcpiOsPrintf ("%8.8X\n", Address); - Offset += sizeof (UINT32); - } - } -@@ -317,6 +321,8 @@ AcpiDmDumpXsdt ( - UINT32 Entries; - UINT32 Offset; - UINT32 i; -+ UINT32 Length; -+ UINT64 Address; - - - /* Point to start of table pointer array */ -@@ -326,12 +332,14 @@ AcpiDmDumpXsdt ( - - /* XSDT uses 64-bit pointers */ - -- Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Entries = (Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); - - for (i = 0; i < Entries; i++) - { - AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); -- AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i])); -+ ACPI_MOVE_64_TO_64(&Address, &Array[i]); -+ AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Address)); - Offset += sizeof (UINT64); - } - } -@@ -358,12 +366,12 @@ AcpiDmDumpFadt ( - ACPI_TABLE_HEADER *Table) - { - ACPI_STATUS Status; -- -+ UINT32 Length; - - /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, -- AcpiDmTableInfoFadt1); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFadt1); - if (ACPI_FAILURE (Status)) - { - return; -@@ -371,11 +379,9 @@ AcpiDmDumpFadt ( - - /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */ - -- if ((Table->Length > ACPI_FADT_V1_SIZE) && -- (Table->Length <= ACPI_FADT_V2_SIZE)) -+ if ((Length > ACPI_FADT_V1_SIZE) && (Length <= ACPI_FADT_V2_SIZE)) - { -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, -- AcpiDmTableInfoFadt2); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFadt2); - if (ACPI_FAILURE (Status)) - { - return; -@@ -384,10 +390,9 @@ AcpiDmDumpFadt ( - - /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */ - -- else if (Table->Length > ACPI_FADT_V2_SIZE) -+ else if (Length > ACPI_FADT_V2_SIZE) - { -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, -- AcpiDmTableInfoFadt3); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFadt3); - if (ACPI_FAILURE (Status)) - { - return; -@@ -395,9 +400,9 @@ AcpiDmDumpFadt ( - - /* Check for FADT revision 5 fields and up (ACPI 5.0+) */ - -- if (Table->Length > ACPI_FADT_V3_SIZE) -+ if (Length > ACPI_FADT_V3_SIZE) - { -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, - AcpiDmTableInfoFadt5); - if (ACPI_FAILURE (Status)) - { -@@ -407,9 +412,9 @@ AcpiDmDumpFadt ( - - /* Check for FADT revision 6 fields and up (ACPI 6.0+) */ - -- if (Table->Length > ACPI_FADT_V3_SIZE) -+ if (Length > ACPI_FADT_V3_SIZE) - { -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, - AcpiDmTableInfoFadt6); - if (ACPI_FAILURE (Status)) - { -@@ -420,11 +425,11 @@ AcpiDmDumpFadt ( - - /* Validate various fields in the FADT, including length */ - -- AcpiTbCreateLocalFadt (Table, Table->Length); -+ AcpiTbCreateLocalFadt (Table, Length); - - /* Validate FADT length against the revision */ - -- AcpiDmValidateFadtLength (Table->Revision, Table->Length); -+ AcpiDmValidateFadtLength (Table->Revision, Length); - } - - -@@ -450,6 +455,7 @@ AcpiDmValidateFadtLength ( - UINT32 Length) - { - UINT32 ExpectedLength; -+ UINT32 Tmp32; - - - switch (Revision) -@@ -485,7 +491,8 @@ AcpiDmValidateFadtLength ( - return; - } - -- if (Length == ExpectedLength) -+ ACPI_MOVE_32_TO_32(&Tmp32, &Length); -+ if (Tmp32 == ExpectedLength) - { - return; - } -@@ -493,5 +500,5 @@ AcpiDmValidateFadtLength ( - AcpiOsPrintf ( - "\n// ACPI Warning: FADT revision %X does not match length: " - "found %X expected %X\n", -- Revision, Length, ExpectedLength); -+ Revision, Tmp32, ExpectedLength); - } diff --git a/big-endian-dmtbdump1.patch b/big-endian-dmtbdump1.patch deleted file mode 100644 index ba37c6f..0000000 --- a/big-endian-dmtbdump1.patch +++ /dev/null @@ -1,637 +0,0 @@ -Index: acpica-unix-20191018/source/common/dmtbdump1.c -=================================================================== ---- acpica-unix-20191018.orig/source/common/dmtbdump1.c -+++ acpica-unix-20191018/source/common/dmtbdump1.c -@@ -79,17 +79,21 @@ AcpiDmDumpAsf ( - UINT32 DataOffset = 0; - UINT32 i; - UINT8 Type; -+ UINT32 Len; -+ UINT16 SubLen; - - - /* No main table, only subtables */ - -+ ACPI_MOVE_32_TO_32(&Len, &Table->Length); - Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Len) - { - /* Common subtable header */ - -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Subtable->Header.Length, AcpiDmTableInfoAsfHdr); -+ ACPI_MOVE_16_TO_16(&SubLen, &Subtable->Header.Length); -+ Status = AcpiDmDumpTable (Len, Offset, Subtable, -+ SubLen, AcpiDmTableInfoAsfHdr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -146,8 +150,7 @@ AcpiDmDumpAsf ( - return; - } - -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Subtable->Header.Length, InfoTable); -+ Status = AcpiDmDumpTable (Len, Offset, Subtable, SubLen, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; -@@ -163,7 +166,7 @@ AcpiDmDumpAsf ( - for (i = 0; i < DataCount; i++) - { - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, DataOffset, -+ Status = AcpiDmDumpTable (Len, DataOffset, - DataTable, DataLength, DataInfoTable); - if (ACPI_FAILURE (Status)) - { -@@ -209,15 +212,14 @@ AcpiDmDumpAsf ( - - /* Point to next subtable */ - -- if (!Subtable->Header.Length) -+ if (!SubLen) - { - AcpiOsPrintf ("Invalid zero subtable header length\n"); - return; - } - -- Offset += Subtable->Header.Length; -- Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Subtable, -- Subtable->Header.Length); -+ Offset += SubLen; -+ Subtable = ACPI_ADD_PTR (ACPI_ASF_INFO, Subtable, SubLen); - } - } - -@@ -241,12 +243,13 @@ AcpiDmDumpCpep ( - { - ACPI_STATUS Status; - ACPI_CPEP_POLLING *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_CPEP); - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep); - if (ACPI_FAILURE (Status)) - { -@@ -256,7 +259,7 @@ AcpiDmDumpCpep ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -@@ -296,7 +299,10 @@ AcpiDmDumpCsrt ( - ACPI_CSRT_GROUP *Subtable; - ACPI_CSRT_SHARED_INFO *SharedInfoTable; - ACPI_CSRT_DESCRIPTOR *SubSubtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; -+ UINT32 SubLength; -+ UINT32 SubSubLength; -+ UINT32 SharedInfoLength; - UINT32 Offset = sizeof (ACPI_TABLE_CSRT); - UINT32 SubOffset; - UINT32 SubSubOffset; -@@ -307,14 +313,16 @@ AcpiDmDumpCsrt ( - - /* Subtables (Resource Groups) */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Resource group subtable */ - - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_32_TO_32(&SubLength, &Subtable->Length); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoCsrt0); -+ SubLength, AcpiDmTableInfoCsrt0); - if (ACPI_FAILURE (Status)) - { - return; -@@ -334,19 +342,20 @@ AcpiDmDumpCsrt ( - return; - } - -- SubOffset += Subtable->SharedInfoLength; -+ ACPI_MOVE_32_TO_32(&SharedInfoLength, &Subtable->SharedInfoLength); -+ SubOffset += SharedInfoLength; - - /* Sub-Subtables (Resource Descriptors) */ - - SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table, - Offset + SubOffset); - -- while ((SubOffset < Subtable->Length) && -- ((Offset + SubOffset) < Table->Length)) -+ while ((SubOffset < SubLength) && ((Offset + SubOffset) < Length)) - { - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_32_TO_32(&SubSubLength, &SubSubtable->Length); - Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubtable, -- SubSubtable->Length, AcpiDmTableInfoCsrt2); -+ SubSubLength, AcpiDmTableInfoCsrt2); - if (ACPI_FAILURE (Status)) - { - return; -@@ -356,7 +365,7 @@ AcpiDmDumpCsrt ( - - /* Resource-specific info buffer */ - -- InfoLength = SubSubtable->Length - SubSubOffset; -+ InfoLength = SubSubLength - SubSubOffset; - if (InfoLength) - { - Status = AcpiDmDumpTable (Length, -@@ -370,16 +379,15 @@ AcpiDmDumpCsrt ( - - /* Point to next sub-subtable */ - -- SubOffset += SubSubtable->Length; -+ SubOffset += SubSubLength; - SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubtable, -- SubSubtable->Length); -+ SubSubLength); - } - - /* Point to next subtable */ - -- Offset += Subtable->Length; -- Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable, -- Subtable->Length); -+ Offset += SubLength; -+ Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable, SubLength); - } - } - -@@ -403,16 +411,20 @@ AcpiDmDumpDbg2 ( - { - ACPI_STATUS Status; - ACPI_DBG2_DEVICE *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; -+ UINT16 SubLength; - UINT32 Offset = sizeof (ACPI_TABLE_DBG2); - UINT32 i; - UINT32 ArrayOffset; - UINT32 AbsoluteOffset; - UINT8 *Array; -+ UINT16 Tmp16; -+ UINT16 AlsoTmp16; - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2); - if (ACPI_FAILURE (Status)) - { -@@ -422,11 +434,12 @@ AcpiDmDumpDbg2 ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoDbg2Device); -+ SubLength, AcpiDmTableInfoDbg2Device); - if (ACPI_FAILURE (Status)) - { - return; -@@ -436,13 +449,13 @@ AcpiDmDumpDbg2 ( - - for (i = 0; i < Subtable->RegisterCount; i++) - { -- ArrayOffset = Subtable->BaseAddressOffset + -- (sizeof (ACPI_GENERIC_ADDRESS) * i); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Subtable->BaseAddressOffset); -+ ArrayOffset = Tmp16 + (sizeof (ACPI_GENERIC_ADDRESS) * i); - AbsoluteOffset = Offset + ArrayOffset; - Array = (UINT8 *) Subtable + ArrayOffset; - - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, -- Subtable->Length, AcpiDmTableInfoDbg2Addr); -+ SubLength, AcpiDmTableInfoDbg2Addr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -453,13 +466,13 @@ AcpiDmDumpDbg2 ( - - for (i = 0; i < Subtable->RegisterCount; i++) - { -- ArrayOffset = Subtable->AddressSizeOffset + -- (sizeof (UINT32) * i); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Subtable->AddressSizeOffset); -+ ArrayOffset = Tmp16 + (sizeof (UINT32) * i); - AbsoluteOffset = Offset + ArrayOffset; - Array = (UINT8 *) Subtable + ArrayOffset; - - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, -- Subtable->Length, AcpiDmTableInfoDbg2Size); -+ SubLength, AcpiDmTableInfoDbg2Size); - if (ACPI_FAILURE (Status)) - { - return; -@@ -469,12 +482,13 @@ AcpiDmDumpDbg2 ( - /* Dump the Namestring (required) */ - - AcpiOsPrintf ("\n"); -- ArrayOffset = Subtable->NamepathOffset; -+ ACPI_MOVE_16_TO_16(&Tmp16, &Subtable->NamepathOffset); -+ ArrayOffset = Tmp16; - AbsoluteOffset = Offset + ArrayOffset; - Array = (UINT8 *) Subtable + ArrayOffset; - - Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, -- Subtable->Length, AcpiDmTableInfoDbg2Name); -+ SubLength, AcpiDmTableInfoDbg2Name); - if (ACPI_FAILURE (Status)) - { - return; -@@ -484,9 +498,10 @@ AcpiDmDumpDbg2 ( - - if (Subtable->OemDataOffset) - { -- Status = AcpiDmDumpTable (Length, Offset + Subtable->OemDataOffset, -- Table, Subtable->OemDataLength, -- AcpiDmTableInfoDbg2OemData); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Subtable->OemDataOffset); -+ ACPI_MOVE_16_TO_16(&AlsoTmp16, &Subtable->OemDataLength); -+ Status = AcpiDmDumpTable (Length, Offset + Tmp16, -+ Table, AlsoTmp16, AcpiDmTableInfoDbg2OemData); - if (ACPI_FAILURE (Status)) - { - return; -@@ -495,9 +510,9 @@ AcpiDmDumpDbg2 ( - - /* Point to next subtable */ - -- Offset += Subtable->Length; -+ Offset += SubLength; - Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Subtable, -- Subtable->Length); -+ SubLength); - } - } - -@@ -521,17 +536,20 @@ AcpiDmDumpDmar ( - { - ACPI_STATUS Status; - ACPI_DMAR_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; -+ UINT16 SubLength; - UINT32 Offset = sizeof (ACPI_TABLE_DMAR); - ACPI_DMTABLE_INFO *InfoTable; - ACPI_DMAR_DEVICE_SCOPE *ScopeTable; - UINT32 ScopeOffset; - UINT8 *PciPath; - UINT32 PathOffset; -+ UINT16 SubType; - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar); - if (ACPI_FAILURE (Status)) - { -@@ -541,13 +559,14 @@ AcpiDmDumpDmar ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoDmarHdr); -+ SubLength, AcpiDmTableInfoDmarHdr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -555,7 +574,8 @@ AcpiDmDumpDmar ( - - AcpiOsPrintf ("\n"); - -- switch (Subtable->Type) -+ ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type); -+ switch (SubType) - { - case ACPI_DMAR_TYPE_HARDWARE_UNIT: - -@@ -590,12 +610,12 @@ AcpiDmDumpDmar ( - default: - - AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n", -- Subtable->Type); -+ SubType); - return; - } - - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, InfoTable); -+ SubLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; -@@ -604,8 +624,8 @@ AcpiDmDumpDmar ( - /* - * Dump the optional device scope entries - */ -- if ((Subtable->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || -- (Subtable->Type == ACPI_DMAR_TYPE_NAMESPACE)) -+ if ((SubType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || -+ (SubType == ACPI_DMAR_TYPE_NAMESPACE)) - { - /* These types do not support device scopes */ - -@@ -613,7 +633,7 @@ AcpiDmDumpDmar ( - } - - ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, Subtable, ScopeOffset); -- while (ScopeOffset < Subtable->Length) -+ while (ScopeOffset < SubLength) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, -@@ -654,9 +674,8 @@ AcpiDmDumpDmar ( - NextSubtable: - /* Point to next subtable */ - -- Offset += Subtable->Length; -- Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable, -- Subtable->Length); -+ Offset += SubLength; -+ Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable, SubLength); - } - } - -@@ -683,12 +702,15 @@ AcpiDmDumpDrtm ( - ACPI_DRTM_RESOURCE_LIST *DrtmRl; - ACPI_DRTM_DPS_ID *DrtmDps; - UINT32 Count; -+ UINT32 ValidatedCount; -+ UINT32 ResourceCount; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, -- AcpiDmTableInfoDrtm); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDrtm); - if (ACPI_FAILURE (Status)) - { - return; -@@ -702,7 +724,7 @@ AcpiDmDumpDrtm ( - - DrtmVtl = ACPI_ADD_PTR (ACPI_DRTM_VTABLE_LIST, Table, Offset); - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, -+ Status = AcpiDmDumpTable (Length, Offset, - DrtmVtl, ACPI_OFFSET (ACPI_DRTM_VTABLE_LIST, ValidatedTables), - AcpiDmTableInfoDrtm0); - if (ACPI_FAILURE (Status)) -@@ -715,10 +737,11 @@ AcpiDmDumpDrtm ( - /* Dump Validated table addresses */ - - Count = 0; -- while ((Offset < Table->Length) && -- (DrtmVtl->ValidatedTableCount > Count)) -+ ACPI_MOVE_32_TO_32(&ValidatedCount, &DrtmVtl->ValidatedTableCount); -+ while ((Offset < Length) && -+ (ValidatedCount > Count)) - { -- Status = AcpiDmDumpTable (Table->Length, Offset, -+ Status = AcpiDmDumpTable (Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), sizeof (UINT64), - AcpiDmTableInfoDrtm0a); - if (ACPI_FAILURE (Status)) -@@ -734,7 +757,7 @@ AcpiDmDumpDrtm ( - - DrtmRl = ACPI_ADD_PTR (ACPI_DRTM_RESOURCE_LIST, Table, Offset); - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, -+ Status = AcpiDmDumpTable (Length, Offset, - DrtmRl, ACPI_OFFSET (ACPI_DRTM_RESOURCE_LIST, Resources), - AcpiDmTableInfoDrtm1); - if (ACPI_FAILURE (Status)) -@@ -747,10 +770,11 @@ AcpiDmDumpDrtm ( - /* Dump the Resource List */ - - Count = 0; -- while ((Offset < Table->Length) && -- (DrtmRl->ResourceCount > Count)) -+ ACPI_MOVE_32_TO_32(&ResourceCount, &DrtmRl->ResourceCount); -+ while ((Offset < Length) && -+ (ResourceCount > Count)) - { -- Status = AcpiDmDumpTable (Table->Length, Offset, -+ Status = AcpiDmDumpTable (Length, Offset, - ACPI_ADD_PTR (void, Table, Offset), - sizeof (ACPI_DRTM_RESOURCE), AcpiDmTableInfoDrtm1a); - if (ACPI_FAILURE (Status)) -@@ -766,7 +790,7 @@ AcpiDmDumpDrtm ( - - DrtmDps = ACPI_ADD_PTR (ACPI_DRTM_DPS_ID, Table, Offset); - AcpiOsPrintf ("\n"); -- (void) AcpiDmDumpTable (Table->Length, Offset, -+ (void) AcpiDmDumpTable (Length, Offset, - DrtmDps, sizeof (ACPI_DRTM_DPS_ID), AcpiDmTableInfoDrtm2); - } - -@@ -790,12 +814,13 @@ AcpiDmDumpEinj ( - { - ACPI_STATUS Status; - ACPI_WHEA_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_EINJ); - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj); - if (ACPI_FAILURE (Status)) - { -@@ -805,7 +830,7 @@ AcpiDmDumpEinj ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -@@ -843,12 +868,13 @@ AcpiDmDumpErst ( - { - ACPI_STATUS Status; - ACPI_WHEA_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_ERST); - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst); - if (ACPI_FAILURE (Status)) - { -@@ -858,7 +884,7 @@ AcpiDmDumpErst ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -@@ -896,17 +922,19 @@ AcpiDmDumpFpdt ( - { - ACPI_STATUS Status; - ACPI_FPDT_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_FPDT); - ACPI_DMTABLE_INFO *InfoTable; -+ UINT16 Type; - - - /* There is no main table (other than the standard ACPI header) */ - - /* Subtables */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - -@@ -918,7 +946,8 @@ AcpiDmDumpFpdt ( - return; - } - -- switch (Subtable->Type) -+ ACPI_MOVE_16_TO_16(&Type, &Subtable->Type); -+ switch (Type) - { - case ACPI_FPDT_TYPE_BOOT: - -@@ -932,8 +961,7 @@ AcpiDmDumpFpdt ( - - default: - -- AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", -- Subtable->Type); -+ AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", Type); - - /* Attempt to continue */ - -@@ -981,16 +1009,19 @@ AcpiDmDumpGtdt ( - { - ACPI_STATUS Status; - ACPI_GTDT_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; -+ UINT16 SubLength; - UINT32 Offset = sizeof (ACPI_TABLE_GTDT); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 SubtableLength; - UINT32 GtCount; -+ UINT32 Tmp32; - ACPI_GTDT_TIMER_ENTRY *GtxTable; - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt); - if (ACPI_FAILURE (Status)) - { -@@ -1017,7 +1048,7 @@ AcpiDmDumpGtdt ( - - /* Subtables */ - -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - -@@ -1035,8 +1066,9 @@ AcpiDmDumpGtdt ( - case ACPI_GTDT_TYPE_TIMER_BLOCK: - - SubtableLength = sizeof (ACPI_GTDT_TIMER_BLOCK); -- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, -+ Tmp32 = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, - Subtable))->TimerCount; -+ ACPI_MOVE_32_TO_32(&GtCount, &Tmp32); - - InfoTable = AcpiDmTableInfoGtdt0; - break; -@@ -1057,8 +1089,9 @@ AcpiDmDumpGtdt ( - return; - } - -+ ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, InfoTable); -+ SubLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1117,16 +1150,18 @@ AcpiDmDumpHest ( - { - ACPI_STATUS Status; - ACPI_HEST_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_HEST); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 SubtableLength; - UINT32 BankCount; - ACPI_HEST_IA_ERROR_BANK *BankTable; -+ UINT16 SubType; - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest); - if (ACPI_FAILURE (Status)) - { -@@ -1136,10 +1171,11 @@ AcpiDmDumpHest ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - BankCount = 0; -- switch (Subtable->Type) -+ ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type); -+ switch (SubType) - { - case ACPI_HEST_TYPE_IA32_CHECK: - diff --git a/big-endian-dmtbdump2.patch b/big-endian-dmtbdump2.patch deleted file mode 100644 index 0997b5b..0000000 --- a/big-endian-dmtbdump2.patch +++ /dev/null @@ -1,887 +0,0 @@ -Index: acpica-unix2-20200528/source/common/dmtbdump2.c -=================================================================== ---- acpica-unix2-20200528.orig/source/common/dmtbdump2.c -+++ acpica-unix2-20200528/source/common/dmtbdump2.c -@@ -75,16 +75,23 @@ AcpiDmDumpIort ( - ACPI_IORT_SMMU *IortSmmu = NULL; - UINT32 Offset; - UINT32 NodeOffset; -+ UINT16 NodeLength; - UINT32 Length; - ACPI_DMTABLE_INFO *InfoTable; - char *String; - UINT32 i; - UINT32 MappingByteLength; -+ UINT32 TableLen; -+ UINT32 ItsCount; -+ UINT32 MappingCount; -+ UINT32 CtxIntCount; -+ UINT32 PmuIntCount; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIort); -+ ACPI_MOVE_32_TO_32(&TableLen, &Table->Length); -+ Status = AcpiDmDumpTable (TableLen, 0, Table, 0, AcpiDmTableInfoIort); - if (ACPI_FAILURE (Status)) - { - return; -@@ -95,18 +102,19 @@ AcpiDmDumpIort ( - - /* Dump the OptionalPadding (optional) */ - -- if (Iort->NodeOffset > Offset) -+ ACPI_MOVE_32_TO_32(&NodeOffset, &Iort->NodeOffset); -+ if (NodeOffset > Offset) - { -- Status = AcpiDmDumpTable (Table->Length, Offset, Table, -- Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad); -+ Status = AcpiDmDumpTable (TableLen, Offset, Table, -+ NodeOffset - Offset, AcpiDmTableInfoIortPad); - if (ACPI_FAILURE (Status)) - { - return; - } - } - -- Offset = Iort->NodeOffset; -- while (Offset < Table->Length) -+ ACPI_MOVE_32_TO_32(&Offset, &Iort->NodeOffset); -+ while (Offset < TableLen) - { - /* Common subtable header */ - -@@ -142,7 +150,8 @@ AcpiDmDumpIort ( - case ACPI_IORT_NODE_PCI_ROOT_COMPLEX: - - InfoTable = AcpiDmTableInfoIort2; -- Length = IortNode->Length - NodeOffset; -+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length); -+ Length = NodeLength - NodeOffset; - break; - - case ACPI_IORT_NODE_SMMU: -@@ -155,7 +164,8 @@ AcpiDmDumpIort ( - case ACPI_IORT_NODE_SMMU_V3: - - InfoTable = AcpiDmTableInfoIort4; -- Length = IortNode->Length - NodeOffset; -+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length); -+ Length = NodeLength - NodeOffset; - break; - - case ACPI_IORT_NODE_PMCG: -@@ -171,7 +181,8 @@ AcpiDmDumpIort ( - - /* Attempt to continue */ - -- if (!IortNode->Length) -+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length); -+ if (!NodeLength) - { - AcpiOsPrintf ("Invalid zero length IORT node\n"); - return; -@@ -182,7 +193,7 @@ AcpiDmDumpIort ( - /* Dump the node subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, InfoTable); - if (ACPI_FAILURE (Status)) -@@ -202,9 +213,10 @@ AcpiDmDumpIort ( - - if (IortItsGroup) - { -- for (i = 0; i < IortItsGroup->ItsCount; i++) -+ ACPI_MOVE_32_TO_32(&ItsCount, &IortItsGroup->ItsCount); -+ for (i = 0; i < ItsCount; i++) - { -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 4, AcpiDmTableInfoIort0a); - if (ACPI_FAILURE (Status)) -@@ -221,12 +233,13 @@ AcpiDmDumpIort ( - - /* Dump the Padding (optional) */ - -- if (IortNode->Length > NodeOffset) -+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length); -+ if (NodeLength > NodeOffset) - { - MappingByteLength = - IortNode->MappingCount * sizeof (ACPI_IORT_ID_MAPPING); -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -- Table, IortNode->Length - NodeOffset - MappingByteLength, -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, -+ Table, NodeLength - NodeOffset - MappingByteLength, - AcpiDmTableInfoIort1a); - if (ACPI_FAILURE (Status)) - { -@@ -244,8 +257,8 @@ AcpiDmDumpIort ( - if (IortSmmu) - { - Length = 2 * sizeof (UINT64); -- NodeOffset = IortSmmu->GlobalInterruptOffset; -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->GlobalInterruptOffset); -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIort3a); - if (ACPI_FAILURE (Status)) -@@ -253,10 +266,11 @@ AcpiDmDumpIort ( - return; - } - -- NodeOffset = IortSmmu->ContextInterruptOffset; -- for (i = 0; i < IortSmmu->ContextInterruptCount; i++) -+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->ContextInterruptOffset); -+ ACPI_MOVE_32_TO_32(&CtxIntCount, &IortSmmu->ContextInterruptCount); -+ for (i = 0; i < CtxIntCount; i++) - { -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3b); - if (ACPI_FAILURE (Status)) -@@ -267,10 +281,11 @@ AcpiDmDumpIort ( - NodeOffset += 8; - } - -- NodeOffset = IortSmmu->PmuInterruptOffset; -- for (i = 0; i < IortSmmu->PmuInterruptCount; i++) -+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortSmmu->PmuInterruptOffset); -+ ACPI_MOVE_32_TO_32(&PmuIntCount, &IortSmmu->PmuInterruptCount); -+ for (i = 0; i < PmuIntCount; i++) - { -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - 8, AcpiDmTableInfoIort3c); - if (ACPI_FAILURE (Status)) -@@ -290,12 +305,13 @@ AcpiDmDumpIort ( - - /* Dump the ID mappings */ - -- NodeOffset = IortNode->MappingOffset; -- for (i = 0; i < IortNode->MappingCount; i++) -+ ACPI_MOVE_32_TO_32(&NodeOffset, &IortNode->MappingOffset); -+ ACPI_MOVE_32_TO_32(&MappingCount, &IortNode->MappingCount); -+ for (i = 0; i < MappingCount; i++) - { - AcpiOsPrintf ("\n"); - Length = sizeof (ACPI_IORT_ID_MAPPING); -- Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset, -+ Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset, - ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeOffset), - Length, AcpiDmTableInfoIortMap); - if (ACPI_FAILURE (Status)) -@@ -309,7 +325,8 @@ AcpiDmDumpIort ( - NextSubtable: - /* Point to next node subtable */ - -- Offset += IortNode->Length; -+ ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length); -+ Offset += NodeLength; - } - } - -@@ -340,11 +357,14 @@ AcpiDmDumpIvrs ( - ACPI_IVRS_DE_HEADER *DeviceEntry; - ACPI_IVRS_HEADER *Subtable; - ACPI_DMTABLE_INFO *InfoTable; -+ UINT32 Length; -+ UINT16 SubLength; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoIvrs); - if (ACPI_FAILURE (Status)) - { - return; -@@ -353,13 +373,14 @@ AcpiDmDumpIvrs ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoIvrsHdr); -+ ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length); -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, -+ SubLength, AcpiDmTableInfoIvrsHdr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -391,7 +412,7 @@ AcpiDmDumpIvrs ( - - /* Attempt to continue */ - -- if (!Subtable->Length) -+ if (!SubLength) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; -@@ -402,8 +423,8 @@ AcpiDmDumpIvrs ( - /* Dump the subtable */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Subtable->Length, InfoTable); -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, -+ SubLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; -@@ -429,7 +450,7 @@ AcpiDmDumpIvrs ( - sizeof (ACPI_IVRS_HARDWARE2)); - } - -- while (EntryOffset < (Offset + Subtable->Length)) -+ while (EntryOffset < (Offset + SubLength)) - { - AcpiOsPrintf ("\n"); - /* -@@ -491,7 +512,7 @@ AcpiDmDumpIvrs ( - - /* Dump the Device Entry */ - -- Status = AcpiDmDumpTable (Table->Length, EntryOffset, -+ Status = AcpiDmDumpTable (Length, EntryOffset, - DeviceEntry, EntryLength, InfoTable); - if (ACPI_FAILURE (Status)) - { -@@ -507,8 +528,8 @@ AcpiDmDumpIvrs ( - NextSubtable: - /* Point to next subtable */ - -- Offset += Subtable->Length; -- Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length); -+ Offset += SubLength; -+ Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, SubLength); - } - } - -@@ -534,7 +555,7 @@ AcpiDmDumpLpit ( - { - ACPI_STATUS Status; - ACPI_LPIT_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_LPIT); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 SubtableLength; -@@ -542,8 +563,9 @@ AcpiDmDumpLpit ( - - /* Subtables */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Subtable = ACPI_ADD_PTR (ACPI_LPIT_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - -@@ -607,13 +629,14 @@ AcpiDmDumpMadt ( - { - ACPI_STATUS Status; - ACPI_SUBTABLE_HEADER *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_MADT); - ACPI_DMTABLE_INFO *InfoTable; - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt); - if (ACPI_FAILURE (Status)) - { -@@ -623,7 +646,7 @@ AcpiDmDumpMadt ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - -@@ -769,11 +792,13 @@ AcpiDmDumpMcfg ( - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MCFG); - ACPI_MCFG_ALLOCATION *Subtable; -+ UINT32 Len; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg); -+ ACPI_MOVE_32_TO_32(&Len, &Table->Length); -+ Status = AcpiDmDumpTable (Len, 0, Table, 0, AcpiDmTableInfoMcfg); - if (ACPI_FAILURE (Status)) - { - return; -@@ -782,17 +807,17 @@ AcpiDmDumpMcfg ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Len) - { -- if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length) -+ if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Len) - { - AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n", -- (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length)); -+ (UINT32) sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Len)); - return; - } - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Len, Offset, Subtable, - sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); - if (ACPI_FAILURE (Status)) - { -@@ -826,6 +851,7 @@ AcpiDmDumpMpst ( - { - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MPST); -+ ACPI_TABLE_MPST *Mpst; - ACPI_MPST_POWER_NODE *Subtable0; - ACPI_MPST_POWER_STATE *Subtable0A; - ACPI_MPST_COMPONENT *Subtable0B; -@@ -834,11 +860,13 @@ AcpiDmDumpMpst ( - UINT16 SubtableCount; - UINT32 PowerStateCount; - UINT32 ComponentCount; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMpst); - if (ACPI_FAILURE (Status)) - { - return; -@@ -846,13 +874,14 @@ AcpiDmDumpMpst ( - - /* Subtable: Memory Power Node(s) */ - -- SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; -+ Mpst = ACPI_CAST_PTR (ACPI_TABLE_MPST, Table); -+ ACPI_MOVE_16_TO_16(&SubtableCount, &Mpst->PowerNodeCount); - Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset); - -- while ((Offset < Table->Length) && SubtableCount) -+ while ((Offset < Length) && SubtableCount) - { - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable0, - sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); - if (ACPI_FAILURE (Status)) - { -@@ -861,8 +890,8 @@ AcpiDmDumpMpst ( - - /* Extract the sub-subtable counts */ - -- PowerStateCount = Subtable0->NumPowerStates; -- ComponentCount = Subtable0->NumPhysicalComponents; -+ ACPI_MOVE_32_TO_32(&PowerStateCount, &Subtable0->NumPowerStates); -+ ACPI_MOVE_32_TO_32(&ComponentCount, &Subtable0->NumPhysicalComponents); - Offset += sizeof (ACPI_MPST_POWER_NODE); - - /* Sub-subtables - Memory Power State Structure(s) */ -@@ -873,7 +902,7 @@ AcpiDmDumpMpst ( - while (PowerStateCount) - { - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0A, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable0A, - sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); - if (ACPI_FAILURE (Status)) - { -@@ -883,7 +912,7 @@ AcpiDmDumpMpst ( - Subtable0A++; - PowerStateCount--; - Offset += sizeof (ACPI_MPST_POWER_STATE); -- } -+ } - - /* Sub-subtables - Physical Component ID Structure(s) */ - -@@ -896,7 +925,7 @@ AcpiDmDumpMpst ( - - while (ComponentCount) - { -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable0B, - sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); - if (ACPI_FAILURE (Status)) - { -@@ -911,17 +940,19 @@ AcpiDmDumpMpst ( - /* Point to next Memory Power Node subtable */ - - SubtableCount--; -+ ACPI_MOVE_32_TO_32(&PowerStateCount, &Subtable0->NumPowerStates); -+ ACPI_MOVE_32_TO_32(&ComponentCount, &Subtable0->NumPhysicalComponents); - Subtable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Subtable0, - sizeof (ACPI_MPST_POWER_NODE) + -- (sizeof (ACPI_MPST_POWER_STATE) * Subtable0->NumPowerStates) + -- (sizeof (ACPI_MPST_COMPONENT) * Subtable0->NumPhysicalComponents)); -+ (sizeof (ACPI_MPST_POWER_STATE) * PowerStateCount) + -+ (sizeof (ACPI_MPST_COMPONENT) * ComponentCount)); - } - - /* Subtable: Count of Memory Power State Characteristic structures */ - - AcpiOsPrintf ("\n"); - Subtable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable0); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable1, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable1, - sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); - if (ACPI_FAILURE (Status)) - { -@@ -936,10 +967,10 @@ AcpiDmDumpMpst ( - Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1, - sizeof (ACPI_MPST_DATA_HDR)); - -- while ((Offset < Table->Length) && SubtableCount) -+ while ((Offset < Length) && SubtableCount) - { - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable2, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable2, - sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); - if (ACPI_FAILURE (Status)) - { -@@ -972,11 +1003,13 @@ AcpiDmDumpMsct ( - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MSCT); - ACPI_MSCT_PROXIMITY *Subtable; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMsct); - if (ACPI_FAILURE (Status)) - { - return; -@@ -985,12 +1018,12 @@ AcpiDmDumpMsct ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); - if (ACPI_FAILURE (Status)) - { -@@ -1025,11 +1058,13 @@ AcpiDmDumpMtmr ( - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_MTMR); - ACPI_MTMR_ENTRY *Subtable; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMtmr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1038,12 +1073,12 @@ AcpiDmDumpMtmr ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); - if (ACPI_FAILURE (Status)) - { -@@ -1085,11 +1120,17 @@ AcpiDmDumpNfit ( - ACPI_NFIT_SMBIOS *SmbiosInfo = NULL; - ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL; - UINT32 i; -+ UINT32 TableLength; -+ UINT16 SubLength; -+ UINT16 SubType; -+ UINT32 Count; -+ UINT16 Count16; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoNfit); -+ ACPI_MOVE_32_TO_32(&TableLength, &Table->Length); -+ Status = AcpiDmDumpTable (TableLength, 0, Table, 0, AcpiDmTableInfoNfit); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1098,19 +1139,21 @@ AcpiDmDumpNfit ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < TableLength) - { - /* NFIT subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoNfitHdr); -+ ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length); -+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, -+ SubLength, AcpiDmTableInfoNfitHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - -- switch (Subtable->Type) -+ ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type); -+ switch (SubType) - { - case ACPI_NFIT_TYPE_SYSTEM_ADDRESS: - -@@ -1165,7 +1208,7 @@ AcpiDmDumpNfit ( - - /* Attempt to continue */ - -- if (!Subtable->Length) -+ if (!SubLength) - { - AcpiOsPrintf ("Invalid zero length subtable\n"); - return; -@@ -1174,8 +1217,8 @@ AcpiDmDumpNfit ( - } - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Subtable->Length, InfoTable); -+ Status = AcpiDmDumpTable (TableLength, Offset, Subtable, -+ SubLength, InfoTable); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1183,14 +1226,15 @@ AcpiDmDumpNfit ( - - /* Per-subtable variable-length fields */ - -- switch (Subtable->Type) -+ switch (SubType) - { - case ACPI_NFIT_TYPE_INTERLEAVE: - - Interleave = ACPI_CAST_PTR (ACPI_NFIT_INTERLEAVE, Subtable); -- for (i = 0; i < Interleave->LineCount; i++) -+ ACPI_MOVE_32_TO_32(&Count, &Interleave->LineCount); -+ for (i = 0; i < Count; i++) - { -- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, -+ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset, - &Interleave->LineOffset[i], - sizeof (UINT32), AcpiDmTableInfoNfit2a); - if (ACPI_FAILURE (Status)) -@@ -1204,12 +1248,11 @@ AcpiDmDumpNfit ( - - case ACPI_NFIT_TYPE_SMBIOS: - -- Length = Subtable->Length - -- sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); -+ Length = SubLength - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8); - - if (Length) - { -- Status = AcpiDmDumpTable (Table->Length, -+ Status = AcpiDmDumpTable (TableLength, - sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8), - SmbiosInfo, - Length, AcpiDmTableInfoNfit3a); -@@ -1224,9 +1267,10 @@ AcpiDmDumpNfit ( - case ACPI_NFIT_TYPE_FLUSH_ADDRESS: - - Hint = ACPI_CAST_PTR (ACPI_NFIT_FLUSH_ADDRESS, Subtable); -- for (i = 0; i < Hint->HintCount; i++) -+ ACPI_MOVE_16_TO_16(&Count16, &Hint->HintCount); -+ for (i = 0; i < Count16; i++) - { -- Status = AcpiDmDumpTable (Table->Length, Offset + FieldOffset, -+ Status = AcpiDmDumpTable (TableLength, Offset + FieldOffset, - &Hint->HintAddress[i], - sizeof (UINT64), AcpiDmTableInfoNfit6a); - if (ACPI_FAILURE (Status)) -@@ -1245,8 +1289,8 @@ AcpiDmDumpNfit ( - NextSubtable: - /* Point to next subtable */ - -- Offset += Subtable->Length; -- Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length); -+ Offset += SubLength; -+ Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, SubLength); - } - } - -@@ -1271,12 +1315,13 @@ AcpiDmDumpPcct ( - ACPI_STATUS Status; - ACPI_PCCT_SUBSPACE *Subtable; - ACPI_DMTABLE_INFO *InfoTable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_PCCT); - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct); - if (ACPI_FAILURE (Status)) - { -@@ -1286,7 +1331,7 @@ AcpiDmDumpPcct ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - -@@ -1426,16 +1471,21 @@ AcpiDmDumpPmtt ( - ACPI_PMTT_HEADER *MemSubtable; - ACPI_PMTT_HEADER *DimmSubtable; - ACPI_PMTT_DOMAIN *DomainArray; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 Offset = sizeof (ACPI_TABLE_PMTT); - UINT32 MemOffset; - UINT32 DimmOffset; - UINT32 DomainOffset; -- UINT32 DomainCount; -+ UINT16 DomainCount; -+ UINT16 SubLength; -+ UINT16 Tmp16; -+ UINT16 MemLength; -+ UINT16 DimmLength; - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt); - if (ACPI_FAILURE (Status)) - { -@@ -1445,13 +1495,14 @@ AcpiDmDumpPmtt ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length); - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoPmttHdr); -+ SubLength, AcpiDmTableInfoPmttHdr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1470,7 +1521,7 @@ AcpiDmDumpPmtt ( - /* Dump the fixed-length portion of the subtable */ - - Status = AcpiDmDumpTable (Length, Offset, Subtable, -- Subtable->Length, AcpiDmTableInfoPmtt0); -+ SubLength, AcpiDmTableInfoPmtt0); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1482,15 +1533,16 @@ AcpiDmDumpPmtt ( - MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable, - sizeof (ACPI_PMTT_SOCKET)); - -- while (((Offset + MemOffset) < Table->Length) && -- (MemOffset < Subtable->Length)) -+ while (((Offset + MemOffset) < Length) && -+ (MemOffset < SubLength)) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_16_TO_16(&MemLength, &MemSubtable->Length); - Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubtable, -- MemSubtable->Length, AcpiDmTableInfoPmttHdr); -+ MemLength, AcpiDmTableInfoPmttHdr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1510,7 +1562,7 @@ AcpiDmDumpPmtt ( - - Status = AcpiDmDumpTable (Length, - Offset + MemOffset, MemSubtable, -- MemSubtable->Length, AcpiDmTableInfoPmtt1); -+ MemLength, AcpiDmTableInfoPmtt1); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1518,13 +1570,14 @@ AcpiDmDumpPmtt ( - - /* Walk the variable count of proximity domains */ - -- DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount; -+ Tmp16 = ((ACPI_PMTT_CONTROLLER *) MemSubtable)->DomainCount; -+ ACPI_MOVE_16_TO_16(&DomainCount, &Tmp16); - DomainOffset = sizeof (ACPI_PMTT_CONTROLLER); - DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubtable, - sizeof (ACPI_PMTT_CONTROLLER)); - -- while (((Offset + MemOffset + DomainOffset) < Table->Length) && -- ((MemOffset + DomainOffset) < Subtable->Length) && -+ while (((Offset + MemOffset + DomainOffset) < Length) && -+ ((MemOffset + DomainOffset) < SubLength) && - DomainCount) - { - Status = AcpiDmDumpTable (Length, -@@ -1552,15 +1605,16 @@ AcpiDmDumpPmtt ( - DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable, - DomainOffset); - -- while (((Offset + MemOffset + DimmOffset) < Table->Length) && -- (DimmOffset < MemSubtable->Length)) -+ while (((Offset + MemOffset + DimmOffset) < Length) && -+ (DimmOffset < MemLength)) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -+ ACPI_MOVE_16_TO_16(&DimmLength, &DimmSubtable->Length); - Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubtable, -- DimmSubtable->Length, AcpiDmTableInfoPmttHdr); -+ DimmLength, AcpiDmTableInfoPmttHdr); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1580,7 +1634,7 @@ AcpiDmDumpPmtt ( - - Status = AcpiDmDumpTable (Length, - Offset + MemOffset + DimmOffset, DimmSubtable, -- DimmSubtable->Length, AcpiDmTableInfoPmtt2); -+ DimmLength, AcpiDmTableInfoPmtt2); - if (ACPI_FAILURE (Status)) - { - return; -@@ -1588,23 +1642,22 @@ AcpiDmDumpPmtt ( - - /* Point to next DIMM subtable */ - -- DimmOffset += DimmSubtable->Length; -+ DimmOffset += DimmLength; - DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, -- DimmSubtable, DimmSubtable->Length); -+ DimmSubtable, DimmLength); - } - - /* Point to next Controller subtable */ - -- MemOffset += MemSubtable->Length; -+ MemOffset += MemLength; - MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, -- MemSubtable, MemSubtable->Length); -+ MemSubtable, MemLength); - } - - /* Point to next Socket subtable */ - -- Offset += Subtable->Length; -- Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, -- Subtable, Subtable->Length); -+ Offset += SubLength; -+ Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable, SubLength); - } - } - -@@ -1765,6 +1818,8 @@ AcpiDmDumpS3pt ( - ACPI_FPDT_HEADER *Subtable; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables); -+ UINT32 Length; -+ UINT16 SubType; - - - /* Main table */ -@@ -1775,20 +1830,22 @@ AcpiDmDumpS3pt ( - return 0; - } - -+ ACPI_MOVE_32_TO_32(&Length, &S3ptTable->Length); - Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset); -- while (Offset < S3ptTable->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - Subtable->Length, AcpiDmTableInfoS3ptHdr); - if (ACPI_FAILURE (Status)) - { - return 0; - } - -- switch (Subtable->Type) -+ ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type); -+ switch (SubType) - { - case ACPI_S3PT_TYPE_RESUME: - -@@ -1803,7 +1860,7 @@ AcpiDmDumpS3pt ( - default: - - AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n", -- Subtable->Type); -+ SubType); - - /* Attempt to continue */ - -@@ -1816,7 +1873,7 @@ AcpiDmDumpS3pt ( - } - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - Subtable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { diff --git a/big-endian-dmtbdump3.patch b/big-endian-dmtbdump3.patch deleted file mode 100644 index 4daf79c..0000000 --- a/big-endian-dmtbdump3.patch +++ /dev/null @@ -1,250 +0,0 @@ -Index: acpica-unix-20191018/source/common/dmtbdump3.c -=================================================================== ---- acpica-unix-20191018.orig/source/common/dmtbdump3.c -+++ acpica-unix-20191018/source/common/dmtbdump3.c -@@ -68,9 +68,11 @@ void - AcpiDmDumpSlic ( - ACPI_TABLE_HEADER *Table) - { -+ UINT32 Length; - -- (void) AcpiDmDumpTable (Table->Length, sizeof (ACPI_TABLE_HEADER), Table, -- Table->Length - sizeof (*Table), AcpiDmTableInfoSlic); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ (void) AcpiDmDumpTable (Length, sizeof (ACPI_TABLE_HEADER), Table, -+ Length - sizeof (*Table), AcpiDmTableInfoSlic); - } - - -@@ -93,14 +95,17 @@ AcpiDmDumpSlit ( - ACPI_STATUS Status; - UINT32 Offset; - UINT8 *Row; -- UINT32 Localities; -+ UINT64 Localities; - UINT32 i; - UINT32 j; -+ UINT32 Length; -+ UINT64 Tmp64; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSlit); - if (ACPI_FAILURE (Status)) - { - return; -@@ -108,7 +113,8 @@ AcpiDmDumpSlit ( - - /* Display the Locality NxN Matrix */ - -- Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount; -+ Tmp64 = (UINT64) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount; -+ ACPI_MOVE_64_TO_64(&Localities, &Tmp64); - Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]); - Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry; - -@@ -121,7 +127,7 @@ AcpiDmDumpSlit ( - { - /* Check for beyond EOT */ - -- if (Offset >= Table->Length) -+ if (Offset >= Length) - { - AcpiOsPrintf ( - "\n**** Not enough room in table for all localities\n"); -@@ -173,11 +179,13 @@ AcpiDmDumpSrat ( - UINT32 Offset = sizeof (ACPI_TABLE_SRAT); - ACPI_SUBTABLE_HEADER *Subtable; - ACPI_DMTABLE_INFO *InfoTable; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSrat); - if (ACPI_FAILURE (Status)) - { - return; -@@ -186,12 +194,12 @@ AcpiDmDumpSrat ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - Subtable->Length, AcpiDmTableInfoSratHdr); - if (ACPI_FAILURE (Status)) - { -@@ -245,7 +253,7 @@ AcpiDmDumpSrat ( - } - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - Subtable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { -@@ -282,13 +290,14 @@ AcpiDmDumpStao ( - { - ACPI_STATUS Status; - char *Namepath; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT32 StringLength; - UINT32 Offset = sizeof (ACPI_TABLE_STAO); - - - /* Main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoStao); - if (ACPI_FAILURE (Status)) - { -@@ -297,7 +306,7 @@ AcpiDmDumpStao ( - - /* The rest of the table consists of Namepath strings */ - -- while (Offset < Table->Length) -+ while (Offset < Length) - { - Namepath = ACPI_ADD_PTR (char, Table, Offset); - StringLength = strlen (Namepath) + 1; -@@ -339,11 +348,14 @@ AcpiDmDumpTcpa ( - ACPI_TABLE_TCPA_HDR *Subtable = ACPI_ADD_PTR ( - ACPI_TABLE_TCPA_HDR, Table, Offset); - ACPI_STATUS Status; -+ UINT32 Length; -+ UINT16 PlatformClass; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, - 0, AcpiDmTableInfoTcpaHdr); - if (ACPI_FAILURE (Status)) - { -@@ -354,18 +366,19 @@ AcpiDmDumpTcpa ( - * Examine the PlatformClass field to determine the table type. - * Either a client or server table. Only one. - */ -- switch (CommonHeader->PlatformClass) -+ ACPI_MOVE_16_TO_16(&PlatformClass, &CommonHeader->PlatformClass); -+ switch (PlatformClass) - { - case ACPI_TCPA_CLIENT_TABLE: - -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Table->Length - Offset, AcpiDmTableInfoTcpaClient); -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, -+ Length - Offset, AcpiDmTableInfoTcpaClient); - break; - - case ACPI_TCPA_SERVER_TABLE: - -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -- Table->Length - Offset, AcpiDmTableInfoTcpaServer); -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, -+ Length - Offset, AcpiDmTableInfoTcpaServer); - break; - - default: -@@ -512,11 +525,13 @@ AcpiDmDumpVrtc ( - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_VRTC); - ACPI_VRTC_ENTRY *Subtable; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoVrtc); - if (ACPI_FAILURE (Status)) - { - return; -@@ -525,12 +540,12 @@ AcpiDmDumpVrtc ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); - if (ACPI_FAILURE (Status)) - { -@@ -565,11 +580,13 @@ AcpiDmDumpWdat ( - ACPI_STATUS Status; - UINT32 Offset = sizeof (ACPI_TABLE_WDAT); - ACPI_WDAT_ENTRY *Subtable; -+ UINT32 Length; - - - /* Main table */ - -- Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); -+ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWdat); - if (ACPI_FAILURE (Status)) - { - return; -@@ -578,12 +595,12 @@ AcpiDmDumpWdat ( - /* Subtables */ - - Subtable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset); -- while (Offset < Table->Length) -+ while (Offset < Length) - { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (Length, Offset, Subtable, - sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); - if (ACPI_FAILURE (Status)) - { -@@ -618,12 +635,13 @@ AcpiDmDumpWpbt ( - { - ACPI_STATUS Status; - ACPI_TABLE_WPBT *Subtable; -- UINT32 Length = Table->Length; -+ UINT32 Length; - UINT16 ArgumentsLength; - - - /* Dump the main table */ - -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoWpbt); - if (ACPI_FAILURE (Status)) - { -@@ -633,10 +651,10 @@ AcpiDmDumpWpbt ( - /* Extract the arguments buffer length from the main table */ - - Subtable = ACPI_CAST_PTR (ACPI_TABLE_WPBT, Table); -- ArgumentsLength = Subtable->ArgumentsLength; -+ ACPI_MOVE_16_TO_16(&ArgumentsLength, &Subtable->ArgumentsLength); - - /* Dump the arguments buffer */ - -- (void) AcpiDmDumpTable (Table->Length, 0, Table, ArgumentsLength, -+ (void) AcpiDmDumpTable (Length, 0, Table, ArgumentsLength, - AcpiDmTableInfoWpbt0); - } diff --git a/big-endian-v2.patch b/big-endian-v2.patch deleted file mode 100644 index 807e534..0000000 --- a/big-endian-v2.patch +++ /dev/null @@ -1,19 +0,0 @@ -Updated versions of upstream often contain fixes that were not seen -in the original big-endian patch; we try to capture those here. - -Signed-off-by: Al Stone ahs3@redhat.com - -Index: acpica-unix-20191018/source/compiler/asllookup.c -=================================================================== ---- acpica-unix-20191018.orig/source/compiler/asllookup.c -+++ acpica-unix-20191018/source/compiler/asllookup.c -@@ -249,7 +249,8 @@ LkIsObjectUsed ( - * ACPI names and are typically not referenced since they are meant - * to be called by the host OS. - */ -- if (Node->Name.Ascii[0] == '_') -+ ACPI_MOVE_32_TO_32(&tmp.Ascii, Node->Name.Ascii); -+ if (tmp.Ascii[0] == '_') - { - return (AE_OK); - } diff --git a/big-endian-v3.patch b/big-endian-v3.patch deleted file mode 100644 index 93ef67d..0000000 --- a/big-endian-v3.patch +++ /dev/null @@ -1,140 +0,0 @@ -diff -Naur acpica-unix2-20200214.orig/source/components/namespace/nsutils.c acpica-unix2-20200214/source/components/namespace/nsutils.c ---- acpica-unix2-20200214.orig/source/components/namespace/nsutils.c 2020-02-14 10:33:55.000000000 -0700 -+++ acpica-unix2-20200214/source/components/namespace/nsutils.c 2020-02-26 10:25:43.477022167 -0700 -@@ -363,6 +363,15 @@ - - /* Move on the next segment */ - -+ { -+ /* Make sure the name segment reflects endian-ness first */ -+ -+ UINT32 Tmp32 = 0; -+ -+ memcpy(&Tmp32, Result, ACPI_NAMESEG_SIZE); -+ ACPI_MOVE_32_TO_32(Result, &Tmp32); -+ } -+ - ExternalName++; - Result += ACPI_NAMESEG_SIZE; - } -diff -Naur acpica-unix2-20200214.orig/source/common/dmtbdump2.c acpica-unix2-20200214/source/common/dmtbdump2.c ---- acpica-unix2-20200214.orig/source/common/dmtbdump2.c 2020-02-26 11:44:13.732967820 -0700 -+++ acpica-unix2-20200214/source/common/dmtbdump2.c 2020-02-26 12:38:44.286849954 -0700 -@@ -1685,6 +1685,8 @@ - UINT32 Offset = sizeof (ACPI_TABLE_FPDT); - ACPI_DMTABLE_INFO *InfoTable; - UINT32 i; -+ UINT32 TableLen; -+ UINT32 NumPrivRes; - - - /* There is no main table (other than the standard ACPI header) */ -@@ -1692,7 +1694,8 @@ - /* Subtables */ - - Offset = sizeof (ACPI_TABLE_HEADER); -- while (Offset < Table->Length) -+ ACPI_MOVE_32_TO_32(&TableLen, &Table->Length); -+ while (Offset < TableLen) - { - AcpiOsPrintf ("\n"); - -@@ -1704,7 +1707,7 @@ - AcpiOsPrintf ("Invalid subtable length\n"); - return; - } -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (TableLen, Offset, Subtable, - Subtable->Length, AcpiDmTableInfoPpttHdr); - if (ACPI_FAILURE (Status)) - { -@@ -1746,7 +1749,7 @@ - AcpiOsPrintf ("Invalid subtable length\n"); - return; - } -- Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, -+ Status = AcpiDmDumpTable (TableLen, Offset, Subtable, - Subtable->Length, InfoTable); - if (ACPI_FAILURE (Status)) - { -@@ -1762,15 +1765,16 @@ - - /* Dump SMBIOS handles */ - -+ ACPI_MOVE_32_TO_32(&NumPrivRes, &PpttProcessor->NumberOfPrivResources); - if ((UINT8)(Subtable->Length - SubtableOffset) < -- (UINT8)(PpttProcessor->NumberOfPrivResources * 4)) -+ (UINT8)(NumPrivRes * 4)) - { - AcpiOsPrintf ("Invalid private resource number\n"); - return; - } -- for (i = 0; i < PpttProcessor->NumberOfPrivResources; i++) -+ for (i = 0; i < NumPrivRes; i++) - { -- Status = AcpiDmDumpTable (Table->Length, Offset + SubtableOffset, -+ Status = AcpiDmDumpTable (TableLen, Offset + SubtableOffset, - ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Subtable, SubtableOffset), - 4, AcpiDmTableInfoPptt0a); - if (ACPI_FAILURE (Status)) -diff -Naur acpica-unix2-20200214.orig/source/compiler/dttable2.c acpica-unix2-20200214/source/compiler/dttable2.c ---- acpica-unix2-20200214.orig/source/compiler/dttable2.c 2020-02-26 11:44:13.726967769 -0700 -+++ acpica-unix2-20200214/source/compiler/dttable2.c 2020-02-26 12:39:03.671014890 -0700 -@@ -1087,9 +1087,11 @@ - Subtable->Buffer, sizeof (ACPI_SUBTABLE_HEADER)); - if (PpttProcessor) - { -+ UINT32 NumPrivRes; -+ - /* Compile initiator proximity domain list */ - -- PpttProcessor->NumberOfPrivResources = 0; -+ NumPrivRes = 0; - while (*PFieldList) - { - Status = DtCompileTable (PFieldList, -@@ -1105,8 +1107,9 @@ - - DtInsertSubtable (ParentTable, Subtable); - PpttHeader->Length += (UINT8)(Subtable->Length); -- PpttProcessor->NumberOfPrivResources++; -+ NumPrivRes++; - } -+ ACPI_MOVE_32_TO_32(&PpttProcessor->NumberOfPrivResources, &NumPrivRes); - } - break; - -diff -Naur acpica-unix2-20200214.orig/source/compiler/aslload.c acpica-unix2-20200214/source/compiler/aslload.c ---- acpica-unix2-20200214.orig/source/compiler/aslload.c 2020-02-14 10:33:53.000000000 -0700 -+++ acpica-unix2-20200214/source/compiler/aslload.c 2020-02-27 13:25:19.308413494 -0700 -@@ -175,13 +175,17 @@ - ACPI_NAMESPACE_NODE *Node; - ACPI_STATUS Status; - char *ExternalPath; -+ char TmpPath[ACPI_NAMESEG_SIZE]; - - - SourceRegion = UtGetArg (Op, 0); - if (SourceRegion) - { -- Status = AcpiNsLookup (WalkState->ScopeInfo, -- SourceRegion->Asl.Value.String, AmlType, ACPI_IMODE_EXECUTE, -+ char TmpName[ACPI_NAMESEG_SIZE]; -+ -+ ACPI_MOVE_32_TO_32(TmpName, SourceRegion->Asl.Value.String); -+ Status = AcpiNsLookup (WalkState->ScopeInfo, TmpName, -+ AmlType, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); - if (Status == AE_NOT_FOUND) - { -@@ -232,8 +236,9 @@ - - default: - -+ ACPI_MOVE_32_TO_32(TmpPath, Child->Asl.Value.String); - Status = AcpiNsLookup (WalkState->ScopeInfo, -- Child->Asl.Value.String, -+ TmpPath, - ACPI_TYPE_LOCAL_REGION_FIELD, - ACPI_IMODE_LOAD_PASS1, - ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | diff --git a/big-endian.patch b/big-endian.patch deleted file mode 100644 index 284bc46..0000000 --- a/big-endian.patch +++ /dev/null @@ -1,4693 +0,0 @@ -Big-endian support - -This is a combined patch that folds all of the past and present changes -for big-endian support into a single patch, hopefully eliminating any sort -of redundancy but also capturing all such changes in a single location. - -To date, this has been critical for the s390x architecture only. - -Signed-off-by: Al Stone ahs3@redhat.com - -Index: acpica-unix2-20200528/source/compiler/aslcodegen.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslcodegen.c -+++ acpica-unix2-20200528/source/compiler/aslcodegen.c -@@ -237,16 +237,12 @@ CgWriteAmlOpcode ( - ACPI_PARSE_OBJECT *Op) - { - UINT8 PkgLenFirstByte; -- UINT32 i; -- union { -- UINT16 Opcode; -- UINT8 OpcodeBytes[2]; -- } Aml; -- union { -- UINT32 Len; -- UINT8 LenBytes[4]; -- } PkgLen; -- -+ UINT8 Byte; -+ UINT16 Word; -+ UINT32 DWord; -+ UINT64 QWord; -+ UINT16 AmlOpcode; -+ UINT32 PkgLen; - - /* We expect some DEFAULT_ARGs, just ignore them */ - -@@ -279,51 +275,52 @@ CgWriteAmlOpcode ( - - /* Special opcodes for within a field definition */ - -- Aml.Opcode = AML_FIELD_OFFSET_OP; -+ AmlOpcode = AML_FIELD_OFFSET_OP; - break; - - case AML_INT_ACCESSFIELD_OP: - -- Aml.Opcode = AML_FIELD_ACCESS_OP; -+ AmlOpcode = AML_FIELD_ACCESS_OP; - break; - - case AML_INT_CONNECTION_OP: - -- Aml.Opcode = AML_FIELD_CONNECTION_OP; -+ AmlOpcode = AML_FIELD_CONNECTION_OP; - break; - - default: - -- Aml.Opcode = Op->Asl.AmlOpcode; -+ AmlOpcode = Op->Asl.AmlOpcode; - break; - } - - -- switch (Aml.Opcode) -+ switch (AmlOpcode) - { - case AML_PACKAGE_LENGTH: - - /* Value is the length to be encoded (Used in field definitions) */ - -- PkgLen.Len = (UINT32) Op->Asl.Value.Integer; -+ PkgLen = (UINT32) Op->Asl.Value.Integer; - break; - - default: - - /* Check for two-byte opcode */ - -- if (Aml.Opcode > 0x00FF) -+ if (AmlOpcode > 0x00FF) - { - /* Write the high byte first */ -- -- CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[1], 1); -+ Byte = ACPI_HIBYTE(AmlOpcode); -+ CgLocalWriteAmlData (Op, &Byte, 1); - } - -- CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[0], 1); -+ Byte = ACPI_LOBYTE(AmlOpcode); -+ CgLocalWriteAmlData (Op, &Byte, 1); - - /* Subtreelength doesn't include length of package length bytes */ - -- PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes; -+ PkgLen = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes; - break; - } - -@@ -334,8 +331,8 @@ CgWriteAmlOpcode ( - if (Op->Asl.AmlPkgLenBytes == 1) - { - /* Simplest case -- no bytes to follow, just write the count */ -- -- CgLocalWriteAmlData (Op, &PkgLen.LenBytes[0], 1); -+ Byte = ACPI_LOBYTE(PkgLen); -+ CgLocalWriteAmlData (Op, &Byte, 1); - } - else if (Op->Asl.AmlPkgLenBytes != 0) - { -@@ -345,7 +342,7 @@ CgWriteAmlOpcode ( - */ - PkgLenFirstByte = (UINT8) - (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) | -- (PkgLen.LenBytes[0] & 0x0F)); -+ (PkgLen & 0x0F)); - - CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1); - -@@ -353,39 +350,47 @@ CgWriteAmlOpcode ( - * Shift the length over by the 4 bits we just stuffed - * in the first byte - */ -- PkgLen.Len >>= 4; -+ PkgLen >>= 4; - - /* - * Now we can write the remaining bytes - - * either 1, 2, or 3 bytes - */ -- for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++) -+ Byte = ACPI_LOBYTE(PkgLen); -+ CgLocalWriteAmlData (Op, &Byte, 1); -+ if (Op->Asl.AmlPkgLenBytes >= 3) -+ { -+ Byte = ACPI_HIBYTE(PkgLen); -+ CgLocalWriteAmlData (Op, &Byte, 1); -+ } -+ if (Op->Asl.AmlPkgLenBytes >= 4) - { -- CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1); -+ Byte = ACPI_LOBYTE(ACPI_HIWORD(PkgLen)); -+ CgLocalWriteAmlData (Op, &Byte, 1); - } - } - } - -- switch (Aml.Opcode) -+ switch (AmlOpcode) - { - case AML_BYTE_OP: -- -- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 1); -+ Byte = (UINT8) Op->Asl.Value.Integer; -+ CgLocalWriteAmlData (Op, &Byte, 1); - break; - - case AML_WORD_OP: -- -- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 2); -+ ACPI_MOVE_64_TO_16(&Word, &Op->Asl.Value.Integer); -+ CgLocalWriteAmlData (Op, &Word, 2); - break; - - case AML_DWORD_OP: -- -- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 4); -+ ACPI_MOVE_64_TO_32(&DWord, &Op->Asl.Value.Integer); -+ CgLocalWriteAmlData (Op, &DWord, 4); - break; - - case AML_QWORD_OP: -- -- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 8); -+ ACPI_MOVE_64_TO_64(&QWord, &Op->Asl.Value.Integer); -+ CgLocalWriteAmlData (Op, &QWord, 8); - break; - - case AML_STRING_OP: -@@ -421,6 +426,7 @@ CgWriteTableHeader ( - ACPI_PARSE_OBJECT *Op) - { - ACPI_PARSE_OBJECT *Child; -+ UINT32 DWord; - UINT32 CommentLength; - ACPI_COMMENT_NODE *Current; - -@@ -478,7 +484,7 @@ CgWriteTableHeader ( - /* OEM Revision */ - - Child = Child->Asl.Next; -- AslGbl_TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer; -+ ACPI_MOVE_64_TO_32(&AslGbl_TableHeader.OemRevision, &Child->Asl.Value.Integer); - - /* Compiler ID */ - -@@ -486,12 +492,13 @@ CgWriteTableHeader ( - - /* Compiler version */ - -- AslGbl_TableHeader.AslCompilerRevision = ACPI_CA_VERSION; -+ DWord = ACPI_CA_VERSION; -+ ACPI_MOVE_32_TO_32(&AslGbl_TableHeader.AslCompilerRevision, &DWord); - - /* Table length. Checksum zero for now, will rewrite later */ - -- AslGbl_TableHeader.Length = sizeof (ACPI_TABLE_HEADER) + -- Op->Asl.AmlSubtreeLength; -+ DWord = sizeof (ACPI_TABLE_HEADER) + Op->Asl.AmlSubtreeLength; -+ ACPI_MOVE_32_TO_32(&AslGbl_TableHeader.Length, &DWord); - - /* Calculate the comment lengths for this definition block parseOp */ - -@@ -625,7 +632,10 @@ CgWriteNode ( - ACPI_PARSE_OBJECT *Op) - { - ASL_RESOURCE_NODE *Rnode; -- -+ UINT8 Byte; -+ UINT16 Word; -+ UINT32 DWord; -+ UINT64 QWord; - - /* Write all comments here. */ - -@@ -649,13 +659,24 @@ CgWriteNode ( - switch (Op->Asl.AmlOpcode) - { - case AML_RAW_DATA_BYTE: -+ Byte = (UINT8) Op->Asl.Value.Integer; -+ CgLocalWriteAmlData (Op, &Byte, 1); -+ return; -+ - case AML_RAW_DATA_WORD: -- case AML_RAW_DATA_DWORD: -- case AML_RAW_DATA_QWORD: -+ ACPI_MOVE_64_TO_16(&Word, &Op->Asl.Value.Integer); -+ CgLocalWriteAmlData (Op, &Word, 2); -+ return; - -- CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, Op->Asl.AmlLength); -+ case AML_RAW_DATA_DWORD: -+ ACPI_MOVE_64_TO_32(&DWord, &Op->Asl.Value.Integer); -+ CgLocalWriteAmlData (Op, &DWord, 4); - return; - -+ case AML_RAW_DATA_QWORD: -+ ACPI_MOVE_64_TO_64(&QWord, &Op->Asl.Value.Integer); -+ CgLocalWriteAmlData (Op, &QWord, 8); -+ return; - - case AML_RAW_DATA_BUFFER: - -Index: acpica-unix2-20200528/source/compiler/aslopcodes.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslopcodes.c -+++ acpica-unix2-20200528/source/compiler/aslopcodes.c -@@ -485,6 +485,7 @@ OpcDoUnicode ( - UINT32 i; - UINT8 *AsciiString; - UINT16 *UnicodeString; -+ UINT16 UChar; - ACPI_PARSE_OBJECT *BufferLengthOp; - - -@@ -511,7 +512,8 @@ OpcDoUnicode ( - - for (i = 0; i < Count; i++) - { -- UnicodeString[i] = (UINT16) AsciiString[i]; -+ UChar = (UINT16) AsciiString[i]; -+ ACPI_MOVE_16_TO_16(&UnicodeString[i], &UChar); - } - - /* -Index: acpica-unix2-20200528/source/compiler/aslrestype1.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype1.c -+++ acpica-unix2-20200528/source/compiler/aslrestype1.c -@@ -142,6 +142,11 @@ RsDoMemory24Descriptor ( - ACPI_PARSE_OBJECT *LengthOp = NULL; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT16 Minimum = 0; -+ UINT16 Maximum = 0; -+ UINT16 AddressLength = 0; -+ UINT16 Alignment = 0; -+ UINT16 ResourceLength; - UINT32 i; - - -@@ -151,7 +156,8 @@ RsDoMemory24Descriptor ( - - Descriptor = Rnode->Buffer; - Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24; -- Descriptor->Memory24.ResourceLength = 9; -+ ResourceLength = 9; -+ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.ResourceLength, &ResourceLength); - - /* Process all child initialization nodes */ - -@@ -168,7 +174,7 @@ RsDoMemory24Descriptor ( - - case 1: /* Min Address */ - -- Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum)); - MinOp = InitializerOp; -@@ -176,7 +182,7 @@ RsDoMemory24Descriptor ( - - case 2: /* Max Address */ - -- Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum)); - MaxOp = InitializerOp; -@@ -184,14 +190,14 @@ RsDoMemory24Descriptor ( - - case 3: /* Alignment */ - -- Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer; -+ Alignment = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment)); - break; - - case 4: /* Length */ - -- Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength)); - LengthOp = InitializerOp; -@@ -214,12 +220,17 @@ RsDoMemory24Descriptor ( - /* Validate the Min/Max/Len/Align values (Alignment==0 means 64K) */ - - RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY24, -- Descriptor->Memory24.Minimum, -- Descriptor->Memory24.Maximum, -- Descriptor->Memory24.AddressLength, -- Descriptor->Memory24.Alignment, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Alignment, - MinOp, MaxOp, LengthOp, NULL, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.Minimum, &Minimum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.Maximum, &Maximum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.AddressLength, &AddressLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Memory24.Alignment, &Alignment); -+ - return (Rnode); - } - -@@ -248,6 +259,11 @@ RsDoMemory32Descriptor ( - ACPI_PARSE_OBJECT *AlignOp = NULL; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT32 Minimum = 0; -+ UINT32 Maximum = 0; -+ UINT32 AddressLength = 0; -+ UINT32 Alignment = 0; -+ UINT16 ResourceLength; - UINT32 i; - - -@@ -257,7 +273,8 @@ RsDoMemory32Descriptor ( - - Descriptor = Rnode->Buffer; - Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32; -- Descriptor->Memory32.ResourceLength = 17; -+ ResourceLength = 17; -+ ACPI_MOVE_16_TO_16(&Descriptor->Memory32.ResourceLength, &ResourceLength); - - /* Process all child initialization nodes */ - -@@ -274,7 +291,7 @@ RsDoMemory32Descriptor ( - - case 1: /* Min Address */ - -- Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum)); - MinOp = InitializerOp; -@@ -282,7 +299,7 @@ RsDoMemory32Descriptor ( - - case 2: /* Max Address */ - -- Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum)); - MaxOp = InitializerOp; -@@ -290,7 +307,7 @@ RsDoMemory32Descriptor ( - - case 3: /* Alignment */ - -- Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer; -+ Alignment = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment)); - AlignOp = InitializerOp; -@@ -298,7 +315,7 @@ RsDoMemory32Descriptor ( - - case 4: /* Length */ - -- Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength)); - LengthOp = InitializerOp; -@@ -321,12 +338,17 @@ RsDoMemory32Descriptor ( - /* Validate the Min/Max/Len/Align values */ - - RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY32, -- Descriptor->Memory32.Minimum, -- Descriptor->Memory32.Maximum, -- Descriptor->Memory32.AddressLength, -- Descriptor->Memory32.Alignment, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Alignment, - MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.Minimum, &Minimum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.Maximum, &Maximum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.AddressLength, &AddressLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Memory32.Alignment, &Alignment); -+ - return (Rnode); - } - -@@ -351,6 +373,7 @@ RsDoMemory32FixedDescriptor ( - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT16 ResourceLength; - UINT32 i; - - -@@ -360,7 +383,8 @@ RsDoMemory32FixedDescriptor ( - - Descriptor = Rnode->Buffer; - Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32; -- Descriptor->FixedMemory32.ResourceLength = 9; -+ ResourceLength = 9; -+ ACPI_MOVE_16_TO_16(&Descriptor->FixedMemory32.ResourceLength, &ResourceLength); - - /* Process all child initialization nodes */ - -@@ -377,14 +401,16 @@ RsDoMemory32FixedDescriptor ( - - case 1: /* Address */ - -- Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer; -+ ACPI_MOVE_64_TO_32(&Descriptor->FixedMemory32.Address, -+ &InitializerOp->Asl.Value.Integer); - RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address)); - break; - - case 2: /* Length */ - -- Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; -+ ACPI_MOVE_64_TO_32(&Descriptor->FixedMemory32.AddressLength, -+ &InitializerOp->Asl.Value.Integer); - RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength)); - break; -Index: acpica-unix2-20200528/source/compiler/aslrestype1i.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype1i.c -+++ acpica-unix2-20200528/source/compiler/aslrestype1i.c -@@ -198,6 +198,8 @@ RsDoFixedDmaDescriptor ( - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT16 RequestLines = 0; -+ UINT16 Channels = 0; - UINT32 i; - - -@@ -217,14 +219,14 @@ RsDoFixedDmaDescriptor ( - { - case 0: /* DMA Request Lines [WORD] (_DMA) */ - -- Descriptor->FixedDma.RequestLines = (UINT16) InitializerOp->Asl.Value.Integer; -+ RequestLines = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_DMA, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.RequestLines)); - break; - - case 1: /* DMA Channel [WORD] (_TYP) */ - -- Descriptor->FixedDma.Channels = (UINT16) InitializerOp->Asl.Value.Integer; -+ Channels = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels)); - break; -@@ -249,6 +251,9 @@ RsDoFixedDmaDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -+ ACPI_MOVE_16_TO_16(&Descriptor->FixedDma.RequestLines, &RequestLines); -+ ACPI_MOVE_16_TO_16(&Descriptor->FixedDma.Channels, &Channels); -+ - return (Rnode); - } - -@@ -274,6 +279,7 @@ RsDoFixedIoDescriptor ( - ACPI_PARSE_OBJECT *AddressOp = NULL; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT16 Address = 0; - UINT32 i; - - -@@ -293,8 +299,7 @@ RsDoFixedIoDescriptor ( - { - case 0: /* Base Address */ - -- Descriptor->FixedIo.Address = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Address = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address)); - AddressOp = InitializerOp; -@@ -324,11 +329,13 @@ RsDoFixedIoDescriptor ( - - /* Error checks */ - -- if (Descriptor->FixedIo.Address > 0x03FF) -+ if (Address > 0x03FF) - { - AslError (ASL_WARNING, ASL_MSG_ISA_ADDRESS, AddressOp, NULL); - } - -+ ACPI_MOVE_16_TO_16(&Descriptor->FixedIo.Address, &Address); -+ - return (Rnode); - } - -@@ -357,6 +364,8 @@ RsDoIoDescriptor ( - ACPI_PARSE_OBJECT *AlignOp = NULL; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT16 Minimum = 0; -+ UINT16 Maximum = 0; - UINT32 i; - - -@@ -383,8 +392,7 @@ RsDoIoDescriptor ( - - case 1: /* Min Address */ - -- Descriptor->Io.Minimum = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum)); - MinOp = InitializerOp; -@@ -392,8 +400,7 @@ RsDoIoDescriptor ( - - case 2: /* Max Address */ - -- Descriptor->Io.Maximum = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum)); - MaxOp = InitializerOp; -@@ -434,12 +441,15 @@ RsDoIoDescriptor ( - /* Validate the Min/Max/Len/Align values */ - - RsSmallAddressCheck (ACPI_RESOURCE_NAME_IO, -- Descriptor->Io.Minimum, -- Descriptor->Io.Maximum, -+ Minimum, -+ Maximum, - Descriptor->Io.AddressLength, - Descriptor->Io.Alignment, - MinOp, MaxOp, LengthOp, AlignOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Io.Minimum, &Minimum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Io.Maximum, &Maximum); -+ - return (Rnode); - } - -@@ -559,9 +569,9 @@ RsDoIrqDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -- /* Now we can set the channel mask */ -+ /* Now we can set the interrupt mask */ - -- Descriptor->Irq.IrqMask = IrqMask; -+ ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask); - return (Rnode); - } - -@@ -660,6 +670,6 @@ RsDoIrqNoFlagsDescriptor ( - - /* Now we can set the interrupt mask */ - -- Descriptor->Irq.IrqMask = IrqMask; -+ ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask); - return (Rnode); - } -Index: acpica-unix2-20200528/source/compiler/aslrestype2.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype2.c -+++ acpica-unix2-20200528/source/compiler/aslrestype2.c -@@ -76,6 +76,7 @@ RsDoGeneralRegisterDescriptor ( - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; - UINT32 CurrentByteOffset; -+ UINT16 ResourceLength; - UINT32 i; - - -@@ -85,7 +86,9 @@ RsDoGeneralRegisterDescriptor ( - - Descriptor = Rnode->Buffer; - Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER; -- Descriptor->GenericReg.ResourceLength = 12; -+ ResourceLength = 12; -+ ACPI_MOVE_16_TO_16(&Descriptor->GenericReg.ResourceLength, -+ &ResourceLength); - - /* Process all child initialization nodes */ - -@@ -95,35 +98,52 @@ RsDoGeneralRegisterDescriptor ( - { - case 0: /* Address space */ - -+ /* - Descriptor->GenericReg.AddressSpaceId = (UINT8) InitializerOp->Asl.Value.Integer; -+ */ -+ ACPI_MOVE_64_TO_8(&Descriptor->GenericReg.AddressSpaceId, -+ &InitializerOp->Asl.Value.Integer); - RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESSSPACE, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.AddressSpaceId)); - break; - - case 1: /* Register Bit Width */ - -+ /* - Descriptor->GenericReg.BitWidth = (UINT8) InitializerOp->Asl.Value.Integer; -+ */ -+ ACPI_MOVE_64_TO_8(&Descriptor->GenericReg.BitWidth, -+ &InitializerOp->Asl.Value.Integer); - RsCreateByteField (InitializerOp, ACPI_RESTAG_REGISTERBITWIDTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.BitWidth)); - break; - - case 2: /* Register Bit Offset */ - -+ /* - Descriptor->GenericReg.BitOffset = (UINT8) InitializerOp->Asl.Value.Integer; -+ */ -+ ACPI_MOVE_64_TO_8(&Descriptor->GenericReg.BitOffset, -+ &InitializerOp->Asl.Value.Integer); - RsCreateByteField (InitializerOp, ACPI_RESTAG_REGISTERBITOFFSET, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.BitOffset)); - break; - - case 3: /* Register Address */ - -- Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer; -+ ACPI_MOVE_64_TO_64(&Descriptor->GenericReg.Address, -+ &InitializerOp->Asl.Value.Integer); - RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address)); - break; - - case 4: /* Access Size (ACPI 3.0) */ - -+ /* - Descriptor->GenericReg.AccessSize = (UINT8) InitializerOp->Asl.Value.Integer; -+ */ -+ ACPI_MOVE_64_TO_8(&Descriptor->GenericReg.AccessSize, -+ &InitializerOp->Asl.Value.Integer); - RsCreateByteField (InitializerOp, ACPI_RESTAG_ACCESSSIZE, - CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.AccessSize)); - -@@ -177,6 +197,7 @@ RsDoInterruptDescriptor ( - AML_RESOURCE *Rover = NULL; - ACPI_PARSE_OBJECT *InitializerOp; - ASL_RESOURCE_NODE *Rnode; -+ UINT16 ResourceLength = 0; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; - UINT32 CurrentByteOffset; -@@ -225,7 +246,7 @@ RsDoInterruptDescriptor ( - * Initial descriptor length -- may be enlarged if there are - * optional fields present - */ -- Descriptor->ExtendedIrq.ResourceLength = 2; /* Flags and table length byte */ -+ ResourceLength = 2; /* Flags and table length byte */ - Descriptor->ExtendedIrq.InterruptCount = 0; - - Rover = ACPI_CAST_PTR (AML_RESOURCE, -@@ -333,10 +354,11 @@ RsDoInterruptDescriptor ( - - /* Save the integer and move pointer to the next one */ - -- Rover->DwordItem = (UINT32) InitializerOp->Asl.Value.Integer; -+ ACPI_MOVE_64_TO_32(&Rover->DwordItem, -+ &InitializerOp->Asl.Value.Integer); - Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4); - Descriptor->ExtendedIrq.InterruptCount++; -- Descriptor->ExtendedIrq.ResourceLength += 4; -+ ResourceLength += 4; - - /* Case 7: First interrupt number in list */ - -@@ -372,7 +394,7 @@ RsDoInterruptDescriptor ( - { - Rover->ByteItem = ResSourceIndex; - Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->ByteItem), 1); -- Descriptor->ExtendedIrq.ResourceLength += 1; -+ ResourceLength += 1; - } - - /* Add optional ResSource string if present */ -@@ -381,14 +403,15 @@ RsDoInterruptDescriptor ( - { - strcpy ((char *) Rover, (char *) ResSourceString); - -- Descriptor->ExtendedIrq.ResourceLength = (UINT16) -- (Descriptor->ExtendedIrq.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - } - - Rnode->BufferLength = - (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) - - ASL_RESDESC_OFFSET (ExtendedIrq.DescriptorType)) - + OptionIndex + StringLength; -+ ACPI_MOVE_16_TO_16(&Descriptor->ExtendedIrq.ResourceLength, -+ &ResourceLength); - return (Rnode); - } - -@@ -436,7 +459,7 @@ RsDoVendorLargeDescriptor ( - - Descriptor = Rnode->Buffer; - Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE; -- Descriptor->VendorLarge.ResourceLength = (UINT16) i; -+ ACPI_MOVE_32_TO_16(&Descriptor->VendorLarge.ResourceLength, &i); - - /* Point to end-of-descriptor for vendor data */ - -Index: acpica-unix2-20200528/source/compiler/aslrestype2d.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype2d.c -+++ acpica-unix2-20200528/source/compiler/aslrestype2d.c -@@ -79,7 +79,13 @@ RsDoDwordIoDescriptor ( - ACPI_PARSE_OBJECT *GranOp = NULL; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; - UINT32 OptionIndex = 0; -+ UINT32 Minimum = 0; -+ UINT32 Maximum = 0; -+ UINT32 AddressLength = 0; -+ UINT32 Granularity = 0; -+ UINT32 TranslationOffset = 0; - UINT8 *OptionalFields; - UINT32 CurrentByteOffset; - UINT32 i; -@@ -102,8 +108,7 @@ RsDoDwordIoDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); -- Descriptor->Address32.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS32) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -147,8 +152,7 @@ RsDoDwordIoDescriptor ( - - case 5: /* Address Granularity */ - -- Descriptor->Address32.Granularity = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Granularity = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); - GranOp = InitializerOp; -@@ -156,8 +160,7 @@ RsDoDwordIoDescriptor ( - - case 6: /* Address Min */ - -- Descriptor->Address32.Minimum = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); - MinOp = InitializerOp; -@@ -165,8 +168,7 @@ RsDoDwordIoDescriptor ( - - case 7: /* Address Max */ - -- Descriptor->Address32.Maximum = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); - MaxOp = InitializerOp; -@@ -174,16 +176,14 @@ RsDoDwordIoDescriptor ( - - case 8: /* Translation Offset */ - -- Descriptor->Address32.TranslationOffset = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); - break; - - case 9: /* Address Length */ - -- Descriptor->Address32.AddressLength = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); - LengthOp = InitializerOp; -@@ -197,7 +197,7 @@ RsDoDwordIoDescriptor ( - - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address32.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -211,8 +211,7 @@ RsDoDwordIoDescriptor ( - { - /* Found a valid ResourceSource */ - -- Descriptor->Address32.ResourceLength = (UINT16) -- (Descriptor->Address32.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -272,13 +271,20 @@ RsDoDwordIoDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- (UINT64) Descriptor->Address32.Minimum, -- (UINT64) Descriptor->Address32.Maximum, -- (UINT64) Descriptor->Address32.AddressLength, -- (UINT64) Descriptor->Address32.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address32.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address32.ResourceLength, &ResourceLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Minimum, &Minimum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Maximum, &Maximum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.AddressLength, &AddressLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Granularity, &Granularity); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + - OptionIndex + StringLength; - return (Rnode); -@@ -310,7 +316,13 @@ RsDoDwordMemoryDescriptor ( - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; - UINT32 OptionIndex = 0; -+ UINT32 Minimum = 0; -+ UINT32 Maximum = 0; -+ UINT32 AddressLength = 0; -+ UINT32 Granularity = 0; -+ UINT32 TranslationOffset = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -332,11 +344,9 @@ RsDoDwordMemoryDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); -- Descriptor->Address32.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS32) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - -- - /* Process all child initialization nodes */ - - for (i = 0; InitializerOp; i++) -@@ -385,8 +395,7 @@ RsDoDwordMemoryDescriptor ( - - case 6: /* Address Granularity */ - -- Descriptor->Address32.Granularity = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Granularity = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); - GranOp = InitializerOp; -@@ -394,8 +403,7 @@ RsDoDwordMemoryDescriptor ( - - case 7: /* Min Address */ - -- Descriptor->Address32.Minimum = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); - MinOp = InitializerOp; -@@ -403,8 +411,7 @@ RsDoDwordMemoryDescriptor ( - - case 8: /* Max Address */ - -- Descriptor->Address32.Maximum = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); - MaxOp = InitializerOp; -@@ -412,16 +419,14 @@ RsDoDwordMemoryDescriptor ( - - case 9: /* Translation Offset */ - -- Descriptor->Address32.TranslationOffset = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); - break; - - case 10: /* Address Length */ - -- Descriptor->Address32.AddressLength = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); - LengthOp = InitializerOp; -@@ -433,7 +438,7 @@ RsDoDwordMemoryDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address32.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -445,8 +450,8 @@ RsDoDwordMemoryDescriptor ( - { - if (StringLength) - { -- Descriptor->Address32.ResourceLength = (UINT16) -- (Descriptor->Address32.ResourceLength + StringLength); -+ -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -507,13 +512,20 @@ RsDoDwordMemoryDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- (UINT64) Descriptor->Address32.Minimum, -- (UINT64) Descriptor->Address32.Maximum, -- (UINT64) Descriptor->Address32.AddressLength, -- (UINT64) Descriptor->Address32.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address32.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address32.ResourceLength, &ResourceLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Minimum, &Minimum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Maximum, &Maximum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.AddressLength, &AddressLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Granularity, &Granularity); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + - OptionIndex + StringLength; - return (Rnode); -@@ -545,7 +557,13 @@ RsDoDwordSpaceDescriptor ( - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; - UINT32 OptionIndex = 0; -+ UINT32 Minimum = 0; -+ UINT32 Maximum = 0; -+ UINT32 AddressLength = 0; -+ UINT32 Granularity = 0; -+ UINT32 TranslationOffset = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -566,8 +584,7 @@ RsDoDwordSpaceDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); -- Descriptor->Address32.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS32) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -616,8 +633,7 @@ RsDoDwordSpaceDescriptor ( - - case 6: /* Address Granularity */ - -- Descriptor->Address32.Granularity = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Granularity = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); - GranOp = InitializerOp; -@@ -625,8 +641,7 @@ RsDoDwordSpaceDescriptor ( - - case 7: /* Min Address */ - -- Descriptor->Address32.Minimum = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); - MinOp = InitializerOp; -@@ -634,8 +649,7 @@ RsDoDwordSpaceDescriptor ( - - case 8: /* Max Address */ - -- Descriptor->Address32.Maximum = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); - MaxOp = InitializerOp; -@@ -643,16 +657,14 @@ RsDoDwordSpaceDescriptor ( - - case 9: /* Translation Offset */ - -- Descriptor->Address32.TranslationOffset = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); - break; - - case 10: /* Address Length */ - -- Descriptor->Address32.AddressLength = -- (UINT32) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); - LengthOp = InitializerOp; -@@ -664,7 +676,7 @@ RsDoDwordSpaceDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address32.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -676,8 +688,7 @@ RsDoDwordSpaceDescriptor ( - { - if (StringLength) - { -- Descriptor->Address32.ResourceLength = (UINT16) -- (Descriptor->Address32.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -724,13 +735,20 @@ RsDoDwordSpaceDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- (UINT64) Descriptor->Address32.Minimum, -- (UINT64) Descriptor->Address32.Maximum, -- (UINT64) Descriptor->Address32.AddressLength, -- (UINT64) Descriptor->Address32.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address32.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address32.ResourceLength, &ResourceLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Minimum, &Minimum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Maximum, &Maximum); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.AddressLength, &AddressLength); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.Granularity, &Granularity); -+ ACPI_MOVE_32_TO_32(&Descriptor->Address32.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + - OptionIndex + StringLength; - return (Rnode); -Index: acpica-unix2-20200528/source/compiler/aslrestype2e.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype2e.c -+++ acpica-unix2-20200528/source/compiler/aslrestype2e.c -@@ -78,6 +78,13 @@ RsDoExtendedIoDescriptor ( - ACPI_PARSE_OBJECT *GranOp = NULL; - ASL_RESOURCE_NODE *Rnode; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; -+ UINT64 Minimum = 0; -+ UINT64 Maximum = 0; -+ UINT64 AddressLength = 0; -+ UINT64 Granularity = 0; -+ UINT64 TranslationOffset = 0; -+ UINT64 TypeSpecific = 0; - UINT32 CurrentByteOffset; - UINT32 i; - -@@ -94,9 +101,10 @@ RsDoExtendedIoDescriptor ( - Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; - Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; - -- Descriptor->ExtAddress64.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); -+ ACPI_MOVE_16_TO_16(&Descriptor->ExtAddress64.ResourceLength, -+ &ResourceLength); - - /* Process all child initialization nodes */ - -@@ -139,7 +147,7 @@ RsDoExtendedIoDescriptor ( - - case 5: /* Address Granularity */ - -- Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; -+ Granularity = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); - GranOp = InitializerOp; -@@ -147,7 +155,7 @@ RsDoExtendedIoDescriptor ( - - case 6: /* Address Min */ - -- Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; -+ Minimum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); - MinOp = InitializerOp; -@@ -155,7 +163,7 @@ RsDoExtendedIoDescriptor ( - - case 7: /* Address Max */ - -- Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; -+ Maximum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); - MaxOp = InitializerOp; -@@ -163,14 +171,14 @@ RsDoExtendedIoDescriptor ( - - case 8: /* Translation Offset */ - -- Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; -+ TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); - break; - - case 9: /* Address Length */ - -- Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; -+ AddressLength = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); - LengthOp = InitializerOp; -@@ -178,7 +186,7 @@ RsDoExtendedIoDescriptor ( - - case 10: /* Type-Specific Attributes */ - -- Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; -+ TypeSpecific = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, - CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); - break; -@@ -214,13 +222,20 @@ RsDoExtendedIoDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- Descriptor->ExtAddress64.Minimum, -- Descriptor->ExtAddress64.Maximum, -- Descriptor->ExtAddress64.AddressLength, -- Descriptor->ExtAddress64.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->ExtAddress64.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Minimum, &Minimum); -+ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Maximum, &Maximum); -+ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.AddressLength, &AddressLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.Granularity, &Granularity); -+ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TranslationOffset, &TranslationOffset); -+ ACPI_MOVE_64_TO_64(&Descriptor->ExtAddress64.TypeSpecific, &TypeSpecific); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + - StringLength; - return (Rnode); -Index: acpica-unix2-20200528/source/compiler/aslrestype2q.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype2q.c -+++ acpica-unix2-20200528/source/compiler/aslrestype2q.c -@@ -80,7 +80,13 @@ RsDoQwordIoDescriptor ( - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; - UINT32 OptionIndex = 0; -+ UINT64 Minimum = 0; -+ UINT64 Maximum = 0; -+ UINT64 AddressLength = 0; -+ UINT64 Granularity = 0; -+ UINT64 TranslationOffset = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -102,8 +108,7 @@ RsDoQwordIoDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); -- Descriptor->Address64.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS64) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -147,7 +152,7 @@ RsDoQwordIoDescriptor ( - - case 5: /* Address Granularity */ - -- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; -+ Granularity = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); - GranOp = InitializerOp; -@@ -155,7 +160,7 @@ RsDoQwordIoDescriptor ( - - case 6: /* Address Min */ - -- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; -+ Minimum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); - MinOp = InitializerOp; -@@ -163,7 +168,7 @@ RsDoQwordIoDescriptor ( - - case 7: /* Address Max */ - -- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; -+ Maximum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); - MaxOp = InitializerOp; -@@ -171,14 +176,14 @@ RsDoQwordIoDescriptor ( - - case 8: /* Translation Offset */ - -- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; -+ TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); - break; - - case 9: /* Address Length */ - -- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; -+ AddressLength = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); - LengthOp = InitializerOp; -@@ -190,7 +195,7 @@ RsDoQwordIoDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address64.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -202,8 +207,7 @@ RsDoQwordIoDescriptor ( - { - if (StringLength) - { -- Descriptor->Address64.ResourceLength = (UINT16) -- (Descriptor->Address64.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -263,13 +267,20 @@ RsDoQwordIoDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- Descriptor->Address64.Minimum, -- Descriptor->Address64.Maximum, -- Descriptor->Address64.AddressLength, -- Descriptor->Address64.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address64.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address64.ResourceLength, &ResourceLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Minimum, &Minimum); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Maximum, &Maximum); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.AddressLength, &AddressLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Granularity, &Granularity); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + - OptionIndex + StringLength; - return (Rnode); -@@ -301,7 +312,13 @@ RsDoQwordMemoryDescriptor ( - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; - UINT32 OptionIndex = 0; -+ UINT64 Minimum = 0; -+ UINT64 Maximum = 0; -+ UINT64 AddressLength = 0; -+ UINT64 Granularity = 0; -+ UINT64 TranslationOffset = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -323,8 +340,7 @@ RsDoQwordMemoryDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); -- Descriptor->Address64.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS64) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -375,7 +391,7 @@ RsDoQwordMemoryDescriptor ( - - case 6: /* Address Granularity */ - -- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; -+ Granularity = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); - GranOp = InitializerOp; -@@ -383,7 +399,7 @@ RsDoQwordMemoryDescriptor ( - - case 7: /* Min Address */ - -- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; -+ Minimum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); - MinOp = InitializerOp; -@@ -391,7 +407,7 @@ RsDoQwordMemoryDescriptor ( - - case 8: /* Max Address */ - -- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; -+ Maximum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); - MaxOp = InitializerOp; -@@ -399,14 +415,14 @@ RsDoQwordMemoryDescriptor ( - - case 9: /* Translation Offset */ - -- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; -+ TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); - break; - - case 10: /* Address Length */ - -- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; -+ AddressLength = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); - LengthOp = InitializerOp; -@@ -418,7 +434,7 @@ RsDoQwordMemoryDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address64.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -430,8 +446,7 @@ RsDoQwordMemoryDescriptor ( - { - if (StringLength) - { -- Descriptor->Address64.ResourceLength = (UINT16) -- (Descriptor->Address64.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -492,13 +507,20 @@ RsDoQwordMemoryDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- Descriptor->Address64.Minimum, -- Descriptor->Address64.Maximum, -- Descriptor->Address64.AddressLength, -- Descriptor->Address64.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address64.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address64.ResourceLength, &ResourceLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Minimum, &Minimum); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Maximum, &Maximum); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.AddressLength, &AddressLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Granularity, &Granularity); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + - OptionIndex + StringLength; - return (Rnode); -@@ -530,9 +552,15 @@ RsDoQwordSpaceDescriptor ( - ASL_RESOURCE_NODE *Rnode; - UINT8 *OptionalFields; - UINT16 StringLength = 0; -+ UINT16 ResourceLength = 0; - UINT32 OptionIndex = 0; - UINT32 CurrentByteOffset; - UINT32 i; -+ UINT64 Minimum = 0; -+ UINT64 Maximum = 0; -+ UINT64 AddressLength = 0; -+ UINT64 Granularity = 0; -+ UINT64 TranslationOffset = 0; - BOOLEAN ResSourceIndex = FALSE; - - -@@ -551,8 +579,7 @@ RsDoQwordSpaceDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); -- Descriptor->Address64.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS64) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -601,7 +628,7 @@ RsDoQwordSpaceDescriptor ( - - case 6: /* Address Granularity */ - -- Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; -+ Granularity = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); - GranOp = InitializerOp; -@@ -609,7 +636,7 @@ RsDoQwordSpaceDescriptor ( - - case 7: /* Min Address */ - -- Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; -+ Minimum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); - MinOp = InitializerOp; -@@ -617,7 +644,7 @@ RsDoQwordSpaceDescriptor ( - - case 8: /* Max Address */ - -- Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; -+ Maximum = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); - MaxOp = InitializerOp; -@@ -625,14 +652,14 @@ RsDoQwordSpaceDescriptor ( - - case 9: /* Translation Offset */ - -- Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; -+ TranslationOffset = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); - break; - - case 10: /* Address Length */ - -- Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; -+ AddressLength = InitializerOp->Asl.Value.Integer; - RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); - LengthOp = InitializerOp; -@@ -644,7 +671,7 @@ RsDoQwordSpaceDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address64.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -656,8 +683,7 @@ RsDoQwordSpaceDescriptor ( - { - if (StringLength) - { -- Descriptor->Address64.ResourceLength = (UINT16) -- (Descriptor->Address64.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -703,13 +729,20 @@ RsDoQwordSpaceDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- Descriptor->Address64.Minimum, -- Descriptor->Address64.Maximum, -- Descriptor->Address64.AddressLength, -- Descriptor->Address64.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address64.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address64.ResourceLength, &ResourceLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Minimum, &Minimum); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Maximum, &Maximum); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.AddressLength, &AddressLength); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.Granularity, &Granularity); -+ ACPI_MOVE_64_TO_64(&Descriptor->Address64.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + - OptionIndex + StringLength; - return (Rnode); -Index: acpica-unix2-20200528/source/compiler/aslrestype2s.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype2s.c -+++ acpica-unix2-20200528/source/compiler/aslrestype2s.c -@@ -340,9 +340,14 @@ RsDoGpioIntDescriptor ( - UINT16 VendorLength; - UINT16 InterruptLength; - UINT16 DescriptorSize; -+ UINT16 IntFlags = 0; -+ UINT16 DebounceTimeout = 0; -+ UINT16 Flags = 0; - UINT32 CurrentByteOffset; - UINT32 PinCount = 0; - UINT32 i; -+ UINT16 Tmp16; -+ UINT16 Val16; - - - InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -367,7 +372,7 @@ RsDoGpioIntDescriptor ( - sizeof (AML_RESOURCE_LARGE_HEADER)); - - Descriptor = Rnode->Buffer; -- Descriptor->Gpio.ResourceLength = DescriptorSize; -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.ResourceLength, &DescriptorSize); - Descriptor->Gpio.DescriptorType = ACPI_RESOURCE_NAME_GPIO; - Descriptor->Gpio.RevisionId = AML_RESOURCE_GPIO_REVISION; - Descriptor->Gpio.ConnectionType = AML_RESOURCE_GPIO_TYPE_INT; -@@ -382,11 +387,11 @@ RsDoGpioIntDescriptor ( - - /* Setup offsets within the descriptor */ - -- Descriptor->Gpio.PinTableOffset = (UINT16) -- ACPI_PTR_DIFF (InterruptList, Descriptor); -+ Tmp16 = (UINT16) ACPI_PTR_DIFF (InterruptList, Descriptor); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.PinTableOffset, &Tmp16); - -- Descriptor->Gpio.ResSourceOffset = (UINT16) -- ACPI_PTR_DIFF (ResourceSource, Descriptor); -+ Tmp16 = (UINT16) ACPI_PTR_DIFF (ResourceSource, Descriptor); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.ResSourceOffset, &Tmp16); - - /* Process all child initialization nodes */ - -@@ -396,21 +401,21 @@ RsDoGpioIntDescriptor ( - { - case 0: /* Interrupt Mode - edge/level [Flag] (_MOD) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 0, 0); -+ RsSetFlagBits16 (&IntFlags, InitializerOp, 0, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0); - break; - - case 1: /* Interrupt Polarity - Active high/low [Flags] (_POL) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 1, 0); -+ RsSetFlagBits16 (&IntFlags, InitializerOp, 1, 0); - RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_POLARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 1, 2); - break; - - case 2: /* Share Type - Default: exclusive (0) [Flags] (_SHR) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 3, 0); -+ RsSetFlagBits16 (&IntFlags, InitializerOp, 3, 0); - RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3, 2); - break; -@@ -424,7 +429,7 @@ RsDoGpioIntDescriptor ( - - case 4: /* Debounce Timeout [WORD] (_DBT) */ - -- Descriptor->Gpio.DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer; -+ DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_DEBOUNCETIME, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DebounceTimeout)); - break; -@@ -451,7 +456,7 @@ RsDoGpioIntDescriptor ( - - case 7: /* Resource Usage (consumer/producer) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.Flags, InitializerOp, 0, 1); -+ RsSetFlagBits16 (&Flags, InitializerOp, 0, 1); - break; - - case 8: /* Resource Tag (Descriptor Name) */ -@@ -466,13 +471,14 @@ RsDoGpioIntDescriptor ( - * This field is required in order to calculate the length - * of the ResourceSource at runtime. - */ -- Descriptor->Gpio.VendorOffset = (UINT16) -- ACPI_PTR_DIFF (VendorData, Descriptor); -+ Tmp16 = (UINT16) ACPI_PTR_DIFF (VendorData, Descriptor); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.VendorOffset, &Tmp16); - - if (RsGetVendorData (InitializerOp, VendorData, -- (CurrentByteOffset + Descriptor->Gpio.VendorOffset))) -+ (CurrentByteOffset + Tmp16))) - { -- Descriptor->Gpio.VendorLength = VendorLength; -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.VendorLength, -+ &VendorLength); - } - break; - -@@ -485,7 +491,9 @@ RsDoGpioIntDescriptor ( - * (implies resource source must immediately follow the pin list.) - * Name: _PIN - */ -- *InterruptList = (UINT16) InitializerOp->Asl.Value.Integer; -+ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; -+ ACPI_MOVE_16_TO_16(&Val16, &Tmp16); -+ *InterruptList = Val16; - InterruptList++; - PinCount++; - -@@ -507,8 +515,10 @@ RsDoGpioIntDescriptor ( - - /* Create a named field at the start of the list */ - -- RsCreateWordField (InitializerOp, ACPI_RESTAG_PIN, -- CurrentByteOffset + Descriptor->Gpio.PinTableOffset); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Descriptor->Gpio.PinTableOffset); -+ Tmp16 += CurrentByteOffset; -+ ACPI_MOVE_16_TO_16(&Val16, &Tmp16); -+ RsCreateWordField (InitializerOp, ACPI_RESTAG_PIN, Val16); - } - break; - } -@@ -516,6 +526,10 @@ RsDoGpioIntDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.IntFlags, &IntFlags); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DebounceTimeout, &DebounceTimeout); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.Flags, &Flags); -+ - MpSaveGpioInfo (Info->MappingOp, Descriptor, - PinCount, PinList, ResourceSource); - return (Rnode); -@@ -549,9 +563,15 @@ RsDoGpioIoDescriptor ( - UINT16 VendorLength; - UINT16 InterruptLength; - UINT16 DescriptorSize; -+ UINT16 IntFlags = 0; -+ UINT16 DebounceTimeout = 0; -+ UINT16 DriveStrength = 0; -+ UINT16 Flags = 0; - UINT32 CurrentByteOffset; - UINT32 PinCount = 0; - UINT32 i; -+ UINT16 Tmp16; -+ UINT16 Val16; - - - InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -576,7 +596,7 @@ RsDoGpioIoDescriptor ( - sizeof (AML_RESOURCE_LARGE_HEADER)); - - Descriptor = Rnode->Buffer; -- Descriptor->Gpio.ResourceLength = DescriptorSize; -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.ResourceLength, &DescriptorSize); - Descriptor->Gpio.DescriptorType = ACPI_RESOURCE_NAME_GPIO; - Descriptor->Gpio.RevisionId = AML_RESOURCE_GPIO_REVISION; - Descriptor->Gpio.ConnectionType = AML_RESOURCE_GPIO_TYPE_IO; -@@ -590,11 +610,11 @@ RsDoGpioIoDescriptor ( - - /* Setup offsets within the descriptor */ - -- Descriptor->Gpio.PinTableOffset = (UINT16) -- ACPI_PTR_DIFF (InterruptList, Descriptor); -+ Tmp16 = (UINT16) ACPI_PTR_DIFF (InterruptList, Descriptor); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.PinTableOffset, &Tmp16); - -- Descriptor->Gpio.ResSourceOffset = (UINT16) -- ACPI_PTR_DIFF (ResourceSource, Descriptor); -+ Tmp16 = (UINT16) ACPI_PTR_DIFF (ResourceSource, Descriptor); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.ResSourceOffset, &Tmp16); - - /* Process all child initialization nodes */ - -@@ -604,7 +624,7 @@ RsDoGpioIoDescriptor ( - { - case 0: /* Share Type [Flags] (_SHR) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 3, 0); -+ RsSetFlagBits16 (&IntFlags, InitializerOp, 3, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3); - break; -@@ -618,21 +638,21 @@ RsDoGpioIoDescriptor ( - - case 2: /* Debounce Timeout [WORD] (_DBT) */ - -- Descriptor->Gpio.DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer; -+ DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_DEBOUNCETIME, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DebounceTimeout)); - break; - - case 3: /* Drive Strength [WORD] (_DRS) */ - -- Descriptor->Gpio.DriveStrength = (UINT16) InitializerOp->Asl.Value.Integer; -+ DriveStrength = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_DRIVESTRENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DriveStrength)); - break; - - case 4: /* I/O Restriction [Flag] (_IOR) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 0, 0); -+ RsSetFlagBits16 (&IntFlags, InitializerOp, 0, 0); - RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_IORESTRICTION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0, 2); - break; -@@ -658,7 +678,7 @@ RsDoGpioIoDescriptor ( - - case 7: /* Resource Usage (consumer/producer) */ - -- RsSetFlagBits16 (&Descriptor->Gpio.Flags, InitializerOp, 0, 1); -+ RsSetFlagBits16 (&Flags, InitializerOp, 0, 1); - break; - - case 8: /* Resource Tag (Descriptor Name) */ -@@ -672,13 +692,14 @@ RsDoGpioIoDescriptor ( - * This field is required in order to calculate the length - * of the ResourceSource at runtime. - */ -- Descriptor->Gpio.VendorOffset = (UINT16) -- ACPI_PTR_DIFF (VendorData, Descriptor); -+ Tmp16 = (UINT16) ACPI_PTR_DIFF (VendorData, Descriptor); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.VendorOffset, &Tmp16); - - if (RsGetVendorData (InitializerOp, VendorData, - (CurrentByteOffset + Descriptor->Gpio.VendorOffset))) - { -- Descriptor->Gpio.VendorLength = VendorLength; -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.VendorLength, -+ &VendorLength); - } - break; - -@@ -691,7 +712,9 @@ RsDoGpioIoDescriptor ( - * (implies resource source must immediately follow the pin list.) - * Name: _PIN - */ -- *InterruptList = (UINT16) InitializerOp->Asl.Value.Integer; -+ Tmp16 = (UINT16) InitializerOp->Asl.Value.Integer; -+ ACPI_MOVE_16_TO_16(&Val16, &Tmp16); -+ *InterruptList = Val16; - InterruptList++; - PinCount++; - -@@ -722,6 +745,11 @@ RsDoGpioIoDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.IntFlags, &IntFlags); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DebounceTimeout, &DebounceTimeout); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.DriveStrength, &DriveStrength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Gpio.Flags, &Flags); -+ - MpSaveGpioInfo (Info->MappingOp, Descriptor, - PinCount, PinList, ResourceSource); - return (Rnode); -@@ -752,8 +780,12 @@ RsDoI2cSerialBusDescriptor ( - UINT16 ResSourceLength; - UINT16 VendorLength; - UINT16 DescriptorSize; -+ UINT16 SlaveAddress = 0; -+ UINT32 ConnectionSpeed = 0; -+ UINT16 TypeSpecificFlags = 0; - UINT32 CurrentByteOffset; - UINT32 i; -+ UINT16 Tmp16; - - - InitializerOp = Info->DescriptorTypeOp->Asl.Child; -@@ -776,12 +808,14 @@ RsDoI2cSerialBusDescriptor ( - sizeof (AML_RESOURCE_LARGE_HEADER)); - - Descriptor = Rnode->Buffer; -- Descriptor->I2cSerialBus.ResourceLength = DescriptorSize; -+ ACPI_MOVE_16_TO_16(&Descriptor->I2cSerialBus.ResourceLength, -+ &DescriptorSize); - Descriptor->I2cSerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; - Descriptor->I2cSerialBus.RevisionId = AML_RESOURCE_I2C_REVISION; - Descriptor->I2cSerialBus.TypeRevisionId = AML_RESOURCE_I2C_TYPE_REVISION; - Descriptor->I2cSerialBus.Type = AML_RESOURCE_I2C_SERIALBUSTYPE; -- Descriptor->I2cSerialBus.TypeDataLength = AML_RESOURCE_I2C_MIN_DATA_LEN + VendorLength; -+ Tmp16 = AML_RESOURCE_I2C_MIN_DATA_LEN + VendorLength; -+ ACPI_MOVE_16_TO_16(&Descriptor->I2cSerialBus.TypeDataLength, &Tmp16); - - if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_I2C_SERIALBUS_V2) - { -@@ -801,7 +835,7 @@ RsDoI2cSerialBusDescriptor ( - { - case 0: /* Slave Address [WORD] (_ADR) */ - -- Descriptor->I2cSerialBus.SlaveAddress = (UINT16) InitializerOp->Asl.Value.Integer; -+ SlaveAddress = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress)); - break; -@@ -815,14 +849,14 @@ RsDoI2cSerialBusDescriptor ( - - case 2: /* Connection Speed [DWORD] (_SPE) */ - -- Descriptor->I2cSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; -+ ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, - CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.ConnectionSpeed)); - break; - - case 3: /* Addressing Mode [Flag] (_MOD) */ - -- RsSetFlagBits16 (&Descriptor->I2cSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 0, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.TypeSpecificFlags), 0); - break; -@@ -882,6 +916,9 @@ RsDoI2cSerialBusDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -+ ACPI_MOVE_16_TO_16(&Descriptor->I2cSerialBus.SlaveAddress, &SlaveAddress); -+ ACPI_MOVE_32_TO_32(&Descriptor->I2cSerialBus.ConnectionSpeed, &ConnectionSpeed); -+ ACPI_MOVE_16_TO_16(&Descriptor->I2cSerialBus.TypeSpecificFlags, &TypeSpecificFlags); - MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource); - return (Rnode); - } -@@ -911,6 +948,9 @@ RsDoSpiSerialBusDescriptor ( - UINT16 ResSourceLength; - UINT16 VendorLength; - UINT16 DescriptorSize; -+ UINT16 DeviceSelection = 0; -+ UINT32 ConnectionSpeed = 0; -+ UINT16 TypeSpecificFlags = 0; - UINT32 CurrentByteOffset; - UINT32 i; - -@@ -961,21 +1001,21 @@ RsDoSpiSerialBusDescriptor ( - { - case 0: /* Device Selection [WORD] (_ADR) */ - -- Descriptor->SpiSerialBus.DeviceSelection = (UINT16) InitializerOp->Asl.Value.Integer; -+ DeviceSelection = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.DeviceSelection)); - break; - - case 1: /* Device Polarity [Flag] (_DPL) */ - -- RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 1, 0); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 1, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_DEVICEPOLARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 1); - break; - - case 2: /* Wire Mode [Flag] (_MOD) */ - -- RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 0, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, - CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 0); - break; -@@ -996,7 +1036,7 @@ RsDoSpiSerialBusDescriptor ( - - case 5: /* Connection Speed [DWORD] (_SPE) */ - -- Descriptor->SpiSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; -+ ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, - CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed)); - break; -@@ -1070,6 +1110,10 @@ RsDoSpiSerialBusDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -+ ACPI_MOVE_16_TO_16(&Descriptor->SpiSerialBus.DeviceSelection, &DeviceSelection); -+ ACPI_MOVE_32_TO_32(&Descriptor->SpiSerialBus.ConnectionSpeed, &ConnectionSpeed); -+ ACPI_MOVE_16_TO_16(&Descriptor->SpiSerialBus.TypeSpecificFlags, &TypeSpecificFlags); -+ - MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource); - return (Rnode); - } -@@ -1099,6 +1143,10 @@ RsDoUartSerialBusDescriptor ( - UINT16 ResSourceLength; - UINT16 VendorLength; - UINT16 DescriptorSize; -+ UINT32 DefaultBaudRate = 0; -+ UINT16 TypeSpecificFlags = 0; -+ UINT16 RxFifoSize = 0; -+ UINT16 TxFifoSize = 0; - UINT32 CurrentByteOffset; - UINT32 i; - -@@ -1148,21 +1196,21 @@ RsDoUartSerialBusDescriptor ( - { - case 0: /* Connection Speed (Baud Rate) [DWORD] (_SPE) */ - -- Descriptor->UartSerialBus.DefaultBaudRate = (UINT32) InitializerOp->Asl.Value.Integer; -+ DefaultBaudRate = (UINT32) InitializerOp->Asl.Value.Integer; - RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.DefaultBaudRate)); - break; - - case 1: /* Bits Per Byte [Flags] (_LEN) */ - -- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 4, 3); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 4, 3); - RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 4, 3); - break; - - case 2: /* Stop Bits [Flags] (_STB) */ - -- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 2, 1); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 2, 1); - RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_STOPBITS, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 2, 2); - break; -@@ -1176,7 +1224,7 @@ RsDoUartSerialBusDescriptor ( - - case 4: /* Endianness [Flag] (_END) */ - -- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 7, 0); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 7, 0); - RsCreateBitField (InitializerOp, ACPI_RESTAG_ENDIANNESS, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 7); - break; -@@ -1190,21 +1238,21 @@ RsDoUartSerialBusDescriptor ( - - case 6: /* Flow Control [Flags] (_FLC) */ - -- RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); -+ RsSetFlagBits16 (&TypeSpecificFlags, InitializerOp, 0, 0); - RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_FLOWCONTROL, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 0, 2); - break; - - case 7: /* Rx Buffer Size [WORD] (_RXL) */ - -- Descriptor->UartSerialBus.RxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; -+ RxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_RX, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.RxFifoSize)); - break; - - case 8: /* Tx Buffer Size [WORD] (_TXL) */ - -- Descriptor->UartSerialBus.TxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; -+ TxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX, - CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize)); - break; -@@ -1274,6 +1322,11 @@ RsDoUartSerialBusDescriptor ( - InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); - } - -+ ACPI_MOVE_32_TO_32(&Descriptor->UartSerialBus.DefaultBaudRate, &DefaultBaudRate); -+ ACPI_MOVE_16_TO_16(&Descriptor->UartSerialBus.TypeSpecificFlags, &TypeSpecificFlags); -+ ACPI_MOVE_16_TO_16(&Descriptor->UartSerialBus.RxFifoSize, &RxFifoSize); -+ ACPI_MOVE_16_TO_16(&Descriptor->UartSerialBus.TxFifoSize, &TxFifoSize); -+ - MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource); - return (Rnode); - } -Index: acpica-unix2-20200528/source/compiler/aslrestype2w.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslrestype2w.c -+++ acpica-unix2-20200528/source/compiler/aslrestype2w.c -@@ -81,6 +81,12 @@ RsDoWordIoDescriptor ( - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; -+ UINT16 ResourceLength = 0; -+ UINT16 Minimum = 0; -+ UINT16 Maximum = 0; -+ UINT16 AddressLength = 0; -+ UINT16 Granularity = 0; -+ UINT16 TranslationOffset = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -102,8 +108,7 @@ RsDoWordIoDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); -- Descriptor->Address16.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS16) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -147,7 +152,7 @@ RsDoWordIoDescriptor ( - - case 5: /* Address Granularity */ - -- Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer; -+ Granularity = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); - GranOp = InitializerOp; -@@ -155,7 +160,7 @@ RsDoWordIoDescriptor ( - - case 6: /* Address Min */ - -- Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); - MinOp = InitializerOp; -@@ -163,7 +168,7 @@ RsDoWordIoDescriptor ( - - case 7: /* Address Max */ - -- Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); - MaxOp = InitializerOp; -@@ -171,14 +176,14 @@ RsDoWordIoDescriptor ( - - case 8: /* Translation Offset */ - -- Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; -+ TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); - break; - - case 9: /* Address Length */ - -- Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); - LengthOp = InitializerOp; -@@ -190,7 +195,7 @@ RsDoWordIoDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address16.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -202,8 +207,7 @@ RsDoWordIoDescriptor ( - { - if (StringLength) - { -- Descriptor->Address16.ResourceLength = (UINT16) -- (Descriptor->Address16.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -263,13 +267,20 @@ RsDoWordIoDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- (UINT64) Descriptor->Address16.Minimum, -- (UINT64) Descriptor->Address16.Maximum, -- (UINT64) Descriptor->Address16.AddressLength, -- (UINT64) Descriptor->Address16.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address16.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.ResourceLength, &ResourceLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Minimum, &Minimum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Maximum, &Maximum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.AddressLength, &AddressLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Granularity, &Granularity); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + - OptionIndex + StringLength; - return (Rnode); -@@ -302,6 +313,12 @@ RsDoWordBusNumberDescriptor ( - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; -+ UINT16 ResourceLength = 0; -+ UINT16 Minimum = 0; -+ UINT16 Maximum = 0; -+ UINT16 AddressLength = 0; -+ UINT16 Granularity = 0; -+ UINT16 TranslationOffset = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -323,8 +340,7 @@ RsDoWordBusNumberDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); -- Descriptor->Address16.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS16) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -361,8 +377,7 @@ RsDoWordBusNumberDescriptor ( - - case 4: /* Address Granularity */ - -- Descriptor->Address16.Granularity = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Granularity = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); - GranOp = InitializerOp; -@@ -370,8 +385,7 @@ RsDoWordBusNumberDescriptor ( - - case 5: /* Min Address */ - -- Descriptor->Address16.Minimum = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); - MinOp = InitializerOp; -@@ -379,8 +393,7 @@ RsDoWordBusNumberDescriptor ( - - case 6: /* Max Address */ - -- Descriptor->Address16.Maximum = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); - MaxOp = InitializerOp; -@@ -388,16 +401,14 @@ RsDoWordBusNumberDescriptor ( - - case 7: /* Translation Offset */ - -- Descriptor->Address16.TranslationOffset = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); - break; - - case 8: /* Address Length */ - -- Descriptor->Address16.AddressLength = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); - LengthOp = InitializerOp; -@@ -409,7 +420,7 @@ RsDoWordBusNumberDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address16.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -421,8 +432,7 @@ RsDoWordBusNumberDescriptor ( - { - if (StringLength) - { -- Descriptor->Address16.ResourceLength = (UINT16) -- (Descriptor->Address16.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -468,13 +478,20 @@ RsDoWordBusNumberDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- (UINT64) Descriptor->Address16.Minimum, -- (UINT64) Descriptor->Address16.Maximum, -- (UINT64) Descriptor->Address16.AddressLength, -- (UINT64) Descriptor->Address16.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address16.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.ResourceLength, &ResourceLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Minimum, &Minimum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Maximum, &Maximum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.AddressLength, &AddressLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Granularity, &Granularity); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + - OptionIndex + StringLength; - return (Rnode); -@@ -507,6 +524,12 @@ RsDoWordSpaceDescriptor ( - UINT8 *OptionalFields; - UINT16 StringLength = 0; - UINT32 OptionIndex = 0; -+ UINT16 Minimum = 0; -+ UINT16 Maximum = 0; -+ UINT16 AddressLength = 0; -+ UINT16 Granularity = 0; -+ UINT16 TranslationOffset = 0; -+ UINT16 ResourceLength = 0; - UINT32 CurrentByteOffset; - UINT32 i; - BOOLEAN ResSourceIndex = FALSE; -@@ -527,8 +550,7 @@ RsDoWordSpaceDescriptor ( - * optional fields present - */ - OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); -- Descriptor->Address16.ResourceLength = (UINT16) -- (sizeof (AML_RESOURCE_ADDRESS16) - -+ ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) - - sizeof (AML_RESOURCE_LARGE_HEADER)); - - /* Process all child initialization nodes */ -@@ -577,8 +599,7 @@ RsDoWordSpaceDescriptor ( - - case 6: /* Address Granularity */ - -- Descriptor->Address16.Granularity = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Granularity = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); - GranOp = InitializerOp; -@@ -586,8 +607,7 @@ RsDoWordSpaceDescriptor ( - - case 7: /* Min Address */ - -- Descriptor->Address16.Minimum = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Minimum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); - MinOp = InitializerOp; -@@ -595,8 +615,7 @@ RsDoWordSpaceDescriptor ( - - case 8: /* Max Address */ - -- Descriptor->Address16.Maximum = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ Maximum = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); - MaxOp = InitializerOp; -@@ -604,16 +623,14 @@ RsDoWordSpaceDescriptor ( - - case 9: /* Translation Offset */ - -- Descriptor->Address16.TranslationOffset = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); - break; - - case 10: /* Address Length */ - -- Descriptor->Address16.AddressLength = -- (UINT16) InitializerOp->Asl.Value.Integer; -+ AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; - RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, - CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); - LengthOp = InitializerOp; -@@ -625,7 +642,7 @@ RsDoWordSpaceDescriptor ( - { - OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; - OptionIndex++; -- Descriptor->Address16.ResourceLength++; -+ ResourceLength++; - ResSourceIndex = TRUE; - } - break; -@@ -637,8 +654,7 @@ RsDoWordSpaceDescriptor ( - { - if (StringLength) - { -- Descriptor->Address16.ResourceLength = (UINT16) -- (Descriptor->Address16.ResourceLength + StringLength); -+ ResourceLength = (UINT16) (ResourceLength + StringLength); - - strcpy ((char *) - &OptionalFields[OptionIndex], -@@ -684,13 +700,20 @@ RsDoWordSpaceDescriptor ( - /* Validate the Min/Max/Len/Gran values */ - - RsLargeAddressCheck ( -- (UINT64) Descriptor->Address16.Minimum, -- (UINT64) Descriptor->Address16.Maximum, -- (UINT64) Descriptor->Address16.AddressLength, -- (UINT64) Descriptor->Address16.Granularity, -+ Minimum, -+ Maximum, -+ AddressLength, -+ Granularity, - Descriptor->Address16.Flags, - MinOp, MaxOp, LengthOp, GranOp, Info->DescriptorTypeOp); - -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.ResourceLength, &ResourceLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Minimum, &Minimum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Maximum, &Maximum); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.AddressLength, &AddressLength); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.Granularity, &Granularity); -+ ACPI_MOVE_16_TO_16(&Descriptor->Address16.TranslationOffset, &TranslationOffset); -+ - Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + - OptionIndex + StringLength; - return (Rnode); -Index: acpica-unix2-20200528/source/include/acmacros.h -=================================================================== ---- acpica-unix2-20200528.orig/source/include/acmacros.h -+++ acpica-unix2-20200528/source/include/acmacros.h -@@ -98,9 +98,12 @@ - ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ - ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} - --/* 32-bit source, 16/32/64 destination */ -+/* 32-bit source, 8/16/32/64 destination */ - --#define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ -+#define ACPI_MOVE_32_TO_8(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];} -+ -+#define ACPI_MOVE_32_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\ -+ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];} - - #define ACPI_MOVE_32_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];\ -@@ -113,11 +116,17 @@ - ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ - ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} - --/* 64-bit source, 16/32/64 destination */ -+/* 64-bit source, 8/16/32/64 destination */ - --#define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ -+#define ACPI_MOVE_64_TO_8(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];} - --#define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */ -+#define ACPI_MOVE_64_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\ -+ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];} -+ -+#define ACPI_MOVE_64_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\ -+ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\ -+ (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[5];\ -+ (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[4];} - - #define ACPI_MOVE_64_TO_64(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\ - (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\ -@@ -136,20 +145,26 @@ - - /* The hardware supports unaligned transfers, just do the little-endian move */ - --/* 16-bit source, 16/32/64 destination */ -+/* 16-bit source, 8/16/32/64 destination */ - -+#define ACPI_MOVE_16_TO_8(d, s) *(UINT8 *)(void *)(d) = *(UINT16 *)(void *)(s) - #define ACPI_MOVE_16_TO_16(d, s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s) - #define ACPI_MOVE_16_TO_32(d, s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s) - #define ACPI_MOVE_16_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT16 *)(void *)(s) - --/* 32-bit source, 16/32/64 destination */ -+/* 32-bit source, 8/16/32/64 destination */ -+ -+#define ACPI_MOVE_32_TO_8(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];} -+ -+#define ACPI_MOVE_32_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ -+ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];} - --#define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ - #define ACPI_MOVE_32_TO_32(d, s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s) - #define ACPI_MOVE_32_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT32 *)(void *)(s) - --/* 64-bit source, 16/32/64 destination */ -+/* 64-bit source, 8/16/32/64 destination */ - -+#define ACPI_MOVE_64_TO_8(d, s) ACPI_MOVE_16_TO_8(d, s) /* Truncate to 8 */ - #define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ - #define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */ - #define ACPI_MOVE_64_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT64 *)(void *)(s) -@@ -169,7 +184,9 @@ - #define ACPI_MOVE_16_TO_32(d, s) {(*(UINT32 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s);} - #define ACPI_MOVE_16_TO_64(d, s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s);} - --/* 32-bit source, 16/32/64 destination */ -+/* 32-bit source, 8/16/32/64 destination */ -+ -+#define ACPI_MOVE_32_TO_8(d, s) ACPI_MOVE_16_TO_8(d, s) /* Truncate to 8 */ - - #define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ - -Index: acpica-unix2-20200528/source/include/platform/aclinux.h -=================================================================== ---- acpica-unix2-20200528.orig/source/include/platform/aclinux.h -+++ acpica-unix2-20200528/source/include/platform/aclinux.h -@@ -198,6 +198,7 @@ - - #ifdef ACPI_USE_STANDARD_HEADERS - #include <unistd.h> -+#include <endian.h> - #endif - - /* Define/disable kernel-specific declarators */ -@@ -232,6 +233,10 @@ - #define __cdecl - #endif - -+#if defined(__PPC64__) || defined(__s390x__) -+#define ACPI_BIG_ENDIAN -+#endif -+ - #endif /* __KERNEL__ */ - - #endif /* __ACLINUX_H__ */ -Index: acpica-unix2-20200528/source/compiler/aslanalyze.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslanalyze.c -+++ acpica-unix2-20200528/source/compiler/aslanalyze.c -@@ -469,7 +469,7 @@ ApCheckForGpeNameConflict ( - - /* Need a null-terminated string version of NameSeg */ - -- ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg); -+ ACPI_COPY_NAMESEG (Name, Op->Asl.NameSeg); - Name[ACPI_NAMESEG_SIZE] = 0; - - /* -@@ -496,7 +496,7 @@ ApCheckForGpeNameConflict ( - * We are now sure we have an _Lxx or _Exx. - * Create the target name that would cause collision (Flip E/L) - */ -- ACPI_MOVE_32_TO_32 (Target, Name); -+ ACPI_COPY_NAMESEG (Target, Name); - - /* Inject opposite letter ("L" versus "E") */ - -Index: acpica-unix2-20200528/source/compiler/asllookup.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/asllookup.c -+++ acpica-unix2-20200528/source/compiler/asllookup.c -@@ -119,6 +119,7 @@ LkIsObjectUsed ( - { - ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); - ACPI_NAMESPACE_NODE *Next; -+ ACPI_NAME_UNION tmp, tmp2; - ASL_METHOD_LOCAL *MethodLocals; - ASL_METHOD_LOCAL *MethodArgs; - UINT32 i; -@@ -175,7 +176,8 @@ LkIsObjectUsed ( - * We ignore the predefined methods since often, not - * all arguments are needed or used. - */ -- if ((Node->Name.Ascii[0] != '_') && -+ ACPI_MOVE_32_TO_32(&tmp.Ascii, Node->Name.Ascii); -+ if ((tmp.Ascii[0] != '_') && - (!(MethodArgs[i].Flags & ASL_ARG_REFERENCED))) - { - sprintf (AslGbl_MsgBuffer, "Arg%u", i); -@@ -228,8 +230,10 @@ LkIsObjectUsed ( - * Issue a remark even if it is a reserved name (starts - * with an underscore). - */ -+ ACPI_MOVE_32_TO_32(&tmp.Ascii, Node->Name.Ascii); -+ ACPI_MOVE_32_TO_32(&tmp2.Ascii, Next->Name.Ascii); - sprintf (AslGbl_MsgBuffer, "Name [%4.4s] is within a method [%4.4s]", -- Node->Name.Ascii, Next->Name.Ascii); -+ tmp.Ascii, tmp2.Ascii); - AslError (ASL_REMARK, ASL_MSG_NOT_REFERENCED, - LkGetNameOp (Node->Op), AslGbl_MsgBuffer); - return (AE_OK); -Index: acpica-unix2-20200528/source/compiler/aslmain.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslmain.c -+++ acpica-unix2-20200528/source/compiler/aslmain.c -@@ -101,18 +101,6 @@ main ( - - signal (SIGINT, AslSignalHandler); - -- /* -- * Big-endian machines are not currently supported. ACPI tables must -- * be little-endian, and support for big-endian machines needs to -- * be implemented. -- */ -- if (UtIsBigEndianMachine ()) -- { -- fprintf (stderr, -- "iASL is not currently supported on big-endian machines.\n"); -- return (-1); -- } -- - AcpiOsInitialize (); - ACPI_DEBUG_INITIALIZE (); /* For debug version only */ - -Index: acpica-unix2-20200528/source/common/acfileio.c -=================================================================== ---- acpica-unix2-20200528.orig/source/common/acfileio.c -+++ acpica-unix2-20200528/source/common/acfileio.c -@@ -280,6 +280,7 @@ AcGetOneTableFromFile ( - ACPI_TABLE_HEADER *Table; - INT32 Count; - long TableOffset; -+ UINT32 TableLen; - - - *ReturnTable = NULL; -@@ -319,7 +320,8 @@ AcGetOneTableFromFile ( - - /* Allocate a buffer for the entire table */ - -- Table = AcpiOsAllocate ((ACPI_SIZE) TableHeader.Length); -+ ACPI_MOVE_32_TO_32(&TableLen, &TableHeader.Length); -+ Table = AcpiOsAllocate ((ACPI_SIZE) TableLen); - if (!Table) - { - return (AE_NO_MEMORY); -@@ -329,13 +331,13 @@ AcGetOneTableFromFile ( - - fseek (File, TableOffset, SEEK_SET); - -- Count = fread (Table, 1, TableHeader.Length, File); -+ Count = fread (Table, 1, TableLen, File); - - /* - * Checks for data table headers happen later in the execution. Only verify - * for Aml tables at this point in the code. - */ -- if (GetOnlyAmlTables && Count != (INT32) TableHeader.Length) -+ if (GetOnlyAmlTables && Count != TableLen) - { - Status = AE_ERROR; - goto ErrorExit; -@@ -343,7 +345,7 @@ AcGetOneTableFromFile ( - - /* Validate the checksum (just issue a warning) */ - -- Status = AcpiTbVerifyChecksum (Table, TableHeader.Length); -+ Status = AcpiTbVerifyChecksum (Table, TableLen); - if (ACPI_FAILURE (Status)) - { - Status = AcCheckTextModeCorruption (Table); -@@ -435,6 +437,7 @@ AcValidateTableHeader ( - ACPI_SIZE Actual; - long OriginalOffset; - UINT32 FileSize; -+ UINT32 TableLength; - UINT32 i; - - -@@ -464,11 +467,12 @@ AcValidateTableHeader ( - /* Validate table length against bytes remaining in the file */ - - FileSize = CmGetFileSize (File); -- if (TableHeader.Length > (UINT32) (FileSize - TableOffset)) -+ ACPI_MOVE_32_TO_32(&TableLength, &TableHeader.Length); -+ if (TableLength > (UINT32) (FileSize - TableOffset)) - { - fprintf (stderr, "Table [%4.4s] is too long for file - " - "needs: 0x%.2X, remaining in file: 0x%.2X\n", -- TableHeader.Signature, TableHeader.Length, -+ TableHeader.Signature, TableLength, - (UINT32) (FileSize - TableOffset)); - return (AE_BAD_HEADER); - } -Index: acpica-unix2-20200528/source/common/dmtable.c -=================================================================== ---- acpica-unix2-20200528.orig/source/common/dmtable.c -+++ acpica-unix2-20200528/source/common/dmtable.c -@@ -551,7 +551,7 @@ AcpiDmDumpDataTable ( - */ - if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_FACS)) - { -- Length = Table->Length; -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); - if (ACPI_FAILURE (Status)) - { -@@ -565,13 +565,14 @@ AcpiDmDumpDataTable ( - else if (ACPI_COMPARE_NAMESEG (Table->Signature, ACPI_SIG_S3PT)) - { - Length = AcpiDmDumpS3pt (Table); -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - } - else - { - /* - * All other tables must use the common ACPI table header, dump it now - */ -- Length = Table->Length; -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader); - if (ACPI_FAILURE (Status)) - { -@@ -782,6 +783,7 @@ AcpiDmDumpTable ( - BOOLEAN LastOutputBlankLine = FALSE; - ACPI_STATUS Status; - char RepairedName[8]; -+ UINT16 Val16; - - - if (!Info) -@@ -1178,8 +1180,9 @@ AcpiDmDumpTable ( - /* Checksum, display and validate */ - - AcpiOsPrintf ("%2.2X", *Target); -- Temp8 = AcpiDmGenerateChecksum (Table, -- ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, -+ ACPI_MOVE_32_TO_32(&Temp32, -+ &ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length); -+ Temp8 = AcpiDmGenerateChecksum (Table, Temp32, - ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); - - if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) -@@ -1244,14 +1247,14 @@ AcpiDmDumpTable ( - - /* DMAR subtable types */ - -- Temp16 = ACPI_GET16 (Target); -+ Val16 = ACPI_GET16 (Target); -+ ACPI_MOVE_16_TO_16(&Temp16, &Val16); - if (Temp16 > ACPI_DMAR_TYPE_RESERVED) - { - Temp16 = ACPI_DMAR_TYPE_RESERVED; - } - -- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), -- AcpiDmDmarSubnames[Temp16]); -+ AcpiOsPrintf (UINT16_FORMAT, Temp16, AcpiDmDmarSubnames[Temp16]); - break; - - case ACPI_DMT_DMAR_SCOPE: -@@ -1342,14 +1345,14 @@ AcpiDmDumpTable ( - - /* HEST subtable types */ - -- Temp16 = ACPI_GET16 (Target); -+ Val16 = ACPI_GET16 (Target); -+ ACPI_MOVE_16_TO_16(&Temp16, &Val16); - if (Temp16 > ACPI_HEST_TYPE_RESERVED) - { - Temp16 = ACPI_HEST_TYPE_RESERVED; - } - -- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), -- AcpiDmHestSubnames[Temp16]); -+ AcpiOsPrintf (UINT16_FORMAT, Temp16, AcpiDmHestSubnames[Temp16]); - break; - - case ACPI_DMT_HESTNTFY: -@@ -1429,13 +1432,14 @@ AcpiDmDumpTable ( - - /* NFIT subtable types */ - -- Temp16 = ACPI_GET16 (Target); -+ Val16 = ACPI_GET16 (Target); -+ ACPI_MOVE_16_TO_16(&Temp16, &Val16); - if (Temp16 > ACPI_NFIT_TYPE_RESERVED) - { - Temp16 = ACPI_NFIT_TYPE_RESERVED; - } - -- AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), -+ AcpiOsPrintf (UINT16_FORMAT, Temp16, - AcpiDmNfitSubnames[Temp16]); - break; - -Index: acpica-unix2-20200528/source/common/dmtables.c -=================================================================== ---- acpica-unix2-20200528.orig/source/common/dmtables.c -+++ acpica-unix2-20200528/source/common/dmtables.c -@@ -142,7 +142,9 @@ AdCreateTableHeader ( - ACPI_TABLE_HEADER *Table) - { - UINT8 Checksum; -- -+ UINT32 TableLen; -+ UINT32 OemRev; -+ UINT32 CompilerRev; - - /* Reset globals for External statements */ - -@@ -154,9 +156,10 @@ AdCreateTableHeader ( - */ - AdDisassemblerHeader (Filename, ACPI_IS_AML_TABLE); - -+ ACPI_MOVE_32_TO_32(&TableLen, &Table->Length); - AcpiOsPrintf (" * Original Table Header:\n"); - AcpiOsPrintf (" * Signature "%4.4s"\n", Table->Signature); -- AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); -+ AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", TableLen, TableLen); - - /* Print and validate the revision */ - -@@ -188,7 +191,7 @@ AdCreateTableHeader ( - - AcpiOsPrintf ("\n * Checksum 0x%2.2X", Table->Checksum); - -- Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); -+ Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), TableLen); - if (Checksum) - { - AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", -@@ -198,9 +201,11 @@ AdCreateTableHeader ( - AcpiOsPrintf ("\n"); - AcpiOsPrintf (" * OEM ID "%.6s"\n", Table->OemId); - AcpiOsPrintf (" * OEM Table ID "%.8s"\n", Table->OemTableId); -- AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); -+ ACPI_MOVE_32_TO_32(&OemRev, &Table->OemRevision); -+ AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", OemRev, OemRev); - AcpiOsPrintf (" * Compiler ID "%.4s"\n", Table->AslCompilerId); -- AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); -+ ACPI_MOVE_32_TO_32(&CompilerRev, &Table->AslCompilerRevision); -+ AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", CompilerRev, CompilerRev); - AcpiOsPrintf (" */\n"); - - /* -@@ -221,7 +226,7 @@ AdCreateTableHeader ( - AcpiOsPrintf ( - "DefinitionBlock ("", "%4.4s", %u, "%.6s", "%.8s", 0x%8.8X)\n", - Table->Signature, Table->Revision, -- Table->OemId, Table->OemTableId, Table->OemRevision); -+ Table->OemId, Table->OemTableId, OemRev); - } - - -@@ -396,7 +401,8 @@ AdParseTable ( - - fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); - -- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); -+ ACPI_MOVE_32_TO_32(&AmlLength, &Table->Length); -+ AmlLength -= sizeof (ACPI_TABLE_HEADER); - AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); - - AcpiUtSetIntegerWidth (Table->Revision); -Index: acpica-unix2-20200528/source/compiler/dtfield.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/dtfield.c -+++ acpica-unix2-20200528/source/compiler/dtfield.c -@@ -361,7 +361,27 @@ DtCompileInteger ( - DtError (ASL_ERROR, ASL_MSG_INTEGER_SIZE, Field, AslGbl_MsgBuffer); - } - -- memcpy (Buffer, &Value, ByteLength); -+ switch (ByteLength) { -+ case 1: -+ ACPI_MOVE_64_TO_8(Buffer, &Value); -+ break; -+ -+ case 2: -+ ACPI_MOVE_64_TO_16(Buffer, &Value); -+ break; -+ -+ case 4: -+ ACPI_MOVE_64_TO_32(Buffer, &Value); -+ break; -+ -+ case 8: -+ ACPI_MOVE_64_TO_64(Buffer, &Value); -+ break; -+ -+ default: -+ memcpy (Buffer, &Value, ByteLength); -+ break; -+ } - return; - } - -Index: acpica-unix2-20200528/source/compiler/dtsubtable.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/dtsubtable.c -+++ acpica-unix2-20200528/source/compiler/dtsubtable.c -@@ -378,6 +378,21 @@ DtSetSubtableLength ( - return; - } - -- memcpy (Subtable->LengthField, &Subtable->TotalLength, -- Subtable->SizeOfLengthField); -+ switch(Subtable->SizeOfLengthField) { -+ case 1: -+ ACPI_MOVE_32_TO_8(Subtable->LengthField, &Subtable->TotalLength); -+ break; -+ -+ case 2: -+ ACPI_MOVE_32_TO_16(Subtable->LengthField, &Subtable->TotalLength); -+ break; -+ -+ case 4: -+ ACPI_MOVE_32_TO_32(Subtable->LengthField, &Subtable->TotalLength); -+ break; -+ -+ default: -+ memcpy (Subtable->LengthField, &Subtable->TotalLength, -+ Subtable->SizeOfLengthField); -+ } - } -Index: acpica-unix2-20200528/source/compiler/dttable1.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/dttable1.c -+++ acpica-unix2-20200528/source/compiler/dttable1.c -@@ -281,6 +281,8 @@ DtCompileCsrt ( - DT_FIELD **PFieldList = (DT_FIELD **) List; - UINT32 DescriptorCount; - UINT32 GroupLength; -+ ACPI_CSRT_GROUP *Pgrp; -+ UINT32 Tmp32; - - - /* Subtables (Resource Groups) */ -@@ -299,12 +301,20 @@ DtCompileCsrt ( - - /* Compute the number of resource descriptors */ - -+ /* - GroupLength = - (ACPI_CAST_PTR (ACPI_CSRT_GROUP, - Subtable->Buffer))->Length - - (ACPI_CAST_PTR (ACPI_CSRT_GROUP, - Subtable->Buffer))->SharedInfoLength - - sizeof (ACPI_CSRT_GROUP); -+ */ -+ Pgrp = ACPI_CAST_PTR(ACPI_CSRT_GROUP, Subtable->Buffer); -+ ACPI_MOVE_32_TO_32(&Tmp32, &Pgrp->Length); -+ GroupLength = Tmp32; -+ ACPI_MOVE_32_TO_32(&Tmp32, &Pgrp->SharedInfoLength); -+ GroupLength -= Tmp32; -+ GroupLength -= sizeof (ACPI_CSRT_GROUP); - - DescriptorCount = (GroupLength / - sizeof (ACPI_CSRT_DESCRIPTOR)); -@@ -392,6 +402,8 @@ DtCompileDbg2 ( - ACPI_DBG2_DEVICE *DeviceInfo; - UINT16 CurrentOffset; - UINT32 i; -+ UINT16 Tmp16; -+ UINT32 Tmp32; - - - /* Main table */ -@@ -408,10 +420,11 @@ DtCompileDbg2 ( - /* Main table fields */ - - Dbg2Header = ACPI_CAST_PTR (ACPI_DBG2_HEADER, Subtable->Buffer); -- Dbg2Header->InfoOffset = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF ( -+ Tmp32 = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF ( - ACPI_ADD_PTR (UINT8, Dbg2Header, sizeof (ACPI_DBG2_HEADER)), Dbg2Header); -+ ACPI_MOVE_32_TO_32(&Dbg2Header->InfoOffset, &Tmp32); - -- SubtableCount = Dbg2Header->InfoCount; -+ ACPI_MOVE_32_TO_32(&SubtableCount, &Dbg2Header->InfoCount); - DtPushSubtable (Subtable); - - /* Process all Device Information subtables (Count = InfoCount) */ -@@ -438,7 +451,7 @@ DtCompileDbg2 ( - - /* BaseAddressRegister GAS array (Required, size is RegisterCount) */ - -- DeviceInfo->BaseAddressOffset = CurrentOffset; -+ ACPI_MOVE_16_TO_16(&DeviceInfo->BaseAddressOffset, &CurrentOffset); - for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Addr, -@@ -454,7 +467,7 @@ DtCompileDbg2 ( - - /* AddressSize array (Required, size = RegisterCount) */ - -- DeviceInfo->AddressSizeOffset = CurrentOffset; -+ ACPI_MOVE_16_TO_16(&DeviceInfo->AddressSizeOffset, &CurrentOffset); - for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Size, -@@ -470,7 +483,7 @@ DtCompileDbg2 ( - - /* NamespaceString device identifier (Required, size = NamePathLength) */ - -- DeviceInfo->NamepathOffset = CurrentOffset; -+ ACPI_MOVE_16_TO_16(&DeviceInfo->NamepathOffset, &CurrentOffset); - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Name, - &Subtable); - if (ACPI_FAILURE (Status)) -@@ -480,8 +493,9 @@ DtCompileDbg2 ( - - /* Update the device info header */ - -- DeviceInfo->NamepathLength = (UINT16) Subtable->Length; -- CurrentOffset += (UINT16) DeviceInfo->NamepathLength; -+ ACPI_MOVE_32_TO_16(&DeviceInfo->NamepathLength, &Subtable->Length); -+ ACPI_MOVE_16_TO_16(&Tmp16, &DeviceInfo->NamepathLength); -+ CurrentOffset += Tmp16; - DtInsertSubtable (ParentTable, Subtable); - - /* OemData - Variable-length data (Optional, size = OemDataLength) */ -@@ -508,8 +522,8 @@ DtCompileDbg2 ( - - if (Subtable && Subtable->Length) - { -- DeviceInfo->OemDataOffset = CurrentOffset; -- DeviceInfo->OemDataLength = (UINT16) Subtable->Length; -+ ACPI_MOVE_16_TO_16(&DeviceInfo->OemDataOffset, &CurrentOffset); -+ ACPI_MOVE_32_TO_16(&DeviceInfo->OemDataLength, &Subtable->Length); - - DtInsertSubtable (ParentTable, Subtable); - } -@@ -549,6 +563,8 @@ DtCompileDmar ( - ACPI_DMAR_DEVICE_SCOPE *DmarDeviceScope; - UINT32 DeviceScopeLength; - UINT32 PciPathLength; -+ UINT16 Tmp16; -+ UINT16 HdrType; - - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable); -@@ -578,8 +594,11 @@ DtCompileDmar ( - DtPushSubtable (Subtable); - - DmarHeader = ACPI_CAST_PTR (ACPI_DMAR_HEADER, Subtable->Buffer); -+ ACPI_MOVE_16_TO_16(&Tmp16, &DmarHeader->Length); -+ DmarHeader->Length = Tmp16; - -- switch (DmarHeader->Type) -+ ACPI_MOVE_16_TO_16(&HdrType, &DmarHeader->Type); -+ switch (HdrType) - { - case ACPI_DMAR_TYPE_HARDWARE_UNIT: - -@@ -626,8 +645,8 @@ DtCompileDmar ( - /* - * Optional Device Scope subtables - */ -- if ((DmarHeader->Type == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || -- (DmarHeader->Type == ACPI_DMAR_TYPE_NAMESPACE)) -+ if ((HdrType == ACPI_DMAR_TYPE_HARDWARE_AFFINITY) || -+ (HdrType == ACPI_DMAR_TYPE_NAMESPACE)) - { - /* These types do not support device scopes */ - -@@ -637,7 +656,7 @@ DtCompileDmar ( - - DtPushSubtable (Subtable); - DeviceScopeLength = DmarHeader->Length - Subtable->Length - -- ParentTable->Length; -+ ParentTable->Length; - while (DeviceScopeLength) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarScope, -@@ -762,7 +781,7 @@ DtCompileDrtm ( - Count++; - } - -- DrtmVtl->ValidatedTableCount = Count; -+ ACPI_MOVE_32_TO_32(&DrtmVtl->ValidatedTableCount, &Count); - DtPopSubtable (); - ParentTable = DtPeekSubtable (); - -@@ -800,7 +819,7 @@ DtCompileDrtm ( - Count++; - } - -- DrtmRl->ResourceCount = Count; -+ ACPI_MOVE_32_TO_32(&DrtmRl->ResourceCount, &Count); - DtPopSubtable (); - ParentTable = DtPeekSubtable (); - -@@ -895,6 +914,7 @@ DtCompileGtdt ( - ACPI_DMTABLE_INFO *InfoTable; - UINT32 GtCount; - ACPI_TABLE_HEADER *Header; -+ ACPI_GTDT_TIMER_BLOCK *TimerBlock; - - - ParentTable = DtPeekSubtable (); -@@ -982,8 +1002,9 @@ DtCompileGtdt ( - DtPushSubtable (Subtable); - ParentTable = DtPeekSubtable (); - -- GtCount = (ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, -- Subtable->Buffer - sizeof(ACPI_GTDT_HEADER)))->TimerCount; -+ TimerBlock = ACPI_CAST_PTR (ACPI_GTDT_TIMER_BLOCK, -+ Subtable->Buffer - sizeof(ACPI_GTDT_HEADER)); -+ ACPI_MOVE_32_TO_32(&GtCount, &TimerBlock->TimerCount); - - while (GtCount) - { -@@ -1036,6 +1057,7 @@ DtCompileFpdt ( - ACPI_DMTABLE_INFO *InfoTable; - DT_FIELD **PFieldList = (DT_FIELD **) List; - DT_FIELD *SubtableStart; -+ UINT16 HdrType; - - - while (*PFieldList) -@@ -1054,7 +1076,8 @@ DtCompileFpdt ( - - FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer); - -- switch (FpdtHeader->Type) -+ ACPI_MOVE_16_TO_16(&HdrType, &FpdtHeader->Type); -+ switch (HdrType) - { - case ACPI_FPDT_TYPE_BOOT: - -@@ -1112,6 +1135,7 @@ DtCompileHest ( - ACPI_DMTABLE_INFO *InfoTable; - UINT16 Type; - UINT32 BankCount; -+ UINT16 Tmp16; - - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoHest, -@@ -1129,8 +1153,9 @@ DtCompileHest ( - /* Get subtable type */ - - SubtableStart = *PFieldList; -- DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0); -+ DtCompileInteger ((UINT8 *) &Tmp16, *PFieldList, 2, 0); - -+ ACPI_MOVE_16_TO_16(&Type, &Tmp16); - switch (Type) - { - case ACPI_HEST_TYPE_IA32_CHECK: -@@ -1480,11 +1505,13 @@ DtCompileIort ( - ACPI_IORT_SMMU *IortSmmu; - UINT32 NodeNumber; - UINT32 NodeLength; -+ UINT32 NodeOffset; - UINT32 IdMappingNumber; - UINT32 ItsNumber; - UINT32 ContextIrptNumber; - UINT32 PmuIrptNumber; - UINT32 PaddingLength; -+ UINT32 MappingOffset; - - - ParentTable = DtPeekSubtable (); -@@ -1510,7 +1537,7 @@ DtCompileIort ( - * Optionally allows the generic data types to be used for filling - * this field. - */ -- Iort->NodeOffset = sizeof (ACPI_TABLE_IORT); -+ NodeOffset = sizeof (ACPI_TABLE_IORT); - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIortPad, - &Subtable); - if (ACPI_FAILURE (Status)) -@@ -1520,7 +1547,7 @@ DtCompileIort ( - if (Subtable) - { - DtInsertSubtable (ParentTable, Subtable); -- Iort->NodeOffset += Subtable->Length; -+ NodeOffset += Subtable->Length; - } - else - { -@@ -1530,8 +1557,9 @@ DtCompileIort ( - { - return (Status); - } -- Iort->NodeOffset += PaddingLength; -+ NodeOffset += PaddingLength; - } -+ ACPI_MOVE_32_TO_32(&Iort->NodeOffset, &NodeOffset); - - NodeNumber = 0; - while (*PFieldList) -@@ -1585,7 +1613,7 @@ DtCompileIort ( - ItsNumber++; - } - -- IortItsGroup->ItsCount = ItsNumber; -+ ACPI_MOVE_32_TO_32(&IortItsGroup->ItsCount, &ItsNumber); - break; - - case ACPI_IORT_NODE_NAMED_COMPONENT: -@@ -1619,15 +1647,16 @@ DtCompileIort ( - } - else - { -- if (NodeLength > IortNode->MappingOffset) -+ ACPI_MOVE_32_TO_32(&MappingOffset, &IortNode->MappingOffset); -+ if (NodeLength > MappingOffset) - { - return (AE_BAD_DATA); - } - -- if (NodeLength < IortNode->MappingOffset) -+ if (NodeLength < MappingOffset) - { - Status = DtCompilePadding ( -- IortNode->MappingOffset - NodeLength, -+ MappingOffset - NodeLength, - &Subtable); - if (ACPI_FAILURE (Status)) - { -@@ -1635,7 +1664,8 @@ DtCompileIort ( - } - - DtInsertSubtable (ParentTable, Subtable); -- NodeLength = IortNode->MappingOffset; -+ ACPI_MOVE_32_TO_32(&MappingOffset, &IortNode->MappingOffset); -+ NodeLength = MappingOffset; - } - } - break; -@@ -1668,7 +1698,7 @@ DtCompileIort ( - - /* Compile global interrupt array */ - -- IortSmmu->GlobalInterruptOffset = NodeLength; -+ ACPI_MOVE_32_TO_32(&IortSmmu->GlobalInterruptOffset, &NodeLength); - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3a, - &Subtable); - if (ACPI_FAILURE (Status)) -@@ -1682,7 +1712,7 @@ DtCompileIort ( - /* Compile context interrupt array */ - - ContextIrptNumber = 0; -- IortSmmu->ContextInterruptOffset = NodeLength; -+ ACPI_MOVE_32_TO_32(&IortSmmu->ContextInterruptOffset, &NodeLength); - while (*PFieldList) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3b, -@@ -1702,12 +1732,12 @@ DtCompileIort ( - ContextIrptNumber++; - } - -- IortSmmu->ContextInterruptCount = ContextIrptNumber; -+ ACPI_MOVE_32_TO_32(&IortSmmu->ContextInterruptCount, &ContextIrptNumber); - - /* Compile PMU interrupt array */ - - PmuIrptNumber = 0; -- IortSmmu->PmuInterruptOffset = NodeLength; -+ ACPI_MOVE_32_TO_32(&IortSmmu->PmuInterruptOffset, &NodeLength); - while (*PFieldList) - { - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIort3c, -@@ -1727,7 +1757,7 @@ DtCompileIort ( - PmuIrptNumber++; - } - -- IortSmmu->PmuInterruptCount = PmuIrptNumber; -+ ACPI_MOVE_32_TO_32(&IortSmmu->PmuInterruptCount, &PmuIrptNumber); - break; - - case ACPI_IORT_NODE_SMMU_V3: -@@ -1764,7 +1794,7 @@ DtCompileIort ( - - /* Compile Array of ID mappings */ - -- IortNode->MappingOffset = NodeLength; -+ ACPI_MOVE_32_TO_32(&IortNode->MappingOffset, &NodeLength); - IdMappingNumber = 0; - while (*PFieldList) - { -@@ -1785,7 +1815,7 @@ DtCompileIort ( - IdMappingNumber++; - } - -- IortNode->MappingCount = IdMappingNumber; -+ ACPI_MOVE_32_TO_32(&IortNode->MappingCount, &IdMappingNumber); - if (!IdMappingNumber) - { - IortNode->MappingOffset = 0; -@@ -1800,7 +1830,7 @@ DtCompileIort ( - NodeNumber++; - } - -- Iort->NodeCount = NodeNumber; -+ ACPI_MOVE_32_TO_32(&Iort->NodeCount, &NodeNumber); - return (AE_OK); - } - -Index: acpica-unix2-20200528/source/compiler/dttable2.c -=================================================================== ---- acpica-unix2-20200528.orig/source/compiler/dttable2.c -+++ acpica-unix2-20200528/source/compiler/dttable2.c -@@ -345,7 +345,7 @@ DtCompileMpst ( - DtPushSubtable (Subtable); - - MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer); -- SubtableCount = MpstChannelInfo->PowerNodeCount; -+ ACPI_MOVE_16_TO_16(&SubtableCount, &MpstChannelInfo->PowerNodeCount); - - while (*PFieldList && SubtableCount) - { -@@ -363,8 +363,8 @@ DtCompileMpst ( - DtPushSubtable (Subtable); - - MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer); -- PowerStateCount = MpstPowerNode->NumPowerStates; -- ComponentCount = MpstPowerNode->NumPhysicalComponents; -+ ACPI_MOVE_32_TO_32(&PowerStateCount, &MpstPowerNode->NumPowerStates); -+ ACPI_MOVE_32_TO_32(&ComponentCount, &MpstPowerNode->NumPhysicalComponents); - - ParentTable = DtPeekSubtable (); - -@@ -517,6 +517,7 @@ DtCompileNfit ( - UINT32 Count; - ACPI_NFIT_INTERLEAVE *Interleave = NULL; - ACPI_NFIT_FLUSH_ADDRESS *Hint = NULL; -+ UINT16 SubType; - - - /* Main table */ -@@ -550,7 +551,8 @@ DtCompileNfit ( - - NfitHeader = ACPI_CAST_PTR (ACPI_NFIT_HEADER, Subtable->Buffer); - -- switch (NfitHeader->Type) -+ ACPI_MOVE_16_TO_16(&SubType, &NfitHeader->Type); -+ switch (SubType) - { - case ACPI_NFIT_TYPE_SYSTEM_ADDRESS: - -@@ -610,7 +612,7 @@ DtCompileNfit ( - DtInsertSubtable (ParentTable, Subtable); - DtPopSubtable (); - -- switch (NfitHeader->Type) -+ switch (SubType) - { - case ACPI_NFIT_TYPE_INTERLEAVE: - -@@ -636,7 +638,7 @@ DtCompileNfit ( - Count++; - } - -- Interleave->LineCount = Count; -+ ACPI_MOVE_32_TO_32(&Interleave->LineCount, &Count); - break; - - case ACPI_NFIT_TYPE_SMBIOS: -@@ -681,7 +683,7 @@ DtCompileNfit ( - Count++; - } - -- Hint->HintCount = (UINT16) Count; -+ ACPI_MOVE_32_TO_16(&Hint->HintCount, &Count); - break; - - default: -@@ -957,7 +959,7 @@ DtCompilePmtt ( - - PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER, - (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER))); -- DomainCount = PmttController->DomainCount; -+ ACPI_MOVE_16_TO_16(&DomainCount, &PmttController->DomainCount); - - while (DomainCount) - { -@@ -1177,6 +1179,7 @@ DtCompileS3pt ( - DT_SUBTABLE *ParentTable; - ACPI_DMTABLE_INFO *InfoTable; - DT_FIELD *SubtableStart; -+ UINT16 HdrType; - - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt, -@@ -1204,7 +1207,8 @@ DtCompileS3pt ( - - S3ptHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer); - -- switch (S3ptHeader->Type) -+ ACPI_MOVE_16_TO_16(&HdrType, &S3ptHeader->Type); -+ switch (HdrType) - { - case ACPI_S3PT_TYPE_RESUME: - -@@ -1517,6 +1521,7 @@ DtCompileSlit ( - UINT32 Localities; - UINT32 LocalityListLength; - UINT8 *LocalityBuffer; -+ UINT32 Tmp; - - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlit, -@@ -1529,7 +1534,8 @@ DtCompileSlit ( - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - -- Localities = *ACPI_CAST_PTR (UINT32, Subtable->Buffer); -+ Tmp = *ACPI_CAST_PTR (UINT32, Subtable->Buffer); -+ ACPI_MOVE_32_TO_32(&Localities, &Tmp); - LocalityBuffer = UtLocalCalloc (Localities); - LocalityListLength = 0; - -@@ -1741,6 +1747,7 @@ DtCompileTcpa ( - ACPI_TABLE_TCPA_HDR *TcpaHeader; - DT_SUBTABLE *ParentTable; - ACPI_STATUS Status; -+ UINT16 PlatClass; - - - /* Compile the main table */ -@@ -1761,7 +1768,8 @@ DtCompileTcpa ( - */ - TcpaHeader = ACPI_CAST_PTR (ACPI_TABLE_TCPA_HDR, ParentTable->Buffer); - -- switch (TcpaHeader->PlatformClass) -+ ACPI_MOVE_16_TO_16(&PlatClass, &TcpaHeader->PlatformClass); -+ switch (PlatClass) - { - case ACPI_TCPA_CLIENT_TABLE: - -@@ -1809,6 +1817,7 @@ DtCompileTpm2Rev3 ( - ACPI_TABLE_TPM23 *Tpm23Header; - DT_SUBTABLE *ParentTable; - ACPI_STATUS Status = AE_OK; -+ UINT32 Tmp32; - - - Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm23, -@@ -1820,7 +1829,8 @@ DtCompileTpm2Rev3 ( - - /* Subtable type depends on the StartMethod */ - -- switch (Tpm23Header->StartMethod) -+ ACPI_MOVE_32_TO_32(&Tmp32, &Tpm23Header->StartMethod); -+ switch (Tmp32) - { - case ACPI_TPM23_ACPI_START_METHOD: - -@@ -1867,6 +1877,7 @@ DtCompileTpm2 ( - DT_SUBTABLE *ParentTable; - ACPI_STATUS Status = AE_OK; - ACPI_TABLE_HEADER *Header; -+ UINT32 Tmp32; - - - ParentTable = DtPeekSubtable (); -@@ -1910,7 +1921,8 @@ DtCompileTpm2 ( - - /* Subtable type depends on the StartMethod */ - -- switch (Tpm2Header->StartMethod) -+ ACPI_MOVE_32_TO_32(&Tmp32, &Tpm2Header->StartMethod); -+ switch (Tmp32) - { - case ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC: - -@@ -2126,6 +2138,9 @@ DtCompileWpbt ( - ACPI_TABLE_WPBT *Table; - ACPI_STATUS Status; - UINT16 Length; -+ UINT16 Tmp16; -+ UINT16 *Ptr16; -+ UINT32 ii; - - - /* Compile the main table */ -@@ -2153,7 +2168,16 @@ DtCompileWpbt ( - - Length = (UINT16) Subtable->TotalLength; - Table = ACPI_CAST_PTR (ACPI_TABLE_WPBT, ParentTable->Buffer); -- Table->ArgumentsLength = Length; -+ ACPI_MOVE_16_TO_16(&Table->ArgumentsLength, &Length); -+ -+ /* The arguments are in Unicode, so make sure the byte order is correct */ -+ Ptr16 = (UINT16 *)Subtable->Buffer; -+ for (ii = 0; ii < Length; ii++) -+ { -+ ACPI_MOVE_16_TO_16(&Tmp16, Ptr16); -+ *Ptr16 = Tmp16; -+ Ptr16++; -+ } - - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); -Index: acpica-unix2-20200528/source/components/disassembler/dmbuffer.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/disassembler/dmbuffer.c -+++ acpica-unix2-20200528/source/components/disassembler/dmbuffer.c -@@ -204,7 +204,7 @@ AcpiDmByteList ( - - - ByteData = Op->Named.Data; -- ByteCount = (UINT32) Op->Common.Value.Integer; -+ ByteCount = (UINT32) Op->Common.Value.Size; - - /* - * The byte list belongs to a buffer, and can be produced by either -@@ -308,7 +308,8 @@ AcpiDmIsUuidBuffer ( - /* Extract the byte list info */ - - ByteData = NextOp->Named.Data; -- ByteCount = (UINT32) NextOp->Common.Value.Integer; -+ /* ByteCount = (UINT32) NextOp->Common.Value.Integer; */ -+ ByteCount = (UINT32) NextOp->Common.Value.Size; - - /* Byte count must be exactly 16 */ - -@@ -432,7 +433,8 @@ AcpiDmIsUnicodeBuffer ( - /* Extract the byte list info */ - - ByteData = NextOp->Named.Data; -- ByteCount = (UINT32) NextOp->Common.Value.Integer; -+ /* ByteCount = (UINT32) NextOp->Common.Value.Integer; */ -+ ByteCount = (UINT32) NextOp->Common.Value.Size; - WordCount = ACPI_DIV_2 (ByteCount); - - /* -@@ -869,19 +871,22 @@ AcpiDmUnicode ( - UINT32 WordCount; - UINT32 i; - int OutputValue; -+ UINT16 Tmp16; - - - /* Extract the buffer info as a WORD buffer */ - - WordData = ACPI_CAST_PTR (UINT16, Op->Named.Data); -- WordCount = ACPI_DIV_2 (((UINT32) Op->Common.Value.Integer)); -+ WordCount = ACPI_DIV_2 (((UINT32) Op->Common.Value.Size)); - - /* Write every other byte as an ASCII character */ - - AcpiOsPrintf ("""); - for (i = 0; i < (WordCount - 1); i++) - { -- OutputValue = (int) WordData[i]; -+ /* OutputValue = (int) WordData[i]; */ -+ ACPI_MOVE_16_TO_16(&Tmp16, &WordData[i]); -+ OutputValue = (int) Tmp16; - - /* Handle values that must be escaped */ - -@@ -990,16 +995,18 @@ AcpiDmCheckForHardwareId ( - ACPI_PARSE_OBJECT *Op) - { - UINT32 Name; -+ UINT32 TmpName; - ACPI_PARSE_OBJECT *NextOp; - - - /* Get the NameSegment */ - -- Name = AcpiPsGetName (Op); -- if (!Name) -+ TmpName = AcpiPsGetName (Op); -+ if (!TmpName) - { - return; - } -+ ACPI_MOVE_32_TO_32(&Name, &TmpName); - - NextOp = AcpiPsGetDepthNext (NULL, Op); - if (!NextOp) -Index: acpica-unix2-20200528/source/components/disassembler/dmopcode.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/disassembler/dmopcode.c -+++ acpica-unix2-20200528/source/components/disassembler/dmopcode.c -@@ -244,6 +244,7 @@ AcpiDmPredefinedDescription ( - char *NameString; - int LastCharIsDigit; - int LastCharsAreHex; -+ char TmpName[ACPI_NAMESEG_SIZE + 1]; - - - if (!Op) -@@ -261,7 +262,9 @@ AcpiDmPredefinedDescription ( - - /* Predefined name must start with an underscore */ - -- NameString = ACPI_CAST_PTR (char, &Op->Named.Name); -+ memset(TmpName, 0, ACPI_NAMESEG_SIZE + 1); -+ ACPI_MOVE_32_TO_32(TmpName, &Op->Named.Name); -+ NameString = TmpName; - if (NameString[0] != '_') - { - return; -@@ -880,25 +883,29 @@ AcpiDmDisassembleOneOp ( - AcpiDmNamestring (Op->Common.Value.Name); - break; - -- case AML_INT_NAMEDFIELD_OP: -+ case AML_INT_NAMEDFIELD_OP: { - -- Length = AcpiDmDumpName (Op->Named.Name); -+ UINT32 TmpName; -+ -+ ACPI_MOVE_32_TO_32(&TmpName, &Op->Named.Name); -+ Length = AcpiDmDumpName (TmpName); - - AcpiOsPrintf (","); - ASL_CV_PRINT_ONE_COMMENT (Op, AML_NAMECOMMENT, NULL, 0); - AcpiOsPrintf ("%*.s %u", (unsigned) (5 - Length), " ", -- (UINT32) Op->Common.Value.Integer); -+ (UINT32) Op->Common.Value.Size); - - AcpiDmCommaIfFieldMember (Op); - -- Info->BitOffset += (UINT32) Op->Common.Value.Integer; -+ Info->BitOffset += (UINT32) Op->Common.Value.Size; - break; -+ } - - case AML_INT_RESERVEDFIELD_OP: - - /* Offset() -- Must account for previous offsets */ - -- Offset = (UINT32) Op->Common.Value.Integer; -+ Offset = Op->Common.Value.Size; - Info->BitOffset += Offset; - - if (Info->BitOffset % 8 == 0) -@@ -942,10 +949,15 @@ AcpiDmDisassembleOneOp ( - - if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP) - { -+ /* UINT64 Tmp64; */ -+ - AcpiOsPrintf ("\n"); - - Aml = Child->Named.Data; -+ /* - Length = (UINT32) Child->Common.Value.Integer; -+ */ -+ Length = (UINT32) Child->Common.Value.Size; - - Info->Level += 1; - Info->MappingOp = Op; -Index: acpica-unix2-20200528/source/components/disassembler/dmresrcl.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/disassembler/dmresrcl.c -+++ acpica-unix2-20200528/source/components/disassembler/dmresrcl.c -@@ -141,7 +141,8 @@ AcpiDmMemoryFields ( - UINT32 Level) - { - UINT32 i; -- -+ UINT16 Tmp16; -+ UINT32 Tmp32; - - for (i = 0; i < 4; i++) - { -@@ -151,14 +152,14 @@ AcpiDmMemoryFields ( - { - case 16: - -- AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], -- AcpiDmMemoryNames[i]); -+ ACPI_MOVE_16_TO_16(&Tmp16, &(ACPI_CAST_PTR (UINT16, Source)[i])); -+ AcpiDmDumpInteger16 (Tmp16, AcpiDmMemoryNames[i]); - break; - - case 32: - -- AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], -- AcpiDmMemoryNames[i]); -+ ACPI_MOVE_32_TO_32(&Tmp32, &(ACPI_CAST_PTR (UINT32, Source)[i])); -+ AcpiDmDumpInteger32 (Tmp32, AcpiDmMemoryNames[i]); - break; - - default: -@@ -190,7 +191,9 @@ AcpiDmAddressFields ( - UINT32 Level) - { - UINT32 i; -- -+ UINT16 Tmp16; -+ UINT32 Tmp32; -+ UINT64 Tmp64; - - AcpiOsPrintf ("\n"); - -@@ -202,20 +205,20 @@ AcpiDmAddressFields ( - { - case 16: - -- AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], -- AcpiDmAddressNames[i]); -+ ACPI_MOVE_16_TO_16(&Tmp16, &(ACPI_CAST_PTR (UINT16, Source)[i])); -+ AcpiDmDumpInteger16 (Tmp16, AcpiDmAddressNames[i]); - break; - - case 32: - -- AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], -- AcpiDmAddressNames[i]); -+ ACPI_MOVE_32_TO_32(&Tmp32, &(ACPI_CAST_PTR (UINT32, Source)[i])); -+ AcpiDmDumpInteger32 (Tmp32, AcpiDmAddressNames[i]); - break; - - case 64: - -- AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], -- AcpiDmAddressNames[i]); -+ ACPI_MOVE_64_TO_64(&Tmp64, &(ACPI_CAST_PTR (UINT64, Source)[i])); -+ AcpiDmDumpInteger64 (Tmp64, AcpiDmAddressNames[i]); - break; - - default: -@@ -868,6 +871,7 @@ AcpiDmFixedMemory32Descriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT32 Tmp; - - /* Dump name and read/write flag */ - -@@ -876,12 +880,12 @@ AcpiDmFixedMemory32Descriptor ( - AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); - - AcpiDmIndent (Level + 1); -- AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, -- "Address Base"); -+ ACPI_MOVE_32_TO_32(&Tmp, &Resource->FixedMemory32.Address); -+ AcpiDmDumpInteger32 (Tmp, "Address Base"); - - AcpiDmIndent (Level + 1); -- AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, -- "Address Length"); -+ ACPI_MOVE_32_TO_32(&Tmp, &Resource->FixedMemory32.AddressLength); -+ AcpiDmDumpInteger32 (Tmp, "Address Length"); - - /* Insert a descriptor name */ - -@@ -913,6 +917,7 @@ AcpiDmGenericRegisterDescriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT64 Tmp64; - - AcpiDmIndent (Level); - AcpiOsPrintf ("Register ("); -@@ -926,7 +931,9 @@ AcpiDmGenericRegisterDescriptor ( - AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); - - AcpiDmIndent (Level + 1); -- AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); -+ /* AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); */ -+ ACPI_MOVE_64_TO_64(&Tmp64, &Resource->GenericReg.Address); -+ AcpiDmDumpInteger64 (Tmp64, "Address"); - - /* Optional field for ACPI 3.0 */ - -@@ -972,7 +979,7 @@ AcpiDmInterruptDescriptor ( - UINT32 Level) - { - UINT32 i; -- -+ UINT16 Tmp16; - - AcpiDmIndent (Level); - AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", -@@ -986,10 +993,11 @@ AcpiDmInterruptDescriptor ( - * list. Must compute length based on length of the list. First xrupt - * is included in the struct (reason for -1 below) - */ -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->ExtendedIrq.ResourceLength); - AcpiDmResourceSource (Resource, - sizeof (AML_RESOURCE_EXTENDED_IRQ) + - ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), -- Resource->ExtendedIrq.ResourceLength); -+ Tmp16); - - /* Insert a descriptor name */ - -@@ -1002,9 +1010,12 @@ AcpiDmInterruptDescriptor ( - AcpiOsPrintf ("{\n"); - for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) - { -+ UINT32 Tmp32, Val32; -+ - AcpiDmIndent (Level + 1); -- AcpiOsPrintf ("0x%8.8X,\n", -- (UINT32) Resource->ExtendedIrq.Interrupts[i]); -+ Val32 = (UINT32) Resource->ExtendedIrq.Interrupts[i]; -+ ACPI_MOVE_32_TO_32(&Tmp32, &Val32); -+ AcpiOsPrintf ("0x%8.8X,\n", Tmp32); - } - - AcpiDmIndent (Level); -Index: acpica-unix2-20200528/source/components/disassembler/dmresrcl2.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/disassembler/dmresrcl2.c -+++ acpica-unix2-20200528/source/components/disassembler/dmresrcl2.c -@@ -191,22 +191,24 @@ AcpiDmGpioCommon ( - char *DeviceName = NULL; - UINT32 PinCount; - UINT32 i; -+ UINT16 Tmp16; - - - /* ResourceSource, ResourceSourceIndex, ResourceType */ - - AcpiDmIndent (Level + 1); -- if (Resource->Gpio.ResSourceOffset) -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.ResSourceOffset); -+ if (Tmp16) - { -- DeviceName = ACPI_ADD_PTR (char, -- Resource, Resource->Gpio.ResSourceOffset), -+ DeviceName = ACPI_ADD_PTR (char, Resource, Tmp16), - AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); - } - - AcpiOsPrintf (", "); - AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.ResSourceIndex); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.Flags); - AcpiOsPrintf ("%s, ", -- AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.Flags)]); -+ AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Tmp16)]); - - /* Insert a descriptor name */ - -@@ -215,15 +217,16 @@ AcpiDmGpioCommon ( - - /* Dump the vendor data */ - -- if (Resource->Gpio.VendorOffset) -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.VendorOffset); -+ if (Tmp16) - { - AcpiOsPrintf ("\n"); - AcpiDmIndent (Level + 1); -- VendorData = ACPI_ADD_PTR (UINT8, Resource, -- Resource->Gpio.VendorOffset); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.VendorOffset); -+ VendorData = ACPI_ADD_PTR (UINT8, Resource, Tmp16); - -- AcpiDmDumpRawDataBuffer (VendorData, -- Resource->Gpio.VendorLength, Level); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.VendorLength); -+ AcpiDmDumpRawDataBuffer (VendorData, Tmp16, Level); - } - - AcpiOsPrintf (")\n"); -@@ -233,17 +236,25 @@ AcpiDmGpioCommon ( - AcpiDmIndent (Level + 1); - AcpiOsPrintf ("{ // Pin list\n"); - -+ /* - PinCount = ((UINT32) (Resource->Gpio.ResSourceOffset - - Resource->Gpio.PinTableOffset)) / - sizeof (UINT16); -+ */ -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.ResSourceOffset); -+ PinCount = (UINT32) Tmp16; -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.PinTableOffset); -+ PinCount -= (UINT32) Tmp16; -+ PinCount /= sizeof (UINT16); - -- PinList = (UINT16 *) ACPI_ADD_PTR (char, Resource, -- Resource->Gpio.PinTableOffset); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.PinTableOffset); -+ PinList = (UINT16 *) ACPI_ADD_PTR (char, Resource, Tmp16); - - for (i = 0; i < PinCount; i++) - { - AcpiDmIndent (Level + 2); -- AcpiOsPrintf ("0x%4.4X%s\n", PinList[i], -+ ACPI_MOVE_16_TO_16(&Tmp16, &PinList[i]); -+ AcpiOsPrintf ("0x%4.4X%s\n", Tmp16, - ((i + 1) < PinCount) ? "," : ""); - } - -@@ -277,16 +288,18 @@ AcpiDmGpioIntDescriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT16 Tmp16; - - /* Dump the GpioInt-specific portion of the descriptor */ - - /* EdgeLevel, ActiveLevel, Shared */ - - AcpiDmIndent (Level); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.IntFlags); - AcpiOsPrintf ("GpioInt (%s, %s, %s, ", -- AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.IntFlags)], -- AcpiGbl_LlDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 1)], -- AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); -+ AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Tmp16)], -+ AcpiGbl_LlDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 1)], -+ AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 3)]); - - /* PinConfig, DebounceTimeout */ - -@@ -299,7 +312,8 @@ AcpiDmGpioIntDescriptor ( - { - AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.PinConfig); - } -- AcpiOsPrintf ("0x%4.4X,\n", Resource->Gpio.DebounceTimeout); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.DebounceTimeout); -+ AcpiOsPrintf ("0x%4.4X,\n", Tmp16); - - /* Dump the GpioInt/GpioIo common portion of the descriptor */ - -@@ -329,14 +343,16 @@ AcpiDmGpioIoDescriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT16 Tmp16; - - /* Dump the GpioIo-specific portion of the descriptor */ - - /* Shared, PinConfig */ - - AcpiDmIndent (Level); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.IntFlags); - AcpiOsPrintf ("GpioIo (%s, ", -- AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); -+ AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Tmp16, 3)]); - - if (Resource->Gpio.PinConfig <= 3) - { -@@ -350,10 +366,13 @@ AcpiDmGpioIoDescriptor ( - - /* DebounceTimeout, DriveStrength, IoRestriction */ - -- AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DebounceTimeout); -- AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DriveStrength); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.DebounceTimeout); -+ AcpiOsPrintf ("0x%4.4X, ", Tmp16); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.DriveStrength); -+ AcpiOsPrintf ("0x%4.4X, ", Tmp16); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.IntFlags); - AcpiOsPrintf ("%s,\n", -- AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Resource->Gpio.IntFlags)]); -+ AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Tmp16)]); - - /* Dump the GpioInt/GpioIo common portion of the descriptor */ - -@@ -533,6 +552,7 @@ AcpiDmDumpSerialBusVendorData ( - { - UINT8 *VendorData; - UINT32 VendorLength; -+ UINT16 Tmp16; - - - /* Get the (optional) vendor data and length */ -@@ -541,8 +561,8 @@ AcpiDmDumpSerialBusVendorData ( - { - case AML_RESOURCE_I2C_SERIALBUSTYPE: - -- VendorLength = Resource->CommonSerialBus.TypeDataLength - -- AML_RESOURCE_I2C_MIN_DATA_LEN; -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->CommonSerialBus.TypeDataLength); -+ VendorLength = Tmp16 - AML_RESOURCE_I2C_MIN_DATA_LEN; - - VendorData = ACPI_ADD_PTR (UINT8, Resource, - sizeof (AML_RESOURCE_I2C_SERIALBUS)); -@@ -550,8 +570,8 @@ AcpiDmDumpSerialBusVendorData ( - - case AML_RESOURCE_SPI_SERIALBUSTYPE: - -- VendorLength = Resource->CommonSerialBus.TypeDataLength - -- AML_RESOURCE_SPI_MIN_DATA_LEN; -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->CommonSerialBus.TypeDataLength); -+ VendorLength = Tmp16 - AML_RESOURCE_SPI_MIN_DATA_LEN; - - VendorData = ACPI_ADD_PTR (UINT8, Resource, - sizeof (AML_RESOURCE_SPI_SERIALBUS)); -@@ -559,8 +579,8 @@ AcpiDmDumpSerialBusVendorData ( - - case AML_RESOURCE_UART_SERIALBUSTYPE: - -- VendorLength = Resource->CommonSerialBus.TypeDataLength - -- AML_RESOURCE_UART_MIN_DATA_LEN; -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->CommonSerialBus.TypeDataLength); -+ VendorLength = Tmp16 - AML_RESOURCE_UART_MIN_DATA_LEN; - - VendorData = ACPI_ADD_PTR (UINT8, Resource, - sizeof (AML_RESOURCE_UART_SERIALBUS)); -@@ -601,24 +621,29 @@ AcpiDmI2cSerialBusDescriptor ( - { - UINT32 ResourceSourceOffset; - char *DeviceName; -+ UINT16 Tmp16; -+ UINT32 Tmp32; - - - /* SlaveAddress, SlaveMode, ConnectionSpeed, AddressingMode */ - -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->I2cSerialBus.SlaveAddress); -+ ACPI_MOVE_32_TO_32(&Tmp32, &Resource->I2cSerialBus.ConnectionSpeed); - AcpiDmIndent (Level); - AcpiOsPrintf ("I2cSerialBusV2 (0x%4.4X, %s, 0x%8.8X,\n", -- Resource->I2cSerialBus.SlaveAddress, -+ Tmp16, - AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.Flags)], -- Resource->I2cSerialBus.ConnectionSpeed); -+ Tmp32); - - AcpiDmIndent (Level + 1); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->I2cSerialBus.TypeSpecificFlags); - AcpiOsPrintf ("%s, ", -- AcpiGbl_AmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.TypeSpecificFlags)]); -+ AcpiGbl_AmDecode [ACPI_GET_1BIT_FLAG (Tmp16)]); - - /* ResourceSource is a required field */ - -- ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + -- Resource->CommonSerialBus.TypeDataLength; -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->CommonSerialBus.TypeDataLength); -+ ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + Tmp16; - - DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset); - AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX); -Index: acpica-unix2-20200528/source/components/disassembler/dmresrcs.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/disassembler/dmresrcs.c -+++ acpica-unix2-20200528/source/components/disassembler/dmresrcs.c -@@ -72,6 +72,7 @@ AcpiDmIrqDescriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT16 Tmp; - - AcpiDmIndent (Level); - AcpiOsPrintf ("%s (", -@@ -93,7 +94,8 @@ AcpiDmIrqDescriptor ( - AcpiOsPrintf (")\n"); - - AcpiDmIndent (Level + 1); -- AcpiDmBitList (Resource->Irq.IrqMask); -+ ACPI_MOVE_16_TO_16(&Tmp, &Resource->Irq.IrqMask); -+ AcpiDmBitList (Tmp); - } - - -@@ -204,16 +206,19 @@ AcpiDmIoDescriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT16 Tmp16; - - AcpiDmIndent (Level); - AcpiOsPrintf ("IO (%s,\n", - AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); - - AcpiDmIndent (Level + 1); -- AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Io.Minimum); -+ AcpiDmDumpInteger16 (Tmp16, "Range Minimum"); - - AcpiDmIndent (Level + 1); -- AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Io.Maximum); -+ AcpiDmDumpInteger16 (Tmp16, "Range Maximum"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); -@@ -251,12 +256,14 @@ AcpiDmFixedIoDescriptor ( - UINT32 Length, - UINT32 Level) - { -+ UINT16 Tmp16; - - AcpiDmIndent (Level); - AcpiOsPrintf ("FixedIO (\n"); - - AcpiDmIndent (Level + 1); -- AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); -+ ACPI_MOVE_16_TO_16(&Tmp16, &Resource->FixedIo.Address); -+ AcpiDmDumpInteger16 (Tmp16, "Address"); - - AcpiDmIndent (Level + 1); - AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); -Index: acpica-unix2-20200528/source/components/dispatcher/dsfield.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/dispatcher/dsfield.c -+++ acpica-unix2-20200528/source/components/dispatcher/dsfield.c -@@ -329,6 +329,7 @@ AcpiDsGetFieldNames ( - ACPI_STATUS Status; - UINT64 Position; - ACPI_PARSE_OBJECT *Child; -+ UINT32 TmpName; - - #ifdef ACPI_EXEC_APP - ACPI_OPERAND_OBJECT *ResultDesc; -@@ -442,10 +443,17 @@ AcpiDsGetFieldNames ( - - /* Lookup the name, it should already exist */ - -+ ACPI_MOVE_32_TO_32(&TmpName, &Arg->Named.Name); -+ Status = AcpiNsLookup (WalkState->ScopeInfo, -+ (char *) &TmpName, Info->FieldType, -+ ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, -+ WalkState, &Info->FieldNode); -+ /* - Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Info->FieldType, - ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, - WalkState, &Info->FieldNode); -+ */ - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo, -@@ -703,9 +711,17 @@ AcpiDsInitFieldObjects ( - */ - if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) - { -+ UINT32 TmpName; -+ -+ ACPI_MOVE_32_TO_32(&TmpName, &Arg->Named.Name); -+ Status = AcpiNsLookup (WalkState->ScopeInfo, -+ (char *) &TmpName, Type, ACPI_IMODE_LOAD_PASS1, -+ Flags, WalkState, &Node); -+ /* - Status = AcpiNsLookup (WalkState->ScopeInfo, - (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, - Flags, WalkState, &Node); -+ */ - if (ACPI_FAILURE (Status)) - { - ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo, -Index: acpica-unix2-20200528/source/components/events/evgpeblk.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/events/evgpeblk.c -+++ acpica-unix2-20200528/source/components/events/evgpeblk.c -@@ -380,6 +380,7 @@ AcpiEvCreateGpeBlock ( - ACPI_STATUS Status; - ACPI_GPE_BLOCK_INFO *GpeBlock; - ACPI_GPE_WALK_INFO WalkInfo; -+ char Name[ACPI_NAMESEG_SIZE + 1]; - - - ACPI_FUNCTION_TRACE (EvCreateGpeBlock); -@@ -400,7 +401,7 @@ AcpiEvCreateGpeBlock ( - - /* Initialize the new GPE block */ - -- GpeBlock->Address = Address; -+ ACPI_MOVE_64_TO_64(&GpeBlock->Address, &Address); - GpeBlock->SpaceId = SpaceId; - GpeBlock->Node = GpeDevice; - GpeBlock->GpeCount = (UINT16) (RegisterCount * ACPI_GPE_REGISTER_WIDTH); -@@ -449,11 +450,13 @@ AcpiEvCreateGpeBlock ( - (*ReturnGpeBlock) = GpeBlock; - } - -+ memset(&Name, 0, ACPI_NAMESEG_SIZE + 1); -+ ACPI_MOVE_32_TO_32(&Name, &GpeDevice->Name.Ascii); - ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, - " Initialized GPE %02X to %02X [%4.4s] %u regs on interrupt 0x%X%s\n", - (UINT32) GpeBlock->BlockBaseNumber, - (UINT32) (GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1)), -- GpeDevice->Name.Ascii, GpeBlock->RegisterCount, InterruptNumber, -+ Name, GpeBlock->RegisterCount, InterruptNumber, - InterruptNumber == AcpiGbl_FADT.SciInterrupt ? " (SCI)" : "")); - - /* Update global count of currently available GPEs */ -Index: acpica-unix2-20200528/source/components/hardware/hwregs.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/hardware/hwregs.c -+++ acpica-unix2-20200528/source/components/hardware/hwregs.c -@@ -197,7 +197,7 @@ AcpiHwValidateRegister ( - * Address must not be null. A null address also indicates an optional - * ACPI register that is not supported, so no error message. - */ -- ACPI_MOVE_64_TO_64 (Address, &Reg->Address); -+ *Address = Reg->Address; - if (!(*Address)) - { - return (AE_BAD_ADDRESS); -Index: acpica-unix2-20200528/source/components/hardware/hwvalid.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/hardware/hwvalid.c -+++ acpica-unix2-20200528/source/components/hardware/hwvalid.c -@@ -135,6 +135,8 @@ AcpiHwValidateIoRequest ( - UINT32 ByteWidth; - ACPI_IO_ADDRESS LastAddress; - const ACPI_PORT_INFO *PortInfo; -+ UINT64 Max16; -+ UINT64 Tmp64; - - - ACPI_FUNCTION_TRACE (HwValidateIoRequest); -@@ -162,7 +164,10 @@ AcpiHwValidateIoRequest ( - - /* Maximum 16-bit address in I/O space */ - -- if (LastAddress > ACPI_UINT16_MAX) -+ Max16 = (UINT64) ACPI_UINT16_MAX; -+ ACPI_MOVE_64_TO_64(&Tmp64, &Max16); -+ -+ if ((UINT64)LastAddress > Tmp64) - { - ACPI_ERROR ((AE_INFO, - "Illegal I/O port address/length above 64K: %8.8X%8.8X/0x%X", -Index: acpica-unix2-20200528/source/components/namespace/nsaccess.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/namespace/nsaccess.c -+++ acpica-unix2-20200528/source/components/namespace/nsaccess.c -@@ -349,6 +349,7 @@ AcpiNsLookup ( - UINT32 SearchParentFlag = ACPI_NS_SEARCH_PARENT; - UINT32 LocalFlags; - ACPI_INTERPRETER_MODE LocalInterpreterMode; -+ UINT32 Tmp32; - - - ACPI_FUNCTION_TRACE (NsLookup); -@@ -758,9 +759,10 @@ AcpiNsLookup ( - { - /* Complain about a type mismatch */ - -+ ACPI_MOVE_32_TO_32(&Tmp32, &SimpleName); - ACPI_WARNING ((AE_INFO, - "NsLookup: Type mismatch on %4.4s (%s), searching for (%s)", -- ACPI_CAST_PTR (char, &SimpleName), -+ ACPI_CAST_PTR (char, &Tmp32), - AcpiUtGetTypeName (ThisNode->Type), - AcpiUtGetTypeName (TypeToCheckFor))); - } -Index: acpica-unix2-20200528/source/components/namespace/nsparse.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/namespace/nsparse.c -+++ acpica-unix2-20200528/source/components/namespace/nsparse.c -@@ -216,13 +216,14 @@ AcpiNsOneCompleteParse ( - - /* Table must consist of at least a complete header */ - -- if (Table->Length < sizeof (ACPI_TABLE_HEADER)) -+ ACPI_MOVE_32_TO_32(&AmlLength, &Table->Length); -+ if (AmlLength < sizeof (ACPI_TABLE_HEADER)) - { - return_ACPI_STATUS (AE_BAD_HEADER); - } - - AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER); -- AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); -+ AmlLength -= sizeof (ACPI_TABLE_HEADER); - - Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); - if (ACPI_FAILURE (Status)) -Index: acpica-unix2-20200528/source/components/tables/tbdata.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbdata.c -+++ acpica-unix2-20200528/source/components/tables/tbdata.c -@@ -552,6 +552,7 @@ AcpiTbVerifyTempTable ( - UINT32 *TableIndex) - { - ACPI_STATUS Status = AE_OK; -+ UINT32 Length; - - - ACPI_FUNCTION_TRACE (TbVerifyTempTable); -@@ -581,7 +582,8 @@ AcpiTbVerifyTempTable ( - { - /* Verify the checksum */ - -- Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length); -+ ACPI_MOVE_32_TO_32(&Length, &TableDesc->Length); -+ Status = AcpiTbVerifyChecksum (TableDesc->Pointer, Length); - if (ACPI_FAILURE (Status)) - { - ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY, -Index: acpica-unix2-20200528/source/components/tables/tbfadt.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbfadt.c -+++ acpica-unix2-20200528/source/components/tables/tbfadt.c -@@ -424,18 +424,20 @@ AcpiTbCreateLocalFadt ( - ACPI_TABLE_HEADER *Table, - UINT32 Length) - { -+ UINT32 Tmp32; - - /* - * Check if the FADT is larger than the largest table that we expect - * (typically the current ACPI specification version). If so, truncate - * the table, and issue a warning. - */ -- if (Length > sizeof (ACPI_TABLE_FADT)) -+ ACPI_MOVE_32_TO_32(&Tmp32, &Length); -+ if (Tmp32 > sizeof (ACPI_TABLE_FADT)) - { - ACPI_BIOS_WARNING ((AE_INFO, - "FADT (revision %u) is longer than %s length, " - "truncating length %u to %u", -- Table->Revision, ACPI_FADT_CONFORMANCE, Length, -+ Table->Revision, ACPI_FADT_CONFORMANCE, Tmp32, - (UINT32) sizeof (ACPI_TABLE_FADT))); - } - -@@ -446,7 +448,7 @@ AcpiTbCreateLocalFadt ( - /* Copy the original FADT, up to sizeof (ACPI_TABLE_FADT) */ - - memcpy (&AcpiGbl_FADT, Table, -- ACPI_MIN (Length, sizeof (ACPI_TABLE_FADT))); -+ ACPI_MIN (Tmp32, sizeof (ACPI_TABLE_FADT))); - - /* Take a copy of the Hardware Reduced flag */ - -@@ -520,6 +522,8 @@ AcpiTbConvertFadt ( - UINT8 Length; - UINT8 Flags; - UINT32 i; -+ UINT32 Tmp32; -+ UINT64 Tmp64; - - - /* -@@ -533,7 +537,8 @@ AcpiTbConvertFadt ( - * Note: The FADT revision value is unreliable. Only the length can be - * trusted. - */ -- if (AcpiGbl_FADT.Header.Length <= ACPI_FADT_V2_SIZE) -+ ACPI_MOVE_32_TO_32(&Tmp32, &AcpiGbl_FADT.Header.Length); -+ if (Tmp32 <= ACPI_FADT_V2_SIZE) - { - AcpiGbl_FADT.PreferredProfile = 0; - AcpiGbl_FADT.PstateControl = 0; -@@ -546,14 +551,15 @@ AcpiTbConvertFadt ( - * current FADT version as defined by the ACPI specification. - * Thus, we will have a common FADT internally. - */ -- AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT); -+ Tmp32 = sizeof (ACPI_TABLE_FADT); -+ ACPI_MOVE_32_TO_32(&AcpiGbl_FADT.Header.Length, &Tmp32); - - /* - * Expand the 32-bit DSDT addresses to 64-bit as necessary. - * Later ACPICA code will always use the X 64-bit field. - */ -- AcpiGbl_FADT.XDsdt = AcpiTbSelectAddress ("DSDT", -- AcpiGbl_FADT.Dsdt, AcpiGbl_FADT.XDsdt); -+ Tmp64 = AcpiTbSelectAddress ("DSDT", AcpiGbl_FADT.Dsdt, AcpiGbl_FADT.XDsdt); -+ ACPI_MOVE_64_TO_64(&AcpiGbl_FADT.XDsdt, &Tmp64); - - /* If Hardware Reduced flag is set, we are all done */ - -@@ -614,7 +620,9 @@ AcpiTbConvertFadt ( - { - if (Address64->Address) - { -- if (Address64->Address != (UINT64) Address32) -+ ACPI_MOVE_32_TO_32(&Tmp32, &Address32); -+ ACPI_MOVE_64_TO_64(&Tmp64, &Address64->Address); -+ if (Tmp64 != (UINT64) Tmp32) - { - /* Address mismatch */ - -@@ -655,9 +663,11 @@ AcpiTbConvertFadt ( - */ - if (!Address64->Address || AcpiGbl_Use32BitFadtAddresses) - { -+ ACPI_MOVE_32_TO_32(&Tmp32, &Address32); /* back to host order */ -+ Tmp64 = (UINT64) Tmp32; /* promote only */ - AcpiTbInitGenericAddress (Address64, - ACPI_ADR_SPACE_SYSTEM_IO, Length, -- (UINT64) Address32, Name, Flags); -+ Tmp64, Name, Flags); - } - } - -@@ -780,10 +790,14 @@ AcpiTbSetupFadtRegisters ( - - if (Source64->Address) - { -+ UINT64 Tmp64, Addr64; -+ -+ ACPI_MOVE_64_TO_64(&Tmp64, &Source64->Address); -+ Tmp64 += (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth); -+ ACPI_MOVE_64_TO_64(&Addr64, &Tmp64); - AcpiTbInitGenericAddress (FadtPmInfoTable[i].Target, - Source64->SpaceId, Pm1RegisterByteWidth, -- Source64->Address + -- (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth), -+ Addr64, - "PmRegisters", 0); - } - } -Index: acpica-unix2-20200528/source/components/tables/tbfind.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbfind.c -+++ acpica-unix2-20200528/source/components/tables/tbfind.c -@@ -108,8 +108,11 @@ AcpiTbFindTable ( - (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); - for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) - { -+ UINT32 Tmp32; -+ -+ ACPI_MOVE_32_TO_32(&Tmp32, &Header.Signature); - if (memcmp (&(AcpiGbl_RootTableList.Tables[i].Signature), -- Header.Signature, ACPI_NAMESEG_SIZE)) -+ &Tmp32, ACPI_NAMESEG_SIZE)) - { - /* Not the requested table */ - -Index: acpica-unix2-20200528/source/components/tables/tbprint.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbprint.c -+++ acpica-unix2-20200528/source/components/tables/tbprint.c -@@ -143,15 +143,18 @@ AcpiTbPrintTableHeader ( - ACPI_TABLE_HEADER *Header) - { - ACPI_TABLE_HEADER LocalHeader; -+ UINT32 Len; -+ UINT32 OemRev; -+ UINT32 CompilerRev; - - - if (ACPI_COMPARE_NAMESEG (Header->Signature, ACPI_SIG_FACS)) - { - /* FACS only has signature and length fields */ - -+ ACPI_MOVE_32_TO_32(&Len, &Header->Length); - ACPI_INFO (("%-4.4s 0x%8.8X%8.8X %06X", -- Header->Signature, ACPI_FORMAT_UINT64 (Address), -- Header->Length)); -+ Header->Signature, ACPI_FORMAT_UINT64 (Address), Len)); - } - else if (ACPI_VALIDATE_RSDP_SIG (Header->Signature)) - { -@@ -174,13 +177,16 @@ AcpiTbPrintTableHeader ( - - AcpiTbCleanupTableHeader (&LocalHeader, Header); - -+ ACPI_MOVE_32_TO_32(&Len, &LocalHeader.Length); -+ ACPI_MOVE_32_TO_32(&OemRev, &LocalHeader.OemRevision); -+ ACPI_MOVE_32_TO_32(&CompilerRev, &LocalHeader.AslCompilerRevision); - ACPI_INFO (( - "%-4.4s 0x%8.8X%8.8X" - " %06X (v%.2d %-6.6s %-8.8s %08X %-4.4s %08X)", - LocalHeader.Signature, ACPI_FORMAT_UINT64 (Address), -- LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId, -- LocalHeader.OemTableId, LocalHeader.OemRevision, -- LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision)); -+ Len, LocalHeader.Revision, LocalHeader.OemId, -+ LocalHeader.OemTableId, OemRev, -+ LocalHeader.AslCompilerId, CompilerRev)); - } - } - -Index: acpica-unix2-20200528/source/components/tables/tbutils.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbutils.c -+++ acpica-unix2-20200528/source/components/tables/tbutils.c -@@ -238,7 +238,7 @@ AcpiTbGetRootTableEntry ( - * 64-bit platform, XSDT: Move (unaligned) 64-bit to local, - * return 64-bit - */ -- ACPI_MOVE_64_TO_64 (&Address64, TableEntry); -+ Address64 = (UINT64) TableEntry; - - #if ACPI_MACHINE_WIDTH == 32 - if (Address64 > ACPI_UINT32_MAX) -@@ -251,7 +251,8 @@ AcpiTbGetRootTableEntry ( - ACPI_FORMAT_UINT64 (Address64))); - } - #endif -- return ((ACPI_PHYSICAL_ADDRESS) (Address64)); -+ return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( -+ UINT64, Address64))); - } - } - -@@ -287,6 +288,7 @@ AcpiTbParseRootTable ( - UINT8 *TableEntry; - ACPI_STATUS Status; - UINT32 TableIndex; -+ UINT32 Tmp32; - - - ACPI_FUNCTION_TRACE (TbParseRootTable); -@@ -345,7 +347,7 @@ AcpiTbParseRootTable ( - * Validate length of the table, and map entire table. - * Minimum length table must contain at least one entry. - */ -- Length = Table->Length; -+ ACPI_MOVE_32_TO_32(&Length, &Table->Length); - AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); - - if (Length < (sizeof (ACPI_TABLE_HEADER) + TableEntrySize)) -@@ -372,7 +374,7 @@ AcpiTbParseRootTable ( - - /* Get the number of entries and pointer to first entry */ - -- TableCount = (UINT32) ((Table->Length - sizeof (ACPI_TABLE_HEADER)) / -+ TableCount = (UINT32) ((Length - sizeof (ACPI_TABLE_HEADER)) / - TableEntrySize); - TableEntry = ACPI_ADD_PTR (UINT8, Table, sizeof (ACPI_TABLE_HEADER)); - -@@ -394,10 +396,10 @@ AcpiTbParseRootTable ( - Status = AcpiTbInstallStandardTable (Address, - ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); - -+ ACPI_MOVE_32_TO_32(&Tmp32, -+ &AcpiGbl_RootTableList.Tables[TableIndex].Signature); - if (ACPI_SUCCESS (Status) && -- ACPI_COMPARE_NAMESEG ( -- &AcpiGbl_RootTableList.Tables[TableIndex].Signature, -- ACPI_SIG_FADT)) -+ ACPI_COMPARE_NAMESEG (&Tmp32, ACPI_SIG_FADT)) - { - AcpiGbl_FadtIndex = TableIndex; - AcpiTbParseFadt (); -Index: acpica-unix2-20200528/source/components/tables/tbxface.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbxface.c -+++ acpica-unix2-20200528/source/components/tables/tbxface.c -@@ -293,8 +293,11 @@ AcpiGetTableHeader ( - - for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) - { -+ UINT32 Tmp32; -+ -+ ACPI_MOVE_32_TO_32(&Tmp32, (UINT32 *)Signature); - if (!ACPI_COMPARE_NAMESEG ( -- &(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) -+ &(AcpiGbl_RootTableList.Tables[i].Signature), &Tmp32)) - { - continue; - } -Index: acpica-unix2-20200528/source/components/tables/tbxfload.c -=================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbxfload.c -+++ acpica-unix2-20200528/source/components/tables/tbxfload.c -@@ -153,6 +153,7 @@ AcpiTbLoadNamespace ( - ACPI_TABLE_DESC *Table; - UINT32 TablesLoaded = 0; - UINT32 TablesFailed = 0; -+ UINT32 Tmp32; - - - ACPI_FUNCTION_TRACE (TbLoadNamespace); -@@ -166,8 +167,9 @@ AcpiTbLoadNamespace ( - */ - Table = &AcpiGbl_RootTableList.Tables[AcpiGbl_DsdtIndex]; - -+ ACPI_MOVE_32_TO_32(&Tmp32, &Table->Signature.Ascii); - if (!AcpiGbl_RootTableList.CurrentTableCount || -- !ACPI_COMPARE_NAMESEG (Table->Signature.Ascii, ACPI_SIG_DSDT) || -+ !ACPI_COMPARE_NAMESEG (&Tmp32, ACPI_SIG_DSDT) || - ACPI_FAILURE (AcpiTbValidateTable (Table))) - { - Status = AE_NO_ACPI_TABLES; -Index: acpica-unix2-20200528/source/tools/acpiexec/aetables.c -=================================================================== ---- acpica-unix2-20200528.orig/source/tools/acpiexec/aetables.c -+++ acpica-unix2-20200528/source/tools/acpiexec/aetables.c -@@ -146,21 +146,25 @@ AeInitializeTableHeader ( - char *Signature, - UINT32 Length) - { -+ UINT16 Tmp16; -+ UINT32 Tmp32; - - ACPI_COPY_NAMESEG (Header->Signature, Signature); -- Header->Length = Length; -+ ACPI_MOVE_32_TO_32(&Header->Length, &Length); - -- Header->OemRevision = 0x1001; -+ Tmp16 = 0x1001; -+ ACPI_MOVE_16_TO_16(&Header->OemRevision, &Tmp16); - memcpy (Header->OemId, "Intel ", ACPI_OEM_ID_SIZE); - memcpy (Header->OemTableId, "AcpiExec", ACPI_OEM_TABLE_ID_SIZE); - ACPI_COPY_NAMESEG (Header->AslCompilerId, "INTL"); -- Header->AslCompilerRevision = ACPI_CA_VERSION; -+ Tmp32 = ACPI_CA_VERSION; -+ ACPI_MOVE_32_TO_32(&Header->AslCompilerRevision, &Tmp32); - - /* Set the checksum, must set to zero first */ - - Header->Checksum = 0; - Header->Checksum = (UINT8) -AcpiTbChecksum ( -- (void *) Header, Header->Length); -+ (void *) Header, Length); - } - - -@@ -188,6 +192,7 @@ AeBuildLocalTables ( - ACPI_NEW_TABLE_DESC *NextTable; - UINT32 NextIndex; - ACPI_TABLE_FADT *ExternalFadt = NULL; -+ UINT32 Tmp32; - - - /* -@@ -374,6 +379,8 @@ AeBuildLocalTables ( - } - else - { -+ UINT64 Tmp64; -+ - /* - * Build a local FADT so we can test the hardware/event init - */ -@@ -385,34 +392,44 @@ AeBuildLocalTables ( - LocalFADT.Facs = 0; - - LocalFADT.XDsdt = DsdtAddress; -- LocalFADT.XFacs = ACPI_PTR_TO_PHYSADDR (&LocalFACS); -+ Tmp64 = ACPI_PTR_TO_PHYSADDR (&LocalFACS); -+ ACPI_MOVE_64_TO_64(&LocalFADT.XFacs, &Tmp64); - - /* Miscellaneous FADT fields */ - - LocalFADT.Gpe0BlockLength = 0x20; -- LocalFADT.Gpe0Block = 0x00003210; -+ Tmp32 = 0x00003210; -+ ACPI_MOVE_32_TO_32(&LocalFADT.Gpe0Block, &Tmp32); - - LocalFADT.Gpe1BlockLength = 0x20; -- LocalFADT.Gpe1Block = 0x0000BA98; -+ Tmp32 = 0x0000BA98; -+ ACPI_MOVE_32_TO_32(&LocalFADT.Gpe1Block, &Tmp32); - LocalFADT.Gpe1Base = 0x80; - - LocalFADT.Pm1EventLength = 4; -- LocalFADT.Pm1aEventBlock = 0x00001aaa; -- LocalFADT.Pm1bEventBlock = 0x00001bbb; -+ Tmp32 = 0x00001aaa; -+ ACPI_MOVE_32_TO_32(&LocalFADT.Pm1aEventBlock, &Tmp32); -+ Tmp32 = 0x00001bbb; -+ ACPI_MOVE_32_TO_32(&LocalFADT.Pm1bEventBlock, &Tmp32); - - LocalFADT.Pm1ControlLength = 2; -- LocalFADT.Pm1aControlBlock = 0xB0; -+ Tmp32 = 0xB0; -+ ACPI_MOVE_32_TO_32(&LocalFADT.Pm1aControlBlock, &Tmp32); - - LocalFADT.PmTimerLength = 4; -- LocalFADT.PmTimerBlock = 0xA0; -+ Tmp32 = 0xA0; -+ ACPI_MOVE_32_TO_32(&LocalFADT.PmTimerBlock, &Tmp32); - -- LocalFADT.Pm2ControlBlock = 0xC0; -+ Tmp32 = 0xC0; -+ ACPI_MOVE_32_TO_32(&LocalFADT.Pm2ControlBlock, &Tmp32); - LocalFADT.Pm2ControlLength = 1; - - /* Setup one example X-64 GAS field */ - - LocalFADT.XPm1bEventBlock.SpaceId = ACPI_ADR_SPACE_SYSTEM_IO; -- LocalFADT.XPm1bEventBlock.Address = LocalFADT.Pm1bEventBlock; -+ ACPI_MOVE_32_TO_32(&Tmp32, &LocalFADT.Pm1bEventBlock); -+ Tmp64 = (UINT64)Tmp32; -+ ACPI_MOVE_64_TO_64(&LocalFADT.XPm1bEventBlock.Address, &Tmp64); - LocalFADT.XPm1bEventBlock.BitWidth = (UINT8) - ACPI_MUL_8 (LocalFADT.Pm1EventLength); - } -@@ -425,13 +442,17 @@ AeBuildLocalTables ( - memset (&LocalFACS, 0, sizeof (ACPI_TABLE_FACS)); - ACPI_COPY_NAMESEG (LocalFACS.Signature, ACPI_SIG_FACS); - -- LocalFACS.Length = sizeof (ACPI_TABLE_FACS); -- LocalFACS.GlobalLock = 0x11AA0011; -+ Tmp32 = sizeof (ACPI_TABLE_FACS); -+ ACPI_MOVE_32_TO_32(&LocalFACS.Length, &Tmp32); -+ Tmp32 = 0x11AA0011; -+ ACPI_MOVE_32_TO_32(&LocalFACS.GlobalLock, &Tmp32); - - /* Build the optional local tables */ - - if (AcpiGbl_LoadTestTables) - { -+ UINT32 Tmp32; -+ - /* - * Build a fake table [TEST] so that we make sure that the - * ACPICA core ignores it -@@ -440,11 +461,12 @@ AeBuildLocalTables ( - ACPI_COPY_NAMESEG (LocalTEST.Signature, "TEST"); - - LocalTEST.Revision = 1; -- LocalTEST.Length = sizeof (ACPI_TABLE_HEADER); -+ Tmp32 = sizeof (ACPI_TABLE_HEADER); -+ ACPI_MOVE_32_TO_32(&LocalTEST.Length, &Tmp32); - - LocalTEST.Checksum = 0; - LocalTEST.Checksum = (UINT8) -AcpiTbChecksum ( -- (void *) &LocalTEST, LocalTEST.Length); -+ (void *) &LocalTEST, Tmp32); - - /* - * Build a fake table with a bad signature [BAD!] so that we make -@@ -454,11 +476,12 @@ AeBuildLocalTables ( - ACPI_COPY_NAMESEG (LocalBADTABLE.Signature, "BAD!"); - - LocalBADTABLE.Revision = 1; -- LocalBADTABLE.Length = sizeof (ACPI_TABLE_HEADER); -+ Tmp32 = sizeof (ACPI_TABLE_HEADER); -+ ACPI_MOVE_32_TO_32(&LocalBADTABLE.Length, &Tmp32); - - LocalBADTABLE.Checksum = 0; - LocalBADTABLE.Checksum = (UINT8) -AcpiTbChecksum ( -- (void *) &LocalBADTABLE, LocalBADTABLE.Length); -+ (void *) &LocalBADTABLE, Tmp32); - } - - return (AE_OK); -Index: acpica-unix2-20200528/source/common/dmswitch.c -=================================================================== ---- acpica-unix2-20200528.orig/source/common/dmswitch.c -+++ acpica-unix2-20200528/source/common/dmswitch.c -@@ -88,13 +88,15 @@ AcpiDmProcessSwitch ( - ACPI_PARSE_OBJECT_LIST *Current; - ACPI_PARSE_OBJECT_LIST *Previous; - BOOLEAN FoundTemp = FALSE; -+ UINT32 Tmp32; - - - switch (Op->Common.AmlOpcode) - { - case AML_NAME_OP: - -- Temp = (char *) (&Op->Named.Name); -+ ACPI_MOVE_32_TO_32(&Tmp32, &Op->Named.Name); -+ Temp = (char *) (&Tmp32); - - if (!strncmp(Temp, "_T_", 3)) - { -@@ -138,7 +140,10 @@ AcpiDmProcessSwitch ( - { - /* Note, if we get here Temp is not NULL */ - -- if (!strncmp(Temp, (char *) (&Current->Op->Named.Name), 4)) -+ ACPI_MOVE_32_TO_32(&Tmp32, &Current->Op->Named.Name); -+ -+ /* if (!strncmp(Temp, (char *) (&Current->Op->Named.Name), 4)) */ -+ if (!strncmp(Temp, (char *) &Tmp32, 4)) - { - /* Match found. Ignore disassembly */ - diff --git a/converterSample.asl.result b/converterSample.asl.result index 47c532c..064ef5f 100644 --- a/converterSample.asl.result +++ b/converterSample.asl.result @@ -1,12 +1,27 @@ +converterSample.asl 15: Name (b, 5) +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (B___) + +converterSample.asl 16: Name(p008, Package() +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (P008) + converterSample.asl 37: Method(MAIN) { Remark 2120 - ^ Control Method should be made Serialized due to creation of named objects within (\MAIN)
+converterSample.asl 48: Name(b,0); +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (B___) + converterSample.asl 48: Name(b,0); Remark 2089 - Object is not referenced ^ (Name [B___] is within a method [MAIN])
+converterSample.asl 53: Name (a, +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (A___) + converterSample.asl 65: Method(SCOP) Remark 2120 - ^ Control Method should be made Serialized due to creation of named objects within (\SCOP)
+converterSample.asl 68: Name (a1, 0x04) +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (A1__) + converterSample.asl 68: Name (a1, 0x04) Remark 2089 - Object is not referenced ^ (Name [A1__] is within a method [SCOP])
@@ -23,4 +38,4 @@ Ignoring all errors, forcing AML file generation ASL Input: converterSample.asl - 1968 bytes 11 keywords 85 source lines AML Output: converterSample.aml - 182 bytes 2 opcodes 9 named objects
-Compilation successful. 0 Errors, 0 Warnings, 5 Remarks, 10 Optimizations +Compilation successful. 0 Errors, 0 Warnings, 10 Remarks, 10 Optimizations diff --git a/cve-2017-13693.patch b/cve-2017-13693.patch index b0af7a6..fcda493 100644 --- a/cve-2017-13693.patch +++ b/cve-2017-13693.patch @@ -63,10 +63,10 @@ Github-Location: https://github.com/acpica/acpica/pull/295/commits/987a3b5cf7175 source/components/dispatcher/dsutils.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
-Index: acpica-unix-20191018/source/components/dispatcher/dsutils.c +Index: acpica-unix2-20200925/source/components/dispatcher/dsutils.c =================================================================== ---- acpica-unix-20191018.orig/source/components/dispatcher/dsutils.c -+++ acpica-unix-20191018/source/components/dispatcher/dsutils.c +--- acpica-unix2-20200925.orig/source/components/dispatcher/dsutils.c ++++ acpica-unix2-20200925/source/components/dispatcher/dsutils.c @@ -759,6 +759,8 @@ AcpiDsCreateOperands ( ACPI_PARSE_OBJECT *Arguments[ACPI_OBJ_NUM_OPERANDS]; UINT32 ArgCount = 0; diff --git a/cve-2017-13694.patch b/cve-2017-13694.patch index 8d582e0..40c1c08 100644 --- a/cve-2017-13694.patch +++ b/cve-2017-13694.patch @@ -130,10 +130,10 @@ Github-Location: https://github.com/acpica/acpica/pull/278/commits/4a0243ecb4c94 source/components/parser/psobject.c | 44 ++++++++++++++----------------------- 1 file changed, 16 insertions(+), 28 deletions(-)
-Index: acpica-unix-20191018/source/components/parser/psobject.c +Index: acpica-unix2-20200925/source/components/parser/psobject.c =================================================================== ---- acpica-unix-20191018.orig/source/components/parser/psobject.c -+++ acpica-unix-20191018/source/components/parser/psobject.c +--- acpica-unix2-20200925.orig/source/components/parser/psobject.c ++++ acpica-unix2-20200925/source/components/parser/psobject.c @@ -707,7 +707,8 @@ AcpiPsCompleteFinalOp ( ACPI_PARSE_OBJECT *Op, ACPI_STATUS Status) diff --git a/cve-2017-13695.patch b/cve-2017-13695.patch index 5f77aaf..f521a16 100644 --- a/cve-2017-13695.patch +++ b/cve-2017-13695.patch @@ -67,10 +67,10 @@ Github-Location: https://github.com/acpica/acpica/pull/296/commits/37f2c716f2c6a source/components/namespace/nseval.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
-Index: acpica-unix-20191018/source/components/namespace/nseval.c +Index: acpica-unix2-20200925/source/components/namespace/nseval.c =================================================================== ---- acpica-unix-20191018.orig/source/components/namespace/nseval.c -+++ acpica-unix-20191018/source/components/namespace/nseval.c +--- acpica-unix2-20200925.orig/source/components/namespace/nseval.c ++++ acpica-unix2-20200925/source/components/namespace/nseval.c @@ -329,6 +329,16 @@ AcpiNsEvaluate ( Info->ReturnObject = NULL; } diff --git a/dbtest.patch b/dbtest.patch index eb8086e..6cf7f28 100644 --- a/dbtest.patch +++ b/dbtest.patch @@ -4,10 +4,11 @@ into an ACPI_OBJECT instead of just the pointer (see the use in the call to memcpy()). So, move the init so GCC recognizes that ValueToWrite is only a pointer, and not a whole string that needs to be moved.
-diff -Naur acpica-unix2-20200214.orig/source/components/debugger/dbtest.c acpica-unix2-20200214/source/components/debugger/dbtest.c ---- acpica-unix2-20200214.orig/source/components/debugger/dbtest.c 2020-02-14 10:33:54.000000000 -0700 -+++ acpica-unix2-20200214/source/components/debugger/dbtest.c 2020-02-25 10:50:42.793372070 -0700 -@@ -719,9 +719,10 @@ +Index: acpica-unix2-20200925/source/components/debugger/dbtest.c +=================================================================== +--- acpica-unix2-20200925.orig/source/components/debugger/dbtest.c ++++ acpica-unix2-20200925/source/components/debugger/dbtest.c +@@ -719,9 +719,10 @@ AcpiDbTestStringType ( ACPI_OBJECT *Temp1 = NULL; ACPI_OBJECT *Temp2 = NULL; ACPI_OBJECT *Temp3 = NULL; @@ -19,7 +20,7 @@ diff -Naur acpica-unix2-20200214.orig/source/components/debugger/dbtest.c acpica
/* Read the original value */ -@@ -737,6 +738,9 @@ +@@ -737,6 +738,9 @@ AcpiDbTestStringType (
/* Write a new value */
@@ -29,7 +30,7 @@ diff -Naur acpica-unix2-20200214.orig/source/components/debugger/dbtest.c acpica WriteValue.Type = ACPI_TYPE_STRING; WriteValue.String.Length = strlen (ValueToWrite); WriteValue.String.Pointer = ValueToWrite; -@@ -790,6 +794,7 @@ +@@ -790,6 +794,7 @@ Exit: if (Temp1) {AcpiOsFree (Temp1);} if (Temp2) {AcpiOsFree (Temp2);} if (Temp3) {AcpiOsFree (Temp3);} diff --git a/f23-harden.patch b/f23-harden.patch index 5e80d46..e1fbbbd 100644 --- a/f23-harden.patch +++ b/f23-harden.patch @@ -8,10 +8,10 @@ From: Al Stone ahs3@redhat.com generate/unix/iasl/Makefile | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-)
-Index: acpica-unix2-20200528/generate/unix/Makefile.config +Index: acpica-unix2-20200925/generate/unix/Makefile.config =================================================================== ---- acpica-unix2-20200528.orig/generate/unix/Makefile.config -+++ acpica-unix2-20200528/generate/unix/Makefile.config +--- acpica-unix2-20200925.orig/generate/unix/Makefile.config ++++ acpica-unix2-20200925/generate/unix/Makefile.config @@ -189,6 +189,8 @@ ifneq ($(NOFORTIFY),TRUE) OPT_CFLAGS += -D_FORTIFY_SOURCE=2 endif @@ -21,11 +21,11 @@ Index: acpica-unix2-20200528/generate/unix/Makefile.config CFLAGS += \ -D$(ACPI_HOST)\ -D_GNU_SOURCE\ -Index: acpica-unix2-20200528/generate/unix/iasl/Makefile +Index: acpica-unix2-20200925/generate/unix/iasl/Makefile =================================================================== ---- acpica-unix2-20200528.orig/generate/unix/iasl/Makefile -+++ acpica-unix2-20200528/generate/unix/iasl/Makefile -@@ -358,34 +358,35 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prpa +--- acpica-unix2-20200925.orig/generate/unix/iasl/Makefile ++++ acpica-unix2-20200925/generate/unix/iasl/Makefile +@@ -359,34 +359,35 @@ $(OBJDIR)/prparserparse.c $(OBJDIR)/prpa # Cannot use the common compile warning flags since the C files are created # by the utilities above and they are not necessarily ANSI C, etc. # diff --git a/facp.patch b/facp.patch index a8e9fe9..1d7ffee 100644 --- a/facp.patch +++ b/facp.patch @@ -13,10 +13,10 @@ Signed-off-by: Al Stone ahs3@redhat.com source/common/dmtbinfo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
-Index: acpica-unix2-20200528/source/common/dmtbinfo.c +Index: acpica-unix2-20200925/source/common/dmtbinfo.c =================================================================== ---- acpica-unix2-20200528.orig/source/common/dmtbinfo.c -+++ acpica-unix2-20200528/source/common/dmtbinfo.c +--- acpica-unix2-20200925.orig/source/common/dmtbinfo.c ++++ acpica-unix2-20200925/source/common/dmtbinfo.c @@ -184,7 +184,7 @@ ACPI_DMTABLE_INFO AcpiDmTableI ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = { diff --git a/gcc9.patch b/gcc9.patch deleted file mode 100644 index cd190a6..0000000 --- a/gcc9.patch +++ /dev/null @@ -1,65 +0,0 @@ -diff -Naur acpica-unix2-20190108/source/common/dmrestag.c acpica-unix2-20190108-patch/source/common/dmrestag.c ---- acpica-unix2-20190108/source/common/dmrestag.c 2019-01-08 14:10:31.000000000 -0700 -+++ acpica-unix2-20190108-patch/source/common/dmrestag.c 2019-05-10 13:57:10.768398838 -0600 -@@ -710,10 +710,25 @@ - * end up in the final compiled AML, it's just an appearance issue for the - * disassembled code. - */ -- Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0; -- strncat (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); -- strcat (Pathname, "."); -- strncat (Pathname, Tag, ACPI_NAME_SIZE); -+ { -+ /* -+ * GCC9 forces some contortions when non-null-terminated char -+ * strings are being used; using strncat() might be simpler, -+ * but the assumption that the string is null-terminated gets -+ * checked and AML does not always guarantee that is true. -+ */ -+ char *tmp; -+ unsigned char dot = '.'; -+ -+ Pathname[strlen (Pathname) - ACPI_NAME_SIZE] = 0; -+ tmp = Pathname + strlen(Pathname); -+ memcpy (tmp, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); -+ tmp += ACPI_NAME_SIZE; -+ memcpy (tmp, &dot, 1); -+ tmp++; -+ memcpy (tmp, Tag, ACPI_NAME_SIZE); -+ tmp += ACPI_NAME_SIZE; -+ } - - /* Internalize the namepath to AML format */ - -diff -Naur acpica-unix2-20190108/source/compiler/aslcodegen.c acpica-unix2-20190108-patch/source/compiler/aslcodegen.c ---- acpica-unix2-20190108/source/compiler/aslcodegen.c 2019-05-10 13:40:12.827411487 -0600 -+++ acpica-unix2-20190108-patch/source/compiler/aslcodegen.c 2019-05-10 13:25:34.667850614 -0600 -@@ -450,11 +450,11 @@ - */ - if (AcpiGbl_CaptureComments) - { -- strncpy(AcpiGbl_TableSig, Child->Asl.Value.String, ACPI_NAME_SIZE); -+ memcpy(AcpiGbl_TableSig, Child->Asl.Value.String, ACPI_NAME_SIZE); - Child->Asl.Value.String = ACPI_SIG_XXXX; - } - -- strncpy (AslGbl_TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE); -+ memcpy (AslGbl_TableHeader.Signature, Child->Asl.Value.String, ACPI_NAME_SIZE); - - /* Revision */ - -@@ -471,12 +471,12 @@ - /* OEMID */ - - Child = Child->Asl.Next; -- strncpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE); -+ memcpy (AslGbl_TableHeader.OemId, Child->Asl.Value.String, ACPI_OEM_ID_SIZE); - - /* OEM TableID */ - - Child = Child->Asl.Next; -- strncpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE); -+ memcpy (AslGbl_TableHeader.OemTableId, Child->Asl.Value.String, ACPI_OEM_TABLE_ID_SIZE); - - /* OEM Revision */ - diff --git a/grammar.asl.result b/grammar.asl.result index 19f6e2e..97fae9a 100644 --- a/grammar.asl.result +++ b/grammar.asl.result @@ -40,6 +40,12 @@ Warning 3055 - ^ Invalid Hex/Octal Escape - Non- grammar.asl 523: NAME (ESC2, "abcdefg\000hijklmn") Warning 3055 - ^ Invalid Hex/Octal Escape - Non-ASCII or NULL
+grammar.asl 552: IRQNoFlags(xxxt){3,4,10,11} +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (XXXT) + +grammar.asl 566: Name(Bxxx,0xFFFFFFFF) +Remark 2182 - ^ At least one lower case letter found in NameSeg, ASL is case insensitive - converting to upper case (BXXX) + grammar.asl 620: RCIV (Subtract (Arg0, 1)) Remark 2098 - ^ Recursive method call (RCIV)
@@ -581,4 +587,4 @@ Ignoring all errors, forcing AML file generation ASL Input: grammar.asl - 323653 bytes 4818 keywords 10284 source lines AML Output: grammar.aml - 43758 bytes 4148 opcodes 670 named objects
-Compilation successful. 6 Errors, 93 Warnings, 92 Remarks, 1106 Optimizations +Compilation successful. 6 Errors, 93 Warnings, 94 Remarks, 1106 Optimizations diff --git a/int-format.patch b/int-format.patch index 5cbb5c3..f98906b 100644 --- a/int-format.patch +++ b/int-format.patch @@ -21,10 +21,10 @@ From: Al Stone ahs3@redhat.com source/components/utilities/utownerid.c | 2 +- 18 files changed, 28 insertions(+), 28 deletions(-)
-Index: acpica-unix2-20200528/source/compiler/aslerror.c +Index: acpica-unix2-20200925/source/compiler/aslerror.c =================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslerror.c -+++ acpica-unix2-20200528/source/compiler/aslerror.c +--- acpica-unix2-20200925.orig/source/compiler/aslerror.c ++++ acpica-unix2-20200925/source/compiler/aslerror.c @@ -917,7 +917,7 @@ AslLogNewError ( AslGbl_ExceptionCount[ModifiedLevel]++; if (!AslGbl_IgnoreErrors && AslGbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT) @@ -34,10 +34,10 @@ Index: acpica-unix2-20200528/source/compiler/aslerror.c
AslGbl_SourceLine = 0; AslGbl_NextError = AslGbl_ErrorLog; -Index: acpica-unix2-20200528/source/compiler/aslopt.c +Index: acpica-unix2-20200925/source/compiler/aslopt.c =================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslopt.c -+++ acpica-unix2-20200528/source/compiler/aslopt.c +--- acpica-unix2-20200925.orig/source/compiler/aslopt.c ++++ acpica-unix2-20200925/source/compiler/aslopt.c @@ -583,7 +583,7 @@ OptOptimizeNamePath ( }
@@ -47,11 +47,11 @@ Index: acpica-unix2-20200528/source/compiler/aslopt.c Op->Asl.LogicalLineNumber, AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), AcpiPsGetOpcodeName (Op->Common.AmlOpcode))); -Index: acpica-unix2-20200528/source/compiler/aslprepkg.c +Index: acpica-unix2-20200925/source/compiler/aslprepkg.c =================================================================== ---- acpica-unix2-20200528.orig/source/compiler/aslprepkg.c -+++ acpica-unix2-20200528/source/compiler/aslprepkg.c -@@ -309,7 +309,7 @@ ApCheckPackage ( +--- acpica-unix2-20200925.orig/source/compiler/aslprepkg.c ++++ acpica-unix2-20200925/source/compiler/aslprepkg.c +@@ -320,7 +320,7 @@ ApCheckPackage (
if (Count & 1) { @@ -60,11 +60,11 @@ Index: acpica-unix2-20200528/source/compiler/aslprepkg.c Predefined->Info.Name, Count);
AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, -Index: acpica-unix2-20200528/source/components/debugger/dbexec.c +Index: acpica-unix2-20200925/source/components/debugger/dbexec.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/debugger/dbexec.c -+++ acpica-unix2-20200528/source/components/debugger/dbexec.c -@@ -230,7 +230,7 @@ AcpiDbExecuteMethod ( +--- acpica-unix2-20200925.orig/source/components/debugger/dbexec.c ++++ acpica-unix2-20200925/source/components/debugger/dbexec.c +@@ -231,7 +231,7 @@ AcpiDbExecuteMethod ( ACPI_ERROR ((AE_INFO, "Possible buffer overflow within AML Debugger " "buffer (size 0x%X needed 0x%X)", @@ -73,10 +73,10 @@ Index: acpica-unix2-20200528/source/components/debugger/dbexec.c } }
-Index: acpica-unix2-20200528/source/components/dispatcher/dsmthdat.c +Index: acpica-unix2-20200925/source/components/dispatcher/dsmthdat.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/dispatcher/dsmthdat.c -+++ acpica-unix2-20200528/source/components/dispatcher/dsmthdat.c +--- acpica-unix2-20200925.orig/source/components/dispatcher/dsmthdat.c ++++ acpica-unix2-20200925/source/components/dispatcher/dsmthdat.c @@ -291,7 +291,7 @@ AcpiDsMethodDataGetNode ( if (Index > ACPI_METHOD_MAX_LOCAL) { @@ -95,10 +95,10 @@ Index: acpica-unix2-20200528/source/components/dispatcher/dsmthdat.c Index, ACPI_METHOD_MAX_ARG)); return_ACPI_STATUS (AE_AML_INVALID_INDEX); } -Index: acpica-unix2-20200528/source/components/dispatcher/dsutils.c +Index: acpica-unix2-20200925/source/components/dispatcher/dsutils.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/dispatcher/dsutils.c -+++ acpica-unix2-20200528/source/components/dispatcher/dsutils.c +--- acpica-unix2-20200925.orig/source/components/dispatcher/dsutils.c ++++ acpica-unix2-20200925/source/components/dispatcher/dsutils.c @@ -786,7 +786,7 @@ AcpiDsCreateOperands ( }
@@ -108,10 +108,10 @@ Index: acpica-unix2-20200528/source/components/dispatcher/dsutils.c WalkState->NumOperands, ArgCount, Index));
/* Create the interpreter arguments, in reverse order */ -Index: acpica-unix2-20200528/source/components/dispatcher/dswscope.c +Index: acpica-unix2-20200925/source/components/dispatcher/dswscope.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/dispatcher/dswscope.c -+++ acpica-unix2-20200528/source/components/dispatcher/dswscope.c +--- acpica-unix2-20200925.orig/source/components/dispatcher/dswscope.c ++++ acpica-unix2-20200925/source/components/dispatcher/dswscope.c @@ -149,7 +149,7 @@ AcpiDsScopeStackPush ( WalkState->ScopeDepth++;
@@ -130,10 +130,10 @@ Index: acpica-unix2-20200528/source/components/dispatcher/dswscope.c (UINT32) WalkState->ScopeDepth, AcpiUtGetNodeName (ScopeInfo->Scope.Node), AcpiUtGetTypeName (ScopeInfo->Common.Value))); -Index: acpica-unix2-20200528/source/components/events/evgpe.c +Index: acpica-unix2-20200925/source/components/events/evgpe.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/events/evgpe.c -+++ acpica-unix2-20200528/source/components/events/evgpe.c +--- acpica-unix2-20200925.orig/source/components/events/evgpe.c ++++ acpica-unix2-20200925/source/components/events/evgpe.c @@ -488,7 +488,7 @@ AcpiEvGpeDetect ( "Ignore disabled registers for GPE %02X-%02X: " "RunEnable=%02X, WakeEnable=%02X\n", @@ -143,10 +143,10 @@ Index: acpica-unix2-20200528/source/components/events/evgpe.c GpeRegisterInfo->EnableForRun, GpeRegisterInfo->EnableForWake)); continue; -Index: acpica-unix2-20200528/source/components/executer/exdump.c +Index: acpica-unix2-20200925/source/components/executer/exdump.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/executer/exdump.c -+++ acpica-unix2-20200528/source/components/executer/exdump.c +--- acpica-unix2-20200925.orig/source/components/executer/exdump.c ++++ acpica-unix2-20200925/source/components/executer/exdump.c @@ -678,7 +678,7 @@ AcpiExDumpOperand ( if (Depth > 0) { @@ -156,10 +156,10 @@ Index: acpica-unix2-20200528/source/components/executer/exdump.c } else { -Index: acpica-unix2-20200528/source/components/executer/exfldio.c +Index: acpica-unix2-20200925/source/components/executer/exfldio.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/executer/exfldio.c -+++ acpica-unix2-20200528/source/components/executer/exfldio.c +--- acpica-unix2-20200925.orig/source/components/executer/exfldio.c ++++ acpica-unix2-20200925/source/components/executer/exfldio.c @@ -681,8 +681,8 @@ AcpiExWriteWithUpdateRule (
ACPI_ERROR ((AE_INFO, @@ -171,10 +171,10 @@ Index: acpica-unix2-20200528/source/components/executer/exfldio.c return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } } -Index: acpica-unix2-20200528/source/components/executer/exnames.c +Index: acpica-unix2-20200925/source/components/executer/exnames.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/executer/exnames.c -+++ acpica-unix2-20200528/source/components/executer/exnames.c +--- acpica-unix2-20200925.orig/source/components/executer/exnames.c ++++ acpica-unix2-20200925/source/components/executer/exnames.c @@ -237,7 +237,7 @@ AcpiExNameSegment ( */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, @@ -193,10 +193,10 @@ Index: acpica-unix2-20200528/source/components/executer/exnames.c }
*InAmlAddress = ACPI_CAST_PTR (UINT8, AmlAddress); -Index: acpica-unix2-20200528/source/components/hardware/hwregs.c +Index: acpica-unix2-20200925/source/components/hardware/hwregs.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/hardware/hwregs.c -+++ acpica-unix2-20200528/source/components/hardware/hwregs.c +--- acpica-unix2-20200925.orig/source/components/hardware/hwregs.c ++++ acpica-unix2-20200925/source/components/hardware/hwregs.c @@ -460,7 +460,7 @@ AcpiHwClearAcpiStatus (
@@ -206,10 +206,10 @@ Index: acpica-unix2-20200528/source/components/hardware/hwregs.c ACPI_FORMAT_UINT64 (AcpiGbl_XPm1aStatus.Address)));
LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); -Index: acpica-unix2-20200528/source/components/tables/tbfadt.c +Index: acpica-unix2-20200925/source/components/tables/tbfadt.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbfadt.c -+++ acpica-unix2-20200528/source/components/tables/tbfadt.c +--- acpica-unix2-20200925.orig/source/components/tables/tbfadt.c ++++ acpica-unix2-20200925/source/components/tables/tbfadt.c @@ -233,7 +233,7 @@ AcpiTbInitGenericAddress ( if (!(Flags & ACPI_FADT_GPE_REGISTER)) { @@ -219,7 +219,7 @@ Index: acpica-unix2-20200528/source/components/tables/tbfadt.c "to convert to GAS struct - 255 bits max, truncating", RegisterName, ByteWidth, (ByteWidth * 8))); } -@@ -304,7 +304,7 @@ AcpiTbSelectAddress ( +@@ -303,7 +303,7 @@ AcpiTbSelectAddress (
ACPI_BIOS_WARNING ((AE_INFO, "32/64X %s address mismatch in FADT: " @@ -228,7 +228,7 @@ Index: acpica-unix2-20200528/source/components/tables/tbfadt.c RegisterName, Address32, ACPI_FORMAT_UINT64 (Address64), AcpiGbl_Use32BitFadtAddresses ? 32 : 64));
-@@ -628,7 +628,7 @@ AcpiTbConvertFadt ( +@@ -631,7 +631,7 @@ AcpiTbConvertFadt (
ACPI_BIOS_WARNING ((AE_INFO, "32/64X address mismatch in FADT/%s: " @@ -237,10 +237,10 @@ Index: acpica-unix2-20200528/source/components/tables/tbfadt.c Name, Address32, ACPI_FORMAT_UINT64 (Address64->Address), AcpiGbl_Use32BitFadtAddresses ? 32 : 64)); -Index: acpica-unix2-20200528/source/components/tables/tbxfroot.c +Index: acpica-unix2-20200925/source/components/tables/tbxfroot.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/tables/tbxfroot.c -+++ acpica-unix2-20200528/source/components/tables/tbxfroot.c +--- acpica-unix2-20200925.orig/source/components/tables/tbxfroot.c ++++ acpica-unix2-20200925/source/components/tables/tbxfroot.c @@ -177,7 +177,7 @@ AcpiFindRootPointer ( { ACPI_ERROR ((AE_INFO, @@ -268,10 +268,10 @@ Index: acpica-unix2-20200528/source/components/tables/tbxfroot.c
return_ACPI_STATUS (AE_NO_MEMORY); } -Index: acpica-unix2-20200528/source/components/utilities/utownerid.c +Index: acpica-unix2-20200925/source/components/utilities/utownerid.c =================================================================== ---- acpica-unix2-20200528.orig/source/components/utilities/utownerid.c -+++ acpica-unix2-20200528/source/components/utilities/utownerid.c +--- acpica-unix2-20200925.orig/source/components/utilities/utownerid.c ++++ acpica-unix2-20200925/source/components/utilities/utownerid.c @@ -237,7 +237,7 @@ AcpiUtReleaseOwnerId ( else { diff --git a/mips-be-fix.patch b/mips-be-fix.patch index 0e7fa91..485fb77 100644 --- a/mips-be-fix.patch +++ b/mips-be-fix.patch @@ -1,8 +1,8 @@ -Index: acpica-unix-20191018/source/compiler/aslparseop.c +Index: acpica-unix2-20200925/source/compiler/aslparseop.c =================================================================== ---- acpica-unix-20191018.orig/source/compiler/aslparseop.c -+++ acpica-unix-20191018/source/compiler/aslparseop.c -@@ -283,7 +283,16 @@ TrCreateValuedLeafOp ( +--- acpica-unix2-20200925.orig/source/compiler/aslparseop.c ++++ acpica-unix2-20200925/source/compiler/aslparseop.c +@@ -285,7 +285,16 @@ TrCreateValuedLeafOp (
Op = TrAllocateOp (ParseOpcode); @@ -20,18 +20,3 @@ Index: acpica-unix-20191018/source/compiler/aslparseop.c
DbgPrint (ASL_PARSE_OUTPUT, "\nCreateValuedLeafOp Ln/Col %u/%u NewOp %p " -Index: acpica-unix-20191018/source/include/platform/aclinux.h -=================================================================== ---- acpica-unix-20191018.orig/source/include/platform/aclinux.h -+++ acpica-unix-20191018/source/include/platform/aclinux.h -@@ -232,10 +232,8 @@ - #endif - - #if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ --#if defined(__PPC64__) || defined(__s390x__) - #define ACPI_BIG_ENDIAN - #endif --#endif - - #endif /* __KERNEL__ */ - diff --git a/ppc64le.patch b/ppc64le.patch deleted file mode 100644 index 228f9d9..0000000 --- a/ppc64le.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: acpica-unix-20191018/source/include/platform/aclinux.h -=================================================================== ---- acpica-unix-20191018.orig/source/include/platform/aclinux.h -+++ acpica-unix-20191018/source/include/platform/aclinux.h -@@ -233,9 +233,11 @@ - #define __cdecl - #endif - -+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ - #if defined(__PPC64__) || defined(__s390x__) - #define ACPI_BIG_ENDIAN - #endif -+#endif - - #endif /* __KERNEL__ */ - diff --git a/ptr-cast.patch b/ptr-cast.patch index d052057..8f32d8c 100644 --- a/ptr-cast.patch +++ b/ptr-cast.patch @@ -1,12 +1,12 @@ -Index: acpica-unix-20191018/source/components/tables/tbutils.c +Index: acpica-unix2-20200925/source/components/tables/tbutils.c =================================================================== ---- acpica-unix-20191018.orig/source/components/tables/tbutils.c -+++ acpica-unix-20191018/source/components/tables/tbutils.c +--- acpica-unix2-20200925.orig/source/components/tables/tbutils.c ++++ acpica-unix2-20200925/source/components/tables/tbutils.c @@ -238,9 +238,11 @@ AcpiTbGetRootTableEntry ( * 64-bit platform, XSDT: Move (unaligned) 64-bit to local, * return 64-bit */ -- Address64 = (UINT64) TableEntry; +- ACPI_MOVE_64_TO_64 (&Address64, TableEntry);
#if ACPI_MACHINE_WIDTH == 32 + UINT32 Tmp32 = (UINT32) TableEntry; @@ -15,7 +15,7 @@ Index: acpica-unix-20191018/source/components/tables/tbutils.c if (Address64 > ACPI_UINT32_MAX) { /* Will truncate 64-bit address to 32 bits, issue warning */ -@@ -250,9 +252,15 @@ AcpiTbGetRootTableEntry ( +@@ -250,8 +252,14 @@ AcpiTbGetRootTableEntry ( " truncating", ACPI_FORMAT_UINT64 (Address64))); } @@ -26,17 +26,16 @@ Index: acpica-unix-20191018/source/components/tables/tbutils.c +#else + Address64 = (UINT64) TableEntry; + - return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR ( - UINT64, Address64))); + return ((ACPI_PHYSICAL_ADDRESS) (Address64)); +#endif } }
-Index: acpica-unix-20191018/source/compiler/aslparseop.c +Index: acpica-unix2-20200925/source/compiler/aslparseop.c =================================================================== ---- acpica-unix-20191018.orig/source/compiler/aslparseop.c -+++ acpica-unix-20191018/source/compiler/aslparseop.c -@@ -287,7 +287,11 @@ TrCreateValuedLeafOp ( +--- acpica-unix2-20200925.orig/source/compiler/aslparseop.c ++++ acpica-unix2-20200925/source/compiler/aslparseop.c +@@ -289,7 +289,11 @@ TrCreateValuedLeafOp ( ParseOpcode == PARSEOP_NAMESEG || ParseOpcode == PARSEOP_STRING_LITERAL) { diff --git a/simple-64bit.patch b/simple-64bit.patch index 80c771f..aeead35 100644 --- a/simple-64bit.patch +++ b/simple-64bit.patch @@ -3,17 +3,18 @@ Description: Stop listing all 64bit architectures 64bit architectures. Author: Adrian Bunk bunk@debian.org
-Index: acpica-unix-20191018/source/include/platform/aclinux.h +Index: acpica-unix2-20200925/source/include/platform/aclinux.h =================================================================== ---- acpica-unix-20191018.orig/source/include/platform/aclinux.h -+++ acpica-unix-20191018/source/include/platform/aclinux.h -@@ -215,9 +215,7 @@ +--- acpica-unix2-20200925.orig/source/include/platform/aclinux.h ++++ acpica-unix2-20200925/source/include/platform/aclinux.h +@@ -215,10 +215,7 @@ #define ACPI_FLUSH_CPU_CACHE() #define ACPI_CAST_PTHREAD_T(Pthread) ((ACPI_THREAD_ID) (Pthread))
-#if defined(__ia64__) || (defined(__x86_64__) && !defined(__ILP32__)) ||\ - defined(__aarch64__) || defined(__PPC64__) ||\ -- defined(__s390x__) +- defined(__s390x__) ||\ +- (defined(__riscv) && (defined(__LP64__) || defined(_LP64))) +#if defined(__LP64__) #define ACPI_MACHINE_WIDTH 64 #define COMPILER_DEPENDENT_INT64 long diff --git a/str-trunc-warn.patch b/str-trunc-warn.patch index 763ae68..1355b0c 100644 --- a/str-trunc-warn.patch +++ b/str-trunc-warn.patch @@ -1,7 +1,7 @@ -Index: acpica-unix-20200214/source/compiler/aslanalyze.c +Index: acpica-unix2-20200925/source/compiler/aslanalyze.c =================================================================== ---- acpica-unix-20200214.orig/source/compiler/aslanalyze.c -+++ acpica-unix-20200214/source/compiler/aslanalyze.c +--- acpica-unix2-20200925.orig/source/compiler/aslanalyze.c ++++ acpica-unix2-20200925/source/compiler/aslanalyze.c @@ -358,11 +358,16 @@ AnCheckMethodReturnValue ( */ if (ThisNodeBtype != 0) @@ -21,10 +21,10 @@ Index: acpica-unix-20200214/source/compiler/aslanalyze.c } }
-Index: acpica-unix-20200214/source/compiler/aslpredef.c +Index: acpica-unix2-20200925/source/compiler/aslpredef.c =================================================================== ---- acpica-unix-20200214.orig/source/compiler/aslpredef.c -+++ acpica-unix-20200214/source/compiler/aslpredef.c +--- acpica-unix2-20200925.orig/source/compiler/aslpredef.c ++++ acpica-unix2-20200925/source/compiler/aslpredef.c @@ -159,14 +159,19 @@ ApCheckForPredefinedMethod ( if (MethodInfo->NumReturnNoValue && ThisName->Info.ExpectedBtypes) @@ -84,10 +84,10 @@ Index: acpica-unix-20200214/source/compiler/aslpredef.c return (AE_TYPE); }
-Index: acpica-unix-20200214/source/compiler/aslwalks.c +Index: acpica-unix2-20200925/source/compiler/aslwalks.c =================================================================== ---- acpica-unix-20200214.orig/source/compiler/aslwalks.c -+++ acpica-unix-20200214/source/compiler/aslwalks.c +--- acpica-unix2-20200925.orig/source/compiler/aslwalks.c ++++ acpica-unix2-20200925/source/compiler/aslwalks.c @@ -515,15 +515,19 @@ AnOperandTypecheckWalkEnd ( else if (!CommonBtypes) { diff --git a/template.patch b/template.patch index 662216a..408541a 100644 --- a/template.patch +++ b/template.patch @@ -7,10 +7,10 @@ From: Al Stone ahs3@redhat.com tests/templates/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
-Index: acpica-unix-20191018/tests/templates/Makefile +Index: acpica-unix2-20200925/tests/templates/Makefile =================================================================== ---- acpica-unix-20191018.orig/tests/templates/Makefile -+++ acpica-unix-20191018/tests/templates/Makefile +--- acpica-unix2-20200925.orig/tests/templates/Makefile ++++ acpica-unix2-20200925/tests/templates/Makefile @@ -26,7 +26,7 @@ $(aml_obj): %.aml: %.asl
diff --git a/ull-32bit.patch b/ull-32bit.patch new file mode 100644 index 0000000..0568e11 --- /dev/null +++ b/ull-32bit.patch @@ -0,0 +1,12 @@ +diff -Naur acpica-unix2-20200925.orig/source/common/dmtbdump.c acpica-unix2-20200925/source/common/dmtbdump.c +--- acpica-unix2-20200925.orig/source/common/dmtbdump.c 2020-10-16 18:33:41.108600489 -0600 ++++ acpica-unix2-20200925/source/common/dmtbdump.c 2020-10-16 18:35:01.970316862 -0600 +@@ -333,7 +333,7 @@ + for (i = 0; i < Entries; i++) + { + AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); +- AcpiOsPrintf ("%16.16lX\n", AcpiUtReadUint64(&Array[i])); ++ AcpiOsPrintf ("%16.16llX\n", AcpiUtReadUint64(&Array[i])); + Offset += sizeof (UINT64); + } + } diff --git a/unaligned.patch b/unaligned.patch index f1f35a0..6d3f9c6 100644 --- a/unaligned.patch +++ b/unaligned.patch @@ -14,10 +14,10 @@ Signed-off-by: Paolo Bonzini pbonzini@redhat.com source/include/actypes.h | 26 +++++++++++++------------- 3 files changed, 32 insertions(+), 21 deletions(-)
-Index: acpica-unix-20191018/source/components/executer/exoparg2.c +Index: acpica-unix2-20200925/source/components/executer/exoparg2.c =================================================================== ---- acpica-unix-20191018.orig/source/components/executer/exoparg2.c -+++ acpica-unix-20191018/source/components/executer/exoparg2.c +--- acpica-unix2-20200925.orig/source/components/executer/exoparg2.c ++++ acpica-unix2-20200925/source/components/executer/exoparg2.c @@ -172,6 +172,8 @@ AcpiExOpcode_2A_2T_1R ( ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc1 = NULL; @@ -58,10 +58,10 @@ Index: acpica-unix-20191018/source/components/executer/exoparg2.c break;
case AML_CONCATENATE_OP: /* Concatenate (Data1, Data2, Result) */ -Index: acpica-unix-20191018/source/include/actypes.h +Index: acpica-unix2-20200925/source/include/actypes.h =================================================================== ---- acpica-unix-20191018.orig/source/include/actypes.h -+++ acpica-unix-20191018/source/include/actypes.h +--- acpica-unix2-20200925.orig/source/include/actypes.h ++++ acpica-unix2-20200925/source/include/actypes.h @@ -143,6 +143,19 @@ typedef COMPILER_DEPENDENT_INT64 */ #define ACPI_THREAD_ID UINT64
commit f9e9c6154d94616f56abe71120587c8f9fd85edb Author: Al Stone ahs3@redhat.com Date: Thu Oct 15 15:21:20 2020 -0600
The acpinames command has been deprecated upstream
Remove the command and the man page. Functionality replacing acpinames is now found in acpiexec.
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/.gitignore b/.gitignore index 7997d0c..9b16719 100644 --- a/.gitignore +++ b/.gitignore @@ -135,3 +135,5 @@ series /acpitests-unix-20200528.tar.gz /acpica-unix2-20200717.tar.gz /acpitests-unix-20200717.tar.gz +/acpica-unix2-20200925.tar.gz +/acpitests-unix-20200925.tar.gz diff --git a/acpica-tools.spec b/acpica-tools.spec index 6ae42c3..ad94d67 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -1,5 +1,5 @@ Name: acpica-tools -Version: 20200717 +Version: 20200925 Release: 1%{?dist} Summary: ACPICA tools for the development and debug of ACPI tables
@@ -14,7 +14,6 @@ Source4: acpibin.1 Source5: acpidump.1 Source6: acpiexec.1 Source7: acpihelp.1 -Source8: acpinames.1 Source9: acpisrc.1 Source10: acpixtract.1 Source11: acpiexamples.1 @@ -24,31 +23,67 @@ Source14: converterSample.asl.result Source15: run-misc-tests.sh Source16: COPYING
-Patch0: big-endian.patch -Patch1: big-endian-dmtbdump.patch -Patch2: big-endian-dmtbdump1.patch -Patch3: big-endian-dmtbdump2.patch -Patch4: big-endian-dmtbdump3.patch -Patch5: unaligned.patch -Patch6: OPT_LDFLAGS.patch -Patch7: int-format.patch -Patch8: f23-harden.patch -Patch9: template.patch -Patch10: ppc64le.patch -Patch11: arm7hl.patch -Patch12: big-endian-v2.patch -Patch13: simple-64bit.patch -Patch14: mips-be-fix.patch -Patch15: cve-2017-13693.patch -Patch16: cve-2017-13694.patch -Patch17: cve-2017-13695.patch -Patch18: str-trunc-warn.patch -Patch19: ptr-cast.patch -Patch20: aslcodegen.patch -Patch21: facp.patch -Patch24: armv7-str-fixes.patch -Patch25: dbtest.patch -#Patch27: big-endian-v3.patch +# the big-endian patch set +Patch0: 0001-Add-in-basic-infrastructure-for-big-endian-support.patch +Patch1: 0002-Modify-utility-functions-to-be-endian-agnostic.patch +Patch2: 0003-Always-display-table-header-content-in-human-readabl.patch +Patch3: 0004-Re-enable-support-for-big-endian-machines.patch +Patch4: 0005-Support-MADT-aka-APIC-in-a-big-endian-world.patch +Patch5: 0006-Support-ASF-tables-in-a-big-endian-world.patch +Patch6: 0007-Support-CPEP-tables-in-a-big-endian-world.patch +Patch7: 0008-Support-DBG2-table-in-a-big-endian-world.patch +Patch8: 0009-Support-DMAR-in-a-big-endian-world.patch +Patch9: 0010-Support-DRTM-in-a-big-endian-world.patch +Patch10: 0011-Support-EINJ-in-a-big-endian-world.patch +Patch11: 0012-Support-ERST-in-a-big-endian-world.patch +Patch12: 0013-Support-FADT-aka-FACP-in-a-big-endian-world.patch +Patch13: 0014-Support-most-FPDTs-in-a-big-endian-world.patch +Patch14: 0015-Support-GTDT-in-a-big-endian-world.patch +Patch15: 0016-Support-HEST-in-a-big-endian-world.patch +Patch16: 0017-Support-RSDT-RSD-PTR-in-a-big-endian-world.patch +Patch17: 0018-Support-XSDT-in-a-big-endian-world.patch +Patch18: 0019-Support-SRAT-in-a-big-endian-world.patch +Patch19: 0020-Support-SLIT-in-a-big-endian-world.patch +Patch20: 0021-Support-MSCT-in-a-big-endian-world.patch +Patch21: 0022-Support-MPST-in-a-big-endian-world.patch +Patch22: 0023-Support-NFIT-in-a-big-endian-world.patch +Patch23: 0024-Support-SDEV-in-a-big-endian-world.patch +Patch24: 0025-Support-HMAT-in-a-big-endian-world.patch +Patch25: 0026-Support-PDTT-in-a-big-endian-world.patch +Patch25: 0027-Support-PPTT-in-a-big-endian-world.patch +Patch27: 0028-Support-PCCT-in-a-big-endian-world.patch +Patch28: 0029-Support-WDAT-in-a-big-endian-world.patch +Patch29: 0030-Support-TCPA-in-a-big-endian-world.patch +Patch30: 0031-Support-STAO-in-a-big-endian-world.patch +Patch31: 0032-Support-SLIC-and-MSDM-in-a-big-endian-world.patch +Patch32: 0033-Support-MCFG-in-a-big-endian-world.patch +Patch33: 0034-Support-LPIT-in-a-big-endian-world.patch +Patch34: 0035-Support-PMTT-in-a-big-endian-world.patch +Patch35: 0036-Support-IORT-in-a-big-endian-world.patch +Patch36: 0037-Support-IVRS-in-a-big-endian-world.patch +Patch37: 0038-Support-TPM2-in-a-big-endian-world.patch +Patch38: 0039-Add-partial-big-endian-support-for-WPBT-tables.patch +Patch39: 0040-Support-DSDT-SSDT-in-a-big-endian-world.patch + +# other miscellaneous patch +Patch40: unaligned.patch +Patch41: OPT_LDFLAGS.patch +Patch42: int-format.patch +Patch43: f23-harden.patch +Patch44: template.patch +Patch45: ppc64le.patch +Patch46: arm7hl.patch +Patch47: simple-64bit.patch +Patch48: mips-be-fix.patch +Patch49: cve-2017-13693.patch +Patch50: cve-2017-13694.patch +Patch51: cve-2017-13695.patch +Patch52: str-trunc-warn.patch +Patch53: ptr-cast.patch +Patch54: aslcodegen.patch +Patch55: facp.patch +Patch56: armv7-str-fixes.patch +Patch57: dbtest.patch
BuildRequires: bison patchutils flex gcc
@@ -86,7 +121,6 @@ are installed: -- acpidump: write out the current contents of ACPI tables -- acpiexec: simulate AML execution in order to debug method definitions -- acpihelp: display help messages describing ASL keywords and op-codes - -- acpinames: display complete ACPI name space from input AML -- acpisrc: manipulate the ACPICA source tree and format source files for specific environments -- acpixtract: extract binary ACPI tables from acpidump output (see @@ -98,33 +132,65 @@ This version of the tools is being released under GPLv2 license. %setup -q -n acpica-unix2-%{version} gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f -
-%patch0 -p1 -b .big-endian -%patch1 -p1 -b .big-endian-dmtbdump -%patch2 -p1 -b .big-endian-dmtbdump1 -%patch3 -p1 -b .big-endian-dmtbdump2 -%patch4 -p1 -b .big-endian-dmtbdump3 -%patch5 -p1 -b .unaligned -%patch6 -p1 -b .OPT_LDFLAGS -%patch7 -p1 -b .int-format -%patch8 -p1 -b .f23-harden -# do not preserve a backup for this patch; it alters the results -# of the template test case and forces it to fail -%patch9 -p1 -%patch10 -p1 -b .ppc64le -%patch11 -p1 -b .arm7hl -%patch12 -p1 -b .big-endian-v2 -%patch13 -p1 -b .simple-64bit -%patch14 -p1 -b .mips-be-fix -%patch15 -p1 -b .cve-2017-13693 -%patch16 -p1 -b .cve-2017-13694 -%patch17 -p1 -b .cve-2017-13695 -%patch18 -p1 -b .str-trunc-warn -%patch19 -p1 -b .ptr-cast -%patch20 -p1 -b .aslcodegen -%patch21 -p1 -b .facp -%patch24 -p1 -b .armv7-str-fixes -%patch25 -p1 -b .dbtest -#%patch27 -p1 -b .big-endian-v3 +# apply all the patches +%patch0 +%patch1 +%patch2 +%patch3 +%patch4 +%patch5 +%patch6 +%patch7 +%patch8 +%patch9 +%patch10 +%patch11 +%patch12 +%patch13 +%patch14 +%patch15 +%patch16 +%patch17 +%patch18 +%patch19 +%patch20 +%patch21 +%patch22 +%patch23 +%patch24 +%patch25 +%patch26 +%patch27 +%patch28 +%patch29 +%patch30 +%patch31 +%patch32 +%patch33 +%patch34 +%patch35 +%patch36 +%patch37 +%patch38 +%patch39 +%patch40 +%patch41 +%patch42 +%patch43 +%patch44 +%patch45 +%patch46 +%patch47 +%patch48 +%patch49 +%patch50 +%patch51 +%patch52 +%patch53 +%patch54 +%patch55 +%patch56 +%patch57
cp -p %{SOURCE2} README.Fedora cp -p %{SOURCE3} iasl.1 @@ -132,7 +198,6 @@ cp -p %{SOURCE4} acpibin.1 cp -p %{SOURCE5} acpidump.1 cp -p %{SOURCE6} acpiexec.1 cp -p %{SOURCE7} acpihelp.1 -cp -p %{SOURCE8} acpinames.1 cp -p %{SOURCE9} acpisrc.1 cp -p %{SOURCE10} acpixtract.1 cp -p %{SOURCE11} acpiexamples.1 @@ -241,6 +306,12 @@ fi
%changelog +* Thu Oct 15 2020 Al Stone ahs3@redhat.com - 20200925-1 +- Update to 20200925 source tree +- Completely revamp the old big-endian patches (maintainability was the goal) +- The acpinames command has been deprecated upstrean; acpiexec provides + replacement functionality + * Fri Jul 31 2020 Fedora Release Engineering releng@fedoraproject.org - 20200430-3 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild diff --git a/acpinames.1 b/acpinames.1 deleted file mode 100644 index 315d235..0000000 --- a/acpinames.1 +++ /dev/null @@ -1,49 +0,0 @@ -." First parameter, NAME, should be all caps -." Second parameter, SECTION, should be 1-8, maybe w/ subsection -." other parameters are allowed: see man(7), man(1) -.TH ACPINAMES 1 "January 23, 2013" -." Please adjust this date whenever revising the manpage. -." -." Some roff macros, for reference: -." .nh disable hyphenation -." .hy enable hyphenation -." .ad l left justify -." .ad b justify to both left and right margins -." .nf disable filling -." .fi enable filling -." .br insert line break -." .sp <n> insert n+1 empty lines -." for manpage-specific macros, see man(7) -.SH NAME -acpinames - ACPI name space dump utility -.SH SYNOPSIS -.B acpinames -.RI <option> ... -.RI <aml-file> - -.SH DESCRIPTION -This manual page briefly documents the -.B acpinames -command. The option list is taken from the acpinames interactive help. -.PP -." TeX users may be more comfortable with the \fB<whatever>\fP and -." \fI<whatever>\fP escape sequences to invode bold face and italics, -." respectively. -.B acpinames -prints out the complete ACPI name space for an AML file. -.PP -Much more detailed documentation may be found at -http://www.acpica.org/documentation/. - -.SH OPTIONS - -.PP -.TP -.B -? [<name-prefix>] -Display this help message - -.SH AUTHOR -acpinames was written by Robert Moore robert.moore@intel.com. -.PP -This manual page was written by Al Stone ahs3@redhat.com for the -Fedora project (but may be used by others). diff --git a/sources b/sources index 93122b8..3e65507 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (acpica-unix2-20200717.tar.gz) = d477911d9dded34e887f77f396d84b85334b66983d3104ba8ee0ade09186abacfceec9ecec96fa6fce886da5fe0d187c2cdeed62cca467cdae049e2fe011391a -SHA512 (acpitests-unix-20200717.tar.gz) = 02c6674cbb2d98f783f25c71b1f391713de6fb3b56e5b57de9a7ccba0927453be4db8aea513e6e7ad491fcf3a0b2c14fefe8a2b82877a2ae01ea1d7832d36844 +SHA512 (acpica-unix2-20200925.tar.gz) = e5009e6f38b145019406b2d237247f3063372bcd006371501991f338f974bf441c3de3162f5b800ff5f6eed4ab267ef4b715b2256cc9a6ae0a787eb0d0a24c68 +SHA512 (acpitests-unix-20200925.tar.gz) = 6b633b71aced285478cde2f044848b1b748f5dc0d7d9a968610f4036e21b26541c7e0cfe49c4e6298ae1c041b8a575f7969b1f2a50dbe5af88e8ffaccfd82e96
commit 97b38e48de60dcda464ba13c4571a9669a887813 Author: Al Stone ahs3@redhat.com Date: Sun Sep 13 16:37:40 2020 -0600
Remove faulty patch from build
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/acpica-tools.spec b/acpica-tools.spec index a5124d0..6ae42c3 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -48,7 +48,7 @@ Patch20: aslcodegen.patch Patch21: facp.patch Patch24: armv7-str-fixes.patch Patch25: dbtest.patch -Patch27: big-endian-v3.patch +#Patch27: big-endian-v3.patch
BuildRequires: bison patchutils flex gcc
@@ -124,7 +124,7 @@ gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f - %patch21 -p1 -b .facp %patch24 -p1 -b .armv7-str-fixes %patch25 -p1 -b .dbtest -%patch27 -p1 -b .big-endian-v3 +#%patch27 -p1 -b .big-endian-v3
cp -p %{SOURCE2} README.Fedora cp -p %{SOURCE3} iasl.1
commit 6337b475f00a21e629606bd28b18141d2730b05d Author: Al Stone ahs3@redhat.com Date: Sun Sep 13 15:49:37 2020 -0600
Update expected test result
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/grammar.asl.result b/grammar.asl.result index c4b9c48..19f6e2e 100644 --- a/grammar.asl.result +++ b/grammar.asl.result @@ -133,21 +133,12 @@ Warning 3038 - ^ Truncating 64-bit constant grammar.asl 1396: if (LNotEqual (Local0, 0x1234567887654321)) Warning 3038 - Truncating 64-bit constant found in 32-bit table ^
-grammar.asl 1411: Field (_SB_.MEM.SMEM, AnyAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\FLDX) - -grammar.asl 1418: Field (_SB_.MEM.SMEM, AnyAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\FLDX) - grammar.asl 1445: Name (BUFO, Buffer (32) {}) Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\OBJ2)
grammar.asl 1448: OperationRegion (OPR2, SystemMemory, Arg0, 256) Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\OBJ2)
-grammar.asl 1451: Field (OPR2, ByteAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\OBJ2) - grammar.asl 1462: BankField (OPR2, BNK2, 0, ByteAcc, NoLock, Preserve) Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\OBJ2)
@@ -331,9 +322,6 @@ Warning 3175 - ^ Static OperationRegion shoul grammar.asl 4693: OperationRegion (RAM, SystemMemory, 0x800000, 256) Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\XORD.TEST)
-grammar.asl 4694: Field (RAM, ByteAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\XORD.TEST) - grammar.asl 5022: Device (CRBF) Warning 3141 - ^ Missing dependency (Device object requires a _HID or _ADR in same scope)
@@ -343,15 +331,6 @@ Warning 3141 - ^ Missing dependency (Device object requires a grammar.asl 5117: OperationRegion (RAM, SystemMemory, Arg0, 0x100) Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\IDX4.MADM)
-grammar.asl 5118: Field (RAM, DwordAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\IDX4.MADM) - -grammar.asl 5123: Field (RAM, ByteAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\IDX4.MADM) - -grammar.asl 5159: Field (RAM, ByteAcc, NoLock, Preserve) -Remark 2173 - ^ Creation of named objects within a method is highly inefficient, use globals or method local variables instead (\IDX4.MADM) - grammar.asl 5639: Device (EVNT) Warning 3141 - ^ Missing dependency (Device object requires a _HID or _ADR in same scope)
@@ -602,4 +581,4 @@ Ignoring all errors, forcing AML file generation ASL Input: grammar.asl - 323653 bytes 4818 keywords 10284 source lines AML Output: grammar.aml - 43758 bytes 4148 opcodes 670 named objects
-Compilation successful. 6 Errors, 93 Warnings, 99 Remarks, 1106 Optimizations +Compilation successful. 6 Errors, 93 Warnings, 92 Remarks, 1106 Optimizations
commit 02a30e0c2ee5cb59b8cefaec5b82f005e78c655d Author: Al Stone ahs3@redhat.com Date: Sun Sep 13 15:33:00 2020 -0600
Correct bad date in changelog
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/acpica-tools.spec b/acpica-tools.spec index 1c5f6dc..a5124d0 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -248,7 +248,7 @@ fi * Mon Jul 27 2020 Fedora Release Engineering releng@fedoraproject.org - 20200430-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
-* Thu Jun 8 2020 Al Stone ahs3@redhat.com - 202004306-1 +* Mon Jun 8 2020 Al Stone ahs3@redhat.com - 202004306-1 - Update to 202004306 source tree, including patch refreshes
* Wed Apr 1 2020 Al Stone ahs3@redhat.com - 20200326-1
commit 335268930f1d7dbc2caf36ddd8ca4c11cfae24d0 Author: Al Stone ahs3@redhat.com Date: Sun Sep 13 15:30:34 2020 -0600
Update to 20200717 upstream source
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/.gitignore b/.gitignore index 5ce6dab..7997d0c 100644 --- a/.gitignore +++ b/.gitignore @@ -133,3 +133,5 @@ series /acpitests-unix-20200430.tar.gz /acpica-unix2-20200528.tar.gz /acpitests-unix-20200528.tar.gz +/acpica-unix2-20200717.tar.gz +/acpitests-unix-20200717.tar.gz diff --git a/acpica-tools.spec b/acpica-tools.spec index a0d0b26..1c5f6dc 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -1,5 +1,5 @@ Name: acpica-tools -Version: 20200528 +Version: 20200717 Release: 1%{?dist} Summary: ACPICA tools for the development and debug of ACPI tables
diff --git a/sources b/sources index 4c6cff9..93122b8 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (acpica-unix2-20200528.tar.gz) = e1a924c2e50e84deaa409da1323dec3307aefb130a8d88e5414e29999a670ba1cd63f6c3a0efdbdb3a2423d9023b5adad4d4136d8cf5bbd66affe20c747f39bb -SHA512 (acpitests-unix-20200528.tar.gz) = 9c4d25a8e2a358ee2251b47cff759a76c653cc89894fc6dc91cb765d0340f67abdee8f44b0e47397c2507ab6e10a2b40bb6169befcdd3384ff010bdbfdd58518 +SHA512 (acpica-unix2-20200717.tar.gz) = d477911d9dded34e887f77f396d84b85334b66983d3104ba8ee0ade09186abacfceec9ecec96fa6fce886da5fe0d187c2cdeed62cca467cdae049e2fe011391a +SHA512 (acpitests-unix-20200717.tar.gz) = 02c6674cbb2d98f783f25c71b1f391713de6fb3b56e5b57de9a7ccba0927453be4db8aea513e6e7ad491fcf3a0b2c14fefe8a2b82877a2ae01ea1d7832d36844
commit 19a9c691f50a09b063e35cda130e771d104a74ef Author: Al Stone ahs3@redhat.com Date: Sun Sep 13 15:27:09 2020 -0600
Update to 2020528 upstream source
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/.gitignore b/.gitignore index 2e7eaf7..5ce6dab 100644 --- a/.gitignore +++ b/.gitignore @@ -131,3 +131,5 @@ series /acpitests-unix-20200326.tar.gz /acpica-unix2-20200430.tar.gz /acpitests-unix-20200430.tar.gz +/acpica-unix2-20200528.tar.gz +/acpitests-unix-20200528.tar.gz diff --git a/acpica-tools.spec b/acpica-tools.spec index 5ca9de6..a0d0b26 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -1,6 +1,6 @@ Name: acpica-tools -Version: 20200430 -Release: 3%{?dist} +Version: 20200528 +Release: 1%{?dist} Summary: ACPICA tools for the development and debug of ACPI tables
License: GPLv2 diff --git a/sources b/sources index 400e9a2..4c6cff9 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (acpica-unix2-20200430.tar.gz) = e6af40eba35ae2cee976267c1cccbdbe70ef038e217ffd4335585d0ffba323b50703546cb0b32d10ffc90ba7f90f6df9a34170155d7256b9fffdd7859b40cd11 -SHA512 (acpitests-unix-20200430.tar.gz) = f0c660f1dda45b89633da47d23b3c13b3865414bfa8b12af137d7d4de0e7ccb690aeee9c5fbe480801b5dc921c96af80054608d381a47637893d82d3a003467d +SHA512 (acpica-unix2-20200528.tar.gz) = e1a924c2e50e84deaa409da1323dec3307aefb130a8d88e5414e29999a670ba1cd63f6c3a0efdbdb3a2423d9023b5adad4d4136d8cf5bbd66affe20c747f39bb +SHA512 (acpitests-unix-20200528.tar.gz) = 9c4d25a8e2a358ee2251b47cff759a76c653cc89894fc6dc91cb765d0340f67abdee8f44b0e47397c2507ab6e10a2b40bb6169befcdd3384ff010bdbfdd58518
commit 4188296ae35d15e002bf8ecae83f03963a71fa4d Author: Al Stone ahs3@redhat.com Date: Sun Sep 13 15:25:15 2020 -0600
Merge in some changelog and spec file updates
Signed-off-by: Al Stone ahs3@redhat.com
diff --git a/acpica-tools.spec b/acpica-tools.spec index 6c5de80..5ca9de6 100644 --- a/acpica-tools.spec +++ b/acpica-tools.spec @@ -48,7 +48,7 @@ Patch20: aslcodegen.patch Patch21: facp.patch Patch24: armv7-str-fixes.patch Patch25: dbtest.patch -#Patch27: big-endian-v3.patch +Patch27: big-endian-v3.patch
BuildRequires: bison patchutils flex gcc
@@ -124,7 +124,7 @@ gzip -dc %{SOURCE1} | tar -x --strip-components=1 -f - %patch21 -p1 -b .facp %patch24 -p1 -b .armv7-str-fixes %patch25 -p1 -b .dbtest -#%patch27 -p1 -b .big-endian-v3 +%patch27 -p1 -b .big-endian-v3
cp -p %{SOURCE2} README.Fedora cp -p %{SOURCE3} iasl.1 diff --git a/big-endian-v3.patch b/big-endian-v3.patch index e3db4f6..93ef67d 100644 --- a/big-endian-v3.patch +++ b/big-endian-v3.patch @@ -104,26 +104,6 @@ diff -Naur acpica-unix2-20200214.orig/source/compiler/dttable2.c acpica-unix2-20 } break;
-diff -Naur acpica-unix2-20200214.orig/source/compiler/aslxref.c acpica-unix2-20200214/source/compiler/aslxref.c ---- acpica-unix2-20200214.orig/source/compiler/aslxref.c 2020-02-14 10:33:53.000000000 -0700 -+++ acpica-unix2-20200214/source/compiler/aslxref.c 2020-02-26 13:21:43.973602232 -0700 -@@ -547,8 +547,14 @@ - */ - AslGbl_NsLookupCount++; - -- Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, -- ACPI_IMODE_EXECUTE, Flags, WalkState, &Node); -+ { -+ UINT32 Tmp32; -+ -+ ACPI_MOVE_32_TO_32(&Tmp32, Path); -+ -+ Status = AcpiNsLookup (WalkState->ScopeInfo, (char *)&Tmp32, ObjectType, -+ ACPI_IMODE_EXECUTE, Flags, WalkState, &Node); -+ } - if (ACPI_FAILURE (Status)) - { - if (Status == AE_NOT_FOUND) diff -Naur acpica-unix2-20200214.orig/source/compiler/aslload.c acpica-unix2-20200214/source/compiler/aslload.c --- acpica-unix2-20200214.orig/source/compiler/aslload.c 2020-02-14 10:33:53.000000000 -0700 +++ acpica-unix2-20200214/source/compiler/aslload.c 2020-02-27 13:25:19.308413494 -0700
arch-excludes@lists.fedoraproject.org