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