From 933b0124ad04366156cb4793d2530ad791d88ead Mon Sep 17 00:00:00 2001 From: Jung-uk Kim Date: Wed, 20 Feb 2019 23:04:28 +0000 Subject: [PATCH] Import ACPICA 20190215. --- changes.txt | 115 +++++++++++-- generate/unix/iasl/Makefile | 2 +- source/common/ahpredef.c | 7 +- source/common/ahuuids.c | 2 +- source/common/dmextern.c | 2 +- source/common/dmrestag.c | 2 +- source/common/dmtable.c | 3 +- source/common/dmtbdump1.c | 21 ++- source/common/dmtbdump3.c | 5 + source/common/dmtbinfo1.c | 17 +- source/common/dmtbinfo2.c | 24 ++- source/common/dmtbinfo3.c | 14 ++ source/compiler/aslcompile.c | 2 +- source/compiler/aslcompiler.h | 4 +- source/compiler/aslcompiler.l | 9 +- source/compiler/aslload.c | 6 +- source/compiler/aslmessages.c | 8 +- source/compiler/aslmessages.h | 6 +- source/compiler/asloperands.c | 10 +- source/compiler/aslopt.c | 2 +- source/compiler/aslpredef.c | 2 +- source/compiler/aslprintf.c | 2 +- source/compiler/aslresources.y | 4 +- source/compiler/aslsupport.l | 2 +- source/compiler/aslxref.c | 118 ++++++++++++- source/compiler/cvcompiler.c | 10 +- source/compiler/cvparser.c | 6 +- source/compiler/dtexpress.c | 2 +- source/compiler/dtio.c | 2 +- source/compiler/dttable1.c | 24 ++- source/compiler/dttable2.c | 5 + 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 +- source/components/events/evgpe.c | 2 +- source/components/events/evregion.c | 2 +- source/components/events/evrgnini.c | 18 -- 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 +- source/components/parser/psloop.c | 195 ---------------------- source/components/parser/psparse.c | 4 +- source/components/resources/rsdumpinfo.c | 14 +- source/components/resources/rsirq.c | 8 +- source/components/resources/rsserial.c | 10 +- source/components/tables/tbfadt.c | 2 +- source/components/tables/tbxface.c | 4 +- source/components/tables/tbxfload.c | 26 ++- source/components/utilities/utclib.c | 4 +- source/components/utilities/utdecode.c | 5 +- source/components/utilities/utdelete.c | 5 + source/components/utilities/uterror.c | 9 +- source/include/acclib.h | 2 +- source/include/acconfig.h | 2 +- source/include/acdebug.h | 3 +- source/include/acdisasm.h | 2 + source/include/acexcep.h | 2 +- source/include/aclocal.h | 2 +- source/include/acmacros.h | 2 +- source/include/acobject.h | 1 + source/include/acpixf.h | 10 +- source/include/acpredef.h | 15 ++ source/include/acrestyp.h | 14 +- source/include/actbinfo.h | 7 +- source/include/actbl1.h | 20 ++- source/include/actbl2.h | 15 +- source/include/actbl3.h | 23 ++- source/include/actypes.h | 3 +- source/include/platform/acefi.h | 2 +- source/tools/acpiexec/aeinstall.c | 1 + source/tools/acpiexec/aemain.c | 11 -- source/tools/acpiexec/aeregion.c | 19 ++- source/tools/acpihelp/ahdecode.c | 2 +- source/tools/acpinames/anmain.c | 2 - source/tools/acpisrc/astable.c | 3 +- tests/misc/grammar.asl | 10 +- 92 files changed, 776 insertions(+), 564 deletions(-) diff --git a/changes.txt b/changes.txt index e139a5b87520..f2c099e1acda 100644 --- a/changes.txt +++ b/changes.txt @@ -1,9 +1,98 @@ ---------------------------------------- -08 January 2019. Summary of changes for version 20190108: +15 February 2019. Summary of changes for version 20190215: This release is available at https://acpica.org/downloads +0) Support for ACPI specification version 6.3: + +Add PCC operation region support for the AML interpreter. This adds PCC +operation region support in the AML interpreter and a default handler for +acpiexec. The change also renames the PCC region address space keyword to +PlatformCommChannel. + +Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. +These methods provide OSPM with health information and device boot +status. + +PDTT: Add TriggerOrder to the PCC Identifier structure. The field value +defines if the trigger needs to be invoked by OSPM before or at the end +of kernel crash dump processing/handling operation. + +SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT +is used for describing devices such as heterogeneous processors, +accelerators, GPUs, and IO devices with integrated compute or DMA +engines. + +MADT: Add support for statistical profiling in GICC. Statistical +profiling extension (SPE) is an architecture-specific feature for ARM. + +MADT: Add online capable flag. If this bit is set, system hardware +supports enabling this processor during OS runtime. + +New Error Disconnect Recover Notification value. There are a number of +scenarios where system Firmware in collaboration with hardware may +disconnect one or more devices from the rest of the system for purposes +of error containment. Firmware can use this new notification value to +alert OSPM of such a removal. + +PPTT: New additional fields in Processor Structure Flags. These flags +provide more information about processor topology. + +NFIT/Disassembler: Change a field name from "Address Range" to "Region +Type". + +HMAT updates: make several existing fields to be reserved as well as +rename subtable 0 to "memory proximity domain attributes". + +GTDT: Add support for new GTDT Revision 3. This revision adds information +for the EL2 timer. + +iASL: Update the HMAT example template for new fields. + +iASL: Add support for the new revision of the GTDT (Rev 3). + + +1) ACPICA kernel-resident subsystem: + +AML Parser: fix the main AML parse loop to correctly skip erroneous +extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- +byte extended opcodes. If an error occurs during an AML table load, the +AML parser will continue loading the table by skipping the offending +opcode. This implements a "load table at any cost" philosophy. + + +2) iASL Compiler/Disassembler and Tools: + +iASL: Add checks for illegal object references, such as a reference +outside of method to an object within a method. Such an object is only +temporary. + +iASL: Emit error for creation of a zero-length operation region. Such a +region is rather pointless. If encountered, a runtime error is also +implemented in the interpeter. + +Debugger: Fix a possible fault with the "test objects" command. + +iASL: Makefile: support parent directory filenames containing embedded +spaces. + +iASL: Update the TPM2 template to revision 4. + +iASL: Add the ability to report specific warnings or remarks as errors. + +Disassembler: Disassemble OEMx tables as actual AML byte code. +Previously, these tables were treated as "unknown table". + +iASL: Add definition and disassembly for TPM2 revision 3. + +iASL: Add support for TPM2 rev 3 compilation. + + +---------------------------------------- +08 January 2019. Summary of changes for version 20190108: + + 1) ACPICA kernel-resident subsystem: Updated all copyrights to 2019. This affects all source code modules. @@ -1218,7 +1307,7 @@ internal cache) is detected and ignored via object poisoning. Debugger: Fixed an AML interpreter mutex issue during the single stepping of control methods. If certain debugger commands are executed during -stepping, a mutex aquire/release error could occur. Lv Zheng. +stepping, a mutex acquire/release error could occur. Lv Zheng. Fixed some issues generating ACPICA with the Intel C compiler by restoring the original behavior and compiler-specific include file in @@ -6760,7 +6849,7 @@ keyword is not standard across compilers, and this type allows inline to be configured on a per-compiler basis. Lin Ming. -Made the system global AcpiGbl_SystemAwakeAndRunning publically +Made the system global AcpiGbl_SystemAwakeAndRunning publicly available. Added an extern for this boolean in acpixf.h. Some hosts utilize this value @@ -11427,9 +11516,9 @@ Helgaas. Removed the length limit (200) on string objects as per the upcoming ACPI 3.0A specification. This affects the following areas of the interpreter: 1) -any implicit conversion of a Buffer to a String, 2) a String object +any implicit conversion of a Buffer to a String, 2) a String object result -of the ASL Concatentate operator, 3) the String object result of the ASL +of the ASL Concatenate operator, 3) the String object result of the ASL ToString operator. Fixed a problem in the Windows OS interface layer (OSL) where a @@ -13585,7 +13674,7 @@ next access width boundary (a common coding error.) Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, these -symbols are lowercased by the latest version of the AcpiSrc tool. +symbols are lowercase by the latest version of the AcpiSrc tool. The prototypes for the PCI interfaces in acpiosxf.h have been updated to rename "Register" to simply "Reg" to prevent certain compilers from @@ -14957,8 +15046,8 @@ with the Linux coding style. Removed the non-Linux SourceSafe module revision number from each module header. -Completed major overhaul of symbols to be lowercased for linux. -Doubled the number of symbols that are lowercased. +Completed major overhaul of symbols to be lowercase for linux. +Doubled the number of symbols that are lowercase. Fixed a problem where identifiers within procedure headers and within quotes were not fully lower cased (they were left with a @@ -16454,7 +16543,7 @@ Summary of changes for this label: 02_14_02 Implemented support in AcpiLoadTable to allow loading of FACS and FADT tables. -Suport for the now-obsolete interim 0.71 64-bit ACPI tables has +Support for the now-obsolete interim 0.71 64-bit ACPI tables has been removed. All 64-bit platforms should be migrated to the ACPI 2.0 tables. The actbl71.h header has been removed from the source tree. @@ -16804,7 +16893,7 @@ Updated all files to apply cleanly against 2.4.16. Added basic PCI Interrupt Routing Table (PRT) support for IA32 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This -version supports both static and dyanmic PRT entries, but dynamic +version supports both static and dynamic PRT entries, but dynamic entries are treated as if they were static (not yet reconfigurable). Architecture- specific code to use this data is absent on IA32 but should be available shortly. @@ -16893,7 +16982,7 @@ power-down, and thermal passive cooling issues (coming soon). Added additional typechecking for Fields within restricted access Operation Regions. All fields within EC and CMOS regions must be -declared with ByteAcc. All fields withing SMBus regions must be +declared with ByteAcc. All fields within SMBus regions must be declared with the BufferAcc access type. Fixed a problem where the listing file output of control methods @@ -17066,7 +17155,7 @@ objects to not be deleted during subsystem termination. Fixed a problem with the external AcpiEvaluateObject interface where the subsystem would fault if the named object to be -evaluated refered to a constant such as Zero, Ones, etc. +evaluated referred to a constant such as Zero, Ones, etc. Fixed a problem with IndexFields and BankFields where the subsystem would fault if the index, data, or bank registers were @@ -17133,7 +17222,7 @@ sleeps.) The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now support wake-enabled GPEs. This means that upon entering the sleep state, all GPEs that are not wake-enabled are disabled. -When leaving the sleep state, these GPEs are reenabled. +When leaving the sleep state, these GPEs are re-enabled. A local double-precision divide/modulo module has been added to enhance portability to OS kernels where a 64-bit math library is diff --git a/generate/unix/iasl/Makefile b/generate/unix/iasl/Makefile index 98dac7131dfa..23ca16b39df5 100644 --- a/generate/unix/iasl/Makefile +++ b/generate/unix/iasl/Makefile @@ -297,7 +297,7 @@ include ../Makefile.rules safe_yacc = \ _d=`mktemp -d $(OBJDIR)/$(1).XXXXXX` &&\ cd $$_d &&\ - $(YACC) $(YFLAGS) -v -d -p$(1) $(abspath $(2)) &&\ + $(YACC) $(YFLAGS) -v -d -p$(1) "$(abspath $(2))" &&\ cd - > /dev/null;\ mv $$_d/y.tab$(suffix $(3)) $(3);\ _r=$$?;\ diff --git a/source/common/ahpredef.c b/source/common/ahpredef.c index afa71a1ff2fa..58b2d6627c8d 100644 --- a/source/common/ahpredef.c +++ b/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/source/common/ahuuids.c b/source/common/ahuuids.c index 0d0a359052ec..c9a390ba9036 100644 --- a/source/common/ahuuids.c +++ b/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/source/common/dmextern.c b/source/common/dmextern.c index 629105fb717e..8ac2c60cc21f 100644 --- a/source/common/dmextern.c +++ b/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/source/common/dmrestag.c b/source/common/dmrestag.c index f5789847409a..c33b0497b67e 100644 --- a/source/common/dmrestag.c +++ b/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/source/common/dmtable.c b/source/common/dmtable.c index f0fb2aa4445b..e51ff424f1b4 100644 --- a/source/common/dmtable.c +++ b/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/source/common/dmtbdump1.c b/source/common/dmtbdump1.c index e55d64960cb1..c363ac8d5fad 100644 --- a/source/common/dmtbdump1.c +++ b/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/source/common/dmtbdump3.c b/source/common/dmtbdump3.c index f0a8751e6dc5..0b9863cce596 100644 --- a/source/common/dmtbdump3.c +++ b/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/source/common/dmtbinfo1.c b/source/common/dmtbinfo1.c index 70013701f040..7d7155d37670 100644 --- a/source/common/dmtbinfo1.c +++ b/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/source/common/dmtbinfo2.c b/source/common/dmtbinfo2.c index 6727f0b222af..1371af7d4888 100644 --- a/source/common/dmtbinfo2.c +++ b/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/source/common/dmtbinfo3.c b/source/common/dmtbinfo3.c index e810a2969d9a..d143bc8772e2 100644 --- a/source/common/dmtbinfo3.c +++ b/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/source/compiler/aslcompile.c b/source/compiler/aslcompile.c index 5acc0d123282..c46b28da16b3 100644 --- a/source/compiler/aslcompile.c +++ b/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/source/compiler/aslcompiler.h b/source/compiler/aslcompiler.h index 40f3b102fa2f..efcee77b519d 100644 --- a/source/compiler/aslcompiler.h +++ b/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/source/compiler/aslcompiler.l b/source/compiler/aslcompiler.l index 18e93064e947..72fbbef380c4 100644 --- a/source/compiler/aslcompiler.l +++ b/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/source/compiler/aslload.c b/source/compiler/aslload.c index 184f69eb7253..c910358d7efb 100644 --- a/source/compiler/aslload.c +++ b/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/source/compiler/aslmessages.c b/source/compiler/aslmessages.c index b06ef9374b6c..07e9848233bc 100644 --- a/source/compiler/aslmessages.c +++ b/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/source/compiler/aslmessages.h b/source/compiler/aslmessages.h index d2d26b6e9498..817e192e02cd 100644 --- a/source/compiler/aslmessages.h +++ b/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/source/compiler/asloperands.c b/source/compiler/asloperands.c index a4781ed4335d..172f347063bc 100644 --- a/source/compiler/asloperands.c +++ b/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/source/compiler/aslopt.c b/source/compiler/aslopt.c index 0d584717a3a7..1b0c4d338a6c 100644 --- a/source/compiler/aslopt.c +++ b/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/source/compiler/aslpredef.c b/source/compiler/aslpredef.c index fa1da4d99c17..ab29105ab6f2 100644 --- a/source/compiler/aslpredef.c +++ b/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/source/compiler/aslprintf.c b/source/compiler/aslprintf.c index b34e9adc62d0..8121ea0023dc 100644 --- a/source/compiler/aslprintf.c +++ b/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/source/compiler/aslresources.y b/source/compiler/aslresources.y index 049d0a52ba02..1caff20c6cec 100644 --- a/source/compiler/aslresources.y +++ b/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/source/compiler/aslsupport.l b/source/compiler/aslsupport.l index 76993662a7c2..5cac84dc6df8 100644 --- a/source/compiler/aslsupport.l +++ b/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/source/compiler/aslxref.c b/source/compiler/aslxref.c index 87a2df28e651..b3067feb7c4e 100644 --- a/source/compiler/aslxref.c +++ b/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/source/compiler/cvcompiler.c b/source/compiler/cvcompiler.c index e069fbb448aa..083b66a5ecf1 100644 --- a/source/compiler/cvcompiler.c +++ b/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/source/compiler/cvparser.c b/source/compiler/cvparser.c index 8225a44b3ac6..ca970b50a1cc 100644 --- a/source/compiler/cvparser.c +++ b/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/source/compiler/dtexpress.c b/source/compiler/dtexpress.c index 6b5b1861259a..820e198886f3 100644 --- a/source/compiler/dtexpress.c +++ b/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/source/compiler/dtio.c b/source/compiler/dtio.c index 095ca0fbb7a8..ae8275132baa 100644 --- a/source/compiler/dtio.c +++ b/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/source/compiler/dttable1.c b/source/compiler/dttable1.c index 23b36be4b18e..c43b9e6c0723 100644 --- a/source/compiler/dttable1.c +++ b/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,8 +1002,15 @@ 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); if (ACPI_FAILURE (Status)) @@ -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/source/compiler/dttable2.c b/source/compiler/dttable2.c index b9623d97b0ff..04f48cc0ca99 100644 --- a/source/compiler/dttable2.c +++ b/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/source/compiler/dttemplate.h b/source/compiler/dttemplate.h index 5fb3287ba1bc..cb1c58552ae2 100644 --- a/source/compiler/dttemplate.h +++ b/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/source/components/debugger/dbdisply.c b/source/components/debugger/dbdisply.c index d0583fc7498f..539ff5af117d 100644 --- a/source/components/debugger/dbdisply.c +++ b/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/source/components/debugger/dbexec.c b/source/components/debugger/dbexec.c index 03ea9bf2eadc..49d1180fba58 100644 --- a/source/components/debugger/dbexec.c +++ b/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/source/components/debugger/dbnames.c b/source/components/debugger/dbnames.c index 781e3a981cb5..3c01e8088651 100644 --- a/source/components/debugger/dbnames.c +++ b/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/source/components/debugger/dbobject.c b/source/components/debugger/dbobject.c index c54394def601..f9dc6687cd1b 100644 --- a/source/components/debugger/dbobject.c +++ b/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/source/components/debugger/dbtest.c b/source/components/debugger/dbtest.c index 560fb86f8697..67b9cbea22a8 100644 --- a/source/components/debugger/dbtest.c +++ b/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/source/components/disassembler/dmbuffer.c b/source/components/disassembler/dmbuffer.c index db56365d2c02..a58ff2f5212a 100644 --- a/source/components/disassembler/dmbuffer.c +++ b/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/source/components/disassembler/dmcstyle.c b/source/components/disassembler/dmcstyle.c index c74d13dd0c92..30ae3a5b228a 100644 --- a/source/components/disassembler/dmcstyle.c +++ b/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/source/components/disassembler/dmnames.c b/source/components/disassembler/dmnames.c index 0866bdf26adb..bbff3e0a6988 100644 --- a/source/components/disassembler/dmnames.c +++ b/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/source/components/disassembler/dmresrc.c b/source/components/disassembler/dmresrc.c index 8deac42c5eb4..bb36b7349581 100644 --- a/source/components/disassembler/dmresrc.c +++ b/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/source/components/disassembler/dmresrcs.c b/source/components/disassembler/dmresrcs.c index baf24488b479..72bbc331f470 100644 --- a/source/components/disassembler/dmresrcs.c +++ b/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/source/components/dispatcher/dsfield.c b/source/components/dispatcher/dsfield.c index f54fcee6db99..cc0a271e41d0 100644 --- a/source/components/dispatcher/dsfield.c +++ b/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/source/components/dispatcher/dsopcode.c b/source/components/dispatcher/dsopcode.c index 8b9a30aa76c3..acf1ff4e1d19 100644 --- a/source/components/dispatcher/dsopcode.c +++ b/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/source/components/dispatcher/dswload2.c b/source/components/dispatcher/dswload2.c index f22067486c31..3a9e374eb602 100644 --- a/source/components/dispatcher/dswload2.c +++ b/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/source/components/events/evgpe.c b/source/components/events/evgpe.c index 1dcd0fc74b25..f5ea992a270b 100644 --- a/source/components/events/evgpe.c +++ b/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/source/components/events/evregion.c b/source/components/events/evregion.c index 2b7780658ecd..6f6d7ccc8b50 100644 --- a/source/components/events/evregion.c +++ b/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/source/components/events/evrgnini.c b/source/components/events/evrgnini.c index a5234a21c30c..718e2e87d933 100644 --- a/source/components/events/evrgnini.c +++ b/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/source/components/events/evxfgpe.c b/source/components/events/evxfgpe.c index 546faa6e8b44..52061db190cc 100644 --- a/source/components/events/evxfgpe.c +++ b/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/source/components/executer/exconvrt.c b/source/components/executer/exconvrt.c index 7a15387f7eef..c4fda4c1cc21 100644 --- a/source/components/executer/exconvrt.c +++ b/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/source/components/executer/exfield.c b/source/components/executer/exfield.c index 5ef9bd31a0e4..b35e6a4ef4ae 100644 --- a/source/components/executer/exfield.c +++ b/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/source/components/executer/exserial.c b/source/components/executer/exserial.c index 0b05fbce963b..07b42880b940 100644 --- a/source/components/executer/exserial.c +++ b/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/source/components/executer/exutils.c b/source/components/executer/exutils.c index 795c94428d42..653777b70a87 100644 --- a/source/components/executer/exutils.c +++ b/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/source/components/namespace/nsload.c b/source/components/namespace/nsload.c index fc93604d8779..f5a82347af92 100644 --- a/source/components/namespace/nsload.c +++ b/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/source/components/namespace/nsparse.c b/source/components/namespace/nsparse.c index 1aa568cb637c..e559223a1b45 100644 --- a/source/components/namespace/nsparse.c +++ b/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)); + /* + * 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)); - 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); - } - - /* - * 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/source/components/namespace/nsutils.c b/source/components/namespace/nsutils.c index 78ba42abd0bf..4a9f0313dda0 100644 --- a/source/components/namespace/nsutils.c +++ b/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/source/components/parser/psloop.c b/source/components/parser/psloop.c index 127850a636c9..7398c3df2a91 100644 --- a/source/components/parser/psloop.c +++ b/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/source/components/parser/psparse.c b/source/components/parser/psparse.c index db3bbaba6860..68e83aa84f4a 100644 --- a/source/components/parser/psparse.c +++ b/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/source/components/resources/rsdumpinfo.c b/source/components/resources/rsdumpinfo.c index c807e285f869..d55bf63bad50 100644 --- a/source/components/resources/rsdumpinfo.c +++ b/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/source/components/resources/rsirq.c b/source/components/resources/rsirq.c index 70ae3a1db3ec..d2f3cfbcd6cb 100644 --- a/source/components/resources/rsirq.c +++ b/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/source/components/resources/rsserial.c b/source/components/resources/rsserial.c index f543f4393913..eaed2a3709de 100644 --- a/source/components/resources/rsserial.c +++ b/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/source/components/tables/tbfadt.c b/source/components/tables/tbfadt.c index 9691b2cd522f..aad5a626ad89 100644 --- a/source/components/tables/tbfadt.c +++ b/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/source/components/tables/tbxface.c b/source/components/tables/tbxface.c index bc6eea307e90..097e535df8c3 100644 --- a/source/components/tables/tbxface.c +++ b/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/source/components/tables/tbxfload.c b/source/components/tables/tbxfload.c index a3168c5c0ef7..bda55ea2ac74 100644 --- a/source/components/tables/tbxfload.c +++ b/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/source/components/utilities/utclib.c b/source/components/utilities/utclib.c index e03dee130fd4..1e62de13bd1b 100644 --- a/source/components/utilities/utclib.c +++ b/source/components/utilities/utclib.c @@ -399,7 +399,7 @@ strlen ( * PARAMETERS: String - Null terminated string * Delimiters - Delimiters to match * - * RETURN: The first occurance in the string of any of the bytes in the + * RETURN: The first occurrence in the string of any of the bytes in the * delimiters * * DESCRIPTION: Search a string for any of a set of the delimiters @@ -789,7 +789,7 @@ strstr ( * FUNCTION: strtoul * * PARAMETERS: String - Null terminated string - * Terminater - Where a pointer to the terminating byte is + * Terminator - Where a pointer to the terminating byte is * returned * Base - Radix of the string * diff --git a/source/components/utilities/utdecode.c b/source/components/utilities/utdecode.c index 5460de2ace26..e470dfc41688 100644 --- a/source/components/utilities/utdecode.c +++ b/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/source/components/utilities/utdelete.c b/source/components/utilities/utdelete.c index 3fbd0fd10ddd..332e2dec7c19 100644 --- a/source/components/utilities/utdelete.c +++ b/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/source/components/utilities/uterror.c b/source/components/utilities/uterror.c index 0d356e59a461..624c034cedf3 100644 --- a/source/components/utilities/uterror.c +++ b/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/source/include/acclib.h b/source/include/acclib.h index edc1cb194cca..bac1ebe0b461 100644 --- a/source/include/acclib.h +++ b/source/include/acclib.h @@ -345,7 +345,7 @@ sprintf ( /* * NOTE: Currently we only need to update errno for file IOs. Other - * Clibrary invocations in ACPICA do not make descisions according to + * Clibrary invocations in ACPICA do not make decisions according to * the errno. */ extern int errno; diff --git a/source/include/acconfig.h b/source/include/acconfig.h index 3706e27e9d80..e93cfe1eafae 100644 --- a/source/include/acconfig.h +++ b/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/source/include/acdebug.h b/source/include/acdebug.h index f3c1874a18ed..4e43bbee2235 100644 --- a/source/include/acdebug.h +++ b/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/source/include/acdisasm.h b/source/include/acdisasm.h index 0f52e7dbe1f1..fa0aebe25e98 100644 --- a/source/include/acdisasm.h +++ b/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/source/include/acexcep.h b/source/include/acexcep.h index 12b2a5f28749..1c9a49d912ab 100644 --- a/source/include/acexcep.h +++ b/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/source/include/aclocal.h b/source/include/aclocal.h index bd27374c4fb1..b5c4aa029c1a 100644 --- a/source/include/aclocal.h +++ b/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/source/include/acmacros.h b/source/include/acmacros.h index 6046030dca5c..340ef725cad6 100644 --- a/source/include/acmacros.h +++ b/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/source/include/acobject.h b/source/include/acobject.h index e345ca341450..b9b30200e9ec 100644 --- a/source/include/acobject.h +++ b/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/source/include/acpixf.h b/source/include/acpixf.h index c57be658e54e..ad653f0ef24b 100644 --- a/source/include/acpixf.h +++ b/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/source/include/acpredef.h b/source/include/acpredef.h index 11c6b6a4795f..8bdbbf998c20 100644 --- a/source/include/acpredef.h +++ b/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/source/include/acrestyp.h b/source/include/acrestyp.h index 80d2b3709450..fa24363d750a 100644 --- a/source/include/acrestyp.h +++ b/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/source/include/actbinfo.h b/source/include/actbinfo.h index 1218b59b2373..335a291b1e9a 100644 --- a/source/include/actbinfo.h +++ b/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/source/include/actbl1.h b/source/include/actbl1.h index 38e73db8c545..b1700608c217 100644 --- a/source/include/actbl1.h +++ b/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/source/include/actbl2.h b/source/include/actbl2.h index 562584ecbf45..07d907e39870 100644 --- a/source/include/actbl2.h +++ b/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/source/include/actbl3.h b/source/include/actbl3.h index c4a45997c9d1..db5535e836a4 100644 --- a/source/include/actbl3.h +++ b/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/source/include/actypes.h b/source/include/actypes.h index a5ab31fedce0..2a65ee8f570d 100644 --- a/source/include/actypes.h +++ b/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/source/include/platform/acefi.h b/source/include/platform/acefi.h index e75fa3117312..11ab4060bc11 100644 --- a/source/include/platform/acefi.h +++ b/source/include/platform/acefi.h @@ -160,7 +160,7 @@ #define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED #endif /* !DEBUGGER_THREADING */ -/* EDK2 EFI environemnt */ +/* EDK2 EFI environment */ #if defined(_EDK2_EFI) diff --git a/source/tools/acpiexec/aeinstall.c b/source/tools/acpiexec/aeinstall.c index e5790929b514..c526957169d9 100644 --- a/source/tools/acpiexec/aeinstall.c +++ b/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/source/tools/acpiexec/aemain.c b/source/tools/acpiexec/aemain.c index 4f41edbd2fb1..9ee25805b932 100644 --- a/source/tools/acpiexec/aemain.c +++ b/source/tools/acpiexec/aemain.c @@ -255,8 +255,6 @@ usage ( ACPI_OPTION ("-df", "Disable Local fault handler"); ACPI_OPTION ("-di", "Disable execution of STA/INI methods during init"); ACPI_OPTION ("-do", "Disable Operation Region address simulation"); - ACPI_OPTION ("-dp", "Disable loading DSDT/SSDT as a control method\n" - " (enable legacy grouping of module-level code)"); ACPI_OPTION ("-dr", "Disable repair of method return values"); ACPI_OPTION ("-ds", "Disable method auto-serialization"); ACPI_OPTION ("-dt", "Disable allocation tracking (performance)"); @@ -353,11 +351,6 @@ AeDoOptions ( AcpiGbl_DbOpt_NoRegionSupport = TRUE; break; - case 'p': - - AcpiGbl_ExecuteTablesAsMethods = FALSE; - break; - case 'r': AcpiGbl_DisableAutoRepair = TRUE; @@ -630,10 +623,6 @@ main ( AcpiDbgLevel = ACPI_NORMAL_DEFAULT; AcpiDbgLayer = 0xFFFFFFFF; - /* Module-level code. Use new architecture */ - - AcpiGbl_ExecuteTablesAsMethods = TRUE; - /* * Initialize ACPICA and start debugger thread. * diff --git a/source/tools/acpiexec/aeregion.c b/source/tools/acpiexec/aeregion.c index 152ef233856e..e6aa7f9f45bf 100644 --- a/source/tools/acpiexec/aeregion.c +++ b/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; } diff --git a/source/tools/acpihelp/ahdecode.c b/source/tools/acpihelp/ahdecode.c index 51d5ee614d63..025246b72241 100644 --- a/source/tools/acpihelp/ahdecode.c +++ b/source/tools/acpihelp/ahdecode.c @@ -314,7 +314,7 @@ AhFindPredefinedNames ( return; } - /* Contruct a local name or name prefix */ + /* Construct a local name or name prefix */ AcpiUtStrupr (NamePrefix); if (*NamePrefix == '_') diff --git a/source/tools/acpinames/anmain.c b/source/tools/acpinames/anmain.c index f2f12122c6e6..91b55215e9a9 100644 --- a/source/tools/acpinames/anmain.c +++ b/source/tools/acpinames/anmain.c @@ -239,8 +239,6 @@ main ( /* Set flags so that the interpreter is not used */ - AcpiGbl_ExecuteTablesAsMethods = FALSE; - Status = AcpiInitializeSubsystem (); ACPI_CHECK_OK (AcpiInitializeSubsystem, Status); if (ACPI_FAILURE (Status)) diff --git a/source/tools/acpisrc/astable.c b/source/tools/acpisrc/astable.c index 6fe0ed9985f0..b6706c3d58ea 100644 --- a/source/tools/acpisrc/astable.c +++ b/source/tools/acpisrc/astable.c @@ -744,7 +744,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { {"ACPI_HEST_GENERIC_DATA", SRC_TYPE_STRUCT}, {"ACPI_HEST_GENERIC_DATA_V300", SRC_TYPE_STRUCT}, {"ACPI_HEST_IA_DEFERRED_CHECK", SRC_TYPE_STRUCT}, - {"ACPI_HMAT_ADDRESS_RANGE", SRC_TYPE_STRUCT}, + {"ACPI_HMAT_PROXIMITY_DOMAIN", SRC_TYPE_STRUCT}, {"ACPI_HMAT_CACHE", SRC_TYPE_STRUCT}, {"ACPI_HMAT_LOCALITY", SRC_TYPE_STRUCT}, {"ACPI_HMAT_STRUCTURE", SRC_TYPE_STRUCT}, @@ -829,6 +829,7 @@ ACPI_TYPED_IDENTIFIER_TABLE AcpiIdentifiers[] = { {"ACPI_SRAT_HEADER", SRC_TYPE_STRUCT}, {"ACPI_SRAT_GIC_ITS_AFFINITY", SRC_TYPE_STRUCT}, {"ACPI_SRAT_GICC_AFFINITY", SRC_TYPE_STRUCT}, + {"ACPI_SRAT_GENERIC_AFFINITY", SRC_TYPE_STRUCT}, {"ACPI_SRAT_MEM_AFFINITY", SRC_TYPE_STRUCT}, {"ACPI_SRAT_X2APIC_CPU_AFFINITY", SRC_TYPE_STRUCT}, {"ACPI_TABLE_TCPA_CLIENT", SRC_TYPE_STRUCT}, diff --git a/tests/misc/grammar.asl b/tests/misc/grammar.asl index 3b7422bff73d..1119ba909155 100644 --- a/tests/misc/grammar.asl +++ b/tests/misc/grammar.asl @@ -28,7 +28,7 @@ // // -// Grammar.asl - Minimally excercises most ASL constructs +// Grammar.asl - Minimally exercises most ASL constructs // // NOTE -- use: iasl -f -of grammar.asl to compile // @@ -723,7 +723,7 @@ DefinitionBlock ( BUS0 ) } )// PRT0 - CreateWordField(PRT0, BUS0._MIN, BMIN) //Minimum bus number suported under this bridge. + CreateWordField(PRT0, BUS0._MIN, BMIN) //Minimum bus number supported under this bridge. Store(3, BMIN) Return(PRT0) @@ -3818,7 +3818,7 @@ DefinitionBlock ( Method(LSGR,2) {//LSGR - //Test on arguements passed + //Test on arguments passed //in test data, Arg1 > Arg0 if(LEqual(Ones,LNot(LGreater(Arg1,Arg0)))) @@ -5025,7 +5025,7 @@ DefinitionBlock ( { Store ("++++++++ CrBytFld Test", Debug) - // Local0 is unitialized buffer with 4 elements + // Local0 is uninitialized buffer with 4 elements Store (Buffer (4) {}, Local0) // create Byte Field named BF0 based on Local0 element 0 @@ -6590,7 +6590,7 @@ DefinitionBlock ( Store ("++++++++ IndexOp Test", Debug) // test storing into uninitialized package elements - Name (PBUF, Package(4) {}) // leave unitialized + Name (PBUF, Package(4) {}) // leave uninitialized Store (0x01234567, Index (PBUF,0)) Store (0x89ABCDEF, Index (PBUF,1)) Store (0xFEDCBA98, Index (PBUF,2))