ACK: [PATCH 1/2] ACPICA: Update to version 20190215
Alex Hung
alex.hung at canonical.com
Sat Feb 16 02:38:47 UTC 2019
On 2019-02-15 11:10 a.m., Colin King wrote:
> From: Colin Ian King <colin.king at 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 at 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 at canonical.com>
More information about the fwts-devel
mailing list