MFV: r344395

Import ACPICA 20190215.
This commit is contained in:
Jung-uk Kim 2019-02-20 23:53:39 +00:00
commit cd6518c765
82 changed files with 745 additions and 539 deletions

View File

@ -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

View File

@ -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 devices 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"),

View File

@ -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)
{

View File

@ -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.
*
******************************************************************************/

View File

@ -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.
*

View File

@ -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 */
};

View File

@ -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:

View File

@ -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);

View File

@ -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
};

View File

@ -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
*
******************************************************************************/

View File

@ -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
};
/*******************************************************************************
*

View File

@ -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)
{

View File

@ -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 (

View File

@ -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);
}

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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
{

View File

@ -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))
{

View File

@ -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.
*

View File

@ -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

View File

@ -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 */

View File

@ -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 == '*'))
{

View File

@ -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);
}
}

View File

@ -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*
*
******************************************************************************/

View File

@ -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.

View File

@ -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.
*
*****************************************************************************/

View File

@ -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))
{

View File

@ -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);

View File

@ -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");

View File

@ -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[] =

View File

@ -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.
*

View File

@ -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));
}

View File

@ -1175,7 +1175,7 @@ AcpiDbBusWalk (
*
* RETURN: None
*
* DESCRIPTION: Display info about system busses.
* DESCRIPTION: Display info about system buses.
*
******************************************************************************/

View File

@ -420,7 +420,7 @@ AcpiDbDisplayInternalObject (
AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc));
/* Decode the refererence */
/* Decode the reference */
switch (ObjDesc->Reference.Class)
{

View File

@ -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

View File

@ -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;

View File

@ -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)
{

View File

@ -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)

View File

@ -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).
*

View File

@ -388,7 +388,7 @@ AcpiDmFixedIoDescriptor (
*
* RETURN: None
*
* DESCRIPTION: Decode a Start Dependendent functions descriptor
* DESCRIPTION: Decode a Start Dependent functions descriptor
*
******************************************************************************/

View File

@ -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);
}

View File

@ -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)

View File

@ -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
*

View File

@ -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)
{

View File

@ -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();
}

View File

@ -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 */

View File

@ -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.
*
******************************************************************************/

View File

@ -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';

View File

@ -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 */

View File

@ -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
*

View File

@ -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.
*
******************************************************************************/

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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 ();

View File

@ -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},

View File

@ -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},

View File

@ -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},

View File

@ -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)))

View File

@ -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)

View File

@ -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);
}

View File

@ -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)
{

View File

@ -412,6 +412,11 @@ AcpiUtDeleteInternalObj (
AcpiUtDeleteObjectDesc (SecondDesc);
}
if (Object->Field.InternalPccBuffer)
{
ACPI_FREE(Object->Field.InternalPccBuffer);
}
break;
case ACPI_TYPE_BUFFER_FIELD:

View File

@ -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;

View File

@ -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;

View File

@ -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

View File

@ -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
{

View File

@ -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[];

View File

@ -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"),

View File

@ -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
{

View File

@ -610,7 +610,7 @@
/*
* Macors used for the ASL-/ASL+ converter utility
* Macros used for the ASL-/ASL+ converter utility
*/
#ifdef ACPI_ASL_COMPILER

View File

@ -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;

View File

@ -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

View File

@ -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)}},

View File

@ -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;

View File

@ -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)

View File

@ -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 */

View File

@ -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 */

View File

@ -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

View File

@ -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
/*