diff mbox series

[1/2] ACPICA: Update to version 20190215

Message ID 20190215191041.23239-2-colin.king@canonical.com
State Accepted
Headers show
Series ACPICA: Update to version 20190215 | expand

Commit Message

Colin Ian King Feb. 15, 2019, 7:10 p.m. UTC
From: Colin Ian King <colin.king@canonical.com>

changes in this release of ACPICA are detailed at the following
link on the ACPICA developer mailing list:

https://lists.acpica.org/pipermail/devel/2019-February/001868.html

Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
 src/acpica/source/common/ahpredef.c           |   7 +-
 src/acpica/source/common/ahuuids.c            |   2 +-
 src/acpica/source/common/dmextern.c           |   2 +-
 src/acpica/source/common/dmrestag.c           |   2 +-
 src/acpica/source/common/dmtable.c            |   3 +-
 src/acpica/source/common/dmtbdump1.c          |  21 +-
 src/acpica/source/common/dmtbdump3.c          |   5 +
 src/acpica/source/common/dmtbinfo1.c          |  17 +-
 src/acpica/source/common/dmtbinfo2.c          |  24 ++-
 src/acpica/source/common/dmtbinfo3.c          |  14 ++
 src/acpica/source/compiler/aslcompile.c       |   2 +-
 src/acpica/source/compiler/aslcompiler.h      |   4 +-
 src/acpica/source/compiler/aslcompiler.l      |   9 +-
 src/acpica/source/compiler/aslload.c          |   6 +-
 src/acpica/source/compiler/aslmessages.c      |   8 +-
 src/acpica/source/compiler/aslmessages.h      |   6 +-
 src/acpica/source/compiler/asloperands.c      |  10 +-
 src/acpica/source/compiler/aslopt.c           |   2 +-
 src/acpica/source/compiler/aslpredef.c        |   2 +-
 src/acpica/source/compiler/aslprintf.c        |   2 +-
 src/acpica/source/compiler/aslresources.y     |   4 +-
 src/acpica/source/compiler/aslsupport.l       |   2 +-
 src/acpica/source/compiler/aslxref.c          | 118 ++++++++++-
 src/acpica/source/compiler/cvcompiler.c       |  10 +-
 src/acpica/source/compiler/cvparser.c         |   6 +-
 src/acpica/source/compiler/dtexpress.c        |   2 +-
 src/acpica/source/compiler/dtio.c             |   2 +-
 src/acpica/source/compiler/dttable1.c         |  24 ++-
 src/acpica/source/compiler/dttable2.c         |   5 +
 src/acpica/source/compiler/dttemplate.h       |  65 +++---
 .../source/components/debugger/dbdisply.c     |   4 +-
 .../source/components/debugger/dbexec.c       |   4 +-
 .../source/components/debugger/dbnames.c      |   2 +-
 .../source/components/debugger/dbobject.c     |   2 +-
 .../source/components/debugger/dbtest.c       | 163 +++++++++------
 .../source/components/disassembler/dmbuffer.c |   2 +-
 .../source/components/disassembler/dmcstyle.c |   4 +-
 .../source/components/disassembler/dmnames.c  |   2 +-
 .../source/components/disassembler/dmresrc.c  |   4 +-
 .../source/components/disassembler/dmresrcs.c |   2 +-
 .../source/components/dispatcher/dsfield.c    |   6 +
 .../source/components/dispatcher/dsopcode.c   |  13 +-
 .../source/components/dispatcher/dswload2.c   |   2 +-
 src/acpica/source/components/events/evgpe.c   |   2 +-
 .../source/components/events/evregion.c       |   2 +-
 .../source/components/events/evrgnini.c       |  18 --
 src/acpica/source/components/events/evxfgpe.c |   4 +-
 .../source/components/executer/exconvrt.c     |   2 +-
 .../source/components/executer/exfield.c      |  62 ++++++
 .../source/components/executer/exserial.c     |   2 +-
 .../source/components/executer/exutils.c      |   2 +-
 .../source/components/namespace/nsload.c      |   2 +-
 .../source/components/namespace/nsparse.c     |  70 +------
 .../source/components/namespace/nsutils.c     |   2 +-
 src/acpica/source/components/parser/psloop.c  | 195 ------------------
 src/acpica/source/components/parser/psparse.c |   4 +-
 .../source/components/resources/rsdumpinfo.c  |  14 +-
 .../source/components/resources/rsirq.c       |   8 +-
 .../source/components/resources/rsserial.c    |  10 +-
 src/acpica/source/components/tables/tbfadt.c  |   2 +-
 src/acpica/source/components/tables/tbxface.c |   4 +-
 .../source/components/tables/tbxfload.c       |  26 +--
 .../source/components/utilities/utdecode.c    |   5 +-
 .../source/components/utilities/utdelete.c    |   5 +
 .../source/components/utilities/uterror.c     |   9 +-
 src/acpica/source/include/acconfig.h          |   2 +-
 src/acpica/source/include/acdebug.h           |   3 +-
 src/acpica/source/include/acdisasm.h          |   2 +
 src/acpica/source/include/acexcep.h           |   2 +-
 src/acpica/source/include/aclocal.h           |   2 +-
 src/acpica/source/include/acmacros.h          |   2 +-
 src/acpica/source/include/acobject.h          |   1 +
 src/acpica/source/include/acpixf.h            |  10 +-
 src/acpica/source/include/acpredef.h          |  15 ++
 src/acpica/source/include/acrestyp.h          |  14 +-
 src/acpica/source/include/actbinfo.h          |   7 +-
 src/acpica/source/include/actbl1.h            |  20 +-
 src/acpica/source/include/actbl2.h            |  15 +-
 src/acpica/source/include/actbl3.h            |  23 ++-
 src/acpica/source/include/actypes.h           |   3 +-
 src/acpica/source/tools/acpiexec/aeinstall.c  |   1 +
 src/acpica/source/tools/acpiexec/aeregion.c   |  19 +-
 82 files changed, 661 insertions(+), 526 deletions(-)

Comments

Alex Hung Feb. 16, 2019, 2:38 a.m. UTC | #1
On 2019-02-15 11:10 a.m., Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
> 
> changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
> 
> https://lists.acpica.org/pipermail/devel/2019-February/001868.html
> 
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpica/source/common/ahpredef.c           |   7 +-
>  src/acpica/source/common/ahuuids.c            |   2 +-
>  src/acpica/source/common/dmextern.c           |   2 +-
>  src/acpica/source/common/dmrestag.c           |   2 +-
>  src/acpica/source/common/dmtable.c            |   3 +-
>  src/acpica/source/common/dmtbdump1.c          |  21 +-
>  src/acpica/source/common/dmtbdump3.c          |   5 +
>  src/acpica/source/common/dmtbinfo1.c          |  17 +-
>  src/acpica/source/common/dmtbinfo2.c          |  24 ++-
>  src/acpica/source/common/dmtbinfo3.c          |  14 ++
>  src/acpica/source/compiler/aslcompile.c       |   2 +-
>  src/acpica/source/compiler/aslcompiler.h      |   4 +-
>  src/acpica/source/compiler/aslcompiler.l      |   9 +-
>  src/acpica/source/compiler/aslload.c          |   6 +-
>  src/acpica/source/compiler/aslmessages.c      |   8 +-
>  src/acpica/source/compiler/aslmessages.h      |   6 +-
>  src/acpica/source/compiler/asloperands.c      |  10 +-
>  src/acpica/source/compiler/aslopt.c           |   2 +-
>  src/acpica/source/compiler/aslpredef.c        |   2 +-
>  src/acpica/source/compiler/aslprintf.c        |   2 +-
>  src/acpica/source/compiler/aslresources.y     |   4 +-
>  src/acpica/source/compiler/aslsupport.l       |   2 +-
>  src/acpica/source/compiler/aslxref.c          | 118 ++++++++++-
>  src/acpica/source/compiler/cvcompiler.c       |  10 +-
>  src/acpica/source/compiler/cvparser.c         |   6 +-
>  src/acpica/source/compiler/dtexpress.c        |   2 +-
>  src/acpica/source/compiler/dtio.c             |   2 +-
>  src/acpica/source/compiler/dttable1.c         |  24 ++-
>  src/acpica/source/compiler/dttable2.c         |   5 +
>  src/acpica/source/compiler/dttemplate.h       |  65 +++---
>  .../source/components/debugger/dbdisply.c     |   4 +-
>  .../source/components/debugger/dbexec.c       |   4 +-
>  .../source/components/debugger/dbnames.c      |   2 +-
>  .../source/components/debugger/dbobject.c     |   2 +-
>  .../source/components/debugger/dbtest.c       | 163 +++++++++------
>  .../source/components/disassembler/dmbuffer.c |   2 +-
>  .../source/components/disassembler/dmcstyle.c |   4 +-
>  .../source/components/disassembler/dmnames.c  |   2 +-
>  .../source/components/disassembler/dmresrc.c  |   4 +-
>  .../source/components/disassembler/dmresrcs.c |   2 +-
>  .../source/components/dispatcher/dsfield.c    |   6 +
>  .../source/components/dispatcher/dsopcode.c   |  13 +-
>  .../source/components/dispatcher/dswload2.c   |   2 +-
>  src/acpica/source/components/events/evgpe.c   |   2 +-
>  .../source/components/events/evregion.c       |   2 +-
>  .../source/components/events/evrgnini.c       |  18 --
>  src/acpica/source/components/events/evxfgpe.c |   4 +-
>  .../source/components/executer/exconvrt.c     |   2 +-
>  .../source/components/executer/exfield.c      |  62 ++++++
>  .../source/components/executer/exserial.c     |   2 +-
>  .../source/components/executer/exutils.c      |   2 +-
>  .../source/components/namespace/nsload.c      |   2 +-
>  .../source/components/namespace/nsparse.c     |  70 +------
>  .../source/components/namespace/nsutils.c     |   2 +-
>  src/acpica/source/components/parser/psloop.c  | 195 ------------------
>  src/acpica/source/components/parser/psparse.c |   4 +-
>  .../source/components/resources/rsdumpinfo.c  |  14 +-
>  .../source/components/resources/rsirq.c       |   8 +-
>  .../source/components/resources/rsserial.c    |  10 +-
>  src/acpica/source/components/tables/tbfadt.c  |   2 +-
>  src/acpica/source/components/tables/tbxface.c |   4 +-
>  .../source/components/tables/tbxfload.c       |  26 +--
>  .../source/components/utilities/utdecode.c    |   5 +-
>  .../source/components/utilities/utdelete.c    |   5 +
>  .../source/components/utilities/uterror.c     |   9 +-
>  src/acpica/source/include/acconfig.h          |   2 +-
>  src/acpica/source/include/acdebug.h           |   3 +-
>  src/acpica/source/include/acdisasm.h          |   2 +
>  src/acpica/source/include/acexcep.h           |   2 +-
>  src/acpica/source/include/aclocal.h           |   2 +-
>  src/acpica/source/include/acmacros.h          |   2 +-
>  src/acpica/source/include/acobject.h          |   1 +
>  src/acpica/source/include/acpixf.h            |  10 +-
>  src/acpica/source/include/acpredef.h          |  15 ++
>  src/acpica/source/include/acrestyp.h          |  14 +-
>  src/acpica/source/include/actbinfo.h          |   7 +-
>  src/acpica/source/include/actbl1.h            |  20 +-
>  src/acpica/source/include/actbl2.h            |  15 +-
>  src/acpica/source/include/actbl3.h            |  23 ++-
>  src/acpica/source/include/actypes.h           |   3 +-
>  src/acpica/source/tools/acpiexec/aeinstall.c  |   1 +
>  src/acpica/source/tools/acpiexec/aeregion.c   |  19 +-
>  82 files changed, 661 insertions(+), 526 deletions(-)
> 
> diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
> index afa71a1f..58b2d662 100644
> --- a/src/acpica/source/common/ahpredef.c
> +++ b/src/acpica/source/common/ahpredef.c
> @@ -305,6 +305,11 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
>      AH_PREDEF ("_MSM",    "Memory Set Monitoring", "Sets bandwidth monitoring parameters for a memory device"),
>      AH_PREDEF ("_MTL",    "Minimum Throttle Limit", "Returns the minimum throttle limit for a thermal zone"),
>      AH_PREDEF ("_MTP",    "Memory Type", "Resource Descriptor field"),
> +    AH_PREDEF ("_NBS",    "NVDIMM Boot Status", "Returns information about NVDIMM device’s status at boot time"),
> +    AH_PREDEF ("_NCH",    "NVDIMM Current Health Information", "Returns current health information of the NVDIMM device"),
> +    AH_PREDEF ("_NIC",    "NVDIMM Health Error Injection Capabilities", "Returns health error injection capabilities that are supported by the platform"),
> +    AH_PREDEF ("_NIG",    "NVDIMM Inject Health Error Status","Returns currently active health errors and their error attributes that are injected by _NIH"),
> +    AH_PREDEF ("_NIH",    "NVDIMM Inject/Clear Health Errors", "Returns the status of injecting or clearing Health Errors"),
>      AH_PREDEF ("_NTT",    "Notification Temperature Threshold", "Returns a threshold for device temperature change that requires platform notification"),
>      AH_PREDEF ("_OFF",    "Power Off", "Sets a power resource to the off state"),
>      AH_PREDEF ("_ON_",    "Power On", "Sets a power resource to the on state"),
> @@ -393,7 +398,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
>      AH_PREDEF ("_SDD",    "Set Device Data", "Sets data for a SATA device"),
>      AH_PREDEF ("_SEG",    "PCI Segment", "Returns a device's PCI Segment Group number"),
>      AH_PREDEF ("_SHL",    "Set Hardware Limit", "Sets the hardware limit enforced by the Power Meter"),
> -    AH_PREDEF ("_SHR",    "Sharable", "Interrupt share status, Resource Descriptor field"),
> +    AH_PREDEF ("_SHR",    "Shareable", "Interrupt share status, Resource Descriptor field"),
>      AH_PREDEF ("_SI_",    "System Indicators", "Predefined scope"),
>      AH_PREDEF ("_SIZ",    "Size", "DMA transfer size, Resource Descriptor field"),
>      AH_PREDEF ("_SLI",    "System Locality Information", "Returns a list of NUMA system localities"),
> diff --git a/src/acpica/source/common/ahuuids.c b/src/acpica/source/common/ahuuids.c
> index 0d0a3590..c9a390ba 100644
> --- a/src/acpica/source/common/ahuuids.c
> +++ b/src/acpica/source/common/ahuuids.c
> @@ -226,7 +226,7 @@ AcpiAhMatchUuid (
>  
>      for (Info = Gbl_AcpiUuids; Info->Description; Info++)
>      {
> -        /* Null string means desciption is a UUID class */
> +        /* Null string means description is a UUID class */
>  
>          if (!Info->String)
>          {
> diff --git a/src/acpica/source/common/dmextern.c b/src/acpica/source/common/dmextern.c
> index 629105fb..8ac2c60c 100644
> --- a/src/acpica/source/common/dmextern.c
> +++ b/src/acpica/source/common/dmextern.c
> @@ -1216,7 +1216,7 @@ AcpiDmCreateSubobjectForExternal (
>   *
>   * DESCRIPTION: Add one external to the namespace by resolvign the external
>   *              (by performing a namespace lookup) and annotating the resulting
> - *              namespace node with the approperiate information if the type
> + *              namespace node with the appropriate information if the type
>   *              is ACPI_TYPE_REGION or ACPI_TYPE_METHOD.
>   *
>   ******************************************************************************/
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index f5789847..c33b0497 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -906,7 +906,7 @@ AcpiDmUpdateResourceName (
>   *
>   * PARAMETERS:  BitIndex            - Index into the resource descriptor
>   *              Resource            - Pointer to the raw resource data
> - *              ResourceIndex       - Index correspoinding to the resource type
> + *              ResourceIndex       - Index corresponding to the resource type
>   *
>   * RETURN:      Pointer to the resource tag (ACPI_NAME). NULL if no match.
>   *
> diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
> index f0fb2aa4..e51ff424 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -320,7 +320,7 @@ static const char           *AcpiDmHestNotifySubnames[] =
>  
>  static const char           *AcpiDmHmatSubnames[] =
>  {
> -    "Memory Subystem Address Range",
> +    "Memory Proximity Domain Attributes",
>      "System Locality Latency and Bandwidth Information",
>      "Memory Side Cache Information",
>      "Unknown Structure Type"         /* Reserved */
> @@ -400,6 +400,7 @@ static const char           *AcpiDmSratSubnames[] =
>      "Processor Local x2APIC Affinity",
>      "GICC Affinity",
>      "GIC ITS Affinity",             /* Acpi 6.2 */
> +    "Generic Initiator Affinity",   /* Acpi 6.3 */
>      "Unknown Subtable Type"         /* Reserved */
>  };
>  
> diff --git a/src/acpica/source/common/dmtbdump1.c b/src/acpica/source/common/dmtbdump1.c
> index e55d6496..c363ac8d 100644
> --- a/src/acpica/source/common/dmtbdump1.c
> +++ b/src/acpica/source/common/dmtbdump1.c
> @@ -1106,9 +1106,26 @@ AcpiDmDumpGtdt (
>          return;
>      }
>  
> -    /* Subtables */
> +    /* Rev 3 fields */
>  
>      Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
> +
> +    if (Table->Revision > 2)
> +    {
> +        SubtableLength = sizeof (ACPI_GTDT_EL2);
> +        Status = AcpiDmDumpTable (Length, Offset, Subtable,
> +            SubtableLength, AcpiDmTableInfoGtdtEl2);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +        Offset += SubtableLength;
> +    }
> +
> +    Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
> +
> +    /* Subtables */
> +
>      while (Offset < Table->Length)
>      {
>          /* Common subtable header */
> @@ -1406,7 +1423,7 @@ AcpiDmDumpHmat (
>          case ACPI_HMAT_TYPE_ADDRESS_RANGE:
>  
>              InfoTable = AcpiDmTableInfoHmat0;
> -            Length = sizeof (ACPI_HMAT_ADDRESS_RANGE);
> +            Length = sizeof (ACPI_HMAT_PROXIMITY_DOMAIN);
>              break;
>  
>          case ACPI_HMAT_TYPE_LOCALITY:
> diff --git a/src/acpica/source/common/dmtbdump3.c b/src/acpica/source/common/dmtbdump3.c
> index f0a8751e..0b9863cc 100644
> --- a/src/acpica/source/common/dmtbdump3.c
> +++ b/src/acpica/source/common/dmtbdump3.c
> @@ -333,6 +333,11 @@ AcpiDmDumpSrat (
>              InfoTable = AcpiDmTableInfoSrat4;
>              break;
>  
> +        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
> +
> +            InfoTable = AcpiDmTableInfoSrat5;
> +            break;
> +
>          default:
>              AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
>                  Subtable->Type);
> diff --git a/src/acpica/source/common/dmtbinfo1.c b/src/acpica/source/common/dmtbinfo1.c
> index 70013701..7d7155d3 100644
> --- a/src/acpica/source/common/dmtbinfo1.c
> +++ b/src/acpica/source/common/dmtbinfo1.c
> @@ -814,6 +814,15 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt[] =
>      ACPI_DMT_TERMINATOR
>  };
>  
> +/* GDTD EL2 timer info. This table is appended to AcpiDmTableInfoGtdt for rev 3 and later */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtEl2[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerGsiv),  "Virtual EL2 Timer GSIV", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerFlags), "Virtual EL2 Timer Flags", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
>  /* GTDT Subtable header (one per Subtable) */
>  
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdtHdr[] =
> @@ -1105,20 +1114,18 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoHmatHdr[] =
>  
>  /* HMAT subtables */
>  
> -/* 0x00: Memory Subsystem Address Range */
> +/* 0x00: Memory proximity domain attributes */
>  
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat0[] =
>  {
>      {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
>      {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
> -    {ACPI_DMT_FLAG1,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Memory Proximity Domain Valid", 0},
> -    {ACPI_DMT_FLAG2,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Reservation Hint", 0},
>      {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
> -    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressBase),    "Physical Address Range Base", 0},
> -    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressLength),  "Physical Address Range Size", 0},
> +    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
> +    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved4),              "Reserved4", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> diff --git a/src/acpica/source/common/dmtbinfo2.c b/src/acpica/source/common/dmtbinfo2.c
> index 6727f0b2..1371af7d 100644
> --- a/src/acpica/source/common/dmtbinfo2.c
> +++ b/src/acpica/source/common/dmtbinfo2.c
> @@ -535,6 +535,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt0[] =
>      {ACPI_DMT_UINT8,    ACPI_MADT0_OFFSET (Id),                     "Local Apic ID", 0},
>      {ACPI_DMT_UINT32,   ACPI_MADT0_OFFSET (LapicFlags),             "Flags (decoded below)", DT_FLAG},
>      {ACPI_DMT_FLAG0,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Processor Enabled", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Runtime Online Capable", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -683,7 +684,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11[] =
>      {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicrBaseAddress),       "Redistributor Base Address", 0},
>      {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ArmMpidr),              "ARM MPIDR", 0},
>      {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
> -    {ACPI_DMT_UINT24,   ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
> +    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -946,7 +948,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoNfit0[] =
>      {ACPI_DMT_FLAG1,    ACPI_NFIT0_FLAG_OFFSET (Flags,0),           "Proximity Domain Valid", 0},
>      {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (Reserved),               "Reserved", 0},
>      {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (ProximityDomain),        "Proximity Domain", 0},
> -    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Address Range GUID", 0},
> +    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Region Type GUID", 0},
>      {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Address),                "Address Range Base", 0},
>      {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Length),                 "Address Range Length", 0},
>      {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (MemoryMapping),          "Memory Map Attribute", 0},
> @@ -1246,6 +1248,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPdtt0[] =
>      {ACPI_DMT_UINT8,    ACPI_PDTT0_OFFSET (Flags),                  "Flags (Decoded Below)", DT_FLAG},
>      {ACPI_DMT_FLAG0,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Runtime Trigger", 0},
>      {ACPI_DMT_FLAG1,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Wait for Completion", 0},
> +    {ACPI_DMT_FLAG2,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Trigger Order", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -1348,6 +1351,9 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt0[] =
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
>      {ACPI_DMT_FLAG0,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Physical package", 0},
>      {ACPI_DMT_FLAG1,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "ACPI Processor ID valid", 0},
> +    {ACPI_DMT_FLAG2,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Processor is a thread", 0},
> +    {ACPI_DMT_FLAG3,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Node is a leaf", 0},
> +    {ACPI_DMT_FLAG4,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Identical Implementation", 0},
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Parent),                 "Parent", 0},
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (AcpiProcessorId),        "ACPI Processor ID", 0},
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (NumberOfPrivResources),  "Private Resource Number", 0},
> @@ -1390,12 +1396,12 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt1[] =
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt2[] =
>  {
>      {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (Reserved),               "Reserved", 0},
> -    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "VENDOR_ID", 0},
> -    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "LEVEL_1_ID", 0},
> -    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "LEVEL_2_ID", 0},
> -    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "MAJOR_REV", 0},
> -    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "MINOR_REV", 0},
> -    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "SPIN_REV", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "Vendor ID", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "Level1 ID", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "Level2 ID", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "Major revision", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "Minor revision", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "Spin revision", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -1473,7 +1479,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSbst[] =
>  
>  /*******************************************************************************
>   *
> - * SDEI - Software Delegated Execption Interface Descriptor Table
> + * SDEI - Software Delegated Exception Interface Descriptor Table
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/common/dmtbinfo3.c b/src/acpica/source/common/dmtbinfo3.c
> index e810a296..d143bc87 100644
> --- a/src/acpica/source/common/dmtbinfo3.c
> +++ b/src/acpica/source/common/dmtbinfo3.c
> @@ -368,6 +368,20 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat4[] =
>      ACPI_DMT_TERMINATOR
>  };
>  
> +/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat5[] =
> +{
> +    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (Reserved),               "Reserved1", 0},
> +    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (DeviceHandleType),       "Device Handle Type", 0},
> +    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (ProximityDomain),        "Proximity Domain", 0},
> +    {ACPI_DMT_BUF16,    ACPI_SRAT5_OFFSET (DeviceHandle),           "Device Handle", 0},
> +    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_SRAT5_FLAG_OFFSET (Flags,0),           "Enabled", 0},
> +    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Reserved1),              "Reserved2", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
>  
>  /*******************************************************************************
>   *
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5acc0d12..c46b28da 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -494,6 +494,7 @@ CmDoCompile (
>      UtEndEvent (Event);
>  
>      UtEndEvent (FullCompile);
> +    AslCheckExpectedExceptions ();
>      CmCleanupAndExit ();
>      return (0);
>  
> @@ -811,7 +812,6 @@ CmCleanupAndExit (
>      BOOLEAN                 DeleteAmlFile = FALSE;
>  
>  
> -    AslCheckExpectedExceptions ();
>      AePrintErrorLog (ASL_FILE_STDERR);
>      if (AslGbl_DebugFlag)
>      {
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 40f3b102..efcee77b 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -702,7 +702,7 @@ OpnDoPackage (
>  
>  
>  /*
> - * aslopt - optmization
> + * aslopt - optimization
>   */
>  void
>  OptOptimizeNamePath (
> @@ -1153,7 +1153,7 @@ OtXrefWalkPart1 (
>  
>  
>  /*
> - * aslutils - common compiler utilites
> + * aslutils - common compiler utilities
>   */
>  void
>  DbgPrint (
> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
> index 18e93064..72fbbef3 100644
> --- a/src/acpica/source/compiler/aslcompiler.l
> +++ b/src/acpica/source/compiler/aslcompiler.l
> @@ -692,7 +692,7 @@ NamePathTail                [.]{NameSeg}
>  "IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
>  "GeneralPurposeIo"          { count (0); return (PARSEOP_REGIONSPACE_GPIO); }       /* ACPI 5.0 */
>  "GenericSerialBus"          { count (0); return (PARSEOP_REGIONSPACE_GSBUS); }      /* ACPI 5.0 */
> -"PCC"                       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
> +"PlatformCommChannel"       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
>  "FFixedHW"                  { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
>  
>      /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
> @@ -816,6 +816,13 @@ NamePathTail                [.]{NameSeg}
>                                  s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1);
>                                  if (strcmp (AslCompilertext, "\\"))
>                                  {
> +                                    /*
> +                                     * According to the ACPI specification,
> +                                     * NameSegments must have length of 4. If
> +                                     * the NameSegment has length less than 4,
> +                                     * they are padded with underscores to meet
> +                                     * the required length.
> +                                     */
>                                      strcpy (s, "____");
>                                      AcpiUtStrupr (AslCompilertext);
>                                  }
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 184f69eb..c910358d 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -331,8 +331,8 @@ LdLoadFieldElements (
>                       * The name already exists in this scope
>                       * But continue processing the elements
>                       */
> -                    AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Child,
> -                        Child->Asl.Value.String, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
> +                    AslDualParseOpError (ASL_WARNING, ASL_MSG_NAME_EXISTS, Child,
> +                        Child->Asl.Value.String, ASL_MSG_FOUND_HERE, Node->Op,
>                          Node->Op->Asl.ExternalName);
>                  }
>              }
> @@ -575,7 +575,7 @@ LdNamespace1Begin (
>          if (Status == AE_NOT_FOUND)
>          {
>              /*
> -             * This is either a foward reference or the object truly
> +             * This is either a forward reference or the object truly
>               * does not exist. The two cases can only be differentiated
>               * during the cross-reference stage later. Mark the Op/Name
>               * as not-found for now to indicate the need for further
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index b06ef937..07e98482 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -353,15 +353,17 @@ const char                      *AslCompilerMsgs [] =
>  /*    ASL_MSG_NULL_RESOURCE_TEMPLATE */     "Empty Resource Template (END_TAG only)",
>  /*    ASL_MSG_FOUND_HERE */                 "Original name creation/declaration below: ",
>  /*    ASL_MSG_ILLEGAL_RECURSION */          "Illegal recursive call to method that creates named objects",
> -/*    ASL_MSG_EXTERN_COLLISION */           "A name cannot be defined and declared external in the same table",
> -/*    ASL_MSG_FOUND_HERE_EXTERN */          "Remove one of the declarations indicated above or below:",
> +/*    ASL_MSG_PLACE_HOLDER_00 */            "", /* TODO: fill in this slot with a new error message */
> +/*    ASL_MSG_PLACE_HOLDER_01 */            "", /* TODO: fill in this slot with a new error message */
>  /*    ASL_MSG_OEM_TABLE_ID */               "Invalid OEM Table ID",
>  /*    ASL_MSG_OEM_ID */                     "Invalid OEM ID",
>  /*    ASL_MSG_UNLOAD */                     "Unload is not supported by all operating systems",
>  /*    ASL_MSG_OFFSET */                     "Unnecessary/redundant use of Offset operator",
>  /*    ASL_MSG_LONG_SLEEP */                 "Very long Sleep, greater than 1 second",
>  /*    ASL_MSG_PREFIX_NOT_EXIST */           "One or more prefix Scopes do not exist",
> -/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist"
> +/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist",
> +/*    ASL_MSG_REGION_LENGTH */              "Operation Region declared with zero length",
> +/*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed"
>  };
>  
>  /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index d2d26b6e..817e192e 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -355,8 +355,8 @@ typedef enum
>      ASL_MSG_NULL_RESOURCE_TEMPLATE,
>      ASL_MSG_FOUND_HERE,
>      ASL_MSG_ILLEGAL_RECURSION,
> -    ASL_MSG_EXTERN_COLLISION,
> -    ASL_MSG_EXTERN_FOUND_HERE,
> +    ASL_MSG_PLACE_HOLDER_00,
> +    ASL_MSG_PLACE_HOLDER_01,
>      ASL_MSG_OEM_TABLE_ID,
>      ASL_MSG_OEM_ID,
>      ASL_MSG_UNLOAD,
> @@ -364,6 +364,8 @@ typedef enum
>      ASL_MSG_LONG_SLEEP,
>      ASL_MSG_PREFIX_NOT_EXIST,
>      ASL_MSG_NAMEPATH_NOT_EXIST,
> +    ASL_MSG_REGION_LENGTH,
> +    ASL_MSG_TEMPORARY_OBJECT,
>  
>      /* These messages are used by the Data Table compiler only */
>  
> diff --git a/src/acpica/source/compiler/asloperands.c b/src/acpica/source/compiler/asloperands.c
> index a4781ed4..172f3470 100644
> --- a/src/acpica/source/compiler/asloperands.c
> +++ b/src/acpica/source/compiler/asloperands.c
> @@ -657,6 +657,7 @@ OpnDoRegion (
>      ACPI_PARSE_OBJECT       *Op)
>  {
>      ACPI_PARSE_OBJECT       *Next;
> +    ACPI_ADR_SPACE_TYPE     SpaceId;
>  
>  
>      /* Opcode is parent node */
> @@ -664,9 +665,10 @@ OpnDoRegion (
>  
>      Next = Op->Asl.Child;
>  
> -    /* Second child is the space ID*/
> +    /* Second child is the space ID */
>  
>      Next = Next->Asl.Next;
> +    SpaceId = (ACPI_ADR_SPACE_TYPE) Next->Common.Value.Integer;
>  
>      /* Third child is the region offset */
>  
> @@ -677,7 +679,13 @@ OpnDoRegion (
>      Next = Next->Asl.Next;
>      if (Next->Asl.ParseOpcode == PARSEOP_INTEGER)
>      {
> +        /* Check for zero length */
> +
>          Op->Asl.Value.Integer = Next->Asl.Value.Integer;
> +        if (!Op->Asl.Value.Integer && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
> +        {
> +            AslError (ASL_ERROR, ASL_MSG_REGION_LENGTH, Op, NULL);
> +        }
>      }
>      else
>      {
> diff --git a/src/acpica/source/compiler/aslopt.c b/src/acpica/source/compiler/aslopt.c
> index 0d584717..1b0c4d33 100644
> --- a/src/acpica/source/compiler/aslopt.c
> +++ b/src/acpica/source/compiler/aslopt.c
> @@ -814,7 +814,7 @@ OptOptimizeNamePath (
>      ACPI_FREE (ExternalNameString);
>  
>      /*
> -     * Attempt an optmization depending on the type of namepath
> +     * Attempt an optimization depending on the type of namepath
>       */
>      if (Flags & (AML_NAMED | AML_CREATE))
>      {
> diff --git a/src/acpica/source/compiler/aslpredef.c b/src/acpica/source/compiler/aslpredef.c
> index fa1da4d9..ab29105a 100644
> --- a/src/acpica/source/compiler/aslpredef.c
> +++ b/src/acpica/source/compiler/aslpredef.c
> @@ -449,7 +449,7 @@ ApCheckPredefinedReturnValue (
>   * DESCRIPTION: Check for a predefined name for a static object (created via
>   *              the ASL Name operator). If it is a predefined ACPI name, ensure
>   *              that the name does not require any arguments (which would
> - *              require a control method implemenation of the name), and that
> + *              require a control method implementation of the name), and that
>   *              the type of the object is one of the expected types for the
>   *              predefined name.
>   *
> diff --git a/src/acpica/source/compiler/aslprintf.c b/src/acpica/source/compiler/aslprintf.c
> index b34e9adc..8121ea00 100644
> --- a/src/acpica/source/compiler/aslprintf.c
> +++ b/src/acpica/source/compiler/aslprintf.c
> @@ -239,7 +239,7 @@ OpcDoFprintf (
>   * RETURN:      None
>   *
>   * DESCRIPTION: Convert printf macro to a Store AML operation. The printf
> - *              macro parse tree is layed out as follows:
> + *              macro parse tree is laid out as follows:
>   *
>   *              Op        - printf parse op
>   *              Op->Child - Format string
> diff --git a/src/acpica/source/compiler/aslresources.y b/src/acpica/source/compiler/aslresources.y
> index 049d0a52..1caff20c 100644
> --- a/src/acpica/source/compiler/aslresources.y
> +++ b/src/acpica/source/compiler/aslresources.y
> @@ -866,7 +866,7 @@ UartSerialBusTerm
>          OptionalBitsPerByte         /* 05: BitsPerByte */
>          OptionalStopBits            /* 06: StopBits */
>          ',' ByteConstExpr           /* 08: LinesInUse */
> -        OptionalEndian              /* 09: Endianess */
> +        OptionalEndian              /* 09: Endianness */
>          OptionalParityType          /* 10: Parity */
>          OptionalFlowControl         /* 11: FlowControl */
>          ',' WordConstExpr           /* 13: Rx BufferSize */
> @@ -891,7 +891,7 @@ UartSerialBusTermV2
>          OptionalBitsPerByte         /* 05: BitsPerByte */
>          OptionalStopBits            /* 06: StopBits */
>          ',' ByteConstExpr           /* 08: LinesInUse */
> -        OptionalEndian              /* 09: Endianess */
> +        OptionalEndian              /* 09: Endianness */
>          OptionalParityType          /* 10: Parity */
>          OptionalFlowControl         /* 11: FlowControl */
>          ',' WordConstExpr           /* 13: Rx BufferSize */
> diff --git a/src/acpica/source/compiler/aslsupport.l b/src/acpica/source/compiler/aslsupport.l
> index 76993662..5cac84dc 100644
> --- a/src/acpica/source/compiler/aslsupport.l
> +++ b/src/acpica/source/compiler/aslsupport.l
> @@ -610,7 +610,7 @@ loop:
>  
>      /*
>       * Check for nested comment -- can help catch cases where a previous
> -     * comment was accidently left unterminated
> +     * comment was accidentally left unterminated
>       */
>      if ((c1 == '/') && (c == '*'))
>      {
> diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c
> index 87a2df28..b3067feb 100644
> --- a/src/acpica/source/compiler/aslxref.c
> +++ b/src/acpica/source/compiler/aslxref.c
> @@ -174,6 +174,12 @@ XfNamespaceLocateEnd (
>      UINT32                  Level,
>      void                    *Context);
>  
> +static BOOLEAN
> +XfValidateCrossReference (
> +    ACPI_PARSE_OBJECT       *Op,
> +    const ACPI_OPCODE_INFO  *OpInfo,
> +    ACPI_NAMESPACE_NODE     *Node);
> +
>  static ACPI_PARSE_OBJECT *
>  XfGetParentMethod (
>      ACPI_PARSE_OBJECT       *Op);
> @@ -408,6 +414,7 @@ XfGetParentMethod (
>      return (NULL); /* No parent method found */
>  }
>  
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    XfNamespaceLocateBegin
> @@ -488,7 +495,7 @@ XfNamespaceLocateBegin (
>              Node->ArgCount = (UINT8)
>                  (((UINT8) NextOp->Asl.Value.Integer) & 0x07);
>  
> -            /* We will track all posible ArgXs */
> +            /* We will track all possible ArgXs */
>  
>              for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
>              {
> @@ -776,6 +783,15 @@ XfNamespaceLocateBegin (
>          return_ACPI_STATUS (Status);
>      }
>  
> +    /* Check for an attempt to access an object in another method */
> +
> +    if (!XfValidateCrossReference (Op, OpInfo, Node))
> +    {
> +        AslError (ASL_ERROR, ASL_MSG_TEMPORARY_OBJECT, Op,
> +            Op->Asl.ExternalName);
> +        return_ACPI_STATUS (Status);
> +    }
> +
>      /* Object was found above, check for an illegal forward reference */
>  
>      if (Op->Asl.CompileFlags & OP_NOT_FOUND_DURING_LOAD)
> @@ -1234,3 +1250,103 @@ XfNamespaceLocateEnd (
>  
>      return_ACPI_STATUS (AE_OK);
>  }
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    XfValidateCrossReference
> + *
> + * PARAMETERS:  Op                      - Parse Op that references the object
> + *              OpInfo                  - Parse Op info struct
> + *              Node                    - Node for the referenced object
> + *
> + * RETURN:      TRUE if the reference is legal, FALSE otherwise
> + *
> + * DESCRIPTION: Determine if a reference to another object is allowed.
> + *
> + * EXAMPLE:
> + *      Method (A) {Name (INT1, 1)}     Declaration of object INT1
> + *      Method (B) (Store (2, \A.INT1)} Illegal reference to object INT1
> + *                                      (INT1 is temporary, valid only during
> + *                                      execution of A)
> + *
> + * NOTES:
> + *      A null pointer returned by either XfGetParentMethod or
> + *      UtGetParentMethod indicates that the parameter object is not
> + *      within a control method.
> + *
> + *      Five cases are handled: Case(Op, Node)
> + *      1) Case(0,0): Op is not within a method, Node is not    --> OK
> + *      2) Case(0,1): Op is not within a method, but Node is    --> Illegal
> + *      3) Case(1,0): Op is within a method, Node is not        --> OK
> + *      4) Case(1,1): Both are within the same method           --> OK
> + *      5) Case(1,1): Both are in methods, but not same method  --> Illegal
> + *
> + ******************************************************************************/
> +
> +static BOOLEAN
> +XfValidateCrossReference (
> +    ACPI_PARSE_OBJECT       *Op,
> +    const ACPI_OPCODE_INFO  *OpInfo,
> +    ACPI_NAMESPACE_NODE     *Node)
> +{
> +    ACPI_PARSE_OBJECT       *ReferencingMethodOp;
> +    ACPI_NAMESPACE_NODE     *ReferencedMethodNode;
> +
> +
> +    /* Ignore actual named (and related) object declarations */
> +
> +    if (OpInfo->Flags & (AML_NAMED | AML_CREATE | AML_DEFER | AML_HAS_ARGS))
> +    {
> +        return (TRUE);
> +    }
> +
> +    /*
> +     * 1) Search upwards in parse tree for owner of the referencing object
> +     * 2) Search upwards in namespace to find the owner of the referenced object
> +     */
> +    ReferencingMethodOp = XfGetParentMethod (Op);
> +    ReferencedMethodNode = UtGetParentMethod (Node);
> +
> +    if (!ReferencingMethodOp && !ReferencedMethodNode)
> +    {
> +        /*
> +         * 1) Case (0,0): Both Op and Node are not within methods
> +         * --> OK
> +         */
> +        return (TRUE);
> +    }
> +
> +    if (!ReferencingMethodOp && ReferencedMethodNode)
> +    {
> +        /*
> +         * 2) Case (0,1): Op is not in a method, but Node is within a
> +         * method --> illegal
> +         */
> +        return (FALSE);
> +    }
> +    else if (ReferencingMethodOp && !ReferencedMethodNode)
> +    {
> +        /*
> +         * 3) Case (1,0): Op is within a method, but Node is not
> +         * --> OK
> +         */
> +        return (TRUE);
> +    }
> +    else if (ReferencingMethodOp->Asl.Node == ReferencedMethodNode)
> +    {
> +        /*
> +         * 4) Case (1,1): Both Op and Node are within the same method
> +         * --> OK
> +         */
> +        return (TRUE);
> +    }
> +    else
> +    {
> +        /*
> +         * 5) Case (1,1), Op and Node are in different methods
> +         * --> Illegal
> +         */
> +        return (FALSE);
> +    }
> +}
> diff --git a/src/acpica/source/compiler/cvcompiler.c b/src/acpica/source/compiler/cvcompiler.c
> index e069fbb4..083b66a5 100644
> --- a/src/acpica/source/compiler/cvcompiler.c
> +++ b/src/acpica/source/compiler/cvcompiler.c
> @@ -168,7 +168,7 @@
>   *
>   * DESCRIPTION: Process a single line comment of a c Style comment. This
>   *              function captures a line of a c style comment in a char* and
> - *              places the comment in the approperiate global buffer.
> + *              places the comment in the appropriate global buffer.
>   *
>   ******************************************************************************/
>  
> @@ -294,7 +294,7 @@ CvProcessComment (
>   * RETURN:      none
>   *
>   * DESCRIPTION: Process a single line comment. This function captures a comment
> - *              in a char* and places the comment in the approperiate global
> + *              in a char* and places the comment in the appropriate global
>   *              buffer through CvPlaceComment
>   *
>   ******************************************************************************/
> @@ -333,7 +333,7 @@ CvProcessCommentType2 (
>           *
>           * would be lexically analyzed as a single comment.
>           *
> -         * Create a new string with the approperiate spaces. Since we need
> +         * Create a new string with the appropriate spaces. Since we need
>           * to account for the proper spacing, the actual comment,
>           * extra 2 spaces so that this comment can be converted to the "/ *"
>           * style and the null terminator, the string would look something
> @@ -380,7 +380,7 @@ CvProcessCommentType2 (
>   * RETURN:      TotalCommentLength - Length of all comments within this op.
>   *
>   * DESCRIPTION: Calculate the length that the each comment takes up within Op.
> - *              Comments look like the follwoing: [0xA9 OptionBtye comment 0x00]
> + *              Comments look like the following: [0xA9 OptionBtye comment 0x00]
>   *              therefore, we add 1 + 1 + strlen (comment) + 1 to get the actual
>   *              length of this comment.
>   *
> @@ -963,7 +963,7 @@ CvAppendInlineComment (
>   * RETURN:      None
>   *
>   * DESCRIPTION: Given type and CommentString, this function places the
> - *              CommentString in the approperiate global comment list or char*
> + *              CommentString in the appropriate global comment list or char*
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/compiler/cvparser.c b/src/acpica/source/compiler/cvparser.c
> index 8225a44b..ca970b50 100644
> --- a/src/acpica/source/compiler/cvparser.c
> +++ b/src/acpica/source/compiler/cvparser.c
> @@ -276,7 +276,7 @@ CvInitFileTree (
>      AcpiGbl_FileTreeRoot->File = AcpiGbl_OutputFile;
>  
>      /*
> -     * Set this to true because we dont need to output
> +     * Set this to true because we don't need to output
>       * an include statement for the topmost file
>       */
>      AcpiGbl_FileTreeRoot->IncludeWritten = TRUE;
> @@ -514,7 +514,7 @@ CvFileAddressLookup(
>   * RETURN:      None
>   *
>   * DESCRIPTION: Takes a given parse op, looks up its Op->Common.Aml field
> - *              within the file tree and fills in approperiate file information
> + *              within the file tree and fills in appropriate file information
>   *              from a matching node within the tree.
>   *              This is referred as ASL_CV_LABEL_FILENODE.
>   *
> @@ -1005,7 +1005,7 @@ CvCaptureComments (
>   *
>   * RETURN:      None
>   *
> - * DESCRIPTION: Transfer all of the commments stored in global containers to the
> + * DESCRIPTION: Transfer all of the comments stored in global containers to the
>   *              given Op. This will be invoked shortly after the parser creates
>   *              a ParseOp.
>   *              This is referred as ASL_CV_TRANSFER_COMMENTS.
> diff --git a/src/acpica/source/compiler/dtexpress.c b/src/acpica/source/compiler/dtexpress.c
> index 6b5b1861..820e1988 100644
> --- a/src/acpica/source/compiler/dtexpress.c
> +++ b/src/acpica/source/compiler/dtexpress.c
> @@ -372,7 +372,7 @@ DtDoOperator (
>   *
>   * RETURN:      Table offset associated with the label
>   *
> - * DESCRIPTION: Lookup a lable and return its value.
> + * DESCRIPTION: Lookup a label and return its value.
>   *
>   *****************************************************************************/
>  
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index 095ca0fb..ae827513 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -375,7 +375,7 @@ DtParseLine (
>          return (AE_OK);
>      }
>  
> -    /* All lines after "Raw Table Data" are ingored */
> +    /* All lines after "Raw Table Data" are ignored */
>  
>      if (strstr (LineBuffer, ACPI_RAW_TABLE_DATA_HEADER))
>      {
> diff --git a/src/acpica/source/compiler/dttable1.c b/src/acpica/source/compiler/dttable1.c
> index 23b36be4..c43b9e6c 100644
> --- a/src/acpica/source/compiler/dttable1.c
> +++ b/src/acpica/source/compiler/dttable1.c
> @@ -831,7 +831,7 @@ DtCompileDrtm (
>      DtInsertSubtable (ParentTable, Subtable);
>  
>      /*
> -     * Using ACPI_SUB_PTR, We needn't define a seperate structure. Care
> +     * Using ACPI_SUB_PTR, We needn't define a separate structure. Care
>       * should be taken to avoid accessing ACPI_TABLE_HADER fields.
>       */
>  #if 0
> @@ -1002,7 +1002,14 @@ DtCompileGtdt (
>      ACPI_SUBTABLE_HEADER    *GtdtHeader;
>      ACPI_DMTABLE_INFO       *InfoTable;
>      UINT32                  GtCount;
> +    ACPI_TABLE_HEADER       *Header;
> +
> +
> +    ParentTable = DtPeekSubtable ();
>  
> +    Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
> +
> +    /* Compile the main table */
>  
>      Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdt,
>          &Subtable);
> @@ -1011,6 +1018,21 @@ DtCompileGtdt (
>          return (Status);
>      }
>  
> +    /* GTDT revision 3 later contains 2 extra fields before subtables */
> +
> +    if (Header->Revision > 2)
> +    {
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +
> +        Status = DtCompileTable (PFieldList,
> +            AcpiDmTableInfoGtdtEl2, &Subtable);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +    }
> +
>      ParentTable = DtPeekSubtable ();
>      DtInsertSubtable (ParentTable, Subtable);
>  
> diff --git a/src/acpica/source/compiler/dttable2.c b/src/acpica/source/compiler/dttable2.c
> index b9623d97..04f48cc0 100644
> --- a/src/acpica/source/compiler/dttable2.c
> +++ b/src/acpica/source/compiler/dttable2.c
> @@ -1733,6 +1733,11 @@ DtCompileSrat (
>              InfoTable = AcpiDmTableInfoSrat4;
>              break;
>  
> +        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
> +
> +            InfoTable = AcpiDmTableInfoSrat5;
> +            break;
> +
>          default:
>  
>              DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index 5fb3287b..cb1c5855 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -545,34 +545,35 @@ const unsigned char TemplateFpdt[] =
>  
>  const unsigned char TemplateGtdt[] =
>  {
> -    0x47,0x54,0x44,0x54,0xe0,0x00,0x00,0x00,  /* 00000000    "GTDT...." */
> -    0x02,0xb0,0x4c,0x49,0x4e,0x41,0x52,0x4f,  /* 00000008    "..LINARO" */
> -    0x52,0x54,0x53,0x4d,0x56,0x45,0x56,0x38,  /* 00000010    "RTSMVEV8" */
> -    0x01,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c,  /* 00000018    "....INTL" */
> -    0x24,0x04,0x14,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "$.. ...." */
> +    0x47,0x54,0x44,0x54,0xE8,0x00,0x00,0x00,  /* 00000000    "GTDT...." */
> +    0x03,0x5D,0x4C,0x49,0x4E,0x41,0x52,0x4F,  /* 00000008    ".]LINARO" */
> +    0x52,0x54,0x53,0x4D,0x56,0x45,0x56,0x38,  /* 00000010    "RTSMVEV8" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
> -    0x1d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
> -    0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000038    "........" */
> -    0x1b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
> -    0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000048    "........" */
> +    0x1D,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
> +    0x1E,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000038    "........" */
> +    0x1B,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
> +    0x1A,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000048    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
>      0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,  /* 00000058    "....`..." */
> -    0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000060    ".d......" */
> -    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000068    "........" */
> -    0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000070    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
> +    0x43,0x00,0x00,0x00,0x21,0x00,0x00,0x00,  /* 00000060    "C...!..." */
> +    0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000068    ".d......" */
> +    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000070    "........" */
> +    0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000088    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
>      0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000090    "........" */
>      0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000098    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a0    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a8    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000b0    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000b8    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x1c,0x00,0x00,  /* 000000c0    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000c8    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d0    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000d8    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000A0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000B8    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000C0    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x1C,0x00,0x00,  /* 000000C8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D8    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00   /* 000000E0    "........" */
>  };
>  
>  const unsigned char TemplateHest[] =
> @@ -662,10 +663,10 @@ const unsigned char TemplateHest[] =
>  const unsigned char TemplateHmat[] =
>  {
>      0x48,0x4D,0x41,0x54,0x9C,0x00,0x00,0x00,  /* 00000000    "HMAT...." */
> -    0x00,0x54,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".TINTEL " */
> +    0x02,0x4D,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".MINTEL " */
>      0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
>      0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x03,0x03,0x17,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
>      0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,  /* 00000028    "....(..." */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -817,10 +818,10 @@ const unsigned char TemplateLpit[] =
>  const unsigned char TemplateMadt[] =
>  {
>      0x41,0x50,0x49,0x43,0x5A,0x01,0x00,0x00,  /* 00000000    "APICZ..." */
> -    0x03,0xEA,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
> +    0x05,0xEF,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
>      0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
>      0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x10,0x04,0x15,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
>      0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00,  /* 00000028    "........" */
>      0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00,  /* 00000030    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -1375,11 +1376,11 @@ const unsigned char TemplateSpmi[] =
>  
>  const unsigned char TemplateSrat[] =
>  {
> -    0x53,0x52,0x41,0x54,0x9E,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
> -    0x03,0x55,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".UINTEL " */
> +    0x53,0x52,0x41,0x54,0xBE,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
> +    0x03,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
>      0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
>      0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x03,0x03,0x17,0x20,0x01,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x29,0x06,0x18,0x20,0x01,0x00,0x00,0x00,  /* 00000020    ").. ...." */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
>      0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -1394,7 +1395,11 @@ const unsigned char TemplateSrat[] =
>      0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
>      0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
>      0x00,0x00,0x04,0x0C,0x00,0x00,0x00,0x00,  /* 00000090    "........" */
> -    0x00,0x00,0x01,0x00,0x00,0x00             /* 00000098    "......"   */
> +    0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x20,  /* 00000098    "....... " */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00             /* 000000B8    "......"   */
>  };
>  
>  const unsigned char TemplateStao[] =
> diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c
> index d0583fc7..539ff5af 100644
> --- a/src/acpica/source/components/debugger/dbdisply.c
> +++ b/src/acpica/source/components/debugger/dbdisply.c
> @@ -410,7 +410,7 @@ AcpiDbDecodeAndDisplayObject (
>  
>          default:
>  
> -            /* Is not a recognizeable object */
> +            /* Is not a recognizable object */
>  
>              AcpiOsPrintf (
>                  "Not a known ACPI internal object, descriptor type %2.2X\n",
> @@ -866,7 +866,7 @@ AcpiDbDisplayObjectType (
>   *
>   * DESCRIPTION: Display the result of an AML opcode
>   *
> - * Note: Curently only displays the result object if we are single stepping.
> + * Note: Currently only displays the result object if we are single stepping.
>   * However, this output may be useful in other contexts and could be enabled
>   * to do so if needed.
>   *
> diff --git a/src/acpica/source/components/debugger/dbexec.c b/src/acpica/source/components/debugger/dbexec.c
> index 03ea9bf2..49d1180f 100644
> --- a/src/acpica/source/components/debugger/dbexec.c
> +++ b/src/acpica/source/components/debugger/dbexec.c
> @@ -331,12 +331,12 @@ AcpiDbExecuteMethod (
>          }
>  
>          ACPI_EXCEPTION ((AE_INFO, Status,
> -            "while executing %s from debugger", Info->Pathname));
> +            "while executing %s from AML Debugger", Info->Pathname));
>  
>          if (Status == AE_BUFFER_OVERFLOW)
>          {
>              ACPI_ERROR ((AE_INFO,
> -                "Possible overflow of internal debugger "
> +                "Possible buffer overflow within AML Debugger "
>                  "buffer (size 0x%X needed 0x%X)",
>                  ACPI_DEBUG_BUFFER_SIZE, (UINT32) ReturnObj->Length));
>          }
> diff --git a/src/acpica/source/components/debugger/dbnames.c b/src/acpica/source/components/debugger/dbnames.c
> index 781e3a98..3c01e808 100644
> --- a/src/acpica/source/components/debugger/dbnames.c
> +++ b/src/acpica/source/components/debugger/dbnames.c
> @@ -1175,7 +1175,7 @@ AcpiDbBusWalk (
>   *
>   * RETURN:      None
>   *
> - * DESCRIPTION: Display info about system busses.
> + * DESCRIPTION: Display info about system buses.
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/debugger/dbobject.c b/src/acpica/source/components/debugger/dbobject.c
> index c54394de..f9dc6687 100644
> --- a/src/acpica/source/components/debugger/dbobject.c
> +++ b/src/acpica/source/components/debugger/dbobject.c
> @@ -420,7 +420,7 @@ AcpiDbDisplayInternalObject (
>  
>              AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
>  
> -            /* Decode the refererence */
> +            /* Decode the reference */
>  
>              switch (ObjDesc->Reference.Class)
>              {
> diff --git a/src/acpica/source/components/debugger/dbtest.c b/src/acpica/source/components/debugger/dbtest.c
> index 560fb86f..67b9cbea 100644
> --- a/src/acpica/source/components/debugger/dbtest.c
> +++ b/src/acpica/source/components/debugger/dbtest.c
> @@ -154,6 +154,7 @@
>  #include "acdebug.h"
>  #include "acnamesp.h"
>  #include "acpredef.h"
> +#include "acinterp.h"
>  
>  
>  #define _COMPONENT          ACPI_CA_DEBUGGER
> @@ -192,6 +193,10 @@ static ACPI_STATUS
>  AcpiDbTestPackageType (
>      ACPI_NAMESPACE_NODE     *Node);
>  
> +static ACPI_STATUS
> +AcpiDbTestFieldUnitType (
> +    ACPI_OPERAND_OBJECT     *ObjDesc);
> +
>  static ACPI_STATUS
>  AcpiDbReadFromObject (
>      ACPI_NAMESPACE_NODE     *Node,
> @@ -241,7 +246,7 @@ static ACPI_DB_ARGUMENT_INFO    AcpiDbTestTypes [] =
>  static ACPI_HANDLE          ReadHandle = NULL;
>  static ACPI_HANDLE          WriteHandle = NULL;
>  
> -/* ASL Definitions of the debugger read/write control methods */
> +/* ASL Definitions of the debugger read/write control methods. AML below. */
>  
>  #if 0
>  DefinitionBlock ("ssdt.aml", "SSDT", 2, "Intel", "DEBUG", 0x00000001)
> @@ -407,10 +412,8 @@ AcpiDbTestAllObjects (
>   * RETURN:      Status
>   *
>   * DESCRIPTION: Test one namespace object. Supported types are Integer,
> - *              String, Buffer, BufferField, and FieldUnit. All other object
> - *              types are simply ignored.
> - *
> - *              Note: Support for Packages is not implemented.
> + *              String, Buffer, Package, BufferField, and FieldUnit.
> + *              All other object types are simply ignored.
>   *
>   ******************************************************************************/
>  
> @@ -423,7 +426,6 @@ AcpiDbTestOneObject (
>  {
>      ACPI_NAMESPACE_NODE     *Node;
>      ACPI_OPERAND_OBJECT     *ObjDesc;
> -    ACPI_OPERAND_OBJECT     *RegionObj;
>      ACPI_OBJECT_TYPE        LocalType;
>      UINT32                  BitLength = 0;
>      UINT32                  ByteLength = 0;
> @@ -466,19 +468,22 @@ AcpiDbTestOneObject (
>          break;
>  
>      case ACPI_TYPE_FIELD_UNIT:
> -    case ACPI_TYPE_BUFFER_FIELD:
>      case ACPI_TYPE_LOCAL_REGION_FIELD:
>      case ACPI_TYPE_LOCAL_INDEX_FIELD:
>      case ACPI_TYPE_LOCAL_BANK_FIELD:
>  
> +        LocalType = ACPI_TYPE_FIELD_UNIT;
> +        break;
> +
> +    case ACPI_TYPE_BUFFER_FIELD:
> +        /*
> +         * The returned object will be a Buffer if the field length
> +         * is larger than the size of an Integer (32 or 64 bits
> +         * depending on the DSDT version).
> +         */
>          LocalType = ACPI_TYPE_INTEGER;
>          if (ObjDesc)
>          {
> -            /*
> -             * Returned object will be a Buffer if the field length
> -             * is larger than the size of an Integer (32 or 64 bits
> -             * depending on the DSDT version).
> -             */
>              BitLength = ObjDesc->CommonField.BitLength;
>              ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength);
>              if (BitLength > AcpiGbl_IntegerBitWidth)
> @@ -488,9 +493,9 @@ AcpiDbTestOneObject (
>          }
>          break;
>  
> -    default:
> +default:
>  
> -        /* Ignore all other types */
> +        /* Ignore all non-data types - Methods, Devices, Scopes, etc. */
>  
>          return (AE_OK);
>      }
> @@ -502,40 +507,10 @@ AcpiDbTestOneObject (
>  
>      if (!ObjDesc)
>      {
> -        AcpiOsPrintf (" Ignoring, no attached object\n");
> +        AcpiOsPrintf (" No attached sub-object, ignoring\n");
>          return (AE_OK);
>      }
>  
> -    /*
> -     * Check for unsupported region types. Note: AcpiExec simulates
> -     * access to SystemMemory, SystemIO, PCI_Config, and EC.
> -     */
> -    switch (Node->Type)
> -    {
> -    case ACPI_TYPE_LOCAL_REGION_FIELD:
> -
> -        RegionObj = ObjDesc->Field.RegionObj;
> -        switch (RegionObj->Region.SpaceId)
> -        {
> -        case ACPI_ADR_SPACE_SYSTEM_MEMORY:
> -        case ACPI_ADR_SPACE_SYSTEM_IO:
> -        case ACPI_ADR_SPACE_PCI_CONFIG:
> -
> -            break;
> -
> -        default:
> -
> -            AcpiOsPrintf ("      %s space is not supported in this command [%4.4s]\n",
> -                AcpiUtGetRegionName (RegionObj->Region.SpaceId),
> -                RegionObj->Region.Node->Name.Ascii);
> -            return (AE_OK);
> -        }
> -        break;
> -
> -    default:
> -        break;
> -    }
> -
>      /* At this point, we have resolved the object to one of the major types */
>  
>      switch (LocalType)
> @@ -560,6 +535,11 @@ AcpiDbTestOneObject (
>          Status = AcpiDbTestPackageType (Node);
>          break;
>  
> +    case ACPI_TYPE_FIELD_UNIT:
> +
> +        Status = AcpiDbTestFieldUnitType (ObjDesc);
> +        break;
> +
>      default:
>  
>          AcpiOsPrintf (" Ignoring, type not implemented (%2.2X)",
> @@ -572,24 +552,8 @@ AcpiDbTestOneObject (
>      if (ACPI_FAILURE (Status))
>      {
>          Status = AE_OK;
> -        goto Exit;
> -    }
> -
> -    switch (Node->Type)
> -    {
> -    case ACPI_TYPE_LOCAL_REGION_FIELD:
> -
> -        RegionObj = ObjDesc->Field.RegionObj;
> -        AcpiOsPrintf (" (%s)",
> -            AcpiUtGetRegionName (RegionObj->Region.SpaceId));
> -
> -        break;
> -
> -    default:
> -        break;
>      }
>  
> -Exit:
>      AcpiOsPrintf ("\n");
>      return (Status);
>  }
> @@ -639,7 +603,7 @@ AcpiDbTestIntegerType (
>          return (Status);
>      }
>  
> -    AcpiOsPrintf (" (%4.4X/%3.3X) %8.8X%8.8X",
> +    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " %8.8X%8.8X",
>          BitLength, ACPI_ROUND_BITS_UP_TO_BYTES (BitLength),
>          ACPI_FORMAT_UINT64 (Temp1->Integer.Value));
>  
> @@ -761,8 +725,8 @@ AcpiDbTestBufferType (
>  
>      /* Emit a few bytes of the buffer */
>  
> -    AcpiOsPrintf (" (%4.4X/%3.3X)", BitLength, Temp1->Buffer.Length);
> -    for (i = 0; ((i < 4) && (i < ByteLength)); i++)
> +    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT, BitLength, Temp1->Buffer.Length);
> +    for (i = 0; ((i < 8) && (i < ByteLength)); i++)
>      {
>          AcpiOsPrintf (" %2.2X", Temp1->Buffer.Pointer[i]);
>      }
> @@ -876,7 +840,7 @@ AcpiDbTestStringType (
>          return (Status);
>      }
>  
> -    AcpiOsPrintf (" (%4.4X/%3.3X) \"%s\"", (Temp1->String.Length * 8),
> +    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " \"%s\"", (Temp1->String.Length * 8),
>          Temp1->String.Length, Temp1->String.Pointer);
>  
>      /* Write a new value */
> @@ -966,12 +930,79 @@ AcpiDbTestPackageType (
>          return (Status);
>      }
>  
> -    AcpiOsPrintf (" %8.8X Elements", Temp1->Package.Count);
> +    AcpiOsPrintf (" %.2X Elements", Temp1->Package.Count);
>      AcpiOsFree (Temp1);
>      return (Status);
>  }
>  
>  
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDbTestFieldUnitType
> + *
> + * PARAMETERS:  ObjDesc                 - A field unit object
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Test read/write on a named field unit.
> + *
> + ******************************************************************************/
> +
> +static ACPI_STATUS
> +AcpiDbTestFieldUnitType (
> +    ACPI_OPERAND_OBJECT     *ObjDesc)
> +{
> +    ACPI_OPERAND_OBJECT     *RegionObj;
> +    UINT32                  BitLength = 0;
> +    UINT32                  ByteLength = 0;
> +    ACPI_STATUS             Status = AE_OK;
> +    ACPI_OPERAND_OBJECT     *RetBufferDesc;
> +
> +
> +    /* Supported spaces are memory/io/pci_config */
> +
> +    RegionObj = ObjDesc->Field.RegionObj;
> +    switch (RegionObj->Region.SpaceId)
> +    {
> +    case ACPI_ADR_SPACE_SYSTEM_MEMORY:
> +    case ACPI_ADR_SPACE_SYSTEM_IO:
> +    case ACPI_ADR_SPACE_PCI_CONFIG:
> +
> +        /* Need the interpreter to execute */
> +
> +        AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER);
> +        AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
> +
> +        /* Exercise read-then-write */
> +
> +        Status = AcpiExReadDataFromField (NULL, ObjDesc, &RetBufferDesc);
> +        if (Status == AE_OK)
> +        {
> +            AcpiExWriteDataToField (RetBufferDesc, ObjDesc, NULL);
> +            AcpiUtRemoveReference (RetBufferDesc);
> +        }
> +
> +        AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
> +        AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER);
> +
> +        BitLength = ObjDesc->CommonField.BitLength;
> +        ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength);
> +
> +        AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " [%s]", BitLength,
> +            ByteLength, AcpiUtGetRegionName (RegionObj->Region.SpaceId));
> +        return (Status);
> +
> +    default:
> +
> +        AcpiOsPrintf (
> +            "      %s address space is not supported in this command [%4.4s]",
> +            AcpiUtGetRegionName (RegionObj->Region.SpaceId),
> +            RegionObj->Region.Node->Name.Ascii);
> +        return (AE_OK);
> +    }
> +}
> +
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    AcpiDbReadFromObject
> diff --git a/src/acpica/source/components/disassembler/dmbuffer.c b/src/acpica/source/components/disassembler/dmbuffer.c
> index db56365d..a58ff2f5 100644
> --- a/src/acpica/source/components/disassembler/dmbuffer.c
> +++ b/src/acpica/source/components/disassembler/dmbuffer.c
> @@ -1053,7 +1053,7 @@ AcpiDmGetHardwareIdType (
>              }
>          }
>  
> -        /* Mark this node as convertable to an EISA ID string */
> +        /* Mark this node as convertible to an EISA ID string */
>  
>          Op->Common.DisasmOpcode = ACPI_DASM_EISAID;
>          break;
> diff --git a/src/acpica/source/components/disassembler/dmcstyle.c b/src/acpica/source/components/disassembler/dmcstyle.c
> index c74d13dd..30ae3a5b 100644
> --- a/src/acpica/source/components/disassembler/dmcstyle.c
> +++ b/src/acpica/source/components/disassembler/dmcstyle.c
> @@ -1075,7 +1075,7 @@ AcpiDmIsValidTarget (
>   *
>   * DESCRIPTION: Determine if the Target duplicates the operand, in order to
>   *              detect if the expression can be converted to a compound
> - *              assigment. (+=, *=, etc.)
> + *              assignment. (+=, *=, etc.)
>   *
>   ******************************************************************************/
>  
> @@ -1131,7 +1131,7 @@ AcpiDmIsTargetAnOperand (
>          }
>      }
>  
> -    /* Supress the duplicate operand at the top-level */
> +    /* Suppress the duplicate operand at the top-level */
>  
>      if (TopLevel)
>      {
> diff --git a/src/acpica/source/components/disassembler/dmnames.c b/src/acpica/source/components/disassembler/dmnames.c
> index 0866bdf2..bbff3e0a 100644
> --- a/src/acpica/source/components/disassembler/dmnames.c
> +++ b/src/acpica/source/components/disassembler/dmnames.c
> @@ -232,7 +232,7 @@ AcpiDmDumpName (
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: Diplay the pathname associated with a named object. Two
> + * DESCRIPTION: Display the pathname associated with a named object. Two
>   *              versions. One searches the parse tree (for parser-only
>   *              applications suchas AcpiDump), and the other searches the
>   *              ACPI namespace (the parse tree is probably deleted)
> diff --git a/src/acpica/source/components/disassembler/dmresrc.c b/src/acpica/source/components/disassembler/dmresrc.c
> index 8deac42c..bb36b734 100644
> --- a/src/acpica/source/components/disassembler/dmresrc.c
> +++ b/src/acpica/source/components/disassembler/dmresrc.c
> @@ -342,7 +342,7 @@ AcpiDmBitList (
>   *
>   * FUNCTION:    AcpiDmResourceTemplate
>   *
> - * PARAMETERS:  Info            - Curent parse tree walk info
> + * PARAMETERS:  Info            - Current parse tree walk info
>   *              ByteData        - Pointer to the byte list data
>   *              ByteCount       - Length of the byte list
>   *
> @@ -555,7 +555,7 @@ AcpiDmIsResourceTemplate (
>  
>      /*
>       * Not a template if declared buffer length != actual length of the
> -     * intialization byte list. Because the resource macros will create
> +     * initialization byte list. Because the resource macros will create
>       * a buffer of the exact required length (buffer length will be equal
>       * to the actual length).
>       *
> diff --git a/src/acpica/source/components/disassembler/dmresrcs.c b/src/acpica/source/components/disassembler/dmresrcs.c
> index baf24488..72bbc331 100644
> --- a/src/acpica/source/components/disassembler/dmresrcs.c
> +++ b/src/acpica/source/components/disassembler/dmresrcs.c
> @@ -388,7 +388,7 @@ AcpiDmFixedIoDescriptor (
>   *
>   * RETURN:      None
>   *
> - * DESCRIPTION: Decode a Start Dependendent functions descriptor
> + * DESCRIPTION: Decode a Start Dependent functions descriptor
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/dispatcher/dsfield.c b/src/acpica/source/components/dispatcher/dsfield.c
> index f54fcee6..cc0a271e 100644
> --- a/src/acpica/source/components/dispatcher/dsfield.c
> +++ b/src/acpica/source/components/dispatcher/dsfield.c
> @@ -685,6 +685,12 @@ AcpiDsCreateField (
>      Info.RegionNode = RegionNode;
>  
>      Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
> +    if (Info.RegionNode->Type == ACPI_ADR_SPACE_PLATFORM_COMM &&
> +        !(RegionNode->Object->Field.InternalPccBuffer
> +        = ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length)))
> +    {
> +        return_ACPI_STATUS (AE_NO_MEMORY);
> +    }
>      return_ACPI_STATUS (Status);
>  }
>  
> diff --git a/src/acpica/source/components/dispatcher/dsopcode.c b/src/acpica/source/components/dispatcher/dsopcode.c
> index 8b9a30aa..acf1ff4e 100644
> --- a/src/acpica/source/components/dispatcher/dsopcode.c
> +++ b/src/acpica/source/components/dispatcher/dsopcode.c
> @@ -521,6 +521,7 @@ AcpiDsEvalRegionOperands (
>      ACPI_OPERAND_OBJECT     *OperandDesc;
>      ACPI_NAMESPACE_NODE     *Node;
>      ACPI_PARSE_OBJECT       *NextOp;
> +    ACPI_ADR_SPACE_TYPE     SpaceId;
>  
>  
>      ACPI_FUNCTION_TRACE_PTR (DsEvalRegionOperands, Op);
> @@ -530,11 +531,12 @@ AcpiDsEvalRegionOperands (
>       * This is where we evaluate the address and length fields of the
>       * OpRegion declaration
>       */
> -    Node =  Op->Common.Node;
> +    Node = Op->Common.Node;
>  
>      /* NextOp points to the op that holds the SpaceID */
>  
>      NextOp = Op->Common.Value.Arg;
> +    SpaceId = (ACPI_ADR_SPACE_TYPE) NextOp->Common.Value.Integer;
>  
>      /* NextOp points to address op */
>  
> @@ -572,6 +574,15 @@ AcpiDsEvalRegionOperands (
>      ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value;
>      AcpiUtRemoveReference (OperandDesc);
>  
> +    /* A zero-length operation region is unusable. Just warn */
> +
> +    if (!ObjDesc->Region.Length && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
> +    {
> +        ACPI_WARNING ((AE_INFO,
> +            "Operation Region [%4.4s] has zero length (SpaceId %X)",
> +            Node->Name.Ascii, SpaceId));
> +    }
> +
>      /*
>       * Get the address and save it
>       * (at top of stack - 1)
> diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
> index f2206748..3a9e374e 100644
> --- a/src/acpica/source/components/dispatcher/dswload2.c
> +++ b/src/acpica/source/components/dispatcher/dswload2.c
> @@ -167,7 +167,7 @@
>   * FUNCTION:    AcpiDsLoad2BeginOp
>   *
>   * PARAMETERS:  WalkState       - Current state of the parse tree walk
> - *              OutOp           - Wher to return op if a new one is created
> + *              OutOp           - Where to return op if a new one is created
>   *
>   * RETURN:      Status
>   *
> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
> index 1dcd0fc7..f5ea992a 100644
> --- a/src/acpica/source/components/events/evgpe.c
> +++ b/src/acpica/source/components/events/evgpe.c
> @@ -1012,7 +1012,7 @@ AcpiEvGpeDispatch (
>              GpeDevice, GpeNumber,
>              GpeEventInfo->Dispatch.Handler->Context);
>  
> -        /* If requested, clear (if level-triggered) and reenable the GPE */
> +        /* If requested, clear (if level-triggered) and re-enable the GPE */
>  
>          if (ReturnValue & ACPI_REENABLE_GPE)
>          {
> diff --git a/src/acpica/source/components/events/evregion.c b/src/acpica/source/components/events/evregion.c
> index 2b778065..6f6d7ccc 100644
> --- a/src/acpica/source/components/events/evregion.c
> +++ b/src/acpica/source/components/events/evregion.c
> @@ -409,7 +409,7 @@ AcpiEvAddressSpaceDispatch (
>          /*
>           * For handlers other than the default (supplied) handlers, we must
>           * exit the interpreter because the handler *might* block -- we don't
> -         * know what it will do, so we can't hold the lock on the intepreter.
> +         * know what it will do, so we can't hold the lock on the interpreter.
>           */
>          AcpiExExitInterpreter();
>      }
> diff --git a/src/acpica/source/components/events/evrgnini.c b/src/acpica/source/components/events/evrgnini.c
> index a5234a21..718e2e87 100644
> --- a/src/acpica/source/components/events/evrgnini.c
> +++ b/src/acpica/source/components/events/evrgnini.c
> @@ -724,24 +724,6 @@ AcpiEvInitializeRegion (
>                  HandlerObj = ObjDesc->CommonNotify.Handler;
>                  break;
>  
> -            case ACPI_TYPE_METHOD:
> -                /*
> -                 * If we are executing module level code, the original
> -                 * Node's object was replaced by this Method object and we
> -                 * saved the handler in the method object.
> -                 *
> -                 * Note: Only used for the legacy MLC support. Will
> -                 * be removed in the future.
> -                 *
> -                 * See AcpiNsExecModuleCode
> -                 */
> -                if (!AcpiGbl_ExecuteTablesAsMethods &&
> -                    ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
> -                {
> -                    HandlerObj = ObjDesc->Method.Dispatch.Handler;
> -                }
> -                break;
> -
>              default:
>  
>                  /* Ignore other objects */
> diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
> index 546faa6e..52061db1 100644
> --- a/src/acpica/source/components/events/evxfgpe.c
> +++ b/src/acpica/source/components/events/evxfgpe.c
> @@ -885,9 +885,9 @@ ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: Clear and conditionally reenable a GPE. This completes the GPE
> + * DESCRIPTION: Clear and conditionally re-enable a GPE. This completes the GPE
>   *              processing. Intended for use by asynchronous host-installed
> - *              GPE handlers. The GPE is only reenabled if the EnableForRun bit
> + *              GPE handlers. The GPE is only re-enabled if the EnableForRun bit
>   *              is set in the GPE info.
>   *
>   ******************************************************************************/
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index 7a15387f..c4fda4c1 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -708,7 +708,7 @@ AcpiExConvertToString (
>          {
>              if (Base == 16)
>              {
> -                /* Emit 0x prefix for explict/implicit hex conversion */
> +                /* Emit 0x prefix for explicit/implicit hex conversion */
>  
>                  *NewBuf++ = '0';
>                  *NewBuf++ = 'x';
> diff --git a/src/acpica/source/components/executer/exfield.c b/src/acpica/source/components/executer/exfield.c
> index 5ef9bd31..b35e6a4e 100644
> --- a/src/acpica/source/components/executer/exfield.c
> +++ b/src/acpica/source/components/executer/exfield.c
> @@ -187,6 +187,17 @@ const UINT8     AcpiProtocolLengths[] =
>      0xFF                        /* F - ATTRIB_RAW_PROCESS_BYTES */
>  };
>  
> +#define PCC_MASTER_SUBSPACE     3
> +
> +/*
> + * The following macros determine a given offset is a COMD field.
> + * According to the specification, generic subspaces (types 0-2) contains a
> + * 2-byte COMD field at offset 4 and master subspaces (type 3) contains a 4-byte
> + * COMD field starting at offset 12.
> + */
> +#define GENERIC_SUBSPACE_COMMAND(a)     (4 == a || a == 5)
> +#define MASTER_SUBSPACE_COMMAND(a)      (12 <= a && a <= 15)
> +
>  
>  /*******************************************************************************
>   *
> @@ -337,6 +348,23 @@ AcpiExReadDataFromField (
>          Status = AcpiExReadGpio (ObjDesc, Buffer);
>          goto Exit;
>      }
> +    else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
> +        (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM))
> +    {
> +        /*
> +         * Reading from a PCC field unit does not require the handler because
> +         * it only requires reading from the InternalPccBuffer.
> +         */
> +        ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
> +            "PCC FieldRead bits %u\n", ObjDesc->Field.BitLength));
> +
> +        memcpy (Buffer, ObjDesc->Field.RegionObj->Field.InternalPccBuffer +
> +        ObjDesc->Field.BaseByteOffset, (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (
> +            ObjDesc->Field.BitLength));
> +
> +        *RetBufferDesc = BufferDesc;
> +        return AE_OK;
> +    }
>  
>      ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
>          "FieldRead [TO]:   Obj %p, Type %X, Buf %p, ByteLen %X\n",
> @@ -393,6 +421,7 @@ AcpiExWriteDataToField (
>  {
>      ACPI_STATUS             Status;
>      UINT32                  BufferLength;
> +    UINT32                  DataLength;
>      void                    *Buffer;
>  
>  
> @@ -439,6 +468,39 @@ AcpiExWriteDataToField (
>          Status = AcpiExWriteSerialBus (SourceDesc, ObjDesc, ResultDesc);
>          return_ACPI_STATUS (Status);
>      }
> +    else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
> +             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM))
> +    {
> +        /*
> +         * According to the spec a write to the COMD field will invoke the
> +         * region handler. Otherwise, write to the PccInternal buffer. This
> +         * implementation will use the offsets specified rather than the name
> +         * of the field. This is considered safer because some firmware tools
> +         * are known to obfiscate named objects.
> +         */
> +        DataLength = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (
> +            ObjDesc->Field.BitLength);
> +        memcpy (ObjDesc->Field.RegionObj->Field.InternalPccBuffer +
> +            ObjDesc->Field.BaseByteOffset,
> +            SourceDesc->Buffer.Pointer, DataLength);
> +
> +        if ((ObjDesc->Field.RegionObj->Region.Address == PCC_MASTER_SUBSPACE &&
> +           MASTER_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset)) ||
> +           GENERIC_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset))
> +        {
> +            /* Perform the write */
> +
> +            ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
> +                "PCC COMD field has been written. Invoking PCC handler now.\n"));
> +
> +            Status = AcpiExAccessRegion (
> +                ObjDesc, 0, (UINT64 *) ObjDesc->Field.RegionObj->Field.InternalPccBuffer,
> +                ACPI_WRITE);
> +            return_ACPI_STATUS (Status);
> +        }
> +        return (AE_OK);
> +    }
> +
>  
>      /* Get a pointer to the data to be written */
>  
> diff --git a/src/acpica/source/components/executer/exserial.c b/src/acpica/source/components/executer/exserial.c
> index 0b05fbce..07b42880 100644
> --- a/src/acpica/source/components/executer/exserial.c
> +++ b/src/acpica/source/components/executer/exserial.c
> @@ -165,7 +165,7 @@
>   * FUNCTION:    AcpiExReadGpio
>   *
>   * PARAMETERS:  ObjDesc             - The named field to read
> - *              Buffer              - Where the return data is returnd
> + *              Buffer              - Where the return data is returned
>   *
>   * RETURN:      Status
>   *
> diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
> index 795c9442..653777b7 100644
> --- a/src/acpica/source/components/executer/exutils.c
> +++ b/src/acpica/source/components/executer/exutils.c
> @@ -325,7 +325,7 @@ AcpiExTruncateFor32bitTable (
>   * RETURN:      None
>   *
>   * DESCRIPTION: Obtain the ACPI hardware Global Lock, only if the field
> - *              flags specifiy that it is to be obtained before field access.
> + *              flags specify that it is to be obtained before field access.
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
> index fc93604d..f5a82347 100644
> --- a/src/acpica/source/components/namespace/nsload.c
> +++ b/src/acpica/source/components/namespace/nsload.c
> @@ -233,7 +233,7 @@ AcpiNsLoadTable (
>          /*
>           * On error, delete any namespace objects created by this table.
>           * We cannot initialize these objects, so delete them. There are
> -         * a couple of expecially bad cases:
> +         * a couple of especially bad cases:
>           * AE_ALREADY_EXISTS - namespace collision.
>           * AE_NOT_FOUND - the target of a Scope operator does not
>           * exist. This target of Scope must already exist in the
> diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
> index 1aa568cb..e559223a 100644
> --- a/src/acpica/source/components/namespace/nsparse.c
> +++ b/src/acpica/source/components/namespace/nsparse.c
> @@ -422,66 +422,18 @@ AcpiNsParseTable (
>      ACPI_FUNCTION_TRACE (NsParseTable);
>  
>  
> -    if (AcpiGbl_ExecuteTablesAsMethods)
> -    {
> -        /*
> -         * This case executes the AML table as one large control method.
> -         * The point of this is to execute any module-level code in-place
> -         * as the table is parsed. Some AML code depends on this behavior.
> -         *
> -         * It is a run-time option at this time, but will eventually become
> -         * the default.
> -         *
> -         * Note: This causes the table to only have a single-pass parse.
> -         * However, this is compatible with other ACPI implementations.
> -         */
> -        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> -            "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
> -
> -        Status = AcpiNsExecuteTable (TableIndex, StartNode);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> -    }
> -    else
> -    {
> -        /*
> -         * AML Parse, pass 1
> -         *
> -         * In this pass, we load most of the namespace. Control methods
> -         * are not parsed until later. A parse tree is not created.
> -         * Instead, each Parser Op subtree is deleted when it is finished.
> -         * This saves a great deal of memory, and allows a small cache of
> -         * parse objects to service the entire parse. The second pass of
> -         * the parse then performs another complete parse of the AML.
> -         */
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
> -
> -        Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1,
> -            TableIndex, StartNode);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> +    /*
> +     * Executes the AML table as one large control method.
> +     * The point of this is to execute any module-level code in-place
> +     * as the table is parsed. Some AML code depends on this behavior.
> +     *
> +     * Note: This causes the table to only have a single-pass parse.
> +     * However, this is compatible with other ACPI implementations.
> +     */
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> +        "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
>  
> -        /*
> -         * AML Parse, pass 2
> -         *
> -         * In this pass, we resolve forward references and other things
> -         * that could not be completed during the first pass.
> -         * Another complete parse of the AML is performed, but the
> -         * overhead of this is compensated for by the fact that the
> -         * parse objects are all cached.
> -         */
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n"));
> -        Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2,
> -            TableIndex, StartNode);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> -    }
> +    Status = AcpiNsExecuteTable (TableIndex, StartNode);
>  
>      return_ACPI_STATUS (Status);
>  }
> diff --git a/src/acpica/source/components/namespace/nsutils.c b/src/acpica/source/components/namespace/nsutils.c
> index 78ba42ab..4a9f0313 100644
> --- a/src/acpica/source/components/namespace/nsutils.c
> +++ b/src/acpica/source/components/namespace/nsutils.c
> @@ -561,7 +561,7 @@ AcpiNsInternalizeName (
>   *
>   * FUNCTION:    AcpiNsExternalizeName
>   *
> - * PARAMETERS:  InternalNameLength  - Lenth of the internal name below
> + * PARAMETERS:  InternalNameLength  - Length of the internal name below
>   *              InternalName        - Internal representation of name
>   *              ConvertedNameLength - Where the length is returned
>   *              ConvertedName       - Where the resulting external name
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index 127850a6..7398c3df 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -178,13 +178,6 @@ AcpiPsGetArguments (
>      UINT8                   *AmlOpStart,
>      ACPI_PARSE_OBJECT       *Op);
>  
> -static void
> -AcpiPsLinkModuleCode (
> -    ACPI_PARSE_OBJECT       *ParentOp,
> -    UINT8                   *AmlStart,
> -    UINT32                  AmlLength,
> -    ACPI_OWNER_ID           OwnerId);
> -
>  
>  /*******************************************************************************
>   *
> @@ -208,7 +201,6 @@ AcpiPsGetArguments (
>  {
>      ACPI_STATUS             Status = AE_OK;
>      ACPI_PARSE_OBJECT       *Arg = NULL;
> -    const ACPI_OPCODE_INFO  *OpInfo;
>  
>  
>      ACPI_FUNCTION_TRACE_PTR (PsGetArguments, WalkState);
> @@ -287,82 +279,6 @@ AcpiPsGetArguments (
>              "Final argument count: %8.8X pass %u\n",
>              WalkState->ArgCount, WalkState->PassNumber));
>  
> -        /*
> -         * This case handles the legacy option that groups all module-level
> -         * code blocks together and defers execution until all of the tables
> -         * are loaded. Execute all of these blocks at this time.
> -         * Execute any module-level code that was detected during the table
> -         * load phase.
> -         *
> -         * Note: this option is deprecated and will be eliminated in the
> -         * future. Use of this option can cause problems with AML code that
> -         * depends upon in-order immediate execution of module-level code.
> -         */
> -        if (!AcpiGbl_ExecuteTablesAsMethods &&
> -            (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2) &&
> -            ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) == 0))
> -        {
> -            /*
> -             * We want to skip If/Else/While constructs during Pass1 because we
> -             * want to actually conditionally execute the code during Pass2.
> -             *
> -             * Except for disassembly, where we always want to walk the
> -             * If/Else/While packages
> -             */
> -            switch (Op->Common.AmlOpcode)
> -            {
> -            case AML_IF_OP:
> -            case AML_ELSE_OP:
> -            case AML_WHILE_OP:
> -                /*
> -                 * Currently supported module-level opcodes are:
> -                 * IF/ELSE/WHILE. These appear to be the most common,
> -                 * and easiest to support since they open an AML
> -                 * package.
> -                 */
> -                if (WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1)
> -                {
> -                    AcpiPsLinkModuleCode (Op->Common.Parent, AmlOpStart,
> -                        (UINT32) (WalkState->ParserState.PkgEnd - AmlOpStart),
> -                        WalkState->OwnerId);
> -                }
> -
> -                ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> -                    "Pass1: Skipping an If/Else/While body\n"));
> -
> -                /* Skip body of if/else/while in pass 1 */
> -
> -                WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd;
> -                WalkState->ArgCount = 0;
> -                break;
> -
> -            default:
> -                /*
> -                 * Check for an unsupported executable opcode at module
> -                 * level. We must be in PASS1, the parent must be a SCOPE,
> -                 * The opcode class must be EXECUTE, and the opcode must
> -                 * not be an argument to another opcode.
> -                 */
> -                if ((WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1) &&
> -                    (Op->Common.Parent->Common.AmlOpcode == AML_SCOPE_OP))
> -                {
> -                    OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
> -                    if ((OpInfo->Class == AML_CLASS_EXECUTE) &&
> -                        (!Arg))
> -                    {
> -                        ACPI_WARNING ((AE_INFO,
> -                            "Unsupported module-level executable opcode "
> -                            "0x%.2X at table offset 0x%.4X",
> -                            Op->Common.AmlOpcode,
> -                            (UINT32) (ACPI_PTR_DIFF (AmlOpStart,
> -                                WalkState->ParserState.AmlStart) +
> -                                sizeof (ACPI_TABLE_HEADER))));
> -                    }
> -                }
> -                break;
> -            }
> -        }
> -
>          /* Special processing for certain opcodes */
>  
>          switch (Op->Common.AmlOpcode)
> @@ -434,117 +350,6 @@ AcpiPsGetArguments (
>  }
>  
>  
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiPsLinkModuleCode
> - *
> - * PARAMETERS:  ParentOp            - Parent parser op
> - *              AmlStart            - Pointer to the AML
> - *              AmlLength           - Length of executable AML
> - *              OwnerId             - OwnerId of module level code
> - *
> - * RETURN:      None.
> - *
> - * DESCRIPTION: Wrap the module-level code with a method object and link the
> - *              object to the global list. Note, the mutex field of the method
> - *              object is used to link multiple module-level code objects.
> - *
> - * NOTE: In this legacy option, each block of detected executable AML
> - * code that is outside of any control method is wrapped with a temporary
> - * control method object and placed on a global list below.
> - *
> - * This function executes the module-level code for all tables only after
> - * all of the tables have been loaded. It is a legacy option and is
> - * not compatible with other ACPI implementations. See AcpiNsLoadTable.
> - *
> - * This function will be removed when the legacy option is removed.
> - *
> - ******************************************************************************/
> -
> -static void
> -AcpiPsLinkModuleCode (
> -    ACPI_PARSE_OBJECT       *ParentOp,
> -    UINT8                   *AmlStart,
> -    UINT32                  AmlLength,
> -    ACPI_OWNER_ID           OwnerId)
> -{
> -    ACPI_OPERAND_OBJECT     *Prev;
> -    ACPI_OPERAND_OBJECT     *Next;
> -    ACPI_OPERAND_OBJECT     *MethodObj;
> -    ACPI_NAMESPACE_NODE     *ParentNode;
> -
> -
> -    ACPI_FUNCTION_TRACE (PsLinkModuleCode);
> -
> -
> -    /* Get the tail of the list */
> -
> -    Prev = Next = AcpiGbl_ModuleCodeList;
> -    while (Next)
> -    {
> -        Prev = Next;
> -        Next = Next->Method.Mutex;
> -    }
> -
> -    /*
> -     * Insert the module level code into the list. Merge it if it is
> -     * adjacent to the previous element.
> -     */
> -    if (!Prev ||
> -       ((Prev->Method.AmlStart + Prev->Method.AmlLength) != AmlStart))
> -    {
> -        /* Create, initialize, and link a new temporary method object */
> -
> -        MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD);
> -        if (!MethodObj)
> -        {
> -            return_VOID;
> -        }
> -
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> -            "Create/Link new code block: %p\n", MethodObj));
> -
> -        if (ParentOp->Common.Node)
> -        {
> -            ParentNode = ParentOp->Common.Node;
> -        }
> -        else
> -        {
> -            ParentNode = AcpiGbl_RootNode;
> -        }
> -
> -        MethodObj->Method.AmlStart = AmlStart;
> -        MethodObj->Method.AmlLength = AmlLength;
> -        MethodObj->Method.OwnerId = OwnerId;
> -        MethodObj->Method.InfoFlags |= ACPI_METHOD_MODULE_LEVEL;
> -
> -        /*
> -         * Save the parent node in NextObject. This is cheating, but we
> -         * don't want to expand the method object.
> -         */
> -        MethodObj->Method.NextObject =
> -            ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParentNode);
> -
> -        if (!Prev)
> -        {
> -            AcpiGbl_ModuleCodeList = MethodObj;
> -        }
> -        else
> -        {
> -            Prev->Method.Mutex = MethodObj;
> -        }
> -    }
> -    else
> -    {
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> -            "Appending to existing code block: %p\n", Prev));
> -
> -        Prev->Method.AmlLength += AmlLength;
> -    }
> -
> -    return_VOID;
> -}
> -
>  /*******************************************************************************
>   *
>   * FUNCTION:    AcpiPsParseLoop
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index db3bbaba..68e83aa8 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -680,12 +680,12 @@ AcpiPsParseAml (
>              if (Status == AE_ABORT_METHOD)
>              {
>                  AcpiNsPrintNodePathname (
> -                    WalkState->MethodNode, "Method aborted:");
> +                    WalkState->MethodNode, "Aborting method");
>                  AcpiOsPrintf ("\n");
>              }
>              else
>              {
> -                ACPI_ERROR_METHOD ("Method parse/execution failed",
> +                ACPI_ERROR_METHOD ("Aborting method",
>                      WalkState->MethodNode, NULL, Status);
>              }
>              AcpiExEnterInterpreter ();
> diff --git a/src/acpica/source/components/resources/rsdumpinfo.c b/src/acpica/source/components/resources/rsdumpinfo.c
> index c807e285..d55bf63b 100644
> --- a/src/acpica/source/components/resources/rsdumpinfo.c
> +++ b/src/acpica/source/components/resources/rsdumpinfo.c
> @@ -180,7 +180,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpIrq[7] =
>      {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.DescriptorLength),             "Descriptor Length",        NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering),                   "Triggering",               AcpiGbl_HeDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity),                     "Polarity",                 AcpiGbl_LlDecode},
> -    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable),                     "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Shareable),                    "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.InterruptCount),               "Interrupt Count",          NULL},
>      {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]),                "Interrupt List",           NULL}
>  };
> @@ -324,7 +324,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpExtIrq[8] =
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer),     "Type",                     AcpiGbl_ConsumeDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering),           "Triggering",               AcpiGbl_HeDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity),             "Polarity",                 AcpiGbl_LlDecode},
> -    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Shareable),            "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource),       NULL,                       NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount),       "Interrupt Count",          NULL},
>      {ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]),        "Interrupt List",           NULL}
> @@ -347,7 +347,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpGpio[16] =
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Gpio.ConnectionType),              "ConnectionType",           AcpiGbl_CtDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.ProducerConsumer),            "ProducerConsumer",         AcpiGbl_ConsumeDecode},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Gpio.PinConfig),                   "PinConfig",                AcpiGbl_PpcDecode},
> -    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Sharable),                    "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Shareable),                   "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.IoRestriction),               "IoRestriction",            AcpiGbl_IorDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.Triggering),                  "Triggering",               AcpiGbl_HeDecode},
>      {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Polarity),                    "Polarity",                 AcpiGbl_LlDecode},
> @@ -365,7 +365,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinFunction[10] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinFunction),        "PinFunction",              NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinFunction.RevisionId),           "RevisionId",               NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinFunction.PinConfig),            "PinConfig",                AcpiGbl_PpcDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinFunction.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinFunction.Shareable),            "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinFunction.FunctionNumber),       "FunctionNumber",           NULL},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinFunction.ResourceSource),       "ResourceSource",           NULL},
>      {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinFunction.PinTableLength),       "PinTableLength",           NULL},
> @@ -379,7 +379,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinConfig[11] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinConfig),          "PinConfig",                NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinConfig.RevisionId),             "RevisionId",               NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.ProducerConsumer),       "ProducerConsumer",         AcpiGbl_ConsumeDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.Sharable),               "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.Shareable),              "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinConfig.PinConfigType),          "PinConfigType",            NULL},
>      {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (PinConfig.PinConfigValue),         "PinConfigValue",           NULL},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinConfig.ResourceSource),         "ResourceSource",           NULL},
> @@ -406,7 +406,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinGroupFunction[9] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinGroupFunction),   "PinGroupFunction",         NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupFunction.RevisionId),      "RevisionId",               NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.ProducerConsumer), "ProducerConsumer",        AcpiGbl_ConsumeDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.Sharable),        "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.Shareable),       "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinGroupFunction.FunctionNumber),  "FunctionNumber",           NULL},
>      {ACPI_RSD_SOURCE_LABEL, ACPI_RSD_OFFSET (PinGroupFunction.ResourceSourceLabel), "ResourceSourceLabel", NULL},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinGroupFunction.ResourceSource),  "ResourceSource",           NULL},
> @@ -419,7 +419,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinGroupConfig[10] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinGroupConfig),     "PinGroupConfig",           NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupConfig.RevisionId),        "RevisionId",               NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.ProducerConsumer),  "ProducerConsumer",         AcpiGbl_ConsumeDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.Sharable),          "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.Shareable),         "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupConfig.PinConfigType),     "PinConfigType",            NULL},
>      {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (PinGroupConfig.PinConfigValue),    "PinConfigValue",           NULL},
>      {ACPI_RSD_SOURCE_LABEL, ACPI_RSD_OFFSET (PinGroupConfig.ResourceSourceLabel), "ResourceSourceLabel", NULL},
> diff --git a/src/acpica/source/components/resources/rsirq.c b/src/acpica/source/components/resources/rsirq.c
> index 70ae3a1d..d2f3cfbc 100644
> --- a/src/acpica/source/components/resources/rsirq.c
> +++ b/src/acpica/source/components/resources/rsirq.c
> @@ -201,7 +201,7 @@ ACPI_RSCONVERT_INFO     AcpiRsGetIrq[9] =
>                          AML_OFFSET (Irq.Flags),
>                          3},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Shareable),
>                          AML_OFFSET (Irq.Flags),
>                          4},
>  
> @@ -241,7 +241,7 @@ ACPI_RSCONVERT_INFO     AcpiRsSetIrq[14] =
>                          AML_OFFSET (Irq.Flags),
>                          3},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Shareable),
>                          AML_OFFSET (Irq.Flags),
>                          4},
>  
> @@ -288,7 +288,7 @@ ACPI_RSCONVERT_INFO     AcpiRsSetIrq[14] =
>                          ACPI_ACTIVE_HIGH},
>  
>      {ACPI_RSC_EXIT_NE,  ACPI_RSC_COMPARE_VALUE,
> -                        ACPI_RS_OFFSET (Data.Irq.Sharable),
> +                        ACPI_RS_OFFSET (Data.Irq.Shareable),
>                          ACPI_EXCLUSIVE},
>  
>      /* We can optimize to a 2-byte IrqNoFlags() descriptor */
> @@ -329,7 +329,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertExtIrq[10] =
>                          AML_OFFSET (ExtendedIrq.Flags),
>                          2},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Shareable),
>                          AML_OFFSET (ExtendedIrq.Flags),
>                          3},
>  
> diff --git a/src/acpica/source/components/resources/rsserial.c b/src/acpica/source/components/resources/rsserial.c
> index f543f439..eaed2a37 100644
> --- a/src/acpica/source/components/resources/rsserial.c
> +++ b/src/acpica/source/components/resources/rsserial.c
> @@ -186,7 +186,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertGpio[18] =
>                          AML_OFFSET (Gpio.Flags),
>                          0},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Shareable),
>                          AML_OFFSET (Gpio.IntFlags),
>                          3},
>  
> @@ -274,7 +274,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinFunction[13] =
>                          AML_OFFSET (PinFunction.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Shareable),
>                          AML_OFFSET (PinFunction.Flags),
>                          0},
>  
> @@ -639,7 +639,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinConfig[14] =
>                          AML_OFFSET (PinConfig.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Shareable),
>                          AML_OFFSET (PinConfig.Flags),
>                          0},
>  
> @@ -775,7 +775,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupFunction[13] =
>                          AML_OFFSET (PinGroupFunction.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Shareable),
>                          AML_OFFSET (PinGroupFunction.Flags),
>                          0},
>  
> @@ -842,7 +842,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupConfig[14] =
>                          AML_OFFSET (PinGroupConfig.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Shareable),
>                          AML_OFFSET (PinGroupConfig.Flags),
>                          0},
>  
> diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c
> index 9691b2cd..aad5a626 100644
> --- a/src/acpica/source/components/tables/tbfadt.c
> +++ b/src/acpica/source/components/tables/tbfadt.c
> @@ -740,7 +740,7 @@ AcpiTbConvertFadt (
>                   * 64-bit X length field.
>                   * Note: If the legacy length field is > 0xFF bits, ignore
>                   * this check. (GPE registers can be larger than the
> -                 * 64-bit GAS structure can accomodate, 0xFF bits).
> +                 * 64-bit GAS structure can accommodate, 0xFF bits).
>                   */
>                  if ((ACPI_MUL_8 (Length) <= ACPI_UINT8_MAX) &&
>                      (Address64->BitWidth != ACPI_MUL_8 (Length)))
> diff --git a/src/acpica/source/components/tables/tbxface.c b/src/acpica/source/components/tables/tbxface.c
> index bc6eea30..097e535d 100644
> --- a/src/acpica/source/components/tables/tbxface.c
> +++ b/src/acpica/source/components/tables/tbxface.c
> @@ -263,7 +263,7 @@ AcpiInitializeTables (
>      /*
>       * Get the root table (RSDT or XSDT) and extract all entries to the local
>       * Root Table Array. This array contains the information of the RSDT/XSDT
> -     * in a common, more useable format.
> +     * in a common, more usable format.
>       */
>      Status = AcpiTbParseRootTable (RsdpAddress);
>      return_ACPI_STATUS (Status);
> @@ -334,7 +334,7 @@ AcpiReallocateRootTable (
>      {
>          /*
>           * Now it's safe to do full table validation. We can do deferred
> -         * table initilization here once the flag is set.
> +         * table initialization here once the flag is set.
>           */
>          AcpiGbl_EnableTableValidation = TRUE;
>          for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
> diff --git a/src/acpica/source/components/tables/tbxfload.c b/src/acpica/source/components/tables/tbxfload.c
> index a3168c5c..bda55ea2 100644
> --- a/src/acpica/source/components/tables/tbxfload.c
> +++ b/src/acpica/source/components/tables/tbxfload.c
> @@ -219,25 +219,19 @@ AcpiLoadTables (
>              "While loading namespace from ACPI tables"));
>      }
>  
> -    if (AcpiGbl_ExecuteTablesAsMethods)
> +    /*
> +     * Initialize the objects in the namespace that remain uninitialized.
> +     * This runs the executable AML that may be part of the declaration of
> +     * these name objects:
> +     *     OperationRegions, BufferFields, Buffers, and Packages.
> +     *
> +     */
> +    Status = AcpiNsInitializeObjects ();
> +    if (ACPI_SUCCESS (Status))
>      {
> -        /*
> -         * If the module-level code support is enabled, initialize the objects
> -         * in the namespace that remain uninitialized. This runs the executable
> -         * AML that may be part of the declaration of these name objects:
> -         *     OperationRegions, BufferFields, Buffers, and Packages.
> -         *
> -         * Note: The module-level code is optional at this time, but will
> -         * become the default in the future.
> -         */
> -        Status = AcpiNsInitializeObjects ();
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> +        AcpiGbl_NamespaceInitialized = TRUE;
>      }
>  
> -    AcpiGbl_NamespaceInitialized = TRUE;
>      return_ACPI_STATUS (Status);
>  }
>  
> diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c
> index 5460de2a..e470dfc4 100644
> --- a/src/acpica/source/components/utilities/utdecode.c
> +++ b/src/acpica/source/components/utilities/utdecode.c
> @@ -633,6 +633,7 @@ static const char           *AcpiGbl_GenericNotify[ACPI_GENERIC_NOTIFY_MAX + 1]
>      /* 0C */ "Reserved (was previously Shutdown Request)",  /* Reserved in ACPI 6.0 */
>      /* 0D */ "System Resource Affinity Update",
>      /* 0E */ "Heterogeneous Memory Attributes Update"       /* ACPI 6.2 */
> +    /* 0F */ "Error Disconnect Recover"                     /* ACPI 6.3 */
>  };
>  
>  static const char           *AcpiGbl_DeviceNotify[5] =
> @@ -669,14 +670,14 @@ AcpiUtGetNotifyName (
>      ACPI_OBJECT_TYPE        Type)
>  {
>  
> -    /* 00 - 0D are "common to all object types" (from ACPI Spec) */
> +    /* 00 - 0F are "common to all object types" (from ACPI Spec) */
>  
>      if (NotifyValue <= ACPI_GENERIC_NOTIFY_MAX)
>      {
>          return (AcpiGbl_GenericNotify[NotifyValue]);
>      }
>  
> -    /* 0E - 7F are reserved */
> +    /* 10 - 7F are reserved */
>  
>      if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
>      {
> diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
> index 3fbd0fd1..332e2dec 100644
> --- a/src/acpica/source/components/utilities/utdelete.c
> +++ b/src/acpica/source/components/utilities/utdelete.c
> @@ -412,6 +412,11 @@ AcpiUtDeleteInternalObj (
>  
>              AcpiUtDeleteObjectDesc (SecondDesc);
>          }
> +        if (Object->Field.InternalPccBuffer)
> +        {
> +            ACPI_FREE(Object->Field.InternalPccBuffer);
> +        }
> +
>          break;
>  
>      case ACPI_TYPE_BUFFER_FIELD:
> diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
> index 0d356e59..624c034c 100644
> --- a/src/acpica/source/components/utilities/uterror.c
> +++ b/src/acpica/source/components/utilities/uterror.c
> @@ -353,19 +353,19 @@ AcpiUtPrefixedNamespaceError (
>      case AE_ALREADY_EXISTS:
>  
>          AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
> -        Message = "Failure creating";
> +        Message = "Failure creating named object";
>          break;
>  
>      case AE_NOT_FOUND:
>  
>          AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
> -        Message = "Could not resolve";
> +        Message = "Could not resolve symbol";
>          break;
>  
>      default:
>  
>          AcpiOsPrintf (ACPI_MSG_ERROR);
> -        Message = "Failure resolving";
> +        Message = "Failure resolving symbol";
>          break;
>      }
>  
> @@ -500,7 +500,8 @@ AcpiUtMethodError (
>      }
>  
>      AcpiNsPrintNodePathname (Node, Message);
> -    AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus));
> +    AcpiOsPrintf (" due to previous error (%s)",
> +        AcpiFormatException (MethodStatus));
>  
>      ACPI_MSG_SUFFIX;
>      ACPI_MSG_REDIRECT_END;
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index 3706e27e..e93cfe1e 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -286,7 +286,7 @@
>  
>  /*
>   * Maximal number of elements the Result Stack can contain,
> - * it may be an arbitray value not exceeding the types of
> + * it may be an arbitrary value not exceeding the types of
>   * ResultSize and ResultCount (now UINT8).
>   */
>  #define ACPI_RESULTS_OBJ_NUM_MAX        255
> diff --git a/src/acpica/source/include/acdebug.h b/src/acpica/source/include/acdebug.h
> index f3c1874a..4e43bbee 100644
> --- a/src/acpica/source/include/acdebug.h
> +++ b/src/acpica/source/include/acdebug.h
> @@ -159,7 +159,8 @@
>  #endif
>  
>  
> -#define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
> +#define ACPI_DEBUG_BUFFER_SIZE      0x4000      /* 16K buffer for return objects */
> +#define ACPI_DEBUG_LENGTH_FORMAT    " (%.4X bits, %.3X bytes)"
>  
>  typedef struct acpi_db_command_info
>  {
> diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
> index 0f52e7db..fa0aebe2 100644
> --- a/src/acpica/source/include/acdisasm.h
> +++ b/src/acpica/source/include/acdisasm.h
> @@ -409,6 +409,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
> +extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtEl2[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
> @@ -553,6 +554,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat4[];
> +extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat5[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaHdr[];
> diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h
> index 12b2a5f2..1c9a49d9 100644
> --- a/src/acpica/source/include/acexcep.h
> +++ b/src/acpica/source/include/acexcep.h
> @@ -434,7 +434,7 @@ static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Aml[] =
>      EXCEP_TXT ("AE_AML_DIVIDE_BY_ZERO",         "During execution of AML Divide operator"),
>      EXCEP_TXT ("AE_AML_BAD_NAME",               "An ACPI name contains invalid character(s)"),
>      EXCEP_TXT ("AE_AML_NAME_NOT_FOUND",         "Could not resolve a named reference"),
> -    EXCEP_TXT ("AE_AML_INTERNAL",               "An internal error within the interprete"),
> +    EXCEP_TXT ("AE_AML_INTERNAL",               "An internal error within the interpreter"),
>      EXCEP_TXT ("AE_AML_INVALID_SPACE_ID",       "An Operation Region SpaceID is invalid"),
>      EXCEP_TXT ("AE_AML_STRING_LIMIT",           "String is longer than 200 characters"),
>      EXCEP_TXT ("AE_AML_NO_RETURN_VALUE",        "A method did not return a required value"),
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index bd27374c..b5c4aa02 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -1105,7 +1105,7 @@ typedef struct acpi_comment_addr_node
>  
>  /*
>   * File node - used for "Include" operator file stack and
> - * depdendency tree for the -ca option
> + * dependency tree for the -ca option
>   */
>  typedef struct acpi_file_node
>  {
> diff --git a/src/acpica/source/include/acmacros.h b/src/acpica/source/include/acmacros.h
> index 6046030d..340ef725 100644
> --- a/src/acpica/source/include/acmacros.h
> +++ b/src/acpica/source/include/acmacros.h
> @@ -610,7 +610,7 @@
>  
>  
>  /*
> - * Macors used for the ASL-/ASL+ converter utility
> + * Macros used for the ASL-/ASL+ converter utility
>   */
>  #ifdef ACPI_ASL_COMPILER
>  
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index e345ca34..b9b30200 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -453,6 +453,7 @@ typedef struct acpi_object_region_field
>      union acpi_operand_object       *RegionObj;         /* Containing OpRegion object */
>      UINT8                           *ResourceBuffer;    /* ResourceTemplate for serial regions/fields */
>      UINT16                          PinNumberIndex;     /* Index relative to previous Connection/Template */
> +    UINT8                           *InternalPccBuffer; /* Internal buffer for fields associated with PCC */
>  
>  } ACPI_OBJECT_REGION_FIELD;
>  
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index c57be658..ad653f0e 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>  
>  /* Current ACPICA subsystem version in YYYYMMDD format */
>  
> -#define ACPI_CA_VERSION                 0x20190108
> +#define ACPI_CA_VERSION                 0x20190215
>  
>  #include "acconfig.h"
>  #include "actypes.h"
> @@ -300,14 +300,6 @@ ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CopyDsdtLocally, FALSE);
>   */
>  ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
>  
> -/*
> - * Optionally support module level code by parsing an entire table as
> - * a method as it is loaded. Default is TRUE.
> - * NOTE, this is essentially obsolete and will be removed soon
> - * (01/2018).
> - */
> -ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_ExecuteTablesAsMethods, TRUE);
> -
>  /*
>   * Optionally use 32-bit FADT addresses if and when there is a conflict
>   * (address mismatch) between the 32-bit and 64-bit versions of the
> diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
> index 11c6b6a4..8bdbbf99 100644
> --- a/src/acpica/source/include/acpredef.h
> +++ b/src/acpica/source/include/acpredef.h
> @@ -760,6 +760,21 @@ const ACPI_PREDEFINED_INFO          AcpiGbl_PredefinedMethods[] =
>      {{"_MTL",   METHOD_0ARGS,                          /* ACPI 6.0 */
>                  METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
>  
> +    {{"_NBS",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NCH",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NIC",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NIG",   METHOD_1ARGS (ACPI_TYPE_BUFFER),       /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NIH",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
>      {{"_NTT",   METHOD_0ARGS,
>                  METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
>  
> diff --git a/src/acpica/source/include/acrestyp.h b/src/acpica/source/include/acrestyp.h
> index 80d2b370..fa24363d 100644
> --- a/src/acpica/source/include/acrestyp.h
> +++ b/src/acpica/source/include/acrestyp.h
> @@ -287,7 +287,7 @@ typedef struct acpi_resource_irq
>      UINT8                           DescriptorLength;
>      UINT8                           Triggering;
>      UINT8                           Polarity;
> -    UINT8                           Sharable;
> +    UINT8                           Shareable;
>      UINT8                           WakeCapable;
>      UINT8                           InterruptCount;
>      UINT8                           Interrupts[1];
> @@ -534,7 +534,7 @@ typedef struct acpi_resource_extended_irq
>      UINT8                           ProducerConsumer;
>      UINT8                           Triggering;
>      UINT8                           Polarity;
> -    UINT8                           Sharable;
> +    UINT8                           Shareable;
>      UINT8                           WakeCapable;
>      UINT8                           InterruptCount;
>      ACPI_RESOURCE_SOURCE            ResourceSource;
> @@ -558,7 +558,7 @@ typedef struct acpi_resource_gpio
>      UINT8                           ConnectionType;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
>      UINT8                           PinConfig;
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT8                           WakeCapable;        /* For values, see Interrupt Attributes above */
>      UINT8                           IoRestriction;
>      UINT8                           Triggering;         /* For values, see Interrupt Attributes above */
> @@ -736,7 +736,7 @@ typedef struct acpi_resource_pin_function
>  {
>      UINT8                           RevisionId;
>      UINT8                           PinConfig;
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT16                          FunctionNumber;
>      UINT16                          PinTableLength;
>      UINT16                          VendorLength;
> @@ -750,7 +750,7 @@ typedef struct acpi_resource_pin_config
>  {
>      UINT8                           RevisionId;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT8                           PinConfigType;
>      UINT32                          PinConfigValue;
>      UINT16                          PinTableLength;
> @@ -794,7 +794,7 @@ typedef struct acpi_resource_pin_group_function
>  {
>      UINT8                           RevisionId;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT16                          FunctionNumber;
>      UINT16                          VendorLength;
>      ACPI_RESOURCE_SOURCE            ResourceSource;
> @@ -807,7 +807,7 @@ typedef struct acpi_resource_pin_group_config
>  {
>      UINT8                           RevisionId;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT8                           PinConfigType;      /* For values, see PinConfigType above */
>      UINT32                          PinConfigValue;
>      UINT16                          VendorLength;
> diff --git a/src/acpica/source/include/actbinfo.h b/src/acpica/source/include/actbinfo.h
> index 1218b59b..335a291b 100644
> --- a/src/acpica/source/include/actbinfo.h
> +++ b/src/acpica/source/include/actbinfo.h
> @@ -237,6 +237,7 @@
>  #define ACPI_GTDT0a_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_ENTRY,f)
>  #define ACPI_GTDT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_GTDT_WATCHDOG,f)
>  #define ACPI_GTDTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_GTDT_HEADER,f)
> +#define ACPI_GTDT_EL2_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_GTDT_EL2,f)
>  #define ACPI_HEST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
>  #define ACPI_HEST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
>  #define ACPI_HEST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
> @@ -248,7 +249,7 @@
>  #define ACPI_HEST11_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_HEST_IA_DEFERRED_CHECK,f)
>  #define ACPI_HESTN_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
>  #define ACPI_HESTB_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
> -#define ACPI_HMAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_ADDRESS_RANGE,f)
> +#define ACPI_HMAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_PROXIMITY_DOMAIN,f)
>  #define ACPI_HMAT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_LOCALITY,f)
>  #define ACPI_HMAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_CACHE,f)
>  #define ACPI_HMATH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_STRUCTURE,f)
> @@ -334,6 +335,7 @@
>  #define ACPI_SRAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
>  #define ACPI_SRAT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f)
>  #define ACPI_SRAT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f)
> +#define ACPI_SRAT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f)
>  #define ACPI_TCPA_CLIENT_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
>  #define ACPI_TCPA_SERVER_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
>  #define ACPI_TPM2A_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
> @@ -361,10 +363,11 @@
>  #define ACPI_SRAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o)
>  #define ACPI_SRAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
>  #define ACPI_SRAT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GICC_AFFINITY,f,o)
> +#define ACPI_SRAT5_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f,o)
>  #define ACPI_GTDT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o)
>  #define ACPI_GTDT0a_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o)
>  #define ACPI_GTDT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o)
> -#define ACPI_HMAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_ADDRESS_RANGE,f,o)
> +#define ACPI_HMAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_PROXIMITY_DOMAIN,f,o)
>  #define ACPI_HMAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_LOCALITY,f,o)
>  #define ACPI_HMAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_CACHE,f,o)
>  #define ACPI_IORT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o)
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index 38e73db8..b1700608 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -797,7 +797,7 @@ typedef struct acpi_dmar_hardware_unit
>  #define ACPI_DMAR_INCLUDE_ALL       (1)
>  
>  
> -/* 1: Reserved Memory Defininition */
> +/* 1: Reserved Memory Definition */
>  
>  typedef struct acpi_dmar_reserved_memory
>  {
> @@ -1319,6 +1319,12 @@ typedef struct acpi_table_gtdt
>  #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
>  #define ACPI_GTDT_ALWAYS_ON             (1<<2)
>  
> +typedef struct acpi_gtdt_el2
> +{
> +    UINT32                  VirtualEL2TimerGsiv;
> +    UINT32                  VirtualEL2TimerFlags;
> +} ACPI_GTDT_EL2;
> +
>  
>  /* Common GTDT subtable header */
>  
> @@ -1778,7 +1784,7 @@ typedef struct acpi_table_hmat
>  
>  enum AcpiHmatType
>  {
> -    ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subystem address range */
> +    ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subsystem address range */
>      ACPI_HMAT_TYPE_LOCALITY             = 1,   /* System locality latency and bandwidth information */
>      ACPI_HMAT_TYPE_CACHE                = 2,   /* Memory side cache information */
>      ACPI_HMAT_TYPE_RESERVED             = 3    /* 3 and greater are reserved */
> @@ -1797,9 +1803,9 @@ typedef struct acpi_hmat_structure
>   * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
>   */
>  
> -/* 0: Memory subystem address range */
> +/* 0: Memory proximity domain attributes */
>  
> -typedef struct acpi_hmat_address_range
> +typedef struct acpi_hmat_proximity_domain
>  {
>      ACPI_HMAT_STRUCTURE     Header;
>      UINT16                  Flags;
> @@ -1807,10 +1813,10 @@ typedef struct acpi_hmat_address_range
>      UINT32                  ProcessorPD;            /* Processor proximity domain */
>      UINT32                  MemoryPD;               /* Memory proximity domain */
>      UINT32                  Reserved2;
> -    UINT64                  PhysicalAddressBase;    /* Physical address range base */
> -    UINT64                  PhysicalAddressLength;  /* Physical address range length */
> +    UINT64                  Reserved3;
> +    UINT64                  Reserved4;
>  
> -} ACPI_HMAT_ADDRESS_RANGE;
> +} ACPI_HMAT_PROXIMITY_DOMAIN;
>  
>  /* Masks for Flags field above */
>  
> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
> index 562584ec..07d907e3 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -303,7 +303,7 @@ typedef struct acpi_iort_memory_access
>  typedef struct acpi_iort_its_group
>  {
>      UINT32                  ItsCount;
> -    UINT32                  Identifiers[1];         /* GIC ITS identifier arrary */
> +    UINT32                  Identifiers[1];         /* GIC ITS identifier array */
>  
>  } ACPI_IORT_ITS_GROUP;
>  
> @@ -873,7 +873,7 @@ typedef struct acpi_madt_local_x2apic_nmi
>  } ACPI_MADT_LOCAL_X2APIC_NMI;
>  
>  
> -/* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */
> +/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 changes) */
>  
>  typedef struct acpi_madt_generic_interrupt
>  {
> @@ -892,7 +892,8 @@ typedef struct acpi_madt_generic_interrupt
>      UINT64                  GicrBaseAddress;
>      UINT64                  ArmMpidr;
>      UINT8                   EfficiencyClass;
> -    UINT8                   Reserved2[3];
> +    UINT8                   Reserved2[1];
> +    UINT16                  SpeInterrupt;       /* ACPI 6.3 */
>  
>  } ACPI_MADT_GENERIC_INTERRUPT;
>  
> @@ -1737,6 +1738,7 @@ typedef struct acpi_pdtt_channel
>  
>  #define ACPI_PDTT_RUNTIME_TRIGGER           (1)
>  #define ACPI_PDTT_WAIT_COMPLETION           (1<<1)
> +#define ACPI_PDTT_TRIGGER_ORDER             (1<<2)
>  
>  
>  /*******************************************************************************
> @@ -1873,8 +1875,11 @@ typedef struct acpi_pptt_processor
>  
>  /* Flags */
>  
> -#define ACPI_PPTT_PHYSICAL_PACKAGE          (1)     /* Physical package */
> -#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID   (2)     /* ACPI Processor ID valid */
> +#define ACPI_PPTT_PHYSICAL_PACKAGE          (1)
> +#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID   (1<<1)
> +#define ACPI_PPTT_ACPI_PROCESSOR_IS_THREAD  (1<<2)  /* ACPI 6.3 */
> +#define ACPI_PPTT_ACPI_LEAF_NODE            (1<<3)  /* ACPI 6.3 */
> +#define ACPI_PPTT_ACPI_IDENTICAL            (1<<4)  /* ACPI 6.3 */
>  
>  
>  /* 1: Cache Type Structure */
> diff --git a/src/acpica/source/include/actbl3.h b/src/acpica/source/include/actbl3.h
> index c4a45997..db5535e8 100644
> --- a/src/acpica/source/include/actbl3.h
> +++ b/src/acpica/source/include/actbl3.h
> @@ -350,8 +350,9 @@ enum AcpiSratType
>      ACPI_SRAT_TYPE_MEMORY_AFFINITY      = 1,
>      ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY  = 2,
>      ACPI_SRAT_TYPE_GICC_AFFINITY        = 3,
> -    ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4,    /* ACPI 6.2 */
> -    ACPI_SRAT_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
> +    ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4, /* ACPI 6.2 */
> +    ACPI_SRAT_TYPE_GENERIC_AFFINITY     = 5, /* ACPI 6.3 */
> +    ACPI_SRAT_TYPE_RESERVED             = 6  /* 5 and greater are reserved */
>  };
>  
>  /*
> @@ -447,6 +448,24 @@ typedef struct acpi_srat_gic_its_affinity
>  } ACPI_SRAT_GIC_ITS_AFFINITY;
>  
>  
> +/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
> +
> +typedef struct acpi_srat_generic_affinity
> +{
> +    ACPI_SUBTABLE_HEADER    Header;
> +    UINT8                   Reserved;
> +    UINT8                   DeviceHandleType;
> +    UINT32                  ProximityDomain;
> +    UINT8                   DeviceHandle[16];
> +    UINT32                  Flags;
> +    UINT32                  Reserved1;
> +
> +} ACPI_SRAT_GENERIC_AFFINITY;
> +
> +/* Flags for ACPI_SRAT_GENERIC_AFFINITY */
> +
> +#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
> +
>  /*******************************************************************************
>   *
>   * STAO - Status Override Table (_STA override) - ACPI 6.0
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index a5ab31fe..2a65ee8f 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -767,8 +767,9 @@ typedef UINT64                          ACPI_INTEGER;
>  #define ACPI_NOTIFY_SHUTDOWN_REQUEST    (UINT8) 0x0C
>  #define ACPI_NOTIFY_AFFINITY_UPDATE     (UINT8) 0x0D
>  #define ACPI_NOTIFY_MEMORY_UPDATE       (UINT8) 0x0E
> +#define ACPI_NOTIFY_DISCONNECT_RECOVER  (UINT8) 0x0F
>  
> -#define ACPI_GENERIC_NOTIFY_MAX         0x0E
> +#define ACPI_GENERIC_NOTIFY_MAX         0x0F
>  #define ACPI_SPECIFIC_NOTIFY_MAX        0x84
>  
>  /*
> diff --git a/src/acpica/source/tools/acpiexec/aeinstall.c b/src/acpica/source/tools/acpiexec/aeinstall.c
> index e5790929..c5269571 100644
> --- a/src/acpica/source/tools/acpiexec/aeinstall.c
> +++ b/src/acpica/source/tools/acpiexec/aeinstall.c
> @@ -215,6 +215,7 @@ static ACPI_ADR_SPACE_TYPE  SpaceIdList[] =
>      ACPI_ADR_SPACE_IPMI,
>      ACPI_ADR_SPACE_GPIO,
>      ACPI_ADR_SPACE_GSBUS,
> +    ACPI_ADR_SPACE_PLATFORM_COMM,
>      ACPI_ADR_SPACE_FIXED_HARDWARE,
>      ACPI_ADR_SPACE_USER_DEFINED1,
>      ACPI_ADR_SPACE_USER_DEFINED2
> diff --git a/src/acpica/source/tools/acpiexec/aeregion.c b/src/acpica/source/tools/acpiexec/aeregion.c
> index 152ef233..e6aa7f9f 100644
> --- a/src/acpica/source/tools/acpiexec/aeregion.c
> +++ b/src/acpica/source/tools/acpiexec/aeregion.c
> @@ -364,7 +364,7 @@ AeRegionHandler (
>                      ACPI_FREE (Resource);
>                  }
>  
> -                AcpiOsPrintf (" [AccessLength %.2X Connnection %p]",
> +                AcpiOsPrintf (" [AccessLength %.2X Connection %p]",
>                      MyContext->AccessLength, MyContext->Connection);
>              }
>  
> @@ -440,6 +440,23 @@ AeRegionHandler (
>          /* Now perform the "normal" SystemMemory handling, for AcpiExec only */
>          break;
>  
> +    /*
> +     * PCC operation region will write the entire subspace's data and expect
> +     * a response from the hardware. For acpiexec, we'll fill the buffer with
> +     * default values. Note: ASLTS will depend on these values.
> +     */
> +    case ACPI_ADR_SPACE_PLATFORM_COMM: /* ACPI 6.3 */
> +        if (AcpiGbl_DisplayRegionAccess)
> +        {
> +            AcpiOsPrintf ("AcpiExec: PCC Write : Addr %.4X Width %X\n",
> +                (UINT32) Address, BitWidth);
> +        }
> +        for (i = 0; i < Length; ++i)
> +        {
> +            Buffer[i] = (UINT8) i;
> +        }
> +        return (AE_OK);
> +
>      default:
>          break;
>      }
> 

Acked-by: Alex Hung <alex.hung@canonical.com>
Ivan Hu Feb. 18, 2019, 11:02 a.m. UTC | #2
On 2/16/19 3:10 AM, Colin King wrote:
> From: Colin Ian King <colin.king@canonical.com>
>
> changes in this release of ACPICA are detailed at the following
> link on the ACPICA developer mailing list:
>
> https://lists.acpica.org/pipermail/devel/2019-February/001868.html
>
> Signed-off-by: Colin Ian King <colin.king@canonical.com>
> ---
>  src/acpica/source/common/ahpredef.c           |   7 +-
>  src/acpica/source/common/ahuuids.c            |   2 +-
>  src/acpica/source/common/dmextern.c           |   2 +-
>  src/acpica/source/common/dmrestag.c           |   2 +-
>  src/acpica/source/common/dmtable.c            |   3 +-
>  src/acpica/source/common/dmtbdump1.c          |  21 +-
>  src/acpica/source/common/dmtbdump3.c          |   5 +
>  src/acpica/source/common/dmtbinfo1.c          |  17 +-
>  src/acpica/source/common/dmtbinfo2.c          |  24 ++-
>  src/acpica/source/common/dmtbinfo3.c          |  14 ++
>  src/acpica/source/compiler/aslcompile.c       |   2 +-
>  src/acpica/source/compiler/aslcompiler.h      |   4 +-
>  src/acpica/source/compiler/aslcompiler.l      |   9 +-
>  src/acpica/source/compiler/aslload.c          |   6 +-
>  src/acpica/source/compiler/aslmessages.c      |   8 +-
>  src/acpica/source/compiler/aslmessages.h      |   6 +-
>  src/acpica/source/compiler/asloperands.c      |  10 +-
>  src/acpica/source/compiler/aslopt.c           |   2 +-
>  src/acpica/source/compiler/aslpredef.c        |   2 +-
>  src/acpica/source/compiler/aslprintf.c        |   2 +-
>  src/acpica/source/compiler/aslresources.y     |   4 +-
>  src/acpica/source/compiler/aslsupport.l       |   2 +-
>  src/acpica/source/compiler/aslxref.c          | 118 ++++++++++-
>  src/acpica/source/compiler/cvcompiler.c       |  10 +-
>  src/acpica/source/compiler/cvparser.c         |   6 +-
>  src/acpica/source/compiler/dtexpress.c        |   2 +-
>  src/acpica/source/compiler/dtio.c             |   2 +-
>  src/acpica/source/compiler/dttable1.c         |  24 ++-
>  src/acpica/source/compiler/dttable2.c         |   5 +
>  src/acpica/source/compiler/dttemplate.h       |  65 +++---
>  .../source/components/debugger/dbdisply.c     |   4 +-
>  .../source/components/debugger/dbexec.c       |   4 +-
>  .../source/components/debugger/dbnames.c      |   2 +-
>  .../source/components/debugger/dbobject.c     |   2 +-
>  .../source/components/debugger/dbtest.c       | 163 +++++++++------
>  .../source/components/disassembler/dmbuffer.c |   2 +-
>  .../source/components/disassembler/dmcstyle.c |   4 +-
>  .../source/components/disassembler/dmnames.c  |   2 +-
>  .../source/components/disassembler/dmresrc.c  |   4 +-
>  .../source/components/disassembler/dmresrcs.c |   2 +-
>  .../source/components/dispatcher/dsfield.c    |   6 +
>  .../source/components/dispatcher/dsopcode.c   |  13 +-
>  .../source/components/dispatcher/dswload2.c   |   2 +-
>  src/acpica/source/components/events/evgpe.c   |   2 +-
>  .../source/components/events/evregion.c       |   2 +-
>  .../source/components/events/evrgnini.c       |  18 --
>  src/acpica/source/components/events/evxfgpe.c |   4 +-
>  .../source/components/executer/exconvrt.c     |   2 +-
>  .../source/components/executer/exfield.c      |  62 ++++++
>  .../source/components/executer/exserial.c     |   2 +-
>  .../source/components/executer/exutils.c      |   2 +-
>  .../source/components/namespace/nsload.c      |   2 +-
>  .../source/components/namespace/nsparse.c     |  70 +------
>  .../source/components/namespace/nsutils.c     |   2 +-
>  src/acpica/source/components/parser/psloop.c  | 195 ------------------
>  src/acpica/source/components/parser/psparse.c |   4 +-
>  .../source/components/resources/rsdumpinfo.c  |  14 +-
>  .../source/components/resources/rsirq.c       |   8 +-
>  .../source/components/resources/rsserial.c    |  10 +-
>  src/acpica/source/components/tables/tbfadt.c  |   2 +-
>  src/acpica/source/components/tables/tbxface.c |   4 +-
>  .../source/components/tables/tbxfload.c       |  26 +--
>  .../source/components/utilities/utdecode.c    |   5 +-
>  .../source/components/utilities/utdelete.c    |   5 +
>  .../source/components/utilities/uterror.c     |   9 +-
>  src/acpica/source/include/acconfig.h          |   2 +-
>  src/acpica/source/include/acdebug.h           |   3 +-
>  src/acpica/source/include/acdisasm.h          |   2 +
>  src/acpica/source/include/acexcep.h           |   2 +-
>  src/acpica/source/include/aclocal.h           |   2 +-
>  src/acpica/source/include/acmacros.h          |   2 +-
>  src/acpica/source/include/acobject.h          |   1 +
>  src/acpica/source/include/acpixf.h            |  10 +-
>  src/acpica/source/include/acpredef.h          |  15 ++
>  src/acpica/source/include/acrestyp.h          |  14 +-
>  src/acpica/source/include/actbinfo.h          |   7 +-
>  src/acpica/source/include/actbl1.h            |  20 +-
>  src/acpica/source/include/actbl2.h            |  15 +-
>  src/acpica/source/include/actbl3.h            |  23 ++-
>  src/acpica/source/include/actypes.h           |   3 +-
>  src/acpica/source/tools/acpiexec/aeinstall.c  |   1 +
>  src/acpica/source/tools/acpiexec/aeregion.c   |  19 +-
>  82 files changed, 661 insertions(+), 526 deletions(-)
>
> diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
> index afa71a1f..58b2d662 100644
> --- a/src/acpica/source/common/ahpredef.c
> +++ b/src/acpica/source/common/ahpredef.c
> @@ -305,6 +305,11 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
>      AH_PREDEF ("_MSM",    "Memory Set Monitoring", "Sets bandwidth monitoring parameters for a memory device"),
>      AH_PREDEF ("_MTL",    "Minimum Throttle Limit", "Returns the minimum throttle limit for a thermal zone"),
>      AH_PREDEF ("_MTP",    "Memory Type", "Resource Descriptor field"),
> +    AH_PREDEF ("_NBS",    "NVDIMM Boot Status", "Returns information about NVDIMM device’s status at boot time"),
> +    AH_PREDEF ("_NCH",    "NVDIMM Current Health Information", "Returns current health information of the NVDIMM device"),
> +    AH_PREDEF ("_NIC",    "NVDIMM Health Error Injection Capabilities", "Returns health error injection capabilities that are supported by the platform"),
> +    AH_PREDEF ("_NIG",    "NVDIMM Inject Health Error Status","Returns currently active health errors and their error attributes that are injected by _NIH"),
> +    AH_PREDEF ("_NIH",    "NVDIMM Inject/Clear Health Errors", "Returns the status of injecting or clearing Health Errors"),
>      AH_PREDEF ("_NTT",    "Notification Temperature Threshold", "Returns a threshold for device temperature change that requires platform notification"),
>      AH_PREDEF ("_OFF",    "Power Off", "Sets a power resource to the off state"),
>      AH_PREDEF ("_ON_",    "Power On", "Sets a power resource to the on state"),
> @@ -393,7 +398,7 @@ const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
>      AH_PREDEF ("_SDD",    "Set Device Data", "Sets data for a SATA device"),
>      AH_PREDEF ("_SEG",    "PCI Segment", "Returns a device's PCI Segment Group number"),
>      AH_PREDEF ("_SHL",    "Set Hardware Limit", "Sets the hardware limit enforced by the Power Meter"),
> -    AH_PREDEF ("_SHR",    "Sharable", "Interrupt share status, Resource Descriptor field"),
> +    AH_PREDEF ("_SHR",    "Shareable", "Interrupt share status, Resource Descriptor field"),
>      AH_PREDEF ("_SI_",    "System Indicators", "Predefined scope"),
>      AH_PREDEF ("_SIZ",    "Size", "DMA transfer size, Resource Descriptor field"),
>      AH_PREDEF ("_SLI",    "System Locality Information", "Returns a list of NUMA system localities"),
> diff --git a/src/acpica/source/common/ahuuids.c b/src/acpica/source/common/ahuuids.c
> index 0d0a3590..c9a390ba 100644
> --- a/src/acpica/source/common/ahuuids.c
> +++ b/src/acpica/source/common/ahuuids.c
> @@ -226,7 +226,7 @@ AcpiAhMatchUuid (
>  
>      for (Info = Gbl_AcpiUuids; Info->Description; Info++)
>      {
> -        /* Null string means desciption is a UUID class */
> +        /* Null string means description is a UUID class */
>  
>          if (!Info->String)
>          {
> diff --git a/src/acpica/source/common/dmextern.c b/src/acpica/source/common/dmextern.c
> index 629105fb..8ac2c60c 100644
> --- a/src/acpica/source/common/dmextern.c
> +++ b/src/acpica/source/common/dmextern.c
> @@ -1216,7 +1216,7 @@ AcpiDmCreateSubobjectForExternal (
>   *
>   * DESCRIPTION: Add one external to the namespace by resolvign the external
>   *              (by performing a namespace lookup) and annotating the resulting
> - *              namespace node with the approperiate information if the type
> + *              namespace node with the appropriate information if the type
>   *              is ACPI_TYPE_REGION or ACPI_TYPE_METHOD.
>   *
>   ******************************************************************************/
> diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
> index f5789847..c33b0497 100644
> --- a/src/acpica/source/common/dmrestag.c
> +++ b/src/acpica/source/common/dmrestag.c
> @@ -906,7 +906,7 @@ AcpiDmUpdateResourceName (
>   *
>   * PARAMETERS:  BitIndex            - Index into the resource descriptor
>   *              Resource            - Pointer to the raw resource data
> - *              ResourceIndex       - Index correspoinding to the resource type
> + *              ResourceIndex       - Index corresponding to the resource type
>   *
>   * RETURN:      Pointer to the resource tag (ACPI_NAME). NULL if no match.
>   *
> diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
> index f0fb2aa4..e51ff424 100644
> --- a/src/acpica/source/common/dmtable.c
> +++ b/src/acpica/source/common/dmtable.c
> @@ -320,7 +320,7 @@ static const char           *AcpiDmHestNotifySubnames[] =
>  
>  static const char           *AcpiDmHmatSubnames[] =
>  {
> -    "Memory Subystem Address Range",
> +    "Memory Proximity Domain Attributes",
>      "System Locality Latency and Bandwidth Information",
>      "Memory Side Cache Information",
>      "Unknown Structure Type"         /* Reserved */
> @@ -400,6 +400,7 @@ static const char           *AcpiDmSratSubnames[] =
>      "Processor Local x2APIC Affinity",
>      "GICC Affinity",
>      "GIC ITS Affinity",             /* Acpi 6.2 */
> +    "Generic Initiator Affinity",   /* Acpi 6.3 */
>      "Unknown Subtable Type"         /* Reserved */
>  };
>  
> diff --git a/src/acpica/source/common/dmtbdump1.c b/src/acpica/source/common/dmtbdump1.c
> index e55d6496..c363ac8d 100644
> --- a/src/acpica/source/common/dmtbdump1.c
> +++ b/src/acpica/source/common/dmtbdump1.c
> @@ -1106,9 +1106,26 @@ AcpiDmDumpGtdt (
>          return;
>      }
>  
> -    /* Subtables */
> +    /* Rev 3 fields */
>  
>      Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
> +
> +    if (Table->Revision > 2)
> +    {
> +        SubtableLength = sizeof (ACPI_GTDT_EL2);
> +        Status = AcpiDmDumpTable (Length, Offset, Subtable,
> +            SubtableLength, AcpiDmTableInfoGtdtEl2);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return;
> +        }
> +        Offset += SubtableLength;
> +    }
> +
> +    Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
> +
> +    /* Subtables */
> +
>      while (Offset < Table->Length)
>      {
>          /* Common subtable header */
> @@ -1406,7 +1423,7 @@ AcpiDmDumpHmat (
>          case ACPI_HMAT_TYPE_ADDRESS_RANGE:
>  
>              InfoTable = AcpiDmTableInfoHmat0;
> -            Length = sizeof (ACPI_HMAT_ADDRESS_RANGE);
> +            Length = sizeof (ACPI_HMAT_PROXIMITY_DOMAIN);
>              break;
>  
>          case ACPI_HMAT_TYPE_LOCALITY:
> diff --git a/src/acpica/source/common/dmtbdump3.c b/src/acpica/source/common/dmtbdump3.c
> index f0a8751e..0b9863cc 100644
> --- a/src/acpica/source/common/dmtbdump3.c
> +++ b/src/acpica/source/common/dmtbdump3.c
> @@ -333,6 +333,11 @@ AcpiDmDumpSrat (
>              InfoTable = AcpiDmTableInfoSrat4;
>              break;
>  
> +        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
> +
> +            InfoTable = AcpiDmTableInfoSrat5;
> +            break;
> +
>          default:
>              AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
>                  Subtable->Type);
> diff --git a/src/acpica/source/common/dmtbinfo1.c b/src/acpica/source/common/dmtbinfo1.c
> index 70013701..7d7155d3 100644
> --- a/src/acpica/source/common/dmtbinfo1.c
> +++ b/src/acpica/source/common/dmtbinfo1.c
> @@ -814,6 +814,15 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt[] =
>      ACPI_DMT_TERMINATOR
>  };
>  
> +/* GDTD EL2 timer info. This table is appended to AcpiDmTableInfoGtdt for rev 3 and later */
> +
> +ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtEl2[] =
> +{
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerGsiv),  "Virtual EL2 Timer GSIV", 0},
> +    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerFlags), "Virtual EL2 Timer Flags", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
>  /* GTDT Subtable header (one per Subtable) */
>  
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdtHdr[] =
> @@ -1105,20 +1114,18 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoHmatHdr[] =
>  
>  /* HMAT subtables */
>  
> -/* 0x00: Memory Subsystem Address Range */
> +/* 0x00: Memory proximity domain attributes */
>  
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat0[] =
>  {
>      {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
>      {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
> -    {ACPI_DMT_FLAG1,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Memory Proximity Domain Valid", 0},
> -    {ACPI_DMT_FLAG2,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Reservation Hint", 0},
>      {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
>      {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
> -    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressBase),    "Physical Address Range Base", 0},
> -    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressLength),  "Physical Address Range Size", 0},
> +    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
> +    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved4),              "Reserved4", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> diff --git a/src/acpica/source/common/dmtbinfo2.c b/src/acpica/source/common/dmtbinfo2.c
> index 6727f0b2..1371af7d 100644
> --- a/src/acpica/source/common/dmtbinfo2.c
> +++ b/src/acpica/source/common/dmtbinfo2.c
> @@ -535,6 +535,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt0[] =
>      {ACPI_DMT_UINT8,    ACPI_MADT0_OFFSET (Id),                     "Local Apic ID", 0},
>      {ACPI_DMT_UINT32,   ACPI_MADT0_OFFSET (LapicFlags),             "Flags (decoded below)", DT_FLAG},
>      {ACPI_DMT_FLAG0,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Processor Enabled", 0},
> +    {ACPI_DMT_FLAG1,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Runtime Online Capable", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -683,7 +684,8 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11[] =
>      {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicrBaseAddress),       "Redistributor Base Address", 0},
>      {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ArmMpidr),              "ARM MPIDR", 0},
>      {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
> -    {ACPI_DMT_UINT24,   ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
> +    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
> +    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -946,7 +948,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoNfit0[] =
>      {ACPI_DMT_FLAG1,    ACPI_NFIT0_FLAG_OFFSET (Flags,0),           "Proximity Domain Valid", 0},
>      {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (Reserved),               "Reserved", 0},
>      {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (ProximityDomain),        "Proximity Domain", 0},
> -    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Address Range GUID", 0},
> +    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Region Type GUID", 0},
>      {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Address),                "Address Range Base", 0},
>      {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Length),                 "Address Range Length", 0},
>      {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (MemoryMapping),          "Memory Map Attribute", 0},
> @@ -1246,6 +1248,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPdtt0[] =
>      {ACPI_DMT_UINT8,    ACPI_PDTT0_OFFSET (Flags),                  "Flags (Decoded Below)", DT_FLAG},
>      {ACPI_DMT_FLAG0,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Runtime Trigger", 0},
>      {ACPI_DMT_FLAG1,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Wait for Completion", 0},
> +    {ACPI_DMT_FLAG2,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Trigger Order", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -1348,6 +1351,9 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt0[] =
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
>      {ACPI_DMT_FLAG0,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Physical package", 0},
>      {ACPI_DMT_FLAG1,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "ACPI Processor ID valid", 0},
> +    {ACPI_DMT_FLAG2,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Processor is a thread", 0},
> +    {ACPI_DMT_FLAG3,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Node is a leaf", 0},
> +    {ACPI_DMT_FLAG4,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Identical Implementation", 0},
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Parent),                 "Parent", 0},
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (AcpiProcessorId),        "ACPI Processor ID", 0},
>      {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (NumberOfPrivResources),  "Private Resource Number", 0},
> @@ -1390,12 +1396,12 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt1[] =
>  ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt2[] =
>  {
>      {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (Reserved),               "Reserved", 0},
> -    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "VENDOR_ID", 0},
> -    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "LEVEL_1_ID", 0},
> -    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "LEVEL_2_ID", 0},
> -    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "MAJOR_REV", 0},
> -    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "MINOR_REV", 0},
> -    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "SPIN_REV", 0},
> +    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "Vendor ID", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "Level1 ID", 0},
> +    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "Level2 ID", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "Major revision", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "Minor revision", 0},
> +    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "Spin revision", 0},
>      ACPI_DMT_TERMINATOR
>  };
>  
> @@ -1473,7 +1479,7 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSbst[] =
>  
>  /*******************************************************************************
>   *
> - * SDEI - Software Delegated Execption Interface Descriptor Table
> + * SDEI - Software Delegated Exception Interface Descriptor Table
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/common/dmtbinfo3.c b/src/acpica/source/common/dmtbinfo3.c
> index e810a296..d143bc87 100644
> --- a/src/acpica/source/common/dmtbinfo3.c
> +++ b/src/acpica/source/common/dmtbinfo3.c
> @@ -368,6 +368,20 @@ ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat4[] =
>      ACPI_DMT_TERMINATOR
>  };
>  
> +/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
> +
> +ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat5[] =
> +{
> +    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (Reserved),               "Reserved1", 0},
> +    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (DeviceHandleType),       "Device Handle Type", 0},
> +    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (ProximityDomain),        "Proximity Domain", 0},
> +    {ACPI_DMT_BUF16,    ACPI_SRAT5_OFFSET (DeviceHandle),           "Device Handle", 0},
> +    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
> +    {ACPI_DMT_FLAG0,    ACPI_SRAT5_FLAG_OFFSET (Flags,0),           "Enabled", 0},
> +    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Reserved1),              "Reserved2", 0},
> +    ACPI_DMT_TERMINATOR
> +};
> +
>  
>  /*******************************************************************************
>   *
> diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
> index 5acc0d12..c46b28da 100644
> --- a/src/acpica/source/compiler/aslcompile.c
> +++ b/src/acpica/source/compiler/aslcompile.c
> @@ -494,6 +494,7 @@ CmDoCompile (
>      UtEndEvent (Event);
>  
>      UtEndEvent (FullCompile);
> +    AslCheckExpectedExceptions ();
>      CmCleanupAndExit ();
>      return (0);
>  
> @@ -811,7 +812,6 @@ CmCleanupAndExit (
>      BOOLEAN                 DeleteAmlFile = FALSE;
>  
>  
> -    AslCheckExpectedExceptions ();
>      AePrintErrorLog (ASL_FILE_STDERR);
>      if (AslGbl_DebugFlag)
>      {
> diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
> index 40f3b102..efcee77b 100644
> --- a/src/acpica/source/compiler/aslcompiler.h
> +++ b/src/acpica/source/compiler/aslcompiler.h
> @@ -702,7 +702,7 @@ OpnDoPackage (
>  
>  
>  /*
> - * aslopt - optmization
> + * aslopt - optimization
>   */
>  void
>  OptOptimizeNamePath (
> @@ -1153,7 +1153,7 @@ OtXrefWalkPart1 (
>  
>  
>  /*
> - * aslutils - common compiler utilites
> + * aslutils - common compiler utilities
>   */
>  void
>  DbgPrint (
> diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
> index 18e93064..72fbbef3 100644
> --- a/src/acpica/source/compiler/aslcompiler.l
> +++ b/src/acpica/source/compiler/aslcompiler.l
> @@ -692,7 +692,7 @@ NamePathTail                [.]{NameSeg}
>  "IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
>  "GeneralPurposeIo"          { count (0); return (PARSEOP_REGIONSPACE_GPIO); }       /* ACPI 5.0 */
>  "GenericSerialBus"          { count (0); return (PARSEOP_REGIONSPACE_GSBUS); }      /* ACPI 5.0 */
> -"PCC"                       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
> +"PlatformCommChannel"       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
>  "FFixedHW"                  { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
>  
>      /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
> @@ -816,6 +816,13 @@ NamePathTail                [.]{NameSeg}
>                                  s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1);
>                                  if (strcmp (AslCompilertext, "\\"))
>                                  {
> +                                    /*
> +                                     * According to the ACPI specification,
> +                                     * NameSegments must have length of 4. If
> +                                     * the NameSegment has length less than 4,
> +                                     * they are padded with underscores to meet
> +                                     * the required length.
> +                                     */
>                                      strcpy (s, "____");
>                                      AcpiUtStrupr (AslCompilertext);
>                                  }
> diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
> index 184f69eb..c910358d 100644
> --- a/src/acpica/source/compiler/aslload.c
> +++ b/src/acpica/source/compiler/aslload.c
> @@ -331,8 +331,8 @@ LdLoadFieldElements (
>                       * The name already exists in this scope
>                       * But continue processing the elements
>                       */
> -                    AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Child,
> -                        Child->Asl.Value.String, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
> +                    AslDualParseOpError (ASL_WARNING, ASL_MSG_NAME_EXISTS, Child,
> +                        Child->Asl.Value.String, ASL_MSG_FOUND_HERE, Node->Op,
>                          Node->Op->Asl.ExternalName);
>                  }
>              }
> @@ -575,7 +575,7 @@ LdNamespace1Begin (
>          if (Status == AE_NOT_FOUND)
>          {
>              /*
> -             * This is either a foward reference or the object truly
> +             * This is either a forward reference or the object truly
>               * does not exist. The two cases can only be differentiated
>               * during the cross-reference stage later. Mark the Op/Name
>               * as not-found for now to indicate the need for further
> diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
> index b06ef937..07e98482 100644
> --- a/src/acpica/source/compiler/aslmessages.c
> +++ b/src/acpica/source/compiler/aslmessages.c
> @@ -353,15 +353,17 @@ const char                      *AslCompilerMsgs [] =
>  /*    ASL_MSG_NULL_RESOURCE_TEMPLATE */     "Empty Resource Template (END_TAG only)",
>  /*    ASL_MSG_FOUND_HERE */                 "Original name creation/declaration below: ",
>  /*    ASL_MSG_ILLEGAL_RECURSION */          "Illegal recursive call to method that creates named objects",
> -/*    ASL_MSG_EXTERN_COLLISION */           "A name cannot be defined and declared external in the same table",
> -/*    ASL_MSG_FOUND_HERE_EXTERN */          "Remove one of the declarations indicated above or below:",
> +/*    ASL_MSG_PLACE_HOLDER_00 */            "", /* TODO: fill in this slot with a new error message */
> +/*    ASL_MSG_PLACE_HOLDER_01 */            "", /* TODO: fill in this slot with a new error message */
>  /*    ASL_MSG_OEM_TABLE_ID */               "Invalid OEM Table ID",
>  /*    ASL_MSG_OEM_ID */                     "Invalid OEM ID",
>  /*    ASL_MSG_UNLOAD */                     "Unload is not supported by all operating systems",
>  /*    ASL_MSG_OFFSET */                     "Unnecessary/redundant use of Offset operator",
>  /*    ASL_MSG_LONG_SLEEP */                 "Very long Sleep, greater than 1 second",
>  /*    ASL_MSG_PREFIX_NOT_EXIST */           "One or more prefix Scopes do not exist",
> -/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist"
> +/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist",
> +/*    ASL_MSG_REGION_LENGTH */              "Operation Region declared with zero length",
> +/*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed"
>  };
>  
>  /* Table compiler */
> diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
> index d2d26b6e..817e192e 100644
> --- a/src/acpica/source/compiler/aslmessages.h
> +++ b/src/acpica/source/compiler/aslmessages.h
> @@ -355,8 +355,8 @@ typedef enum
>      ASL_MSG_NULL_RESOURCE_TEMPLATE,
>      ASL_MSG_FOUND_HERE,
>      ASL_MSG_ILLEGAL_RECURSION,
> -    ASL_MSG_EXTERN_COLLISION,
> -    ASL_MSG_EXTERN_FOUND_HERE,
> +    ASL_MSG_PLACE_HOLDER_00,
> +    ASL_MSG_PLACE_HOLDER_01,
>      ASL_MSG_OEM_TABLE_ID,
>      ASL_MSG_OEM_ID,
>      ASL_MSG_UNLOAD,
> @@ -364,6 +364,8 @@ typedef enum
>      ASL_MSG_LONG_SLEEP,
>      ASL_MSG_PREFIX_NOT_EXIST,
>      ASL_MSG_NAMEPATH_NOT_EXIST,
> +    ASL_MSG_REGION_LENGTH,
> +    ASL_MSG_TEMPORARY_OBJECT,
>  
>      /* These messages are used by the Data Table compiler only */
>  
> diff --git a/src/acpica/source/compiler/asloperands.c b/src/acpica/source/compiler/asloperands.c
> index a4781ed4..172f3470 100644
> --- a/src/acpica/source/compiler/asloperands.c
> +++ b/src/acpica/source/compiler/asloperands.c
> @@ -657,6 +657,7 @@ OpnDoRegion (
>      ACPI_PARSE_OBJECT       *Op)
>  {
>      ACPI_PARSE_OBJECT       *Next;
> +    ACPI_ADR_SPACE_TYPE     SpaceId;
>  
>  
>      /* Opcode is parent node */
> @@ -664,9 +665,10 @@ OpnDoRegion (
>  
>      Next = Op->Asl.Child;
>  
> -    /* Second child is the space ID*/
> +    /* Second child is the space ID */
>  
>      Next = Next->Asl.Next;
> +    SpaceId = (ACPI_ADR_SPACE_TYPE) Next->Common.Value.Integer;
>  
>      /* Third child is the region offset */
>  
> @@ -677,7 +679,13 @@ OpnDoRegion (
>      Next = Next->Asl.Next;
>      if (Next->Asl.ParseOpcode == PARSEOP_INTEGER)
>      {
> +        /* Check for zero length */
> +
>          Op->Asl.Value.Integer = Next->Asl.Value.Integer;
> +        if (!Op->Asl.Value.Integer && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
> +        {
> +            AslError (ASL_ERROR, ASL_MSG_REGION_LENGTH, Op, NULL);
> +        }
>      }
>      else
>      {
> diff --git a/src/acpica/source/compiler/aslopt.c b/src/acpica/source/compiler/aslopt.c
> index 0d584717..1b0c4d33 100644
> --- a/src/acpica/source/compiler/aslopt.c
> +++ b/src/acpica/source/compiler/aslopt.c
> @@ -814,7 +814,7 @@ OptOptimizeNamePath (
>      ACPI_FREE (ExternalNameString);
>  
>      /*
> -     * Attempt an optmization depending on the type of namepath
> +     * Attempt an optimization depending on the type of namepath
>       */
>      if (Flags & (AML_NAMED | AML_CREATE))
>      {
> diff --git a/src/acpica/source/compiler/aslpredef.c b/src/acpica/source/compiler/aslpredef.c
> index fa1da4d9..ab29105a 100644
> --- a/src/acpica/source/compiler/aslpredef.c
> +++ b/src/acpica/source/compiler/aslpredef.c
> @@ -449,7 +449,7 @@ ApCheckPredefinedReturnValue (
>   * DESCRIPTION: Check for a predefined name for a static object (created via
>   *              the ASL Name operator). If it is a predefined ACPI name, ensure
>   *              that the name does not require any arguments (which would
> - *              require a control method implemenation of the name), and that
> + *              require a control method implementation of the name), and that
>   *              the type of the object is one of the expected types for the
>   *              predefined name.
>   *
> diff --git a/src/acpica/source/compiler/aslprintf.c b/src/acpica/source/compiler/aslprintf.c
> index b34e9adc..8121ea00 100644
> --- a/src/acpica/source/compiler/aslprintf.c
> +++ b/src/acpica/source/compiler/aslprintf.c
> @@ -239,7 +239,7 @@ OpcDoFprintf (
>   * RETURN:      None
>   *
>   * DESCRIPTION: Convert printf macro to a Store AML operation. The printf
> - *              macro parse tree is layed out as follows:
> + *              macro parse tree is laid out as follows:
>   *
>   *              Op        - printf parse op
>   *              Op->Child - Format string
> diff --git a/src/acpica/source/compiler/aslresources.y b/src/acpica/source/compiler/aslresources.y
> index 049d0a52..1caff20c 100644
> --- a/src/acpica/source/compiler/aslresources.y
> +++ b/src/acpica/source/compiler/aslresources.y
> @@ -866,7 +866,7 @@ UartSerialBusTerm
>          OptionalBitsPerByte         /* 05: BitsPerByte */
>          OptionalStopBits            /* 06: StopBits */
>          ',' ByteConstExpr           /* 08: LinesInUse */
> -        OptionalEndian              /* 09: Endianess */
> +        OptionalEndian              /* 09: Endianness */
>          OptionalParityType          /* 10: Parity */
>          OptionalFlowControl         /* 11: FlowControl */
>          ',' WordConstExpr           /* 13: Rx BufferSize */
> @@ -891,7 +891,7 @@ UartSerialBusTermV2
>          OptionalBitsPerByte         /* 05: BitsPerByte */
>          OptionalStopBits            /* 06: StopBits */
>          ',' ByteConstExpr           /* 08: LinesInUse */
> -        OptionalEndian              /* 09: Endianess */
> +        OptionalEndian              /* 09: Endianness */
>          OptionalParityType          /* 10: Parity */
>          OptionalFlowControl         /* 11: FlowControl */
>          ',' WordConstExpr           /* 13: Rx BufferSize */
> diff --git a/src/acpica/source/compiler/aslsupport.l b/src/acpica/source/compiler/aslsupport.l
> index 76993662..5cac84dc 100644
> --- a/src/acpica/source/compiler/aslsupport.l
> +++ b/src/acpica/source/compiler/aslsupport.l
> @@ -610,7 +610,7 @@ loop:
>  
>      /*
>       * Check for nested comment -- can help catch cases where a previous
> -     * comment was accidently left unterminated
> +     * comment was accidentally left unterminated
>       */
>      if ((c1 == '/') && (c == '*'))
>      {
> diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c
> index 87a2df28..b3067feb 100644
> --- a/src/acpica/source/compiler/aslxref.c
> +++ b/src/acpica/source/compiler/aslxref.c
> @@ -174,6 +174,12 @@ XfNamespaceLocateEnd (
>      UINT32                  Level,
>      void                    *Context);
>  
> +static BOOLEAN
> +XfValidateCrossReference (
> +    ACPI_PARSE_OBJECT       *Op,
> +    const ACPI_OPCODE_INFO  *OpInfo,
> +    ACPI_NAMESPACE_NODE     *Node);
> +
>  static ACPI_PARSE_OBJECT *
>  XfGetParentMethod (
>      ACPI_PARSE_OBJECT       *Op);
> @@ -408,6 +414,7 @@ XfGetParentMethod (
>      return (NULL); /* No parent method found */
>  }
>  
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    XfNamespaceLocateBegin
> @@ -488,7 +495,7 @@ XfNamespaceLocateBegin (
>              Node->ArgCount = (UINT8)
>                  (((UINT8) NextOp->Asl.Value.Integer) & 0x07);
>  
> -            /* We will track all posible ArgXs */
> +            /* We will track all possible ArgXs */
>  
>              for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
>              {
> @@ -776,6 +783,15 @@ XfNamespaceLocateBegin (
>          return_ACPI_STATUS (Status);
>      }
>  
> +    /* Check for an attempt to access an object in another method */
> +
> +    if (!XfValidateCrossReference (Op, OpInfo, Node))
> +    {
> +        AslError (ASL_ERROR, ASL_MSG_TEMPORARY_OBJECT, Op,
> +            Op->Asl.ExternalName);
> +        return_ACPI_STATUS (Status);
> +    }
> +
>      /* Object was found above, check for an illegal forward reference */
>  
>      if (Op->Asl.CompileFlags & OP_NOT_FOUND_DURING_LOAD)
> @@ -1234,3 +1250,103 @@ XfNamespaceLocateEnd (
>  
>      return_ACPI_STATUS (AE_OK);
>  }
> +
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    XfValidateCrossReference
> + *
> + * PARAMETERS:  Op                      - Parse Op that references the object
> + *              OpInfo                  - Parse Op info struct
> + *              Node                    - Node for the referenced object
> + *
> + * RETURN:      TRUE if the reference is legal, FALSE otherwise
> + *
> + * DESCRIPTION: Determine if a reference to another object is allowed.
> + *
> + * EXAMPLE:
> + *      Method (A) {Name (INT1, 1)}     Declaration of object INT1
> + *      Method (B) (Store (2, \A.INT1)} Illegal reference to object INT1
> + *                                      (INT1 is temporary, valid only during
> + *                                      execution of A)
> + *
> + * NOTES:
> + *      A null pointer returned by either XfGetParentMethod or
> + *      UtGetParentMethod indicates that the parameter object is not
> + *      within a control method.
> + *
> + *      Five cases are handled: Case(Op, Node)
> + *      1) Case(0,0): Op is not within a method, Node is not    --> OK
> + *      2) Case(0,1): Op is not within a method, but Node is    --> Illegal
> + *      3) Case(1,0): Op is within a method, Node is not        --> OK
> + *      4) Case(1,1): Both are within the same method           --> OK
> + *      5) Case(1,1): Both are in methods, but not same method  --> Illegal
> + *
> + ******************************************************************************/
> +
> +static BOOLEAN
> +XfValidateCrossReference (
> +    ACPI_PARSE_OBJECT       *Op,
> +    const ACPI_OPCODE_INFO  *OpInfo,
> +    ACPI_NAMESPACE_NODE     *Node)
> +{
> +    ACPI_PARSE_OBJECT       *ReferencingMethodOp;
> +    ACPI_NAMESPACE_NODE     *ReferencedMethodNode;
> +
> +
> +    /* Ignore actual named (and related) object declarations */
> +
> +    if (OpInfo->Flags & (AML_NAMED | AML_CREATE | AML_DEFER | AML_HAS_ARGS))
> +    {
> +        return (TRUE);
> +    }
> +
> +    /*
> +     * 1) Search upwards in parse tree for owner of the referencing object
> +     * 2) Search upwards in namespace to find the owner of the referenced object
> +     */
> +    ReferencingMethodOp = XfGetParentMethod (Op);
> +    ReferencedMethodNode = UtGetParentMethod (Node);
> +
> +    if (!ReferencingMethodOp && !ReferencedMethodNode)
> +    {
> +        /*
> +         * 1) Case (0,0): Both Op and Node are not within methods
> +         * --> OK
> +         */
> +        return (TRUE);
> +    }
> +
> +    if (!ReferencingMethodOp && ReferencedMethodNode)
> +    {
> +        /*
> +         * 2) Case (0,1): Op is not in a method, but Node is within a
> +         * method --> illegal
> +         */
> +        return (FALSE);
> +    }
> +    else if (ReferencingMethodOp && !ReferencedMethodNode)
> +    {
> +        /*
> +         * 3) Case (1,0): Op is within a method, but Node is not
> +         * --> OK
> +         */
> +        return (TRUE);
> +    }
> +    else if (ReferencingMethodOp->Asl.Node == ReferencedMethodNode)
> +    {
> +        /*
> +         * 4) Case (1,1): Both Op and Node are within the same method
> +         * --> OK
> +         */
> +        return (TRUE);
> +    }
> +    else
> +    {
> +        /*
> +         * 5) Case (1,1), Op and Node are in different methods
> +         * --> Illegal
> +         */
> +        return (FALSE);
> +    }
> +}
> diff --git a/src/acpica/source/compiler/cvcompiler.c b/src/acpica/source/compiler/cvcompiler.c
> index e069fbb4..083b66a5 100644
> --- a/src/acpica/source/compiler/cvcompiler.c
> +++ b/src/acpica/source/compiler/cvcompiler.c
> @@ -168,7 +168,7 @@
>   *
>   * DESCRIPTION: Process a single line comment of a c Style comment. This
>   *              function captures a line of a c style comment in a char* and
> - *              places the comment in the approperiate global buffer.
> + *              places the comment in the appropriate global buffer.
>   *
>   ******************************************************************************/
>  
> @@ -294,7 +294,7 @@ CvProcessComment (
>   * RETURN:      none
>   *
>   * DESCRIPTION: Process a single line comment. This function captures a comment
> - *              in a char* and places the comment in the approperiate global
> + *              in a char* and places the comment in the appropriate global
>   *              buffer through CvPlaceComment
>   *
>   ******************************************************************************/
> @@ -333,7 +333,7 @@ CvProcessCommentType2 (
>           *
>           * would be lexically analyzed as a single comment.
>           *
> -         * Create a new string with the approperiate spaces. Since we need
> +         * Create a new string with the appropriate spaces. Since we need
>           * to account for the proper spacing, the actual comment,
>           * extra 2 spaces so that this comment can be converted to the "/ *"
>           * style and the null terminator, the string would look something
> @@ -380,7 +380,7 @@ CvProcessCommentType2 (
>   * RETURN:      TotalCommentLength - Length of all comments within this op.
>   *
>   * DESCRIPTION: Calculate the length that the each comment takes up within Op.
> - *              Comments look like the follwoing: [0xA9 OptionBtye comment 0x00]
> + *              Comments look like the following: [0xA9 OptionBtye comment 0x00]
>   *              therefore, we add 1 + 1 + strlen (comment) + 1 to get the actual
>   *              length of this comment.
>   *
> @@ -963,7 +963,7 @@ CvAppendInlineComment (
>   * RETURN:      None
>   *
>   * DESCRIPTION: Given type and CommentString, this function places the
> - *              CommentString in the approperiate global comment list or char*
> + *              CommentString in the appropriate global comment list or char*
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/compiler/cvparser.c b/src/acpica/source/compiler/cvparser.c
> index 8225a44b..ca970b50 100644
> --- a/src/acpica/source/compiler/cvparser.c
> +++ b/src/acpica/source/compiler/cvparser.c
> @@ -276,7 +276,7 @@ CvInitFileTree (
>      AcpiGbl_FileTreeRoot->File = AcpiGbl_OutputFile;
>  
>      /*
> -     * Set this to true because we dont need to output
> +     * Set this to true because we don't need to output
>       * an include statement for the topmost file
>       */
>      AcpiGbl_FileTreeRoot->IncludeWritten = TRUE;
> @@ -514,7 +514,7 @@ CvFileAddressLookup(
>   * RETURN:      None
>   *
>   * DESCRIPTION: Takes a given parse op, looks up its Op->Common.Aml field
> - *              within the file tree and fills in approperiate file information
> + *              within the file tree and fills in appropriate file information
>   *              from a matching node within the tree.
>   *              This is referred as ASL_CV_LABEL_FILENODE.
>   *
> @@ -1005,7 +1005,7 @@ CvCaptureComments (
>   *
>   * RETURN:      None
>   *
> - * DESCRIPTION: Transfer all of the commments stored in global containers to the
> + * DESCRIPTION: Transfer all of the comments stored in global containers to the
>   *              given Op. This will be invoked shortly after the parser creates
>   *              a ParseOp.
>   *              This is referred as ASL_CV_TRANSFER_COMMENTS.
> diff --git a/src/acpica/source/compiler/dtexpress.c b/src/acpica/source/compiler/dtexpress.c
> index 6b5b1861..820e1988 100644
> --- a/src/acpica/source/compiler/dtexpress.c
> +++ b/src/acpica/source/compiler/dtexpress.c
> @@ -372,7 +372,7 @@ DtDoOperator (
>   *
>   * RETURN:      Table offset associated with the label
>   *
> - * DESCRIPTION: Lookup a lable and return its value.
> + * DESCRIPTION: Lookup a label and return its value.
>   *
>   *****************************************************************************/
>  
> diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
> index 095ca0fb..ae827513 100644
> --- a/src/acpica/source/compiler/dtio.c
> +++ b/src/acpica/source/compiler/dtio.c
> @@ -375,7 +375,7 @@ DtParseLine (
>          return (AE_OK);
>      }
>  
> -    /* All lines after "Raw Table Data" are ingored */
> +    /* All lines after "Raw Table Data" are ignored */
>  
>      if (strstr (LineBuffer, ACPI_RAW_TABLE_DATA_HEADER))
>      {
> diff --git a/src/acpica/source/compiler/dttable1.c b/src/acpica/source/compiler/dttable1.c
> index 23b36be4..c43b9e6c 100644
> --- a/src/acpica/source/compiler/dttable1.c
> +++ b/src/acpica/source/compiler/dttable1.c
> @@ -831,7 +831,7 @@ DtCompileDrtm (
>      DtInsertSubtable (ParentTable, Subtable);
>  
>      /*
> -     * Using ACPI_SUB_PTR, We needn't define a seperate structure. Care
> +     * Using ACPI_SUB_PTR, We needn't define a separate structure. Care
>       * should be taken to avoid accessing ACPI_TABLE_HADER fields.
>       */
>  #if 0
> @@ -1002,7 +1002,14 @@ DtCompileGtdt (
>      ACPI_SUBTABLE_HEADER    *GtdtHeader;
>      ACPI_DMTABLE_INFO       *InfoTable;
>      UINT32                  GtCount;
> +    ACPI_TABLE_HEADER       *Header;
> +
> +
> +    ParentTable = DtPeekSubtable ();
>  
> +    Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
> +
> +    /* Compile the main table */
>  
>      Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdt,
>          &Subtable);
> @@ -1011,6 +1018,21 @@ DtCompileGtdt (
>          return (Status);
>      }
>  
> +    /* GTDT revision 3 later contains 2 extra fields before subtables */
> +
> +    if (Header->Revision > 2)
> +    {
> +        ParentTable = DtPeekSubtable ();
> +        DtInsertSubtable (ParentTable, Subtable);
> +
> +        Status = DtCompileTable (PFieldList,
> +            AcpiDmTableInfoGtdtEl2, &Subtable);
> +        if (ACPI_FAILURE (Status))
> +        {
> +            return (Status);
> +        }
> +    }
> +
>      ParentTable = DtPeekSubtable ();
>      DtInsertSubtable (ParentTable, Subtable);
>  
> diff --git a/src/acpica/source/compiler/dttable2.c b/src/acpica/source/compiler/dttable2.c
> index b9623d97..04f48cc0 100644
> --- a/src/acpica/source/compiler/dttable2.c
> +++ b/src/acpica/source/compiler/dttable2.c
> @@ -1733,6 +1733,11 @@ DtCompileSrat (
>              InfoTable = AcpiDmTableInfoSrat4;
>              break;
>  
> +        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
> +
> +            InfoTable = AcpiDmTableInfoSrat5;
> +            break;
> +
>          default:
>  
>              DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
> diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
> index 5fb3287b..cb1c5855 100644
> --- a/src/acpica/source/compiler/dttemplate.h
> +++ b/src/acpica/source/compiler/dttemplate.h
> @@ -545,34 +545,35 @@ const unsigned char TemplateFpdt[] =
>  
>  const unsigned char TemplateGtdt[] =
>  {
> -    0x47,0x54,0x44,0x54,0xe0,0x00,0x00,0x00,  /* 00000000    "GTDT...." */
> -    0x02,0xb0,0x4c,0x49,0x4e,0x41,0x52,0x4f,  /* 00000008    "..LINARO" */
> -    0x52,0x54,0x53,0x4d,0x56,0x45,0x56,0x38,  /* 00000010    "RTSMVEV8" */
> -    0x01,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c,  /* 00000018    "....INTL" */
> -    0x24,0x04,0x14,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "$.. ...." */
> +    0x47,0x54,0x44,0x54,0xE8,0x00,0x00,0x00,  /* 00000000    "GTDT...." */
> +    0x03,0x5D,0x4C,0x49,0x4E,0x41,0x52,0x4F,  /* 00000008    ".]LINARO" */
> +    0x52,0x54,0x53,0x4D,0x56,0x45,0x56,0x38,  /* 00000010    "RTSMVEV8" */
> +    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> +    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
> -    0x1d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
> -    0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000038    "........" */
> -    0x1b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
> -    0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000048    "........" */
> +    0x1D,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
> +    0x1E,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000038    "........" */
> +    0x1B,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
> +    0x1A,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000048    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
>      0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,  /* 00000058    "....`..." */
> -    0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000060    ".d......" */
> -    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000068    "........" */
> -    0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000070    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
> +    0x43,0x00,0x00,0x00,0x21,0x00,0x00,0x00,  /* 00000060    "C...!..." */
> +    0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000068    ".d......" */
> +    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000070    "........" */
> +    0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000088    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
>      0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000090    "........" */
>      0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000098    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a0    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a8    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000b0    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000b8    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x1c,0x00,0x00,  /* 000000c0    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000c8    "........" */
> -    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d0    "........" */
> -    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000d8    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000A0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000B8    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000C0    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x1C,0x00,0x00,  /* 000000C8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D8    "........" */
> +    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00   /* 000000E0    "........" */
>  };
>  
>  const unsigned char TemplateHest[] =
> @@ -662,10 +663,10 @@ const unsigned char TemplateHest[] =
>  const unsigned char TemplateHmat[] =
>  {
>      0x48,0x4D,0x41,0x54,0x9C,0x00,0x00,0x00,  /* 00000000    "HMAT...." */
> -    0x00,0x54,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".TINTEL " */
> +    0x02,0x4D,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".MINTEL " */
>      0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
>      0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x03,0x03,0x17,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
>      0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,  /* 00000028    "....(..." */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -817,10 +818,10 @@ const unsigned char TemplateLpit[] =
>  const unsigned char TemplateMadt[] =
>  {
>      0x41,0x50,0x49,0x43,0x5A,0x01,0x00,0x00,  /* 00000000    "APICZ..." */
> -    0x03,0xEA,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
> +    0x05,0xEF,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
>      0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
>      0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x10,0x04,0x15,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
>      0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00,  /* 00000028    "........" */
>      0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00,  /* 00000030    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -1375,11 +1376,11 @@ const unsigned char TemplateSpmi[] =
>  
>  const unsigned char TemplateSrat[] =
>  {
> -    0x53,0x52,0x41,0x54,0x9E,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
> -    0x03,0x55,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".UINTEL " */
> +    0x53,0x52,0x41,0x54,0xBE,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
> +    0x03,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
>      0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
>      0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
> -    0x03,0x03,0x17,0x20,0x01,0x00,0x00,0x00,  /* 00000020    "... ...." */
> +    0x29,0x06,0x18,0x20,0x01,0x00,0x00,0x00,  /* 00000020    ").. ...." */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
>      0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
>      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
> @@ -1394,7 +1395,11 @@ const unsigned char TemplateSrat[] =
>      0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
>      0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
>      0x00,0x00,0x04,0x0C,0x00,0x00,0x00,0x00,  /* 00000090    "........" */
> -    0x00,0x00,0x01,0x00,0x00,0x00             /* 00000098    "......"   */
> +    0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x20,  /* 00000098    "....... " */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
> +    0x00,0x00,0x00,0x00,0x00,0x00             /* 000000B8    "......"   */
>  };
>  
>  const unsigned char TemplateStao[] =
> diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c
> index d0583fc7..539ff5af 100644
> --- a/src/acpica/source/components/debugger/dbdisply.c
> +++ b/src/acpica/source/components/debugger/dbdisply.c
> @@ -410,7 +410,7 @@ AcpiDbDecodeAndDisplayObject (
>  
>          default:
>  
> -            /* Is not a recognizeable object */
> +            /* Is not a recognizable object */
>  
>              AcpiOsPrintf (
>                  "Not a known ACPI internal object, descriptor type %2.2X\n",
> @@ -866,7 +866,7 @@ AcpiDbDisplayObjectType (
>   *
>   * DESCRIPTION: Display the result of an AML opcode
>   *
> - * Note: Curently only displays the result object if we are single stepping.
> + * Note: Currently only displays the result object if we are single stepping.
>   * However, this output may be useful in other contexts and could be enabled
>   * to do so if needed.
>   *
> diff --git a/src/acpica/source/components/debugger/dbexec.c b/src/acpica/source/components/debugger/dbexec.c
> index 03ea9bf2..49d1180f 100644
> --- a/src/acpica/source/components/debugger/dbexec.c
> +++ b/src/acpica/source/components/debugger/dbexec.c
> @@ -331,12 +331,12 @@ AcpiDbExecuteMethod (
>          }
>  
>          ACPI_EXCEPTION ((AE_INFO, Status,
> -            "while executing %s from debugger", Info->Pathname));
> +            "while executing %s from AML Debugger", Info->Pathname));
>  
>          if (Status == AE_BUFFER_OVERFLOW)
>          {
>              ACPI_ERROR ((AE_INFO,
> -                "Possible overflow of internal debugger "
> +                "Possible buffer overflow within AML Debugger "
>                  "buffer (size 0x%X needed 0x%X)",
>                  ACPI_DEBUG_BUFFER_SIZE, (UINT32) ReturnObj->Length));
>          }
> diff --git a/src/acpica/source/components/debugger/dbnames.c b/src/acpica/source/components/debugger/dbnames.c
> index 781e3a98..3c01e808 100644
> --- a/src/acpica/source/components/debugger/dbnames.c
> +++ b/src/acpica/source/components/debugger/dbnames.c
> @@ -1175,7 +1175,7 @@ AcpiDbBusWalk (
>   *
>   * RETURN:      None
>   *
> - * DESCRIPTION: Display info about system busses.
> + * DESCRIPTION: Display info about system buses.
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/debugger/dbobject.c b/src/acpica/source/components/debugger/dbobject.c
> index c54394de..f9dc6687 100644
> --- a/src/acpica/source/components/debugger/dbobject.c
> +++ b/src/acpica/source/components/debugger/dbobject.c
> @@ -420,7 +420,7 @@ AcpiDbDisplayInternalObject (
>  
>              AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
>  
> -            /* Decode the refererence */
> +            /* Decode the reference */
>  
>              switch (ObjDesc->Reference.Class)
>              {
> diff --git a/src/acpica/source/components/debugger/dbtest.c b/src/acpica/source/components/debugger/dbtest.c
> index 560fb86f..67b9cbea 100644
> --- a/src/acpica/source/components/debugger/dbtest.c
> +++ b/src/acpica/source/components/debugger/dbtest.c
> @@ -154,6 +154,7 @@
>  #include "acdebug.h"
>  #include "acnamesp.h"
>  #include "acpredef.h"
> +#include "acinterp.h"
>  
>  
>  #define _COMPONENT          ACPI_CA_DEBUGGER
> @@ -192,6 +193,10 @@ static ACPI_STATUS
>  AcpiDbTestPackageType (
>      ACPI_NAMESPACE_NODE     *Node);
>  
> +static ACPI_STATUS
> +AcpiDbTestFieldUnitType (
> +    ACPI_OPERAND_OBJECT     *ObjDesc);
> +
>  static ACPI_STATUS
>  AcpiDbReadFromObject (
>      ACPI_NAMESPACE_NODE     *Node,
> @@ -241,7 +246,7 @@ static ACPI_DB_ARGUMENT_INFO    AcpiDbTestTypes [] =
>  static ACPI_HANDLE          ReadHandle = NULL;
>  static ACPI_HANDLE          WriteHandle = NULL;
>  
> -/* ASL Definitions of the debugger read/write control methods */
> +/* ASL Definitions of the debugger read/write control methods. AML below. */
>  
>  #if 0
>  DefinitionBlock ("ssdt.aml", "SSDT", 2, "Intel", "DEBUG", 0x00000001)
> @@ -407,10 +412,8 @@ AcpiDbTestAllObjects (
>   * RETURN:      Status
>   *
>   * DESCRIPTION: Test one namespace object. Supported types are Integer,
> - *              String, Buffer, BufferField, and FieldUnit. All other object
> - *              types are simply ignored.
> - *
> - *              Note: Support for Packages is not implemented.
> + *              String, Buffer, Package, BufferField, and FieldUnit.
> + *              All other object types are simply ignored.
>   *
>   ******************************************************************************/
>  
> @@ -423,7 +426,6 @@ AcpiDbTestOneObject (
>  {
>      ACPI_NAMESPACE_NODE     *Node;
>      ACPI_OPERAND_OBJECT     *ObjDesc;
> -    ACPI_OPERAND_OBJECT     *RegionObj;
>      ACPI_OBJECT_TYPE        LocalType;
>      UINT32                  BitLength = 0;
>      UINT32                  ByteLength = 0;
> @@ -466,19 +468,22 @@ AcpiDbTestOneObject (
>          break;
>  
>      case ACPI_TYPE_FIELD_UNIT:
> -    case ACPI_TYPE_BUFFER_FIELD:
>      case ACPI_TYPE_LOCAL_REGION_FIELD:
>      case ACPI_TYPE_LOCAL_INDEX_FIELD:
>      case ACPI_TYPE_LOCAL_BANK_FIELD:
>  
> +        LocalType = ACPI_TYPE_FIELD_UNIT;
> +        break;
> +
> +    case ACPI_TYPE_BUFFER_FIELD:
> +        /*
> +         * The returned object will be a Buffer if the field length
> +         * is larger than the size of an Integer (32 or 64 bits
> +         * depending on the DSDT version).
> +         */
>          LocalType = ACPI_TYPE_INTEGER;
>          if (ObjDesc)
>          {
> -            /*
> -             * Returned object will be a Buffer if the field length
> -             * is larger than the size of an Integer (32 or 64 bits
> -             * depending on the DSDT version).
> -             */
>              BitLength = ObjDesc->CommonField.BitLength;
>              ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength);
>              if (BitLength > AcpiGbl_IntegerBitWidth)
> @@ -488,9 +493,9 @@ AcpiDbTestOneObject (
>          }
>          break;
>  
> -    default:
> +default:
>  
> -        /* Ignore all other types */
> +        /* Ignore all non-data types - Methods, Devices, Scopes, etc. */
>  
>          return (AE_OK);
>      }
> @@ -502,40 +507,10 @@ AcpiDbTestOneObject (
>  
>      if (!ObjDesc)
>      {
> -        AcpiOsPrintf (" Ignoring, no attached object\n");
> +        AcpiOsPrintf (" No attached sub-object, ignoring\n");
>          return (AE_OK);
>      }
>  
> -    /*
> -     * Check for unsupported region types. Note: AcpiExec simulates
> -     * access to SystemMemory, SystemIO, PCI_Config, and EC.
> -     */
> -    switch (Node->Type)
> -    {
> -    case ACPI_TYPE_LOCAL_REGION_FIELD:
> -
> -        RegionObj = ObjDesc->Field.RegionObj;
> -        switch (RegionObj->Region.SpaceId)
> -        {
> -        case ACPI_ADR_SPACE_SYSTEM_MEMORY:
> -        case ACPI_ADR_SPACE_SYSTEM_IO:
> -        case ACPI_ADR_SPACE_PCI_CONFIG:
> -
> -            break;
> -
> -        default:
> -
> -            AcpiOsPrintf ("      %s space is not supported in this command [%4.4s]\n",
> -                AcpiUtGetRegionName (RegionObj->Region.SpaceId),
> -                RegionObj->Region.Node->Name.Ascii);
> -            return (AE_OK);
> -        }
> -        break;
> -
> -    default:
> -        break;
> -    }
> -
>      /* At this point, we have resolved the object to one of the major types */
>  
>      switch (LocalType)
> @@ -560,6 +535,11 @@ AcpiDbTestOneObject (
>          Status = AcpiDbTestPackageType (Node);
>          break;
>  
> +    case ACPI_TYPE_FIELD_UNIT:
> +
> +        Status = AcpiDbTestFieldUnitType (ObjDesc);
> +        break;
> +
>      default:
>  
>          AcpiOsPrintf (" Ignoring, type not implemented (%2.2X)",
> @@ -572,24 +552,8 @@ AcpiDbTestOneObject (
>      if (ACPI_FAILURE (Status))
>      {
>          Status = AE_OK;
> -        goto Exit;
> -    }
> -
> -    switch (Node->Type)
> -    {
> -    case ACPI_TYPE_LOCAL_REGION_FIELD:
> -
> -        RegionObj = ObjDesc->Field.RegionObj;
> -        AcpiOsPrintf (" (%s)",
> -            AcpiUtGetRegionName (RegionObj->Region.SpaceId));
> -
> -        break;
> -
> -    default:
> -        break;
>      }
>  
> -Exit:
>      AcpiOsPrintf ("\n");
>      return (Status);
>  }
> @@ -639,7 +603,7 @@ AcpiDbTestIntegerType (
>          return (Status);
>      }
>  
> -    AcpiOsPrintf (" (%4.4X/%3.3X) %8.8X%8.8X",
> +    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " %8.8X%8.8X",
>          BitLength, ACPI_ROUND_BITS_UP_TO_BYTES (BitLength),
>          ACPI_FORMAT_UINT64 (Temp1->Integer.Value));
>  
> @@ -761,8 +725,8 @@ AcpiDbTestBufferType (
>  
>      /* Emit a few bytes of the buffer */
>  
> -    AcpiOsPrintf (" (%4.4X/%3.3X)", BitLength, Temp1->Buffer.Length);
> -    for (i = 0; ((i < 4) && (i < ByteLength)); i++)
> +    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT, BitLength, Temp1->Buffer.Length);
> +    for (i = 0; ((i < 8) && (i < ByteLength)); i++)
>      {
>          AcpiOsPrintf (" %2.2X", Temp1->Buffer.Pointer[i]);
>      }
> @@ -876,7 +840,7 @@ AcpiDbTestStringType (
>          return (Status);
>      }
>  
> -    AcpiOsPrintf (" (%4.4X/%3.3X) \"%s\"", (Temp1->String.Length * 8),
> +    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " \"%s\"", (Temp1->String.Length * 8),
>          Temp1->String.Length, Temp1->String.Pointer);
>  
>      /* Write a new value */
> @@ -966,12 +930,79 @@ AcpiDbTestPackageType (
>          return (Status);
>      }
>  
> -    AcpiOsPrintf (" %8.8X Elements", Temp1->Package.Count);
> +    AcpiOsPrintf (" %.2X Elements", Temp1->Package.Count);
>      AcpiOsFree (Temp1);
>      return (Status);
>  }
>  
>  
> +/*******************************************************************************
> + *
> + * FUNCTION:    AcpiDbTestFieldUnitType
> + *
> + * PARAMETERS:  ObjDesc                 - A field unit object
> + *
> + * RETURN:      Status
> + *
> + * DESCRIPTION: Test read/write on a named field unit.
> + *
> + ******************************************************************************/
> +
> +static ACPI_STATUS
> +AcpiDbTestFieldUnitType (
> +    ACPI_OPERAND_OBJECT     *ObjDesc)
> +{
> +    ACPI_OPERAND_OBJECT     *RegionObj;
> +    UINT32                  BitLength = 0;
> +    UINT32                  ByteLength = 0;
> +    ACPI_STATUS             Status = AE_OK;
> +    ACPI_OPERAND_OBJECT     *RetBufferDesc;
> +
> +
> +    /* Supported spaces are memory/io/pci_config */
> +
> +    RegionObj = ObjDesc->Field.RegionObj;
> +    switch (RegionObj->Region.SpaceId)
> +    {
> +    case ACPI_ADR_SPACE_SYSTEM_MEMORY:
> +    case ACPI_ADR_SPACE_SYSTEM_IO:
> +    case ACPI_ADR_SPACE_PCI_CONFIG:
> +
> +        /* Need the interpreter to execute */
> +
> +        AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER);
> +        AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
> +
> +        /* Exercise read-then-write */
> +
> +        Status = AcpiExReadDataFromField (NULL, ObjDesc, &RetBufferDesc);
> +        if (Status == AE_OK)
> +        {
> +            AcpiExWriteDataToField (RetBufferDesc, ObjDesc, NULL);
> +            AcpiUtRemoveReference (RetBufferDesc);
> +        }
> +
> +        AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
> +        AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER);
> +
> +        BitLength = ObjDesc->CommonField.BitLength;
> +        ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength);
> +
> +        AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " [%s]", BitLength,
> +            ByteLength, AcpiUtGetRegionName (RegionObj->Region.SpaceId));
> +        return (Status);
> +
> +    default:
> +
> +        AcpiOsPrintf (
> +            "      %s address space is not supported in this command [%4.4s]",
> +            AcpiUtGetRegionName (RegionObj->Region.SpaceId),
> +            RegionObj->Region.Node->Name.Ascii);
> +        return (AE_OK);
> +    }
> +}
> +
> +
>  /*******************************************************************************
>   *
>   * FUNCTION:    AcpiDbReadFromObject
> diff --git a/src/acpica/source/components/disassembler/dmbuffer.c b/src/acpica/source/components/disassembler/dmbuffer.c
> index db56365d..a58ff2f5 100644
> --- a/src/acpica/source/components/disassembler/dmbuffer.c
> +++ b/src/acpica/source/components/disassembler/dmbuffer.c
> @@ -1053,7 +1053,7 @@ AcpiDmGetHardwareIdType (
>              }
>          }
>  
> -        /* Mark this node as convertable to an EISA ID string */
> +        /* Mark this node as convertible to an EISA ID string */
>  
>          Op->Common.DisasmOpcode = ACPI_DASM_EISAID;
>          break;
> diff --git a/src/acpica/source/components/disassembler/dmcstyle.c b/src/acpica/source/components/disassembler/dmcstyle.c
> index c74d13dd..30ae3a5b 100644
> --- a/src/acpica/source/components/disassembler/dmcstyle.c
> +++ b/src/acpica/source/components/disassembler/dmcstyle.c
> @@ -1075,7 +1075,7 @@ AcpiDmIsValidTarget (
>   *
>   * DESCRIPTION: Determine if the Target duplicates the operand, in order to
>   *              detect if the expression can be converted to a compound
> - *              assigment. (+=, *=, etc.)
> + *              assignment. (+=, *=, etc.)
>   *
>   ******************************************************************************/
>  
> @@ -1131,7 +1131,7 @@ AcpiDmIsTargetAnOperand (
>          }
>      }
>  
> -    /* Supress the duplicate operand at the top-level */
> +    /* Suppress the duplicate operand at the top-level */
>  
>      if (TopLevel)
>      {
> diff --git a/src/acpica/source/components/disassembler/dmnames.c b/src/acpica/source/components/disassembler/dmnames.c
> index 0866bdf2..bbff3e0a 100644
> --- a/src/acpica/source/components/disassembler/dmnames.c
> +++ b/src/acpica/source/components/disassembler/dmnames.c
> @@ -232,7 +232,7 @@ AcpiDmDumpName (
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: Diplay the pathname associated with a named object. Two
> + * DESCRIPTION: Display the pathname associated with a named object. Two
>   *              versions. One searches the parse tree (for parser-only
>   *              applications suchas AcpiDump), and the other searches the
>   *              ACPI namespace (the parse tree is probably deleted)
> diff --git a/src/acpica/source/components/disassembler/dmresrc.c b/src/acpica/source/components/disassembler/dmresrc.c
> index 8deac42c..bb36b734 100644
> --- a/src/acpica/source/components/disassembler/dmresrc.c
> +++ b/src/acpica/source/components/disassembler/dmresrc.c
> @@ -342,7 +342,7 @@ AcpiDmBitList (
>   *
>   * FUNCTION:    AcpiDmResourceTemplate
>   *
> - * PARAMETERS:  Info            - Curent parse tree walk info
> + * PARAMETERS:  Info            - Current parse tree walk info
>   *              ByteData        - Pointer to the byte list data
>   *              ByteCount       - Length of the byte list
>   *
> @@ -555,7 +555,7 @@ AcpiDmIsResourceTemplate (
>  
>      /*
>       * Not a template if declared buffer length != actual length of the
> -     * intialization byte list. Because the resource macros will create
> +     * initialization byte list. Because the resource macros will create
>       * a buffer of the exact required length (buffer length will be equal
>       * to the actual length).
>       *
> diff --git a/src/acpica/source/components/disassembler/dmresrcs.c b/src/acpica/source/components/disassembler/dmresrcs.c
> index baf24488..72bbc331 100644
> --- a/src/acpica/source/components/disassembler/dmresrcs.c
> +++ b/src/acpica/source/components/disassembler/dmresrcs.c
> @@ -388,7 +388,7 @@ AcpiDmFixedIoDescriptor (
>   *
>   * RETURN:      None
>   *
> - * DESCRIPTION: Decode a Start Dependendent functions descriptor
> + * DESCRIPTION: Decode a Start Dependent functions descriptor
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/dispatcher/dsfield.c b/src/acpica/source/components/dispatcher/dsfield.c
> index f54fcee6..cc0a271e 100644
> --- a/src/acpica/source/components/dispatcher/dsfield.c
> +++ b/src/acpica/source/components/dispatcher/dsfield.c
> @@ -685,6 +685,12 @@ AcpiDsCreateField (
>      Info.RegionNode = RegionNode;
>  
>      Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
> +    if (Info.RegionNode->Type == ACPI_ADR_SPACE_PLATFORM_COMM &&
> +        !(RegionNode->Object->Field.InternalPccBuffer
> +        = ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length)))
> +    {
> +        return_ACPI_STATUS (AE_NO_MEMORY);
> +    }
>      return_ACPI_STATUS (Status);
>  }
>  
> diff --git a/src/acpica/source/components/dispatcher/dsopcode.c b/src/acpica/source/components/dispatcher/dsopcode.c
> index 8b9a30aa..acf1ff4e 100644
> --- a/src/acpica/source/components/dispatcher/dsopcode.c
> +++ b/src/acpica/source/components/dispatcher/dsopcode.c
> @@ -521,6 +521,7 @@ AcpiDsEvalRegionOperands (
>      ACPI_OPERAND_OBJECT     *OperandDesc;
>      ACPI_NAMESPACE_NODE     *Node;
>      ACPI_PARSE_OBJECT       *NextOp;
> +    ACPI_ADR_SPACE_TYPE     SpaceId;
>  
>  
>      ACPI_FUNCTION_TRACE_PTR (DsEvalRegionOperands, Op);
> @@ -530,11 +531,12 @@ AcpiDsEvalRegionOperands (
>       * This is where we evaluate the address and length fields of the
>       * OpRegion declaration
>       */
> -    Node =  Op->Common.Node;
> +    Node = Op->Common.Node;
>  
>      /* NextOp points to the op that holds the SpaceID */
>  
>      NextOp = Op->Common.Value.Arg;
> +    SpaceId = (ACPI_ADR_SPACE_TYPE) NextOp->Common.Value.Integer;
>  
>      /* NextOp points to address op */
>  
> @@ -572,6 +574,15 @@ AcpiDsEvalRegionOperands (
>      ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value;
>      AcpiUtRemoveReference (OperandDesc);
>  
> +    /* A zero-length operation region is unusable. Just warn */
> +
> +    if (!ObjDesc->Region.Length && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
> +    {
> +        ACPI_WARNING ((AE_INFO,
> +            "Operation Region [%4.4s] has zero length (SpaceId %X)",
> +            Node->Name.Ascii, SpaceId));
> +    }
> +
>      /*
>       * Get the address and save it
>       * (at top of stack - 1)
> diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
> index f2206748..3a9e374e 100644
> --- a/src/acpica/source/components/dispatcher/dswload2.c
> +++ b/src/acpica/source/components/dispatcher/dswload2.c
> @@ -167,7 +167,7 @@
>   * FUNCTION:    AcpiDsLoad2BeginOp
>   *
>   * PARAMETERS:  WalkState       - Current state of the parse tree walk
> - *              OutOp           - Wher to return op if a new one is created
> + *              OutOp           - Where to return op if a new one is created
>   *
>   * RETURN:      Status
>   *
> diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
> index 1dcd0fc7..f5ea992a 100644
> --- a/src/acpica/source/components/events/evgpe.c
> +++ b/src/acpica/source/components/events/evgpe.c
> @@ -1012,7 +1012,7 @@ AcpiEvGpeDispatch (
>              GpeDevice, GpeNumber,
>              GpeEventInfo->Dispatch.Handler->Context);
>  
> -        /* If requested, clear (if level-triggered) and reenable the GPE */
> +        /* If requested, clear (if level-triggered) and re-enable the GPE */
>  
>          if (ReturnValue & ACPI_REENABLE_GPE)
>          {
> diff --git a/src/acpica/source/components/events/evregion.c b/src/acpica/source/components/events/evregion.c
> index 2b778065..6f6d7ccc 100644
> --- a/src/acpica/source/components/events/evregion.c
> +++ b/src/acpica/source/components/events/evregion.c
> @@ -409,7 +409,7 @@ AcpiEvAddressSpaceDispatch (
>          /*
>           * For handlers other than the default (supplied) handlers, we must
>           * exit the interpreter because the handler *might* block -- we don't
> -         * know what it will do, so we can't hold the lock on the intepreter.
> +         * know what it will do, so we can't hold the lock on the interpreter.
>           */
>          AcpiExExitInterpreter();
>      }
> diff --git a/src/acpica/source/components/events/evrgnini.c b/src/acpica/source/components/events/evrgnini.c
> index a5234a21..718e2e87 100644
> --- a/src/acpica/source/components/events/evrgnini.c
> +++ b/src/acpica/source/components/events/evrgnini.c
> @@ -724,24 +724,6 @@ AcpiEvInitializeRegion (
>                  HandlerObj = ObjDesc->CommonNotify.Handler;
>                  break;
>  
> -            case ACPI_TYPE_METHOD:
> -                /*
> -                 * If we are executing module level code, the original
> -                 * Node's object was replaced by this Method object and we
> -                 * saved the handler in the method object.
> -                 *
> -                 * Note: Only used for the legacy MLC support. Will
> -                 * be removed in the future.
> -                 *
> -                 * See AcpiNsExecModuleCode
> -                 */
> -                if (!AcpiGbl_ExecuteTablesAsMethods &&
> -                    ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
> -                {
> -                    HandlerObj = ObjDesc->Method.Dispatch.Handler;
> -                }
> -                break;
> -
>              default:
>  
>                  /* Ignore other objects */
> diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
> index 546faa6e..52061db1 100644
> --- a/src/acpica/source/components/events/evxfgpe.c
> +++ b/src/acpica/source/components/events/evxfgpe.c
> @@ -885,9 +885,9 @@ ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
>   *
>   * RETURN:      Status
>   *
> - * DESCRIPTION: Clear and conditionally reenable a GPE. This completes the GPE
> + * DESCRIPTION: Clear and conditionally re-enable a GPE. This completes the GPE
>   *              processing. Intended for use by asynchronous host-installed
> - *              GPE handlers. The GPE is only reenabled if the EnableForRun bit
> + *              GPE handlers. The GPE is only re-enabled if the EnableForRun bit
>   *              is set in the GPE info.
>   *
>   ******************************************************************************/
> diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
> index 7a15387f..c4fda4c1 100644
> --- a/src/acpica/source/components/executer/exconvrt.c
> +++ b/src/acpica/source/components/executer/exconvrt.c
> @@ -708,7 +708,7 @@ AcpiExConvertToString (
>          {
>              if (Base == 16)
>              {
> -                /* Emit 0x prefix for explict/implicit hex conversion */
> +                /* Emit 0x prefix for explicit/implicit hex conversion */
>  
>                  *NewBuf++ = '0';
>                  *NewBuf++ = 'x';
> diff --git a/src/acpica/source/components/executer/exfield.c b/src/acpica/source/components/executer/exfield.c
> index 5ef9bd31..b35e6a4e 100644
> --- a/src/acpica/source/components/executer/exfield.c
> +++ b/src/acpica/source/components/executer/exfield.c
> @@ -187,6 +187,17 @@ const UINT8     AcpiProtocolLengths[] =
>      0xFF                        /* F - ATTRIB_RAW_PROCESS_BYTES */
>  };
>  
> +#define PCC_MASTER_SUBSPACE     3
> +
> +/*
> + * The following macros determine a given offset is a COMD field.
> + * According to the specification, generic subspaces (types 0-2) contains a
> + * 2-byte COMD field at offset 4 and master subspaces (type 3) contains a 4-byte
> + * COMD field starting at offset 12.
> + */
> +#define GENERIC_SUBSPACE_COMMAND(a)     (4 == a || a == 5)
> +#define MASTER_SUBSPACE_COMMAND(a)      (12 <= a && a <= 15)
> +
>  
>  /*******************************************************************************
>   *
> @@ -337,6 +348,23 @@ AcpiExReadDataFromField (
>          Status = AcpiExReadGpio (ObjDesc, Buffer);
>          goto Exit;
>      }
> +    else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
> +        (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM))
> +    {
> +        /*
> +         * Reading from a PCC field unit does not require the handler because
> +         * it only requires reading from the InternalPccBuffer.
> +         */
> +        ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
> +            "PCC FieldRead bits %u\n", ObjDesc->Field.BitLength));
> +
> +        memcpy (Buffer, ObjDesc->Field.RegionObj->Field.InternalPccBuffer +
> +        ObjDesc->Field.BaseByteOffset, (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (
> +            ObjDesc->Field.BitLength));
> +
> +        *RetBufferDesc = BufferDesc;
> +        return AE_OK;
> +    }
>  
>      ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
>          "FieldRead [TO]:   Obj %p, Type %X, Buf %p, ByteLen %X\n",
> @@ -393,6 +421,7 @@ AcpiExWriteDataToField (
>  {
>      ACPI_STATUS             Status;
>      UINT32                  BufferLength;
> +    UINT32                  DataLength;
>      void                    *Buffer;
>  
>  
> @@ -439,6 +468,39 @@ AcpiExWriteDataToField (
>          Status = AcpiExWriteSerialBus (SourceDesc, ObjDesc, ResultDesc);
>          return_ACPI_STATUS (Status);
>      }
> +    else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
> +             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM))
> +    {
> +        /*
> +         * According to the spec a write to the COMD field will invoke the
> +         * region handler. Otherwise, write to the PccInternal buffer. This
> +         * implementation will use the offsets specified rather than the name
> +         * of the field. This is considered safer because some firmware tools
> +         * are known to obfiscate named objects.
> +         */
> +        DataLength = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (
> +            ObjDesc->Field.BitLength);
> +        memcpy (ObjDesc->Field.RegionObj->Field.InternalPccBuffer +
> +            ObjDesc->Field.BaseByteOffset,
> +            SourceDesc->Buffer.Pointer, DataLength);
> +
> +        if ((ObjDesc->Field.RegionObj->Region.Address == PCC_MASTER_SUBSPACE &&
> +           MASTER_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset)) ||
> +           GENERIC_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset))
> +        {
> +            /* Perform the write */
> +
> +            ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
> +                "PCC COMD field has been written. Invoking PCC handler now.\n"));
> +
> +            Status = AcpiExAccessRegion (
> +                ObjDesc, 0, (UINT64 *) ObjDesc->Field.RegionObj->Field.InternalPccBuffer,
> +                ACPI_WRITE);
> +            return_ACPI_STATUS (Status);
> +        }
> +        return (AE_OK);
> +    }
> +
>  
>      /* Get a pointer to the data to be written */
>  
> diff --git a/src/acpica/source/components/executer/exserial.c b/src/acpica/source/components/executer/exserial.c
> index 0b05fbce..07b42880 100644
> --- a/src/acpica/source/components/executer/exserial.c
> +++ b/src/acpica/source/components/executer/exserial.c
> @@ -165,7 +165,7 @@
>   * FUNCTION:    AcpiExReadGpio
>   *
>   * PARAMETERS:  ObjDesc             - The named field to read
> - *              Buffer              - Where the return data is returnd
> + *              Buffer              - Where the return data is returned
>   *
>   * RETURN:      Status
>   *
> diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
> index 795c9442..653777b7 100644
> --- a/src/acpica/source/components/executer/exutils.c
> +++ b/src/acpica/source/components/executer/exutils.c
> @@ -325,7 +325,7 @@ AcpiExTruncateFor32bitTable (
>   * RETURN:      None
>   *
>   * DESCRIPTION: Obtain the ACPI hardware Global Lock, only if the field
> - *              flags specifiy that it is to be obtained before field access.
> + *              flags specify that it is to be obtained before field access.
>   *
>   ******************************************************************************/
>  
> diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
> index fc93604d..f5a82347 100644
> --- a/src/acpica/source/components/namespace/nsload.c
> +++ b/src/acpica/source/components/namespace/nsload.c
> @@ -233,7 +233,7 @@ AcpiNsLoadTable (
>          /*
>           * On error, delete any namespace objects created by this table.
>           * We cannot initialize these objects, so delete them. There are
> -         * a couple of expecially bad cases:
> +         * a couple of especially bad cases:
>           * AE_ALREADY_EXISTS - namespace collision.
>           * AE_NOT_FOUND - the target of a Scope operator does not
>           * exist. This target of Scope must already exist in the
> diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
> index 1aa568cb..e559223a 100644
> --- a/src/acpica/source/components/namespace/nsparse.c
> +++ b/src/acpica/source/components/namespace/nsparse.c
> @@ -422,66 +422,18 @@ AcpiNsParseTable (
>      ACPI_FUNCTION_TRACE (NsParseTable);
>  
>  
> -    if (AcpiGbl_ExecuteTablesAsMethods)
> -    {
> -        /*
> -         * This case executes the AML table as one large control method.
> -         * The point of this is to execute any module-level code in-place
> -         * as the table is parsed. Some AML code depends on this behavior.
> -         *
> -         * It is a run-time option at this time, but will eventually become
> -         * the default.
> -         *
> -         * Note: This causes the table to only have a single-pass parse.
> -         * However, this is compatible with other ACPI implementations.
> -         */
> -        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> -            "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
> -
> -        Status = AcpiNsExecuteTable (TableIndex, StartNode);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> -    }
> -    else
> -    {
> -        /*
> -         * AML Parse, pass 1
> -         *
> -         * In this pass, we load most of the namespace. Control methods
> -         * are not parsed until later. A parse tree is not created.
> -         * Instead, each Parser Op subtree is deleted when it is finished.
> -         * This saves a great deal of memory, and allows a small cache of
> -         * parse objects to service the entire parse. The second pass of
> -         * the parse then performs another complete parse of the AML.
> -         */
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
> -
> -        Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1,
> -            TableIndex, StartNode);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> +    /*
> +     * Executes the AML table as one large control method.
> +     * The point of this is to execute any module-level code in-place
> +     * as the table is parsed. Some AML code depends on this behavior.
> +     *
> +     * Note: This causes the table to only have a single-pass parse.
> +     * However, this is compatible with other ACPI implementations.
> +     */
> +    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
> +        "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
>  
> -        /*
> -         * AML Parse, pass 2
> -         *
> -         * In this pass, we resolve forward references and other things
> -         * that could not be completed during the first pass.
> -         * Another complete parse of the AML is performed, but the
> -         * overhead of this is compensated for by the fact that the
> -         * parse objects are all cached.
> -         */
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n"));
> -        Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2,
> -            TableIndex, StartNode);
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> -    }
> +    Status = AcpiNsExecuteTable (TableIndex, StartNode);
>  
>      return_ACPI_STATUS (Status);
>  }
> diff --git a/src/acpica/source/components/namespace/nsutils.c b/src/acpica/source/components/namespace/nsutils.c
> index 78ba42ab..4a9f0313 100644
> --- a/src/acpica/source/components/namespace/nsutils.c
> +++ b/src/acpica/source/components/namespace/nsutils.c
> @@ -561,7 +561,7 @@ AcpiNsInternalizeName (
>   *
>   * FUNCTION:    AcpiNsExternalizeName
>   *
> - * PARAMETERS:  InternalNameLength  - Lenth of the internal name below
> + * PARAMETERS:  InternalNameLength  - Length of the internal name below
>   *              InternalName        - Internal representation of name
>   *              ConvertedNameLength - Where the length is returned
>   *              ConvertedName       - Where the resulting external name
> diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
> index 127850a6..7398c3df 100644
> --- a/src/acpica/source/components/parser/psloop.c
> +++ b/src/acpica/source/components/parser/psloop.c
> @@ -178,13 +178,6 @@ AcpiPsGetArguments (
>      UINT8                   *AmlOpStart,
>      ACPI_PARSE_OBJECT       *Op);
>  
> -static void
> -AcpiPsLinkModuleCode (
> -    ACPI_PARSE_OBJECT       *ParentOp,
> -    UINT8                   *AmlStart,
> -    UINT32                  AmlLength,
> -    ACPI_OWNER_ID           OwnerId);
> -
>  
>  /*******************************************************************************
>   *
> @@ -208,7 +201,6 @@ AcpiPsGetArguments (
>  {
>      ACPI_STATUS             Status = AE_OK;
>      ACPI_PARSE_OBJECT       *Arg = NULL;
> -    const ACPI_OPCODE_INFO  *OpInfo;
>  
>  
>      ACPI_FUNCTION_TRACE_PTR (PsGetArguments, WalkState);
> @@ -287,82 +279,6 @@ AcpiPsGetArguments (
>              "Final argument count: %8.8X pass %u\n",
>              WalkState->ArgCount, WalkState->PassNumber));
>  
> -        /*
> -         * This case handles the legacy option that groups all module-level
> -         * code blocks together and defers execution until all of the tables
> -         * are loaded. Execute all of these blocks at this time.
> -         * Execute any module-level code that was detected during the table
> -         * load phase.
> -         *
> -         * Note: this option is deprecated and will be eliminated in the
> -         * future. Use of this option can cause problems with AML code that
> -         * depends upon in-order immediate execution of module-level code.
> -         */
> -        if (!AcpiGbl_ExecuteTablesAsMethods &&
> -            (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2) &&
> -            ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) == 0))
> -        {
> -            /*
> -             * We want to skip If/Else/While constructs during Pass1 because we
> -             * want to actually conditionally execute the code during Pass2.
> -             *
> -             * Except for disassembly, where we always want to walk the
> -             * If/Else/While packages
> -             */
> -            switch (Op->Common.AmlOpcode)
> -            {
> -            case AML_IF_OP:
> -            case AML_ELSE_OP:
> -            case AML_WHILE_OP:
> -                /*
> -                 * Currently supported module-level opcodes are:
> -                 * IF/ELSE/WHILE. These appear to be the most common,
> -                 * and easiest to support since they open an AML
> -                 * package.
> -                 */
> -                if (WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1)
> -                {
> -                    AcpiPsLinkModuleCode (Op->Common.Parent, AmlOpStart,
> -                        (UINT32) (WalkState->ParserState.PkgEnd - AmlOpStart),
> -                        WalkState->OwnerId);
> -                }
> -
> -                ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> -                    "Pass1: Skipping an If/Else/While body\n"));
> -
> -                /* Skip body of if/else/while in pass 1 */
> -
> -                WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd;
> -                WalkState->ArgCount = 0;
> -                break;
> -
> -            default:
> -                /*
> -                 * Check for an unsupported executable opcode at module
> -                 * level. We must be in PASS1, the parent must be a SCOPE,
> -                 * The opcode class must be EXECUTE, and the opcode must
> -                 * not be an argument to another opcode.
> -                 */
> -                if ((WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1) &&
> -                    (Op->Common.Parent->Common.AmlOpcode == AML_SCOPE_OP))
> -                {
> -                    OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
> -                    if ((OpInfo->Class == AML_CLASS_EXECUTE) &&
> -                        (!Arg))
> -                    {
> -                        ACPI_WARNING ((AE_INFO,
> -                            "Unsupported module-level executable opcode "
> -                            "0x%.2X at table offset 0x%.4X",
> -                            Op->Common.AmlOpcode,
> -                            (UINT32) (ACPI_PTR_DIFF (AmlOpStart,
> -                                WalkState->ParserState.AmlStart) +
> -                                sizeof (ACPI_TABLE_HEADER))));
> -                    }
> -                }
> -                break;
> -            }
> -        }
> -
>          /* Special processing for certain opcodes */
>  
>          switch (Op->Common.AmlOpcode)
> @@ -434,117 +350,6 @@ AcpiPsGetArguments (
>  }
>  
>  
> -/*******************************************************************************
> - *
> - * FUNCTION:    AcpiPsLinkModuleCode
> - *
> - * PARAMETERS:  ParentOp            - Parent parser op
> - *              AmlStart            - Pointer to the AML
> - *              AmlLength           - Length of executable AML
> - *              OwnerId             - OwnerId of module level code
> - *
> - * RETURN:      None.
> - *
> - * DESCRIPTION: Wrap the module-level code with a method object and link the
> - *              object to the global list. Note, the mutex field of the method
> - *              object is used to link multiple module-level code objects.
> - *
> - * NOTE: In this legacy option, each block of detected executable AML
> - * code that is outside of any control method is wrapped with a temporary
> - * control method object and placed on a global list below.
> - *
> - * This function executes the module-level code for all tables only after
> - * all of the tables have been loaded. It is a legacy option and is
> - * not compatible with other ACPI implementations. See AcpiNsLoadTable.
> - *
> - * This function will be removed when the legacy option is removed.
> - *
> - ******************************************************************************/
> -
> -static void
> -AcpiPsLinkModuleCode (
> -    ACPI_PARSE_OBJECT       *ParentOp,
> -    UINT8                   *AmlStart,
> -    UINT32                  AmlLength,
> -    ACPI_OWNER_ID           OwnerId)
> -{
> -    ACPI_OPERAND_OBJECT     *Prev;
> -    ACPI_OPERAND_OBJECT     *Next;
> -    ACPI_OPERAND_OBJECT     *MethodObj;
> -    ACPI_NAMESPACE_NODE     *ParentNode;
> -
> -
> -    ACPI_FUNCTION_TRACE (PsLinkModuleCode);
> -
> -
> -    /* Get the tail of the list */
> -
> -    Prev = Next = AcpiGbl_ModuleCodeList;
> -    while (Next)
> -    {
> -        Prev = Next;
> -        Next = Next->Method.Mutex;
> -    }
> -
> -    /*
> -     * Insert the module level code into the list. Merge it if it is
> -     * adjacent to the previous element.
> -     */
> -    if (!Prev ||
> -       ((Prev->Method.AmlStart + Prev->Method.AmlLength) != AmlStart))
> -    {
> -        /* Create, initialize, and link a new temporary method object */
> -
> -        MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD);
> -        if (!MethodObj)
> -        {
> -            return_VOID;
> -        }
> -
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> -            "Create/Link new code block: %p\n", MethodObj));
> -
> -        if (ParentOp->Common.Node)
> -        {
> -            ParentNode = ParentOp->Common.Node;
> -        }
> -        else
> -        {
> -            ParentNode = AcpiGbl_RootNode;
> -        }
> -
> -        MethodObj->Method.AmlStart = AmlStart;
> -        MethodObj->Method.AmlLength = AmlLength;
> -        MethodObj->Method.OwnerId = OwnerId;
> -        MethodObj->Method.InfoFlags |= ACPI_METHOD_MODULE_LEVEL;
> -
> -        /*
> -         * Save the parent node in NextObject. This is cheating, but we
> -         * don't want to expand the method object.
> -         */
> -        MethodObj->Method.NextObject =
> -            ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParentNode);
> -
> -        if (!Prev)
> -        {
> -            AcpiGbl_ModuleCodeList = MethodObj;
> -        }
> -        else
> -        {
> -            Prev->Method.Mutex = MethodObj;
> -        }
> -    }
> -    else
> -    {
> -        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
> -            "Appending to existing code block: %p\n", Prev));
> -
> -        Prev->Method.AmlLength += AmlLength;
> -    }
> -
> -    return_VOID;
> -}
> -
>  /*******************************************************************************
>   *
>   * FUNCTION:    AcpiPsParseLoop
> diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
> index db3bbaba..68e83aa8 100644
> --- a/src/acpica/source/components/parser/psparse.c
> +++ b/src/acpica/source/components/parser/psparse.c
> @@ -680,12 +680,12 @@ AcpiPsParseAml (
>              if (Status == AE_ABORT_METHOD)
>              {
>                  AcpiNsPrintNodePathname (
> -                    WalkState->MethodNode, "Method aborted:");
> +                    WalkState->MethodNode, "Aborting method");
>                  AcpiOsPrintf ("\n");
>              }
>              else
>              {
> -                ACPI_ERROR_METHOD ("Method parse/execution failed",
> +                ACPI_ERROR_METHOD ("Aborting method",
>                      WalkState->MethodNode, NULL, Status);
>              }
>              AcpiExEnterInterpreter ();
> diff --git a/src/acpica/source/components/resources/rsdumpinfo.c b/src/acpica/source/components/resources/rsdumpinfo.c
> index c807e285..d55bf63b 100644
> --- a/src/acpica/source/components/resources/rsdumpinfo.c
> +++ b/src/acpica/source/components/resources/rsdumpinfo.c
> @@ -180,7 +180,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpIrq[7] =
>      {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.DescriptorLength),             "Descriptor Length",        NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering),                   "Triggering",               AcpiGbl_HeDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity),                     "Polarity",                 AcpiGbl_LlDecode},
> -    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable),                     "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Shareable),                    "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.InterruptCount),               "Interrupt Count",          NULL},
>      {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]),                "Interrupt List",           NULL}
>  };
> @@ -324,7 +324,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpExtIrq[8] =
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer),     "Type",                     AcpiGbl_ConsumeDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering),           "Triggering",               AcpiGbl_HeDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity),             "Polarity",                 AcpiGbl_LlDecode},
> -    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Shareable),            "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource),       NULL,                       NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount),       "Interrupt Count",          NULL},
>      {ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]),        "Interrupt List",           NULL}
> @@ -347,7 +347,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpGpio[16] =
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Gpio.ConnectionType),              "ConnectionType",           AcpiGbl_CtDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.ProducerConsumer),            "ProducerConsumer",         AcpiGbl_ConsumeDecode},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Gpio.PinConfig),                   "PinConfig",                AcpiGbl_PpcDecode},
> -    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Sharable),                    "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Shareable),                   "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.IoRestriction),               "IoRestriction",            AcpiGbl_IorDecode},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.Triggering),                  "Triggering",               AcpiGbl_HeDecode},
>      {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Polarity),                    "Polarity",                 AcpiGbl_LlDecode},
> @@ -365,7 +365,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinFunction[10] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinFunction),        "PinFunction",              NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinFunction.RevisionId),           "RevisionId",               NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinFunction.PinConfig),            "PinConfig",                AcpiGbl_PpcDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinFunction.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinFunction.Shareable),            "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinFunction.FunctionNumber),       "FunctionNumber",           NULL},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinFunction.ResourceSource),       "ResourceSource",           NULL},
>      {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinFunction.PinTableLength),       "PinTableLength",           NULL},
> @@ -379,7 +379,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinConfig[11] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinConfig),          "PinConfig",                NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinConfig.RevisionId),             "RevisionId",               NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.ProducerConsumer),       "ProducerConsumer",         AcpiGbl_ConsumeDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.Sharable),               "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.Shareable),              "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinConfig.PinConfigType),          "PinConfigType",            NULL},
>      {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (PinConfig.PinConfigValue),         "PinConfigValue",           NULL},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinConfig.ResourceSource),         "ResourceSource",           NULL},
> @@ -406,7 +406,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinGroupFunction[9] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinGroupFunction),   "PinGroupFunction",         NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupFunction.RevisionId),      "RevisionId",               NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.ProducerConsumer), "ProducerConsumer",        AcpiGbl_ConsumeDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.Sharable),        "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.Shareable),       "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinGroupFunction.FunctionNumber),  "FunctionNumber",           NULL},
>      {ACPI_RSD_SOURCE_LABEL, ACPI_RSD_OFFSET (PinGroupFunction.ResourceSourceLabel), "ResourceSourceLabel", NULL},
>      {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinGroupFunction.ResourceSource),  "ResourceSource",           NULL},
> @@ -419,7 +419,7 @@ ACPI_RSDUMP_INFO        AcpiRsDumpPinGroupConfig[10] =
>      {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinGroupConfig),     "PinGroupConfig",           NULL},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupConfig.RevisionId),        "RevisionId",               NULL},
>      {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.ProducerConsumer),  "ProducerConsumer",         AcpiGbl_ConsumeDecode},
> -    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.Sharable),          "Sharing",                  AcpiGbl_ShrDecode},
> +    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.Shareable),         "Sharing",                  AcpiGbl_ShrDecode},
>      {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupConfig.PinConfigType),     "PinConfigType",            NULL},
>      {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (PinGroupConfig.PinConfigValue),    "PinConfigValue",           NULL},
>      {ACPI_RSD_SOURCE_LABEL, ACPI_RSD_OFFSET (PinGroupConfig.ResourceSourceLabel), "ResourceSourceLabel", NULL},
> diff --git a/src/acpica/source/components/resources/rsirq.c b/src/acpica/source/components/resources/rsirq.c
> index 70ae3a1d..d2f3cfbc 100644
> --- a/src/acpica/source/components/resources/rsirq.c
> +++ b/src/acpica/source/components/resources/rsirq.c
> @@ -201,7 +201,7 @@ ACPI_RSCONVERT_INFO     AcpiRsGetIrq[9] =
>                          AML_OFFSET (Irq.Flags),
>                          3},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Shareable),
>                          AML_OFFSET (Irq.Flags),
>                          4},
>  
> @@ -241,7 +241,7 @@ ACPI_RSCONVERT_INFO     AcpiRsSetIrq[14] =
>                          AML_OFFSET (Irq.Flags),
>                          3},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Shareable),
>                          AML_OFFSET (Irq.Flags),
>                          4},
>  
> @@ -288,7 +288,7 @@ ACPI_RSCONVERT_INFO     AcpiRsSetIrq[14] =
>                          ACPI_ACTIVE_HIGH},
>  
>      {ACPI_RSC_EXIT_NE,  ACPI_RSC_COMPARE_VALUE,
> -                        ACPI_RS_OFFSET (Data.Irq.Sharable),
> +                        ACPI_RS_OFFSET (Data.Irq.Shareable),
>                          ACPI_EXCLUSIVE},
>  
>      /* We can optimize to a 2-byte IrqNoFlags() descriptor */
> @@ -329,7 +329,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertExtIrq[10] =
>                          AML_OFFSET (ExtendedIrq.Flags),
>                          2},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Shareable),
>                          AML_OFFSET (ExtendedIrq.Flags),
>                          3},
>  
> diff --git a/src/acpica/source/components/resources/rsserial.c b/src/acpica/source/components/resources/rsserial.c
> index f543f439..eaed2a37 100644
> --- a/src/acpica/source/components/resources/rsserial.c
> +++ b/src/acpica/source/components/resources/rsserial.c
> @@ -186,7 +186,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertGpio[18] =
>                          AML_OFFSET (Gpio.Flags),
>                          0},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Shareable),
>                          AML_OFFSET (Gpio.IntFlags),
>                          3},
>  
> @@ -274,7 +274,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinFunction[13] =
>                          AML_OFFSET (PinFunction.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Shareable),
>                          AML_OFFSET (PinFunction.Flags),
>                          0},
>  
> @@ -639,7 +639,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinConfig[14] =
>                          AML_OFFSET (PinConfig.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Shareable),
>                          AML_OFFSET (PinConfig.Flags),
>                          0},
>  
> @@ -775,7 +775,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupFunction[13] =
>                          AML_OFFSET (PinGroupFunction.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Shareable),
>                          AML_OFFSET (PinGroupFunction.Flags),
>                          0},
>  
> @@ -842,7 +842,7 @@ ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupConfig[14] =
>                          AML_OFFSET (PinGroupConfig.RevisionId),
>                          1},
>  
> -    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Sharable),
> +    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Shareable),
>                          AML_OFFSET (PinGroupConfig.Flags),
>                          0},
>  
> diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c
> index 9691b2cd..aad5a626 100644
> --- a/src/acpica/source/components/tables/tbfadt.c
> +++ b/src/acpica/source/components/tables/tbfadt.c
> @@ -740,7 +740,7 @@ AcpiTbConvertFadt (
>                   * 64-bit X length field.
>                   * Note: If the legacy length field is > 0xFF bits, ignore
>                   * this check. (GPE registers can be larger than the
> -                 * 64-bit GAS structure can accomodate, 0xFF bits).
> +                 * 64-bit GAS structure can accommodate, 0xFF bits).
>                   */
>                  if ((ACPI_MUL_8 (Length) <= ACPI_UINT8_MAX) &&
>                      (Address64->BitWidth != ACPI_MUL_8 (Length)))
> diff --git a/src/acpica/source/components/tables/tbxface.c b/src/acpica/source/components/tables/tbxface.c
> index bc6eea30..097e535d 100644
> --- a/src/acpica/source/components/tables/tbxface.c
> +++ b/src/acpica/source/components/tables/tbxface.c
> @@ -263,7 +263,7 @@ AcpiInitializeTables (
>      /*
>       * Get the root table (RSDT or XSDT) and extract all entries to the local
>       * Root Table Array. This array contains the information of the RSDT/XSDT
> -     * in a common, more useable format.
> +     * in a common, more usable format.
>       */
>      Status = AcpiTbParseRootTable (RsdpAddress);
>      return_ACPI_STATUS (Status);
> @@ -334,7 +334,7 @@ AcpiReallocateRootTable (
>      {
>          /*
>           * Now it's safe to do full table validation. We can do deferred
> -         * table initilization here once the flag is set.
> +         * table initialization here once the flag is set.
>           */
>          AcpiGbl_EnableTableValidation = TRUE;
>          for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
> diff --git a/src/acpica/source/components/tables/tbxfload.c b/src/acpica/source/components/tables/tbxfload.c
> index a3168c5c..bda55ea2 100644
> --- a/src/acpica/source/components/tables/tbxfload.c
> +++ b/src/acpica/source/components/tables/tbxfload.c
> @@ -219,25 +219,19 @@ AcpiLoadTables (
>              "While loading namespace from ACPI tables"));
>      }
>  
> -    if (AcpiGbl_ExecuteTablesAsMethods)
> +    /*
> +     * Initialize the objects in the namespace that remain uninitialized.
> +     * This runs the executable AML that may be part of the declaration of
> +     * these name objects:
> +     *     OperationRegions, BufferFields, Buffers, and Packages.
> +     *
> +     */
> +    Status = AcpiNsInitializeObjects ();
> +    if (ACPI_SUCCESS (Status))
>      {
> -        /*
> -         * If the module-level code support is enabled, initialize the objects
> -         * in the namespace that remain uninitialized. This runs the executable
> -         * AML that may be part of the declaration of these name objects:
> -         *     OperationRegions, BufferFields, Buffers, and Packages.
> -         *
> -         * Note: The module-level code is optional at this time, but will
> -         * become the default in the future.
> -         */
> -        Status = AcpiNsInitializeObjects ();
> -        if (ACPI_FAILURE (Status))
> -        {
> -            return_ACPI_STATUS (Status);
> -        }
> +        AcpiGbl_NamespaceInitialized = TRUE;
>      }
>  
> -    AcpiGbl_NamespaceInitialized = TRUE;
>      return_ACPI_STATUS (Status);
>  }
>  
> diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c
> index 5460de2a..e470dfc4 100644
> --- a/src/acpica/source/components/utilities/utdecode.c
> +++ b/src/acpica/source/components/utilities/utdecode.c
> @@ -633,6 +633,7 @@ static const char           *AcpiGbl_GenericNotify[ACPI_GENERIC_NOTIFY_MAX + 1]
>      /* 0C */ "Reserved (was previously Shutdown Request)",  /* Reserved in ACPI 6.0 */
>      /* 0D */ "System Resource Affinity Update",
>      /* 0E */ "Heterogeneous Memory Attributes Update"       /* ACPI 6.2 */
> +    /* 0F */ "Error Disconnect Recover"                     /* ACPI 6.3 */
>  };
>  
>  static const char           *AcpiGbl_DeviceNotify[5] =
> @@ -669,14 +670,14 @@ AcpiUtGetNotifyName (
>      ACPI_OBJECT_TYPE        Type)
>  {
>  
> -    /* 00 - 0D are "common to all object types" (from ACPI Spec) */
> +    /* 00 - 0F are "common to all object types" (from ACPI Spec) */
>  
>      if (NotifyValue <= ACPI_GENERIC_NOTIFY_MAX)
>      {
>          return (AcpiGbl_GenericNotify[NotifyValue]);
>      }
>  
> -    /* 0E - 7F are reserved */
> +    /* 10 - 7F are reserved */
>  
>      if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
>      {
> diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
> index 3fbd0fd1..332e2dec 100644
> --- a/src/acpica/source/components/utilities/utdelete.c
> +++ b/src/acpica/source/components/utilities/utdelete.c
> @@ -412,6 +412,11 @@ AcpiUtDeleteInternalObj (
>  
>              AcpiUtDeleteObjectDesc (SecondDesc);
>          }
> +        if (Object->Field.InternalPccBuffer)
> +        {
> +            ACPI_FREE(Object->Field.InternalPccBuffer);
> +        }
> +
>          break;
>  
>      case ACPI_TYPE_BUFFER_FIELD:
> diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
> index 0d356e59..624c034c 100644
> --- a/src/acpica/source/components/utilities/uterror.c
> +++ b/src/acpica/source/components/utilities/uterror.c
> @@ -353,19 +353,19 @@ AcpiUtPrefixedNamespaceError (
>      case AE_ALREADY_EXISTS:
>  
>          AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
> -        Message = "Failure creating";
> +        Message = "Failure creating named object";
>          break;
>  
>      case AE_NOT_FOUND:
>  
>          AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
> -        Message = "Could not resolve";
> +        Message = "Could not resolve symbol";
>          break;
>  
>      default:
>  
>          AcpiOsPrintf (ACPI_MSG_ERROR);
> -        Message = "Failure resolving";
> +        Message = "Failure resolving symbol";
>          break;
>      }
>  
> @@ -500,7 +500,8 @@ AcpiUtMethodError (
>      }
>  
>      AcpiNsPrintNodePathname (Node, Message);
> -    AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus));
> +    AcpiOsPrintf (" due to previous error (%s)",
> +        AcpiFormatException (MethodStatus));
>  
>      ACPI_MSG_SUFFIX;
>      ACPI_MSG_REDIRECT_END;
> diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
> index 3706e27e..e93cfe1e 100644
> --- a/src/acpica/source/include/acconfig.h
> +++ b/src/acpica/source/include/acconfig.h
> @@ -286,7 +286,7 @@
>  
>  /*
>   * Maximal number of elements the Result Stack can contain,
> - * it may be an arbitray value not exceeding the types of
> + * it may be an arbitrary value not exceeding the types of
>   * ResultSize and ResultCount (now UINT8).
>   */
>  #define ACPI_RESULTS_OBJ_NUM_MAX        255
> diff --git a/src/acpica/source/include/acdebug.h b/src/acpica/source/include/acdebug.h
> index f3c1874a..4e43bbee 100644
> --- a/src/acpica/source/include/acdebug.h
> +++ b/src/acpica/source/include/acdebug.h
> @@ -159,7 +159,8 @@
>  #endif
>  
>  
> -#define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
> +#define ACPI_DEBUG_BUFFER_SIZE      0x4000      /* 16K buffer for return objects */
> +#define ACPI_DEBUG_LENGTH_FORMAT    " (%.4X bits, %.3X bytes)"
>  
>  typedef struct acpi_db_command_info
>  {
> diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
> index 0f52e7db..fa0aebe2 100644
> --- a/src/acpica/source/include/acdisasm.h
> +++ b/src/acpica/source/include/acdisasm.h
> @@ -409,6 +409,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
> +extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtEl2[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
> @@ -553,6 +554,7 @@ extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat4[];
> +extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat5[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
>  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaHdr[];
> diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h
> index 12b2a5f2..1c9a49d9 100644
> --- a/src/acpica/source/include/acexcep.h
> +++ b/src/acpica/source/include/acexcep.h
> @@ -434,7 +434,7 @@ static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Aml[] =
>      EXCEP_TXT ("AE_AML_DIVIDE_BY_ZERO",         "During execution of AML Divide operator"),
>      EXCEP_TXT ("AE_AML_BAD_NAME",               "An ACPI name contains invalid character(s)"),
>      EXCEP_TXT ("AE_AML_NAME_NOT_FOUND",         "Could not resolve a named reference"),
> -    EXCEP_TXT ("AE_AML_INTERNAL",               "An internal error within the interprete"),
> +    EXCEP_TXT ("AE_AML_INTERNAL",               "An internal error within the interpreter"),
>      EXCEP_TXT ("AE_AML_INVALID_SPACE_ID",       "An Operation Region SpaceID is invalid"),
>      EXCEP_TXT ("AE_AML_STRING_LIMIT",           "String is longer than 200 characters"),
>      EXCEP_TXT ("AE_AML_NO_RETURN_VALUE",        "A method did not return a required value"),
> diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
> index bd27374c..b5c4aa02 100644
> --- a/src/acpica/source/include/aclocal.h
> +++ b/src/acpica/source/include/aclocal.h
> @@ -1105,7 +1105,7 @@ typedef struct acpi_comment_addr_node
>  
>  /*
>   * File node - used for "Include" operator file stack and
> - * depdendency tree for the -ca option
> + * dependency tree for the -ca option
>   */
>  typedef struct acpi_file_node
>  {
> diff --git a/src/acpica/source/include/acmacros.h b/src/acpica/source/include/acmacros.h
> index 6046030d..340ef725 100644
> --- a/src/acpica/source/include/acmacros.h
> +++ b/src/acpica/source/include/acmacros.h
> @@ -610,7 +610,7 @@
>  
>  
>  /*
> - * Macors used for the ASL-/ASL+ converter utility
> + * Macros used for the ASL-/ASL+ converter utility
>   */
>  #ifdef ACPI_ASL_COMPILER
>  
> diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
> index e345ca34..b9b30200 100644
> --- a/src/acpica/source/include/acobject.h
> +++ b/src/acpica/source/include/acobject.h
> @@ -453,6 +453,7 @@ typedef struct acpi_object_region_field
>      union acpi_operand_object       *RegionObj;         /* Containing OpRegion object */
>      UINT8                           *ResourceBuffer;    /* ResourceTemplate for serial regions/fields */
>      UINT16                          PinNumberIndex;     /* Index relative to previous Connection/Template */
> +    UINT8                           *InternalPccBuffer; /* Internal buffer for fields associated with PCC */
>  
>  } ACPI_OBJECT_REGION_FIELD;
>  
> diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
> index c57be658..ad653f0e 100644
> --- a/src/acpica/source/include/acpixf.h
> +++ b/src/acpica/source/include/acpixf.h
> @@ -154,7 +154,7 @@
>  
>  /* Current ACPICA subsystem version in YYYYMMDD format */
>  
> -#define ACPI_CA_VERSION                 0x20190108
> +#define ACPI_CA_VERSION                 0x20190215
>  
>  #include "acconfig.h"
>  #include "actypes.h"
> @@ -300,14 +300,6 @@ ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CopyDsdtLocally, FALSE);
>   */
>  ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
>  
> -/*
> - * Optionally support module level code by parsing an entire table as
> - * a method as it is loaded. Default is TRUE.
> - * NOTE, this is essentially obsolete and will be removed soon
> - * (01/2018).
> - */
> -ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_ExecuteTablesAsMethods, TRUE);
> -
>  /*
>   * Optionally use 32-bit FADT addresses if and when there is a conflict
>   * (address mismatch) between the 32-bit and 64-bit versions of the
> diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
> index 11c6b6a4..8bdbbf99 100644
> --- a/src/acpica/source/include/acpredef.h
> +++ b/src/acpica/source/include/acpredef.h
> @@ -760,6 +760,21 @@ const ACPI_PREDEFINED_INFO          AcpiGbl_PredefinedMethods[] =
>      {{"_MTL",   METHOD_0ARGS,                          /* ACPI 6.0 */
>                  METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
>  
> +    {{"_NBS",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NCH",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NIC",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NIG",   METHOD_1ARGS (ACPI_TYPE_BUFFER),       /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
> +    {{"_NIH",   METHOD_0ARGS,                          /* ACPI 6.3 */
> +                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
> +
>      {{"_NTT",   METHOD_0ARGS,
>                  METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
>  
> diff --git a/src/acpica/source/include/acrestyp.h b/src/acpica/source/include/acrestyp.h
> index 80d2b370..fa24363d 100644
> --- a/src/acpica/source/include/acrestyp.h
> +++ b/src/acpica/source/include/acrestyp.h
> @@ -287,7 +287,7 @@ typedef struct acpi_resource_irq
>      UINT8                           DescriptorLength;
>      UINT8                           Triggering;
>      UINT8                           Polarity;
> -    UINT8                           Sharable;
> +    UINT8                           Shareable;
>      UINT8                           WakeCapable;
>      UINT8                           InterruptCount;
>      UINT8                           Interrupts[1];
> @@ -534,7 +534,7 @@ typedef struct acpi_resource_extended_irq
>      UINT8                           ProducerConsumer;
>      UINT8                           Triggering;
>      UINT8                           Polarity;
> -    UINT8                           Sharable;
> +    UINT8                           Shareable;
>      UINT8                           WakeCapable;
>      UINT8                           InterruptCount;
>      ACPI_RESOURCE_SOURCE            ResourceSource;
> @@ -558,7 +558,7 @@ typedef struct acpi_resource_gpio
>      UINT8                           ConnectionType;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
>      UINT8                           PinConfig;
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT8                           WakeCapable;        /* For values, see Interrupt Attributes above */
>      UINT8                           IoRestriction;
>      UINT8                           Triggering;         /* For values, see Interrupt Attributes above */
> @@ -736,7 +736,7 @@ typedef struct acpi_resource_pin_function
>  {
>      UINT8                           RevisionId;
>      UINT8                           PinConfig;
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT16                          FunctionNumber;
>      UINT16                          PinTableLength;
>      UINT16                          VendorLength;
> @@ -750,7 +750,7 @@ typedef struct acpi_resource_pin_config
>  {
>      UINT8                           RevisionId;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT8                           PinConfigType;
>      UINT32                          PinConfigValue;
>      UINT16                          PinTableLength;
> @@ -794,7 +794,7 @@ typedef struct acpi_resource_pin_group_function
>  {
>      UINT8                           RevisionId;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT16                          FunctionNumber;
>      UINT16                          VendorLength;
>      ACPI_RESOURCE_SOURCE            ResourceSource;
> @@ -807,7 +807,7 @@ typedef struct acpi_resource_pin_group_config
>  {
>      UINT8                           RevisionId;
>      UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
> -    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
> +    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
>      UINT8                           PinConfigType;      /* For values, see PinConfigType above */
>      UINT32                          PinConfigValue;
>      UINT16                          VendorLength;
> diff --git a/src/acpica/source/include/actbinfo.h b/src/acpica/source/include/actbinfo.h
> index 1218b59b..335a291b 100644
> --- a/src/acpica/source/include/actbinfo.h
> +++ b/src/acpica/source/include/actbinfo.h
> @@ -237,6 +237,7 @@
>  #define ACPI_GTDT0a_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_ENTRY,f)
>  #define ACPI_GTDT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_GTDT_WATCHDOG,f)
>  #define ACPI_GTDTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_GTDT_HEADER,f)
> +#define ACPI_GTDT_EL2_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_GTDT_EL2,f)
>  #define ACPI_HEST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
>  #define ACPI_HEST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
>  #define ACPI_HEST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
> @@ -248,7 +249,7 @@
>  #define ACPI_HEST11_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_HEST_IA_DEFERRED_CHECK,f)
>  #define ACPI_HESTN_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
>  #define ACPI_HESTB_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
> -#define ACPI_HMAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_ADDRESS_RANGE,f)
> +#define ACPI_HMAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_PROXIMITY_DOMAIN,f)
>  #define ACPI_HMAT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_LOCALITY,f)
>  #define ACPI_HMAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_CACHE,f)
>  #define ACPI_HMATH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_STRUCTURE,f)
> @@ -334,6 +335,7 @@
>  #define ACPI_SRAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
>  #define ACPI_SRAT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f)
>  #define ACPI_SRAT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f)
> +#define ACPI_SRAT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f)
>  #define ACPI_TCPA_CLIENT_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
>  #define ACPI_TCPA_SERVER_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
>  #define ACPI_TPM2A_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
> @@ -361,10 +363,11 @@
>  #define ACPI_SRAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o)
>  #define ACPI_SRAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
>  #define ACPI_SRAT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GICC_AFFINITY,f,o)
> +#define ACPI_SRAT5_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f,o)
>  #define ACPI_GTDT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o)
>  #define ACPI_GTDT0a_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o)
>  #define ACPI_GTDT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o)
> -#define ACPI_HMAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_ADDRESS_RANGE,f,o)
> +#define ACPI_HMAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_PROXIMITY_DOMAIN,f,o)
>  #define ACPI_HMAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_LOCALITY,f,o)
>  #define ACPI_HMAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_CACHE,f,o)
>  #define ACPI_IORT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o)
> diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
> index 38e73db8..b1700608 100644
> --- a/src/acpica/source/include/actbl1.h
> +++ b/src/acpica/source/include/actbl1.h
> @@ -797,7 +797,7 @@ typedef struct acpi_dmar_hardware_unit
>  #define ACPI_DMAR_INCLUDE_ALL       (1)
>  
>  
> -/* 1: Reserved Memory Defininition */
> +/* 1: Reserved Memory Definition */
>  
>  typedef struct acpi_dmar_reserved_memory
>  {
> @@ -1319,6 +1319,12 @@ typedef struct acpi_table_gtdt
>  #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
>  #define ACPI_GTDT_ALWAYS_ON             (1<<2)
>  
> +typedef struct acpi_gtdt_el2
> +{
> +    UINT32                  VirtualEL2TimerGsiv;
> +    UINT32                  VirtualEL2TimerFlags;
> +} ACPI_GTDT_EL2;
> +
>  
>  /* Common GTDT subtable header */
>  
> @@ -1778,7 +1784,7 @@ typedef struct acpi_table_hmat
>  
>  enum AcpiHmatType
>  {
> -    ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subystem address range */
> +    ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subsystem address range */
>      ACPI_HMAT_TYPE_LOCALITY             = 1,   /* System locality latency and bandwidth information */
>      ACPI_HMAT_TYPE_CACHE                = 2,   /* Memory side cache information */
>      ACPI_HMAT_TYPE_RESERVED             = 3    /* 3 and greater are reserved */
> @@ -1797,9 +1803,9 @@ typedef struct acpi_hmat_structure
>   * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
>   */
>  
> -/* 0: Memory subystem address range */
> +/* 0: Memory proximity domain attributes */
>  
> -typedef struct acpi_hmat_address_range
> +typedef struct acpi_hmat_proximity_domain
>  {
>      ACPI_HMAT_STRUCTURE     Header;
>      UINT16                  Flags;
> @@ -1807,10 +1813,10 @@ typedef struct acpi_hmat_address_range
>      UINT32                  ProcessorPD;            /* Processor proximity domain */
>      UINT32                  MemoryPD;               /* Memory proximity domain */
>      UINT32                  Reserved2;
> -    UINT64                  PhysicalAddressBase;    /* Physical address range base */
> -    UINT64                  PhysicalAddressLength;  /* Physical address range length */
> +    UINT64                  Reserved3;
> +    UINT64                  Reserved4;
>  
> -} ACPI_HMAT_ADDRESS_RANGE;
> +} ACPI_HMAT_PROXIMITY_DOMAIN;
>  
>  /* Masks for Flags field above */
>  
> diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
> index 562584ec..07d907e3 100644
> --- a/src/acpica/source/include/actbl2.h
> +++ b/src/acpica/source/include/actbl2.h
> @@ -303,7 +303,7 @@ typedef struct acpi_iort_memory_access
>  typedef struct acpi_iort_its_group
>  {
>      UINT32                  ItsCount;
> -    UINT32                  Identifiers[1];         /* GIC ITS identifier arrary */
> +    UINT32                  Identifiers[1];         /* GIC ITS identifier array */
>  
>  } ACPI_IORT_ITS_GROUP;
>  
> @@ -873,7 +873,7 @@ typedef struct acpi_madt_local_x2apic_nmi
>  } ACPI_MADT_LOCAL_X2APIC_NMI;
>  
>  
> -/* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */
> +/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 changes) */
>  
>  typedef struct acpi_madt_generic_interrupt
>  {
> @@ -892,7 +892,8 @@ typedef struct acpi_madt_generic_interrupt
>      UINT64                  GicrBaseAddress;
>      UINT64                  ArmMpidr;
>      UINT8                   EfficiencyClass;
> -    UINT8                   Reserved2[3];
> +    UINT8                   Reserved2[1];
> +    UINT16                  SpeInterrupt;       /* ACPI 6.3 */
>  
>  } ACPI_MADT_GENERIC_INTERRUPT;
>  
> @@ -1737,6 +1738,7 @@ typedef struct acpi_pdtt_channel
>  
>  #define ACPI_PDTT_RUNTIME_TRIGGER           (1)
>  #define ACPI_PDTT_WAIT_COMPLETION           (1<<1)
> +#define ACPI_PDTT_TRIGGER_ORDER             (1<<2)
>  
>  
>  /*******************************************************************************
> @@ -1873,8 +1875,11 @@ typedef struct acpi_pptt_processor
>  
>  /* Flags */
>  
> -#define ACPI_PPTT_PHYSICAL_PACKAGE          (1)     /* Physical package */
> -#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID   (2)     /* ACPI Processor ID valid */
> +#define ACPI_PPTT_PHYSICAL_PACKAGE          (1)
> +#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID   (1<<1)
> +#define ACPI_PPTT_ACPI_PROCESSOR_IS_THREAD  (1<<2)  /* ACPI 6.3 */
> +#define ACPI_PPTT_ACPI_LEAF_NODE            (1<<3)  /* ACPI 6.3 */
> +#define ACPI_PPTT_ACPI_IDENTICAL            (1<<4)  /* ACPI 6.3 */
>  
>  
>  /* 1: Cache Type Structure */
> diff --git a/src/acpica/source/include/actbl3.h b/src/acpica/source/include/actbl3.h
> index c4a45997..db5535e8 100644
> --- a/src/acpica/source/include/actbl3.h
> +++ b/src/acpica/source/include/actbl3.h
> @@ -350,8 +350,9 @@ enum AcpiSratType
>      ACPI_SRAT_TYPE_MEMORY_AFFINITY      = 1,
>      ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY  = 2,
>      ACPI_SRAT_TYPE_GICC_AFFINITY        = 3,
> -    ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4,    /* ACPI 6.2 */
> -    ACPI_SRAT_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
> +    ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4, /* ACPI 6.2 */
> +    ACPI_SRAT_TYPE_GENERIC_AFFINITY     = 5, /* ACPI 6.3 */
> +    ACPI_SRAT_TYPE_RESERVED             = 6  /* 5 and greater are reserved */
>  };
>  
>  /*
> @@ -447,6 +448,24 @@ typedef struct acpi_srat_gic_its_affinity
>  } ACPI_SRAT_GIC_ITS_AFFINITY;
>  
>  
> +/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
> +
> +typedef struct acpi_srat_generic_affinity
> +{
> +    ACPI_SUBTABLE_HEADER    Header;
> +    UINT8                   Reserved;
> +    UINT8                   DeviceHandleType;
> +    UINT32                  ProximityDomain;
> +    UINT8                   DeviceHandle[16];
> +    UINT32                  Flags;
> +    UINT32                  Reserved1;
> +
> +} ACPI_SRAT_GENERIC_AFFINITY;
> +
> +/* Flags for ACPI_SRAT_GENERIC_AFFINITY */
> +
> +#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
> +
>  /*******************************************************************************
>   *
>   * STAO - Status Override Table (_STA override) - ACPI 6.0
> diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
> index a5ab31fe..2a65ee8f 100644
> --- a/src/acpica/source/include/actypes.h
> +++ b/src/acpica/source/include/actypes.h
> @@ -767,8 +767,9 @@ typedef UINT64                          ACPI_INTEGER;
>  #define ACPI_NOTIFY_SHUTDOWN_REQUEST    (UINT8) 0x0C
>  #define ACPI_NOTIFY_AFFINITY_UPDATE     (UINT8) 0x0D
>  #define ACPI_NOTIFY_MEMORY_UPDATE       (UINT8) 0x0E
> +#define ACPI_NOTIFY_DISCONNECT_RECOVER  (UINT8) 0x0F
>  
> -#define ACPI_GENERIC_NOTIFY_MAX         0x0E
> +#define ACPI_GENERIC_NOTIFY_MAX         0x0F
>  #define ACPI_SPECIFIC_NOTIFY_MAX        0x84
>  
>  /*
> diff --git a/src/acpica/source/tools/acpiexec/aeinstall.c b/src/acpica/source/tools/acpiexec/aeinstall.c
> index e5790929..c5269571 100644
> --- a/src/acpica/source/tools/acpiexec/aeinstall.c
> +++ b/src/acpica/source/tools/acpiexec/aeinstall.c
> @@ -215,6 +215,7 @@ static ACPI_ADR_SPACE_TYPE  SpaceIdList[] =
>      ACPI_ADR_SPACE_IPMI,
>      ACPI_ADR_SPACE_GPIO,
>      ACPI_ADR_SPACE_GSBUS,
> +    ACPI_ADR_SPACE_PLATFORM_COMM,
>      ACPI_ADR_SPACE_FIXED_HARDWARE,
>      ACPI_ADR_SPACE_USER_DEFINED1,
>      ACPI_ADR_SPACE_USER_DEFINED2
> diff --git a/src/acpica/source/tools/acpiexec/aeregion.c b/src/acpica/source/tools/acpiexec/aeregion.c
> index 152ef233..e6aa7f9f 100644
> --- a/src/acpica/source/tools/acpiexec/aeregion.c
> +++ b/src/acpica/source/tools/acpiexec/aeregion.c
> @@ -364,7 +364,7 @@ AeRegionHandler (
>                      ACPI_FREE (Resource);
>                  }
>  
> -                AcpiOsPrintf (" [AccessLength %.2X Connnection %p]",
> +                AcpiOsPrintf (" [AccessLength %.2X Connection %p]",
>                      MyContext->AccessLength, MyContext->Connection);
>              }
>  
> @@ -440,6 +440,23 @@ AeRegionHandler (
>          /* Now perform the "normal" SystemMemory handling, for AcpiExec only */
>          break;
>  
> +    /*
> +     * PCC operation region will write the entire subspace's data and expect
> +     * a response from the hardware. For acpiexec, we'll fill the buffer with
> +     * default values. Note: ASLTS will depend on these values.
> +     */
> +    case ACPI_ADR_SPACE_PLATFORM_COMM: /* ACPI 6.3 */
> +        if (AcpiGbl_DisplayRegionAccess)
> +        {
> +            AcpiOsPrintf ("AcpiExec: PCC Write : Addr %.4X Width %X\n",
> +                (UINT32) Address, BitWidth);
> +        }
> +        for (i = 0; i < Length; ++i)
> +        {
> +            Buffer[i] = (UINT8) i;
> +        }
> +        return (AE_OK);
> +
>      default:
>          break;
>      }


Acked-by: Ivan Hu <ivan.hu@canonical.com>
diff mbox series

Patch

diff --git a/src/acpica/source/common/ahpredef.c b/src/acpica/source/common/ahpredef.c
index afa71a1f..58b2d662 100644
--- a/src/acpica/source/common/ahpredef.c
+++ b/src/acpica/source/common/ahpredef.c
@@ -305,6 +305,11 @@  const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_MSM",    "Memory Set Monitoring", "Sets bandwidth monitoring parameters for a memory device"),
     AH_PREDEF ("_MTL",    "Minimum Throttle Limit", "Returns the minimum throttle limit for a thermal zone"),
     AH_PREDEF ("_MTP",    "Memory Type", "Resource Descriptor field"),
+    AH_PREDEF ("_NBS",    "NVDIMM Boot Status", "Returns information about NVDIMM device’s status at boot time"),
+    AH_PREDEF ("_NCH",    "NVDIMM Current Health Information", "Returns current health information of the NVDIMM device"),
+    AH_PREDEF ("_NIC",    "NVDIMM Health Error Injection Capabilities", "Returns health error injection capabilities that are supported by the platform"),
+    AH_PREDEF ("_NIG",    "NVDIMM Inject Health Error Status","Returns currently active health errors and their error attributes that are injected by _NIH"),
+    AH_PREDEF ("_NIH",    "NVDIMM Inject/Clear Health Errors", "Returns the status of injecting or clearing Health Errors"),
     AH_PREDEF ("_NTT",    "Notification Temperature Threshold", "Returns a threshold for device temperature change that requires platform notification"),
     AH_PREDEF ("_OFF",    "Power Off", "Sets a power resource to the off state"),
     AH_PREDEF ("_ON_",    "Power On", "Sets a power resource to the on state"),
@@ -393,7 +398,7 @@  const AH_PREDEFINED_NAME    AslPredefinedInfo[] =
     AH_PREDEF ("_SDD",    "Set Device Data", "Sets data for a SATA device"),
     AH_PREDEF ("_SEG",    "PCI Segment", "Returns a device's PCI Segment Group number"),
     AH_PREDEF ("_SHL",    "Set Hardware Limit", "Sets the hardware limit enforced by the Power Meter"),
-    AH_PREDEF ("_SHR",    "Sharable", "Interrupt share status, Resource Descriptor field"),
+    AH_PREDEF ("_SHR",    "Shareable", "Interrupt share status, Resource Descriptor field"),
     AH_PREDEF ("_SI_",    "System Indicators", "Predefined scope"),
     AH_PREDEF ("_SIZ",    "Size", "DMA transfer size, Resource Descriptor field"),
     AH_PREDEF ("_SLI",    "System Locality Information", "Returns a list of NUMA system localities"),
diff --git a/src/acpica/source/common/ahuuids.c b/src/acpica/source/common/ahuuids.c
index 0d0a3590..c9a390ba 100644
--- a/src/acpica/source/common/ahuuids.c
+++ b/src/acpica/source/common/ahuuids.c
@@ -226,7 +226,7 @@  AcpiAhMatchUuid (
 
     for (Info = Gbl_AcpiUuids; Info->Description; Info++)
     {
-        /* Null string means desciption is a UUID class */
+        /* Null string means description is a UUID class */
 
         if (!Info->String)
         {
diff --git a/src/acpica/source/common/dmextern.c b/src/acpica/source/common/dmextern.c
index 629105fb..8ac2c60c 100644
--- a/src/acpica/source/common/dmextern.c
+++ b/src/acpica/source/common/dmextern.c
@@ -1216,7 +1216,7 @@  AcpiDmCreateSubobjectForExternal (
  *
  * DESCRIPTION: Add one external to the namespace by resolvign the external
  *              (by performing a namespace lookup) and annotating the resulting
- *              namespace node with the approperiate information if the type
+ *              namespace node with the appropriate information if the type
  *              is ACPI_TYPE_REGION or ACPI_TYPE_METHOD.
  *
  ******************************************************************************/
diff --git a/src/acpica/source/common/dmrestag.c b/src/acpica/source/common/dmrestag.c
index f5789847..c33b0497 100644
--- a/src/acpica/source/common/dmrestag.c
+++ b/src/acpica/source/common/dmrestag.c
@@ -906,7 +906,7 @@  AcpiDmUpdateResourceName (
  *
  * PARAMETERS:  BitIndex            - Index into the resource descriptor
  *              Resource            - Pointer to the raw resource data
- *              ResourceIndex       - Index correspoinding to the resource type
+ *              ResourceIndex       - Index corresponding to the resource type
  *
  * RETURN:      Pointer to the resource tag (ACPI_NAME). NULL if no match.
  *
diff --git a/src/acpica/source/common/dmtable.c b/src/acpica/source/common/dmtable.c
index f0fb2aa4..e51ff424 100644
--- a/src/acpica/source/common/dmtable.c
+++ b/src/acpica/source/common/dmtable.c
@@ -320,7 +320,7 @@  static const char           *AcpiDmHestNotifySubnames[] =
 
 static const char           *AcpiDmHmatSubnames[] =
 {
-    "Memory Subystem Address Range",
+    "Memory Proximity Domain Attributes",
     "System Locality Latency and Bandwidth Information",
     "Memory Side Cache Information",
     "Unknown Structure Type"         /* Reserved */
@@ -400,6 +400,7 @@  static const char           *AcpiDmSratSubnames[] =
     "Processor Local x2APIC Affinity",
     "GICC Affinity",
     "GIC ITS Affinity",             /* Acpi 6.2 */
+    "Generic Initiator Affinity",   /* Acpi 6.3 */
     "Unknown Subtable Type"         /* Reserved */
 };
 
diff --git a/src/acpica/source/common/dmtbdump1.c b/src/acpica/source/common/dmtbdump1.c
index e55d6496..c363ac8d 100644
--- a/src/acpica/source/common/dmtbdump1.c
+++ b/src/acpica/source/common/dmtbdump1.c
@@ -1106,9 +1106,26 @@  AcpiDmDumpGtdt (
         return;
     }
 
-    /* Subtables */
+    /* Rev 3 fields */
 
     Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
+
+    if (Table->Revision > 2)
+    {
+        SubtableLength = sizeof (ACPI_GTDT_EL2);
+        Status = AcpiDmDumpTable (Length, Offset, Subtable,
+            SubtableLength, AcpiDmTableInfoGtdtEl2);
+        if (ACPI_FAILURE (Status))
+        {
+            return;
+        }
+        Offset += SubtableLength;
+    }
+
+    Subtable = ACPI_ADD_PTR (ACPI_GTDT_HEADER, Table, Offset);
+
+    /* Subtables */
+
     while (Offset < Table->Length)
     {
         /* Common subtable header */
@@ -1406,7 +1423,7 @@  AcpiDmDumpHmat (
         case ACPI_HMAT_TYPE_ADDRESS_RANGE:
 
             InfoTable = AcpiDmTableInfoHmat0;
-            Length = sizeof (ACPI_HMAT_ADDRESS_RANGE);
+            Length = sizeof (ACPI_HMAT_PROXIMITY_DOMAIN);
             break;
 
         case ACPI_HMAT_TYPE_LOCALITY:
diff --git a/src/acpica/source/common/dmtbdump3.c b/src/acpica/source/common/dmtbdump3.c
index f0a8751e..0b9863cc 100644
--- a/src/acpica/source/common/dmtbdump3.c
+++ b/src/acpica/source/common/dmtbdump3.c
@@ -333,6 +333,11 @@  AcpiDmDumpSrat (
             InfoTable = AcpiDmTableInfoSrat4;
             break;
 
+        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
+
+            InfoTable = AcpiDmTableInfoSrat5;
+            break;
+
         default:
             AcpiOsPrintf ("\n**** Unknown SRAT subtable type 0x%X\n",
                 Subtable->Type);
diff --git a/src/acpica/source/common/dmtbinfo1.c b/src/acpica/source/common/dmtbinfo1.c
index 70013701..7d7155d3 100644
--- a/src/acpica/source/common/dmtbinfo1.c
+++ b/src/acpica/source/common/dmtbinfo1.c
@@ -814,6 +814,15 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdt[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* GDTD EL2 timer info. This table is appended to AcpiDmTableInfoGtdt for rev 3 and later */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoGtdtEl2[] =
+{
+    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerGsiv),  "Virtual EL2 Timer GSIV", 0},
+    {ACPI_DMT_UINT32,   ACPI_GTDT_EL2_OFFSET (VirtualEL2TimerFlags), "Virtual EL2 Timer Flags", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 /* GTDT Subtable header (one per Subtable) */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoGtdtHdr[] =
@@ -1105,20 +1114,18 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoHmatHdr[] =
 
 /* HMAT subtables */
 
-/* 0x00: Memory Subsystem Address Range */
+/* 0x00: Memory proximity domain attributes */
 
 ACPI_DMTABLE_INFO           AcpiDmTableInfoHmat0[] =
 {
     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Processor Proximity Domain Valid", 0},
-    {ACPI_DMT_FLAG1,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Memory Proximity Domain Valid", 0},
-    {ACPI_DMT_FLAG2,    ACPI_HMAT0_FLAG_OFFSET (Flags,0),           "Reservation Hint", 0},
     {ACPI_DMT_UINT16,   ACPI_HMAT0_OFFSET (Reserved1),              "Reserved1", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (ProcessorPD),            "Processor Proximity Domain", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (MemoryPD),               "Memory Proximity Domain", 0},
     {ACPI_DMT_UINT32,   ACPI_HMAT0_OFFSET (Reserved2),              "Reserved2", 0},
-    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressBase),    "Physical Address Range Base", 0},
-    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (PhysicalAddressLength),  "Physical Address Range Size", 0},
+    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved3),              "Reserved3", 0},
+    {ACPI_DMT_UINT64,   ACPI_HMAT0_OFFSET (Reserved4),              "Reserved4", 0},
     ACPI_DMT_TERMINATOR
 };
 
diff --git a/src/acpica/source/common/dmtbinfo2.c b/src/acpica/source/common/dmtbinfo2.c
index 6727f0b2..1371af7d 100644
--- a/src/acpica/source/common/dmtbinfo2.c
+++ b/src/acpica/source/common/dmtbinfo2.c
@@ -535,6 +535,7 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt0[] =
     {ACPI_DMT_UINT8,    ACPI_MADT0_OFFSET (Id),                     "Local Apic ID", 0},
     {ACPI_DMT_UINT32,   ACPI_MADT0_OFFSET (LapicFlags),             "Flags (decoded below)", DT_FLAG},
     {ACPI_DMT_FLAG0,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Processor Enabled", 0},
+    {ACPI_DMT_FLAG1,    ACPI_MADT0_FLAG_OFFSET (LapicFlags,0),      "Runtime Online Capable", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -683,7 +684,8 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoMadt11[] =
     {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (GicrBaseAddress),       "Redistributor Base Address", 0},
     {ACPI_DMT_UINT64,   ACPI_MADT11_OFFSET (ArmMpidr),              "ARM MPIDR", 0},
     {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (EfficiencyClass),       "Efficiency Class", 0},
-    {ACPI_DMT_UINT24,   ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
+    {ACPI_DMT_UINT8,    ACPI_MADT11_OFFSET (Reserved2[0]),          "Reserved", 0},
+    {ACPI_DMT_UINT16,   ACPI_MADT11_OFFSET (SpeInterrupt),          "SPE Overflow Interrupt", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -946,7 +948,7 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoNfit0[] =
     {ACPI_DMT_FLAG1,    ACPI_NFIT0_FLAG_OFFSET (Flags,0),           "Proximity Domain Valid", 0},
     {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (Reserved),               "Reserved", 0},
     {ACPI_DMT_UINT32,   ACPI_NFIT0_OFFSET (ProximityDomain),        "Proximity Domain", 0},
-    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Address Range GUID", 0},
+    {ACPI_DMT_UUID,     ACPI_NFIT0_OFFSET (RangeGuid[0]),           "Region Type GUID", 0},
     {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Address),                "Address Range Base", 0},
     {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (Length),                 "Address Range Length", 0},
     {ACPI_DMT_UINT64,   ACPI_NFIT0_OFFSET (MemoryMapping),          "Memory Map Attribute", 0},
@@ -1246,6 +1248,7 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoPdtt0[] =
     {ACPI_DMT_UINT8,    ACPI_PDTT0_OFFSET (Flags),                  "Flags (Decoded Below)", DT_FLAG},
     {ACPI_DMT_FLAG0,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Runtime Trigger", 0},
     {ACPI_DMT_FLAG1,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Wait for Completion", 0},
+    {ACPI_DMT_FLAG2,    ACPI_PDTT0_FLAG_OFFSET (Flags,0),           "Trigger Order", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1348,6 +1351,9 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt0[] =
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Flags),                  "Flags (decoded below)", 0},
     {ACPI_DMT_FLAG0,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Physical package", 0},
     {ACPI_DMT_FLAG1,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "ACPI Processor ID valid", 0},
+    {ACPI_DMT_FLAG2,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Processor is a thread", 0},
+    {ACPI_DMT_FLAG3,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Node is a leaf", 0},
+    {ACPI_DMT_FLAG4,    ACPI_PPTT0_FLAG_OFFSET (Flags,0),           "Identical Implementation", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (Parent),                 "Parent", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (AcpiProcessorId),        "ACPI Processor ID", 0},
     {ACPI_DMT_UINT32,   ACPI_PPTT0_OFFSET (NumberOfPrivResources),  "Private Resource Number", 0},
@@ -1390,12 +1396,12 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt1[] =
 ACPI_DMTABLE_INFO           AcpiDmTableInfoPptt2[] =
 {
     {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (Reserved),               "Reserved", 0},
-    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "VENDOR_ID", 0},
-    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "LEVEL_1_ID", 0},
-    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "LEVEL_2_ID", 0},
-    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "MAJOR_REV", 0},
-    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "MINOR_REV", 0},
-    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "SPIN_REV", 0},
+    {ACPI_DMT_UINT32,   ACPI_PPTT2_OFFSET (VendorId),               "Vendor ID", 0},
+    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level1Id),               "Level1 ID", 0},
+    {ACPI_DMT_UINT64,   ACPI_PPTT2_OFFSET (Level2Id),               "Level2 ID", 0},
+    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MajorRev),               "Major revision", 0},
+    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (MinorRev),               "Minor revision", 0},
+    {ACPI_DMT_UINT16,   ACPI_PPTT2_OFFSET (SpinRev),                "Spin revision", 0},
     ACPI_DMT_TERMINATOR
 };
 
@@ -1473,7 +1479,7 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoSbst[] =
 
 /*******************************************************************************
  *
- * SDEI - Software Delegated Execption Interface Descriptor Table
+ * SDEI - Software Delegated Exception Interface Descriptor Table
  *
  ******************************************************************************/
 
diff --git a/src/acpica/source/common/dmtbinfo3.c b/src/acpica/source/common/dmtbinfo3.c
index e810a296..d143bc87 100644
--- a/src/acpica/source/common/dmtbinfo3.c
+++ b/src/acpica/source/common/dmtbinfo3.c
@@ -368,6 +368,20 @@  ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat4[] =
     ACPI_DMT_TERMINATOR
 };
 
+/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
+
+ACPI_DMTABLE_INFO           AcpiDmTableInfoSrat5[] =
+{
+    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (Reserved),               "Reserved1", 0},
+    {ACPI_DMT_UINT8,    ACPI_SRAT5_OFFSET (DeviceHandleType),       "Device Handle Type", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (ProximityDomain),        "Proximity Domain", 0},
+    {ACPI_DMT_BUF16,    ACPI_SRAT5_OFFSET (DeviceHandle),           "Device Handle", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Flags),                  "Flags (decoded below)", DT_FLAG},
+    {ACPI_DMT_FLAG0,    ACPI_SRAT5_FLAG_OFFSET (Flags,0),           "Enabled", 0},
+    {ACPI_DMT_UINT32,   ACPI_SRAT5_OFFSET (Reserved1),              "Reserved2", 0},
+    ACPI_DMT_TERMINATOR
+};
+
 
 /*******************************************************************************
  *
diff --git a/src/acpica/source/compiler/aslcompile.c b/src/acpica/source/compiler/aslcompile.c
index 5acc0d12..c46b28da 100644
--- a/src/acpica/source/compiler/aslcompile.c
+++ b/src/acpica/source/compiler/aslcompile.c
@@ -494,6 +494,7 @@  CmDoCompile (
     UtEndEvent (Event);
 
     UtEndEvent (FullCompile);
+    AslCheckExpectedExceptions ();
     CmCleanupAndExit ();
     return (0);
 
@@ -811,7 +812,6 @@  CmCleanupAndExit (
     BOOLEAN                 DeleteAmlFile = FALSE;
 
 
-    AslCheckExpectedExceptions ();
     AePrintErrorLog (ASL_FILE_STDERR);
     if (AslGbl_DebugFlag)
     {
diff --git a/src/acpica/source/compiler/aslcompiler.h b/src/acpica/source/compiler/aslcompiler.h
index 40f3b102..efcee77b 100644
--- a/src/acpica/source/compiler/aslcompiler.h
+++ b/src/acpica/source/compiler/aslcompiler.h
@@ -702,7 +702,7 @@  OpnDoPackage (
 
 
 /*
- * aslopt - optmization
+ * aslopt - optimization
  */
 void
 OptOptimizeNamePath (
@@ -1153,7 +1153,7 @@  OtXrefWalkPart1 (
 
 
 /*
- * aslutils - common compiler utilites
+ * aslutils - common compiler utilities
  */
 void
 DbgPrint (
diff --git a/src/acpica/source/compiler/aslcompiler.l b/src/acpica/source/compiler/aslcompiler.l
index 18e93064..72fbbef3 100644
--- a/src/acpica/source/compiler/aslcompiler.l
+++ b/src/acpica/source/compiler/aslcompiler.l
@@ -692,7 +692,7 @@  NamePathTail                [.]{NameSeg}
 "IPMI"                      { count (0); return (PARSEOP_REGIONSPACE_IPMI); }
 "GeneralPurposeIo"          { count (0); return (PARSEOP_REGIONSPACE_GPIO); }       /* ACPI 5.0 */
 "GenericSerialBus"          { count (0); return (PARSEOP_REGIONSPACE_GSBUS); }      /* ACPI 5.0 */
-"PCC"                       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
+"PlatformCommChannel"       { count (0); return (PARSEOP_REGIONSPACE_PCC); }        /* ACPI 5.0 */
 "FFixedHW"                  { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); }
 
     /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */
@@ -816,6 +816,13 @@  NamePathTail                [.]{NameSeg}
                                 s=UtLocalCacheCalloc (ACPI_NAME_SIZE + 1);
                                 if (strcmp (AslCompilertext, "\\"))
                                 {
+                                    /*
+                                     * According to the ACPI specification,
+                                     * NameSegments must have length of 4. If
+                                     * the NameSegment has length less than 4,
+                                     * they are padded with underscores to meet
+                                     * the required length.
+                                     */
                                     strcpy (s, "____");
                                     AcpiUtStrupr (AslCompilertext);
                                 }
diff --git a/src/acpica/source/compiler/aslload.c b/src/acpica/source/compiler/aslload.c
index 184f69eb..c910358d 100644
--- a/src/acpica/source/compiler/aslload.c
+++ b/src/acpica/source/compiler/aslload.c
@@ -331,8 +331,8 @@  LdLoadFieldElements (
                      * The name already exists in this scope
                      * But continue processing the elements
                      */
-                    AslDualParseOpError (ASL_WARNING, ASL_MSG_EXTERN_COLLISION, Child,
-                        Child->Asl.Value.String, ASL_MSG_EXTERN_FOUND_HERE, Node->Op,
+                    AslDualParseOpError (ASL_WARNING, ASL_MSG_NAME_EXISTS, Child,
+                        Child->Asl.Value.String, ASL_MSG_FOUND_HERE, Node->Op,
                         Node->Op->Asl.ExternalName);
                 }
             }
@@ -575,7 +575,7 @@  LdNamespace1Begin (
         if (Status == AE_NOT_FOUND)
         {
             /*
-             * This is either a foward reference or the object truly
+             * This is either a forward reference or the object truly
              * does not exist. The two cases can only be differentiated
              * during the cross-reference stage later. Mark the Op/Name
              * as not-found for now to indicate the need for further
diff --git a/src/acpica/source/compiler/aslmessages.c b/src/acpica/source/compiler/aslmessages.c
index b06ef937..07e98482 100644
--- a/src/acpica/source/compiler/aslmessages.c
+++ b/src/acpica/source/compiler/aslmessages.c
@@ -353,15 +353,17 @@  const char                      *AslCompilerMsgs [] =
 /*    ASL_MSG_NULL_RESOURCE_TEMPLATE */     "Empty Resource Template (END_TAG only)",
 /*    ASL_MSG_FOUND_HERE */                 "Original name creation/declaration below: ",
 /*    ASL_MSG_ILLEGAL_RECURSION */          "Illegal recursive call to method that creates named objects",
-/*    ASL_MSG_EXTERN_COLLISION */           "A name cannot be defined and declared external in the same table",
-/*    ASL_MSG_FOUND_HERE_EXTERN */          "Remove one of the declarations indicated above or below:",
+/*    ASL_MSG_PLACE_HOLDER_00 */            "", /* TODO: fill in this slot with a new error message */
+/*    ASL_MSG_PLACE_HOLDER_01 */            "", /* TODO: fill in this slot with a new error message */
 /*    ASL_MSG_OEM_TABLE_ID */               "Invalid OEM Table ID",
 /*    ASL_MSG_OEM_ID */                     "Invalid OEM ID",
 /*    ASL_MSG_UNLOAD */                     "Unload is not supported by all operating systems",
 /*    ASL_MSG_OFFSET */                     "Unnecessary/redundant use of Offset operator",
 /*    ASL_MSG_LONG_SLEEP */                 "Very long Sleep, greater than 1 second",
 /*    ASL_MSG_PREFIX_NOT_EXIST */           "One or more prefix Scopes do not exist",
-/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist"
+/*    ASL_MSG_NAMEPATH_NOT_EXIST */         "One or more objects within the Pathname do not exist",
+/*    ASL_MSG_REGION_LENGTH */              "Operation Region declared with zero length",
+/*    ASL_MSG_TEMPORARY_OBJECT */           "Object is created temporarily in another method and cannot be accessed"
 };
 
 /* Table compiler */
diff --git a/src/acpica/source/compiler/aslmessages.h b/src/acpica/source/compiler/aslmessages.h
index d2d26b6e..817e192e 100644
--- a/src/acpica/source/compiler/aslmessages.h
+++ b/src/acpica/source/compiler/aslmessages.h
@@ -355,8 +355,8 @@  typedef enum
     ASL_MSG_NULL_RESOURCE_TEMPLATE,
     ASL_MSG_FOUND_HERE,
     ASL_MSG_ILLEGAL_RECURSION,
-    ASL_MSG_EXTERN_COLLISION,
-    ASL_MSG_EXTERN_FOUND_HERE,
+    ASL_MSG_PLACE_HOLDER_00,
+    ASL_MSG_PLACE_HOLDER_01,
     ASL_MSG_OEM_TABLE_ID,
     ASL_MSG_OEM_ID,
     ASL_MSG_UNLOAD,
@@ -364,6 +364,8 @@  typedef enum
     ASL_MSG_LONG_SLEEP,
     ASL_MSG_PREFIX_NOT_EXIST,
     ASL_MSG_NAMEPATH_NOT_EXIST,
+    ASL_MSG_REGION_LENGTH,
+    ASL_MSG_TEMPORARY_OBJECT,
 
     /* These messages are used by the Data Table compiler only */
 
diff --git a/src/acpica/source/compiler/asloperands.c b/src/acpica/source/compiler/asloperands.c
index a4781ed4..172f3470 100644
--- a/src/acpica/source/compiler/asloperands.c
+++ b/src/acpica/source/compiler/asloperands.c
@@ -657,6 +657,7 @@  OpnDoRegion (
     ACPI_PARSE_OBJECT       *Op)
 {
     ACPI_PARSE_OBJECT       *Next;
+    ACPI_ADR_SPACE_TYPE     SpaceId;
 
 
     /* Opcode is parent node */
@@ -664,9 +665,10 @@  OpnDoRegion (
 
     Next = Op->Asl.Child;
 
-    /* Second child is the space ID*/
+    /* Second child is the space ID */
 
     Next = Next->Asl.Next;
+    SpaceId = (ACPI_ADR_SPACE_TYPE) Next->Common.Value.Integer;
 
     /* Third child is the region offset */
 
@@ -677,7 +679,13 @@  OpnDoRegion (
     Next = Next->Asl.Next;
     if (Next->Asl.ParseOpcode == PARSEOP_INTEGER)
     {
+        /* Check for zero length */
+
         Op->Asl.Value.Integer = Next->Asl.Value.Integer;
+        if (!Op->Asl.Value.Integer && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
+        {
+            AslError (ASL_ERROR, ASL_MSG_REGION_LENGTH, Op, NULL);
+        }
     }
     else
     {
diff --git a/src/acpica/source/compiler/aslopt.c b/src/acpica/source/compiler/aslopt.c
index 0d584717..1b0c4d33 100644
--- a/src/acpica/source/compiler/aslopt.c
+++ b/src/acpica/source/compiler/aslopt.c
@@ -814,7 +814,7 @@  OptOptimizeNamePath (
     ACPI_FREE (ExternalNameString);
 
     /*
-     * Attempt an optmization depending on the type of namepath
+     * Attempt an optimization depending on the type of namepath
      */
     if (Flags & (AML_NAMED | AML_CREATE))
     {
diff --git a/src/acpica/source/compiler/aslpredef.c b/src/acpica/source/compiler/aslpredef.c
index fa1da4d9..ab29105a 100644
--- a/src/acpica/source/compiler/aslpredef.c
+++ b/src/acpica/source/compiler/aslpredef.c
@@ -449,7 +449,7 @@  ApCheckPredefinedReturnValue (
  * DESCRIPTION: Check for a predefined name for a static object (created via
  *              the ASL Name operator). If it is a predefined ACPI name, ensure
  *              that the name does not require any arguments (which would
- *              require a control method implemenation of the name), and that
+ *              require a control method implementation of the name), and that
  *              the type of the object is one of the expected types for the
  *              predefined name.
  *
diff --git a/src/acpica/source/compiler/aslprintf.c b/src/acpica/source/compiler/aslprintf.c
index b34e9adc..8121ea00 100644
--- a/src/acpica/source/compiler/aslprintf.c
+++ b/src/acpica/source/compiler/aslprintf.c
@@ -239,7 +239,7 @@  OpcDoFprintf (
  * RETURN:      None
  *
  * DESCRIPTION: Convert printf macro to a Store AML operation. The printf
- *              macro parse tree is layed out as follows:
+ *              macro parse tree is laid out as follows:
  *
  *              Op        - printf parse op
  *              Op->Child - Format string
diff --git a/src/acpica/source/compiler/aslresources.y b/src/acpica/source/compiler/aslresources.y
index 049d0a52..1caff20c 100644
--- a/src/acpica/source/compiler/aslresources.y
+++ b/src/acpica/source/compiler/aslresources.y
@@ -866,7 +866,7 @@  UartSerialBusTerm
         OptionalBitsPerByte         /* 05: BitsPerByte */
         OptionalStopBits            /* 06: StopBits */
         ',' ByteConstExpr           /* 08: LinesInUse */
-        OptionalEndian              /* 09: Endianess */
+        OptionalEndian              /* 09: Endianness */
         OptionalParityType          /* 10: Parity */
         OptionalFlowControl         /* 11: FlowControl */
         ',' WordConstExpr           /* 13: Rx BufferSize */
@@ -891,7 +891,7 @@  UartSerialBusTermV2
         OptionalBitsPerByte         /* 05: BitsPerByte */
         OptionalStopBits            /* 06: StopBits */
         ',' ByteConstExpr           /* 08: LinesInUse */
-        OptionalEndian              /* 09: Endianess */
+        OptionalEndian              /* 09: Endianness */
         OptionalParityType          /* 10: Parity */
         OptionalFlowControl         /* 11: FlowControl */
         ',' WordConstExpr           /* 13: Rx BufferSize */
diff --git a/src/acpica/source/compiler/aslsupport.l b/src/acpica/source/compiler/aslsupport.l
index 76993662..5cac84dc 100644
--- a/src/acpica/source/compiler/aslsupport.l
+++ b/src/acpica/source/compiler/aslsupport.l
@@ -610,7 +610,7 @@  loop:
 
     /*
      * Check for nested comment -- can help catch cases where a previous
-     * comment was accidently left unterminated
+     * comment was accidentally left unterminated
      */
     if ((c1 == '/') && (c == '*'))
     {
diff --git a/src/acpica/source/compiler/aslxref.c b/src/acpica/source/compiler/aslxref.c
index 87a2df28..b3067feb 100644
--- a/src/acpica/source/compiler/aslxref.c
+++ b/src/acpica/source/compiler/aslxref.c
@@ -174,6 +174,12 @@  XfNamespaceLocateEnd (
     UINT32                  Level,
     void                    *Context);
 
+static BOOLEAN
+XfValidateCrossReference (
+    ACPI_PARSE_OBJECT       *Op,
+    const ACPI_OPCODE_INFO  *OpInfo,
+    ACPI_NAMESPACE_NODE     *Node);
+
 static ACPI_PARSE_OBJECT *
 XfGetParentMethod (
     ACPI_PARSE_OBJECT       *Op);
@@ -408,6 +414,7 @@  XfGetParentMethod (
     return (NULL); /* No parent method found */
 }
 
+
 /*******************************************************************************
  *
  * FUNCTION:    XfNamespaceLocateBegin
@@ -488,7 +495,7 @@  XfNamespaceLocateBegin (
             Node->ArgCount = (UINT8)
                 (((UINT8) NextOp->Asl.Value.Integer) & 0x07);
 
-            /* We will track all posible ArgXs */
+            /* We will track all possible ArgXs */
 
             for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++)
             {
@@ -776,6 +783,15 @@  XfNamespaceLocateBegin (
         return_ACPI_STATUS (Status);
     }
 
+    /* Check for an attempt to access an object in another method */
+
+    if (!XfValidateCrossReference (Op, OpInfo, Node))
+    {
+        AslError (ASL_ERROR, ASL_MSG_TEMPORARY_OBJECT, Op,
+            Op->Asl.ExternalName);
+        return_ACPI_STATUS (Status);
+    }
+
     /* Object was found above, check for an illegal forward reference */
 
     if (Op->Asl.CompileFlags & OP_NOT_FOUND_DURING_LOAD)
@@ -1234,3 +1250,103 @@  XfNamespaceLocateEnd (
 
     return_ACPI_STATUS (AE_OK);
 }
+
+
+/*******************************************************************************
+ *
+ * FUNCTION:    XfValidateCrossReference
+ *
+ * PARAMETERS:  Op                      - Parse Op that references the object
+ *              OpInfo                  - Parse Op info struct
+ *              Node                    - Node for the referenced object
+ *
+ * RETURN:      TRUE if the reference is legal, FALSE otherwise
+ *
+ * DESCRIPTION: Determine if a reference to another object is allowed.
+ *
+ * EXAMPLE:
+ *      Method (A) {Name (INT1, 1)}     Declaration of object INT1
+ *      Method (B) (Store (2, \A.INT1)} Illegal reference to object INT1
+ *                                      (INT1 is temporary, valid only during
+ *                                      execution of A)
+ *
+ * NOTES:
+ *      A null pointer returned by either XfGetParentMethod or
+ *      UtGetParentMethod indicates that the parameter object is not
+ *      within a control method.
+ *
+ *      Five cases are handled: Case(Op, Node)
+ *      1) Case(0,0): Op is not within a method, Node is not    --> OK
+ *      2) Case(0,1): Op is not within a method, but Node is    --> Illegal
+ *      3) Case(1,0): Op is within a method, Node is not        --> OK
+ *      4) Case(1,1): Both are within the same method           --> OK
+ *      5) Case(1,1): Both are in methods, but not same method  --> Illegal
+ *
+ ******************************************************************************/
+
+static BOOLEAN
+XfValidateCrossReference (
+    ACPI_PARSE_OBJECT       *Op,
+    const ACPI_OPCODE_INFO  *OpInfo,
+    ACPI_NAMESPACE_NODE     *Node)
+{
+    ACPI_PARSE_OBJECT       *ReferencingMethodOp;
+    ACPI_NAMESPACE_NODE     *ReferencedMethodNode;
+
+
+    /* Ignore actual named (and related) object declarations */
+
+    if (OpInfo->Flags & (AML_NAMED | AML_CREATE | AML_DEFER | AML_HAS_ARGS))
+    {
+        return (TRUE);
+    }
+
+    /*
+     * 1) Search upwards in parse tree for owner of the referencing object
+     * 2) Search upwards in namespace to find the owner of the referenced object
+     */
+    ReferencingMethodOp = XfGetParentMethod (Op);
+    ReferencedMethodNode = UtGetParentMethod (Node);
+
+    if (!ReferencingMethodOp && !ReferencedMethodNode)
+    {
+        /*
+         * 1) Case (0,0): Both Op and Node are not within methods
+         * --> OK
+         */
+        return (TRUE);
+    }
+
+    if (!ReferencingMethodOp && ReferencedMethodNode)
+    {
+        /*
+         * 2) Case (0,1): Op is not in a method, but Node is within a
+         * method --> illegal
+         */
+        return (FALSE);
+    }
+    else if (ReferencingMethodOp && !ReferencedMethodNode)
+    {
+        /*
+         * 3) Case (1,0): Op is within a method, but Node is not
+         * --> OK
+         */
+        return (TRUE);
+    }
+    else if (ReferencingMethodOp->Asl.Node == ReferencedMethodNode)
+    {
+        /*
+         * 4) Case (1,1): Both Op and Node are within the same method
+         * --> OK
+         */
+        return (TRUE);
+    }
+    else
+    {
+        /*
+         * 5) Case (1,1), Op and Node are in different methods
+         * --> Illegal
+         */
+        return (FALSE);
+    }
+}
diff --git a/src/acpica/source/compiler/cvcompiler.c b/src/acpica/source/compiler/cvcompiler.c
index e069fbb4..083b66a5 100644
--- a/src/acpica/source/compiler/cvcompiler.c
+++ b/src/acpica/source/compiler/cvcompiler.c
@@ -168,7 +168,7 @@ 
  *
  * DESCRIPTION: Process a single line comment of a c Style comment. This
  *              function captures a line of a c style comment in a char* and
- *              places the comment in the approperiate global buffer.
+ *              places the comment in the appropriate global buffer.
  *
  ******************************************************************************/
 
@@ -294,7 +294,7 @@  CvProcessComment (
  * RETURN:      none
  *
  * DESCRIPTION: Process a single line comment. This function captures a comment
- *              in a char* and places the comment in the approperiate global
+ *              in a char* and places the comment in the appropriate global
  *              buffer through CvPlaceComment
  *
  ******************************************************************************/
@@ -333,7 +333,7 @@  CvProcessCommentType2 (
          *
          * would be lexically analyzed as a single comment.
          *
-         * Create a new string with the approperiate spaces. Since we need
+         * Create a new string with the appropriate spaces. Since we need
          * to account for the proper spacing, the actual comment,
          * extra 2 spaces so that this comment can be converted to the "/ *"
          * style and the null terminator, the string would look something
@@ -380,7 +380,7 @@  CvProcessCommentType2 (
  * RETURN:      TotalCommentLength - Length of all comments within this op.
  *
  * DESCRIPTION: Calculate the length that the each comment takes up within Op.
- *              Comments look like the follwoing: [0xA9 OptionBtye comment 0x00]
+ *              Comments look like the following: [0xA9 OptionBtye comment 0x00]
  *              therefore, we add 1 + 1 + strlen (comment) + 1 to get the actual
  *              length of this comment.
  *
@@ -963,7 +963,7 @@  CvAppendInlineComment (
  * RETURN:      None
  *
  * DESCRIPTION: Given type and CommentString, this function places the
- *              CommentString in the approperiate global comment list or char*
+ *              CommentString in the appropriate global comment list or char*
  *
  ******************************************************************************/
 
diff --git a/src/acpica/source/compiler/cvparser.c b/src/acpica/source/compiler/cvparser.c
index 8225a44b..ca970b50 100644
--- a/src/acpica/source/compiler/cvparser.c
+++ b/src/acpica/source/compiler/cvparser.c
@@ -276,7 +276,7 @@  CvInitFileTree (
     AcpiGbl_FileTreeRoot->File = AcpiGbl_OutputFile;
 
     /*
-     * Set this to true because we dont need to output
+     * Set this to true because we don't need to output
      * an include statement for the topmost file
      */
     AcpiGbl_FileTreeRoot->IncludeWritten = TRUE;
@@ -514,7 +514,7 @@  CvFileAddressLookup(
  * RETURN:      None
  *
  * DESCRIPTION: Takes a given parse op, looks up its Op->Common.Aml field
- *              within the file tree and fills in approperiate file information
+ *              within the file tree and fills in appropriate file information
  *              from a matching node within the tree.
  *              This is referred as ASL_CV_LABEL_FILENODE.
  *
@@ -1005,7 +1005,7 @@  CvCaptureComments (
  *
  * RETURN:      None
  *
- * DESCRIPTION: Transfer all of the commments stored in global containers to the
+ * DESCRIPTION: Transfer all of the comments stored in global containers to the
  *              given Op. This will be invoked shortly after the parser creates
  *              a ParseOp.
  *              This is referred as ASL_CV_TRANSFER_COMMENTS.
diff --git a/src/acpica/source/compiler/dtexpress.c b/src/acpica/source/compiler/dtexpress.c
index 6b5b1861..820e1988 100644
--- a/src/acpica/source/compiler/dtexpress.c
+++ b/src/acpica/source/compiler/dtexpress.c
@@ -372,7 +372,7 @@  DtDoOperator (
  *
  * RETURN:      Table offset associated with the label
  *
- * DESCRIPTION: Lookup a lable and return its value.
+ * DESCRIPTION: Lookup a label and return its value.
  *
  *****************************************************************************/
 
diff --git a/src/acpica/source/compiler/dtio.c b/src/acpica/source/compiler/dtio.c
index 095ca0fb..ae827513 100644
--- a/src/acpica/source/compiler/dtio.c
+++ b/src/acpica/source/compiler/dtio.c
@@ -375,7 +375,7 @@  DtParseLine (
         return (AE_OK);
     }
 
-    /* All lines after "Raw Table Data" are ingored */
+    /* All lines after "Raw Table Data" are ignored */
 
     if (strstr (LineBuffer, ACPI_RAW_TABLE_DATA_HEADER))
     {
diff --git a/src/acpica/source/compiler/dttable1.c b/src/acpica/source/compiler/dttable1.c
index 23b36be4..c43b9e6c 100644
--- a/src/acpica/source/compiler/dttable1.c
+++ b/src/acpica/source/compiler/dttable1.c
@@ -831,7 +831,7 @@  DtCompileDrtm (
     DtInsertSubtable (ParentTable, Subtable);
 
     /*
-     * Using ACPI_SUB_PTR, We needn't define a seperate structure. Care
+     * Using ACPI_SUB_PTR, We needn't define a separate structure. Care
      * should be taken to avoid accessing ACPI_TABLE_HADER fields.
      */
 #if 0
@@ -1002,7 +1002,14 @@  DtCompileGtdt (
     ACPI_SUBTABLE_HEADER    *GtdtHeader;
     ACPI_DMTABLE_INFO       *InfoTable;
     UINT32                  GtCount;
+    ACPI_TABLE_HEADER       *Header;
+
+
+    ParentTable = DtPeekSubtable ();
 
+    Header = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer);
+
+    /* Compile the main table */
 
     Status = DtCompileTable (PFieldList, AcpiDmTableInfoGtdt,
         &Subtable);
@@ -1011,6 +1018,21 @@  DtCompileGtdt (
         return (Status);
     }
 
+    /* GTDT revision 3 later contains 2 extra fields before subtables */
+
+    if (Header->Revision > 2)
+    {
+        ParentTable = DtPeekSubtable ();
+        DtInsertSubtable (ParentTable, Subtable);
+
+        Status = DtCompileTable (PFieldList,
+            AcpiDmTableInfoGtdtEl2, &Subtable);
+        if (ACPI_FAILURE (Status))
+        {
+            return (Status);
+        }
+    }
+
     ParentTable = DtPeekSubtable ();
     DtInsertSubtable (ParentTable, Subtable);
 
diff --git a/src/acpica/source/compiler/dttable2.c b/src/acpica/source/compiler/dttable2.c
index b9623d97..04f48cc0 100644
--- a/src/acpica/source/compiler/dttable2.c
+++ b/src/acpica/source/compiler/dttable2.c
@@ -1733,6 +1733,11 @@  DtCompileSrat (
             InfoTable = AcpiDmTableInfoSrat4;
             break;
 
+        case ACPI_SRAT_TYPE_GENERIC_AFFINITY:
+
+            InfoTable = AcpiDmTableInfoSrat5;
+            break;
+
         default:
 
             DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT");
diff --git a/src/acpica/source/compiler/dttemplate.h b/src/acpica/source/compiler/dttemplate.h
index 5fb3287b..cb1c5855 100644
--- a/src/acpica/source/compiler/dttemplate.h
+++ b/src/acpica/source/compiler/dttemplate.h
@@ -545,34 +545,35 @@  const unsigned char TemplateFpdt[] =
 
 const unsigned char TemplateGtdt[] =
 {
-    0x47,0x54,0x44,0x54,0xe0,0x00,0x00,0x00,  /* 00000000    "GTDT...." */
-    0x02,0xb0,0x4c,0x49,0x4e,0x41,0x52,0x4f,  /* 00000008    "..LINARO" */
-    0x52,0x54,0x53,0x4d,0x56,0x45,0x56,0x38,  /* 00000010    "RTSMVEV8" */
-    0x01,0x00,0x00,0x00,0x49,0x4e,0x54,0x4c,  /* 00000018    "....INTL" */
-    0x24,0x04,0x14,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "$.. ...." */
+    0x47,0x54,0x44,0x54,0xE8,0x00,0x00,0x00,  /* 00000000    "GTDT...." */
+    0x03,0x5D,0x4C,0x49,0x4E,0x41,0x52,0x4F,  /* 00000008    ".]LINARO" */
+    0x52,0x54,0x53,0x4D,0x56,0x45,0x56,0x38,  /* 00000010    "RTSMVEV8" */
+    0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
-    0x1d,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
-    0x1e,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000038    "........" */
-    0x1b,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
-    0x1a,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000048    "........" */
+    0x1D,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
+    0x1E,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000038    "........" */
+    0x1B,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000040    "........" */
+    0x1A,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000048    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000050    "........" */
     0x02,0x00,0x00,0x00,0x60,0x00,0x00,0x00,  /* 00000058    "....`..." */
-    0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000060    ".d......" */
-    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000068    "........" */
-    0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000070    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
+    0x43,0x00,0x00,0x00,0x21,0x00,0x00,0x00,  /* 00000060    "C...!..." */
+    0x00,0x64,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000068    ".d......" */
+    0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,  /* 00000070    "........" */
+    0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000078    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000088    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
     0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000090    "........" */
     0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000098    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000a8    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000b0    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000b8    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x1c,0x00,0x00,  /* 000000c0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000c8    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000d0    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000d8    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000A0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000B8    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,  /* 000000C0    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x1C,0x00,0x00,  /* 000000C8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000D8    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00   /* 000000E0    "........" */
 };
 
 const unsigned char TemplateHest[] =
@@ -662,10 +663,10 @@  const unsigned char TemplateHest[] =
 const unsigned char TemplateHmat[] =
 {
     0x48,0x4D,0x41,0x54,0x9C,0x00,0x00,0x00,  /* 00000000    "HMAT...." */
-    0x00,0x54,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".TINTEL " */
+    0x02,0x4D,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".MINTEL " */
     0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45,  /* 00000010    "TEMPLATE" */
     0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x03,0x03,0x17,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
+    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
     0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x00,  /* 00000028    "....(..." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000030    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
@@ -817,10 +818,10 @@  const unsigned char TemplateLpit[] =
 const unsigned char TemplateMadt[] =
 {
     0x41,0x50,0x49,0x43,0x5A,0x01,0x00,0x00,  /* 00000000    "APICZ..." */
-    0x03,0xEA,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
+    0x05,0xEF,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x10,0x04,0x15,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
+    0x08,0x01,0x19,0x20,0x00,0x00,0x00,0x00,  /* 00000020    "... ...." */
     0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00,  /* 00000028    "........" */
     0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00,  /* 00000030    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
@@ -1375,11 +1376,11 @@  const unsigned char TemplateSpmi[] =
 
 const unsigned char TemplateSrat[] =
 {
-    0x53,0x52,0x41,0x54,0x9E,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
-    0x03,0x55,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    ".UINTEL " */
+    0x53,0x52,0x41,0x54,0xBE,0x00,0x00,0x00,  /* 00000000    "SRAT...." */
+    0x03,0xE6,0x49,0x4E,0x54,0x45,0x4C,0x20,  /* 00000008    "..INTEL " */
     0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65,  /* 00000010    "Template" */
     0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x03,0x03,0x17,0x20,0x01,0x00,0x00,0x00,  /* 00000020    "... ...." */
+    0x29,0x06,0x18,0x20,0x01,0x00,0x00,0x00,  /* 00000020    ").. ...." */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000028    "........" */
     0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00,  /* 00000030    "........" */
     0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000038    "........" */
@@ -1394,7 +1395,11 @@  const unsigned char TemplateSrat[] =
     0x03,0x12,0x00,0x00,0x00,0x00,0x00,0x00,  /* 00000080    "........" */
     0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,  /* 00000088    "........" */
     0x00,0x00,0x04,0x0C,0x00,0x00,0x00,0x00,  /* 00000090    "........" */
-    0x00,0x00,0x01,0x00,0x00,0x00             /* 00000098    "......"   */
+    0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x20,  /* 00000098    "....... " */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000A8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000B0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00             /* 000000B8    "......"   */
 };
 
 const unsigned char TemplateStao[] =
diff --git a/src/acpica/source/components/debugger/dbdisply.c b/src/acpica/source/components/debugger/dbdisply.c
index d0583fc7..539ff5af 100644
--- a/src/acpica/source/components/debugger/dbdisply.c
+++ b/src/acpica/source/components/debugger/dbdisply.c
@@ -410,7 +410,7 @@  AcpiDbDecodeAndDisplayObject (
 
         default:
 
-            /* Is not a recognizeable object */
+            /* Is not a recognizable object */
 
             AcpiOsPrintf (
                 "Not a known ACPI internal object, descriptor type %2.2X\n",
@@ -866,7 +866,7 @@  AcpiDbDisplayObjectType (
  *
  * DESCRIPTION: Display the result of an AML opcode
  *
- * Note: Curently only displays the result object if we are single stepping.
+ * Note: Currently only displays the result object if we are single stepping.
  * However, this output may be useful in other contexts and could be enabled
  * to do so if needed.
  *
diff --git a/src/acpica/source/components/debugger/dbexec.c b/src/acpica/source/components/debugger/dbexec.c
index 03ea9bf2..49d1180f 100644
--- a/src/acpica/source/components/debugger/dbexec.c
+++ b/src/acpica/source/components/debugger/dbexec.c
@@ -331,12 +331,12 @@  AcpiDbExecuteMethod (
         }
 
         ACPI_EXCEPTION ((AE_INFO, Status,
-            "while executing %s from debugger", Info->Pathname));
+            "while executing %s from AML Debugger", Info->Pathname));
 
         if (Status == AE_BUFFER_OVERFLOW)
         {
             ACPI_ERROR ((AE_INFO,
-                "Possible overflow of internal debugger "
+                "Possible buffer overflow within AML Debugger "
                 "buffer (size 0x%X needed 0x%X)",
                 ACPI_DEBUG_BUFFER_SIZE, (UINT32) ReturnObj->Length));
         }
diff --git a/src/acpica/source/components/debugger/dbnames.c b/src/acpica/source/components/debugger/dbnames.c
index 781e3a98..3c01e808 100644
--- a/src/acpica/source/components/debugger/dbnames.c
+++ b/src/acpica/source/components/debugger/dbnames.c
@@ -1175,7 +1175,7 @@  AcpiDbBusWalk (
  *
  * RETURN:      None
  *
- * DESCRIPTION: Display info about system busses.
+ * DESCRIPTION: Display info about system buses.
  *
  ******************************************************************************/
 
diff --git a/src/acpica/source/components/debugger/dbobject.c b/src/acpica/source/components/debugger/dbobject.c
index c54394de..f9dc6687 100644
--- a/src/acpica/source/components/debugger/dbobject.c
+++ b/src/acpica/source/components/debugger/dbobject.c
@@ -420,7 +420,7 @@  AcpiDbDisplayInternalObject (
 
             AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
 
-            /* Decode the refererence */
+            /* Decode the reference */
 
             switch (ObjDesc->Reference.Class)
             {
diff --git a/src/acpica/source/components/debugger/dbtest.c b/src/acpica/source/components/debugger/dbtest.c
index 560fb86f..67b9cbea 100644
--- a/src/acpica/source/components/debugger/dbtest.c
+++ b/src/acpica/source/components/debugger/dbtest.c
@@ -154,6 +154,7 @@ 
 #include "acdebug.h"
 #include "acnamesp.h"
 #include "acpredef.h"
+#include "acinterp.h"
 
 
 #define _COMPONENT          ACPI_CA_DEBUGGER
@@ -192,6 +193,10 @@  static ACPI_STATUS
 AcpiDbTestPackageType (
     ACPI_NAMESPACE_NODE     *Node);
 
+static ACPI_STATUS
+AcpiDbTestFieldUnitType (
+    ACPI_OPERAND_OBJECT     *ObjDesc);
+
 static ACPI_STATUS
 AcpiDbReadFromObject (
     ACPI_NAMESPACE_NODE     *Node,
@@ -241,7 +246,7 @@  static ACPI_DB_ARGUMENT_INFO    AcpiDbTestTypes [] =
 static ACPI_HANDLE          ReadHandle = NULL;
 static ACPI_HANDLE          WriteHandle = NULL;
 
-/* ASL Definitions of the debugger read/write control methods */
+/* ASL Definitions of the debugger read/write control methods. AML below. */
 
 #if 0
 DefinitionBlock ("ssdt.aml", "SSDT", 2, "Intel", "DEBUG", 0x00000001)
@@ -407,10 +412,8 @@  AcpiDbTestAllObjects (
  * RETURN:      Status
  *
  * DESCRIPTION: Test one namespace object. Supported types are Integer,
- *              String, Buffer, BufferField, and FieldUnit. All other object
- *              types are simply ignored.
- *
- *              Note: Support for Packages is not implemented.
+ *              String, Buffer, Package, BufferField, and FieldUnit.
+ *              All other object types are simply ignored.
  *
  ******************************************************************************/
 
@@ -423,7 +426,6 @@  AcpiDbTestOneObject (
 {
     ACPI_NAMESPACE_NODE     *Node;
     ACPI_OPERAND_OBJECT     *ObjDesc;
-    ACPI_OPERAND_OBJECT     *RegionObj;
     ACPI_OBJECT_TYPE        LocalType;
     UINT32                  BitLength = 0;
     UINT32                  ByteLength = 0;
@@ -466,19 +468,22 @@  AcpiDbTestOneObject (
         break;
 
     case ACPI_TYPE_FIELD_UNIT:
-    case ACPI_TYPE_BUFFER_FIELD:
     case ACPI_TYPE_LOCAL_REGION_FIELD:
     case ACPI_TYPE_LOCAL_INDEX_FIELD:
     case ACPI_TYPE_LOCAL_BANK_FIELD:
 
+        LocalType = ACPI_TYPE_FIELD_UNIT;
+        break;
+
+    case ACPI_TYPE_BUFFER_FIELD:
+        /*
+         * The returned object will be a Buffer if the field length
+         * is larger than the size of an Integer (32 or 64 bits
+         * depending on the DSDT version).
+         */
         LocalType = ACPI_TYPE_INTEGER;
         if (ObjDesc)
         {
-            /*
-             * Returned object will be a Buffer if the field length
-             * is larger than the size of an Integer (32 or 64 bits
-             * depending on the DSDT version).
-             */
             BitLength = ObjDesc->CommonField.BitLength;
             ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength);
             if (BitLength > AcpiGbl_IntegerBitWidth)
@@ -488,9 +493,9 @@  AcpiDbTestOneObject (
         }
         break;
 
-    default:
+default:
 
-        /* Ignore all other types */
+        /* Ignore all non-data types - Methods, Devices, Scopes, etc. */
 
         return (AE_OK);
     }
@@ -502,40 +507,10 @@  AcpiDbTestOneObject (
 
     if (!ObjDesc)
     {
-        AcpiOsPrintf (" Ignoring, no attached object\n");
+        AcpiOsPrintf (" No attached sub-object, ignoring\n");
         return (AE_OK);
     }
 
-    /*
-     * Check for unsupported region types. Note: AcpiExec simulates
-     * access to SystemMemory, SystemIO, PCI_Config, and EC.
-     */
-    switch (Node->Type)
-    {
-    case ACPI_TYPE_LOCAL_REGION_FIELD:
-
-        RegionObj = ObjDesc->Field.RegionObj;
-        switch (RegionObj->Region.SpaceId)
-        {
-        case ACPI_ADR_SPACE_SYSTEM_MEMORY:
-        case ACPI_ADR_SPACE_SYSTEM_IO:
-        case ACPI_ADR_SPACE_PCI_CONFIG:
-
-            break;
-
-        default:
-
-            AcpiOsPrintf ("      %s space is not supported in this command [%4.4s]\n",
-                AcpiUtGetRegionName (RegionObj->Region.SpaceId),
-                RegionObj->Region.Node->Name.Ascii);
-            return (AE_OK);
-        }
-        break;
-
-    default:
-        break;
-    }
-
     /* At this point, we have resolved the object to one of the major types */
 
     switch (LocalType)
@@ -560,6 +535,11 @@  AcpiDbTestOneObject (
         Status = AcpiDbTestPackageType (Node);
         break;
 
+    case ACPI_TYPE_FIELD_UNIT:
+
+        Status = AcpiDbTestFieldUnitType (ObjDesc);
+        break;
+
     default:
 
         AcpiOsPrintf (" Ignoring, type not implemented (%2.2X)",
@@ -572,24 +552,8 @@  AcpiDbTestOneObject (
     if (ACPI_FAILURE (Status))
     {
         Status = AE_OK;
-        goto Exit;
-    }
-
-    switch (Node->Type)
-    {
-    case ACPI_TYPE_LOCAL_REGION_FIELD:
-
-        RegionObj = ObjDesc->Field.RegionObj;
-        AcpiOsPrintf (" (%s)",
-            AcpiUtGetRegionName (RegionObj->Region.SpaceId));
-
-        break;
-
-    default:
-        break;
     }
 
-Exit:
     AcpiOsPrintf ("\n");
     return (Status);
 }
@@ -639,7 +603,7 @@  AcpiDbTestIntegerType (
         return (Status);
     }
 
-    AcpiOsPrintf (" (%4.4X/%3.3X) %8.8X%8.8X",
+    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " %8.8X%8.8X",
         BitLength, ACPI_ROUND_BITS_UP_TO_BYTES (BitLength),
         ACPI_FORMAT_UINT64 (Temp1->Integer.Value));
 
@@ -761,8 +725,8 @@  AcpiDbTestBufferType (
 
     /* Emit a few bytes of the buffer */
 
-    AcpiOsPrintf (" (%4.4X/%3.3X)", BitLength, Temp1->Buffer.Length);
-    for (i = 0; ((i < 4) && (i < ByteLength)); i++)
+    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT, BitLength, Temp1->Buffer.Length);
+    for (i = 0; ((i < 8) && (i < ByteLength)); i++)
     {
         AcpiOsPrintf (" %2.2X", Temp1->Buffer.Pointer[i]);
     }
@@ -876,7 +840,7 @@  AcpiDbTestStringType (
         return (Status);
     }
 
-    AcpiOsPrintf (" (%4.4X/%3.3X) \"%s\"", (Temp1->String.Length * 8),
+    AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " \"%s\"", (Temp1->String.Length * 8),
         Temp1->String.Length, Temp1->String.Pointer);
 
     /* Write a new value */
@@ -966,12 +930,79 @@  AcpiDbTestPackageType (
         return (Status);
     }
 
-    AcpiOsPrintf (" %8.8X Elements", Temp1->Package.Count);
+    AcpiOsPrintf (" %.2X Elements", Temp1->Package.Count);
     AcpiOsFree (Temp1);
     return (Status);
 }
 
 
+/*******************************************************************************
+ *
+ * FUNCTION:    AcpiDbTestFieldUnitType
+ *
+ * PARAMETERS:  ObjDesc                 - A field unit object
+ *
+ * RETURN:      Status
+ *
+ * DESCRIPTION: Test read/write on a named field unit.
+ *
+ ******************************************************************************/
+
+static ACPI_STATUS
+AcpiDbTestFieldUnitType (
+    ACPI_OPERAND_OBJECT     *ObjDesc)
+{
+    ACPI_OPERAND_OBJECT     *RegionObj;
+    UINT32                  BitLength = 0;
+    UINT32                  ByteLength = 0;
+    ACPI_STATUS             Status = AE_OK;
+    ACPI_OPERAND_OBJECT     *RetBufferDesc;
+
+
+    /* Supported spaces are memory/io/pci_config */
+
+    RegionObj = ObjDesc->Field.RegionObj;
+    switch (RegionObj->Region.SpaceId)
+    {
+    case ACPI_ADR_SPACE_SYSTEM_MEMORY:
+    case ACPI_ADR_SPACE_SYSTEM_IO:
+    case ACPI_ADR_SPACE_PCI_CONFIG:
+
+        /* Need the interpreter to execute */
+
+        AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER);
+        AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE);
+
+        /* Exercise read-then-write */
+
+        Status = AcpiExReadDataFromField (NULL, ObjDesc, &RetBufferDesc);
+        if (Status == AE_OK)
+        {
+            AcpiExWriteDataToField (RetBufferDesc, ObjDesc, NULL);
+            AcpiUtRemoveReference (RetBufferDesc);
+        }
+
+        AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
+        AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER);
+
+        BitLength = ObjDesc->CommonField.BitLength;
+        ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength);
+
+        AcpiOsPrintf (ACPI_DEBUG_LENGTH_FORMAT " [%s]", BitLength,
+            ByteLength, AcpiUtGetRegionName (RegionObj->Region.SpaceId));
+        return (Status);
+
+    default:
+
+        AcpiOsPrintf (
+            "      %s address space is not supported in this command [%4.4s]",
+            AcpiUtGetRegionName (RegionObj->Region.SpaceId),
+            RegionObj->Region.Node->Name.Ascii);
+        return (AE_OK);
+    }
+}
+
+
 /*******************************************************************************
  *
  * FUNCTION:    AcpiDbReadFromObject
diff --git a/src/acpica/source/components/disassembler/dmbuffer.c b/src/acpica/source/components/disassembler/dmbuffer.c
index db56365d..a58ff2f5 100644
--- a/src/acpica/source/components/disassembler/dmbuffer.c
+++ b/src/acpica/source/components/disassembler/dmbuffer.c
@@ -1053,7 +1053,7 @@  AcpiDmGetHardwareIdType (
             }
         }
 
-        /* Mark this node as convertable to an EISA ID string */
+        /* Mark this node as convertible to an EISA ID string */
 
         Op->Common.DisasmOpcode = ACPI_DASM_EISAID;
         break;
diff --git a/src/acpica/source/components/disassembler/dmcstyle.c b/src/acpica/source/components/disassembler/dmcstyle.c
index c74d13dd..30ae3a5b 100644
--- a/src/acpica/source/components/disassembler/dmcstyle.c
+++ b/src/acpica/source/components/disassembler/dmcstyle.c
@@ -1075,7 +1075,7 @@  AcpiDmIsValidTarget (
  *
  * DESCRIPTION: Determine if the Target duplicates the operand, in order to
  *              detect if the expression can be converted to a compound
- *              assigment. (+=, *=, etc.)
+ *              assignment. (+=, *=, etc.)
  *
  ******************************************************************************/
 
@@ -1131,7 +1131,7 @@  AcpiDmIsTargetAnOperand (
         }
     }
 
-    /* Supress the duplicate operand at the top-level */
+    /* Suppress the duplicate operand at the top-level */
 
     if (TopLevel)
     {
diff --git a/src/acpica/source/components/disassembler/dmnames.c b/src/acpica/source/components/disassembler/dmnames.c
index 0866bdf2..bbff3e0a 100644
--- a/src/acpica/source/components/disassembler/dmnames.c
+++ b/src/acpica/source/components/disassembler/dmnames.c
@@ -232,7 +232,7 @@  AcpiDmDumpName (
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Diplay the pathname associated with a named object. Two
+ * DESCRIPTION: Display the pathname associated with a named object. Two
  *              versions. One searches the parse tree (for parser-only
  *              applications suchas AcpiDump), and the other searches the
  *              ACPI namespace (the parse tree is probably deleted)
diff --git a/src/acpica/source/components/disassembler/dmresrc.c b/src/acpica/source/components/disassembler/dmresrc.c
index 8deac42c..bb36b734 100644
--- a/src/acpica/source/components/disassembler/dmresrc.c
+++ b/src/acpica/source/components/disassembler/dmresrc.c
@@ -342,7 +342,7 @@  AcpiDmBitList (
  *
  * FUNCTION:    AcpiDmResourceTemplate
  *
- * PARAMETERS:  Info            - Curent parse tree walk info
+ * PARAMETERS:  Info            - Current parse tree walk info
  *              ByteData        - Pointer to the byte list data
  *              ByteCount       - Length of the byte list
  *
@@ -555,7 +555,7 @@  AcpiDmIsResourceTemplate (
 
     /*
      * Not a template if declared buffer length != actual length of the
-     * intialization byte list. Because the resource macros will create
+     * initialization byte list. Because the resource macros will create
      * a buffer of the exact required length (buffer length will be equal
      * to the actual length).
      *
diff --git a/src/acpica/source/components/disassembler/dmresrcs.c b/src/acpica/source/components/disassembler/dmresrcs.c
index baf24488..72bbc331 100644
--- a/src/acpica/source/components/disassembler/dmresrcs.c
+++ b/src/acpica/source/components/disassembler/dmresrcs.c
@@ -388,7 +388,7 @@  AcpiDmFixedIoDescriptor (
  *
  * RETURN:      None
  *
- * DESCRIPTION: Decode a Start Dependendent functions descriptor
+ * DESCRIPTION: Decode a Start Dependent functions descriptor
  *
  ******************************************************************************/
 
diff --git a/src/acpica/source/components/dispatcher/dsfield.c b/src/acpica/source/components/dispatcher/dsfield.c
index f54fcee6..cc0a271e 100644
--- a/src/acpica/source/components/dispatcher/dsfield.c
+++ b/src/acpica/source/components/dispatcher/dsfield.c
@@ -685,6 +685,12 @@  AcpiDsCreateField (
     Info.RegionNode = RegionNode;
 
     Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next);
+    if (Info.RegionNode->Type == ACPI_ADR_SPACE_PLATFORM_COMM &&
+        !(RegionNode->Object->Field.InternalPccBuffer
+        = ACPI_ALLOCATE_ZEROED(Info.RegionNode->Object->Region.Length)))
+    {
+        return_ACPI_STATUS (AE_NO_MEMORY);
+    }
     return_ACPI_STATUS (Status);
 }
 
diff --git a/src/acpica/source/components/dispatcher/dsopcode.c b/src/acpica/source/components/dispatcher/dsopcode.c
index 8b9a30aa..acf1ff4e 100644
--- a/src/acpica/source/components/dispatcher/dsopcode.c
+++ b/src/acpica/source/components/dispatcher/dsopcode.c
@@ -521,6 +521,7 @@  AcpiDsEvalRegionOperands (
     ACPI_OPERAND_OBJECT     *OperandDesc;
     ACPI_NAMESPACE_NODE     *Node;
     ACPI_PARSE_OBJECT       *NextOp;
+    ACPI_ADR_SPACE_TYPE     SpaceId;
 
 
     ACPI_FUNCTION_TRACE_PTR (DsEvalRegionOperands, Op);
@@ -530,11 +531,12 @@  AcpiDsEvalRegionOperands (
      * This is where we evaluate the address and length fields of the
      * OpRegion declaration
      */
-    Node =  Op->Common.Node;
+    Node = Op->Common.Node;
 
     /* NextOp points to the op that holds the SpaceID */
 
     NextOp = Op->Common.Value.Arg;
+    SpaceId = (ACPI_ADR_SPACE_TYPE) NextOp->Common.Value.Integer;
 
     /* NextOp points to address op */
 
@@ -572,6 +574,15 @@  AcpiDsEvalRegionOperands (
     ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value;
     AcpiUtRemoveReference (OperandDesc);
 
+    /* A zero-length operation region is unusable. Just warn */
+
+    if (!ObjDesc->Region.Length && (SpaceId < ACPI_NUM_PREDEFINED_REGIONS))
+    {
+        ACPI_WARNING ((AE_INFO,
+            "Operation Region [%4.4s] has zero length (SpaceId %X)",
+            Node->Name.Ascii, SpaceId));
+    }
+
     /*
      * Get the address and save it
      * (at top of stack - 1)
diff --git a/src/acpica/source/components/dispatcher/dswload2.c b/src/acpica/source/components/dispatcher/dswload2.c
index f2206748..3a9e374e 100644
--- a/src/acpica/source/components/dispatcher/dswload2.c
+++ b/src/acpica/source/components/dispatcher/dswload2.c
@@ -167,7 +167,7 @@ 
  * FUNCTION:    AcpiDsLoad2BeginOp
  *
  * PARAMETERS:  WalkState       - Current state of the parse tree walk
- *              OutOp           - Wher to return op if a new one is created
+ *              OutOp           - Where to return op if a new one is created
  *
  * RETURN:      Status
  *
diff --git a/src/acpica/source/components/events/evgpe.c b/src/acpica/source/components/events/evgpe.c
index 1dcd0fc7..f5ea992a 100644
--- a/src/acpica/source/components/events/evgpe.c
+++ b/src/acpica/source/components/events/evgpe.c
@@ -1012,7 +1012,7 @@  AcpiEvGpeDispatch (
             GpeDevice, GpeNumber,
             GpeEventInfo->Dispatch.Handler->Context);
 
-        /* If requested, clear (if level-triggered) and reenable the GPE */
+        /* If requested, clear (if level-triggered) and re-enable the GPE */
 
         if (ReturnValue & ACPI_REENABLE_GPE)
         {
diff --git a/src/acpica/source/components/events/evregion.c b/src/acpica/source/components/events/evregion.c
index 2b778065..6f6d7ccc 100644
--- a/src/acpica/source/components/events/evregion.c
+++ b/src/acpica/source/components/events/evregion.c
@@ -409,7 +409,7 @@  AcpiEvAddressSpaceDispatch (
         /*
          * For handlers other than the default (supplied) handlers, we must
          * exit the interpreter because the handler *might* block -- we don't
-         * know what it will do, so we can't hold the lock on the intepreter.
+         * know what it will do, so we can't hold the lock on the interpreter.
          */
         AcpiExExitInterpreter();
     }
diff --git a/src/acpica/source/components/events/evrgnini.c b/src/acpica/source/components/events/evrgnini.c
index a5234a21..718e2e87 100644
--- a/src/acpica/source/components/events/evrgnini.c
+++ b/src/acpica/source/components/events/evrgnini.c
@@ -724,24 +724,6 @@  AcpiEvInitializeRegion (
                 HandlerObj = ObjDesc->CommonNotify.Handler;
                 break;
 
-            case ACPI_TYPE_METHOD:
-                /*
-                 * If we are executing module level code, the original
-                 * Node's object was replaced by this Method object and we
-                 * saved the handler in the method object.
-                 *
-                 * Note: Only used for the legacy MLC support. Will
-                 * be removed in the future.
-                 *
-                 * See AcpiNsExecModuleCode
-                 */
-                if (!AcpiGbl_ExecuteTablesAsMethods &&
-                    ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)
-                {
-                    HandlerObj = ObjDesc->Method.Dispatch.Handler;
-                }
-                break;
-
             default:
 
                 /* Ignore other objects */
diff --git a/src/acpica/source/components/events/evxfgpe.c b/src/acpica/source/components/events/evxfgpe.c
index 546faa6e..52061db1 100644
--- a/src/acpica/source/components/events/evxfgpe.c
+++ b/src/acpica/source/components/events/evxfgpe.c
@@ -885,9 +885,9 @@  ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus)
  *
  * RETURN:      Status
  *
- * DESCRIPTION: Clear and conditionally reenable a GPE. This completes the GPE
+ * DESCRIPTION: Clear and conditionally re-enable a GPE. This completes the GPE
  *              processing. Intended for use by asynchronous host-installed
- *              GPE handlers. The GPE is only reenabled if the EnableForRun bit
+ *              GPE handlers. The GPE is only re-enabled if the EnableForRun bit
  *              is set in the GPE info.
  *
  ******************************************************************************/
diff --git a/src/acpica/source/components/executer/exconvrt.c b/src/acpica/source/components/executer/exconvrt.c
index 7a15387f..c4fda4c1 100644
--- a/src/acpica/source/components/executer/exconvrt.c
+++ b/src/acpica/source/components/executer/exconvrt.c
@@ -708,7 +708,7 @@  AcpiExConvertToString (
         {
             if (Base == 16)
             {
-                /* Emit 0x prefix for explict/implicit hex conversion */
+                /* Emit 0x prefix for explicit/implicit hex conversion */
 
                 *NewBuf++ = '0';
                 *NewBuf++ = 'x';
diff --git a/src/acpica/source/components/executer/exfield.c b/src/acpica/source/components/executer/exfield.c
index 5ef9bd31..b35e6a4e 100644
--- a/src/acpica/source/components/executer/exfield.c
+++ b/src/acpica/source/components/executer/exfield.c
@@ -187,6 +187,17 @@  const UINT8     AcpiProtocolLengths[] =
     0xFF                        /* F - ATTRIB_RAW_PROCESS_BYTES */
 };
 
+#define PCC_MASTER_SUBSPACE     3
+
+/*
+ * The following macros determine a given offset is a COMD field.
+ * According to the specification, generic subspaces (types 0-2) contains a
+ * 2-byte COMD field at offset 4 and master subspaces (type 3) contains a 4-byte
+ * COMD field starting at offset 12.
+ */
+#define GENERIC_SUBSPACE_COMMAND(a)     (4 == a || a == 5)
+#define MASTER_SUBSPACE_COMMAND(a)      (12 <= a && a <= 15)
+
 
 /*******************************************************************************
  *
@@ -337,6 +348,23 @@  AcpiExReadDataFromField (
         Status = AcpiExReadGpio (ObjDesc, Buffer);
         goto Exit;
     }
+    else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
+        (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM))
+    {
+        /*
+         * Reading from a PCC field unit does not require the handler because
+         * it only requires reading from the InternalPccBuffer.
+         */
+        ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
+            "PCC FieldRead bits %u\n", ObjDesc->Field.BitLength));
+
+        memcpy (Buffer, ObjDesc->Field.RegionObj->Field.InternalPccBuffer +
+        ObjDesc->Field.BaseByteOffset, (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (
+            ObjDesc->Field.BitLength));
+
+        *RetBufferDesc = BufferDesc;
+        return AE_OK;
+    }
 
     ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
         "FieldRead [TO]:   Obj %p, Type %X, Buf %p, ByteLen %X\n",
@@ -393,6 +421,7 @@  AcpiExWriteDataToField (
 {
     ACPI_STATUS             Status;
     UINT32                  BufferLength;
+    UINT32                  DataLength;
     void                    *Buffer;
 
 
@@ -439,6 +468,39 @@  AcpiExWriteDataToField (
         Status = AcpiExWriteSerialBus (SourceDesc, ObjDesc, ResultDesc);
         return_ACPI_STATUS (Status);
     }
+    else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) &&
+             (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_COMM))
+    {
+        /*
+         * According to the spec a write to the COMD field will invoke the
+         * region handler. Otherwise, write to the PccInternal buffer. This
+         * implementation will use the offsets specified rather than the name
+         * of the field. This is considered safer because some firmware tools
+         * are known to obfiscate named objects.
+         */
+        DataLength = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (
+            ObjDesc->Field.BitLength);
+        memcpy (ObjDesc->Field.RegionObj->Field.InternalPccBuffer +
+            ObjDesc->Field.BaseByteOffset,
+            SourceDesc->Buffer.Pointer, DataLength);
+
+        if ((ObjDesc->Field.RegionObj->Region.Address == PCC_MASTER_SUBSPACE &&
+           MASTER_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset)) ||
+           GENERIC_SUBSPACE_COMMAND (ObjDesc->Field.BaseByteOffset))
+        {
+            /* Perform the write */
+
+            ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD,
+                "PCC COMD field has been written. Invoking PCC handler now.\n"));
+
+            Status = AcpiExAccessRegion (
+                ObjDesc, 0, (UINT64 *) ObjDesc->Field.RegionObj->Field.InternalPccBuffer,
+                ACPI_WRITE);
+            return_ACPI_STATUS (Status);
+        }
+        return (AE_OK);
+    }
+
 
     /* Get a pointer to the data to be written */
 
diff --git a/src/acpica/source/components/executer/exserial.c b/src/acpica/source/components/executer/exserial.c
index 0b05fbce..07b42880 100644
--- a/src/acpica/source/components/executer/exserial.c
+++ b/src/acpica/source/components/executer/exserial.c
@@ -165,7 +165,7 @@ 
  * FUNCTION:    AcpiExReadGpio
  *
  * PARAMETERS:  ObjDesc             - The named field to read
- *              Buffer              - Where the return data is returnd
+ *              Buffer              - Where the return data is returned
  *
  * RETURN:      Status
  *
diff --git a/src/acpica/source/components/executer/exutils.c b/src/acpica/source/components/executer/exutils.c
index 795c9442..653777b7 100644
--- a/src/acpica/source/components/executer/exutils.c
+++ b/src/acpica/source/components/executer/exutils.c
@@ -325,7 +325,7 @@  AcpiExTruncateFor32bitTable (
  * RETURN:      None
  *
  * DESCRIPTION: Obtain the ACPI hardware Global Lock, only if the field
- *              flags specifiy that it is to be obtained before field access.
+ *              flags specify that it is to be obtained before field access.
  *
  ******************************************************************************/
 
diff --git a/src/acpica/source/components/namespace/nsload.c b/src/acpica/source/components/namespace/nsload.c
index fc93604d..f5a82347 100644
--- a/src/acpica/source/components/namespace/nsload.c
+++ b/src/acpica/source/components/namespace/nsload.c
@@ -233,7 +233,7 @@  AcpiNsLoadTable (
         /*
          * On error, delete any namespace objects created by this table.
          * We cannot initialize these objects, so delete them. There are
-         * a couple of expecially bad cases:
+         * a couple of especially bad cases:
          * AE_ALREADY_EXISTS - namespace collision.
          * AE_NOT_FOUND - the target of a Scope operator does not
          * exist. This target of Scope must already exist in the
diff --git a/src/acpica/source/components/namespace/nsparse.c b/src/acpica/source/components/namespace/nsparse.c
index 1aa568cb..e559223a 100644
--- a/src/acpica/source/components/namespace/nsparse.c
+++ b/src/acpica/source/components/namespace/nsparse.c
@@ -422,66 +422,18 @@  AcpiNsParseTable (
     ACPI_FUNCTION_TRACE (NsParseTable);
 
 
-    if (AcpiGbl_ExecuteTablesAsMethods)
-    {
-        /*
-         * This case executes the AML table as one large control method.
-         * The point of this is to execute any module-level code in-place
-         * as the table is parsed. Some AML code depends on this behavior.
-         *
-         * It is a run-time option at this time, but will eventually become
-         * the default.
-         *
-         * Note: This causes the table to only have a single-pass parse.
-         * However, this is compatible with other ACPI implementations.
-         */
-        ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
-            "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
-
-        Status = AcpiNsExecuteTable (TableIndex, StartNode);
-        if (ACPI_FAILURE (Status))
-        {
-            return_ACPI_STATUS (Status);
-        }
-    }
-    else
-    {
-        /*
-         * AML Parse, pass 1
-         *
-         * In this pass, we load most of the namespace. Control methods
-         * are not parsed until later. A parse tree is not created.
-         * Instead, each Parser Op subtree is deleted when it is finished.
-         * This saves a great deal of memory, and allows a small cache of
-         * parse objects to service the entire parse. The second pass of
-         * the parse then performs another complete parse of the AML.
-         */
-        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n"));
-
-        Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1,
-            TableIndex, StartNode);
-        if (ACPI_FAILURE (Status))
-        {
-            return_ACPI_STATUS (Status);
-        }
+    /*
+     * Executes the AML table as one large control method.
+     * The point of this is to execute any module-level code in-place
+     * as the table is parsed. Some AML code depends on this behavior.
+     *
+     * Note: This causes the table to only have a single-pass parse.
+     * However, this is compatible with other ACPI implementations.
+     */
+    ACPI_DEBUG_PRINT_RAW ((ACPI_DB_PARSE,
+        "%s: **** Start table execution pass\n", ACPI_GET_FUNCTION_NAME));
 
-        /*
-         * AML Parse, pass 2
-         *
-         * In this pass, we resolve forward references and other things
-         * that could not be completed during the first pass.
-         * Another complete parse of the AML is performed, but the
-         * overhead of this is compensated for by the fact that the
-         * parse objects are all cached.
-         */
-        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n"));
-        Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2,
-            TableIndex, StartNode);
-        if (ACPI_FAILURE (Status))
-        {
-            return_ACPI_STATUS (Status);
-        }
-    }
+    Status = AcpiNsExecuteTable (TableIndex, StartNode);
 
     return_ACPI_STATUS (Status);
 }
diff --git a/src/acpica/source/components/namespace/nsutils.c b/src/acpica/source/components/namespace/nsutils.c
index 78ba42ab..4a9f0313 100644
--- a/src/acpica/source/components/namespace/nsutils.c
+++ b/src/acpica/source/components/namespace/nsutils.c
@@ -561,7 +561,7 @@  AcpiNsInternalizeName (
  *
  * FUNCTION:    AcpiNsExternalizeName
  *
- * PARAMETERS:  InternalNameLength  - Lenth of the internal name below
+ * PARAMETERS:  InternalNameLength  - Length of the internal name below
  *              InternalName        - Internal representation of name
  *              ConvertedNameLength - Where the length is returned
  *              ConvertedName       - Where the resulting external name
diff --git a/src/acpica/source/components/parser/psloop.c b/src/acpica/source/components/parser/psloop.c
index 127850a6..7398c3df 100644
--- a/src/acpica/source/components/parser/psloop.c
+++ b/src/acpica/source/components/parser/psloop.c
@@ -178,13 +178,6 @@  AcpiPsGetArguments (
     UINT8                   *AmlOpStart,
     ACPI_PARSE_OBJECT       *Op);
 
-static void
-AcpiPsLinkModuleCode (
-    ACPI_PARSE_OBJECT       *ParentOp,
-    UINT8                   *AmlStart,
-    UINT32                  AmlLength,
-    ACPI_OWNER_ID           OwnerId);
-
 
 /*******************************************************************************
  *
@@ -208,7 +201,6 @@  AcpiPsGetArguments (
 {
     ACPI_STATUS             Status = AE_OK;
     ACPI_PARSE_OBJECT       *Arg = NULL;
-    const ACPI_OPCODE_INFO  *OpInfo;
 
 
     ACPI_FUNCTION_TRACE_PTR (PsGetArguments, WalkState);
@@ -287,82 +279,6 @@  AcpiPsGetArguments (
             "Final argument count: %8.8X pass %u\n",
             WalkState->ArgCount, WalkState->PassNumber));
 
-        /*
-         * This case handles the legacy option that groups all module-level
-         * code blocks together and defers execution until all of the tables
-         * are loaded. Execute all of these blocks at this time.
-         * Execute any module-level code that was detected during the table
-         * load phase.
-         *
-         * Note: this option is deprecated and will be eliminated in the
-         * future. Use of this option can cause problems with AML code that
-         * depends upon in-order immediate execution of module-level code.
-         */
-        if (!AcpiGbl_ExecuteTablesAsMethods &&
-            (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2) &&
-            ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) == 0))
-        {
-            /*
-             * We want to skip If/Else/While constructs during Pass1 because we
-             * want to actually conditionally execute the code during Pass2.
-             *
-             * Except for disassembly, where we always want to walk the
-             * If/Else/While packages
-             */
-            switch (Op->Common.AmlOpcode)
-            {
-            case AML_IF_OP:
-            case AML_ELSE_OP:
-            case AML_WHILE_OP:
-                /*
-                 * Currently supported module-level opcodes are:
-                 * IF/ELSE/WHILE. These appear to be the most common,
-                 * and easiest to support since they open an AML
-                 * package.
-                 */
-                if (WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1)
-                {
-                    AcpiPsLinkModuleCode (Op->Common.Parent, AmlOpStart,
-                        (UINT32) (WalkState->ParserState.PkgEnd - AmlOpStart),
-                        WalkState->OwnerId);
-                }
-
-                ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
-                    "Pass1: Skipping an If/Else/While body\n"));
-
-                /* Skip body of if/else/while in pass 1 */
-
-                WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd;
-                WalkState->ArgCount = 0;
-                break;
-
-            default:
-                /*
-                 * Check for an unsupported executable opcode at module
-                 * level. We must be in PASS1, the parent must be a SCOPE,
-                 * The opcode class must be EXECUTE, and the opcode must
-                 * not be an argument to another opcode.
-                 */
-                if ((WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1) &&
-                    (Op->Common.Parent->Common.AmlOpcode == AML_SCOPE_OP))
-                {
-                    OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode);
-                    if ((OpInfo->Class == AML_CLASS_EXECUTE) &&
-                        (!Arg))
-                    {
-                        ACPI_WARNING ((AE_INFO,
-                            "Unsupported module-level executable opcode "
-                            "0x%.2X at table offset 0x%.4X",
-                            Op->Common.AmlOpcode,
-                            (UINT32) (ACPI_PTR_DIFF (AmlOpStart,
-                                WalkState->ParserState.AmlStart) +
-                                sizeof (ACPI_TABLE_HEADER))));
-                    }
-                }
-                break;
-            }
-        }
-
         /* Special processing for certain opcodes */
 
         switch (Op->Common.AmlOpcode)
@@ -434,117 +350,6 @@  AcpiPsGetArguments (
 }
 
 
-/*******************************************************************************
- *
- * FUNCTION:    AcpiPsLinkModuleCode
- *
- * PARAMETERS:  ParentOp            - Parent parser op
- *              AmlStart            - Pointer to the AML
- *              AmlLength           - Length of executable AML
- *              OwnerId             - OwnerId of module level code
- *
- * RETURN:      None.
- *
- * DESCRIPTION: Wrap the module-level code with a method object and link the
- *              object to the global list. Note, the mutex field of the method
- *              object is used to link multiple module-level code objects.
- *
- * NOTE: In this legacy option, each block of detected executable AML
- * code that is outside of any control method is wrapped with a temporary
- * control method object and placed on a global list below.
- *
- * This function executes the module-level code for all tables only after
- * all of the tables have been loaded. It is a legacy option and is
- * not compatible with other ACPI implementations. See AcpiNsLoadTable.
- *
- * This function will be removed when the legacy option is removed.
- *
- ******************************************************************************/
-
-static void
-AcpiPsLinkModuleCode (
-    ACPI_PARSE_OBJECT       *ParentOp,
-    UINT8                   *AmlStart,
-    UINT32                  AmlLength,
-    ACPI_OWNER_ID           OwnerId)
-{
-    ACPI_OPERAND_OBJECT     *Prev;
-    ACPI_OPERAND_OBJECT     *Next;
-    ACPI_OPERAND_OBJECT     *MethodObj;
-    ACPI_NAMESPACE_NODE     *ParentNode;
-
-
-    ACPI_FUNCTION_TRACE (PsLinkModuleCode);
-
-
-    /* Get the tail of the list */
-
-    Prev = Next = AcpiGbl_ModuleCodeList;
-    while (Next)
-    {
-        Prev = Next;
-        Next = Next->Method.Mutex;
-    }
-
-    /*
-     * Insert the module level code into the list. Merge it if it is
-     * adjacent to the previous element.
-     */
-    if (!Prev ||
-       ((Prev->Method.AmlStart + Prev->Method.AmlLength) != AmlStart))
-    {
-        /* Create, initialize, and link a new temporary method object */
-
-        MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD);
-        if (!MethodObj)
-        {
-            return_VOID;
-        }
-
-        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
-            "Create/Link new code block: %p\n", MethodObj));
-
-        if (ParentOp->Common.Node)
-        {
-            ParentNode = ParentOp->Common.Node;
-        }
-        else
-        {
-            ParentNode = AcpiGbl_RootNode;
-        }
-
-        MethodObj->Method.AmlStart = AmlStart;
-        MethodObj->Method.AmlLength = AmlLength;
-        MethodObj->Method.OwnerId = OwnerId;
-        MethodObj->Method.InfoFlags |= ACPI_METHOD_MODULE_LEVEL;
-
-        /*
-         * Save the parent node in NextObject. This is cheating, but we
-         * don't want to expand the method object.
-         */
-        MethodObj->Method.NextObject =
-            ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParentNode);
-
-        if (!Prev)
-        {
-            AcpiGbl_ModuleCodeList = MethodObj;
-        }
-        else
-        {
-            Prev->Method.Mutex = MethodObj;
-        }
-    }
-    else
-    {
-        ACPI_DEBUG_PRINT ((ACPI_DB_PARSE,
-            "Appending to existing code block: %p\n", Prev));
-
-        Prev->Method.AmlLength += AmlLength;
-    }
-
-    return_VOID;
-}
-
 /*******************************************************************************
  *
  * FUNCTION:    AcpiPsParseLoop
diff --git a/src/acpica/source/components/parser/psparse.c b/src/acpica/source/components/parser/psparse.c
index db3bbaba..68e83aa8 100644
--- a/src/acpica/source/components/parser/psparse.c
+++ b/src/acpica/source/components/parser/psparse.c
@@ -680,12 +680,12 @@  AcpiPsParseAml (
             if (Status == AE_ABORT_METHOD)
             {
                 AcpiNsPrintNodePathname (
-                    WalkState->MethodNode, "Method aborted:");
+                    WalkState->MethodNode, "Aborting method");
                 AcpiOsPrintf ("\n");
             }
             else
             {
-                ACPI_ERROR_METHOD ("Method parse/execution failed",
+                ACPI_ERROR_METHOD ("Aborting method",
                     WalkState->MethodNode, NULL, Status);
             }
             AcpiExEnterInterpreter ();
diff --git a/src/acpica/source/components/resources/rsdumpinfo.c b/src/acpica/source/components/resources/rsdumpinfo.c
index c807e285..d55bf63b 100644
--- a/src/acpica/source/components/resources/rsdumpinfo.c
+++ b/src/acpica/source/components/resources/rsdumpinfo.c
@@ -180,7 +180,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpIrq[7] =
     {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.DescriptorLength),             "Descriptor Length",        NULL},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering),                   "Triggering",               AcpiGbl_HeDecode},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity),                     "Polarity",                 AcpiGbl_LlDecode},
-    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable),                     "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Shareable),                    "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_UINT8 ,   ACPI_RSD_OFFSET (Irq.InterruptCount),               "Interrupt Count",          NULL},
     {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]),                "Interrupt List",           NULL}
 };
@@ -324,7 +324,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpExtIrq[8] =
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer),     "Type",                     AcpiGbl_ConsumeDecode},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering),           "Triggering",               AcpiGbl_HeDecode},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity),             "Polarity",                 AcpiGbl_LlDecode},
-    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Shareable),            "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource),       NULL,                       NULL},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount),       "Interrupt Count",          NULL},
     {ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]),        "Interrupt List",           NULL}
@@ -347,7 +347,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpGpio[16] =
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Gpio.ConnectionType),              "ConnectionType",           AcpiGbl_CtDecode},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.ProducerConsumer),            "ProducerConsumer",         AcpiGbl_ConsumeDecode},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (Gpio.PinConfig),                   "PinConfig",                AcpiGbl_PpcDecode},
-    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Sharable),                    "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Shareable),                   "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.IoRestriction),               "IoRestriction",            AcpiGbl_IorDecode},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.Triggering),                  "Triggering",               AcpiGbl_HeDecode},
     {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Polarity),                    "Polarity",                 AcpiGbl_LlDecode},
@@ -365,7 +365,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpPinFunction[10] =
     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinFunction),        "PinFunction",              NULL},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinFunction.RevisionId),           "RevisionId",               NULL},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinFunction.PinConfig),            "PinConfig",                AcpiGbl_PpcDecode},
-    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinFunction.Sharable),             "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinFunction.Shareable),            "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinFunction.FunctionNumber),       "FunctionNumber",           NULL},
     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinFunction.ResourceSource),       "ResourceSource",           NULL},
     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinFunction.PinTableLength),       "PinTableLength",           NULL},
@@ -379,7 +379,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpPinConfig[11] =
     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinConfig),          "PinConfig",                NULL},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinConfig.RevisionId),             "RevisionId",               NULL},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.ProducerConsumer),       "ProducerConsumer",         AcpiGbl_ConsumeDecode},
-    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.Sharable),               "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinConfig.Shareable),              "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinConfig.PinConfigType),          "PinConfigType",            NULL},
     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (PinConfig.PinConfigValue),         "PinConfigValue",           NULL},
     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinConfig.ResourceSource),         "ResourceSource",           NULL},
@@ -406,7 +406,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpPinGroupFunction[9] =
     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinGroupFunction),   "PinGroupFunction",         NULL},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupFunction.RevisionId),      "RevisionId",               NULL},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.ProducerConsumer), "ProducerConsumer",        AcpiGbl_ConsumeDecode},
-    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.Sharable),        "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupFunction.Shareable),       "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_UINT16,   ACPI_RSD_OFFSET (PinGroupFunction.FunctionNumber),  "FunctionNumber",           NULL},
     {ACPI_RSD_SOURCE_LABEL, ACPI_RSD_OFFSET (PinGroupFunction.ResourceSourceLabel), "ResourceSourceLabel", NULL},
     {ACPI_RSD_SOURCE,   ACPI_RSD_OFFSET (PinGroupFunction.ResourceSource),  "ResourceSource",           NULL},
@@ -419,7 +419,7 @@  ACPI_RSDUMP_INFO        AcpiRsDumpPinGroupConfig[10] =
     {ACPI_RSD_TITLE,    ACPI_RSD_TABLE_SIZE (AcpiRsDumpPinGroupConfig),     "PinGroupConfig",           NULL},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupConfig.RevisionId),        "RevisionId",               NULL},
     {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.ProducerConsumer),  "ProducerConsumer",         AcpiGbl_ConsumeDecode},
-    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.Sharable),          "Sharing",                  AcpiGbl_ShrDecode},
+    {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (PinGroupConfig.Shareable),         "Sharing",                  AcpiGbl_ShrDecode},
     {ACPI_RSD_UINT8,    ACPI_RSD_OFFSET (PinGroupConfig.PinConfigType),     "PinConfigType",            NULL},
     {ACPI_RSD_UINT32,   ACPI_RSD_OFFSET (PinGroupConfig.PinConfigValue),    "PinConfigValue",           NULL},
     {ACPI_RSD_SOURCE_LABEL, ACPI_RSD_OFFSET (PinGroupConfig.ResourceSourceLabel), "ResourceSourceLabel", NULL},
diff --git a/src/acpica/source/components/resources/rsirq.c b/src/acpica/source/components/resources/rsirq.c
index 70ae3a1d..d2f3cfbc 100644
--- a/src/acpica/source/components/resources/rsirq.c
+++ b/src/acpica/source/components/resources/rsirq.c
@@ -201,7 +201,7 @@  ACPI_RSCONVERT_INFO     AcpiRsGetIrq[9] =
                         AML_OFFSET (Irq.Flags),
                         3},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Shareable),
                         AML_OFFSET (Irq.Flags),
                         4},
 
@@ -241,7 +241,7 @@  ACPI_RSCONVERT_INFO     AcpiRsSetIrq[14] =
                         AML_OFFSET (Irq.Flags),
                         3},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Shareable),
                         AML_OFFSET (Irq.Flags),
                         4},
 
@@ -288,7 +288,7 @@  ACPI_RSCONVERT_INFO     AcpiRsSetIrq[14] =
                         ACPI_ACTIVE_HIGH},
 
     {ACPI_RSC_EXIT_NE,  ACPI_RSC_COMPARE_VALUE,
-                        ACPI_RS_OFFSET (Data.Irq.Sharable),
+                        ACPI_RS_OFFSET (Data.Irq.Shareable),
                         ACPI_EXCLUSIVE},
 
     /* We can optimize to a 2-byte IrqNoFlags() descriptor */
@@ -329,7 +329,7 @@  ACPI_RSCONVERT_INFO     AcpiRsConvertExtIrq[10] =
                         AML_OFFSET (ExtendedIrq.Flags),
                         2},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Shareable),
                         AML_OFFSET (ExtendedIrq.Flags),
                         3},
 
diff --git a/src/acpica/source/components/resources/rsserial.c b/src/acpica/source/components/resources/rsserial.c
index f543f439..eaed2a37 100644
--- a/src/acpica/source/components/resources/rsserial.c
+++ b/src/acpica/source/components/resources/rsserial.c
@@ -186,7 +186,7 @@  ACPI_RSCONVERT_INFO     AcpiRsConvertGpio[18] =
                         AML_OFFSET (Gpio.Flags),
                         0},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Shareable),
                         AML_OFFSET (Gpio.IntFlags),
                         3},
 
@@ -274,7 +274,7 @@  ACPI_RSCONVERT_INFO     AcpiRsConvertPinFunction[13] =
                         AML_OFFSET (PinFunction.RevisionId),
                         1},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinFunction.Shareable),
                         AML_OFFSET (PinFunction.Flags),
                         0},
 
@@ -639,7 +639,7 @@  ACPI_RSCONVERT_INFO     AcpiRsConvertPinConfig[14] =
                         AML_OFFSET (PinConfig.RevisionId),
                         1},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinConfig.Shareable),
                         AML_OFFSET (PinConfig.Flags),
                         0},
 
@@ -775,7 +775,7 @@  ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupFunction[13] =
                         AML_OFFSET (PinGroupFunction.RevisionId),
                         1},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupFunction.Shareable),
                         AML_OFFSET (PinGroupFunction.Flags),
                         0},
 
@@ -842,7 +842,7 @@  ACPI_RSCONVERT_INFO     AcpiRsConvertPinGroupConfig[14] =
                         AML_OFFSET (PinGroupConfig.RevisionId),
                         1},
 
-    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Sharable),
+    {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.PinGroupConfig.Shareable),
                         AML_OFFSET (PinGroupConfig.Flags),
                         0},
 
diff --git a/src/acpica/source/components/tables/tbfadt.c b/src/acpica/source/components/tables/tbfadt.c
index 9691b2cd..aad5a626 100644
--- a/src/acpica/source/components/tables/tbfadt.c
+++ b/src/acpica/source/components/tables/tbfadt.c
@@ -740,7 +740,7 @@  AcpiTbConvertFadt (
                  * 64-bit X length field.
                  * Note: If the legacy length field is > 0xFF bits, ignore
                  * this check. (GPE registers can be larger than the
-                 * 64-bit GAS structure can accomodate, 0xFF bits).
+                 * 64-bit GAS structure can accommodate, 0xFF bits).
                  */
                 if ((ACPI_MUL_8 (Length) <= ACPI_UINT8_MAX) &&
                     (Address64->BitWidth != ACPI_MUL_8 (Length)))
diff --git a/src/acpica/source/components/tables/tbxface.c b/src/acpica/source/components/tables/tbxface.c
index bc6eea30..097e535d 100644
--- a/src/acpica/source/components/tables/tbxface.c
+++ b/src/acpica/source/components/tables/tbxface.c
@@ -263,7 +263,7 @@  AcpiInitializeTables (
     /*
      * Get the root table (RSDT or XSDT) and extract all entries to the local
      * Root Table Array. This array contains the information of the RSDT/XSDT
-     * in a common, more useable format.
+     * in a common, more usable format.
      */
     Status = AcpiTbParseRootTable (RsdpAddress);
     return_ACPI_STATUS (Status);
@@ -334,7 +334,7 @@  AcpiReallocateRootTable (
     {
         /*
          * Now it's safe to do full table validation. We can do deferred
-         * table initilization here once the flag is set.
+         * table initialization here once the flag is set.
          */
         AcpiGbl_EnableTableValidation = TRUE;
         for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i)
diff --git a/src/acpica/source/components/tables/tbxfload.c b/src/acpica/source/components/tables/tbxfload.c
index a3168c5c..bda55ea2 100644
--- a/src/acpica/source/components/tables/tbxfload.c
+++ b/src/acpica/source/components/tables/tbxfload.c
@@ -219,25 +219,19 @@  AcpiLoadTables (
             "While loading namespace from ACPI tables"));
     }
 
-    if (AcpiGbl_ExecuteTablesAsMethods)
+    /*
+     * Initialize the objects in the namespace that remain uninitialized.
+     * This runs the executable AML that may be part of the declaration of
+     * these name objects:
+     *     OperationRegions, BufferFields, Buffers, and Packages.
+     *
+     */
+    Status = AcpiNsInitializeObjects ();
+    if (ACPI_SUCCESS (Status))
     {
-        /*
-         * If the module-level code support is enabled, initialize the objects
-         * in the namespace that remain uninitialized. This runs the executable
-         * AML that may be part of the declaration of these name objects:
-         *     OperationRegions, BufferFields, Buffers, and Packages.
-         *
-         * Note: The module-level code is optional at this time, but will
-         * become the default in the future.
-         */
-        Status = AcpiNsInitializeObjects ();
-        if (ACPI_FAILURE (Status))
-        {
-            return_ACPI_STATUS (Status);
-        }
+        AcpiGbl_NamespaceInitialized = TRUE;
     }
 
-    AcpiGbl_NamespaceInitialized = TRUE;
     return_ACPI_STATUS (Status);
 }
 
diff --git a/src/acpica/source/components/utilities/utdecode.c b/src/acpica/source/components/utilities/utdecode.c
index 5460de2a..e470dfc4 100644
--- a/src/acpica/source/components/utilities/utdecode.c
+++ b/src/acpica/source/components/utilities/utdecode.c
@@ -633,6 +633,7 @@  static const char           *AcpiGbl_GenericNotify[ACPI_GENERIC_NOTIFY_MAX + 1]
     /* 0C */ "Reserved (was previously Shutdown Request)",  /* Reserved in ACPI 6.0 */
     /* 0D */ "System Resource Affinity Update",
     /* 0E */ "Heterogeneous Memory Attributes Update"       /* ACPI 6.2 */
+    /* 0F */ "Error Disconnect Recover"                     /* ACPI 6.3 */
 };
 
 static const char           *AcpiGbl_DeviceNotify[5] =
@@ -669,14 +670,14 @@  AcpiUtGetNotifyName (
     ACPI_OBJECT_TYPE        Type)
 {
 
-    /* 00 - 0D are "common to all object types" (from ACPI Spec) */
+    /* 00 - 0F are "common to all object types" (from ACPI Spec) */
 
     if (NotifyValue <= ACPI_GENERIC_NOTIFY_MAX)
     {
         return (AcpiGbl_GenericNotify[NotifyValue]);
     }
 
-    /* 0E - 7F are reserved */
+    /* 10 - 7F are reserved */
 
     if (NotifyValue <= ACPI_MAX_SYS_NOTIFY)
     {
diff --git a/src/acpica/source/components/utilities/utdelete.c b/src/acpica/source/components/utilities/utdelete.c
index 3fbd0fd1..332e2dec 100644
--- a/src/acpica/source/components/utilities/utdelete.c
+++ b/src/acpica/source/components/utilities/utdelete.c
@@ -412,6 +412,11 @@  AcpiUtDeleteInternalObj (
 
             AcpiUtDeleteObjectDesc (SecondDesc);
         }
+        if (Object->Field.InternalPccBuffer)
+        {
+            ACPI_FREE(Object->Field.InternalPccBuffer);
+        }
+
         break;
 
     case ACPI_TYPE_BUFFER_FIELD:
diff --git a/src/acpica/source/components/utilities/uterror.c b/src/acpica/source/components/utilities/uterror.c
index 0d356e59..624c034c 100644
--- a/src/acpica/source/components/utilities/uterror.c
+++ b/src/acpica/source/components/utilities/uterror.c
@@ -353,19 +353,19 @@  AcpiUtPrefixedNamespaceError (
     case AE_ALREADY_EXISTS:
 
         AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
-        Message = "Failure creating";
+        Message = "Failure creating named object";
         break;
 
     case AE_NOT_FOUND:
 
         AcpiOsPrintf (ACPI_MSG_BIOS_ERROR);
-        Message = "Could not resolve";
+        Message = "Could not resolve symbol";
         break;
 
     default:
 
         AcpiOsPrintf (ACPI_MSG_ERROR);
-        Message = "Failure resolving";
+        Message = "Failure resolving symbol";
         break;
     }
 
@@ -500,7 +500,8 @@  AcpiUtMethodError (
     }
 
     AcpiNsPrintNodePathname (Node, Message);
-    AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus));
+    AcpiOsPrintf (" due to previous error (%s)",
+        AcpiFormatException (MethodStatus));
 
     ACPI_MSG_SUFFIX;
     ACPI_MSG_REDIRECT_END;
diff --git a/src/acpica/source/include/acconfig.h b/src/acpica/source/include/acconfig.h
index 3706e27e..e93cfe1e 100644
--- a/src/acpica/source/include/acconfig.h
+++ b/src/acpica/source/include/acconfig.h
@@ -286,7 +286,7 @@ 
 
 /*
  * Maximal number of elements the Result Stack can contain,
- * it may be an arbitray value not exceeding the types of
+ * it may be an arbitrary value not exceeding the types of
  * ResultSize and ResultCount (now UINT8).
  */
 #define ACPI_RESULTS_OBJ_NUM_MAX        255
diff --git a/src/acpica/source/include/acdebug.h b/src/acpica/source/include/acdebug.h
index f3c1874a..4e43bbee 100644
--- a/src/acpica/source/include/acdebug.h
+++ b/src/acpica/source/include/acdebug.h
@@ -159,7 +159,8 @@ 
 #endif
 
 
-#define ACPI_DEBUG_BUFFER_SIZE  0x4000      /* 16K buffer for return objects */
+#define ACPI_DEBUG_BUFFER_SIZE      0x4000      /* 16K buffer for return objects */
+#define ACPI_DEBUG_LENGTH_FORMAT    " (%.4X bits, %.3X bytes)"
 
 typedef struct acpi_db_command_info
 {
diff --git a/src/acpica/source/include/acdisasm.h b/src/acpica/source/include/acdisasm.h
index 0f52e7db..fa0aebe2 100644
--- a/src/acpica/source/include/acdisasm.h
+++ b/src/acpica/source/include/acdisasm.h
@@ -409,6 +409,7 @@  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoFpdt1[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGas[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtHdr[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdtEl2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt0a[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoGtdt1[];
@@ -553,6 +554,7 @@  extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat1[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat2[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat3[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat4[];
+extern ACPI_DMTABLE_INFO        AcpiDmTableInfoSrat5[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStao[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoStaoStr[];
 extern ACPI_DMTABLE_INFO        AcpiDmTableInfoTcpaHdr[];
diff --git a/src/acpica/source/include/acexcep.h b/src/acpica/source/include/acexcep.h
index 12b2a5f2..1c9a49d9 100644
--- a/src/acpica/source/include/acexcep.h
+++ b/src/acpica/source/include/acexcep.h
@@ -434,7 +434,7 @@  static const ACPI_EXCEPTION_INFO    AcpiGbl_ExceptionNames_Aml[] =
     EXCEP_TXT ("AE_AML_DIVIDE_BY_ZERO",         "During execution of AML Divide operator"),
     EXCEP_TXT ("AE_AML_BAD_NAME",               "An ACPI name contains invalid character(s)"),
     EXCEP_TXT ("AE_AML_NAME_NOT_FOUND",         "Could not resolve a named reference"),
-    EXCEP_TXT ("AE_AML_INTERNAL",               "An internal error within the interprete"),
+    EXCEP_TXT ("AE_AML_INTERNAL",               "An internal error within the interpreter"),
     EXCEP_TXT ("AE_AML_INVALID_SPACE_ID",       "An Operation Region SpaceID is invalid"),
     EXCEP_TXT ("AE_AML_STRING_LIMIT",           "String is longer than 200 characters"),
     EXCEP_TXT ("AE_AML_NO_RETURN_VALUE",        "A method did not return a required value"),
diff --git a/src/acpica/source/include/aclocal.h b/src/acpica/source/include/aclocal.h
index bd27374c..b5c4aa02 100644
--- a/src/acpica/source/include/aclocal.h
+++ b/src/acpica/source/include/aclocal.h
@@ -1105,7 +1105,7 @@  typedef struct acpi_comment_addr_node
 
 /*
  * File node - used for "Include" operator file stack and
- * depdendency tree for the -ca option
+ * dependency tree for the -ca option
  */
 typedef struct acpi_file_node
 {
diff --git a/src/acpica/source/include/acmacros.h b/src/acpica/source/include/acmacros.h
index 6046030d..340ef725 100644
--- a/src/acpica/source/include/acmacros.h
+++ b/src/acpica/source/include/acmacros.h
@@ -610,7 +610,7 @@ 
 
 
 /*
- * Macors used for the ASL-/ASL+ converter utility
+ * Macros used for the ASL-/ASL+ converter utility
  */
 #ifdef ACPI_ASL_COMPILER
 
diff --git a/src/acpica/source/include/acobject.h b/src/acpica/source/include/acobject.h
index e345ca34..b9b30200 100644
--- a/src/acpica/source/include/acobject.h
+++ b/src/acpica/source/include/acobject.h
@@ -453,6 +453,7 @@  typedef struct acpi_object_region_field
     union acpi_operand_object       *RegionObj;         /* Containing OpRegion object */
     UINT8                           *ResourceBuffer;    /* ResourceTemplate for serial regions/fields */
     UINT16                          PinNumberIndex;     /* Index relative to previous Connection/Template */
+    UINT8                           *InternalPccBuffer; /* Internal buffer for fields associated with PCC */
 
 } ACPI_OBJECT_REGION_FIELD;
 
diff --git a/src/acpica/source/include/acpixf.h b/src/acpica/source/include/acpixf.h
index c57be658..ad653f0e 100644
--- a/src/acpica/source/include/acpixf.h
+++ b/src/acpica/source/include/acpixf.h
@@ -154,7 +154,7 @@ 
 
 /* Current ACPICA subsystem version in YYYYMMDD format */
 
-#define ACPI_CA_VERSION                 0x20190108
+#define ACPI_CA_VERSION                 0x20190215
 
 #include "acconfig.h"
 #include "actypes.h"
@@ -300,14 +300,6 @@  ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_CopyDsdtLocally, FALSE);
  */
 ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_DoNotUseXsdt, FALSE);
 
-/*
- * Optionally support module level code by parsing an entire table as
- * a method as it is loaded. Default is TRUE.
- * NOTE, this is essentially obsolete and will be removed soon
- * (01/2018).
- */
-ACPI_INIT_GLOBAL (UINT8,            AcpiGbl_ExecuteTablesAsMethods, TRUE);
-
 /*
  * Optionally use 32-bit FADT addresses if and when there is a conflict
  * (address mismatch) between the 32-bit and 64-bit versions of the
diff --git a/src/acpica/source/include/acpredef.h b/src/acpica/source/include/acpredef.h
index 11c6b6a4..8bdbbf99 100644
--- a/src/acpica/source/include/acpredef.h
+++ b/src/acpica/source/include/acpredef.h
@@ -760,6 +760,21 @@  const ACPI_PREDEFINED_INFO          AcpiGbl_PredefinedMethods[] =
     {{"_MTL",   METHOD_0ARGS,                          /* ACPI 6.0 */
                 METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
 
+    {{"_NBS",   METHOD_0ARGS,                          /* ACPI 6.3 */
+                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
+
+    {{"_NCH",   METHOD_0ARGS,                          /* ACPI 6.3 */
+                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
+
+    {{"_NIC",   METHOD_0ARGS,                          /* ACPI 6.3 */
+                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
+
+    {{"_NIG",   METHOD_1ARGS (ACPI_TYPE_BUFFER),       /* ACPI 6.3 */
+                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
+
+    {{"_NIH",   METHOD_0ARGS,                          /* ACPI 6.3 */
+                METHOD_RETURNS (ACPI_RTYPE_BUFFER)}},
+
     {{"_NTT",   METHOD_0ARGS,
                 METHOD_RETURNS (ACPI_RTYPE_INTEGER)}},
 
diff --git a/src/acpica/source/include/acrestyp.h b/src/acpica/source/include/acrestyp.h
index 80d2b370..fa24363d 100644
--- a/src/acpica/source/include/acrestyp.h
+++ b/src/acpica/source/include/acrestyp.h
@@ -287,7 +287,7 @@  typedef struct acpi_resource_irq
     UINT8                           DescriptorLength;
     UINT8                           Triggering;
     UINT8                           Polarity;
-    UINT8                           Sharable;
+    UINT8                           Shareable;
     UINT8                           WakeCapable;
     UINT8                           InterruptCount;
     UINT8                           Interrupts[1];
@@ -534,7 +534,7 @@  typedef struct acpi_resource_extended_irq
     UINT8                           ProducerConsumer;
     UINT8                           Triggering;
     UINT8                           Polarity;
-    UINT8                           Sharable;
+    UINT8                           Shareable;
     UINT8                           WakeCapable;
     UINT8                           InterruptCount;
     ACPI_RESOURCE_SOURCE            ResourceSource;
@@ -558,7 +558,7 @@  typedef struct acpi_resource_gpio
     UINT8                           ConnectionType;
     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
     UINT8                           PinConfig;
-    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
+    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
     UINT8                           WakeCapable;        /* For values, see Interrupt Attributes above */
     UINT8                           IoRestriction;
     UINT8                           Triggering;         /* For values, see Interrupt Attributes above */
@@ -736,7 +736,7 @@  typedef struct acpi_resource_pin_function
 {
     UINT8                           RevisionId;
     UINT8                           PinConfig;
-    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
+    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
     UINT16                          FunctionNumber;
     UINT16                          PinTableLength;
     UINT16                          VendorLength;
@@ -750,7 +750,7 @@  typedef struct acpi_resource_pin_config
 {
     UINT8                           RevisionId;
     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
-    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
+    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
     UINT8                           PinConfigType;
     UINT32                          PinConfigValue;
     UINT16                          PinTableLength;
@@ -794,7 +794,7 @@  typedef struct acpi_resource_pin_group_function
 {
     UINT8                           RevisionId;
     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
-    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
+    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
     UINT16                          FunctionNumber;
     UINT16                          VendorLength;
     ACPI_RESOURCE_SOURCE            ResourceSource;
@@ -807,7 +807,7 @@  typedef struct acpi_resource_pin_group_config
 {
     UINT8                           RevisionId;
     UINT8                           ProducerConsumer;   /* For values, see Producer/Consumer above */
-    UINT8                           Sharable;           /* For values, see Interrupt Attributes above */
+    UINT8                           Shareable;           /* For values, see Interrupt Attributes above */
     UINT8                           PinConfigType;      /* For values, see PinConfigType above */
     UINT32                          PinConfigValue;
     UINT16                          VendorLength;
diff --git a/src/acpica/source/include/actbinfo.h b/src/acpica/source/include/actbinfo.h
index 1218b59b..335a291b 100644
--- a/src/acpica/source/include/actbinfo.h
+++ b/src/acpica/source/include/actbinfo.h
@@ -237,6 +237,7 @@ 
 #define ACPI_GTDT0a_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_GTDT_TIMER_ENTRY,f)
 #define ACPI_GTDT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_GTDT_WATCHDOG,f)
 #define ACPI_GTDTH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_GTDT_HEADER,f)
+#define ACPI_GTDT_EL2_OFFSET(f)         (UINT16) ACPI_OFFSET (ACPI_GTDT_EL2,f)
 #define ACPI_HEST0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f)
 #define ACPI_HEST1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f)
 #define ACPI_HEST2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f)
@@ -248,7 +249,7 @@ 
 #define ACPI_HEST11_OFFSET(f)           (UINT16) ACPI_OFFSET (ACPI_HEST_IA_DEFERRED_CHECK,f)
 #define ACPI_HESTN_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f)
 #define ACPI_HESTB_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f)
-#define ACPI_HMAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_ADDRESS_RANGE,f)
+#define ACPI_HMAT0_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_PROXIMITY_DOMAIN,f)
 #define ACPI_HMAT1_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_LOCALITY,f)
 #define ACPI_HMAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_CACHE,f)
 #define ACPI_HMATH_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_HMAT_STRUCTURE,f)
@@ -334,6 +335,7 @@ 
 #define ACPI_SRAT2_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
 #define ACPI_SRAT3_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f)
 #define ACPI_SRAT4_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f)
+#define ACPI_SRAT5_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f)
 #define ACPI_TCPA_CLIENT_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f)
 #define ACPI_TCPA_SERVER_OFFSET(f)      (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f)
 #define ACPI_TPM2A_OFFSET(f)            (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f)
@@ -361,10 +363,11 @@ 
 #define ACPI_SRAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o)
 #define ACPI_SRAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o)
 #define ACPI_SRAT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GICC_AFFINITY,f,o)
+#define ACPI_SRAT5_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f,o)
 #define ACPI_GTDT_FLAG_OFFSET(f,o)      ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o)
 #define ACPI_GTDT0a_FLAG_OFFSET(f,o)    ACPI_FLAG_OFFSET (ACPI_GTDT_TIMER_ENTRY,f,o)
 #define ACPI_GTDT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_GTDT_WATCHDOG,f,o)
-#define ACPI_HMAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_ADDRESS_RANGE,f,o)
+#define ACPI_HMAT0_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_PROXIMITY_DOMAIN,f,o)
 #define ACPI_HMAT1_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_LOCALITY,f,o)
 #define ACPI_HMAT2_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_HMAT_CACHE,f,o)
 #define ACPI_IORT3_FLAG_OFFSET(f,o)     ACPI_FLAG_OFFSET (ACPI_IORT_SMMU,f,o)
diff --git a/src/acpica/source/include/actbl1.h b/src/acpica/source/include/actbl1.h
index 38e73db8..b1700608 100644
--- a/src/acpica/source/include/actbl1.h
+++ b/src/acpica/source/include/actbl1.h
@@ -797,7 +797,7 @@  typedef struct acpi_dmar_hardware_unit
 #define ACPI_DMAR_INCLUDE_ALL       (1)
 
 
-/* 1: Reserved Memory Defininition */
+/* 1: Reserved Memory Definition */
 
 typedef struct acpi_dmar_reserved_memory
 {
@@ -1319,6 +1319,12 @@  typedef struct acpi_table_gtdt
 #define ACPI_GTDT_INTERRUPT_POLARITY    (1<<1)
 #define ACPI_GTDT_ALWAYS_ON             (1<<2)
 
+typedef struct acpi_gtdt_el2
+{
+    UINT32                  VirtualEL2TimerGsiv;
+    UINT32                  VirtualEL2TimerFlags;
+} ACPI_GTDT_EL2;
+
 
 /* Common GTDT subtable header */
 
@@ -1778,7 +1784,7 @@  typedef struct acpi_table_hmat
 
 enum AcpiHmatType
 {
-    ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subystem address range */
+    ACPI_HMAT_TYPE_ADDRESS_RANGE        = 0,   /* Memory subsystem address range */
     ACPI_HMAT_TYPE_LOCALITY             = 1,   /* System locality latency and bandwidth information */
     ACPI_HMAT_TYPE_CACHE                = 2,   /* Memory side cache information */
     ACPI_HMAT_TYPE_RESERVED             = 3    /* 3 and greater are reserved */
@@ -1797,9 +1803,9 @@  typedef struct acpi_hmat_structure
  * HMAT Structures, correspond to Type in ACPI_HMAT_STRUCTURE
  */
 
-/* 0: Memory subystem address range */
+/* 0: Memory proximity domain attributes */
 
-typedef struct acpi_hmat_address_range
+typedef struct acpi_hmat_proximity_domain
 {
     ACPI_HMAT_STRUCTURE     Header;
     UINT16                  Flags;
@@ -1807,10 +1813,10 @@  typedef struct acpi_hmat_address_range
     UINT32                  ProcessorPD;            /* Processor proximity domain */
     UINT32                  MemoryPD;               /* Memory proximity domain */
     UINT32                  Reserved2;
-    UINT64                  PhysicalAddressBase;    /* Physical address range base */
-    UINT64                  PhysicalAddressLength;  /* Physical address range length */
+    UINT64                  Reserved3;
+    UINT64                  Reserved4;
 
-} ACPI_HMAT_ADDRESS_RANGE;
+} ACPI_HMAT_PROXIMITY_DOMAIN;
 
 /* Masks for Flags field above */
 
diff --git a/src/acpica/source/include/actbl2.h b/src/acpica/source/include/actbl2.h
index 562584ec..07d907e3 100644
--- a/src/acpica/source/include/actbl2.h
+++ b/src/acpica/source/include/actbl2.h
@@ -303,7 +303,7 @@  typedef struct acpi_iort_memory_access
 typedef struct acpi_iort_its_group
 {
     UINT32                  ItsCount;
-    UINT32                  Identifiers[1];         /* GIC ITS identifier arrary */
+    UINT32                  Identifiers[1];         /* GIC ITS identifier array */
 
 } ACPI_IORT_ITS_GROUP;
 
@@ -873,7 +873,7 @@  typedef struct acpi_madt_local_x2apic_nmi
 } ACPI_MADT_LOCAL_X2APIC_NMI;
 
 
-/* 11: Generic Interrupt (ACPI 5.0 + ACPI 6.0 changes) */
+/* 11: Generic Interrupt - GICC (ACPI 5.0 + ACPI 6.0 + ACPI 6.3 changes) */
 
 typedef struct acpi_madt_generic_interrupt
 {
@@ -892,7 +892,8 @@  typedef struct acpi_madt_generic_interrupt
     UINT64                  GicrBaseAddress;
     UINT64                  ArmMpidr;
     UINT8                   EfficiencyClass;
-    UINT8                   Reserved2[3];
+    UINT8                   Reserved2[1];
+    UINT16                  SpeInterrupt;       /* ACPI 6.3 */
 
 } ACPI_MADT_GENERIC_INTERRUPT;
 
@@ -1737,6 +1738,7 @@  typedef struct acpi_pdtt_channel
 
 #define ACPI_PDTT_RUNTIME_TRIGGER           (1)
 #define ACPI_PDTT_WAIT_COMPLETION           (1<<1)
+#define ACPI_PDTT_TRIGGER_ORDER             (1<<2)
 
 
 /*******************************************************************************
@@ -1873,8 +1875,11 @@  typedef struct acpi_pptt_processor
 
 /* Flags */
 
-#define ACPI_PPTT_PHYSICAL_PACKAGE          (1)     /* Physical package */
-#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID   (2)     /* ACPI Processor ID valid */
+#define ACPI_PPTT_PHYSICAL_PACKAGE          (1)
+#define ACPI_PPTT_ACPI_PROCESSOR_ID_VALID   (1<<1)
+#define ACPI_PPTT_ACPI_PROCESSOR_IS_THREAD  (1<<2)  /* ACPI 6.3 */
+#define ACPI_PPTT_ACPI_LEAF_NODE            (1<<3)  /* ACPI 6.3 */
+#define ACPI_PPTT_ACPI_IDENTICAL            (1<<4)  /* ACPI 6.3 */
 
 
 /* 1: Cache Type Structure */
diff --git a/src/acpica/source/include/actbl3.h b/src/acpica/source/include/actbl3.h
index c4a45997..db5535e8 100644
--- a/src/acpica/source/include/actbl3.h
+++ b/src/acpica/source/include/actbl3.h
@@ -350,8 +350,9 @@  enum AcpiSratType
     ACPI_SRAT_TYPE_MEMORY_AFFINITY      = 1,
     ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY  = 2,
     ACPI_SRAT_TYPE_GICC_AFFINITY        = 3,
-    ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4,    /* ACPI 6.2 */
-    ACPI_SRAT_TYPE_RESERVED             = 5     /* 5 and greater are reserved */
+    ACPI_SRAT_TYPE_GIC_ITS_AFFINITY     = 4, /* ACPI 6.2 */
+    ACPI_SRAT_TYPE_GENERIC_AFFINITY     = 5, /* ACPI 6.3 */
+    ACPI_SRAT_TYPE_RESERVED             = 6  /* 5 and greater are reserved */
 };
 
 /*
@@ -447,6 +448,24 @@  typedef struct acpi_srat_gic_its_affinity
 } ACPI_SRAT_GIC_ITS_AFFINITY;
 
 
+/* 5: Generic Initiator Affinity Structure (ACPI 6.3) */
+
+typedef struct acpi_srat_generic_affinity
+{
+    ACPI_SUBTABLE_HEADER    Header;
+    UINT8                   Reserved;
+    UINT8                   DeviceHandleType;
+    UINT32                  ProximityDomain;
+    UINT8                   DeviceHandle[16];
+    UINT32                  Flags;
+    UINT32                  Reserved1;
+
+} ACPI_SRAT_GENERIC_AFFINITY;
+
+/* Flags for ACPI_SRAT_GENERIC_AFFINITY */
+
+#define ACPI_SRAT_GENERIC_AFFINITY_ENABLED (1) /* 00: Use affinity structure */
+
 /*******************************************************************************
  *
  * STAO - Status Override Table (_STA override) - ACPI 6.0
diff --git a/src/acpica/source/include/actypes.h b/src/acpica/source/include/actypes.h
index a5ab31fe..2a65ee8f 100644
--- a/src/acpica/source/include/actypes.h
+++ b/src/acpica/source/include/actypes.h
@@ -767,8 +767,9 @@  typedef UINT64                          ACPI_INTEGER;
 #define ACPI_NOTIFY_SHUTDOWN_REQUEST    (UINT8) 0x0C
 #define ACPI_NOTIFY_AFFINITY_UPDATE     (UINT8) 0x0D
 #define ACPI_NOTIFY_MEMORY_UPDATE       (UINT8) 0x0E
+#define ACPI_NOTIFY_DISCONNECT_RECOVER  (UINT8) 0x0F
 
-#define ACPI_GENERIC_NOTIFY_MAX         0x0E
+#define ACPI_GENERIC_NOTIFY_MAX         0x0F
 #define ACPI_SPECIFIC_NOTIFY_MAX        0x84
 
 /*
diff --git a/src/acpica/source/tools/acpiexec/aeinstall.c b/src/acpica/source/tools/acpiexec/aeinstall.c
index e5790929..c5269571 100644
--- a/src/acpica/source/tools/acpiexec/aeinstall.c
+++ b/src/acpica/source/tools/acpiexec/aeinstall.c
@@ -215,6 +215,7 @@  static ACPI_ADR_SPACE_TYPE  SpaceIdList[] =
     ACPI_ADR_SPACE_IPMI,
     ACPI_ADR_SPACE_GPIO,
     ACPI_ADR_SPACE_GSBUS,
+    ACPI_ADR_SPACE_PLATFORM_COMM,
     ACPI_ADR_SPACE_FIXED_HARDWARE,
     ACPI_ADR_SPACE_USER_DEFINED1,
     ACPI_ADR_SPACE_USER_DEFINED2
diff --git a/src/acpica/source/tools/acpiexec/aeregion.c b/src/acpica/source/tools/acpiexec/aeregion.c
index 152ef233..e6aa7f9f 100644
--- a/src/acpica/source/tools/acpiexec/aeregion.c
+++ b/src/acpica/source/tools/acpiexec/aeregion.c
@@ -364,7 +364,7 @@  AeRegionHandler (
                     ACPI_FREE (Resource);
                 }
 
-                AcpiOsPrintf (" [AccessLength %.2X Connnection %p]",
+                AcpiOsPrintf (" [AccessLength %.2X Connection %p]",
                     MyContext->AccessLength, MyContext->Connection);
             }
 
@@ -440,6 +440,23 @@  AeRegionHandler (
         /* Now perform the "normal" SystemMemory handling, for AcpiExec only */
         break;
 
+    /*
+     * PCC operation region will write the entire subspace's data and expect
+     * a response from the hardware. For acpiexec, we'll fill the buffer with
+     * default values. Note: ASLTS will depend on these values.
+     */
+    case ACPI_ADR_SPACE_PLATFORM_COMM: /* ACPI 6.3 */
+        if (AcpiGbl_DisplayRegionAccess)
+        {
+            AcpiOsPrintf ("AcpiExec: PCC Write : Addr %.4X Width %X\n",
+                (UINT32) Address, BitWidth);
+        }
+        for (i = 0; i < Length; ++i)
+        {
+            Buffer[i] = (UINT8) i;
+        }
+        return (AE_OK);
+
     default:
         break;
     }