#
ae04e23c |
| 10-Dec-2022 |
christos <christos@NetBSD.org> |
Import acpica 2022-10-20
20 October 2022. Summary of changes for version 20221020:
This release is available at https://acpica.org/downloads
0) Global changes:
Allow disabling of -Werror. For dis
Import acpica 2022-10-20
20 October 2022. Summary of changes for version 20221020:
This release is available at https://acpica.org/downloads
0) Global changes:
Allow disabling of -Werror. For distro maintainers having `-Werror` can delay update of GCC. Since every GCC release might add new warnings that were not yet captured, it might break the build of packages. With this change, distros can now build with `NOWERROR=TRUE` instead of patching either the errors or the makefiles. The default behavior keeps on using `-Werror`.
1) ACPICA kernel-resident subsystem:
Added support for FFH Operation Region special context data. FFH(Fixed Function Hardware) Opregion is approved to be added in ACPI 6.5 via code first approach[1]. It requires special context data similar to GPIO and Generic Serial Bus as it needs to know platform specific offset and length.
Reverted this commit "executer/exsystem: Warn about sleeps greater than 10 ms." Due to user complaints about valid sleeps greater than 10ms seen in some existing machines -- generating lots of warnings.
Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that EBDA region must be at least 1KiB in size. Because this is not guaranteed, it might happen that while scanning the memory for RSDP pointer, the kernel touches memory above 640KiB. This is unwanted as the VGA memory range may not be decoded or even present when running under virtualization.
Check that EBDA pointer is in valid memory. If the memory at 0x40e is uninitialized, the retrieved physical memory address of EBDA may be beyond the low memory (i.e. above 640K). If so, the kernel may unintentionally access the VGA memory, that might not be decoded or even present in case of virtualization.
2) iASL Compiler/Disassembler and ACPICA tools:
Completed the existing partial support for the CDAT "table". Although this isn't technically an ACPI table (It doesn't go into the XSDT), it is possible to support this table in the Data Table compiler. Created one new file, "utilities/utcksum.c", used to centralize checksum generation/validation into one location. Includes changes to makefiles and MSVC project files.
Updated support for the IORT table - update to version E.e
Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
iASL: Added CCEL table to both compiler/disassembler.
iASL: NHLT table: Fixed compilation of optional undocumented fields
iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763 ("iASL: Add CCEL table to both compiler/disassembler") introduced the iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL table member reference. To fix it, change ACPI_TDEL_OFFSET with ACPI_CCEL_OFFSET.
show more ...
|
#
e5631441 |
| 27-Aug-2022 |
christos <christos@NetBSD.org> |
Import acpica-2022-03-31 ---------------------------------------- 31 March 2022. Summary of changes for version 20220331:
0) Global changes:
Update all copyright notices to the year 2022. This effe
Import acpica-2022-03-31 ---------------------------------------- 31 March 2022. Summary of changes for version 20220331:
0) Global changes:
Update all copyright notices to the year 2022. This effects all source modules, as well as utility signons.
1) ACPICA kernel-resident subsystem:
For the ASL Sleep() operator, issue a warning if the sleep value is greater than 10 Milliseconds. Quick boottime is important, so warn about sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350 ms, so excessive delays should be called out. 10 ms is chosen randomly, but three of such delays would already make up ten percent of the boottime.
Namespace: Avoid attempting to walk the Namespace if the Namespace does not exist.
AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a pass/fail integer. Now load returns a pass/fail integer, as well as storing the return value in an optional 2nd argument.
Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid "performing pointer subtraction with a null pointer has undefined behavior" compiler warnings, use uintptr_t and offsetof() that are always available during Linux kernel builds to define ACPI_UINTPTR_T and the ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code in the Linux kernel.
Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted by superm1.
executer/exsystem: Inform users about ACPI spec violation for the Stall() operator. Values greater than 100 microseconds violate the ACPI specification, so warn users about it. From the ACPI Specification version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*: > The implementation of Stall is OS-specific, but must not relinquish > control of the processor. Because of this, delays longer than 100 > microseconds must use Sleep instead of Stall.
2) iASL Compiler/Disassembler and ACPICA tools:
Data Table Compiler/Disassembler: Add support for the APMT table - ARM Performance Monitoring Unit table. Submitted by @bwicaksononv.
Data Table Compiler/Disassembler: For MADT, add support for the OEM- defined subtables (Types 0x80-0x7F).
Data Table Compiler: Fixed a problem with support for the SDEV table, where a subtable Length was not computed correctly.
Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT Acpi table support.
Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and add template. Submitted by MasterDrogo.
Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz: iASL/NHLT: Rename linux specific structures to DeviceInfo to improve readability of the code. iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint. Undocumented bytes at the end of Endpoint Descriptor can be present independently of Linux-specific structures. Their size can also vary. iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4 bytes of size and then an amount of bytes specified by size. All of the terminators that I've seen had a size equal to 4, but theoretically it can vary.
iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
iASL: Remove a remark due to excessive output. Removed a remark for duplicate Offset() operators, due to a user complaint.
show more ...
|
#
d4291bf2 |
| 03-Apr-2021 |
christos <christos@NetBSD.org> |
31 March 2021. Summary of changes for version 20210331:
This release is available at https://acpica.org/downloads, and includes all ACPI 6.4 support
1) ACPICA kernel-resident subsystem: ACPI 6.4: i
31 March 2021. Summary of changes for version 20210331:
This release is available at https://acpica.org/downloads, and includes all ACPI 6.4 support
1) ACPICA kernel-resident subsystem: ACPI 6.4: iASL: deprecate DDBHandleObj keyword Always create namespace nodes using AcpiNsCreateNode(). ACPICA is allocating an object using kmalloc(), but then frees it using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong. Fixed a race condition in generic serial bus operation region handler. Fixed by Hans de Goede.
2) iASL Compiler/Disassembler and ACPICA tools:
ACPI 6.4: NFIT: add Location Cookie field ACPI 6.4: HMAT: add new fields/flags ACPI 6.4: Add new flags in SRAT ACPI 6.4: add SDEV secure access components ACPI 6.4: add Csi2Bus resource template ACPI 6.4: add support for PHAT table ACPI 6.4: add support for PMTT table Add disassembly support for the IVRS table. Compilation of the table is not yet complete. Fixed a potential infinite loop due to type mismatch. The for-loop is using a UINT8 counter and comparing the upper limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i will wrap around to zero and the loop will never exit. I suspect the AslGbl_ExpectedMessagesIndex is never that high, but fixing this does future proof the code and cleans up static analysis warnings.Colin King.
iASL/TableCompiler: update it with IORT table E.b revision changes. From shamiali2008. iASL/TableCompiler: Add compilation support for the VIOT table. Signed-off-by: Jean-Philippe Brucker. iASL/TableCompiler: Add compilation support for CEDT table. Also, update the CEDT template.
show more ...
|
#
7cf8bdb9 |
| 27-Nov-2020 |
christos <christos@NetBSD.org> |
13 November 2020. Summary of changes for version 20201113:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Interpreter: fixed a memory leak by using
13 November 2020. Summary of changes for version 20201113:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Interpreter: fixed a memory leak by using use existing buffer in _HID repair. There was a memory leak that occurred when a _CID object is defined as a package containing string objects. When _CID is checked for any possible repairs, it calls a helper function to repair _HID (because _CID basically contains multiple _HID entries). The _HID repair function assumes that string objects are standalone objects that are not contained inside of any packages. The _HID repair function replaced the string object with a brand new object and attempted to delete the old object by decrementing the reference count of the old object. Strings inside of packages have a reference count of 2 so the _HID repair function leaves this object in a dangling state and causes a memory leak. Instead of allocating a brand new object and removing the old object, use the existing object when repairing the _HID object.
Added function trace macros to improve namespace debugging. The namespace repair mechanism does not have function tracing macros. Add several trace macros to improve debuggability.
Handle "orphan" _REG methods for GPIO OpRegions. Before this change AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs. The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads to potential issues with checks for OpRegion availability, or in other words checks if _REG has been called for the OpRegion which the ACPI code wants to use. Except for the "orphan" EC handling, ACPICA core does not call _REG on an ACPI node which does not define an OpRegion matching the type being registered; and the reference design DSDT, from which most Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins were assigned ACPI controlled functions in the reference design. Together this leads to the perfect storm, at least on the Cherry Trail based Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code and has added the Cherry Trail specific UserDefined(0x93) opregion to its GPO2 ACPI node to access this pin. But it uses a "has _REG been called" availability check for the standard GeneralPurposeIo OpRegion. This clearly is a bug in the DSDT, but this does work under Windows. This issue leads to the intel vbtn driver reporting the device always being in tablet-mode at boot, even if it is in laptop mode. Which in turn causes userspace to ignore touchpad events. So in other words, this issue causes the touchpad to not work at boot. This change fixes this by extending the "orphan" _REG method handling to also apply to GPIO address-space handlers.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Added more info to namespace dump file (-ln option). In a separate section of the dump file (after the main namespace dump), emit the full pathname for each namespace node, its type, and the ASL filename and line number where it is declared.
AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value is omitted, all iASL exceptions are displayed.
iASL: Use StringLiteral instead of StringData for some ASL macros. The use of the stringData rule allows for some "string" oriented opcodes (Such as ToString, ToHexString, etc.) None of which make sense with the macros in question. This change modifies the StringData part of the rule for these macros to a simple string literal - thus disallowing the use of ToString, ToHexString, etc. The following ASL operators (macros) are affected: EisaId Fprintf Printf ToUuid Unicode Note: The MS compiler requires the use of string literals for these operators also.
iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search the list of "known" UUIDs for the input to the ToUUID macro.
Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the NFIT table.
show more ...
|
#
c5e3b945 |
| 28-Mar-2020 |
christos <christos@NetBSD.org> |
---------------------------------------- 26 March 2020. Summary of changes for version 20200326:
1) ACPICA kernel-resident subsystem:
Performed a code clean-up to prevent build errors on early ver
---------------------------------------- 26 March 2020. Summary of changes for version 20200326:
1) ACPICA kernel-resident subsystem:
Performed a code clean-up to prevent build errors on early versions of GCC-10.
Added the NHLT table signature. iASL data table compiler/disassembler support for this table is coming soon.
2) iASL Compiler/Disassembler and ACPICA tools:
AcpiExec: Fixed several problems with the namespace initialization file (-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS errors, several seg faults, and enhancements to line parsing within the init file. In addition, each object found in the init file and it's new value is displayed, as well as any such entries that do not have a corresponding name in the namespace. For reference, the syntax for the various supported data types are presented below: PCHG 0x777788889999BBBB // Integer \DEV1.STR1 "XYZ" // String BUF1 (88 99 AA) // Buffer PKG1 [0x1111 0x2222] // Package \BF1 0x7980 // BufferField RCRV 0x0123456789ABCDEF // Field Unit
iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro can be used anywhere in a given ASL file to configure iASL to expect an iASL compiler error code on the line where this macro was placed. If the error code does not exist, an error is generated. This is intended to be used for ACPICA's ASL test suite, but can be used by ASL developers as well.
iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD IVRS table parsing supported only IVHD type 10h structures. Parsing an IVHD type 11h caused the iasl to report unknown subtable type. Add necessary structure definition for IVHD type 11h and apply correct parsing method based on subtable type. Micha? ?ygowski.
iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name According to AMD IOMMU Specification Revision 3.05 the reserved field should be IOMMU Feature Reporting. Change the name of the field to the correct one. Micha? ?ygowski.
acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch based on suggestions by David Seifert and Benjamin Berg.
iASL: table compiler: removed an unused variable (DtCompilerParserResult) causing linking errors. Patch based on suggestions by David Seifert and Benjamin Berg.
iASL: table compiler: make LexBuffer static to avoid linking errors in newer compilers. Patch based on suggestions by David Seifert and Benjamin Berg.
iASL: fixed type matching between External and Named objects. External object types can only be expressed with ACPI object type values that are defined in the ACPI spec. However, iASL uses ACPI object type values that are local to ACPICA in addition to the values defined in the ACPI spec. This change implements type matching to map some object type values specific to ACPICA to ones that are defined in the ACPI spec.
iASL: Dropped the type mismatch compiler error that can arise from External declarations to a warning. This warning can occur when there is a type difference between the external declaration and the actual object declaration (when compiling multiple files/modules simultaneously).
iASL: removed an incorrect error message regarding externals. This change removes an incorrect error that is emitted when a duplicate external declaration does not contain a type that opens a scope. This is incorrect because the duplicate external with conflicting types are already caught by iASL and it doesn't make any sense to enforce what this conflicting type should be.
AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be surrounded by parens. Otherwise, a logical statement that applies a logical not operator to this macro could result in a computation that applies the operator to the left side of the logical and but not the right. Reported-by: John Levon <john.levon@joyent.com>
Fixed a problem with the local version of sprint(): On 32-bit, the provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX, String + Size will wrap, meaning End < Start, and AcpiUtBoundStringOutput() will never output anything as a result. The symptom seen of this was acpixtract failing to output anything -- with a custom build that included utprint.c. Signed-off-by: John Levon <john.levon@joyent.com>
iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the ACPI specification.
---------------------------------------- 14 February 2020. Summary of changes for version 20200214:
1) ACPICA kernel-resident subsystem:
Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered in a guest when it receives a sleep trigger from the hypervisor. When the guest resumes from this power state, it does not see the SleepEnabled bit. In other words, the sleepHibernation (S4) is triggered in a guest when it receives a sleep trigger from the hypervisor. When the guest resumes from this power state, it does not see the SleepEnabled bit. In other words, the sleep button is not enabled on waking from an S4 state. This causes subsequent invocation of sleep state to fail since the guest.button is not enabled on waking from an S4 state. This causes subsequent invocation of sleep state to fail in the guest. Fix this problem by enabling the sleep button in ACPI legacy wake. From Anchal Agarwal <anchalag@amazon.com>.
Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used for checking the status bits of all enabled GPEs in one go. It is needed to distinguish spurious SCIs from genuine ones when deciding whether or not to wake up the system from suspend-to-idle.
Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be using HOST in their environment to represent the host name for their machines. Avoid this problem by renaming this variable from HOST to ACPI_HOST.
MSVC 2017 project files: Enable multiprocessor generation to improve build performance.
Added a macro to get the byte width of a Generic Address structure. New ACPI_ACCESS_BYTE_WIDTH is in addition to the existing ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Implemented full support for the (optional, rarely used) ReturnType and ParameterTypesList for the Method, Function, and External operators. For Method declarations, the number of individual ParameterTypes must match the declaration of the number of arguments (NumArgs). This also Fixes a problem with the External operator where extra/extraneous bytes were emitted in the AML code if the optional ReturnType/ParameterTypes were specified for a MethodObj declaration. New error message: 1) Method NumArgs count does not match length of ParameterTypes list
iASL: Implemented detection of type mismatches between External declarations and named object declarations. Also, detect type mismatches between multiple External declarations of the same Name. New error messages: 1) Type mismatch between external declaration and actual object declaration detected 2) Type mismatch between multiple external declarations detected
iASL: Implemented new error messages for External operators that specify a ReturnType and/or ParameterTypesList for any object type other than control methods (MethodObj). New error messages: 1) Return type is only allowed for Externals declared as MethodObj 2) Parameter type is only allowed for Externals declared as MethodObj
iASL: Implemented two new remark/warning messages for ASL code that creates named objects from within a control method. This is very inefficient since the named object must be created and deleted each time the method is executed. New messages: 1) Creation of named objects within a method is highly inefficient, use globals or method local variables instead (remark) 2) Static OperationRegion should be declared outside control method (warning)
iASL: Improved illegal forward reference detection by adding support to detect forward-reference method invocations.
iASL: Detect and issue an error message for NameStrings that contain too many individual NameSegs (>255). This is an AML limitation that is defined in the ACPI specification. New message: 1) NameString contains too many NameSegs (>255)
acpidump: windows: use GetSystemFirmwareTable API for all tables except SSDT. By using this API, acpidump is able to get all tables in the XSDT
iASL: Removed unused parser file and updated msvc2017 project files. Removed the obsolete AslCompiler.y from the repository.
iASL: msvc2017: Fixed macros in the file dependency list to prevent unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
Disassembler: Prevent spilling error messages to the output file. All errors are directed to the console instead. These error messages prevented re-compilation of the resulting disassembled ASL output file (.DSL).
---------------------------------------- 10 January 2020. Summary of changes for version 20200110:
1) ACPICA kernel-resident subsystem:
Updated all copyrights to 2020. This affects all ACPICA source code modules.
2) iASL Compiler/Disassembler and ACPICA tools:
ASL test suite (ASLTS): Updated all copyrights to 2020.
Tools and utilities: Updated all signon copyrights to 2020.
iASL: fix forward reference analysis for field declarations. Fixes forward reference analysis for field declarations by searching the parent scope for the named object when the object is not present in the current scope.
iASL: Improved the error output for ALREADY_EXISTS errors. Now, the full pathname of the name that already exists is printed.
iASL: Enhance duplicate Case() detection for buffers. Add check for buffers with no initializer list (these buffers will be filled with zeros at runtime.)
show more ...
|
#
01bd6626 |
| 29-Apr-2019 |
christos <christos@NetBSD.org> |
---------------------------------------- 05 April 2019. Summary of changes for version 20190405:
1) ACPICA kernel-resident subsystem:
Event Manager: History: Commit 18996f2db918 ("ACPICA: Events:
---------------------------------------- 05 April 2019. Summary of changes for version 20190405:
1) ACPICA kernel-resident subsystem:
Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop unconditionally clearing ACPI IRQs during suspend/resume") was added earlier to stop clearing of event status bits unconditionally on suspend and resume paths. Though this change fixed an issue on suspend path, it introduced regressions on several resume paths. In the case of S0ix, events are enabled as part of device suspend path. If status bits for the events are set when they are enabled, it could result in premature wake from S0ix. If status is cleared for any event that is being enabled so that any stale events are cleared out. In case of S0ix, events are enabled as part of device suspend path. If status bits for the events are set when they are enabled, it could result in premature wake from S0ix.
This change ensures that status is cleared for any event that is being enabled so that any stale events are cleared out.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Implemented an enhanced multiple file compilation that combines named objects from all input files to a single namespace. With this feature, any unresolved external declarations as well as duplicate named object declarations can be detected during compilation rather than generating errors much later at runtime. The following commands are examples that utilize this feature: iasl dsdt.asl ssdt.asl iasl dsdt.asl ssdt1.asl ssdt2.asl iasl dsdt.asl ssdt*.asl
---------------------------------------- 29 March 2019. Summary of changes for version 20190329:
1) ACPICA kernel-resident subsystem:
Namespace support: Remove the address nodes from global list after method termination. The global address list contains pointers to namespace nodes that represent Operation Regions. This change properly removes Operation Region namespace nodes that are declared dynamically during method execution.
Linux: Use a different debug default than ACPICA. There was a divergence between Linux and the ACPICA codebases. In order to resolve this divergence, Linux now declares its own debug default in aclinux.h
Renamed some internal macros to improve code understanding and maintenance. The macros below all operate on single 4-character ACPI NameSegs, not generic strings (old -> new): ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
Fix for missing comma in array declaration for the AcpiGbl_GenericNotify table.
Test suite: Update makefiles, add PCC operation region support
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented additional illegal forward reference detection. Now detect and emit an error upon detection of a forward reference from a Field to an Operation Region. This will fail at runtime if allowed to pass the compiler.
AcpiExec: Add an address list check for dynamic Operation Regions. This feature performs a sanity test for each node the global address list. This is done in order to ensure that all dynamic operation regions are properly removed from the global address list and no dangling pointers are left behind.
Disassembler: Improved generation of resource pathnames. This change improves the code that generates resource descriptor and resource tag pathnames. The original code used a bunch of str* C library functions that caused warnings on some compilers.
iASL: Removed some uses of strncpy and replaced with memmove. The strncpy function can overwrite buffers if the calling code is not very careful. In the case of generating a module/table header, use of memmove is a better implementation.
3) Status of new features that have not been completed at this time:
iASL: Implementing an enhanced multiple file compilation into a single namespace feature (Status): This feature will be released soon, and allows multiple ASL files to be compiled into the same single namespace. By doing so, any unresolved external declarations as well as duplicate named object declarations can be detected during compilation (rather than later during runtime). The following commands are examples that utilize this feature: iasl dsdt.asl ssdt.asl iasl dsdt.asl ssdt1.asl ssdt2.asl iasl dsdt.asl ssdt*.asl
ASL tutorial status: Feedback is being gathered internally and the current plan is to publish this tutorial on the ACPICA website after a final review by a tech writer.
---------------------------------------- 15 February 2019. Summary of changes for version 20190215:
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.
2) iASL Compiler/Disassembler and Tools:
ASL test suite (ASLTS): Updated all copyrights to 2019.
Tools: Updated all signon copyrights to 2019.
AcpiExec: Added a new option to dump extra information concerning any memory leaks detected by the internal object/cache tracking mechanism. - va
iASL: Updated the table template for the TPM2 table to the newest version of the table (Revision 4)
show more ...
|
#
e32744fc |
| 07-Apr-2018 |
christos <christos@NetBSD.org> |
---------------------------------------- 13 March 2018. Summary of changes for version 20180313:
1) ACPICA kernel-resident subsystem:
Implemented various improvements to the GPE support:
1) Dispa
---------------------------------------- 13 March 2018. Summary of changes for version 20180313:
1) ACPICA kernel-resident subsystem:
Implemented various improvements to the GPE support:
1) Dispatch all active GPEs at initialization time so that no GPEs are lost. 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled before devices are enumerated. 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that IRQs are not lost. 4) Add parallel GPE handling to eliminate the possibility of dispatching the same GPE twice. 5) Dispatch any pending GPEs after enabling for the first time.
AcpiGetObjectInfo - removed support for the _STA method. This was causing problems on some platforms.
Added a new _OSI string, "Windows 2017.2".
Cleaned up and simplified the module-level code support. These changes are in preparation for the eventual removal of the legacy MLC support (deferred execution), replaced by the new MLC architecture which executes the MLC as a table is loaded (DSDT/SSDTs).
Changed a compile-time option to a runtime option. Changes the option to ignore ACPI table load-time package resolution errors into a runtime option. Used only for platforms that generate many AE_NOT_FOUND errors during boot. AcpiGbl_IgnorePackageResolutionErrors.
Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid compilation errors from unused variables (seen with some compilers).
2) iASL Compiler/Disassembler and Tools:
ASLTS: parallelized execution in order to achieve an (approximately) 2X performance increase.
ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves error reporting.
---------------------------------------- 09 February 2018. Summary of changes for version 20180209:
1) ACPICA kernel-resident subsystem:
Completed the final integration of the recent changes to Package Object handling and the module-level AML code support. This allows forward references from individual package elements when the package object is declared from within module-level code blocks. Provides compatibility with other ACPI implementations.
The new architecture for the AML module-level code has been completed and is now the default for the ACPICA code. This new architecture executes the module-level code in-line as the ACPI table is loaded/parsed instead of the previous architecture which deferred this code until after the table was fully loaded. This solves some ASL code ordering issues and provides compatibility with other ACPI implementations. At this time, there is an option to fallback to the earlier architecture, but this support is deprecated and is planned to be completely removed later this year.
Added a compile-time option to ignore AE_NOT_FOUND exceptions during resolution of named reference elements within Package objects. Although this is potentially a serious problem, it can generate a lot of noise/errors on platforms whose firmware carries around a bunch of unused Package objects. To disable these errors, define ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All errors are always reported for ACPICA applications such as AcpiExec.
Fixed a regression related to the explicit type-conversion AML operators (ToXXXX). The regression was introduced early in 2017 but was not seen until recently because these operators are not fully supported by other ACPI implementations and are thus rarely used by firmware developers. The operators are defined by the ACPI specification to not implement the "implicit result object conversion". The regression incorrectly introduced this object conversion for the following explicit conversion operators: ToInteger ToString ToBuffer ToDecimalString ToHexString ToBCD FromBCD
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a problem with the compiler constant folding feature as related to the ToXXXX explicit conversion operators. These operators do not support the "implicit result object conversion" by definition. Thus, ASL expressions that use these operators cannot be folded to a simple Store operator because Store implements the implicit conversion. This change uses the CopyObject operator for the ToXXXX operator folding instead. CopyObject is defined to not implement implicit result conversions and is thus appropriate for folding the ToXXXX operators.
iASL: Changed the severity of an error condition to a simple warning for the case where a symbol is declared both locally and as an external symbol. This accommodates existing ASL code.
AcpiExec: The -ep option to enable the new architecture for module-level code has been removed. It is replaced by the -dp option which instead has the opposite effect: it disables the new architecture (the default) and enables the legacy architecture. When the legacy code is removed in the future, the -dp option will be removed also.
---------------------------------------- 05 January 2018. Summary of changes for version 20180105:
1) ACPICA kernel-resident subsystem:
Updated all copyrights to 2018. This affects all source code modules.
Fixed a possible build error caused by an unresolved reference to the AcpiUtSafeStrncpy function.
Removed NULL pointer arithmetic in the various pointer manipulation macros. All "(void *) NULL" constructs are converted to "(void *) 0". This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
Added support for A32 ABI compilation, which uses the ILP32 model. Anuj Mittal.
2) iASL Compiler/Disassembler and Tools:
ASLTS: Updated all copyrights to 2018.
Tools: Updated all signon copyrights to 2018.
AcpiXtract: Fixed a regression related to ACPI table signatures where the signature was truncated to 3 characters (instead of 4).
AcpiExec: Restore the original terminal mode after the use of the -v and -vd options.
ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
---------------------------------------- 14 December 2017. Summary of changes for version 20171214:
1) ACPICA kernel-resident subsystem:
Fixed a regression in the external (public) AcpiEvaluateObjectTyped interface where the optional "pathname" argument had inadvertently become a required argument returning an error if omitted (NULL pointer argument).
Fixed two possible memory leaks related to the recently developed "late resolution" of reference objects within ASL Package Object definitions.
Added two recently defined _OSI strings: "Windows 2016" and "Windows 2017". Mario Limonciello.
Implemented and deployed a safer version of the C library function strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the creation of unterminated strings as a possible result of a standard strncpy.
Cleaned up and restructured the global variable file (acglobal.h). There are many changes, but no functional changes.
2) iASL Compiler/Disassembler and Tools:
iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the optional OemData field at the end of the table was incorrectly required for proper compilation. It is now correctly an optional field.
ASLTS: The entire suite was converted from standard ASL to the ASL+ language, using the ASL-to-ASL+ converter which is integrated into the iASL compiler. A binary compare of all output files has verified the correctness of the conversion.
iASL: Fixed the source code build for platforms where "char" is unsigned. This affected the iASL lexer only. Jung-uk Kim.
show more ...
|
#
2baed015 |
| 12-Nov-2017 |
christos <christos@NetBSD.org> |
---------------------------------------- 10 November 2017. Summary of changes for version 20171110:
1) ACPICA kernel-resident subsystem:
This release implements full support for ACPI 6.2A: NFI
---------------------------------------- 10 November 2017. Summary of changes for version 20171110:
1) ACPICA kernel-resident subsystem:
This release implements full support for ACPI 6.2A: NFIT - Added a new subtable, "Platform Capabilities Structure" No other changes to ACPICA were required, since ACPI 6.2A is primarily an errata release of the specification.
Other ACPI table changes: IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy Linton
Utilities: Modified the string/integer conversion functions to use internal 64-bit divide support instead of a native divide. On 32-bit platforms, a 64-bit divide typically requires a library function which may not be present in the build (kernel or otherwise).
Implemented a targeted error message for timeouts returned from the Embedded Controller device driver. This is seen frequently enough to special-case an AE_TIME returned from an EC operation region access: "Timeout from EC hardware or EC device driver"
Changed the "ACPI Exception" message prefix to "ACPI Error" so that all runtime error messages have the identical prefix.
2) iASL Compiler/Disassembler and Tools:
AcpiXtract: Fixed a problem with table header detection within the acpidump file. Processing a table could be ended early if a 0x40 (@) appears in the original binary table, resulting in the @ symbol appearing in the decoded ASCII field at the end of the acpidump text line. The symbol caused acpixtract to incorrectly think it had reached the end of the current table and the beginning of a new table.
AcpiXtract: Added an option (-f) to ignore some errors during table extraction. This initial implementation ignores non-ASCII and non- printable characters found in the acpidump text file.
TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics for ASLTS. This feature is used to track memory allocations from different memory caches within the ACPICA code. At the end of an ASLTS run, these memory statistics are recorded and stored in a log file.
Debugger (user-space version): Implemented a simple "Background" command. Creates a new thread to execute a control method in the background, while control returns to the debugger prompt to allow additional commands. Syntax: Background <Namepath> [Arguments]
---------------------------------------- 29 September 2017. Summary of changes for version 20170929:
1) ACPICA kernel-resident subsystem:
Redesigned and implemented an improved ASL While() loop timeout mechanism. This mechanism is used to prevent infinite loops in the kernel AML interpreter caused by either non-responsive hardware or incorrect AML code. The new implementation uses AcpiOsGetTimer instead of a simple maximum loop count, and is thus more accurate and constant across different machines. The default timeout is currently 30 seconds, but this may be adjusted later.
Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to better reflect the new implementation of the loop timeout mechanism.
Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support and to fix an off-by-one error. Jung-uk Kim.
Fixed an EFI build problem by updating the makefiles to for a new file that was added, utstrsuppt.c
2) iASL Compiler/Disassembler and Tools:
Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This includes support in the table disassembler, compiler, and template generator.
iASL: Added an exception for an illegal type of recursive method invocation. If a method creates named objects, the first recursive call will fail at runtime. This change adds an error detection at compile time to catch the problem up front. Note: Marking such a method as "serialized" will not help with this problem, because the same thread can acquire the method mutex more than once. Example compiler and runtime output:
Method (MTH1) { Name (INT1, 1) MTH1 () }
dsdt.asl 22: MTH1 () Error 6152 - ^ Illegal recursive call to method that creates named objects (MTH1)
Previous runtime exception: ACPI Error: [INT1] Namespace lookup failure, AE_ALREADY_EXISTS (20170831/dswload2-465)
iASL: Updated support for External() opcodes to improve namespace management and error detection. These changes are related to issues seen with multiple-segment namespace pathnames within External declarations, such as below:
External(\_SB.PCI0.GFX0, DeviceObj) External(\_SB.PCI0.GFX0.ALSI)
iASL: Implemented support for multi-line error/warning messages. This enables more detailed and helpful error messages as below, from the initial deployment for the duplicate names error:
DSDT.iiii 1692: Device(PEG2) { Error 6074 - ^ Name already exists in scope (PEG2)
Original name creation/declaration below: DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
AcpiXtract: Added additional flexibility to support differing input hex dump formats. Specifically, hex dumps that contain partial disassembly and/or comments within the ACPI table data definition. There exist some dump utilities seen in the field that create this type of hex dump (such as Simics). For example:
DSDT @ 0xdfffd0c0 (10999 bytes) Signature DSDT Length 10999 Revision 1 Checksum 0xf3 (Ok) OEM_ID BXPC OEM_table_id BXDSDT OEM_revision 1 Creator_id 1280593481 Creator_revision 537399345 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 ... 2af0: 5f 4c 30 46 00 a4 01
Test suite: Miscellaneous changes/fixes: More cleanup and simplification of makefiles Continue compilation of test cases after a compile failure Do not perform binary compare unless both files actually exist
iASL: Performed some code/module restructuring. Moved all memory allocation functions to new modules. Two new files, aslallocate.c and aslcache.c
show more ...
|
#
ab389a9f |
| 25-Jan-2017 |
christos <christos@NetBSD.org> |
One more time in the right place...
---------------------------------------- 19 January 2017. Summary of changes for version 20170119:
This release is available at https://acpica.org/downloads
1)
One more time in the right place...
---------------------------------------- 19 January 2017. Summary of changes for version 20170119:
This release is available at https://acpica.org/downloads
1) General ACPICA software:
Entire source code base: Added the 2017 copyright to all source code legal/licensing module headers and utility/tool signons. This includes the standard Linux dual-license header. This affects virtually every file in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and the ACPICA test suite.
2) iASL Compiler/Disassembler and Tools:
iASL: Removed/fixed an inadvertent remark when a method argument containing a reference is used as a target operand within the method (and never used as a simple argument), as in the example below. Jeffrey Hugo.
dsdt.asl 1507: Store(0x1, Arg0) Remark 2146 - ^ Method Argument is never used (Arg0)
All tools: Removed the bit width of the compiler that generated the tool from the common signon for all user space tools. This proved to be confusing and unnecessary. This includes similar removal of HARDWARE_NAME from the generic makefiles (Thomas Petazzoni). Example below.
Old: ASL+ Optimizing Compiler version 20170119-32 ASL+ Optimizing Compiler version 20170119-64
New: ASL+ Optimizing Compiler version 20170119
---------------------------------------- 22 December 2016. Summary of changes for version 20161222:
1) ACPICA kernel-resident subsystem:
AML Debugger: Implemented a new mechanism to simplify and enhance debugger integration into all environments, including kernel debuggers and user-space utilities, as well as remote debug services. This mechanism essentially consists of new OSL interfaces to support debugger initialization/termination, as well as wait/notify interfaces to perform the debugger handshake with the host. Lv Zheng.
New OSL interfaces: AcpiOsInitializeDebugger (void) AcpiOsTerminateDebugger (void) AcpiOsWaitCommandReady (void) AcpiOsNotifyCommandComplete (void)
New OS services layer: osgendbg.c -- Example implementation, and used for AcpiExec
Update for Generic Address Space (GAS) support: Although the AccessWidth and/or BitOffset fields of the GAS are not often used, this change now fully supports these fields. This affects the internal support for FADT registers, registers in other ACPI data tables, and the AcpiRead and AcpiWrite public interfaces. Lv Zheng.
Sleep support: In order to simplify integration of ACPI sleep for the various host operating systems, a new OSL interface has been introduced. AcpiOsEnterSleep allows the host to perform any required operations before the final write to the sleep control register(s) is performed by ACPICA. Lv Zheng.
New OSL interface: AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
Called from these internal interfaces: AcpiHwLegacySleep AcpiHwExtendedSleep
EFI support: Added a very small EFI/ACPICA example application. Provides a simple demo for EFI integration, as well as assisting with resolution of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
source/tools/efihello/efihello.c
Local C library: Implemented several new functions to enhance ACPICA portability, for environments where these clib functions are not available (such as EFI). Lv Zheng: putchar getchar strpbrk strtok memmove
Fixed a regression where occasionally a valid resource descriptor was incorrectly detected as invalid at runtime, and a AE_AML_NO_RESOURCE_END_TAG was returned.
Fixed a problem with the recently implemented support that enables control method invocations as Target operands to many ASL operators. Warnings of this form: "Needed type [Reference], found [Processor]" were seen at runtime for some method invocations.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total Debug Version: 201.7K Code, 82.7K Data, 284.4K Total Previous Release: Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Enhanced output by adding the capability to detect and disassemble ASL Switch/Case statements back to the original ASL source code instead of if/else blocks. David Box.
AcpiHelp: Split a large file into separate files based upon functionality/purpose. New files are: ahaml.c ahasl.c
---------------------------------------- 17 November 2016. Summary of changes for version 20161117:
1) ACPICA kernel-resident subsystem:
Table Manager: Fixed a regression introduced in 20160729, "FADT support cleanup". This was an attempt to remove all references in the source to the FADT version 2, which never was a legal version number. It was skipped because it was an early version of 64-bit support that was eventually abandoned for the current 64-bit support.
Interpreter: Fixed a problem where runtime implicit conversion was incorrectly disabled for the ASL operators below. This brings the behavior into compliance with the ACPI specification: FromBCD ToBCD ToDecimalString ToHexString ToInteger ToBuffer
Table Manager: Added a new public interface, AcpiPutTable, used to release and free an ACPI table returned by AcpiGetTable and related interfaces. Lv Zheng.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total Debug Version: 201.3K Code, 82.7K Data, 284.0K Total Previous Release: Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a regression for disassembly of Resource Template. Detection of templates in the AML stream missed some types of templates.
iASL: Fixed a problem where an Access Size error was returned for the PCC address space when the AccessSize of the GAS register is greater than a DWORD. Hoan Tran.
iASL: Implemented several grammar changes for the operators below. These changes are slated for the next version of the ACPI specification: RefOf - Disallow method invocation as an operand CondRefOf - Disallow method invocation as an operand DerefOf - Disallow operands that use the result from operators that do not return a reference (Changed TermArg to SuperName).
iASL: Control method invocations are now allowed for Target operands, as per the ACPI specification. Removed error for using a control method invocation as a Target operand.
Disassembler: Improved detection of Resource Templates, Unicode, and Strings within Buffer objects. These subtypes do not contain a specific opcode to indicate the originating ASL code, and they must be detected by other means within the disassembler.
iASL: Implemented an optimization improvement for 32-bit ACPI tables (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode only after 64-bit to 32-bit truncation. A truncation warning message is still emitted, however.
AcpiXtract: Implemented handling for both types of line terminators (LF or CR/LF) so that it can accept AcpiDump output files from any system. Peter Wu.
AcpiBin: Added two new options for comparing AML files: -a: compare and display ALL mismatches -o: start compare at this offset into the second file
show more ...
|
#
5b9576aa |
| 11-Nov-2016 |
christos <christos@NetBSD.org> |
Import acpica-20160930:
---------------------------------------- 30 September 2016. Summary of changes for version 20160930:
1) ACPICA kernel-resident subsystem:
Fixed a regression in the interna
Import acpica-20160930:
---------------------------------------- 30 September 2016. Summary of changes for version 20160930:
1) ACPICA kernel-resident subsystem:
Fixed a regression in the internal AcpiTbFindTable function where a non AE_OK exception could inadvertently be returned even if the function did not fail. This problem affects the following operators: DataTableRegion LoadTable
Fixed a regression in the LoadTable operator where a load to any namespace location other than the root no longer worked properly.
Increased the maximum loop count value that will result in the AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to prevent infinite loops within the AML interpreter and thus the host OS kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 1,048,575).
Moved the AcpiGbl_MaxLoopIterations configuration variable to the public acpixf.h file. This allows hosts to easily configure the maximum loop count at runtime.
Removed an illegal character in the strtoul64.c file. This character caused errors with some C compilers.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total Debug Version: 200.7K Code, 82.1K Data, 282.8K Total Previous Release: Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a problem with the conversion of Else{If{ blocks into the simpler ASL ElseIf keyword. During the conversion, a trailing If block could be lost and missing from the disassembled output.
iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, the missing rule caused a parse error when using the Index operator as an operand to ObjectType. This construct now compiles properly. Example: ObjectType(PKG1[4]).
iASL: Correctly handle unresolved symbols in the hardware map file (-lm option). Previously, unresolved symbols could cause a protection fault. Such symbols are now marked as unresolved in the map file.
iASL: Implemented support to allow control method invocations as an operand to the ASL DeRefOf operator. Example: DeRefOf(MTH1(Local0))
Disassembler: Improved support for the ToPLD ASL macro. Detection of a possible _PLD buffer now includes examination of both the normal buffer length (16 or 20) as well as the surrounding AML package length.
Disassembler: Fixed a problem with the decoding of complex expressions within the Divide operator for ASL+. For the case where both the quotient and remainder targets are specified, the entire statement cannot be disassembled. Previously, the output incorrectly contained a mix of ASL- and ASL+ operators. This mixed statement causes a syntax error when compiled. Example: Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly disassembled to: Divide (INT1 + 6, 128, RSLT, QUOT)
iASL/Tools: Added support to process AML and non-AML ACPI tables consistently. For the disassembler and AcpiExec, allow all types of ACPI tables (AML and data tables). For the iASL -e option, allow only AML tables (DSDT/SSDT).
---------------------------------------- 31 August 2016. Summary of changes for version 20160831:
1) ACPICA kernel-resident subsystem:
Improve support for the so-called "module-level code", which is defined to be math, logical and control AML opcodes that appear outside of any control method. This change improves the support by adding more opcodes that can be executed in the manner. Some other issues have been solved, and the ASL grammar changes to support such code under all scope operators (Device, etc.) are complete. Lv Zheng.
UEFI support: these OSL functions have been implemented. This is an additional step toward supporting the AcpiExec utility natively (with full hardware access) under UEFI. Marcelo Ferreira. AcpiOsReadPciConfiguration AcpiOsWritePciConfiguration
Fixed a possible mutex error during control method auto-serialization. Lv Zheng.
Updated support for the Generic Address Structure by fully implementing all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv Zheng.
Updated the return value for the internal _OSI method. Instead of 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF for 64-bit ACPI tables. This fixes an incompatibility with other ACPI implementations, and will be reflected and clarified in the next version of the ACPI specification.
Implemented two new table events that can be passed to an ACPICA table handler. These events are used to indicate a table installation or uninstallation. These events are used in addition to existed table load and unload events. Lv Zheng.
Implemented a cleanup for all internal string-to-integer conversions. Consolidate multiple versions of this functionality and limit possible bases to either 10 or 16 to simplify the code. Adds a new file, utstrtoul64.
Cleanup the inclusion order of the various compiler-specific headers. This simplifies build configuration management. The compiler-specific headers are now split out from the host-specific headers. Lv Zheng.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2) iASL Compiler/Disassembler and Tools:
iASL/AcpiExec: Added a command line option to display the build date/time of the tool (-vd). This can be useful to verify that the correct version of the tools are being used.
AML Debugger: Implemented a new subcommand ("execute predef") to execute all predefined control methods and names within the current namespace. This can be useful for debugging problems with ACPI tables and the ACPI namespace.
---------------------------------------- 29 July 2016. Summary of changes for version 20160729:
1) ACPICA kernel-resident subsystem:
Implemented basic UEFI support for the various ACPICA tools. This includes: 1) An OSL to implement the various AcpiOs* interfaces on UEFI. 2) Support to obtain the ACPI tables on UEFI. 3) Local implementation of required C library functions not available on UEFI. 4) A front-end (main) function for the tools for UEFI-related initialization.
The initial deployment of this support is the AcpiDump utility executing as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). Current environments supported are Linux/Unix. MSVC generation is not supported at this time. See the generate/efi/README file for build instructions. Lv Zheng.
Future plans include porting the AcpiExec utility to execute natively on the platform with I/O and memory access. This will allow viewing/dump of the platform namespace and native execution of ACPI control methods that access the actual hardware. To fully implement this support, the OSL functions below must be implemented with UEFI interfaces. Any community help in the implementation of these functions would be appreciated: AcpiOsReadPort AcpiOsWritePort AcpiOsReadMemory AcpiOsWriteMemory AcpiOsReadPciConfiguration AcpiOsWritePciConfiguration
Restructured and standardized the C library configuration for ACPICA, resulting in the various configuration options below. This includes a global restructuring of the compiler-dependent and platform-dependent include files. These changes may affect the existing platform-dependent configuration files on some hosts. Lv Zheng.
The current C library configuration options appear below. For any issues, it may be helpful to examine the existing compiler-dependent and platform-dependent files as examples. Lv Zheng.
1) Linux kernel: ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C library. ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 2) Unix/Windows/BSD applications: ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C library. ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 3) UEFI applications: ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C library. ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 4) UEFI applications (EDK2/StdLib): ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
AML interpreter: "module-level code" support. Allows for execution of so- called "executable" AML code (math/logical operations, etc.) outside of control methods not just at the module level (top level) but also within any scope declared outside of a control method - Scope{}, Device{}, Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
Simplified the configuration of the "maximum AML loops" global option by adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be modified at runtime.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Add full support for the RASF ACPI table (RAS Features Table). Includes disassembler, data table compiler, and header support.
iASL Expand "module-level code" support. Allows for compilation/disassembly of so-called "executable" AML code (math/logical operations, etc.) outside of control methods not just at the module level (top level) but also within any scope declared outside of a control method - Scope{}, Device{}, Processor{}, PowerResource{}, and ThermalZone{}.
AcpiDump: Added support for dumping all SSDTs on newer versions of Windows. These tables are now easily available -- SSDTs are not available through the registry on older versions.
show more ...
|
#
5fe1040d |
| 09-Jan-2016 |
christos <christos@NetBSD.org> |
import new acpica:
---------------------------------------- 8 January 2016. Summary of changes for version 20160108:
1) ACPICA kernel-resident subsystem:
Updated all ACPICA copyrights and signons
import new acpica:
---------------------------------------- 8 January 2016. Summary of changes for version 20160108:
1) ACPICA kernel-resident subsystem:
Updated all ACPICA copyrights and signons to 2016: Added the 2016 copyright to all source code module headers and utility/tool signons. This includes the standard Linux dual-license header. This affects virtually every file in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and the ACPICA test suite.
Fixed a regression introduced in version 20151218 concerning the execution of so-called module-level ASL/AML code. Namespace objects created under a module-level If() construct were not properly/fully entered into the namespace and could cause an interpreter fault when accessed.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total Debug Version: 200.4K Code, 81.9K Data, 282.4K Total Previous Release: Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2) iASL Compiler/Disassembler and Tools:
Fixed a problem with the compilation of the GpioIo and GpioInt resource descriptors. The _PIN field name was incorrectly defined to be an array of 32-bit values, but the _PIN values are in fact 16 bits each. This would cause incorrect bit width warnings when using Word (16-bit) fields to access the descriptors.
---------------------------------------- 18 December 2015. Summary of changes for version 20151218:
1) ACPICA kernel-resident subsystem:
Implemented per-AML-table execution of "module-level code" as individual ACPI tables are loaded into the namespace during ACPICA initialization. In other words, any module-level code within an AML table is executed immediately after the table is loaded, instead of batched and executed after all of the tables have been loaded. This provides compatibility with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, David Box.
To fully support the feature above, the default operation region handlers for the SystemMemory, SystemIO, and PCI_Config address spaces are now installed before any ACPI tables are loaded. This enables module-level code to access these address spaces during the table load and module- level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David Box.
Implemented several changes to the internal _REG support in conjunction with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples utilities for the changes above. Although these tools were changed, host operating systems that simply use the default handlers for SystemMemory, SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
For example, in the code below, DEV1 is conditionally added to the namespace by the DSDT via module-level code that accesses an operation region. The SSDT references DEV1 via the Scope operator. DEV1 must be created immediately after the DSDT is loaded in order for the SSDT to successfully reference DEV1. Previously, this code would cause an AE_NOT_EXIST exception during the load of the SSDT. Now, this code is fully supported by ACPICA.
DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) { OperationRegion (OPR1, SystemMemory, 0x400, 32) Field (OPR1, AnyAcc, NoLock, Preserve) { FLD1, 1 } If (FLD1) { Device (\DEV1) { } } } DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) { External (\DEV1, DeviceObj) Scope (\DEV1) { } }
Fixed an AML interpreter problem where control method invocations were not handled correctly when the invocation was itself a SuperName argument to another ASL operator. In these cases, the method was not invoked. ACPICA BZ 1002. Affects the following ASL operators that have a SuperName argument: Store Acquire, Wait CondRefOf, RefOf Decrement, Increment Load, Unload Notify Signal, Release, Reset SizeOf
Implemented automatic String-to-ObjectReference conversion support for packages returned by predefined names (such as _DEP). A common BIOS error is to add double quotes around an ObjectReference namepath, which turns the reference into an unexpected string object. This support detects the problem and corrects it before the package is returned to the caller that invoked the method. Lv Zheng.
Implemented extensions to the Concatenate operator. Concatenate now accepts any type of object, it is not restricted to simply Integer/String/Buffer. For objects other than these 3 basic data types, the argument is treated as a string containing the name of the object type. This expands the utility of Concatenate and the Printf/Fprintf macros. ACPICA BZ 1222.
Cleaned up the output of the ASL Debug object. The timer() value is now optional and no longer emitted by default. Also, the basic data types of Integer/String/Buffer are simply emitted as their values, without a data type string -- since the data type is obvious from the output. ACPICA BZ 1221.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total Debug Version: 200.3K Code, 81.9K Data, 282.3K Total Previous Release: Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed some issues with the ASL Include() operator. This operator was incorrectly defined in the iASL parser rules, causing a new scope to be opened for the code within the include file. This could lead to several issues, including allowing ASL code that is technically illegal and not supported by AML interpreters. Note, this does not affect the related #include preprocessor operator. ACPICA BZ 1212.
iASL/Disassembler: Implemented support for the ASL ElseIf operator. This operator is essentially an ASL macro since there is no AML opcode associated with it. The code emitted by the iASL compiler for ElseIf is an Else opcode followed immediately by an If opcode. The disassembler will now emit an ElseIf if it finds an Else immediately followed by an If. This simplifies the decoded ASL, especially for deeply nested If..Else and large Switch constructs. Thus, the disassembled code more closely follows the original source ASL. ACPICA BZ 1211. Example:
Old disassembly: Else { If (Arg0 == 0x02) { Local0 = 0x05 } }
New disassembly: ElseIf (Arg0 == 0x02) { Local0 = 0x05 }
AcpiExec: Added support for the new module level code behavior and the early region installation. This required a small change to the initialization, since AcpiExec must install its own operation region handlers.
AcpiExec: Added support to make the debug object timer optional. Default is timer disabled. This cleans up the debug object output -- the timer data is rarely used.
AcpiExec: Multiple ACPI tables are now loaded in the order that they appear on the command line. This can be important when there are interdependencies/references between the tables.
iASL/Templates. Add support to generate template files with multiple SSDTs within a single output file. Also added ommand line support to specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 1223, 1225.
---------------------------------------- 24 November 2015. Summary of changes for version 20151124:
1) ACPICA kernel-resident subsystem:
Fixed a possible regression for a previous update to FADT handling. The FADT no longer has a fixed table ID, causing some issues with code that was hardwired to a specific ID. Lv Zheng.
Fixed a problem where the method auto-serialization could interfere with the current SyncLevel. This change makes the auto-serialization support transparent to the SyncLevel support and management.
Removed support for the _SUB predefined name in AcpiGetObjectInfo. This interface is intended for early access to the namespace during the initial namespace device discovery walk. The _SUB method has been seen to access operation regions in some cases, causing errors because the operation regions are not fully initialized.
AML Debugger: Fixed some issues with the terminate/quit/exit commands that can cause faults. Lv Zheng.
AML Debugger: Add thread ID support so that single-step mode only applies to the AML Debugger thread. This prevents runtime errors within some kernels. Lv Zheng.
Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx methods that are invoked by this interface are optional, removed warnings emitted for the case where one or more of these methods do not exist. ACPICA BZ 1208, original change by Prarit Bhargava.
Made a major pass through the entire ACPICA source code base to standardize formatting that has diverged a bit over time. There are no functional changes, but this will of course cause quite a few code differences from the previous ACPICA release.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total Debug Version: 199.6K Code, 81.8K Data, 281.4K Total Previous Release: Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2) iASL Compiler/Disassembler and Tools:
iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple definition blocks within a single ASL file and the resulting AML file. Support for this type of file was also added to the various tools that use binary AML files: acpiexec, acpixtract, and the AML disassembler. The example code below shows two definition blocks within the same file:
DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 0x12345678) { } DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) { }
iASL: Enhanced typechecking for the Name() operator. All expressions for the value of the named object must be reduced/folded to a single constant at compile time, as per the ACPI specification (the AML definition of Name()).
iASL: Fixed some code indentation issues for the -ic and -ia options (C and assembly headers). Now all emitted code correctly begins in column 1.
iASL: Added an error message for an attempt to open a Scope() on an object defined in an SSDT. The DSDT is always loaded into the namespace first, so any attempt to open a Scope on an SSDT object will fail at runtime.
---------------------------------------- 30 September 2015. Summary of changes for version 20150930:
1) ACPICA kernel-resident subsystem:
Debugger: Implemented several changes and bug fixes to assist support for the in-kernel version of the AML debugger. Lv Zheng. - Fix the "predefined" command for in-kernel debugger. - Do not enter debug command loop for the help and version commands. - Disallow "execute" command during execution/single-step of a method.
Interpreter: Updated runtime typechecking for all operators that have target operands. The operand is resolved and validated that it is legal. For example, the target cannot be a non-data object such as a Device, Mutex, ThermalZone, etc., as per the ACPI specification.
Debugger: Fixed the double-mutex user I/O handshake to work when local deadlock detection is enabled.
Debugger: limited display of method locals and arguments (LocalX and ArgX) to only those that have actually been initialized. This prevents lines of extraneous output.
Updated the definition of the NFIT table to correct the bit polarity of one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total Debug Version: 199.3K Code, 81.4K Data, 280.7K Total Previous Release: Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Improved the compile-time typechecking for operands of many of the ASL operators:
-- Added an option to disable compiler operand/operator typechecking (- ot).
-- For the following operators, the TermArg operands are now validated when possible to be Integer data objects: BankField, OperationRegion, DataTableRegion, Buffer, and Package.
-- Store (Source, Target): Both the source and target operands are resolved and checked that the operands are both legal. For example, neither operand can be a non-data object such as a Device, Mutex, ThermalZone, etc. Note, as per the ACPI specification, the CopyObject operator can be used to store an object to any type of target object.
-- Store (Source, Target): If the source is a Package object, the target must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target is a Package, the source must also be a Package.
-- Store (Source, Target): A warning is issued if the source and target resolve to the identical named object.
-- Store (Source, <method invocation>): An error is generated for the target method invocation, as this construct is not supported by the AML interpreter.
-- For all ASL math and logic operators, the target operand must be a data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This includes the function return value also.
-- External declarations are also included in the typechecking where possible. External objects defined using the UnknownObj keyword cannot be typechecked, however.
iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index operator: - Legacy code: Index(PKG1, 3) - New ASL+ code: PKG1[3] This completes the ACPI 6.0 ASL+ support as it was the only operator not supported.
iASL: Fixed the file suffix for the preprocessor output file (.i). Two spaces were inadvertently appended to the filename, causing file access and deletion problems on some systems.
ASL Test Suite (ASLTS): Updated the master makefile to generate all possible compiler output files when building the test suite -- thus exercising these features of the compiler. These files are automatically deleted when the test suite exits.
---------------------------------------- 18 August 2015. Summary of changes for version 20150818:
1) ACPICA kernel-resident subsystem:
Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv Zheng. ACPICA BZ 1186.
Completed development to ensure that the ACPICA Disassembler and Debugger are fully standalone components of ACPICA. Removed cross-component dependences. Lv Zheng.
The max-number-of-AML-loops is now runtime configurable (previously was compile-time only). This is essentially a loop timeout to force-abort infinite AML loops. ACPCIA BZ 1192.
Debugger: Cleanup output to dump ACPI names and namepaths without any trailing underscores. Lv Zheng. ACPICA BZ 1135.
Removed unnecessary conditional compilations across the Debugger and Disassembler components where entire modules could be left uncompiled.
The aapits test is deprecated and has been removed from the ACPICA git tree. The test has never been completed and has not been maintained, thus becoming rather useless. ACPICA BZ 1015, 794.
A batch of small changes to close bugzilla and other reports: - Remove duplicate code for _PLD processing. ACPICA BZ 1176. - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. - iASL: Support POSIX yacc again in makefile. Jung-uk Kim. - ACPI table support: general cleanup and simplification. Lv Zheng, Bob Moore. - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. ACPICA BZ 1184. - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML operators. - Debugger: Split debugger initialization/termination interfaces. Lv Zheng. - AcpiExec: Emit OemTableId for SSDTs during the load phase for table identification. - AcpiExec: Add debug message during _REG method phase during table load/init. - AcpiNames: Fix a regression where some output was missing and no longer emitted. - Debugger: General cleanup and simplification. Lv Zheng. - Disassembler: Cleanup use of several global option variables. Lv Zheng.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total Debug Version: 198.6K Code, 80.9K Data, 279.5K Total Previous Release: Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2) iASL Compiler/Disassembler and Tools:
AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT were not handled properly and caused load errors. Now, properly invoke and use the ACPICA auto-reallocate mechanism for ACPI table data structures. ACPICA BZ 1188
AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA BZ 1190.
AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For AcpiExec, this means that no control methods (like _REG/_INI/_STA) are executed during initialization. ACPICA BZ 1187, 1189.
iASL/Disassembler: Implemented a prototype "listing" mode that emits AML that corresponds to each disassembled ASL statement, to simplify debugging. ACPICA BZ 1191.
Debugger: Add option to the "objects" command to display a summary of the current namespace objects (Object type and count). This is displayed if the command is entered with no arguments.
AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
----------------------------------------
show more ...
|
#
db5c6ae1 |
| 18-Aug-2015 |
christos <christos@NetBSD.org> |
---------------------------------------- 17 July 2015. Summary of changes for version 20150717:
1) ACPICA kernel-resident subsystem:
Improved the partitioning between the Debugger and Disassembler
---------------------------------------- 17 July 2015. Summary of changes for version 20150717:
1) ACPICA kernel-resident subsystem:
Improved the partitioning between the Debugger and Disassembler components. This allows the Debugger to be used standalone within kernel code without the Disassembler (which is used for single stepping also). This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
Debugger: Implemented a new command to trace the execution of control methods (Trace). This is especially useful for the in-kernel version of the debugger when file I/O may not be available for method trace output. See the ACPICA reference for more information. Lv Zheng.
Moved all C library prototypes (used for the local versions of these functions when requested) to a new header, acclib.h Cleaned up the use of non-ANSI C library functions. These functions are implemented locally in ACPICA. Moved all such functions to a common source file, utnonansi.c
Debugger: Fixed a problem with the "!!" command (get last command executed) where the debugger could enter an infinite loop and eventually crash.
Removed the use of local macros that were used for some of the standard C library functions to automatically cast input parameters. This mostly affected the is* functions where the input parameter is defined to be an int. This required a few modifications to the main ACPICA source code to provide casting for these functions and eliminate possible compiler warnings for these parameters.
Across the source code, added additional status/error checking to resolve issues discovered by static source code analysis tools such as Coverity.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total Debug Version: 197.8K Code, 81.5K Data, 279.3K Total Previous Release: Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a regression where the device map file feature no longer worked properly when used in conjunction with the disassembler. It only worked properly with the compiler itself.
iASL: Implemented a new warning for method LocalX variables that are set but never used (similar to a C compiler such as gcc). This also applies to ArgX variables that are not defined by the parent method, and are instead (legally) used as local variables.
iASL/Preprocessor: Finished the pass-through of line numbers from the preprocessor to the compiler. This ensures that compiler errors/warnings have the correct original line numbers and filenames, regardless of any #include files.
iASL/Preprocessor: Fixed a couple of issues with comment handling and the pass-through of comments to the preprocessor output file (which becomes the compiler input file). Also fixed a problem with // comments that appear after a math expression.
iASL: Added support for the TCPA server table to the table compiler and template generator. (The client table was already previously supported)
iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to identify the iASL compiler.
Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined multiple times. The new names are ACPI_SIGN_NEGATIVE and ACPI_SIGN_POSITIVE.
AcpiHelp: Update to expand help messages for the iASL preprocessor directives.
---------------------------------------- 19 June 2015. Summary of changes for version 20150619:
Two regressions in version 20150616 have been addressed:
Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, etc.) This update changes ACPICA to only use the standard headers for functions, or the prototypes for the local versions of the C library functions. Across the source code, this required some additional casts for some Clib invocations for portability. Moved all local prototypes to a new file, acclib.h
Fixes several problems with recent changes to the handling of the FACS table that could cause some systems not to boot.
---------------------------------------- 16 June 2015. Summary of changes for version 20150616:
1) ACPICA kernel-resident subsystem:
Across the entire ACPICA source code base, the various macros for the C library functions (such as ACPI_STRLEN, etc.) have been removed and replaced by the standard C library names (strlen, etc.) The original purpose for these macros is no longer applicable. This simplification reduces the number of macros used in the ACPICA source code significantly, improving readability and maintainability.
Implemented support for a new ACPI table, the OSDT. This table, the "override" SDT, can be loaded directly by the host OS at boot time. It enables the replacement of existing namespace objects that were installed via the DSDT and/or SSDTs. The primary purpose for this is to replace buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob Moore.
Added support for systems with (improperly) two FACS tables -- a "32-bit" table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit X field). This change will support both automatically. There continues to be systems found with this issue. This support requires a change to the AcpiSetFirmwareWakingVector interface. Also, a public global variable has been added to allow the host to select which FACS is desired (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more details Lv Zheng.
Added a new feature to allow for systems that do not contain an FACS. Although this is already supported on hardware-reduced platforms, the feature has been extended for all platforms. The reasoning is that we do not want to abort the entire ACPICA initialization just because the system is seriously buggy and has no FACS.
Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were not correctly transcribed from the ACPI specification in ACPICA version 20150515.
Implemented support for the _CLS object in the AcpiGetObjectInfo external interface.
Updated the definitions of the TCPA and TPM2 ACPI tables to the more recent TCG ACPI Specification, December 14, 2014. Table disassembler and compiler also updated. Note: The TCPA "server" table is not supported by the disassembler/table-compiler at this time.
ACPI 6.0: Added definitions for the new GIC version field in the MADT.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total Debug Version: 196.2K Code, 81.0K Data, 277.2K Total Previous Release: Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a problem with the new symbolic operator disassembler where incorrect ASL code could be emitted in some cases for the "non- commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and ShiftRight. The actual problem cases seem to be rather unusual in common ASL code, however. David Box.
Modified the linux version of acpidump to obtain ACPI tables from not just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv Zheng.
iASL: Fixed a problem where the user preprocessor output file (.i) contained extra data that was not expected. The compiler was using this file as a temporary file and passed through #line directives in order to keep compiler error messages in sync with the input file and line number across multiple include files. The (.i) is no longer a temporary file as the compiler uses a new, different file for the original purpose.
iASL: Fixed a problem where comments within the original ASL source code file were not passed through to the preprocessor output file, nor any listing files.
iASL: Fixed some issues for the handling of the "#include" preprocessor directive and the similar (but not the same) "Include" ASL operator.
iASL: Add support for the new OSDT in both the disassembler and compiler.
iASL: Fixed a problem with the constant folding support where a Buffer object could be incorrectly generated (incorrectly formed) during a conversion to a Store() operator.
AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new description text for the _REV predefined name. _REV now permanently returns 2, as per the ACPI 6.0 specification.
Debugger: Enhanced the output of the Debug ASL object for references produced by the Index operator. For Buffers and strings, only output the actual byte pointed to by the index. For packages, only print the single package element decoded by the index. Previously, the entire buffer/string/package was emitted.
iASL/Table-compiler: Fixed a regression where the "generic" data types were no longer recognized, causing errors.
---------------------------------------- 15 May 2015. Summary of changes for version 20150515:
This release implements most of ACPI 6.0 as described below.
1) ACPICA kernel-resident subsystem:
Implemented runtime argument checking and return value checking for all new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total Debug Version: 195.2K Code, 80.8K Data, 276.0K Total Previous Release: Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
2) iASL Compiler/Disassembler and Tools:
iASL compiler: Added compile-time support for all new ACPI 6.0 predefined names (argument count validation and return value typechecking.)
iASL disassembler and table compiler: implemented support for all new ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
iASL disassembler and table compiler: Added ACPI 6.0 changes to existing tables: FADT, MADT.
iASL preprocessor: Added a new directive to enable inclusion of binary blobs into ASL code. The new directive is #includebuffer. It takes a binary file as input and emits a named ascii buffer object into the ASL code.
AcpiHelp: Added support for all new ACPI 6.0 predefined names.
AcpiHelp: Added a new option, -d, to display all iASL preprocessor directives.
AcpiHelp: Added a new option, -t, to display all known/supported ACPI tables.
show more ...
|
#
4e4949bd |
| 13-Apr-2015 |
christos <christos@NetBSD.org> |
---------------------------------------- 10 April 2015. Summary of changes for version 20150410:
Reverted a change introduced in version 20150408 that caused a regression in the disassembler where i
---------------------------------------- 10 April 2015. Summary of changes for version 20150410:
Reverted a change introduced in version 20150408 that caused a regression in the disassembler where incorrect operator symbols could be emitted.
---------------------------------------- 08 April 2015. Summary of changes for version 20150408:
1) ACPICA kernel-resident subsystem:
Permanently set the return value for the _REV predefined name. It now returns 2 (was 5). This matches other ACPI implementations. _REV will be deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 for ACPI 2.0 and later. It should never be used to differentiate or identify operating systems.
Added the "Windows 2015" string to the _OSI support. ACPICA will now return TRUE to a query with this string.
Fixed several issues with the local version of the printf function.
Added the C99 compiler option (-std=c99) to the Unix makefiles.
Current Release: Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total Debug Version: 195.2K Code, 80.7K Data, 275.9K Total Previous Release: Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented an enhancement to the constant folding feature to transform the parse tree to a simple Store operation whenever possible: Add (2, 3, X) ==> is converted to: Store (5, X) X = 2 + 3 ==> is converted to: Store (5, X)
Updated support for the SLIC table (Software Licensing Description Table) in both the Data Table compiler and the disassembler. The SLIC table support now conforms to "Microsoft Software Licensing Tables (SLIC and MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data following the ACPI header is now defined to be "Proprietary Data", and as such, can only be entered or displayed as a hex data block.
Implemented full support for the MSDM table as described in the document above. Note: The format of MSDM is similar to SLIC. Any MSDM data following the ACPI header is defined to be "Proprietary Data", and can only be entered or displayed as a hex data block.
Implemented the -Pn option for the iASL Table Compiler (was only implemented for the ASL compiler). This option disables the iASL preprocessor.
Disassembler: For disassembly of Data Tables, added a comment field around the Ascii equivalent data that is emitted as part of the "Raw Table Data" block. This prevents the iASL Preprocessor from possible confusion if/when the table is compiled.
Disassembler: Added an option (-df) to force the disassembler to assume that the table being disassembled contains valid AML. This feature is useful for disassembling AML files that contain ACPI signatures other than DSDT or SSDT (such as OEMx or other signatures).
Changes for the EFI version of the tools: 1) Fixed a build error/issue 2) Fixed a cast warning
iASL: Fixed a path issue with the __FILE__ operator by making the directory prefix optional within the internal SplitInputFilename function.
Debugger: Removed some unused global variables.
Tests: Updated the makefile for proper generation of the AAPITS suite.
---------------------------------------- 04 February 2015. Summary of changes for version 20150204:
ACPICA kernel-resident subsystem:
Updated all ACPICA copyrights and signons to 2014. Added the 2014 copyright to all module headers and signons, including the standard Linux header. This affects virtually every file in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and the test suites.
Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. A raw gpe handling mechanism was created to allow better handling of GPE storms that aren't easily managed by the normal handler. The raw handler allows disabling/renabling of the the GPE so that interrupt storms can be avoided in cases where events cannot be timely serviced. In this scenario, handlers should use the AcpiSetGpe() API to disable/enable the GPE. This API will leave the reference counts undisturbed, thereby preventing unintentional clearing of the GPE when the intent in only to temporarily disable it. Raw handlers allow enabling and disabling of a GPE by removing GPE register locking. As such, raw handlers much provide their own locks while using GPE API's to protect access to GPE data structures. Lv Zheng
Events: Always modify GPE registers under the GPE lock. Applies GPE lock around AcpiFinishGpe() to protect access to GPE register values. Reported as bug by joe.liu@apple.com.
Unix makefiles: Separate option to disable optimizations and _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the NOOPT disable option and creates a separate flag (NOFORTIFY) for this purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined errors when building ACPICA. This allows disabling the option without also having to disable optimazations. David Box
Current Release: Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
---------------------------------------- 07 November 2014. Summary of changes for version 20141107:
This release is available at https://acpica.org/downloads
This release introduces and implements language extensions to ASL that provide support for symbolic ("C-style") operators and expressions. These language extensions are known collectively as ASL+.
1) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a problem with disassembly of the UartSerialBus macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. Box.
Disassembler: Fixed the Unicode macro support to add escape sequences. All non-printable ASCII values are emitted as escape sequences, as well as the standard escapes for quote and backslash. Ensures that the disassembled macro can be correctly recompiled.
iASL: Added Printf/Fprintf macros for formatted output. These macros are translated to existing AML Concatenate and Store operations. Printf writes to the ASL Debug object. Fprintf allows the specification of an ASL name as the target. Only a single format specifier is required, %o, since the AML interpreter dynamically converts objects to the required type. David E. Box.
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate (Concatenate (Concatenate (Concatenate ("", Arg0), ": Unexpected value for "), Arg1), ", "), Arg2), " at line "), Arg3), Debug)
(new) Printf ("%o: Unexpected value for %o, %o at line %o", Arg0, Arg1, Arg2, Arg3)
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate ("", Arg1), ": "), Arg0), " Successful"), STR1)
(new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
iASL: Added debug options (-bp, -bt) to dynamically prune levels of the ASL parse tree before the AML code is generated. This allows blocks of ASL code to be removed in order to help locate and identify problem devices and/or code. David E. Box.
AcpiExec: Added support (-fi) for an optional namespace object initialization file. This file specifies initial values for namespace objects as necessary for debugging and testing different ASL code paths that may be taken as a result of BIOS options.
2) Overview of symbolic operator support for ASL (ASL+) -------------------------------------------------------
As an extension to the ASL language, iASL implements support for symbolic (C-style) operators for math and logical expressions. This can greatly simplify ASL code as well as improve both readability and maintainability. These language extensions can exist concurrently with all legacy ASL code and expressions.
The symbolic extensions are 100% compatible with existing AML interpreters, since no new AML opcodes are created. To implement the extensions, the iASL compiler transforms the symbolic expressions into the legacy ASL/AML equivalents at compile time.
Full symbolic expressions are supported, along with the standard C precedence and associativity rules.
Full disassembler support for the symbolic expressions is provided, and creates an automatic migration path for existing ASL code to ASL+ code via the disassembly process. By default, the disassembler now emits ASL+ code with symbolic expressions. An option (-dl) is provided to force the disassembler to emit legacy ASL code if desired.
Below is the complete list of the currently supported symbolic operators with examples. See the iASL User Guide for additional information.
ASL+ Syntax Legacy ASL Equivalent ----------- ---------------------
// Math operators
Z = X + Y Add (X, Y, Z) Z = X - Y Subtract (X, Y, Z) Z = X * Y Multiply (X, Y, Z) Z = X / Y Divide (X, Y, , Z) Z = X % Y Mod (X, Y, Z) Z = X << Y ShiftLeft (X, Y, Z) Z = X >> Y ShiftRight (X, Y, Z) Z = X & Y And (X, Y, Z) Z = X | Y Or (X, Y, Z) Z = X ^ Y Xor (X, Y, Z) Z = ~X Not (X, Z) X++ Increment (X) X-- Decrement (X)
// Logical operators
(X == Y) LEqual (X, Y) (X != Y) LNotEqual (X, Y) (X < Y) LLess (X, Y) (X > Y) LGreater (X, Y) (X <= Y) LLessEqual (X, Y) (X >= Y) LGreaterEqual (X, Y) (X && Y) LAnd (X, Y) (X || Y) LOr (X, Y) (!X) LNot (X)
// Assignment and compound assignment operations
X = Y Store (Y, X) X += Y Add (X, Y, X) X -= Y Subtract (X, Y, X) X *= Y Multiply (X, Y, X) X /= Y Divide (X, Y, , X) X %= Y Mod (X, Y, X) X <<= Y ShiftLeft (X, Y, X) X >>= Y ShiftRight (X, Y, X) X &= Y And (X, Y, X) X |= Y Or (X, Y, X) X ^= Y Xor (X, Y, X)
3) ASL+ Examples: -----------------
Legacy ASL: If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 0x03FB), 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) { And (MEMB, 0xFFFFFFF0, SRMB) Store (MEMB, Local2) Store (PDBM, Local1) And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) Store (SRMB, MEMB) Or (PDBM, 0x02, PDBM) }
ASL+ version: If (((R510 & 0x03FB) == 0x02E0) || ((R520 & 0x03FB) == 0x02E0) || ((R530 & 0x03FB) == 0x02E0) || ((R540 & 0x03FB) == 0x02E0)) { SRMB = (MEMB & 0xFFFFFFF0) Local2 = MEMB Local1 = PDBM PDBM &= 0xFFFFFFFFFFFFFFF9 MEMB = SRMB PDBM |= 0x02 }
Legacy ASL: Store (0x1234, Local1) Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) Store (Index (PKG1, 0x03), Local6) Store (Add (Local3, Local2), Debug) Add (Local1, 0x0F, Local2) Add (Local1, Multiply (Local2, Local3), Local2) Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
ASL+ version: Local1 = 0x1234 Local3 = (((Local1 + TEST) + 0x20) * Local2) Local3 = (Local2 * ((Local1 + TEST) + 0x20)) Local3 = (Local1 + (TEST + (0x20 * Local2))) Local6 = Index (PKG1, 0x03) Debug = (Local3 + Local2) Local2 = (Local1 + 0x0F) Local2 = (Local1 + (Local2 * Local3)) Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
show more ...
|
#
038c9182 |
| 25-Oct-2014 |
christos <christos@NetBSD.org> |
---------------------------------------- 26 September 2014. Summary of changes for version 20140926:
1) ACPICA kernel-resident subsystem:
Updated the GPIO operation region handler interface (Genera
---------------------------------------- 26 September 2014. Summary of changes for version 20140926:
1) ACPICA kernel-resident subsystem:
Updated the GPIO operation region handler interface (GeneralPurposeIo). In order to support GPIO Connection objects with multiple pins, along with the related Field objects, the following changes to the interface have been made: The Address is now defined to be the offset in bits of the field unit from the previous invocation of a Connection. It can be viewed as a "Pin Number Index" into the connection resource descriptor. The BitWidth is the exact bit width of the field. It is usually one bit, but not always. See the ACPICA reference guide (section 8.8.6.2.1) for additional information and examples.
GPE support: During ACPICA/GPE initialization, ensure that all GPEs with corresponding _Lxx/_Exx methods are disabled (they may have been enabled by the firmware), so that they cannot fire until they are enabled via AcpiUpdateAllGpes. Rafael J. Wysocki.
Added a new return flag for the Event/GPE status interfaces -- AcpiGetEventStatus and AcpiGetGpeStatus. The new ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or GPE currently has a handler associated with it, and can thus actually affect the system. Lv Zheng.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total Debug Version: 192.8K Code, 79.9K Data, 272.7K Total Previous Release: Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a memory allocation/free regression introduced in 20140828 that could cause the compiler to crash. This was introduced inadvertently during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 1113.
iASL: Removed two error messages that have been found to create false positives, until they can be fixed and fully validated (ACPICA BZ 1112): 1) Illegal forward reference within a method 2) Illegal reference across two methods
iASL: Implemented a new option (-lm) to create a hardware mapping file that summarizes all GPIO, I2C, SPI, and UART connections. This option works for both the compiler and disassembler. See the iASL compiler user guide for additional information and examples (section 6.4.6).
AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to version 2. This corrects the AE_BAD_HEADER exception seen on systems with a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode unless STDIN is actually a terminal. Assists with batch-mode processing. ACPICA BZ 1114.
Disassembler/AcpiHelp: Added another large group of recognized _HID values.
---------------------------------------- 28 August 2014. Summary of changes for version 20140828:
1) ACPICA kernel-resident subsystem:
Fixed a problem related to the internal use of the Timer() operator where a 64-bit divide could cause an attempted link to a double-precision math library. This divide is not actually necessary, so the code was restructured to eliminate it. Lv Zheng.
ACPI 5.1: Added support for the runtime validation of the _DSD package (similar to the iASL support).
ACPI 5.1/Headers: Added support for the GICC affinity subtable to the SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total Debug Version: 192.1K Code, 79.8K Data, 271.9K Total Previous Release: Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
2) iASL Compiler/Disassembler and Tools:
AcpiExec: Fixed a problem on unix systems where the original terminal state was not always properly restored upon exit. Seen when using the -v option. ACPICA BZ 1104.
iASL: Fixed a problem with the validation of the ranges/length within the Memory24 resource descriptor. There was a boundary condition when the range was equal to the (length -1) caused by the fact that these values are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
Disassembler: Fixed a problem with the GpioInt descriptor interrupt polarity flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword is now supported properly.
ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported in the disassembler, data table compiler, and table template generator.
iASL: Added a requirement for Device() objects that one of either a _HID or _ADR must exist within the scope of a Device, as per the ACPI specification. Remove a similar requirement that was incorrectly in place for the _DSD object.
iASL: Added error detection for illegal named references within control methods that would cause runtime failures. Now trapped as errors are: 1) References to objects within a non-parent control method. 2) Forward references (within a method) -- for control methods, AML interpreters use a one-pass parse of control methods. ACPICA BZ 1008.
iASL: Added error checking for dependencies related to the _PSx power methods. ACPICA BZ 1029. 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2, _PS3. 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same scope.
iASL and table compiler: Cleanup miscellaneous memory leaks by fully deploying the existing object and string caches and adding new caches for the table compiler.
iASL: Split the huge parser source file into multiple subfiles to improve manageability. Generation now requires the M4 macro preprocessor, which is part of the Bison distribution on both unix and windows platforms.
AcpiSrc: Fixed and removed all extraneous warnings generated during entire ACPICA source code scan and/or conversion.
----------------------------------------
24 July 2014. Summary of changes for version 20140724:
The ACPI 5.1 specification has been released and is available at: http://uefi.org/specs/access
0) ACPI 5.1 support in ACPICA:
ACPI 5.1 is fully supported in ACPICA as of this release.
New predefined names. Support includes iASL and runtime ACPICA validation. _CCA (Cache Coherency Attribute). _DSD (Device-Specific Data). David Box.
Modifications to existing ACPI tables. Support includes headers, iASL Data Table compiler, disassembler, and the template generator. FADT - New fields and flags. Graeme Gregory. GTDT - One new subtable and new fields. Tomasz Nowicki. MADT - Two new subtables. Tomasz Nowicki. PCCT - One new subtable.
Miscellaneous. New notification type for System Resource Affinity change events.
1) ACPICA kernel-resident subsystem:
Fixed a regression introduced in 20140627 where a fault can happen during the deletion of Alias AML namespace objects. The problem affected both the core ACPICA and the ACPICA tools including iASL and AcpiExec.
Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a simple mechanism to enable wake GPEs that have no associated handler or control method. Rafael Wysocki.
Updated the AcpiEnableGpe interface to disallow the enable if there is no handler or control method associated with the particular GPE. This will help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
Updated GPE handling and dispatch by disabling the GPE before clearing the status bit for edge-triggered GPEs. Lv Zheng.
Added Timer() support to the AML Debug object. The current timer value is now displayed with each invocation of (Store to) the debug object to enable simple generation of execution times for AML code (method execution for example.) ACPICA BZ 1093.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total Debug Version: 192.0K Code, 79.7K Data, 271.7K Total Previous Release: Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
2) iASL Compiler/Disassembler and Tools:
Fixed an issue with the recently added local printf implementation, concerning width/precision specifiers that could cause incorrect output. Lv Zheng. ACPICA BZ 1094.
Disassembler: Added support to detect buffers that contain UUIDs and disassemble them to an invocation of the ToUUID operator. Also emit commented descriptions of known ACPI-related UUIDs.
AcpiHelp: Added support to display known ACPI-related UUIDs. New option, -u. Adds three new files.
iASL: Update table compiler and disassembler for DMAR table changes that were introduced in September 2013. With assistance by David Woodhouse.
---------------------------------------- 27 June 2014. Summary of changes for version 20140627:
1) ACPICA kernel-resident subsystem:
Formatted Output: Implemented local versions of standard formatted output utilities such as printf, etc. Over time, it has been discovered that there are in fact many portability issues with printf, and the addition of this feature will fix/prevent these issues once and for all. Some known issues are summarized below:
1) Output of 64-bit values is not portable. For example, UINT64 is %ull for the Linux kernel and is %uI64 for some MSVC versions. 2) Invoking printf consistently in a manner that is portable across both 32-bit and 64-bit platforms is difficult at best in many situations. 3) The output format for pointers varies from system to system (leading zeros especially), and leads to inconsistent output from ACPICA across platforms. 4) Certain platform-specific printf formats may conflict with ACPICA use. 5) If there is no local C library available, ACPICA now has local support for printf.
-- To address these printf issues in a complete manner, ACPICA now directly implements a small subset of printf format specifiers, only those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
Implemented support for ACPICA generation within the EFI environment. Initially, the AcpiDump utility is supported in the UEFI shell environment. Lv Zheng.
Added a new external interface, AcpiLogError, to improve ACPICA portability. This allows the host to redirect error messages from the ACPICA utilities. Lv Zheng.
Added and deployed new OSL file I/O interfaces to improve ACPICA portability: AcpiOsOpenFile AcpiOsCloseFile AcpiOsReadFile AcpiOsWriteFile AcpiOsGetFileOffset AcpiOsSetFileOffset There are C library implementations of these functions in the new file service_layers/oslibcfs.c -- however, the functions can be implemented by the local host in any way necessary. Lv Zheng.
Implemented a mechanism to disable/enable ACPI table checksum validation at runtime. This can be useful when loading tables very early during OS initialization when it may not be possible to map the entire table in order to compute the checksum. Lv Zheng.
Fixed a buffer allocation issue for the Generic Serial Bus support. Originally, a fixed buffer length was used. This change allows for variable-length buffers based upon the protocol indicated by the field access attributes. Reported by Lan Tianyu. Lv Zheng.
Fixed a problem where an object detached from a namespace node was not properly terminated/cleared and could cause a circular list problem if reattached. ACPICA BZ 1063. David Box.
Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
Fixed a possible memory leak in an error return path within the function AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total Debug Version: 191.7K Code, 79.6K Data, 271.3K Total Previous Release: Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Add dump of ASCII equivalent text within a comment at the end of each line of the output for the Buffer() ASL operator.
AcpiDump: Miscellaneous changes: Fixed repetitive table dump in -n mode. For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if the ACPI 2.0 GUID fails.
iASL: Fixed a problem where the compiler could fault if incorrectly given an acpidump output file as input. ACPICA BZ 1088. David Box.
AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if they are invoked without any arguments.
Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 1086. Colin Ian King.
Disassembler: Cleaned up a block of code that extracts a parent Op object. Added a comment that explains that the parent is guaranteed to be valid in this case. ACPICA BZ 1069.
---------------------------------------- 24 April 2014. Summary of changes for version 20140424:
1) ACPICA kernel-resident subsystem:
Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. Some of these tables are known to contain a trailing NULL entry. Lv Zheng.
Removed an extraneous error message for the case where there are a large number of system GPEs (> 124). This was the "32-bit FADT register is too long to convert to GAS struct" message, which is irrelevant for GPEs since the GPEx_BLK_LEN fields of the FADT are always used instead of the (limited capacity) GAS bit length. Also, several changes to ensure proper support for GPE numbers > 255, where some "GPE number" fields were 8-bits internally.
Implemented and deployed additional configuration support for the public ACPICA external interfaces. Entire classes of interfaces can now be easily modified or configured out, replaced by stubbed inline functions by default. Lv Zheng.
Moved all public ACPICA runtime configuration globals to the public ACPICA external interface file for convenience. Also, removed some obsolete/unused globals. See the file acpixf.h. Lv Zheng.
Documentation: Added a new section to the ACPICA reference describing the maximum number of GPEs that can be supported by the FADT-defined GPEs in block zero and one. About 1200 total. See section 4.4.1 of the ACPICA reference.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total Debug Version: 189.5K Code, 79.7K Data, 269.2K Total Previous Release: Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
2) iASL Compiler/Disassembler and Tools:
iASL and disassembler: Add full support for the LPIT table (Low Power Idle Table). Includes support in the disassembler, data table compiler, and template generator.
AcpiDump utility: 1) Add option to force the use of the RSDT (over the XSDT). 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
iASL: Add check for predefined packages that are too large. For predefined names that contain subpackages, check if each subpackage is too large. (Check for too small already exists.)
Debugger: Updated the GPE command (which simulates a GPE by executing the GPE code paths in ACPICA). The GPE device is now optional, and defaults to the GPE 0/1 FADT-defined blocks.
Unix application OSL: Update line-editing support. Add additional error checking and take care not to reset terminal attributes on exit if they were never set. This should help guarantee that the terminal is always left in the previous state on program exit.
---------------------------------------- 25 March 2014. Summary of changes for version 20140325:
1) ACPICA kernel-resident subsystem:
Updated the auto-serialize feature for control methods. This feature automatically serializes all methods that create named objects in order to prevent runtime errors. The update adds support to ignore the currently executing AML SyncLevel when invoking such a method, in order to prevent disruption of any existing SyncLevel priorities that may exist in the AML code. Although the use of SyncLevels is relatively rare, this change fixes a regression where an AE_AML_MUTEX_ORDER exception can appear on some machines starting with the 20140214 release.
Added a new external interface to allow the host to install ACPI tables very early, before the namespace is even created. AcpiInstallTable gives the host additional flexibility for ACPI table management. Tables can be installed directly by the host as if they had originally appeared in the XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables (anything except the DSDT and FACS). Adds a new file, tbdata.c, along with additional internal restructuring and cleanup. See the ACPICA Reference for interface details. Lv Zheng.
Added validation of the checksum for all incoming dynamically loaded tables (via external interfaces or via AML Load/LoadTable operators). Lv Zheng.
Updated the use of the AcpiOsWaitEventsComplete interface during Notify and GPE handler removal. Restructured calls to eliminate possible race conditions. Lv Zheng.
Added a warning for the use/execution of the ASL/AML Unload (table) operator. This will help detect and identify machines that use this operator if and when it is ever used. This operator has never been seen in the field and the usage model and possible side-effects of the drastic runtime action of a full table removal are unknown.
Reverted the use of #pragma push/pop which was introduced in the 20140214 release. It appears that push and pop are not implemented by enough compilers to make the use of this feature feasible for ACPICA at this time. However, these operators may be deployed in a future ACPICA release.
Added the missing EXPORT_SYMBOL macros for the install and remove SCI handler interfaces.
Source code generation: 1) Disabled the use of the "strchr" macro for the gcc-specific generation. For some versions of gcc, this macro can periodically expose a compiler bug which in turn causes compile-time error(s). 2) Added support for PPC64 compilation. Colin Ian King.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total Debug Version: 189.7K Code, 79.5K Data, 269.2K Total Previous Release: Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Added several new features to improve the readability of the resulting ASL code. Extra information is emitted within comment fields in the ASL code: 1) Known _HID/_CID values are decoded to descriptive text. 2) Standard values for the Notify() operator are decoded to descriptive text. 3) Target operands are expanded to full pathnames (in a comment) when possible.
Disassembler: Miscellaneous updates for extern() handling: 1) Abort compiler if file specified by -fe option does not exist. 2) Silence unnecessary warnings about argument count mismatches. 3) Update warning messages concerning unresolved method externals. 4) Emit "UnknownObj" keyword for externals whose type cannot be determined.
AcpiHelp utility: 1) Added the -a option to display both the ASL syntax and the AML encoding for an input ASL operator. This effectively displays all known information about an ASL operator with one AcpiHelp invocation. 2) Added substring match support (similar to a wildcard) for the -i (_HID/PNP IDs) option.
iASL/Disassembler: Since this tool does not yet support execution on big- endian machines, added detection of endianness and an error message if execution is attempted on big-endian. Support for big-endian within iASL is a feature that is on the ACPICA to-be-done list.
AcpiBin utility: 1) Remove option to extract binary files from an acpidump; this function is made obsolete by the AcpiXtract utility. 2) General cleanup of open files and allocated buffers.
---------------------------------------- 14 February 2014. Summary of changes for version 20140214:
1) ACPICA kernel-resident subsystem:
Implemented a new mechanism to proactively prevent problems with ill- behaved reentrant control methods that create named ACPI objects. This behavior is illegal as per the ACPI specification, but is nonetheless frequently seen in the field. Previously, this could lead to an AE_ALREADY_EXISTS exception if the method was actually entered by more than one thread. This new mechanism detects such methods at table load time and marks them "serialized" to prevent reentrancy. A new global option, AcpiGbl_AutoSerializeMethods, has been added to disable this feature if desired. This mechanism and global option obsoletes and supersedes the previous AcpiGbl_SerializeAllMethods option.
Added the "Windows 2013" string to the _OSI support. ACPICA will now respond TRUE to _OSI queries with this string. It is the stated policy of ACPICA to add new strings to the _OSI support as soon as possible after they are defined. See the full ACPICA _OSI policy which has been added to the utilities/utosi.c file.
Hardened/updated the _PRT return value auto-repair code: 1) Do not abort the repair on a single subpackage failure, continue to check all subpackages. 2) Add check for the minimum subpackage length (4). 3) Properly handle extraneous NULL package elements.
Added support to avoid the possibility of infinite loops when traversing object linked lists. Never allow an infinite loop, even in the face of corrupted object lists.
ACPICA headers: Deployed the use of #pragma pack(push) and #pragma pack(pop) directives to ensure that the ACPICA headers are independent of compiler settings or other host headers.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total Debug Version: 188.6K Code, 79.0K Data, 267.6K Total Previous Release: Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
2) iASL Compiler/Disassembler and Tools:
iASL/Table-compiler: Fixed a problem with support for the SPMI table. The first reserved field was incorrectly forced to have a value of zero. This change correctly forces the field to have a value of one. ACPICA BZ 1081.
Debugger: Added missing support for the "Extra" and "Data" subobjects when displaying object data.
Debugger: Added support to display entire object linked lists when displaying object data.
iASL: Removed the obsolete -g option to obtain ACPI tables from the Windows registry. This feature has been superseded by the acpidump utility.
---------------------------------------- 14 January 2014. Summary of changes for version 20140114:
1) ACPICA kernel-resident subsystem:
Updated all ACPICA copyrights and signons to 2014. Added the 2014 copyright to all module headers and signons, including the standard Linux header. This affects virtually every file in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and the test suites.
Improved parameter validation for AcpiInstallGpeBlock. Added the following checks: 1) The incoming device handle refers to type ACPI_TYPE_DEVICE. 2) There is not already a GPE block attached to the device. Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a device.
Correctly support "references" in the ACPI_OBJECT. This change fixes the support to allow references (namespace nodes) to be passed as arguments to control methods via the evaluate object interface. This is probably most useful for testing purposes, however.
Improved support for 32/64 bit physical addresses in printf()-like output. This change improves the support for physical addresses in printf debug statements and other output on both 32-bit and 64-bit hosts. It consistently outputs the appropriate number of bytes for each host. The %p specifier is unsatisfactory since it does not emit uniform output on all hosts/clib implementations (on some, leading zeros are not supported, leading to difficult-to-read output).
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Current Release: Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total Debug Version: 187.5K Code, 78.3K Data, 265.8K Total Previous Release: Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fix a possible fault when using the Connection() operator. Fixes a problem if the parent Field definition for the Connection operator refers to an operation region that does not exist. ACPICA BZ 1064.
AcpiExec: Load of local test tables is now optional. The utility has the capability to load some various tables to test features of ACPICA. However, there are enough of them that the output of the utility became confusing. With this change, only the required local tables are displayed (RSDP, XSDT, etc.) along with the actual tables loaded via the command line specification. This makes the default output simler and easier to understand. The -el command line option restores the original behavior for testing purposes.
AcpiExec: Added support for overlapping operation regions. This change expands the simulation of operation regions by supporting regions that overlap within the given address space. Supports SystemMemory and SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
AcpiExec: Added region handler support for PCI_Config and EC spaces. This allows AcpiExec to simulate these address spaces, similar to the current support for SystemMemory and SystemIO.
Debugger: Added new command to read/write/compare all namespace objects. The command "test objects" will exercise the entire namespace by writing new values to each data object, and ensuring that the write was successful. The original value is then restored and verified.
Debugger: Added the "test predefined" command. This change makes this test public and puts it under the new "test" command. The test executes each and every predefined name within the current namespace.
show more ...
|
#
73d4e80b |
| 27-Dec-2013 |
christos <christos@NetBSD.org> |
import new acpica
|
#
32903b12 |
| 28-Jun-2011 |
jruoho <jruoho@NetBSD.org> |
Import ACPICA 20110623.
Selected changes since 20110211 include, among other things, fixes to _PRW parsing, fix to a regression with the Load() operator, improvements in NULL package element removal
Import ACPICA 20110623.
Selected changes since 20110211 include, among other things, fixes to _PRW parsing, fix to a regression with the Load() operator, improvements in NULL package element removal, support for "spurious" global lock interrupts, execution of orphaned _REG methods under acpiec(4), and smaller iasl(8) improvements.
show more ...
|