The NetBSD Project

CVS log for src/sys/external/bsd/acpica/dist/tools/acpixtract/axutils.c

[BACK] Up to [cvs.NetBSD.org] / src / sys / external / bsd / acpica / dist / tools / acpixtract

Request diff between arbitrary revisions


Default branch: intel, MAIN


Revision 1.1.1.11 / (download) - annotate - [select for diffs] (vendor branch), Fri Sep 1 17:48:16 2023 UTC (6 months ago) by christos
Branch: intel, MAIN
CVS Tags: thorpej-ifq-base, thorpej-ifq, thorpej-altq-separation-base, thorpej-altq-separation, acpica-20230628, HEAD
Changes since 1.1.1.10: +1 -1 lines
Diff to previous 1.1.1.10 (colored)

Import acpica-20230628 (last was 20221020)

----------------------------------------
28 June 2023. Summary of changes for version 20230628:

0) Global changes:

Fixed a problem with the ASL/AML Timer() operator. Discovered by
UBSAN: ?array-index-out-of-bounds in acpica/dswexec.c:401:12 index
-1 is out of range for type 'acpi_operand_object?. Added
AML_NO_OPERAND_RESOLVE flag to Timer (since there are no runtime
arguments). Reported by: Abhishek Mainkar abmainkar@nvidia.com.

Added a define for size of acpi_srat_generic_affinity DeviceHandle.
Replaced a magic number with a define. The Linux kernel code will
utilize this. Reported by Dave Jiang dave.jiang@intel.com.

Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.

1) ACPICA kernel-resident subsystem:

Added port definitions for CDAT SSLBIS. Add upstream port and any
port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com.

Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE
-> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang
dave.jiang@intel.com.

1) ACPICA kernel-resident subsystem:

Fix GCC 12 dangling-pointer warning.  We're storing a persistent
pointer to an ephemeral local variable which technically is a
dangling pointer and the compiler is correct. However, since we
never indirect the pointer, this is a safe operation and we can
suppress the warning.

Also, some C run-times (like MUSL) aren't including <stdint.h>
indirectly so we must include it explicitly or we won't have the
type definition for uintptr_t.

2) iASL Compiler/Disassembler and ACPICA tools:.

IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT
table is updated with new nodes. Add compile and dump functionality
for these new structures.

AcpiExec: Added a new command, ?interrupt?. The Interrupt command
simulates an interrupt with a IntID (GSIV) equal to the first
argument of the call/invocation. The acpiexec code simulates the
behavior by OSPM: execute the _EVT method of the GED device associated
with that IntID. Submitted by: Jose Marinho jose.marinho@arm.com.

AcpiExec: Detect GED device and keep track of _EVT. The GED device
is described by a _HID of ACPI0013. This code traverses the namespace
identifying all GED devices. For each GED device in the namespace
we record the Interrupt object and the _EVT method. This information
is used when an interrupt is simulated via the ?interrupt? command.
Submitted by: Jose Marinho jose.marinho@arm.com.
----------------------------------------
31 March 2023. Summary of changes for version 20230331:

This release is available at https://acpica.org/downloads

0) Global changes:


Update all copyright notices to the year 2023. This effects all source
modules, as well as utility signons.
Add OS-specific support for Zephyr RTOS.
Fix miscellaneous code that accesses various objects.
Remove some dead code.
Add C ?Flexible Array? support.
Add support for 64 bit LoongArch compilation.
Add first batch of RISC-V related definitions.
Performed a global automated update to remove tabs, fix indentation
issues, etc.

1) ACPICA kernel-resident subsystem:

hwvalid: Drop port I/O validation.

2) ACPICA tools and utilities:

iASL: Added full macro support in the preprocessor. Example:
#define ABCD(a,b,c,d) a+b+c-d

Known macro support limitations (at this time):
	No support for multi-line #define macros (backslash continuation
lines)
	No support for the C-style ternary operator
	No support for the stringizing operator (#)
	No support for the concatenation (token pasting) operator (##)
	No support for variable number of macro arguments

Add support for AMD Secure Processor Table (ASPT) version 1.
Add support for Arm's MPAM ACPI table version 2.
ACPI 6.5: MADT: add support for trace buffer extension in GICC.
Headers: Delete bogus NodeArray array of pointers from AEST table.
PHAT table support is still ongoing.

Revision 1.1.1.10 / (download) - annotate - [select for diffs] (vendor branch), Sat Aug 27 14:02:03 2022 UTC (18 months, 1 week ago) by christos
Branch: intel, MAIN
CVS Tags: netbsd-10-base, netbsd-10-0-RC5, netbsd-10-0-RC4, netbsd-10-0-RC3, netbsd-10-0-RC2, netbsd-10-0-RC1, netbsd-10, bouyer-sunxi-drm-base, bouyer-sunxi-drm, acpica-20221020, acpica-20220331
Changes since 1.1.1.9: +1 -1 lines
Diff to previous 1.1.1.9 (colored)

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.

Revision 1.1.1.8.4.1 / (download) - annotate - [select for diffs], Sat Apr 3 22:28:58 2021 UTC (2 years, 11 months ago) by thorpej
Branch: thorpej-futex
Changes since 1.1.1.8: +2 -2 lines
Diff to previous 1.1.1.8 (colored) next main 1.1.1.9 (colored)

Sync with HEAD.

Revision 1.1.1.8.6.1 / (download) - annotate - [select for diffs], Sat Apr 3 21:44:59 2021 UTC (2 years, 11 months ago) by thorpej
Branch: thorpej-cfargs
Changes since 1.1.1.8: +2 -2 lines
Diff to previous 1.1.1.8 (colored) next main 1.1.1.9 (colored)

Sync with HEAD.

Revision 1.1.1.9 / (download) - annotate - [select for diffs] (vendor branch), Sat Apr 3 17:43:35 2021 UTC (2 years, 11 months ago) by christos
Branch: intel, MAIN
CVS Tags: thorpej-i2c-spi-conf2-base, thorpej-i2c-spi-conf2, thorpej-i2c-spi-conf-base, thorpej-i2c-spi-conf, thorpej-futex2-base, thorpej-futex2, thorpej-futex-base, thorpej-cfargs2-base, thorpej-cfargs2, thorpej-cfargs-base, cjep_sun2x-base1, cjep_sun2x-base, cjep_sun2x, cjep_staticlib_x-base1, cjep_staticlib_x-base, cjep_staticlib_x, acpica-20211217, acpica-20210930, acpica-20210604, acpica-20210331
Changes since 1.1.1.8: +2 -2 lines
Diff to previous 1.1.1.8 (colored)

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.

Revision 1.1.1.4.2.2 / (download) - annotate - [select for diffs], Wed Apr 8 14:08:20 2020 UTC (3 years, 10 months ago) by martin
Branch: phil-wifi
Changes since 1.1.1.4.2.1: +1 -1 lines
Diff to previous 1.1.1.4.2.1 (colored) to branchpoint 1.1.1.4 (colored) next main 1.1.1.5 (colored)

Merge changes from current as of 20200406

Revision 1.1.1.8 / (download) - annotate - [select for diffs] (vendor branch), Sat Mar 28 19:46:36 2020 UTC (3 years, 11 months ago) by christos
Branch: intel, MAIN
CVS Tags: phil-wifi-20200421, phil-wifi-20200411, phil-wifi-20200406, bouyer-xenpvh-base2, bouyer-xenpvh-base1, bouyer-xenpvh-base, bouyer-xenpvh, acpica-20201113, acpica-20200717, acpica-20200430, acpica-20200326
Branch point for: thorpej-futex, thorpej-cfargs
Changes since 1.1.1.7: +1 -1 lines
Diff to previous 1.1.1.7 (colored)

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

Revision 1.1.1.4.2.1 / (download) - annotate - [select for diffs], Mon Jun 10 22:07:43 2019 UTC (4 years, 8 months ago) by christos
Branch: phil-wifi
Changes since 1.1.1.4: +34 -17 lines
Diff to previous 1.1.1.4 (colored)

Sync with HEAD

Revision 1.1.1.7 / (download) - annotate - [select for diffs] (vendor branch), Mon Apr 29 00:29:54 2019 UTC (4 years, 10 months ago) by christos
Branch: intel, MAIN
CVS Tags: phil-wifi-20191119, phil-wifi-20190609, netbsd-9-base, netbsd-9-3-RELEASE, netbsd-9-2-RELEASE, netbsd-9-1-RELEASE, netbsd-9-0-RELEASE, netbsd-9-0-RC2, netbsd-9-0-RC1, netbsd-9, is-mlppp-base, is-mlppp, ad-namecache-base3, ad-namecache-base2, ad-namecache-base1, ad-namecache-base, ad-namecache, acpica-20191213, acpica-20190816, acpica-20190405
Changes since 1.1.1.6: +4 -4 lines
Diff to previous 1.1.1.6 (colored)

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

Revision 1.1.1.3.4.3 / (download) - annotate - [select for diffs], Fri Jan 18 08:50:48 2019 UTC (5 years, 1 month ago) by pgoyette
Branch: pgoyette-compat
CVS Tags: pgoyette-compat-merge-20190127
Changes since 1.1.1.3.4.2: +21 -12 lines
Diff to previous 1.1.1.3.4.2 (colored) to branchpoint 1.1.1.3 (colored) next main 1.1.1.4 (colored)

Synch with HEAD

Revision 1.1.1.6 / (download) - annotate - [select for diffs] (vendor branch), Sat Jan 5 20:37:18 2019 UTC (5 years, 1 month ago) by christos
Branch: intel, MAIN
CVS Tags: pgoyette-compat-20190127, pgoyette-compat-20190118, isaki-audio2-base, isaki-audio2, acpica-20181213
Changes since 1.1.1.5: +21 -12 lines
Diff to previous 1.1.1.5 (colored)

13 December 2018. Summary of changes for version 20181213:

1) ACPICA Kernel-resident Subsystem:

Fixed some buffer length issues with the GenericSerialBus, related to two
of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
which are rarely seen in the field. For these, the LEN field of the ASL
buffer is now ignored. Hans de Goede

Implemented a new object evaluation trace mechanism for control methods
and data objects. This includes nested control methods. It is
particularly useful for examining the ACPI execution during system
initialization since the output is relatively terse. The flag below
enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
   #define ACPI_LV_EVALUATION          0x00080000

Examples:
   Enter evaluation       :  _SB.PCI0._INI (Method)
   Exit evaluation        :  _SB.PCI0._INI
   Enter evaluation       :  _OSI (Method)
   Exit evaluation        :  _OSI
   Enter evaluation       :  _SB.PCI0.TEST (Method)
   Nested method call     :     _SB.PCI0.NST1
   Exit nested method     :     _SB.PCI0.NST1
   Exit evaluation        :  _SB.PCI0.TEST

Added two recently-defined _OSI strings. See
https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
osi.
   "Windows 2018"
   "Windows 2018.2"

Update for buffer-to-string conversions via the ToHexString ASL operator.
A "0x" is now prepended to each of the hex values in the output string.
This provides compatibility with other ACPI implementations. The ACPI
specification is somewhat vague on this issue.
   Example output string after conversion:
"0x01,0x02,0x03,0x04,0x05,0x06"

Return a run-time error for TermArg expressions within individual package
elements. Although this is technically supported by the ASL grammar,
other ACPI implementations do not support this either. Also, this fixes a
fault if this type of construct is ever encountered (it never has been).


2) iASL Compiler/Disassembler and Tools:

iASL: Implemented a new compile option (-ww) that will promote individual
warnings and remarks to errors. This is intended to enhance the firmware
build process.

AcpiExec: Implemented a new command-line option (-eo) to support the new
object evaluation trace mechanism described above.

Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
instead of a "unknown table" message.

AcpiHelp: Improved support for the "special" predefined names such as
_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
used for "xx" and "x".

----------------------------------------
31 October 2018. Summary of changes for version 20181031:


An Operation Region regression was fixed by properly adding address
ranges to a global list during initialization. This allows OS to
accurately check for overlapping regions between native devices (such as
PCI) and Operation regions as well as checking for region conflicts
between two Operation Regions.

Added support for the 2-byte extended opcodes in the code/feature that
attempts to continue parsing during the table load phase. Skip parsing
Device declarations (and other extended opcodes) when an error occurs
during parsing. Previously, only single-byte opcodes were supported.

Cleanup: Simplified the module-level code support by eliminating a
useless global variable (AcpiGbl_GroupModuleLeveCode).


2) iASL Compiler/Disassembler and Tools:

iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
could cause a fault in the preprocessor. This was an inadvertent side-
effect from moving more allocations/frees to the local cache/memory
mechanism.

iASL: Enhanced error detection by validating that all NameSeg elements
within a NamePatch actually exist. The previous behavior was spotty at
best, and such errors could be improperly ignored at compiler time (never
at runtime, however. There are two new error messages, as shown in the
examples below:

dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
Error    6161 -                              ^ One or more objects within
the Pathname do not exist (TTTT.BXXX)

dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
Error    6160 -        One or more prefix Scopes do not exist ^
(BBBB.CBF1)

iASL: Disassembler/table-compiler: Added support for the static data
table TPM2 revision 3 (an older version of TPM2). The support has been
added for the compiler and the disassembler.

Fixed compilation of DOS format data table file on Unix/Linux systems.
iASL now properly detects line continuations (\) for DOS format data
table definition language files on when executing on Unix/Linux.

----------------------------------------
03 October 2018. Summary of changes for version 20181003:


2) iASL Compiler/Disassembler and Tools:

Fixed a regression introduced in version 20180927 that could cause the
compiler to fault, especially with NamePaths containing one or more
carats (^). Such as: ^^_SB_PCI0

Added a new remark for the Sleep() operator when the sleep time operand
is larger than one second. This is a very long time for the ASL/BIOS code
and may not be what was intended by the ASL writer.

----------------------------------------
27 September 2018. Summary of changes for version 20180927:


1) ACPICA kernel-resident subsystem:

Updated the GPE support to clear the status of all ACPI events when
entering any/all sleep states in order to avoid premature wakeups. In
theory, this may cause some wakeup events to be missed, but the
likelihood of this is small. This change restores the original behavior
of the ACPICA code in order to fix a regression seen from the previous
"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
This regression could cause some systems to incorrectly wake immediately.

Updated the execution of the _REG methods during initialization and
namespace loading to bring the behavior into closer conformance to the
ACPI specification and other ACPI implementations:

From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
    "Control methods must assume all operation regions are inaccessible
until the _REG(RegionSpace, 1) method is executed"

    "The exceptions to this rule are:
1.  OSPM must guarantee that the following operation regions are always
accessible:
    SystemIO operation regions.
    SystemMemory operation regions when accessing memory returned by the
System Address Map reporting interfaces."

Since the state of both the SystemIO and SystemMemory address spaces are
defined by the specification to never change, this ACPICA change ensures
that now _REG is never called on them. This solves some problems seen in
the field and provides compatibility with other ACPI implementations. An
update to the upcoming new version of the ACPI specification will help
clarify this behavior.

Updated the implementation of support for the Generic Serial Bus. For the
"bidirectional" protocols, the internal implementation now automatically
creates a return data buffer of the maximum size (255). This handles the
worst-case for data that is returned from the serial bus handler, and
fixes some problems seen in the field. This new buffer is directly
returned to the ASL. As such, there is no true "bidirectional" buffer,
which matches the ACPI specification. This is the reason for the "double
store" seen in the example ASL code in the specification, shown below:

Word Process Call (AttribProcessCall):
    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
    Field(TOP1, BufferAcc, NoLock, Preserve)
    {
        FLD1, 8, // Virtual register at command value 1.
    }

    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
                             // as BUFF
    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)

    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
transaction
                           // This is the "double store". The write to
                           // FLD1 returns a new buffer, which is stored
                           // back into BUFF with the second Store.


2) iASL Compiler/Disassembler and Tools:

iASL: Implemented detection of extraneous/redundant uses of the Offset()
operator within a Field Unit list. A remark is now issued for these. For
example, the first two of the Offset() operators below are extraneous.
Because both the compiler and the interpreter track the offsets
automatically, these Offsets simply refer to the current offset and are
unnecessary. Note, when optimization is enabled, the iASL compiler will
in fact remove the redundant Offset operators and will not emit any AML
code for them.

    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
    Field (OPR1)
    {
        Offset (0),     // Never needed
        FLD1, 32,
        Offset (4),     // Redundant, offset is already 4 (bytes)
        FLD2, 8,
        Offset (64),    // OK use of Offset.
        FLD3, 16,
    }
dsdt.asl     14:         Offset (0),
Remark   2158 -                 ^ Unnecessary/redundant use of Offset
operator

dsdt.asl     16:         Offset (4),
Remark   2158 -                 ^ Unnecessary/redundant use of Offset
operator

Revision 1.1.1.3.4.2 / (download) - annotate - [select for diffs], Thu Sep 6 06:56:08 2018 UTC (5 years, 5 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.1.3.4.1: +9 -1 lines
Diff to previous 1.1.1.3.4.1 (colored) to branchpoint 1.1.1.3 (colored)

Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)

Revision 1.1.1.5 / (download) - annotate - [select for diffs] (vendor branch), Sat Aug 18 09:10:42 2018 UTC (5 years, 6 months ago) by christos
Branch: intel, MAIN
CVS Tags: pgoyette-compat-1226, pgoyette-compat-1126, pgoyette-compat-1020, pgoyette-compat-0930, pgoyette-compat-0906, acpica-20180810
Changes since 1.1.1.4: +9 -1 lines
Diff to previous 1.1.1.4 (colored)

----------------------------------------
10 August 2018. Summary of changes for version 20180810:


1) ACPICA kernel-resident subsystem:

Initial ACPI table loading: Attempt to continue loading ACPI tables
regardless of malformed AML. Since migrating table initialization to the
new module-level code support, the AML interpreter rejected tables upon
any ACPI error encountered during table load. This is a problem because
non-serious ACPI errors during table load do not necessarily mean that
the entire definition block (DSDT or SSDT) is invalid. This change
improves the table loading by ignoring some types of errors that can be
generated by incorrect AML. This can range from object type errors, scope
errors, and index errors.

Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
during suspend/resume. The status of ACPI events is no longer cleared
when entering the ACPI S5 system state (power off) which caused some
systems to power up immediately after turning off power in certain
situations. This was a functional regression. It was fixed by clearing
the status of all ACPI events again when entering S5 (for system-wide
suspend or hibernation the clearing of the status of all events is not
desirable, as it might cause the kernel to miss wakeup events sometimes).
Rafael Wysocki.


2) iASL Compiler/Disassembler and Tools:

AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
elements listed in the initialization file were previously initialized
after the table load and before executing module-level code blocks.
Recent changes in the module-level code support means that the table load
becomes a large control method execution. If fields are used within
module-level code and we are executing with the -fi option, the
initialization values were used to initialize the namespace object(s)
only after the table was finished loading. This change Provides an early
initialization of objects specified in the initialization file so that
field unit values are populated during the table load (not after the
load).

AcpiExec: Fixed a small memory leak regression that could result in
warnings during exit of the utility. These warnings were similar to
these:
    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001

----------------------------------------
29 June 2018. Summary of changes for version 20180629:


1) iASL Compiler/Disassembler and Tools:

iASL: Fixed a regression related to the use of the ASL External
statement. Error checking for the use of the External() statement has
been relaxed. Previously, a restriction on the use of External meant that
the referenced named object was required to be defined in a different
table (an SSDT). Thus it would be an error to declare an object as an
external and then define the same named object in the same table. For
example:
    DefinitionBlock (...)
    {
        External (DEV1)
        Device (DEV1){...} // This was an error
    }
However, this behavior has caused regressions in some existing ASL code,
because there is code that depends on named objects and externals (with
the same name) being declared in the same table. This change will allow
the ASL code above to compile without errors or warnings.

iASL: Implemented ASL language extensions for four operators to make some
of their arguments optional instead of required:
    1) Field (RegionName, AccessType, LockRule, UpdateRule)
    2) BankField (RegionName, BankName, BankValue,
                AccessType, LockRule, UpdateRule)
    3) IndexField (IndexName, DataName,
                AccessType, LockRule, UpdateRule)
For the Field operators above, the AccessType, LockRule, and UpdateRule
are now optional arguments. The default values are:
        AccessType: AnyAcc
        LockRule:   NoLock
        UpdateRule: Preserve
    4) Mutex (MutexName, SyncLevel)
For this operator, the SyncLevel argument is now optional. This argument
is rarely used in any meaningful way by ASL code, and thus it makes sense
to make it optional. The default value is:
        SyncLevel:  0

iASL: Attempted use of the ASL Unload() operator now results in the
following warning:
    "Unload is not supported by all operating systems"
This is in fact very true, and the Unload operator may be completely
deprecated in the near future.

AcpiExec: Fixed a regression for the -fi option (Namespace initialization
file. Recent changes in the ACPICA module-level code support altered the
table load/initialization sequence . This means that the table load has
become a large method execution of the table itself. If Operation Region
Fields are used within any module-level code and the -fi option was
specified, the initialization values were populated only after the table
had completely finished loading (and thus the module-level code had
already been executed). This change moves the initialization of objects
listed in the initialization file to before the table is executed as a
method. Field unit values are now initialized before the table execution
is performed.

----------------------------------------
31 May 2018. Summary of changes for version 20180531:


1) ACPICA kernel-resident Subsystem:

Implemented additional support to help ensure that a DSDT or SSDT is
fully loaded even if errors are incurred during the load. The majority of
the problems that are seen is the failure of individual AML operators
that occur during execution of any module-level code (MLC) existing in
the table. This support adds a mechanism to abort the current ASL
statement (AML opcode), emit an error message, and to simply move on to
the next opcode -- instead of aborting the entire table load. This is
different than the execution of a control method where the entire method
is aborted upon any error. The goal is to perform a very "best effort" to
load the ACPI tables. The most common MLC errors that have been seen in
the field are direct references to unresolved ASL/AML symbols (referenced
directly without the use of the CondRefOf operator to validate the
symbol). This new ACPICA behavior is now compatible with other ACPI
implementations.

Interpreter: The Unload AML operator is no longer supported for the
reasons below. An AE_NOT_IMPLEMENTED exception is returned.
1) A correct implementation on at least some hosts may not be possible.
2) Other ACPI implementations do not correctly/fully support it.
3) It requires host device driver support which is not known to exist.
    (To properly support namespace unload out from underneath.)
4) This AML operator has never been seen in the field.

Parser: Added a debug option to dump AML parse sub-trees as they are
being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
ACPI_DB_PARSE_TREES.

Debugger: Reduced the verbosity for errors incurred during table load and
module-level code execution.

Completed an investigation into adding a namespace node "owner list"
instead of the current "owner ID" associated with namespace nodes. This
list would link together all nodes that are owned by an individual
control method. The purpose would be to enhance control method execution
by speeding up cleanup during method exit (all namespace nodes created by
a method are deleted upon method termination.) Currently, the entire
namespace must be searched for matching owner IDs if (and only if) the
method creates named objects outside of the local scope. However, by far
the most common case is that methods create objects locally, not outside
the method scope. There is already an ACPICA optimization in place that
only searches the entire namespace in the rare case of a method creating
objects elsewhere in the namespace. Therefore, it is felt that the
overhead of adding an additional pointer to each namespace node to
implement the owner list makes this feature unnecessary.


2) iASL Compiler/Disassembler and Tools:

iASL, Disassembler, and Template generator: Implemented support for
Revision D of the IORT table. Adds a new subtable that is used to specify
SMMUv3 PMCGs. rmurphy-arm.

Disassembler: Restored correct table header validation for the "special"
ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
table header and must be special-cased. This was a regression that has
been present for apparently a long time.

AcpiExec: Reduced verbosity of the local exception handler implemented
within acpiexec. This handler is invoked by ACPICA upon any exceptions
generated during control method execution. A new option was added: -vh
restores the original verbosity level if desired.

AcpiExec: Changed the default base from decimal to hex for the -x option
(set debug level). This simplifies the use of this option and matches the
behavior of the corresponding iASL -x option.

AcpiExec: Restored a force-exit on multiple control-c (sigint)
interrupts. This allows program termination even if other issues cause
the control-c to fail.

ASL test suite (ASLTS): Added tests for the recently implemented package
element resolution mechanism that allows forward references to named
objects from individual package elements (this mechanism provides
compatibility with other ACPI implementations.)


----------------------------------------
8 May 2018. Summary of changes for version 20180508:


1) ACPICA kernel-resident subsystem:

Completed the new (recently deployed) package resolution mechanism for
the Load and LoadTable ASL/AML operators. This fixes a regression that
was introduced in version 20180209 that could result in an
AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
(SSDT) that contains package objects.


2) iASL Compiler/Disassembler and Tools:

AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
1 MB. This change allows for table offsets within the acpidump file to be
up to 8 characters. These changes are backwards compatible with existing
acpidump files.

Revision 1.1.1.3.4.1 / (download) - annotate - [select for diffs], Mon Apr 16 02:00:07 2018 UTC (5 years, 10 months ago) by pgoyette
Branch: pgoyette-compat
Changes since 1.1.1.3: +1 -1 lines
Diff to previous 1.1.1.3 (colored)

Sync with HEAD, resolve some conflicts

Revision 1.1.1.4 / (download) - annotate - [select for diffs] (vendor branch), Sat Apr 7 14:12:47 2018 UTC (5 years, 10 months ago) by christos
Branch: intel, MAIN
CVS Tags: phil-wifi-base, pgoyette-compat-0728, pgoyette-compat-0625, pgoyette-compat-0521, pgoyette-compat-0502, pgoyette-compat-0422, pgoyette-compat-0415, acpica-20180427, acpica-20180313
Branch point for: phil-wifi
Changes since 1.1.1.3: +1 -1 lines
Diff to previous 1.1.1.3 (colored)


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

Revision 1.1.1.3.2.2 / (download) - annotate - [select for diffs], Sun Dec 3 11:37:44 2017 UTC (6 years, 3 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.1.1.3.2.1: +636 -0 lines
Diff to previous 1.1.1.3.2.1 (colored) to branchpoint 1.1.1.3 (colored) next main 1.1.1.4 (colored)

update from HEAD

Revision 1.1.1.3.2.1, Sun Nov 12 01:38:33 2017 UTC (6 years, 3 months ago) by jdolecek
Branch: tls-maxphys
Changes since 1.1.1.3: +0 -636 lines
FILE REMOVED

file axutils.c was added on branch tls-maxphys on 2017-12-03 11:37:44 +0000

Revision 1.1.1.3 / (download) - annotate - [select for diffs] (vendor branch), Sun Nov 12 01:38:33 2017 UTC (6 years, 3 months ago) by christos
Branch: intel, MAIN
CVS Tags: tls-maxphys-base-20171202, pgoyette-compat-base, pgoyette-compat-0407, pgoyette-compat-0330, pgoyette-compat-0322, pgoyette-compat-0315, acpica-20171110
Branch point for: tls-maxphys, pgoyette-compat
Changes since 1.1.1.2: +291 -118 lines
Diff to previous 1.1.1.2 (colored)

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

Revision 1.1.1.1.6.1 / (download) - annotate - [select for diffs], Fri Apr 21 16:53:58 2017 UTC (6 years, 10 months ago) by bouyer
Branch: bouyer-socketcan
Changes since 1.1.1.1: +4 -4 lines
Diff to previous 1.1.1.1 (colored) next main 1.1.1.2 (colored)

Sync with HEAD

Revision 1.1.1.1.4.1 / (download) - annotate - [select for diffs], Mon Mar 20 06:57:44 2017 UTC (6 years, 11 months ago) by pgoyette
Branch: pgoyette-localcount
Changes since 1.1.1.1: +4 -4 lines
Diff to previous 1.1.1.1 (colored) next main 1.1.1.2 (colored)

Sync with HEAD

Revision 1.1.1.1.2.3 / (download) - annotate - [select for diffs], Sun Feb 5 13:40:53 2017 UTC (7 years ago) by skrll
Branch: nick-nhusb
Changes since 1.1.1.1.2.2: +4 -4 lines
Diff to previous 1.1.1.1.2.2 (colored) to branchpoint 1.1.1.1 (colored) next main 1.1.1.2 (colored)

Sync with HEAD

Revision 1.1.1.2 / (download) - annotate - [select for diffs] (vendor branch), Wed Jan 25 13:03:52 2017 UTC (7 years, 1 month ago) by christos
Branch: intel, MAIN
CVS Tags: prg-localcount2-base3, prg-localcount2-base2, prg-localcount2-base1, prg-localcount2-base, prg-localcount2, pgoyette-localcount-20170426, pgoyette-localcount-20170320, perseant-stdc-iso10646-base, perseant-stdc-iso10646, nick-nhusb-base-20170825, nick-nhusb-base-20170204, netbsd-8-base, netbsd-8-2-RELEASE, netbsd-8-1-RELEASE, netbsd-8-1-RC1, netbsd-8-0-RELEASE, netbsd-8-0-RC2, netbsd-8-0-RC1, netbsd-8, matt-nb8-mediatek-base, matt-nb8-mediatek, jdolecek-ncq-base, jdolecek-ncq, bouyer-socketcan-base1, acpica-20170831, acpica-20170303, acpica-20170119
Changes since 1.1.1.1: +4 -4 lines
Diff to previous 1.1.1.1 (colored)

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

Revision 1.1.1.1.2.2 / (download) - annotate - [select for diffs], Sat Mar 19 11:30:25 2016 UTC (7 years, 11 months ago) by skrll
Branch: nick-nhusb
Changes since 1.1.1.1.2.1: +463 -0 lines
Diff to previous 1.1.1.1.2.1 (colored) to branchpoint 1.1.1.1 (colored)

Sync with HEAD

Revision 1.1.1.1.2.1, Sat Jan 9 19:54:54 2016 UTC (8 years, 1 month ago) by skrll
Branch: nick-nhusb
Changes since 1.1.1.1: +0 -463 lines
FILE REMOVED

file axutils.c was added on branch nick-nhusb on 2016-03-19 11:30:25 +0000

Revision 1.1.1.1 / (download) - annotate - [select for diffs] (vendor branch), Sat Jan 9 19:54:54 2016 UTC (8 years, 1 month ago) by christos
Branch: intel, MAIN
CVS Tags: pgoyette-localcount-base, pgoyette-localcount-20170107, pgoyette-localcount-20161104, pgoyette-localcount-20160806, pgoyette-localcount-20160726, nick-nhusb-base-20161204, nick-nhusb-base-20161004, nick-nhusb-base-20160907, nick-nhusb-base-20160529, nick-nhusb-base-20160422, nick-nhusb-base-20160319, localcount-20160914, bouyer-socketcan-base, acpica-20160930, acpica-20160527, acpica-20160422, acpica-20160108
Branch point for: pgoyette-localcount, nick-nhusb, bouyer-socketcan
Changes since 1.1: +0 -0 lines
Diff to previous 1.1 (colored)

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.


----------------------------------------

Revision 1.1 / (download) - annotate - [select for diffs], Sat Jan 9 19:54:54 2016 UTC (8 years, 1 month ago) by christos
Branch point for: MAIN

Initial revision

This form allows you to request diff's between any two revisions of a file. You may select a symbolic revision name using the selection box or you may type in a numeric name using the type-in text box.




CVSweb <webmaster@jp.NetBSD.org>