[packages/acpica] - updated to 20200430 - updated debian patches

qboosh qboosh at pld-linux.org
Sat May 16 15:46:05 CEST 2020


commit 70586bb3c03e8b97d5e4547c3da5ffddeb7252b1
Author: Jakub Bogusz <qboosh at pld-linux.org>
Date:   Sat May 16 15:46:35 2020 +0200

    - updated to 20200430
    - updated debian patches

 acpica.spec             |   18 +-
 arm7hl.patch            |    7 +-
 armv7-str-fixes.patch   |   12 +
 aslcodegen.patch        |   10 +-
 be-tpm2.patch           |   41 -
 big-endian-v2.patch     |    6 +-
 cve-2017-13693.patch    |   12 +-
 cve-2017-13694.patch    |   14 +-
 cve-2017-13695.patch    |    8 +-
 debian-big_endian.patch | 6490 ++++++++++++++++++++++++-----------------------
 debian-unaligned.patch  |   12 +-
 facp.patch              |   28 +
 free.patch              |   15 -
 int-format.patch        |  114 +-
 mips-be-fix.patch       |   14 +-
 ppc64le.patch           |    8 +-
 ptr-cast.patch          |   12 +-
 str-trunc-warn.patch    |   24 +-
 template.patch          |   14 +-
 19 files changed, 3438 insertions(+), 3421 deletions(-)
---
diff --git a/acpica.spec b/acpica.spec
index 135c05b..f329b24 100644
--- a/acpica.spec
+++ b/acpica.spec
@@ -5,14 +5,14 @@
 Summary:	ACPI Component Architecture - an assembler and disassembler for DSDT tables
 Summary(pl.UTF-8):	ACPI CA - asembler i disasembler dla tablic DSDT
 Name:		acpica
-Version:	20181031
+Version:	20200430
 Release:	1
 License:	GPL v2
 Group:		Development/Tools
 Source0:	https://acpica.org/sites/acpica/files/%{name}-unix-%{version}.tar.gz
-# Source0-md5:	cea3f668b536ec56ae878a3239035f26
+# Source0-md5:	7888f1e1e67f1bbaf33f1a869d1f0482
 Source1:	https://acpica.org/sites/acpica/files/acpitests-unix-%{version}.tar.gz
-# Source1-md5:	745791d46298c30cc7ee851ae045dbb0
+# Source1-md5:	69cb94daf85cd5d5bd374c077cf66499
 Source2:	iasl.1
 Source3:	acpibin.1
 Source4:	acpidump.1
@@ -24,12 +24,12 @@ Source9:	acpixtract.1
 Patch0:		debian-big_endian.patch
 Patch1:		debian-unaligned.patch
 Patch6:		int-format.patch
+Patch8:		facp.patch
 Patch9:		template.patch
-Patch10:	free.patch
-Patch12:	ppc64le.patch
-Patch13:	arm7hl.patch
+Patch11:	ppc64le.patch
+Patch12:	arm7hl.patch
+Patch13:	armv7-str-fixes.patch
 Patch14:	big-endian-v2.patch
-Patch15:	be-tpm2.patch
 Patch16:	mips-be-fix.patch
 Patch17:	cve-2017-13693.patch
 Patch18:	cve-2017-13694.patch
@@ -59,12 +59,12 @@ tar -x --strip-components=1 -f %{SOURCE1}
 %patch0 -p1
 %patch1 -p1
 %patch6 -p1
+%patch8 -p1
 %patch9 -p1
-%patch10 -p1
+%patch11 -p1
 %patch12 -p1
 %patch13 -p1
 %patch14 -p1
-%patch15 -p1
 %patch16 -p1
 %patch17 -p1
 %patch18 -p1
diff --git a/arm7hl.patch b/arm7hl.patch
index fb10291..b3a7d7a 100644
--- a/arm7hl.patch
+++ b/arm7hl.patch
@@ -1,6 +1,7 @@
-diff -Naur acpica-unix2-20170119/source/include/acmacros.h acpica-unix2-20170119-arm7hl/source/include/acmacros.h
---- acpica-unix2-20170119/source/include/acmacros.h	2017-01-30 17:25:54.346151952 -0700
-+++ acpica-unix2-20170119-arm7hl/source/include/acmacros.h	2017-01-30 17:22:25.249388742 -0700
+Index: acpica-unix-20191213/source/include/acmacros.h
+===================================================================
+--- acpica-unix-20191213.orig/source/include/acmacros.h
++++ acpica-unix-20191213/source/include/acmacros.h
 @@ -178,6 +178,8 @@
  
  /* 16-bit source, 16/32/64 destination */
diff --git a/armv7-str-fixes.patch b/armv7-str-fixes.patch
new file mode 100644
index 0000000..4de8226
--- /dev/null
+++ b/armv7-str-fixes.patch
@@ -0,0 +1,12 @@
+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 @@
+ #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))
+-#define ACPI_COPY_NAMESEG(dest,src)     (strncpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
++#define ACPI_COPY_NAMESEG(dest,src)     (memcpy (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAMESEG_SIZE))
+ #endif
+ 
+ /* Support for the special RSDP signature (8 characters) */
diff --git a/aslcodegen.patch b/aslcodegen.patch
index 57b8819..357ae47 100644
--- a/aslcodegen.patch
+++ b/aslcodegen.patch
@@ -4,11 +4,11 @@ support; this patch repairs that adaptation.
 
 Signed-off-by: Al Stone <ahs3 at redhat.com>
 
-Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
+Index: acpica-unix-20191213/source/compiler/aslcodegen.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslcodegen.c
-+++ acpica-unix2-20181003/source/compiler/aslcodegen.c
-@@ -494,8 +494,7 @@ CgWriteTableHeader (
+--- acpica-unix-20191213.orig/source/compiler/aslcodegen.c
++++ acpica-unix-20191213/source/compiler/aslcodegen.c
+@@ -497,8 +497,7 @@ CgWriteTableHeader (
  
      /* Table length. Checksum zero for now, will rewrite later */
  
@@ -18,7 +18,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
      /* Calculate the comment lengths for this definition block parseOp */
  
-@@ -541,6 +540,8 @@ CgWriteTableHeader (
+@@ -544,6 +543,8 @@ CgWriteTableHeader (
              CvDbgPrint ("    Length: %u\n", CommentLength);
          }
      }
diff --git a/be-tpm2.patch b/be-tpm2.patch
deleted file mode 100644
index f807bf5..0000000
--- a/be-tpm2.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Index: acpica-unix-20180508/source/compiler/dttable2.c
-===================================================================
---- acpica-unix-20181031/source/compiler/dttable2.c.orig	2018-11-18 21:47:12.950401024 +0100
-+++ acpica-unix-20181031/source/compiler/dttable2.c	2018-11-20 05:42:52.529088619 +0100
-@@ -1962,6 +1962,7 @@ DtCompileTpm2 (
-     DT_SUBTABLE             *ParentTable;
-     ACPI_STATUS             Status = AE_OK;
-     ACPI_TABLE_HEADER       *Header;
-+    UINT32		    Tmp32;
- 
- 
-     ParentTable = DtPeekSubtable ();
-@@ -2005,7 +2006,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:
- 
-@@ -2035,16 +2037,14 @@ DtCompileTpm2 (
-     case ACPI_TPM2_RESERVED9:
-     case ACPI_TPM2_RESERVED10:
- 
--        AcpiOsPrintf ("\n**** Reserved TPM2 Start Method type 0x%X\n",
--            Tpm2Header->StartMethod);
-+        AcpiOsPrintf ("\n**** Reserved TPM2 Start Method type 0x%X\n", Tmp32);
-         Status = AE_ERROR;
-         break;
- 
-     case ACPI_TPM2_NOT_ALLOWED:
-     default:
- 
--        AcpiOsPrintf ("\n**** Unknown TPM2 Start Method type 0x%X\n",
--            Tpm2Header->StartMethod);
-+        AcpiOsPrintf ("\n**** Unknown TPM2 Start Method type 0x%X\n", Tmp32);
-         Status = AE_ERROR;
-         break;
-     }
diff --git a/big-endian-v2.patch b/big-endian-v2.patch
index 600a43d..90bb67e 100644
--- a/big-endian-v2.patch
+++ b/big-endian-v2.patch
@@ -3,10 +3,10 @@ in the original big-endian patch; we try to capture those here.
 
 Signed-off-by: Al Stone <ahs3 at redhat.com>
 
-Index: acpica-unix-20180508/source/compiler/asllookup.c
+Index: acpica-unix-20191213/source/compiler/asllookup.c
 ===================================================================
---- acpica-unix-20180508.orig/source/compiler/asllookup.c
-+++ acpica-unix-20180508/source/compiler/asllookup.c
+--- acpica-unix-20191213.orig/source/compiler/asllookup.c
++++ acpica-unix-20191213/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.
diff --git a/cve-2017-13693.patch b/cve-2017-13693.patch
index eb88be8..45dea78 100644
--- a/cve-2017-13693.patch
+++ b/cve-2017-13693.patch
@@ -63,11 +63,11 @@ 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-20180508/source/components/dispatcher/dsutils.c
+Index: acpica-unix-20191213/source/components/dispatcher/dsutils.c
 ===================================================================
---- acpica-unix-20180508.orig/source/components/dispatcher/dsutils.c
-+++ acpica-unix-20180508/source/components/dispatcher/dsutils.c
-@@ -761,6 +761,8 @@ AcpiDsCreateOperands (
+--- acpica-unix-20191213.orig/source/components/dispatcher/dsutils.c
++++ acpica-unix-20191213/source/components/dispatcher/dsutils.c
+@@ -759,6 +759,8 @@ AcpiDsCreateOperands (
      ACPI_PARSE_OBJECT       *Arguments[ACPI_OBJ_NUM_OPERANDS];
      UINT32                  ArgCount = 0;
      UINT32                  Index = WalkState->NumOperands;
@@ -76,7 +76,7 @@ Index: acpica-unix-20180508/source/components/dispatcher/dsutils.c
      UINT32                  i;
  
  
-@@ -793,6 +795,7 @@ AcpiDsCreateOperands (
+@@ -791,6 +793,7 @@ AcpiDsCreateOperands (
  
      /* Create the interpreter arguments, in reverse order */
  
@@ -84,7 +84,7 @@ Index: acpica-unix-20180508/source/components/dispatcher/dsutils.c
      Index--;
      for (i = 0; i < ArgCount; i++)
      {
-@@ -820,7 +823,11 @@ Cleanup:
+@@ -818,7 +821,11 @@ Cleanup:
       * pop everything off of the operand stack and delete those
       * objects
       */
diff --git a/cve-2017-13694.patch b/cve-2017-13694.patch
index 5b42ce0..e24bd13 100644
--- a/cve-2017-13694.patch
+++ b/cve-2017-13694.patch
@@ -130,11 +130,11 @@ 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-20180508/source/components/parser/psobject.c
+Index: acpica-unix-20191213/source/components/parser/psobject.c
 ===================================================================
---- acpica-unix-20180508.orig/source/components/parser/psobject.c
-+++ acpica-unix-20180508/source/components/parser/psobject.c
-@@ -709,7 +709,8 @@ AcpiPsCompleteFinalOp (
+--- acpica-unix-20191213.orig/source/components/parser/psobject.c
++++ acpica-unix-20191213/source/components/parser/psobject.c
+@@ -707,7 +707,8 @@ AcpiPsCompleteFinalOp (
      ACPI_PARSE_OBJECT       *Op,
      ACPI_STATUS             Status)
  {
@@ -144,7 +144,7 @@ Index: acpica-unix-20180508/source/components/parser/psobject.c
  
  
      ACPI_FUNCTION_TRACE_PTR (PsCompleteFinalOp, WalkState);
-@@ -726,7 +727,7 @@ AcpiPsCompleteFinalOp (
+@@ -724,7 +725,7 @@ AcpiPsCompleteFinalOp (
      {
          if (Op)
          {
@@ -153,7 +153,7 @@ Index: acpica-unix-20180508/source/components/parser/psobject.c
              {
                  WalkState->Op = Op;
                  WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
-@@ -745,41 +746,28 @@ AcpiPsCompleteFinalOp (
+@@ -743,41 +744,28 @@ AcpiPsCompleteFinalOp (
  
                  if (Status == AE_CTRL_TERMINATE)
                  {
@@ -207,7 +207,7 @@ Index: acpica-unix-20180508/source/components/parser/psobject.c
              }
          }
  
-@@ -788,5 +776,5 @@ AcpiPsCompleteFinalOp (
+@@ -786,5 +774,5 @@ AcpiPsCompleteFinalOp (
  
      } while (Op);
  
diff --git a/cve-2017-13695.patch b/cve-2017-13695.patch
index 499946b..a1066af 100644
--- a/cve-2017-13695.patch
+++ b/cve-2017-13695.patch
@@ -67,11 +67,11 @@ 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-20180508/source/components/namespace/nseval.c
+Index: acpica-unix-20191213/source/components/namespace/nseval.c
 ===================================================================
---- acpica-unix-20180508.orig/source/components/namespace/nseval.c
-+++ acpica-unix-20180508/source/components/namespace/nseval.c
-@@ -330,6 +330,16 @@ AcpiNsEvaluate (
+--- acpica-unix-20191213.orig/source/components/namespace/nseval.c
++++ acpica-unix-20191213/source/components/namespace/nseval.c
+@@ -329,6 +329,16 @@ AcpiNsEvaluate (
              Info->ReturnObject = NULL;
          }
      }
diff --git a/debian-big_endian.patch b/debian-big_endian.patch
index adb6717..7c8797f 100644
--- a/debian-big_endian.patch
+++ b/debian-big_endian.patch
@@ -8,26 +8,11 @@ To date, this has been critical for the s390x architecture only.
 
 Signed-off-by: Al Stone <ahs3 at redhat.com>
 
----
- source/compiler/aslcodegen.c      |  109 ++++++++++++++++++------------
- source/compiler/aslopcodes.c      |    4 +
- source/compiler/aslrestype1.c     |   68 +++++++++++++------
- source/compiler/aslrestype1i.c    |   38 +++++++---
- source/compiler/aslrestype2.c     |   25 ++++---
- source/compiler/aslrestype2d.c    |  134 +++++++++++++++++++++----------------
- source/compiler/aslrestype2e.c    |   39 +++++++----
- source/compiler/aslrestype2q.c    |  117 +++++++++++++++++++++-----------
- source/compiler/aslrestype2s.c    |   86 +++++++++++++++++-------
- source/compiler/aslrestype2w.c    |  127 +++++++++++++++++++++--------------
- source/include/acmacros.h         |   15 +++-
- source/include/platform/aclinux.h |    8 ++
- 12 files changed, 487 insertions(+), 283 deletions(-)
-
-Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
+Index: acpica-unix-20209326/source/compiler/aslcodegen.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslcodegen.c
-+++ acpica-unix2-20181003/source/compiler/aslcodegen.c
-@@ -240,16 +240,12 @@ CgWriteAmlOpcode (
+--- acpica-unix-20209326.orig/source/compiler/aslcodegen.c
++++ acpica-unix-20209326/source/compiler/aslcodegen.c
+@@ -237,16 +237,12 @@ CgWriteAmlOpcode (
      ACPI_PARSE_OBJECT       *Op)
  {
      UINT8                   PkgLenFirstByte;
@@ -50,7 +35,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
      /* We expect some DEFAULT_ARGs, just ignore them */
  
-@@ -282,51 +278,52 @@ CgWriteAmlOpcode (
+@@ -279,51 +275,52 @@ CgWriteAmlOpcode (
  
          /* Special opcodes for within a field definition */
  
@@ -114,7 +99,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
          break;
      }
  
-@@ -337,8 +334,8 @@ CgWriteAmlOpcode (
+@@ -334,8 +331,8 @@ CgWriteAmlOpcode (
          if (Op->Asl.AmlPkgLenBytes == 1)
          {
              /* Simplest case -- no bytes to follow, just write the count */
@@ -125,7 +110,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
          }
          else if (Op->Asl.AmlPkgLenBytes != 0)
          {
-@@ -348,7 +345,7 @@ CgWriteAmlOpcode (
+@@ -345,7 +342,7 @@ CgWriteAmlOpcode (
               */
              PkgLenFirstByte = (UINT8)
                  (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) |
@@ -134,7 +119,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
              CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1);
  
-@@ -356,39 +353,47 @@ CgWriteAmlOpcode (
+@@ -353,39 +350,47 @@ CgWriteAmlOpcode (
               * Shift the length over by the 4 bits we just stuffed
               * in the first byte
               */
@@ -194,7 +179,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
          break;
  
      case AML_STRING_OP:
-@@ -422,6 +427,7 @@ CgWriteTableHeader (
+@@ -421,6 +426,7 @@ CgWriteTableHeader (
      ACPI_PARSE_OBJECT       *Op)
  {
      ACPI_PARSE_OBJECT       *Child;
@@ -202,7 +187,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
      UINT32                  CommentLength;
      ACPI_COMMENT_NODE       *Current;
  
-@@ -475,7 +481,7 @@ CgWriteTableHeader (
+@@ -478,7 +484,7 @@ CgWriteTableHeader (
      /* OEM Revision */
  
      Child = Child->Asl.Next;
@@ -211,7 +196,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
      /* Compiler ID */
  
-@@ -483,12 +489,13 @@ CgWriteTableHeader (
+@@ -486,12 +492,13 @@ CgWriteTableHeader (
  
      /* Compiler version */
  
@@ -228,7 +213,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
      /* Calculate the comment lengths for this definition block parseOp */
  
-@@ -646,7 +653,10 @@ CgWriteNode (
+@@ -625,7 +632,10 @@ CgWriteNode (
      ACPI_PARSE_OBJECT       *Op)
  {
      ASL_RESOURCE_NODE       *Rnode;
@@ -240,7 +225,7 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
      /* Write all comments here. */
  
-@@ -676,13 +686,24 @@ CgWriteNode (
+@@ -649,13 +659,24 @@ CgWriteNode (
      switch (Op->Asl.AmlOpcode)
      {
      case AML_RAW_DATA_BYTE:
@@ -268,10 +253,10 @@ Index: acpica-unix2-20181003/source/compiler/aslcodegen.c
  
      case AML_RAW_DATA_BUFFER:
  
-Index: acpica-unix2-20181003/source/compiler/aslopcodes.c
+Index: acpica-unix-20209326/source/compiler/aslopcodes.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslopcodes.c
-+++ acpica-unix2-20181003/source/compiler/aslopcodes.c
+--- acpica-unix-20209326.orig/source/compiler/aslopcodes.c
++++ acpica-unix-20209326/source/compiler/aslopcodes.c
 @@ -485,6 +485,7 @@ OpcDoUnicode (
      UINT32                  i;
      UINT8                   *AsciiString;
@@ -290,10 +275,10 @@ Index: acpica-unix2-20181003/source/compiler/aslopcodes.c
      }
  
      /*
-Index: acpica-unix2-20181003/source/compiler/aslrestype1.c
+Index: acpica-unix-20209326/source/compiler/aslrestype1.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype1.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype1.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype1.c
++++ acpica-unix-20209326/source/compiler/aslrestype1.c
 @@ -142,6 +142,11 @@ RsDoMemory24Descriptor (
      ACPI_PARSE_OBJECT       *LengthOp = NULL;
      ASL_RESOURCE_NODE       *Rnode;
@@ -490,10 +475,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype1.c
              RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength));
              break;
-Index: acpica-unix2-20181003/source/compiler/aslrestype1i.c
+Index: acpica-unix-20209326/source/compiler/aslrestype1i.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype1i.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype1i.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype1i.c
++++ acpica-unix-20209326/source/compiler/aslrestype1i.c
 @@ -198,6 +198,8 @@ RsDoFixedDmaDescriptor (
      ACPI_PARSE_OBJECT       *InitializerOp;
      ASL_RESOURCE_NODE       *Rnode;
@@ -630,10 +615,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype1i.c
 +    ACPI_MOVE_16_TO_16(&Descriptor->Irq.IrqMask, &IrqMask);
      return (Rnode);
  }
-Index: acpica-unix2-20181003/source/compiler/aslrestype2.c
+Index: acpica-unix-20209326/source/compiler/aslrestype2.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype2.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype2.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype2.c
++++ acpica-unix-20209326/source/compiler/aslrestype2.c
 @@ -76,6 +76,7 @@ RsDoGeneralRegisterDescriptor (
      ACPI_PARSE_OBJECT       *InitializerOp;
      ASL_RESOURCE_NODE       *Rnode;
@@ -747,9 +732,9 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2.c
      }
  
      /* Add optional ResSource string if present */
-@@ -384,14 +406,15 @@ RsDoInterruptDescriptor (
-         Rover = ACPI_ADD_PTR (
-                     AML_RESOURCE, &(Rover->ByteItem), StringLength);
+@@ -381,14 +403,15 @@ RsDoInterruptDescriptor (
+     {
+         strcpy ((char *) Rover, (char *) ResSourceString);
  
 -        Descriptor->ExtendedIrq.ResourceLength = (UINT16)
 -            (Descriptor->ExtendedIrq.ResourceLength + StringLength);
@@ -765,7 +750,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2.c
      return (Rnode);
  }
  
-@@ -439,7 +462,7 @@ RsDoVendorLargeDescriptor (
+@@ -436,7 +459,7 @@ RsDoVendorLargeDescriptor (
  
      Descriptor = Rnode->Buffer;
      Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE;
@@ -774,10 +759,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2.c
  
      /* Point to end-of-descriptor for vendor data */
  
-Index: acpica-unix2-20181003/source/compiler/aslrestype2d.c
+Index: acpica-unix-20209326/source/compiler/aslrestype2d.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype2d.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype2d.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype2d.c
++++ acpica-unix-20209326/source/compiler/aslrestype2d.c
 @@ -79,7 +79,13 @@ RsDoDwordIoDescriptor (
      ACPI_PARSE_OBJECT       *GranOp = NULL;
      ASL_RESOURCE_NODE       *Rnode;
@@ -1133,10 +1118,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2d.c
      Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) +
          OptionIndex + StringLength;
      return (Rnode);
-Index: acpica-unix2-20181003/source/compiler/aslrestype2e.c
+Index: acpica-unix-20209326/source/compiler/aslrestype2e.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype2e.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype2e.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype2e.c
++++ acpica-unix-20209326/source/compiler/aslrestype2e.c
 @@ -78,6 +78,13 @@ RsDoExtendedIoDescriptor (
      ACPI_PARSE_OBJECT       *GranOp = NULL;
      ASL_RESOURCE_NODE       *Rnode;
@@ -1242,10 +1227,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2e.c
      Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) +
          StringLength;
      return (Rnode);
-Index: acpica-unix2-20181003/source/compiler/aslrestype2q.c
+Index: acpica-unix-20209326/source/compiler/aslrestype2q.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype2q.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype2q.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype2q.c
++++ acpica-unix-20209326/source/compiler/aslrestype2q.c
 @@ -80,7 +80,13 @@ RsDoQwordIoDescriptor (
      ASL_RESOURCE_NODE       *Rnode;
      UINT8                   *OptionalFields;
@@ -1584,10 +1569,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2q.c
      Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) +
          OptionIndex + StringLength;
      return (Rnode);
-Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
+Index: acpica-unix-20209326/source/compiler/aslrestype2s.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype2s.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype2s.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype2s.c
++++ acpica-unix-20209326/source/compiler/aslrestype2s.c
 @@ -340,9 +340,14 @@ RsDoGpioIntDescriptor (
      UINT16                  VendorLength;
      UINT16                  InterruptLength;
@@ -1741,7 +1726,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
  
  
      InitializerOp = Info->DescriptorTypeOp->Asl.Child;
-@@ -577,7 +597,7 @@ RsDoGpioIoDescriptor (
+@@ -576,7 +596,7 @@ RsDoGpioIoDescriptor (
          sizeof (AML_RESOURCE_LARGE_HEADER));
  
      Descriptor = Rnode->Buffer;
@@ -1750,7 +1735,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      Descriptor->Gpio.DescriptorType = ACPI_RESOURCE_NAME_GPIO;
      Descriptor->Gpio.RevisionId = AML_RESOURCE_GPIO_REVISION;
      Descriptor->Gpio.ConnectionType = AML_RESOURCE_GPIO_TYPE_IO;
-@@ -591,11 +611,11 @@ RsDoGpioIoDescriptor (
+@@ -590,11 +610,11 @@ RsDoGpioIoDescriptor (
  
      /* Setup offsets within the descriptor */
  
@@ -1766,7 +1751,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
  
      /* Process all child initialization nodes */
  
-@@ -605,7 +625,7 @@ RsDoGpioIoDescriptor (
+@@ -604,7 +624,7 @@ RsDoGpioIoDescriptor (
          {
          case 0: /* Share Type [Flags] (_SHR) */
  
@@ -1775,7 +1760,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3);
              break;
-@@ -619,21 +639,21 @@ RsDoGpioIoDescriptor (
+@@ -618,21 +638,21 @@ RsDoGpioIoDescriptor (
  
          case 2: /* Debounce Timeout [WORD] (_DBT) */
  
@@ -1800,7 +1785,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_IORESTRICTION,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0, 2);
              break;
-@@ -659,7 +679,7 @@ RsDoGpioIoDescriptor (
+@@ -658,7 +678,7 @@ RsDoGpioIoDescriptor (
  
          case 7: /* Resource Usage (consumer/producer) */
  
@@ -1809,7 +1794,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              break;
  
          case 8: /* Resource Tag (Descriptor Name) */
-@@ -673,13 +693,14 @@ RsDoGpioIoDescriptor (
+@@ -672,13 +692,14 @@ RsDoGpioIoDescriptor (
               * This field is required in order to calculate the length
               * of the ResourceSource at runtime.
               */
@@ -1827,7 +1812,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              }
              break;
  
-@@ -692,7 +713,9 @@ RsDoGpioIoDescriptor (
+@@ -691,7 +712,9 @@ RsDoGpioIoDescriptor (
               *  (implies resource source must immediately follow the pin list.)
               *  Name: _PIN
               */
@@ -1838,7 +1823,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              InterruptList++;
              PinCount++;
  
-@@ -723,6 +746,11 @@ RsDoGpioIoDescriptor (
+@@ -722,6 +745,11 @@ RsDoGpioIoDescriptor (
          InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
      }
  
@@ -1850,7 +1835,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      MpSaveGpioInfo (Info->MappingOp, Descriptor,
          PinCount, PinList, ResourceSource);
      return (Rnode);
-@@ -753,8 +781,12 @@ RsDoI2cSerialBusDescriptor (
+@@ -752,8 +780,12 @@ RsDoI2cSerialBusDescriptor (
      UINT16                  ResSourceLength;
      UINT16                  VendorLength;
      UINT16                  DescriptorSize;
@@ -1863,7 +1848,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
  
  
      InitializerOp = Info->DescriptorTypeOp->Asl.Child;
-@@ -777,12 +809,14 @@ RsDoI2cSerialBusDescriptor (
+@@ -776,12 +808,14 @@ RsDoI2cSerialBusDescriptor (
          sizeof (AML_RESOURCE_LARGE_HEADER));
  
      Descriptor = Rnode->Buffer;
@@ -1880,7 +1865,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
  
      if (Info->DescriptorTypeOp->Asl.ParseOpcode == PARSEOP_I2C_SERIALBUS_V2)
      {
-@@ -802,7 +836,7 @@ RsDoI2cSerialBusDescriptor (
+@@ -801,7 +835,7 @@ RsDoI2cSerialBusDescriptor (
          {
          case 0: /* Slave Address [WORD] (_ADR) */
  
@@ -1889,7 +1874,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress));
              break;
-@@ -816,14 +850,14 @@ RsDoI2cSerialBusDescriptor (
+@@ -815,14 +849,14 @@ RsDoI2cSerialBusDescriptor (
  
          case 2: /* Connection Speed [DWORD] (_SPE) */
  
@@ -1906,7 +1891,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.TypeSpecificFlags), 0);
              break;
-@@ -883,6 +917,9 @@ RsDoI2cSerialBusDescriptor (
+@@ -882,6 +916,9 @@ RsDoI2cSerialBusDescriptor (
          InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
      }
  
@@ -1916,7 +1901,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
      return (Rnode);
  }
-@@ -912,6 +949,9 @@ RsDoSpiSerialBusDescriptor (
+@@ -911,6 +948,9 @@ RsDoSpiSerialBusDescriptor (
      UINT16                  ResSourceLength;
      UINT16                  VendorLength;
      UINT16                  DescriptorSize;
@@ -1926,7 +1911,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      UINT32                  CurrentByteOffset;
      UINT32                  i;
  
-@@ -962,21 +1002,21 @@ RsDoSpiSerialBusDescriptor (
+@@ -961,21 +1001,21 @@ RsDoSpiSerialBusDescriptor (
          {
          case 0: /* Device Selection [WORD] (_ADR) */
  
@@ -1951,7 +1936,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 0);
              break;
-@@ -997,7 +1037,7 @@ RsDoSpiSerialBusDescriptor (
+@@ -996,7 +1036,7 @@ RsDoSpiSerialBusDescriptor (
  
          case 5: /* Connection Speed [DWORD] (_SPE) */
  
@@ -1960,7 +1945,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed));
              break;
-@@ -1071,6 +1111,10 @@ RsDoSpiSerialBusDescriptor (
+@@ -1070,6 +1110,10 @@ RsDoSpiSerialBusDescriptor (
          InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
      }
  
@@ -1971,7 +1956,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
      return (Rnode);
  }
-@@ -1100,6 +1144,10 @@ RsDoUartSerialBusDescriptor (
+@@ -1099,6 +1143,10 @@ RsDoUartSerialBusDescriptor (
      UINT16                  ResSourceLength;
      UINT16                  VendorLength;
      UINT16                  DescriptorSize;
@@ -1982,7 +1967,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      UINT32                  CurrentByteOffset;
      UINT32                  i;
  
-@@ -1149,21 +1197,21 @@ RsDoUartSerialBusDescriptor (
+@@ -1148,21 +1196,21 @@ RsDoUartSerialBusDescriptor (
          {
          case 0: /* Connection Speed (Baud Rate) [DWORD] (_SPE) */
  
@@ -2007,7 +1992,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_STOPBITS,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 2, 2);
              break;
-@@ -1177,7 +1225,7 @@ RsDoUartSerialBusDescriptor (
+@@ -1176,7 +1224,7 @@ RsDoUartSerialBusDescriptor (
  
          case 4: /* Endianness [Flag] (_END) */
  
@@ -2016,7 +2001,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateBitField (InitializerOp, ACPI_RESTAG_ENDIANNESS,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 7);
              break;
-@@ -1191,21 +1239,21 @@ RsDoUartSerialBusDescriptor (
+@@ -1190,21 +1238,21 @@ RsDoUartSerialBusDescriptor (
  
          case 6: /* Flow Control [Flags] (_FLC) */
  
@@ -2041,7 +2026,7 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
              RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX,
                  CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize));
              break;
-@@ -1275,6 +1323,11 @@ RsDoUartSerialBusDescriptor (
+@@ -1274,6 +1322,11 @@ RsDoUartSerialBusDescriptor (
          InitializerOp = RsCompleteNodeAndGetNext (InitializerOp);
      }
  
@@ -2053,10 +2038,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2s.c
      MpSaveSerialInfo (Info->MappingOp, Descriptor, ResourceSource);
      return (Rnode);
  }
-Index: acpica-unix2-20181003/source/compiler/aslrestype2w.c
+Index: acpica-unix-20209326/source/compiler/aslrestype2w.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslrestype2w.c
-+++ acpica-unix2-20181003/source/compiler/aslrestype2w.c
+--- acpica-unix-20209326.orig/source/compiler/aslrestype2w.c
++++ acpica-unix-20209326/source/compiler/aslrestype2w.c
 @@ -81,6 +81,12 @@ RsDoWordIoDescriptor (
      UINT8                   *OptionalFields;
      UINT16                  StringLength = 0;
@@ -2400,10 +2385,10 @@ Index: acpica-unix2-20181003/source/compiler/aslrestype2w.c
      Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) +
          OptionIndex + StringLength;
      return (Rnode);
-Index: acpica-unix2-20181003/source/include/acmacros.h
+Index: acpica-unix-20209326/source/include/acmacros.h
 ===================================================================
---- acpica-unix2-20181003.orig/source/include/acmacros.h
-+++ acpica-unix2-20181003/source/include/acmacros.h
+--- acpica-unix-20209326.orig/source/include/acmacros.h
++++ acpica-unix-20209326/source/include/acmacros.h
 @@ -98,9 +98,12 @@
                                             ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\
                                             ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];}
@@ -2482,11 +2467,11 @@ Index: acpica-unix2-20181003/source/include/acmacros.h
  
  #define ACPI_MOVE_32_TO_16(d, s)        ACPI_MOVE_16_TO_16(d, s)    /* Truncate to 16 */
  
-Index: acpica-unix2-20181003/source/include/platform/aclinux.h
+Index: acpica-unix-20209326/source/include/platform/aclinux.h
 ===================================================================
---- acpica-unix2-20181003.orig/source/include/platform/aclinux.h
-+++ acpica-unix2-20181003/source/include/platform/aclinux.h
-@@ -193,6 +193,7 @@
+--- acpica-unix-20209326.orig/source/include/platform/aclinux.h
++++ acpica-unix-20209326/source/include/platform/aclinux.h
+@@ -198,6 +198,7 @@
  
  #ifdef ACPI_USE_STANDARD_HEADERS
  #include <unistd.h>
@@ -2494,7 +2479,7 @@ Index: acpica-unix2-20181003/source/include/platform/aclinux.h
  #endif
  
  /* Define/disable kernel-specific declarators */
-@@ -227,6 +228,10 @@
+@@ -232,6 +233,10 @@
  #define __cdecl
  #endif
  
@@ -2505,32 +2490,32 @@ Index: acpica-unix2-20181003/source/include/platform/aclinux.h
  #endif /* __KERNEL__ */
  
  #endif /* __ACLINUX_H__ */
-Index: acpica-unix2-20181003/source/compiler/aslanalyze.c
+Index: acpica-unix-20209326/source/compiler/aslanalyze.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslanalyze.c
-+++ acpica-unix2-20181003/source/compiler/aslanalyze.c
-@@ -461,7 +461,7 @@ ApCheckForGpeNameConflict (
+--- acpica-unix-20209326.orig/source/compiler/aslanalyze.c
++++ acpica-unix-20209326/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_MOVE_NAME (Name, &Op->Asl.NameSeg);
-     Name[ACPI_NAME_SIZE] = 0;
+-    ACPI_MOVE_32_TO_32 (Name, Op->Asl.NameSeg);
++    ACPI_COPY_NAMESEG (Name, Op->Asl.NameSeg);
+     Name[ACPI_NAMESEG_SIZE] = 0;
  
      /*
-@@ -488,7 +488,7 @@ ApCheckForGpeNameConflict (
+@@ -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_MOVE_NAME (Target, Name);
++    ACPI_COPY_NAMESEG (Target, Name);
  
      /* Inject opposite letter ("L" versus "E") */
  
-Index: acpica-unix2-20181003/source/compiler/asllookup.c
+Index: acpica-unix-20209326/source/compiler/asllookup.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/asllookup.c
-+++ acpica-unix2-20181003/source/compiler/asllookup.c
+--- acpica-unix-20209326.orig/source/compiler/asllookup.c
++++ acpica-unix-20209326/source/compiler/asllookup.c
 @@ -119,6 +119,7 @@ LkIsObjectUsed (
  {
      ACPI_NAMESPACE_NODE     *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle);
@@ -2561,10 +2546,10 @@ Index: acpica-unix2-20181003/source/compiler/asllookup.c
              AslError (ASL_REMARK, ASL_MSG_NOT_REFERENCED,
                  LkGetNameOp (Node->Op), AslGbl_MsgBuffer);
              return (AE_OK);
-Index: acpica-unix2-20181003/source/compiler/aslmain.c
+Index: acpica-unix-20209326/source/compiler/aslmain.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/compiler/aslmain.c
-+++ acpica-unix2-20181003/source/compiler/aslmain.c
+--- acpica-unix-20209326.orig/source/compiler/aslmain.c
++++ acpica-unix-20209326/source/compiler/aslmain.c
 @@ -101,18 +101,6 @@ main (
  
      signal (SIGINT, AslSignalHandler);
@@ -2584,10 +2569,10 @@ Index: acpica-unix2-20181003/source/compiler/aslmain.c
      AcpiOsInitialize ();
      ACPI_DEBUG_INITIALIZE (); /* For debug version only */
  
-Index: acpica-unix2-20181003/source/common/acfileio.c
+Index: acpica-unix-20209326/source/common/acfileio.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/common/acfileio.c
-+++ acpica-unix2-20181003/source/common/acfileio.c
+--- acpica-unix-20209326.orig/source/common/acfileio.c
++++ acpica-unix-20209326/source/common/acfileio.c
 @@ -280,6 +280,7 @@ AcGetOneTableFromFile (
      ACPI_TABLE_HEADER       *Table;
      INT32                   Count;
@@ -2654,21 +2639,21 @@ Index: acpica-unix2-20181003/source/common/acfileio.c
              (UINT32) (FileSize - TableOffset));
          return (AE_BAD_HEADER);
      }
-Index: acpica-unix2-20181003/source/common/dmtable.c
+Index: acpica-unix-20209326/source/common/dmtable.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/common/dmtable.c
-+++ acpica-unix2-20181003/source/common/dmtable.c
-@@ -550,7 +550,7 @@ AcpiDmDumpDataTable (
+--- acpica-unix-20209326.orig/source/common/dmtable.c
++++ acpica-unix-20209326/source/common/dmtable.c
+@@ -551,7 +551,7 @@ AcpiDmDumpDataTable (
       */
-     if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS))
+     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))
          {
-@@ -564,13 +564,14 @@ AcpiDmDumpDataTable (
-     else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT))
+@@ -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);
@@ -2683,7 +2668,7 @@ Index: acpica-unix2-20181003/source/common/dmtable.c
          Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader);
          if (ACPI_FAILURE (Status))
          {
-@@ -781,6 +782,7 @@ AcpiDmDumpTable (
+@@ -782,6 +783,7 @@ AcpiDmDumpTable (
      BOOLEAN                 LastOutputBlankLine = FALSE;
      ACPI_STATUS             Status;
      char                    RepairedName[8];
@@ -2691,7 +2676,7 @@ Index: acpica-unix2-20181003/source/common/dmtable.c
  
  
      if (!Info)
-@@ -1177,8 +1179,9 @@ AcpiDmDumpTable (
+@@ -1178,8 +1180,9 @@ AcpiDmDumpTable (
              /* Checksum, display and validate */
  
              AcpiOsPrintf ("%2.2X", *Target);
@@ -2703,7 +2688,7 @@ Index: acpica-unix2-20181003/source/common/dmtable.c
                  ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum);
  
              if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum)
-@@ -1243,14 +1246,14 @@ AcpiDmDumpTable (
+@@ -1244,14 +1247,14 @@ AcpiDmDumpTable (
  
              /* DMAR subtable types */
  
@@ -2721,7 +2706,7 @@ Index: acpica-unix2-20181003/source/common/dmtable.c
              break;
  
          case ACPI_DMT_DMAR_SCOPE:
-@@ -1341,14 +1344,14 @@ AcpiDmDumpTable (
+@@ -1342,14 +1345,14 @@ AcpiDmDumpTable (
  
              /* HEST subtable types */
  
@@ -2739,7 +2724,7 @@ Index: acpica-unix2-20181003/source/common/dmtable.c
              break;
  
          case ACPI_DMT_HESTNTFY:
-@@ -1428,13 +1431,14 @@ AcpiDmDumpTable (
+@@ -1429,13 +1432,14 @@ AcpiDmDumpTable (
  
              /* NFIT subtable types */
  
@@ -2756,10 +2741,10 @@ Index: acpica-unix2-20181003/source/common/dmtable.c
                  AcpiDmNfitSubnames[Temp16]);
              break;
  
-Index: acpica-unix2-20181003/source/common/dmtables.c
+Index: acpica-unix-20209326/source/common/dmtables.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/common/dmtables.c
-+++ acpica-unix2-20181003/source/common/dmtables.c
+--- acpica-unix-20209326.orig/source/common/dmtables.c
++++ acpica-unix-20209326/source/common/dmtables.c
 @@ -142,7 +142,9 @@ AdCreateTableHeader (
      ACPI_TABLE_HEADER       *Table)
  {
@@ -2808,7 +2793,7 @@ Index: acpica-unix2-20181003/source/common/dmtables.c
      /*
 @@ -221,7 +226,7 @@ AdCreateTableHeader (
      AcpiOsPrintf (
-         "DefinitionBlock (\"\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n",
+         "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);
@@ -2823,3785 +2808,3822 @@ Index: acpica-unix2-20181003/source/common/dmtables.c
 +    ACPI_MOVE_32_TO_32(&AmlLength, &Table->Length);
 +    AmlLength -= sizeof (ACPI_TABLE_HEADER);
      AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER));
-     ASL_CV_INIT_FILETREE(Table, AmlStart, AmlLength);
  
-Index: acpica-unix2-20181003/source/common/dmtbdump.c
+     AcpiUtSetIntegerWidth (Table->Revision);
+Index: acpica-unix-20209326/source/compiler/dtfield.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/common/dmtbdump.c
-+++ acpica-unix2-20181003/source/common/dmtbdump.c
-@@ -277,6 +277,8 @@ AcpiDmDumpRsdt (
-     UINT32                  Entries;
-     UINT32                  Offset;
-     UINT32                  i;
-+    UINT32		    Length;
-+    UINT32		    Address;
+--- acpica-unix-20209326.orig/source/compiler/dtfield.c
++++ acpica-unix-20209326/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;
+ }
  
-     /* Point to start of table pointer array */
-@@ -286,12 +288,14 @@ AcpiDmDumpRsdt (
+Index: acpica-unix-20209326/source/compiler/dtsubtable.c
+===================================================================
+--- acpica-unix-20209326.orig/source/compiler/dtsubtable.c
++++ acpica-unix-20209326/source/compiler/dtsubtable.c
+@@ -378,6 +378,21 @@ DtSetSubtableLength (
+         return;
+     }
  
-     /* RSDT uses 32-bit pointers */
+-    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-unix-20209326/source/compiler/dttable1.c
+===================================================================
+--- acpica-unix-20209326.orig/source/compiler/dttable1.c
++++ acpica-unix-20209326/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;
  
--    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;
+     /* 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;
-+    UINT32                  Length;
-+    UINT64		    Address;
++    UINT16                  Tmp16;
++    UINT32                  Tmp32;
  
  
-     /* Point to start of table pointer array */
-@@ -326,12 +332,14 @@ AcpiDmDumpXsdt (
+     /* Main table */
+@@ -408,10 +420,11 @@ DtCompileDbg2 (
+     /* Main table fields */
  
-     /* XSDT uses 64-bit pointers */
+     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);
  
--    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);
+-    SubtableCount = Dbg2Header->InfoCount;
++    ACPI_MOVE_32_TO_32(&SubtableCount, &Dbg2Header->InfoCount);
+     DtPushSubtable (Subtable);
  
-     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;
+     /* Process all Device Information subtables (Count = InfoCount) */
+@@ -438,7 +451,7 @@ DtCompileDbg2 (
  
-     /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */
+         /* BaseAddressRegister GAS array (Required, size is RegisterCount) */
  
--    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 (
+-        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 (
  
-     /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */
+         /* AddressSize array (Required, size = RegisterCount) */
  
--    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))
+-        DeviceInfo->AddressSizeOffset = CurrentOffset;
++        ACPI_MOVE_16_TO_16(&DeviceInfo->AddressSizeOffset, &CurrentOffset);
+         for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++)
          {
-             return;
-@@ -384,10 +390,9 @@ AcpiDmDumpFadt (
+             Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Size,
+@@ -470,7 +483,7 @@ DtCompileDbg2 (
  
-     /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */
+         /* NamespaceString device identifier (Required, size = NamePathLength) */
  
--    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);
+-        DeviceInfo->NamepathOffset = CurrentOffset;
++        ACPI_MOVE_16_TO_16(&DeviceInfo->NamepathOffset, &CurrentOffset);
+         Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Name,
+             &Subtable);
          if (ACPI_FAILURE (Status))
-         {
-             return;
-@@ -395,9 +400,9 @@ AcpiDmDumpFadt (
+@@ -480,8 +493,9 @@ DtCompileDbg2 (
  
-         /* Check for FADT revision 5 fields and up (ACPI 5.0+) */
+         /* Update the device info header */
  
--        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 (
+-        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);
  
-         /* Check for FADT revision 6 fields and up (ACPI 6.0+) */
+         /* OemData - Variable-length data (Optional, size = OemDataLength) */
+@@ -508,8 +522,8 @@ DtCompileDbg2 (
  
--        if (Table->Length > ACPI_FADT_V3_SIZE)
-+        if (Length > ACPI_FADT_V3_SIZE)
+         if (Subtable && Subtable->Length)
          {
--            Status = AcpiDmDumpTable (Table->Length, 0, Table, 0,
-+            Status = AcpiDmDumpTable (Length, 0, Table, 0,
-                 AcpiDmTableInfoFadt6);
-             if (ACPI_FAILURE (Status))
-             {
-@@ -420,11 +425,11 @@ AcpiDmDumpFadt (
+-            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);
  
-     /* Validate various fields in the FADT, including length */
+             DtInsertSubtable (ParentTable, Subtable);
+         }
+@@ -549,6 +563,8 @@ DtCompileDmar (
+     ACPI_DMAR_DEVICE_SCOPE  *DmarDeviceScope;
+     UINT32                  DeviceScopeLength;
+     UINT32                  PciPathLength;
++    UINT16		    Tmp16;
++    UINT16		    HdrType;
  
--    AcpiTbCreateLocalFadt (Table, Table->Length);
-+    AcpiTbCreateLocalFadt (Table, Length);
  
-     /* Validate FADT length against the revision */
+     Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable);
+@@ -578,8 +594,11 @@ DtCompileDmar (
+         DtPushSubtable (Subtable);
  
--    AcpiDmValidateFadtLength (Table->Revision, Table->Length);
-+    AcpiDmValidateFadtLength (Table->Revision, Length);
- }
+         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:
  
-@@ -450,6 +455,7 @@ AcpiDmValidateFadtLength (
-     UINT32                  Length)
- {
-     UINT32                  ExpectedLength;
-+    UINT32		    Tmp32;
+@@ -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 (
  
-     switch (Revision)
-@@ -485,7 +491,8 @@ AcpiDmValidateFadtLength (
-         return;
+         DtPushSubtable (Subtable);
+         DeviceScopeLength = DmarHeader->Length - Subtable->Length -
+-            ParentTable->Length;
++		ParentTable->Length;
+         while (DeviceScopeLength)
+         {
+             Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarScope,
+@@ -762,7 +781,7 @@ DtCompileDrtm (
+         Count++;
      }
  
--    if (Length == ExpectedLength)
-+    ACPI_MOVE_32_TO_32(&Tmp32, &Length);
-+    if (Tmp32 == ExpectedLength)
-     {
-         return;
+-    DrtmVtl->ValidatedTableCount = Count;
++    ACPI_MOVE_32_TO_32(&DrtmVtl->ValidatedTableCount, &Count);
+     DtPopSubtable ();
+     ParentTable = DtPeekSubtable ();
+ 
+@@ -800,7 +819,7 @@ DtCompileDrtm (
+         Count++;
      }
-@@ -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);
- }
-Index: acpica-unix2-20181003/source/common/dmtbdump1.c
-===================================================================
---- acpica-unix2-20181003.orig/source/common/dmtbdump1.c
-+++ acpica-unix2-20181003/source/common/dmtbdump1.c
-@@ -79,17 +79,21 @@ AcpiDmDumpAsf (
-     UINT32                  DataOffset = 0;
-     UINT32                  i;
-     UINT8                   Type;
-+    UINT32		    Len;
-+    UINT16		    SubLen;
  
+-    DrtmRl->ResourceCount = Count;
++    ACPI_MOVE_32_TO_32(&DrtmRl->ResourceCount, &Count);
+     DtPopSubtable ();
+     ParentTable = DtPeekSubtable ();
  
-     /* No main table, only subtables */
+@@ -895,6 +914,7 @@ DtCompileGtdt (
+     ACPI_DMTABLE_INFO       *InfoTable;
+     UINT32                  GtCount;
+     ACPI_TABLE_HEADER       *Header;
++    ACPI_GTDT_TIMER_BLOCK   *TimerBlock;
  
-+    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;
-         }
+     ParentTable = DtPeekSubtable ();
+@@ -982,8 +1002,9 @@ DtCompileGtdt (
+             DtPushSubtable (Subtable);
+             ParentTable = DtPeekSubtable ();
  
--        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++)
+-            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)
              {
-                 AcpiOsPrintf ("\n");
--                Status = AcpiDmDumpTable (Table->Length, DataOffset,
-+                Status = AcpiDmDumpTable (Len, DataOffset,
-                     DataTable, DataLength, DataInfoTable);
-                 if (ACPI_FAILURE (Status))
-                 {
-@@ -209,15 +212,14 @@ AcpiDmDumpAsf (
+@@ -1036,6 +1057,7 @@ DtCompileFpdt (
+     ACPI_DMTABLE_INFO       *InfoTable;
+     DT_FIELD                **PFieldList = (DT_FIELD **) List;
+     DT_FIELD                *SubtableStart;
++    UINT16		    HdrType;
  
-         /* Point to next subtable */
  
--        if (!Subtable->Header.Length)
-+        if (!SubLen)
-         {
-             AcpiOsPrintf ("Invalid zero subtable header length\n");
-             return;
-         }
+     while (*PFieldList)
+@@ -1054,7 +1076,8 @@ DtCompileFpdt (
  
--        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);
-     }
- }
+         FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
  
-@@ -241,12 +243,13 @@ AcpiDmDumpCpep (
- {
-     ACPI_STATUS             Status;
-     ACPI_CPEP_POLLING       *Subtable;
--    UINT32                  Length = Table->Length;
-+    UINT32                  Length;
-     UINT32                  Offset = sizeof (ACPI_TABLE_CPEP);
+-        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;
  
-     /* 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 */
+     Status = DtCompileTable (PFieldList, AcpiDmTableInfoHest,
+@@ -1129,8 +1153,9 @@ DtCompileHest (
+         /* Get subtable type */
  
-     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 (
+         SubtableStart = *PFieldList;
+-        DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0);
++        DtCompileInteger ((UINT8 *) &Tmp16, *PFieldList, 2, 0);
  
-     /* Subtables (Resource Groups) */
++	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;
  
-+    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))
+     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;
-@@ -334,19 +342,20 @@ AcpiDmDumpCsrt (
-             return;
+             return (Status);
          }
+-        Iort->NodeOffset += PaddingLength;
++        NodeOffset += PaddingLength;
+     }
++    ACPI_MOVE_32_TO_32(&Iort->NodeOffset, &NodeOffset);
  
--        SubOffset += Subtable->SharedInfoLength;
-+	ACPI_MOVE_32_TO_32(&SharedInfoLength, &Subtable->SharedInfoLength);
-+        SubOffset += SharedInfoLength;
- 
-         /* Sub-Subtables (Resource Descriptors) */
+     NodeNumber = 0;
+     while (*PFieldList)
+@@ -1585,7 +1613,7 @@ DtCompileIort (
+                 ItsNumber++;
+             }
  
-         SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table,
-             Offset + SubOffset);
+-            IortItsGroup->ItsCount = ItsNumber;
++            ACPI_MOVE_32_TO_32(&IortItsGroup->ItsCount, &ItsNumber);
+             break;
  
--        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))
+         case ACPI_IORT_NODE_NAMED_COMPONENT:
+@@ -1619,15 +1647,16 @@ DtCompileIort (
+             }
+             else
              {
-                 return;
-@@ -356,7 +365,7 @@ AcpiDmDumpCsrt (
+-                if (NodeLength > IortNode->MappingOffset)
++		ACPI_MOVE_32_TO_32(&MappingOffset, &IortNode->MappingOffset);
++                if (NodeLength > MappingOffset)
+                 {
+                     return (AE_BAD_DATA);
+                 }
  
-             /* Resource-specific info buffer */
+-                if (NodeLength < IortNode->MappingOffset)
++                if (NodeLength < MappingOffset)
+                 {
+                     Status = DtCompilePadding (
+-                        IortNode->MappingOffset - NodeLength,
++                        MappingOffset - NodeLength,
+                         &Subtable);
+                     if (ACPI_FAILURE (Status))
+                     {
+@@ -1635,7 +1664,8 @@ DtCompileIort (
+                     }
  
--            InfoLength = SubSubtable->Length - SubSubOffset;
-+            InfoLength = SubSubLength - SubSubOffset;
-             if (InfoLength)
-             {
-                 Status = AcpiDmDumpTable (Length,
-@@ -371,16 +380,15 @@ AcpiDmDumpCsrt (
+                     DtInsertSubtable (ParentTable, Subtable);
+-                    NodeLength = IortNode->MappingOffset;
++		    ACPI_MOVE_32_TO_32(&MappingOffset, &IortNode->MappingOffset);
++                    NodeLength = MappingOffset;
+                 }
+             }
+             break;
+@@ -1668,7 +1698,7 @@ DtCompileIort (
  
-             /* Point to next sub-subtable */
+             /* Compile global interrupt array */
  
--            SubOffset += SubSubtable->Length;
-+            SubOffset += SubSubLength;
-             SubSubtable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubtable,
--                SubSubtable->Length);
-+                SubSubLength);
-         }
+-            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 */
  
-         /* Point to next subtable */
+             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++;
+             }
  
--        Offset += Subtable->Length;
--        Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable,
--            Subtable->Length);
-+        Offset += SubLength;
-+        Subtable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Subtable, SubLength);
-     }
- }
+-            IortSmmu->ContextInterruptCount = ContextIrptNumber;
++            ACPI_MOVE_32_TO_32(&IortSmmu->ContextInterruptCount, &ContextIrptNumber);
  
-@@ -404,16 +412,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;
+             /* 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++;
+             }
  
-     /* Main table */
+-            IortSmmu->PmuInterruptCount = PmuIrptNumber;
++            ACPI_MOVE_32_TO_32(&IortSmmu->PmuInterruptCount, &PmuIrptNumber);
+             break;
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -423,11 +435,12 @@ AcpiDmDumpDbg2 (
-     /* Subtables */
+         case ACPI_IORT_NODE_SMMU_V3:
+@@ -1764,7 +1794,7 @@ DtCompileIort (
  
-     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;
-@@ -437,13 +450,13 @@ AcpiDmDumpDbg2 (
+         /* Compile Array of ID mappings */
  
-         for (i = 0; i < Subtable->RegisterCount; i++)
+-        IortNode->MappingOffset = NodeLength;
++        ACPI_MOVE_32_TO_32(&IortNode->MappingOffset, &NodeLength);
+         IdMappingNumber = 0;
+         while (*PFieldList)
          {
--            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;
-@@ -454,13 +467,13 @@ AcpiDmDumpDbg2 (
+@@ -1785,7 +1815,7 @@ DtCompileIort (
+             IdMappingNumber++;
+         }
  
-         for (i = 0; i < Subtable->RegisterCount; i++)
+-        IortNode->MappingCount = IdMappingNumber;
++        ACPI_MOVE_32_TO_32(&IortNode->MappingCount, &IdMappingNumber);
+         if (!IdMappingNumber)
          {
--            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;
+             IortNode->MappingOffset = 0;
+@@ -1800,7 +1830,7 @@ DtCompileIort (
+         NodeNumber++;
+     }
  
-             Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
--                Subtable->Length, AcpiDmTableInfoDbg2Size);
-+                SubLength, AcpiDmTableInfoDbg2Size);
-             if (ACPI_FAILURE (Status))
-             {
-                 return;
-@@ -470,12 +483,13 @@ AcpiDmDumpDbg2 (
-         /* Dump the Namestring (required) */
+-    Iort->NodeCount = NodeNumber;
++    ACPI_MOVE_32_TO_32(&Iort->NodeCount, &NodeNumber);
+     return (AE_OK);
+ }
  
-         AcpiOsPrintf ("\n");
--        ArrayOffset = Subtable->NamepathOffset;
-+	ACPI_MOVE_16_TO_16(&Tmp16, &Subtable->NamepathOffset);
-+        ArrayOffset = Tmp16;
-         AbsoluteOffset = Offset + ArrayOffset;
-         Array = (UINT8 *) Subtable + ArrayOffset;
+Index: acpica-unix-20209326/source/compiler/dttable2.c
+===================================================================
+--- acpica-unix-20209326.orig/source/compiler/dttable2.c
++++ acpica-unix-20209326/source/compiler/dttable2.c
+@@ -345,7 +345,7 @@ DtCompileMpst (
+     DtPushSubtable (Subtable);
  
-         Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array,
--            Subtable->Length, AcpiDmTableInfoDbg2Name);
-+            SubLength, AcpiDmTableInfoDbg2Name);
-         if (ACPI_FAILURE (Status))
-         {
-             return;
-@@ -485,9 +499,10 @@ AcpiDmDumpDbg2 (
+     MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer);
+-    SubtableCount = MpstChannelInfo->PowerNodeCount;
++    ACPI_MOVE_16_TO_16(&SubtableCount, &MpstChannelInfo->PowerNodeCount);
  
-         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;
-@@ -496,9 +511,9 @@ AcpiDmDumpDbg2 (
+     while (*PFieldList && SubtableCount)
+     {
+@@ -363,8 +363,8 @@ DtCompileMpst (
+         DtPushSubtable (Subtable);
  
-         /* Point to next 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);
  
--        Offset += Subtable->Length;
-+        Offset += SubLength;
-         Subtable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Subtable,
--            Subtable->Length);
-+            SubLength);
-     }
- }
+         ParentTable = DtPeekSubtable ();
  
-@@ -522,17 +537,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;
+@@ -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 (
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -542,13 +560,14 @@ AcpiDmDumpDmar (
-     /* Subtables */
- 
-     Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+         NfitHeader = ACPI_CAST_PTR (ACPI_NFIT_HEADER, Subtable->Buffer);
  
-         AcpiOsPrintf ("\n");
-+	ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length);
-         Status = AcpiDmDumpTable (Length, Offset, Subtable,
--            Subtable->Length, AcpiDmTableInfoDmarHdr);
-+            SubLength, AcpiDmTableInfoDmarHdr);
-         if (ACPI_FAILURE (Status))
+-        switch (NfitHeader->Type)
++	ACPI_MOVE_16_TO_16(&SubType, &NfitHeader->Type);
++        switch (SubType)
          {
-             return;
-@@ -556,7 +575,8 @@ AcpiDmDumpDmar (
+         case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
  
-         AcpiOsPrintf ("\n");
+@@ -610,7 +612,7 @@ DtCompileNfit (
+         DtInsertSubtable (ParentTable, Subtable);
+         DtPopSubtable ();
  
--        switch (Subtable->Type)
-+	ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type);
+-        switch (NfitHeader->Type)
 +        switch (SubType)
          {
-         case ACPI_DMAR_TYPE_HARDWARE_UNIT:
+         case ACPI_NFIT_TYPE_INTERLEAVE:
  
-@@ -591,12 +611,12 @@ AcpiDmDumpDmar (
-         default:
+@@ -636,7 +638,7 @@ DtCompileNfit (
+                 Count++;
+             }
  
-             AcpiOsPrintf ("\n**** Unknown DMAR subtable type 0x%X\n\n",
--                Subtable->Type);
-+                SubType);
-             return;
-         }
+-            Interleave->LineCount = Count;
++            ACPI_MOVE_32_TO_32(&Interleave->LineCount, &Count);
+             break;
  
-         Status = AcpiDmDumpTable (Length, Offset, Subtable,
--            Subtable->Length, InfoTable);
-+            SubLength, InfoTable);
-         if (ACPI_FAILURE (Status))
-         {
-             return;
-@@ -605,8 +625,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 */
+         case ACPI_NFIT_TYPE_SMBIOS:
+@@ -681,7 +683,7 @@ DtCompileNfit (
+                 Count++;
+             }
  
-@@ -614,7 +634,7 @@ AcpiDmDumpDmar (
-         }
+-            Hint->HintCount = (UINT16) Count;
++            ACPI_MOVE_32_TO_16(&Hint->HintCount, &Count);
+             break;
  
-         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,
-@@ -655,9 +675,8 @@ AcpiDmDumpDmar (
- NextSubtable:
-         /* Point to next subtable */
+         default:
+@@ -957,7 +959,7 @@ DtCompilePmtt (
  
--        Offset += Subtable->Length;
--        Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable,
--            Subtable->Length);
-+        Offset += SubLength;
-+        Subtable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Subtable, SubLength);
-     }
- }
+             PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER,
+                 (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER)));
+-            DomainCount = PmttController->DomainCount;
++            ACPI_MOVE_16_TO_16(&DomainCount, &PmttController->DomainCount);
  
-@@ -684,12 +703,15 @@ AcpiDmDumpDrtm (
-     ACPI_DRTM_RESOURCE_LIST *DrtmRl;
-     ACPI_DRTM_DPS_ID        *DrtmDps;
-     UINT32                  Count;
-+    UINT32                  ValidatedCount;
-+    UINT32                  ResourceCount;
-+    UINT32		    Length;
+             while (DomainCount)
+             {
+@@ -1177,6 +1179,7 @@ DtCompileS3pt (
+     DT_SUBTABLE             *ParentTable;
+     ACPI_DMTABLE_INFO       *InfoTable;
+     DT_FIELD                *SubtableStart;
++    UINT16		    HdrType;
  
  
-     /* Main table */
+     Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt,
+@@ -1204,7 +1207,8 @@ DtCompileS3pt (
  
--    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;
-@@ -703,7 +725,7 @@ AcpiDmDumpDrtm (
+         S3ptHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer);
  
-     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))
-@@ -716,10 +738,11 @@ AcpiDmDumpDrtm (
-     /* Dump Validated table addresses */
+-        switch (S3ptHeader->Type)
++	ACPI_MOVE_16_TO_16(&HdrType, &S3ptHeader->Type);
++        switch (HdrType)
+         {
+         case ACPI_S3PT_TYPE_RESUME:
  
-     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))
-@@ -735,7 +758,7 @@ AcpiDmDumpDrtm (
+@@ -1517,6 +1521,7 @@ DtCompileSlit (
+     UINT32                  Localities;
+     UINT32                  LocalityListLength;
+     UINT8                   *LocalityBuffer;
++    UINT32		    Tmp;
  
-     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))
-@@ -748,10 +771,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))
-@@ -767,7 +791,7 @@ AcpiDmDumpDrtm (
+     Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlit,
+@@ -1529,7 +1534,8 @@ DtCompileSlit (
+     ParentTable = DtPeekSubtable ();
+     DtInsertSubtable (ParentTable, Subtable);
  
-     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);
- }
+-    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;
  
-@@ -791,12 +815,13 @@ AcpiDmDumpEinj (
- {
+@@ -1741,6 +1747,7 @@ DtCompileTcpa (
+     ACPI_TABLE_TCPA_HDR     *TcpaHeader;
+     DT_SUBTABLE             *ParentTable;
      ACPI_STATUS             Status;
-     ACPI_WHEA_HEADER        *Subtable;
--    UINT32                  Length = Table->Length;
-+    UINT32                  Length;
-     UINT32                  Offset = sizeof (ACPI_TABLE_EINJ);
++    UINT16		    PlatClass;
  
  
-     /* Main table */
+     /* Compile the main table */
+@@ -1761,7 +1768,8 @@ DtCompileTcpa (
+      */
+     TcpaHeader = ACPI_CAST_PTR (ACPI_TABLE_TCPA_HDR, ParentTable->Buffer);
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj);
-     if (ACPI_FAILURE (Status))
+-    switch (TcpaHeader->PlatformClass)
++    ACPI_MOVE_16_TO_16(&PlatClass, &TcpaHeader->PlatformClass);
++    switch (PlatClass)
      {
-@@ -806,7 +831,7 @@ AcpiDmDumpEinj (
-     /* Subtables */
+     case ACPI_TCPA_CLIENT_TABLE:
  
-     Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         AcpiOsPrintf ("\n");
-         Status = AcpiDmDumpTable (Length, Offset, Subtable,
-@@ -844,12 +869,13 @@ AcpiDmDumpErst (
- {
-     ACPI_STATUS             Status;
-     ACPI_WHEA_HEADER        *Subtable;
--    UINT32                  Length = Table->Length;
-+    UINT32                  Length;
-     UINT32                  Offset = sizeof (ACPI_TABLE_ERST);
+@@ -1809,6 +1817,7 @@ DtCompileTpm2Rev3 (
+     ACPI_TABLE_TPM23        *Tpm23Header;
+     DT_SUBTABLE             *ParentTable;
+     ACPI_STATUS             Status = AE_OK;
++    UINT32		    Tmp32;
  
  
-     /* Main table */
+     Status = DtCompileTable (PFieldList, AcpiDmTableInfoTpm23,
+@@ -1820,7 +1829,8 @@ DtCompileTpm2Rev3 (
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -859,7 +885,7 @@ AcpiDmDumpErst (
-     /* Subtables */
+     /* Subtable type depends on the StartMethod */
  
-     Subtable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
+-    switch (Tpm23Header->StartMethod)
++    ACPI_MOVE_32_TO_32(&Tmp32, &Tpm23Header->StartMethod);
++    switch (Tmp32)
      {
-         AcpiOsPrintf ("\n");
-         Status = AcpiDmDumpTable (Length, Offset, Subtable,
-@@ -897,17 +923,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;
+     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;
  
-     /* There is no main table (other than the standard ACPI header) */
  
-     /* Subtables */
+     ParentTable = DtPeekSubtable ();
+@@ -1910,7 +1921,8 @@ DtCompileTpm2 (
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
+     /* Subtable type depends on the StartMethod */
+ 
+-    switch (Tpm2Header->StartMethod)
++    ACPI_MOVE_32_TO_32(&Tmp32, &Tpm2Header->StartMethod);
++    switch (Tmp32)
      {
-         /* Common subtable header */
+     case ACPI_TPM2_COMMAND_BUFFER_WITH_ARM_SMC:
  
-@@ -919,7 +947,8 @@ AcpiDmDumpFpdt (
-             return;
-         }
+@@ -2126,6 +2138,9 @@ DtCompileWpbt (
+     ACPI_TABLE_WPBT         *Table;
+     ACPI_STATUS             Status;
+     UINT16                  Length;
++    UINT16                  Tmp16;
++    UINT16		    *Ptr16;
++    UINT32		    ii;
  
--        switch (Subtable->Type)
-+	ACPI_MOVE_16_TO_16(&Type, &Subtable->Type);
-+        switch (Type)
-         {
-         case ACPI_FPDT_TYPE_BOOT:
  
-@@ -933,8 +962,7 @@ AcpiDmDumpFpdt (
+     /* Compile the main table */
+@@ -2153,7 +2168,16 @@ DtCompileWpbt (
  
-         default:
+     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++;
++    }
  
--            AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n",
--                Subtable->Type);
-+            AcpiOsPrintf ("\n**** Unknown FPDT subtable type 0x%X\n\n", Type);
+     ParentTable = DtPeekSubtable ();
+     DtInsertSubtable (ParentTable, Subtable);
+Index: acpica-unix-20209326/source/components/disassembler/dmbuffer.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/disassembler/dmbuffer.c
++++ acpica-unix-20209326/source/components/disassembler/dmbuffer.c
+@@ -204,7 +204,7 @@ AcpiDmByteList (
  
-             /* Attempt to continue */
  
-@@ -982,16 +1010,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;
+     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
+@@ -304,7 +304,8 @@ AcpiDmIsUuidBuffer (
+     /* Extract the byte list info */
  
-     /* Main table */
+     ByteData = NextOp->Named.Data;
+-    ByteCount = (UINT32) NextOp->Common.Value.Integer;
++    /* ByteCount = (UINT32) NextOp->Common.Value.Integer; */
++    ByteCount = (UINT32) NextOp->Common.Value.Size;
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoGtdt);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -1001,7 +1032,7 @@ AcpiDmDumpGtdt (
-     /* Subtables */
- 
-     Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+     /* Byte count must be exactly 16 */
  
-@@ -1019,8 +1050,9 @@ AcpiDmDumpGtdt (
-         case ACPI_GTDT_TYPE_TIMER_BLOCK:
+@@ -424,7 +425,8 @@ AcpiDmIsUnicodeBuffer (
+     /* Extract the byte list info */
  
-             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);
+     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);
  
-             InfoTable = AcpiDmTableInfoGtdt0;
-             break;
-@@ -1041,8 +1073,9 @@ AcpiDmDumpGtdt (
-             return;
-         }
+     /*
+@@ -852,19 +854,22 @@ AcpiDmUnicode (
+     UINT32                  WordCount;
+     UINT32                  i;
+     int                     OutputValue;
++    UINT16		    Tmp16;
  
-+	ACPI_MOVE_16_TO_16(&SubLength, &Subtable->Length);
-         Status = AcpiDmDumpTable (Length, Offset, Subtable,
--            Subtable->Length, InfoTable);
-+            SubLength, InfoTable);
-         if (ACPI_FAILURE (Status))
-         {
-             return;
-@@ -1101,16 +1134,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;
  
+     /* Extract the buffer info as a WORD buffer */
  
-     /* Main table */
+     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));
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -1120,10 +1155,11 @@ AcpiDmDumpHest (
-     /* Subtables */
+     /* Write every other byte as an ASCII character */
  
-     Subtable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
+     AcpiOsPrintf ("\"");
+     for (i = 0; i < (WordCount - 1); i++)
      {
-         BankCount = 0;
--        switch (Subtable->Type)
-+	ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type);
-+        switch (SubType)
-         {
-         case ACPI_HEST_TYPE_IA32_CHECK:
+-        OutputValue = (int) WordData[i];
++        /* OutputValue = (int) WordData[i]; */
++	ACPI_MOVE_16_TO_16(&Tmp16, &WordData[i]);
++	OutputValue = (int) Tmp16;
  
-Index: acpica-unix2-20181003/source/common/dmtbdump2.c
-===================================================================
---- acpica-unix2-20181003.orig/source/common/dmtbdump2.c
-+++ acpica-unix2-20181003/source/common/dmtbdump2.c
-@@ -75,15 +75,21 @@ AcpiDmDumpIort (
-     ACPI_IORT_SMMU          *IortSmmu = NULL;
-     UINT32                  Offset;
-     UINT32                  NodeOffset;
-+    UINT16		    NodeLength;
-     UINT32                  Length;
-     ACPI_DMTABLE_INFO       *InfoTable;
-     char                    *String;
-     UINT32                  i;
--
-+    UINT32		    TableLen;
-+    UINT32		    ItsCount;
-+    UINT32		    MappingCount;
-+    UINT32		    CtxIntCount;
-+    UINT32		    PmuIntCount;
+         /* Handle values that must be escaped */
  
-     /* Main table */
+@@ -973,16 +978,18 @@ AcpiDmCheckForHardwareId (
+     ACPI_PARSE_OBJECT       *Op)
+ {
+     UINT32                  Name;
++    UINT32                  TmpName;
+     ACPI_PARSE_OBJECT       *NextOp;
  
--    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;
-@@ -94,18 +100,19 @@ AcpiDmDumpIort (
  
-     /* Dump the OptionalPadding (optional) */
+     /* Get the NameSegment */
  
--    if (Iort->NodeOffset > Offset)
-+    ACPI_MOVE_32_TO_32(&NodeOffset, &Iort->NodeOffset);
-+    if (NodeOffset > Offset)
+-    Name = AcpiPsGetName (Op);
+-    if (!Name)
++    TmpName = AcpiPsGetName (Op);
++    if (!TmpName)
      {
--        Status = AcpiDmDumpTable (Table->Length, Offset, Table,
--            Iort->NodeOffset - Offset, AcpiDmTableInfoIortPad);
-+        Status = AcpiDmDumpTable (TableLen, Offset, Table,
-+            NodeOffset - Offset, AcpiDmTableInfoIortPad);
-         if (ACPI_FAILURE (Status))
-         {
-             return;
-         }
+         return;
      }
++    ACPI_MOVE_32_TO_32(&Name, &TmpName);
  
--    Offset = Iort->NodeOffset;
--    while (Offset < Table->Length)
-+    ACPI_MOVE_32_TO_32(&Offset, &Iort->NodeOffset);
-+    while (Offset < TableLen)
-     {
-         /* Common subtable header */
+     NextOp = AcpiPsGetDepthNext (NULL, Op);
+     if (!NextOp)
+Index: acpica-unix-20209326/source/components/disassembler/dmopcode.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/disassembler/dmopcode.c
++++ acpica-unix-20209326/source/components/disassembler/dmopcode.c
+@@ -244,6 +244,7 @@ AcpiDmPredefinedDescription (
+     char                        *NameString;
+     int                         LastCharIsDigit;
+     int                         LastCharsAreHex;
++    char			TmpName[ACPI_NAMESEG_SIZE + 1];
  
-@@ -141,7 +148,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;
+     if (!Op)
+@@ -261,7 +262,9 @@ AcpiDmPredefinedDescription (
  
-         case ACPI_IORT_NODE_SMMU:
-@@ -154,7 +162,8 @@ AcpiDmDumpIort (
-         case ACPI_IORT_NODE_SMMU_V3:
+     /* Predefined name must start with an underscore */
  
-             InfoTable = AcpiDmTableInfoIort4;
--            Length = IortNode->Length - NodeOffset;
-+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
-+            Length = NodeLength - NodeOffset;
-             break;
+-    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 ACPI_IORT_NODE_PMCG:
-@@ -170,7 +179,8 @@ AcpiDmDumpIort (
+-    case AML_INT_NAMEDFIELD_OP:
++    case AML_INT_NAMEDFIELD_OP: {
  
-             /* Attempt to continue */
+-        Length = AcpiDmDumpName (Op->Named.Name);
++	UINT32 TmpName;
++
++	ACPI_MOVE_32_TO_32(&TmpName, &Op->Named.Name);
++        Length = AcpiDmDumpName (TmpName);
  
--            if (!IortNode->Length)
-+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
-+            if (!NodeLength)
-             {
-                 AcpiOsPrintf ("Invalid zero length IORT node\n");
-                 return;
-@@ -181,7 +191,7 @@ AcpiDmDumpIort (
-         /* Dump the node subtable header */
+         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);
  
-         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))
-@@ -201,9 +211,10 @@ AcpiDmDumpIort (
+         AcpiDmCommaIfFieldMember (Op);
  
-             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);
-                     NodeOffset += 4;
-@@ -215,11 +226,11 @@ AcpiDmDumpIort (
+-        Info->BitOffset += (UINT32) Op->Common.Value.Integer;
++        Info->BitOffset += (UINT32) Op->Common.Value.Size;
+         break;
++    }
  
-             /* Dump the Padding (optional) */
+     case AML_INT_RESERVEDFIELD_OP:
  
--            if (IortNode->Length > NodeOffset)
-+	    ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
-+            if (NodeLength > NodeOffset)
-             {
--                Status = AcpiDmDumpTable (Table->Length, Offset + NodeOffset,
--                    Table, IortNode->Length - NodeOffset,
--                    AcpiDmTableInfoIort1a);
-+                Status = AcpiDmDumpTable (TableLen, Offset + NodeOffset,
-+                    Table, NodeLength - NodeOffset, AcpiDmTableInfoIort1a);
-                 if (ACPI_FAILURE (Status))
-                 {
-                     return;
-@@ -236,8 +247,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))
-@@ -245,10 +256,11 @@ AcpiDmDumpIort (
-                     return;
-                 }
+         /* Offset() -- Must account for previous offsets */
  
--                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))
-@@ -259,10 +271,11 @@ AcpiDmDumpIort (
-                     NodeOffset += 8;
-                 }
+-        Offset = (UINT32) Op->Common.Value.Integer;
++        Offset = Op->Common.Value.Size;
+         Info->BitOffset += Offset;
  
--                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))
-@@ -282,12 +295,13 @@ AcpiDmDumpIort (
+         if (Info->BitOffset % 8 == 0)
+@@ -942,10 +949,15 @@ AcpiDmDisassembleOneOp (
  
-         /* Dump the ID mappings */
+         if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP)
+         {
++	    /* UINT64 Tmp64; */
++
+             AcpiOsPrintf ("\n");
  
--        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))
-@@ -301,8 +315,9 @@ AcpiDmDumpIort (
- NextSubtable:
-         /* Point to next node subtable */
+             Aml = Child->Named.Data;
++	    /*
+             Length = (UINT32) Child->Common.Value.Integer;
++	    */
++            Length = (UINT32) Child->Common.Value.Size;
  
--        Offset += IortNode->Length;
--        IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, IortNode->Length);
-+	ACPI_MOVE_16_TO_16(&NodeLength, &IortNode->Length);
-+        Offset += NodeLength;
-+        IortNode = ACPI_ADD_PTR (ACPI_IORT_NODE, IortNode, NodeLength);
-     }
- }
+             Info->Level += 1;
+             Info->MappingOp = Op;
+Index: acpica-unix-20209326/source/components/disassembler/dmresrcl.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/disassembler/dmresrcl.c
++++ acpica-unix-20209326/source/components/disassembler/dmresrcl.c
+@@ -141,7 +141,8 @@ AcpiDmMemoryFields (
+     UINT32                  Level)
+ {
+     UINT32                  i;
+-
++    UINT16		    Tmp16;
++    UINT32		    Tmp32;
  
-@@ -333,11 +348,14 @@ AcpiDmDumpIvrs (
-     ACPI_IVRS_DE_HEADER     *DeviceEntry;
-     ACPI_IVRS_HEADER        *Subtable;
-     ACPI_DMTABLE_INFO       *InfoTable;
-+    UINT32		    Length;
-+    UINT16		    SubLength;
+     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;
  
-     /* Main table */
+         case 32:
  
--    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;
-@@ -346,13 +364,14 @@ AcpiDmDumpIvrs (
-     /* Subtables */
+-            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;
  
-     Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+         default:
+@@ -190,7 +191,9 @@ AcpiDmAddressFields (
+     UINT32                  Level)
+ {
+     UINT32                  i;
+-
++    UINT16		    Tmp16;
++    UINT32		    Tmp32;
++    UINT64		    Tmp64;
  
-         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))
+     AcpiOsPrintf ("\n");
+ 
+@@ -202,20 +205,20 @@ AcpiDmAddressFields (
          {
-             return;
-@@ -379,7 +398,7 @@ AcpiDmDumpIvrs (
+         case 16:
  
-             /* Attempt to continue */
+-            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;
  
--            if (!Subtable->Length)
-+            if (!SubLength)
-             {
-                 AcpiOsPrintf ("Invalid zero length subtable\n");
-                 return;
-@@ -390,8 +409,8 @@ AcpiDmDumpIvrs (
-         /* Dump the subtable */
+         case 32:
  
-         AcpiOsPrintf ("\n");
--        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
--            Subtable->Length, InfoTable);
-+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-+            SubLength, InfoTable);
-         if (ACPI_FAILURE (Status))
-         {
-             return;
-@@ -405,7 +424,7 @@ AcpiDmDumpIvrs (
-             DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, Subtable,
-                 sizeof (ACPI_IVRS_HARDWARE));
+-            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;
  
--            while (EntryOffset < (Offset + Subtable->Length))
-+            while (EntryOffset < (Offset + SubLength))
-             {
-                 AcpiOsPrintf ("\n");
-                 /*
-@@ -467,7 +486,7 @@ AcpiDmDumpIvrs (
+         case 64:
  
-                 /* Dump the Device Entry */
+-            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;
  
--                Status = AcpiDmDumpTable (Table->Length, EntryOffset,
-+                Status = AcpiDmDumpTable (Length, EntryOffset,
-                     DeviceEntry, EntryLength, InfoTable);
-                 if (ACPI_FAILURE (Status))
-                 {
-@@ -483,8 +502,8 @@ AcpiDmDumpIvrs (
- NextSubtable:
-         /* Point to next subtable */
+         default:
+@@ -868,6 +871,7 @@ AcpiDmFixedMemory32Descriptor (
+     UINT32                  Length,
+     UINT32                  Level)
+ {
++    UINT32 Tmp;
  
--        Offset += Subtable->Length;
--        Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, Subtable->Length);
-+        Offset += SubLength;
-+        Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Subtable, SubLength);
-     }
- }
+     /* Dump name and read/write flag */
  
-@@ -510,7 +529,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;
-@@ -518,8 +537,9 @@ AcpiDmDumpLpit (
+@@ -876,12 +880,12 @@ AcpiDmFixedMemory32Descriptor (
+         AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]);
  
-     /* Subtables */
+     AcpiDmIndent (Level + 1);
+-    AcpiDmDumpInteger32 (Resource->FixedMemory32.Address,
+-        "Address Base");
++    ACPI_MOVE_32_TO_32(&Tmp, &Resource->FixedMemory32.Address);
++    AcpiDmDumpInteger32 (Tmp, "Address Base");
  
-+    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 */
+     AcpiDmIndent (Level + 1);
+-    AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength,
+-        "Address Length");
++    ACPI_MOVE_32_TO_32(&Tmp, &Resource->FixedMemory32.AddressLength);
++    AcpiDmDumpInteger32 (Tmp, "Address Length");
  
-@@ -583,13 +603,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;
+     /* Insert a descriptor name */
  
+@@ -913,6 +917,7 @@ AcpiDmGenericRegisterDescriptor (
+     UINT32                  Length,
+     UINT32                  Level)
+ {
++    UINT64		    Tmp64;
  
-     /* Main table */
+     AcpiDmIndent (Level);
+     AcpiOsPrintf ("Register (");
+@@ -926,7 +931,9 @@ AcpiDmGenericRegisterDescriptor (
+     AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset");
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -599,7 +620,7 @@ AcpiDmDumpMadt (
-     /* Subtables */
+     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");
  
-     Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+     /* Optional field for ACPI 3.0 */
  
-@@ -745,11 +766,13 @@ AcpiDmDumpMcfg (
-     ACPI_STATUS             Status;
-     UINT32                  Offset = sizeof (ACPI_TABLE_MCFG);
-     ACPI_MCFG_ALLOCATION    *Subtable;
-+    UINT32		    Len;
+@@ -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);
  
-     /* Main table */
+     /* Insert a descriptor name */
  
--    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))
+@@ -1002,9 +1010,12 @@ AcpiDmInterruptDescriptor (
+     AcpiOsPrintf ("{\n");
+     for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++)
      {
-         return;
-@@ -758,17 +781,17 @@ AcpiDmDumpMcfg (
-     /* Subtables */
++	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);
+     }
  
-     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",
--                sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length));
-+                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))
-         {
-@@ -802,6 +825,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;
-@@ -810,11 +834,13 @@ AcpiDmDumpMpst (
-     UINT16                  SubtableCount;
-     UINT32                  PowerStateCount;
-     UINT32                  ComponentCount;
-+    UINT32		    Length;
+     AcpiDmIndent (Level);
+Index: acpica-unix-20209326/source/components/disassembler/dmresrcl2.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/disassembler/dmresrcl2.c
++++ acpica-unix-20209326/source/components/disassembler/dmresrcl2.c
+@@ -191,22 +191,24 @@ AcpiDmGpioCommon (
+     char                    *DeviceName = NULL;
+     UINT32                  PinCount;
+     UINT32                  i;
++    UINT16		    Tmp16;
  
  
-     /* Main table */
+     /* ResourceSource, ResourceSourceIndex, ResourceType */
  
--    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))
+     AcpiDmIndent (Level + 1);
+-    if (Resource->Gpio.ResSourceOffset)
++    ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.ResSourceOffset);
++    if (Tmp16)
      {
-         return;
-@@ -822,13 +848,14 @@ AcpiDmDumpMpst (
+-        DeviceName = ACPI_ADD_PTR (char,
+-            Resource, Resource->Gpio.ResSourceOffset),
++        DeviceName = ACPI_ADD_PTR (char, Resource, Tmp16),
+         AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX);
+     }
  
-     /* Subtable: Memory Power Node(s) */
+     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)]);
  
--    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);
+     /* Insert a descriptor name */
  
--    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))
-         {
-@@ -837,8 +864,8 @@ AcpiDmDumpMpst (
+@@ -215,15 +217,16 @@ AcpiDmGpioCommon (
  
-         /* Extract the sub-subtable counts */
+     /* Dump the vendor data */
  
--        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);
+-    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);
  
-         /* Sub-subtables - Memory Power State Structure(s) */
-@@ -849,7 +876,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))
-             {
-@@ -859,7 +886,7 @@ AcpiDmDumpMpst (
-             Subtable0A++;
-             PowerStateCount--;
-             Offset += sizeof (ACPI_MPST_POWER_STATE);
--       }
-+        }
+-        AcpiDmDumpRawDataBuffer (VendorData,
+-            Resource->Gpio.VendorLength, Level);
++	ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Gpio.VendorLength);
++        AcpiDmDumpRawDataBuffer (VendorData, Tmp16, Level);
+     }
  
-         /* Sub-subtables - Physical Component ID Structure(s) */
+     AcpiOsPrintf (")\n");
+@@ -233,17 +236,25 @@ AcpiDmGpioCommon (
+     AcpiDmIndent (Level + 1);
+     AcpiOsPrintf ("{   // Pin list\n");
  
-@@ -872,7 +899,7 @@ AcpiDmDumpMpst (
++    /*
+     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);
  
-         while (ComponentCount)
-         {
--            Status = AcpiDmDumpTable (Table->Length, Offset, Subtable0B,
-+            Status = AcpiDmDumpTable (Length, Offset, Subtable0B,
-                 sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B);
-             if (ACPI_FAILURE (Status))
-             {
-@@ -887,17 +914,19 @@ AcpiDmDumpMpst (
-         /* Point to next Memory Power Node subtable */
+-    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);
  
-         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));
+     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) ? "," : "");
      }
  
-     /* Subtable: Count of Memory Power State Characteristic structures */
+@@ -277,16 +288,18 @@ AcpiDmGpioIntDescriptor (
+     UINT32                  Length,
+     UINT32                  Level)
+ {
++    UINT16		    Tmp16;
  
-     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))
-     {
-@@ -912,10 +941,10 @@ AcpiDmDumpMpst (
-     Subtable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, Subtable1,
-         sizeof (ACPI_MPST_DATA_HDR));
+     /* Dump the GpioInt-specific portion of the descriptor */
  
--    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))
-         {
-@@ -948,11 +977,13 @@ AcpiDmDumpMsct (
-     ACPI_STATUS             Status;
-     UINT32                  Offset = sizeof (ACPI_TABLE_MSCT);
-     ACPI_MSCT_PROXIMITY     *Subtable;
-+    UINT32		    Length;
+     /* 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)]);
  
-     /* Main table */
+     /* PinConfig, DebounceTimeout */
  
--    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))
+@@ -299,7 +312,8 @@ AcpiDmGpioIntDescriptor (
      {
-         return;
-@@ -961,12 +992,12 @@ AcpiDmDumpMsct (
-     /* Subtables */
+         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);
  
-     Subtable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+     /* Dump the GpioInt/GpioIo common portion of the descriptor */
  
-         AcpiOsPrintf ("\n");
--        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
-+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-             sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0);
-         if (ACPI_FAILURE (Status))
-         {
-@@ -1001,11 +1032,13 @@ AcpiDmDumpMtmr (
-     ACPI_STATUS             Status;
-     UINT32                  Offset = sizeof (ACPI_TABLE_MTMR);
-     ACPI_MTMR_ENTRY         *Subtable;
-+    UINT32		    Length;
+@@ -329,14 +343,16 @@ AcpiDmGpioIoDescriptor (
+     UINT32                  Length,
+     UINT32                  Level)
+ {
++    UINT16		    Tmp16;
  
+     /* Dump the GpioIo-specific portion of the descriptor */
  
-     /* Main table */
+     /* Shared, PinConfig */
  
--    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;
-@@ -1014,12 +1047,12 @@ AcpiDmDumpMtmr (
-     /* Subtables */
+     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)]);
  
-     Subtable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
+     if (Resource->Gpio.PinConfig <= 3)
      {
-         /* Common subtable header */
+@@ -350,10 +366,13 @@ AcpiDmGpioIoDescriptor (
  
-         AcpiOsPrintf ("\n");
--        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
-+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-             sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0);
-         if (ACPI_FAILURE (Status))
-         {
-@@ -1061,11 +1094,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;
+     /* 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)]);
  
-     /* Main table */
+     /* Dump the GpioInt/GpioIo common portion of the descriptor */
  
--    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;
-@@ -1074,19 +1113,21 @@ AcpiDmDumpNfit (
-     /* Subtables */
+@@ -533,6 +552,7 @@ AcpiDmDumpSerialBusVendorData (
+ {
+     UINT8                   *VendorData;
+     UINT32                  VendorLength;
++    UINT16                  Tmp16;
  
-     Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < TableLength)
+ 
+     /* Get the (optional) vendor data and length */
+@@ -541,8 +561,8 @@ AcpiDmDumpSerialBusVendorData (
      {
-         /* NFIT subtable header */
+     case AML_RESOURCE_I2C_SERIALBUSTYPE:
  
-         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;
-         }
+-        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;
  
--        switch (Subtable->Type)
-+	ACPI_MOVE_16_TO_16(&SubType, &Subtable->Type);
-+        switch (SubType)
-         {
-         case ACPI_NFIT_TYPE_SYSTEM_ADDRESS:
+         VendorData = ACPI_ADD_PTR (UINT8, Resource,
+             sizeof (AML_RESOURCE_I2C_SERIALBUS));
+@@ -550,8 +570,8 @@ AcpiDmDumpSerialBusVendorData (
  
-@@ -1143,7 +1184,7 @@ AcpiDmDumpNfit (
+     case AML_RESOURCE_SPI_SERIALBUSTYPE:
  
-             /* Attempt to continue */
+-        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;
  
--            if (!Subtable->Length)
-+            if (!SubLength)
-             {
-                 AcpiOsPrintf ("Invalid zero length subtable\n");
-                 return;
-@@ -1152,8 +1193,8 @@ AcpiDmDumpNfit (
-         }
+         VendorData = ACPI_ADD_PTR (UINT8, Resource,
+             sizeof (AML_RESOURCE_SPI_SERIALBUS));
+@@ -559,8 +579,8 @@ AcpiDmDumpSerialBusVendorData (
  
-         AcpiOsPrintf ("\n");
--        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
--            Subtable->Length, InfoTable);
-+        Status = AcpiDmDumpTable (TableLength, Offset, Subtable,
-+            SubLength, InfoTable);
-         if (ACPI_FAILURE (Status))
-         {
-             return;
-@@ -1161,13 +1202,14 @@ AcpiDmDumpNfit (
+     case AML_RESOURCE_UART_SERIALBUSTYPE:
  
-         /* Per-subtable variable-length fields */
+-        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;
  
--        switch (Subtable->Type)
-+        switch (SubType)
-         {
-         case ACPI_NFIT_TYPE_INTERLEAVE:
+         VendorData = ACPI_ADD_PTR (UINT8, Resource,
+             sizeof (AML_RESOURCE_UART_SERIALBUS));
+@@ -601,24 +621,29 @@ AcpiDmI2cSerialBusDescriptor (
+ {
+     UINT32                  ResourceSourceOffset;
+     char                    *DeviceName;
++    UINT16		    Tmp16;
++    UINT32		    Tmp32;
  
--            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))
-@@ -1181,12 +1223,11 @@ AcpiDmDumpNfit (
  
-         case ACPI_NFIT_TYPE_SMBIOS:
+     /* SlaveAddress, SlaveMode, ConnectionSpeed, AddressingMode */
  
--            Length = Subtable->Length -
--                sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
-+            Length = SubLength - sizeof (ACPI_NFIT_SMBIOS) + sizeof (UINT8);
++    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);
  
-             if (Length)
-             {
--                Status = AcpiDmDumpTable (Table->Length,
-+                Status = AcpiDmDumpTable (TableLength,
-                     sizeof (ACPI_NFIT_SMBIOS) - sizeof (UINT8),
-                     SmbiosInfo,
-                     Length, AcpiDmTableInfoNfit3a);
-@@ -1200,9 +1241,10 @@ AcpiDmDumpNfit (
+     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)]);
  
-         case ACPI_NFIT_TYPE_FLUSH_ADDRESS:
+     /* ResourceSource is a required field */
  
--            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))
-@@ -1221,8 +1263,8 @@ AcpiDmDumpNfit (
- NextSubtable:
-         /* Point to next subtable */
+-    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;
  
--        Offset += Subtable->Length;
--        Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, Subtable->Length);
-+        Offset += SubLength;
-+        Subtable = ACPI_ADD_PTR (ACPI_NFIT_HEADER, Subtable, SubLength);
-     }
+     DeviceName = ACPI_ADD_PTR (char, Resource, ResourceSourceOffset);
+     AcpiUtPrintString (DeviceName, ACPI_UINT16_MAX);
+Index: acpica-unix-20209326/source/components/disassembler/dmresrcs.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/disassembler/dmresrcs.c
++++ acpica-unix-20209326/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);
  }
  
-@@ -1247,12 +1289,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);
  
+@@ -204,16 +206,19 @@ AcpiDmIoDescriptor (
+     UINT32                  Length,
+     UINT32                  Level)
+ {
++    UINT16 Tmp16;
  
-     /* Main table */
+     AcpiDmIndent (Level);
+     AcpiOsPrintf ("IO (%s,\n",
+         AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]);
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -1262,7 +1305,7 @@ AcpiDmDumpPcct (
-     /* Subtables */
+     AcpiDmIndent (Level + 1);
+-    AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum");
++    ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Io.Minimum);
++    AcpiDmDumpInteger16 (Tmp16, "Range Minimum");
  
-     Subtable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+     AcpiDmIndent (Level + 1);
+-    AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum");
++    ACPI_MOVE_16_TO_16(&Tmp16, &Resource->Io.Maximum);
++    AcpiDmDumpInteger16 (Tmp16, "Range Maximum");
  
-@@ -1402,16 +1445,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;
+     AcpiDmIndent (Level + 1);
+     AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment");
+@@ -251,12 +256,14 @@ AcpiDmFixedIoDescriptor (
+     UINT32                  Length,
+     UINT32                  Level)
+ {
++    UINT16                  Tmp16;
  
+     AcpiDmIndent (Level);
+     AcpiOsPrintf ("FixedIO (\n");
  
-     /* Main table */
+     AcpiDmIndent (Level + 1);
+-    AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address");
++    ACPI_MOVE_16_TO_16(&Tmp16, &Resource->FixedIo.Address);
++    AcpiDmDumpInteger16 (Tmp16, "Address");
  
-+    ACPI_MOVE_32_TO_32(&Length, &Table->Length);
-     Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt);
-     if (ACPI_FAILURE (Status))
-     {
-@@ -1421,13 +1469,14 @@ AcpiDmDumpPmtt (
-     /* Subtables */
+     AcpiDmIndent (Level + 1);
+     AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length");
+Index: acpica-unix-20209326/source/components/dispatcher/dsfield.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/dispatcher/dsfield.c
++++ acpica-unix-20209326/source/components/dispatcher/dsfield.c
+@@ -324,6 +324,7 @@ AcpiDsGetFieldNames (
+     ACPI_STATUS             Status;
+     UINT64                  Position;
+     ACPI_PARSE_OBJECT       *Child;
++    UINT32 TmpName;
  
-     Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+ #ifdef ACPI_EXEC_APP
+     ACPI_OPERAND_OBJECT     *ResultDesc;
+@@ -437,10 +438,17 @@ AcpiDsGetFieldNames (
  
-         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;
-@@ -1446,7 +1495,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;
-@@ -1458,15 +1507,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 */
+             /* Lookup the name, it should already exist */
  
-             AcpiOsPrintf ("\n");
-+	    ACPI_MOVE_16_TO_16(&MemLength, &MemSubtable->Length);
-             Status = AcpiDmDumpTable (Length,
-                 Offset + MemOffset, MemSubtable,
--                MemSubtable->Length, AcpiDmTableInfoPmttHdr);
-+                MemLength, AcpiDmTableInfoPmttHdr);
++	    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))
              {
-                 return;
-@@ -1486,7 +1536,7 @@ AcpiDmDumpPmtt (
- 
-             Status = AcpiDmDumpTable (Length,
-                 Offset + MemOffset, MemSubtable,
--                MemSubtable->Length, AcpiDmTableInfoPmtt1);
-+                MemLength, AcpiDmTableInfoPmtt1);
+                 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
+@@ -689,9 +697,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))
              {
-                 return;
-@@ -1494,13 +1544,14 @@ AcpiDmDumpPmtt (
- 
-             /* Walk the variable count of proximity domains */
+                 ACPI_ERROR_NAMESPACE (WalkState->ScopeInfo,
+Index: acpica-unix-20209326/source/components/events/evgpeblk.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/events/evgpeblk.c
++++ acpica-unix-20209326/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];
  
--            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,
-@@ -1528,15 +1579,16 @@ AcpiDmDumpPmtt (
-             DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubtable,
-                 DomainOffset);
+     ACPI_FUNCTION_TRACE (EvCreateGpeBlock);
+@@ -400,7 +401,7 @@ AcpiEvCreateGpeBlock (
  
--            while (((Offset + MemOffset + DimmOffset) < Table->Length) &&
--                (DimmOffset < MemSubtable->Length))
-+            while (((Offset + MemOffset + DimmOffset) < Length) &&
-+                (DimmOffset < MemLength))
-             {
-                 /* Common subtable header */
+     /* Initialize the new GPE block */
  
-                 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;
-@@ -1556,7 +1608,7 @@ AcpiDmDumpPmtt (
+-    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;
+     }
  
-                 Status = AcpiDmDumpTable (Length,
-                     Offset + MemOffset + DimmOffset, DimmSubtable,
--                    DimmSubtable->Length, AcpiDmTableInfoPmtt2);
-+                    DimmLength, AcpiDmTableInfoPmtt2);
-                 if (ACPI_FAILURE (Status))
-                 {
-                     return;
-@@ -1564,23 +1616,22 @@ AcpiDmDumpPmtt (
++    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)" : ""));
  
-                 /* Point to next DIMM subtable */
+     /* Update global count of currently available GPEs */
+Index: acpica-unix-20209326/source/components/hardware/hwregs.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/hardware/hwregs.c
++++ acpica-unix-20209326/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-unix-20209326/source/components/hardware/hwvalid.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/hardware/hwvalid.c
++++ acpica-unix-20209326/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;
  
--                DimmOffset += DimmSubtable->Length;
-+                DimmOffset += DimmLength;
-                 DimmSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
--                    DimmSubtable, DimmSubtable->Length);
-+                    DimmSubtable, DimmLength);
-             }
  
-             /* Point to next Controller subtable */
+     ACPI_FUNCTION_TRACE (HwValidateIoRequest);
+@@ -162,7 +164,10 @@ AcpiHwValidateIoRequest (
  
--            MemOffset += MemSubtable->Length;
-+            MemOffset += MemLength;
-             MemSubtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
--                MemSubtable, MemSubtable->Length);
-+                MemSubtable, MemLength);
-         }
+     /* Maximum 16-bit address in I/O space */
  
-         /* Point to next Socket subtable */
+-    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-unix-20209326/source/components/namespace/nsaccess.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/namespace/nsaccess.c
++++ acpica-unix-20209326/source/components/namespace/nsaccess.c
+@@ -349,6 +349,7 @@ AcpiNsLookup (
+     UINT32                  SearchParentFlag = ACPI_NS_SEARCH_PARENT;
+     UINT32                  LocalFlags;
+     ACPI_INTERPRETER_MODE   LocalInterpreterMode;
++    UINT32		    Tmp32;
  
--        Offset += Subtable->Length;
--        Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER,
--            Subtable, Subtable->Length);
-+        Offset += SubLength;
-+        Subtable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Subtable, SubLength);
-     }
- }
  
-@@ -1736,6 +1787,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;
+     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-unix-20209326/source/components/namespace/nsparse.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/namespace/nsparse.c
++++ acpica-unix-20209326/source/components/namespace/nsparse.c
+@@ -216,13 +216,14 @@ AcpiNsOneCompleteParse (
  
-     /* Main table */
-@@ -1746,20 +1799,22 @@ AcpiDmDumpS3pt (
-         return 0;
-     }
+     /* Table must consist of at least a complete header */
  
-+    ACPI_MOVE_32_TO_32(&Length, &S3ptTable->Length);
-     Subtable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, S3ptTable, Offset);
--    while (Offset < S3ptTable->Length)
-+    while (Offset < Length)
+-    if (Table->Length < sizeof (ACPI_TABLE_HEADER))
++    ACPI_MOVE_32_TO_32(&AmlLength, &Table->Length);
++    if (AmlLength < sizeof (ACPI_TABLE_HEADER))
      {
-         /* 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:
+         return_ACPI_STATUS (AE_BAD_HEADER);
+     }
  
-@@ -1774,7 +1829,7 @@ AcpiDmDumpS3pt (
-         default:
+     AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER);
+-    AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER);
++    AmlLength -= sizeof (ACPI_TABLE_HEADER);
  
-             AcpiOsPrintf ("\n**** Unknown S3PT subtable type 0x%X\n",
--                Subtable->Type);
-+                SubType);
+     Status = AcpiTbGetOwnerId (TableIndex, &OwnerId);
+     if (ACPI_FAILURE (Status))
+Index: acpica-unix-20209326/source/components/tables/tbdata.c
+===================================================================
+--- acpica-unix-20209326.orig/source/components/tables/tbdata.c
++++ acpica-unix-20209326/source/components/tables/tbdata.c
+@@ -552,6 +552,7 @@ AcpiTbVerifyTempTable (
+     UINT32                  *TableIndex)
+ {
+     ACPI_STATUS             Status = AE_OK;
++    UINT32		    Length;
  
-             /* Attempt to continue */
  
-@@ -1787,7 +1842,7 @@ AcpiDmDumpS3pt (
-         }
+     ACPI_FUNCTION_TRACE (TbVerifyTempTable);
+@@ -581,7 +582,8 @@ AcpiTbVerifyTempTable (
+     {
+         /* Verify the checksum */
  
-         AcpiOsPrintf ("\n");
--        Status = AcpiDmDumpTable (S3ptTable->Length, Offset, Subtable,
-+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-             Subtable->Length, InfoTable);
+-        Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length);
++        ACPI_MOVE_32_TO_32(&Length, &TableDesc->Length);
++        Status = AcpiTbVerifyChecksum (TableDesc->Pointer, Length);
          if (ACPI_FAILURE (Status))
          {
-Index: acpica-unix2-20181003/source/common/dmtbdump3.c
+             ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY,
+Index: acpica-unix-20209326/source/components/tables/tbfadt.c
 ===================================================================
---- acpica-unix2-20181003.orig/source/common/dmtbdump3.c
-+++ acpica-unix2-20181003/source/common/dmtbdump3.c
-@@ -68,9 +68,11 @@ void
- AcpiDmDumpSlic (
-     ACPI_TABLE_HEADER       *Table)
- {
-+    UINT32	Length;
+--- acpica-unix-20209326.orig/source/components/tables/tbfadt.c
++++ acpica-unix-20209326/source/components/tables/tbfadt.c
+@@ -424,18 +424,20 @@ AcpiTbCreateLocalFadt (
+     ACPI_TABLE_HEADER       *Table,
+     UINT32                  Length)
+ {
++    UINT32 Tmp32;
  
--    (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);
- }
+     /*
+      * 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) */
  
-@@ -93,14 +95,17 @@ AcpiDmDumpSlit (
-     ACPI_STATUS             Status;
-     UINT32                  Offset;
-     UINT8                   *Row;
--    UINT32                  Localities;
-+    UINT64                  Localities;
-     UINT32                  i;
-     UINT32                  j;
-+    UINT32		    Length;
-+    UINT64                  Tmp64;
+     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 */
  
-     /* Main table */
+@@ -520,6 +522,8 @@ AcpiTbConvertFadt (
+     UINT8                   Length;
+     UINT8                   Flags;
+     UINT32                  i;
++    UINT32		    Tmp32;
++    UINT64		    Tmp64;
  
--    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))
+ 
+     /*
+@@ -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)
      {
-         return;
-@@ -108,7 +113,8 @@ AcpiDmDumpSlit (
+         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);
  
-     /* Display the Locality NxN Matrix */
+     /*
+      * 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);
  
--    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;
+     /* If Hardware Reduced flag is set, we are all done */
  
-@@ -121,7 +127,7 @@ AcpiDmDumpSlit (
+@@ -614,7 +620,9 @@ AcpiTbConvertFadt (
          {
-             /* Check for beyond EOT */
- 
--            if (Offset >= Table->Length)
-+            if (Offset >= Length)
+             if (Address64->Address)
              {
-                 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 */
+-                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 */
  
--    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 */
+@@ -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);
+             }
+         }
  
-     Subtable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset);
--    while (Offset < Table->Length)
-+    while (Offset < Length)
-     {
-         /* Common subtable header */
+@@ -780,10 +790,14 @@ AcpiTbSetupFadtRegisters (
  
-         AcpiOsPrintf ("\n");
--        Status = AcpiDmDumpTable (Table->Length, Offset, Subtable,
-+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
-             Subtable->Length, AcpiDmTableInfoSratHdr);
-         if (ACPI_FAILURE (Status))
+         if (Source64->Address)
          {
-@@ -240,7 +248,7 @@ AcpiDmDumpSrat (
++	    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,
<Skipped 4420 lines>
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/acpica.git/commitdiff/70586bb3c03e8b97d5e4547c3da5ffddeb7252b1



More information about the pld-cvs-commit mailing list