#
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 ...
|
#
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 ...
|
#
517d1194 |
| 15-Oct-2019 |
christos <christos@NetBSD.org> |
---------------------------------------- 16 August 2019. Summary of changes for version 20190816:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Mo
---------------------------------------- 16 August 2019. Summary of changes for version 20190816:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Modified the OwnerId mechanism to allow for more Owner Ids. The previous limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT exceptions on machines with a large number of initialization threads, many CPU cores and nested initialization control methods.
Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for checking if the given GPE (as represented by a GPE device handle and a GPE number) is currently active and dispatching it (if that's the case) outside of interrupt context.
Table load: exit the interpreter before initializing objects within the new table This prevents re-acquiring the interpreter lock when loading tables
Added the "Windows 2019" string to the _OSI support (version 1903). Jung- uk Kim
Macros: removed pointer math on a null pointer. Causes warnings on some compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR instead of using arithmetic.
Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used across all "printf-like" internal functions. Also, cleanup all calls to such functions (both in 32-bit mode and 64-bit mode) now that they are analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: implemented a new data table compiler flex/bison front-end. This change is internal and is not intended to result in changes to the compiled code. This new compiler front-end can be invoked using the -tp option for now, until the old mechanism is removed.
ASLTS: Implemented a new data table compiler test suite. This test suite generates all table templates and compile/disassemble/re-compile/binary- compare each file.
iASL: return -1 if AML files were not generated due to compiler errors
iASL: added a warning on use of the now-legacy ASL Processor () keyword.
iASL: added an error on _UID object declaration that returns a String within a Processor () declaration. A _UID for a processor must be an Integer.
iASL: added a null terminator to name strings that consist only of multiple parent prefixes (^)
iASL: added support to compile both ASL and data table files in a single command.
Updated the tool generation project files that were recently migrated to MSVC 2017 to eliminate all new warnings. The new project files appear in the directory \acpica\generate\msvc2017. This change effectively deprecates the older project files in \acpica\generate\msvc9.
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 ...
|
#
d382fe7f |
| 15-Sep-2017 |
christos <christos@NetBSD.org> |
---------------------------------------- 31 August 2017. Summary of changes for version 20170831:
1) ACPICA kernel-resident subsystem:
Implemented internal support for full 64-bit addresses that a
---------------------------------------- 31 August 2017. Summary of changes for version 20170831:
1) ACPICA kernel-resident subsystem:
Implemented internal support for full 64-bit addresses that appear in all Generic Address Structure (GAS) structures. Previously, only the lower 32 bits were used. Affects the use of GAS structures in the FADT and other tables, as well as the GAS structures passed to the AcpiRead and AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
Added header support for the PDTT ACPI table (Processor Debug Trigger Table). Full support in the iASL Data Table Compiler and disassembler is forthcoming.
2) iASL Compiler/Disassembler and Tools:
iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor Properties Topology Table) where a flag bit was specified in the wrong bit position ("Line Size Valid", bit 6).
iASL: Implemented support for Octal integer constants as defined by the ASL language grammar, per the ACPI specification. Any integer constant that starts with a zero is an octal constant. For example, Store (037777, Local0) /* Octal constant */ Store (0x3FFF, Local0) /* Hex equivalent */ Store (16383, Local0) /* Decimal equivalent */
iASL: Improved overflow detection for 64-bit string conversions during compilation of integer constants. "Overflow" in this case means a string that represents an integer that is too large to fit into a 64-bit value. Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to the low-order 32 bits with a warning, as previously implemented. Several new exceptions are defined that indicate a 64-bit overflow, as well as the base (radix) that was used during the attempted conversion. Examples: Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
iASL: Added a warning for the case where a ResourceTemplate is declared with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In this case, the resulting template is created with a single END_TAG descriptor, which is essentially useless.
iASL: Expanded the -vw option (ignore specific warnings/remarks) to include compilation error codes as well.
---------------------------------------- 28 July 2017. Summary of changes for version 20170728:
1) ACPICA kernel-resident subsystem:
Fixed a regression seen with small resource descriptors that could cause an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
AML interpreter: Implemented a new feature that allows forward references from individual named references within package objects that are contained within blocks of "module-level code". This provides compatibility with other ACPI implementations and supports existing firmware that depends on this feature. Example:
Name (ABCD, 1) If (ABCD) /* An If() at module-level */ { Name (PKG1, Package() { INT1 /* Forward reference to object INT1 */ }) Name (INT1, 0x1234) }
AML Interpreter: Fixed a problem with the Alias() operator where aliases to some ASL objects were not handled properly. Objects affected are: Mutex, Event, and OperationRegion.
AML Debugger: Enhanced to properly handle AML Alias objects. These objects have one level of indirection which was not fully supported by the debugger.
Table Manager: Added support to detect and ignore duplicate SSDTs within the XSDT/RSDT. This error in the XSDT has been seen in the field.
EFI and EDK2 support: Enabled /WX flag for MSVC builds Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer Added local support for 64-bit multiply and shift operations Added support to compile acpidump.efi on Windows Added OSL function stubs for interfaces not used under EFI
Added additional support for the _DMA predefined name. _DMA returns a buffer containing a resource template. This change add support within the resource manager (AcpiWalkResourceBuffer) to walk and parse this list of resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a problem where the internal input line buffer(s) could overflow if there are very long lines in the input ASL source code file. Implemented buffer management that automatically increases the size of the buffers as necessary.
iASL: Added an option (-vx) to "expect" particular remarks, warnings and errors. If the specified exception is not raised during compilation, the compiler emits an error. This is intended to support the ASL test suite, but may be useful in other contexts.
iASL: Implemented a new predefined macro, __METHOD__, which returns a string containing the name of the current control method that is being compiled.
iASL: Implemented debugger and table compiler support for the SDEI ACPI table (Software Delegated Exception Interface). James Morse <james.morse@arm.com>
Unix/Linux makefiles: Added an option to disable compile optimizations. The disable occurs when the NOOPT flag is set to TRUE. theracermaster@gmail.com
Acpidump: Added support for multiple DSDT and FACS tables. This can occur when there are different tables for 32-bit versus 64-bit.
Enhanced error reporting for the ASL test suite (ASLTS) by removing unnecessary/verbose text, and emit the actual line number where an error has occurred. These changes are intended to improve the usefulness of the test suite.
---------------------------------------- 29 June 2017. Summary of changes for version 20170629:
1) ACPICA kernel-resident subsystem:
Tables: Implemented a deferred ACPI table verification. This is useful for operating systems where the tables cannot be verified in the early initialization stage due to early memory mapping limitations on some architectures. Lv Zheng.
Tables: Removed the signature validation for dynamically loaded tables. Provides compatibility with other ACPI implementations. Previously, only SSDT tables were allowed, as per the ACPI specification. Now, any table signature can be used via the Load() operator. Lv Zheng.
Tables: Fixed several mutex issues that could cause errors during table acquisition. Lv Zheng.
Tables: Fixed a problem where an ACPI warning could be generated if a null pointer was passed to the AcpiPutTable interface. Lv Zheng.
Tables: Added a mechanism to handle imbalances for the AcpiGetTable and AcpiPutTable interfaces. This applies to the "late stage" table loading when the use of AcpiPutTable is no longer required (since the system memory manager is fully running and available). Lv Zheng.
Fixed/Reverted a regression during processing of resource descriptors that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG exception in this case.
Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
Interpreter: Fixed a possible fault if an Alias operator with an invalid or duplicate target is encountered during Alias creation in AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
Added an option to use designated initializers for function pointers. Kees Cook <keescook@google.com>
2) iASL Compiler/Disassembler and Tools:
iASL: Allow compilation of External declarations with target pathnames that refer to existing named objects within the table. Erik Schmauss.
iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a FieldUnit name also is declared via External in the same table. Erik Schmauss.
iASL: Allow existing scope names within pathnames used in External statements. For example: External (ABCD.EFGH) // ABCD exists, but EFGH is truly external Device (ABCD)
iASL: IORT ACPI table: Implemented changes required to decode the new Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
Disassembler: Don't abort disassembly on errors from External() statements. Erik Schmauss.
Disassembler: fixed a possible fault when one of the Create*Field operators references a Resource Template. ACPICA Bugzilla 1396.
iASL: In the source code, resolved some naming inconsistences across the parsing support. Fixes confusion between "Parse Op" and "Parse Node". Adds a new file, aslparseop.c
---------------------------------------- 31 May 2017. Summary of changes for version 20170531:
0) ACPI 6.2 support:
The ACPI specification version 6.2 has been released and is available at http://uefi.org/specifications
This version of ACPICA fully supports the ACPI 6.2 specification. Changes are summarized below.
New ACPI tables (Table Compiler/Disassembler/Templates): HMAT (Heterogeneous Memory Attributes Table) WSMT (Windows SMM Security Mitigation Table) PPTT (Processor Properties Topology Table)
New subtables for existing ACPI tables: HEST (New subtable, Arch-deferred machine check) SRAT (New subtable, Arch-specific affinity structure) PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
Simple updates for existing ACPI tables: BGRT (two new flag bits) HEST (New bit defined for several subtables, GHES_ASSIST)
New Resource Descriptors and Resource macros (Compiler/Disassembler): PinConfig() PinFunction() PinGroup() PinGroupConfig() PinGroupFunction() New type for hardware error notification (section 18.3.2.9)
New predefined names/methods (Compiler/Interpreter): _HMA (Heterogeneous Memory Attributes) _LSI (Label Storage Information) _LSR (Label Storage Read) _LSW (Label Storage Write)
ASL grammar/macro changes (Compiler): For() ASL macro, implemented with the AML while operator Extensions to Concatenate operator Support for multiple definition blocks in same ASL file Clarification for Buffer operator Allow executable AML code underneath all scopes (Devices, etc.) Clarification/change for the _OSI return value ASL grammar update for reference operators Allow a zero-length string for AML filename in DefinitionBlock
Miscellaneous: New device object notification value Remove a notify value (0x0C) for graceful shutdown New UUIDs for processor/cache properties and physical package property New _HID, ACPI0014 (Wireless Power Calibration Device)
1) ACPICA kernel-resident subsystem:
Added support to disable ACPI events on hardware-reduced platforms. Eliminates error messages of the form "Could not enable fixed event". Lv Zheng
Fixed a problem using Device/Thermal objects with the ObjectType and DerefOf ASL operators. This support had not been fully/properly implemented.
Fixed a problem where if a Buffer object containing a resource template was longer than the actual resource template, an error was generated -- even though the AML is legal. This case has been seen in the field.
Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. The values for DUAL_PIC and MULTIPLE_APIC were reversed.
Added header file changes for the TPM2 ACPI table. Update to new version of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. These interfaces are intended to be used only in conjunction with the predefined _DLM method (Device Lock Method). "This object appears in a device scope when AML access to the device must be synchronized with the OS environment".
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: 143.1K Code, 60.0K Data, 203.1K Total Debug Version: 204.0K Code, 84.3K Data, 288.3K Total Previous Release: Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a problem where an External() declaration could not refer to a Field Unit. Erik Schmauss.
Disassembler: Improved support for the Switch/Case operators. This feature will disassemble AML code back to the original Switch operators when possible, instead of an If..Else sequence. David Box
iASL and disassembler: Improved the handling of multiple extraneous parentheses for both ASL input and disassembled ASL output.
Improved the behavior of the iASL compiler and disassembler to detect improper use of external declarations
Disassembler: Now aborts immediately upon detection of an unknown AML opcode. The AML parser has no real way to recover from this, and can result in the creation of an ill-formed parse tree that causes errors later during the disassembly.
All tools: Fixed a problem where the Unix application OSL did not handle control-c correctly. For example, a control-c could incorrectly wake the debugger.
AcpiExec: Improved the Control-C handling and added a handler for segmentation faults (SIGSEGV). Supports both Windows and Unix-like environments.
Reduced the verbosity of the generic unix makefiles. Previously, each compilation displayed the full set of compiler options. This has been eliminated as the options are easily inspected within the makefiles. Each compilation now results in a single line of output.
show more ...
|
#
1a3716cc |
| 30-Apr-2017 |
christos <christos@NetBSD.org> |
---------------------------------------- 03 March 2017. Summary of changes for version 20170303:
0) ACPICA licensing:
The licensing information at the start of each source code module has been upd
---------------------------------------- 03 March 2017. Summary of changes for version 20170303:
0) ACPICA licensing:
The licensing information at the start of each source code module has been updated. In addition to the Intel license, the dual GPLv2/BSD license has been added for completeness. Now, a single version of the source code should be suitable for all ACPICA customers. This is the major change for this release since it affects all source code modules.
1) ACPICA kernel-resident subsystem:
Fixed two issues with the common asltypes.h header that could cause problems in some environments: (Kim Jung-uk) Removed typedef for YY_BUFFER_STATE ? Fixes an error with earlier versions of Flex. Removed use of FILE typedef (which is only defined in stdio.h)
2) iASL Compiler/Disassembler and Tools:
Disassembler: fixed a regression introduced in 20170224. A fix for a memory leak related to resource descriptor tags (names) could fault when the disassembler was generated with 64-bit compilers.
The ASLTS test suite has been updated to implement a new testing architecture. During generation of the suite from ASL source, both the ASL and ASL+ compilers are now validated, as well as the disassembler itself (Erik Schmauss). The architecture executes as follows:
For every ASL source module: Compile (legacy ASL compilation) Disassemble the resulting AML to ASL+ source code Compile the new ASL+ module Perform a binary compare on the legacy AML and the new ASL+ AML The ASLTS suite then executes normally using the AML binaries.
---------------------------------------- 24 February 2017. Summary of changes for version 20170224:
1) ACPICA kernel-resident subsystem:
Interpreter: Fixed two issues with the control method return value auto- repair feature, where an attempt to double-delete an internal object could result in an ACPICA warning (for _CID repair and others). No fault occurs, however, because the attempted deletion (actually a release to an internal cache) is detected and ignored via object poisoning.
Debugger: Fixed an AML interpreter mutex issue during the single stepping of control methods. If certain debugger commands are executed during stepping, a mutex aquire/release error could occur. Lv Zheng.
Fixed some issues generating ACPICA with the Intel C compiler by restoring the original behavior and compiler-specific include file in acenv.h. 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: 141.7K Code, 58.5K Data, 200.2K Total Debug Version: 207.5K Code, 82.7K Data, 290.2K Total Previous Release: Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2) iASL Compiler/Disassembler and Tools:
iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion tool has been designed, implemented, and included in this release. The key feature of this utility is that the original comments within the input ASL file are preserved during the conversion process, and included within the converted ASL+ file -- thus creating a transparent conversion of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
Usage: iasl -ca <ASL-filename> // Output is a .dsl file with converted code
iASL/Disassembler: Improved the detection and correct disassembly of Switch/Case operators. This feature detects sequences of if/elseif/else operators that originated from ASL Switch/Case/Default operators and emits the original operators. David Box.
iASL: Improved the IORT ACPI table support in the following areas. Lv Zheng: Clear MappingOffset if the MappingCount is zero. Fix the disassembly of the SMMU GSU interrupt offset. Update the template file for the IORT table.
Disassembler: Enhanced the detection and disassembly of resource template/descriptor within a Buffer object. An EndTag descriptor is now required to have a zero second byte, since all known ASL compilers emit this. This helps eliminate incorrect decisions when a buffer is disassembled (false positives on resource templates).
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 ...
|
#
e1e2165c |
| 04-May-2016 |
christos <christos@NetBSD.org> |
22 April 2016. Summary of changes for version 20160422:
1) ACPICA kernel-resident subsystem:
Fixed a regression in the GAS (generic address structure) arbitrary bit support in AcpiHwRead/AcpiHwWrit
22 April 2016. Summary of changes for version 20160422:
1) ACPICA kernel-resident subsystem:
Fixed a regression in the GAS (generic address structure) arbitrary bit support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior and incorrect return values. Lv Zheng. ACPICA BZ 1270.
ACPI 6.0: Added support for new/renamed resource macros. One new argument was added to each of these macros, and the original name has been deprecated. The AML disassembler will always disassemble to the new names. Support for the new macros was added to iASL, disassembler, resource manager, and the acpihelp utility. ACPICA BZ 1274.
I2cSerialBus -> I2cSerialBusV2 SpiSerialBus -> SpiSerialBusV2 UartSerialBus -> UartSerialBusV2
ACPI 6.0: Added support for a new integer field that was appended to the package object returned by the _BIX method. This adds iASL compile-time and AML runtime error checking. ACPICA BZ 1273.
ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm Subspace Type2" (Headers, Disassembler, and data table compiler).
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: 137.4K Code, 52.6K Data, 190.0K Total Debug Version: 201.5K Code, 82.2K Data, 283.7K Total Previous Release: Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented an ASL grammar extension to allow/enable executable "module-level code" to be created and executed under the various operators that create new scopes. This type of AML code is already supported in all known AML interpreters, and the grammar change will appear in the next version of the ACPI specification. Simplifies the conditional runtime creation of named objects under these object types:
Device PowerResource Processor Scope ThermalZone
iASL: Implemented a new ASL extension, a "For" loop macro to add greater ease-of-use to the ASL language. The syntax is similar to the corresponding C operator, and is implemented with the existing AML While opcode -- thus requiring no changes to existing AML interpreters.
For (Initialize, Predicate, Update) {TermList}
Grammar: ForTerm := For ( Initializer // Nothing | TermArg => ComputationalData Predicate // Nothing | TermArg => ComputationalData Update // Nothing | TermArg => ComputationalData ) {TermList}
iASL: The _HID/_ADR detection and validation has been enhanced to search under conditionals in order to allow these objects to be conditionally created at runtime.
iASL: Fixed several issues with the constant folding feature. The improvement allows better detection and resolution of statements that can be folded at compile time. ACPICA BZ 1266.
iASL/Disassembler: Fixed a couple issues with the Else{If{}...} conversion to the ASL ElseIf operator where incorrect ASL code could be generated.
iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where sometimes an extra (and extraneous) set of parentheses were emitted for some combinations of operators. Although this did not cause any problems with recompilation of the disassembled code, it made the code more difficult to read. David Box. ACPICA BZ 1231.
iASL: Changed to ignore the unreferenced detection for predefined names of resource descriptor elements, when the resource descriptor is created/defined within a control method.
iASL: Disassembler: Fix a possible fault with externally declared Buffer objects.
---------------------------------------- 18 March 2016. Summary of changes for version 20160318:
1) ACPICA kernel-resident subsystem:
Added support for arbitrary bit lengths and bit offsets for registers defined by the Generic Address Structure. Previously, only aligned bit lengths of 8/16/32/64 were supported. This was sufficient for many years, but recently some machines have been seen that require arbitrary bit- level support. ACPICA BZ 1240. Lv Zheng.
Fixed an issue where the \_SB._INI method sometimes must be evaluated before any _REG methods are evaluated. Lv Zheng.
Implemented several changes related to ACPI table support (Headers/Disassembler/TableCompiler): NFIT: For ACPI 6.1, updated to add some additional new fields and constants. FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 6). DMAR: Added new constants per the 10/2014 DMAR spec. IORT: Added new subtable per the 10/2015 IORT spec. HEST: For ACPI 6.1, added new constants and new subtable. DBG2: Added new constants per the 12/2015 DBG2 spec. FPDT: Fixed several incorrect fields, add the FPDT boot record structure. ACPICA BZ 1249. ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
Updated header support for the DMAR table to match the current version of the related spec.
Added extensions to the ASL Concatenate operator to allow any ACPI object to be passed as an operand. Any object other than Integer/String/Buffer simply returns a string containing the object type. This extends the usefulness of the Printf macros. Previously, Concatenate would abort the control method if a non-data object was encountered.
ACPICA source code: Deployed the C "const" keyword across the source code where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
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: 137.1K Code, 51.5K Data, 188.6K Total Debug Version: 201.0K Code, 82.0K Data, 283.0K Total Previous Release: Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2) iASL Compiler/Disassembler and Tools:
iASL/Disassembler: Improved the heuristic used to determine the number of arguments for an externally defined control method (a method in another table). Although this is an improvement, there is no deterministic way to "guess" the number of method arguments. Only the ACPI 6.0 External opcode will completely solve this problem as it is deployed (automatically) in newer BIOS code.
iASL/Disassembler: Fixed an ordering issue for emitted External() ASL statements that could cause errors when the disassembled file is compiled. ACPICA BZ 1243. David Box.
iASL: Fixed a regression caused by the merger of the two versions of the local strtoul64. Because of a dependency on a global variable, strtoul64 could return an error for integers greater than a 32-bit value. ACPICA BZ 1260.
iASL: Fixed a regression where a fault could occur for an ASL Return statement if it invokes a control method that is not resolved. ACPICA BZ 1264.
AcpiXtract: Improved input file validation: detection of binary files and non-acpidump text files.
---------------------------------------- 12 February 2016. Summary of changes for version 20160212:
1) ACPICA kernel-resident subsystem:
Implemented full support for the ACPI 6.1 specification (released in January). This version of the specification is available at: http://www.uefi.org/specifications
Only a relatively small number of changes were required in ACPICA to support ACPI 6.1, in these areas: - New predefined names - New _HID values - A new subtable for HEST - A few other header changes for new values
Ensure \_SB_._INI is executed before any _REG methods are executed. There appears to be existing BIOS code that relies on this behavior. Lv Zheng.
Reverted a change made in version 20151218 which enabled method invocations to be targets of various ASL operators (SuperName and Target grammar elements). While the new behavior is supported by the ACPI specification, other AML interpreters do not support this behavior and never will. The ACPI specification will be updated for ACPI 6.2 to remove this support. Therefore, the change was reverted to the original ACPICA behavior.
ACPICA now supports the GCC 6 compiler.
Current Release: (Note: build changes increased sizes) Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total Debug Version: 200.4K Code, 82.0K Data, 282.4K Total Previous Release: Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
2) iASL Compiler/Disassembler and Tools:
Completed full support for the ACPI 6.0 External() AML opcode. The compiler emits an external AML opcode for each ASL External statement. This opcode is used by the disassembler to assist with the disassembly of external control methods by specifying the required number of arguments for the method. AML interpreters do not use this opcode. To ensure that interpreters do not even see the opcode, a block of one or more external opcodes is surrounded by an "If(0)" construct. As this feature becomes commonly deployed in BIOS code, the ability of disassemblers to correctly disassemble AML code will be greatly improved. David Box.
iASL: Implemented support for an optional cross-reference output file. The -lx option will create a the cross-reference file with the suffix "xrf". Three different types of cross-reference are created in this file: - List of object references made from within each control method - Invocation (caller) list for each user-defined control method - List of references to each non-method object in the namespace
iASL: Method invocations as ASL Target operands are now disallowed and flagged as errors in preparation for ACPI 6.2 (see the description of the problem above).
show more ...
|