MFV: r344395
Import ACPICA 20190215.
This commit is contained in:
commit
cd6518c765
@ -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
|
||||
|
@ -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"),
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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 */
|
||||
};
|
||||
|
||||
|
@ -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:
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
@ -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
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -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
|
||||
};
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
*
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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 (
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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 == '*'))
|
||||
{
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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*
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
|
@ -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))
|
||||
{
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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[] =
|
||||
|
@ -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.
|
||||
*
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -1175,7 +1175,7 @@ AcpiDbBusWalk (
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Display info about system busses.
|
||||
* DESCRIPTION: Display info about system buses.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -420,7 +420,7 @@ AcpiDbDisplayInternalObject (
|
||||
|
||||
AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
|
||||
|
||||
/* Decode the refererence */
|
||||
/* Decode the reference */
|
||||
|
||||
switch (ObjDesc->Reference.Class)
|
||||
{
|
||||
|
@ -154,6 +154,7 @@
|
||||
#include <contrib/dev/acpica/include/acdebug.h>
|
||||
#include <contrib/dev/acpica/include/acnamesp.h>
|
||||
#include <contrib/dev/acpica/include/acpredef.h>
|
||||
#include <contrib/dev/acpica/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
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -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).
|
||||
*
|
||||
|
@ -388,7 +388,7 @@ AcpiDmFixedIoDescriptor (
|
||||
*
|
||||
* RETURN: None
|
||||
*
|
||||
* DESCRIPTION: Decode a Start Dependendent functions descriptor
|
||||
* DESCRIPTION: Decode a Start Dependent functions descriptor
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
*
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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 */
|
||||
|
@ -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.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
@ -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';
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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
|
||||
*
|
||||
|
@ -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.
|
||||
*
|
||||
******************************************************************************/
|
||||
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 ();
|
||||
|
@ -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},
|
||||
|
@ -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},
|
||||
|
||||
|
@ -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},
|
||||
|
||||
|
@ -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)))
|
||||
|
@ -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)
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -412,6 +412,11 @@ AcpiUtDeleteInternalObj (
|
||||
|
||||
AcpiUtDeleteObjectDesc (SecondDesc);
|
||||
}
|
||||
if (Object->Field.InternalPccBuffer)
|
||||
{
|
||||
ACPI_FREE(Object->Field.InternalPccBuffer);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case ACPI_TYPE_BUFFER_FIELD:
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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[];
|
||||
|
@ -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"),
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -610,7 +610,7 @@
|
||||
|
||||
|
||||
/*
|
||||
* Macors used for the ASL-/ASL+ converter utility
|
||||
* Macros used for the ASL-/ASL+ converter utility
|
||||
*/
|
||||
#ifdef ACPI_ASL_COMPILER
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -154,7 +154,7 @@
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20190108
|
||||
#define ACPI_CA_VERSION 0x20190215
|
||||
|
||||
#include <contrib/dev/acpica/include/acconfig.h>
|
||||
#include <contrib/dev/acpica/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
|
||||
|
@ -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)}},
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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 */
|
||||
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user