This change enhances the automatic repairs/conversions for predefined
name return values to make Integers, Strings, and Buffers fully
interchangeable. Also, a Buffer can be converted to a Package of
Integers if necessary. The nsrepair.c module was completely restructured.
Lin Ming, Bob Moore.
The expected return value for both names is a Buffer of 5 DWORDS.
This repair fixes two possible problems (both seen in the field):
A package of integers is returned, or a buffer of BYTEs is
returned.
An object can be leaked for each block of executed module-level
code if the interpreter slack mode is enabled. The change
deletes any implicitly returned object in this case.
This change will repair (by sorting) packages returned by _ALR,
_PSS, and _TSS. Drivers can now assume that the packages are
correctly sorted. Adds one new file, namespace/nsrepair2.c
ACPICA BZ 784. Lin Ming, Bob Moore.
The existing interface only has a pre-order callback. This change
adds an additional parameter for a post-order callback which will
be more useful for bus scans. ACPICA BZ 779. Lin Ming.
This message happens when the package element list is longer than
the declared length of the package. Changed to an info message
because this condition is not actually an error. It is caused by
the BIOS attempting to truncate the package on the fly by adjusting
the package element count at the start of the package definition.
Ensure that memory mappings created for operation regions do
not cross page boundaries. Crossing a page boundary while mapping
regions can cause warnings if the pages have different attributes.
Such regions are probably BIOS bugs, and this is the workaround.
Linux BZ 14445. Lin Ming.
Since the object was successfully repaired, a Warning is too severe.
Reduced to Info for now. We may eventually change these messages
to debug-only. ACPICA BZ 812.
Add new file for handling of ASL External() statements. Consolidates
all such code, it is used only for iASL disassembler (not kernel code
or acpiexec.)
If a custom address space handler is installed by the host before the
"initialize operation regions" phase of the ACPICA initialization, any
_REG methods for that address space could be executed twice. This change
fixes the problem. ACPICA BZ 427. Lin Ming.
References to external names in secondary tables that contained one or
more carats (parent-prefixes) were not handled correctly.
ACPICA BZ 806. Lin Ming.
_MAT can inadvertently return an Integer instead of a Buffer if
the return value has been read from a Field whose width is less
than or equal to the global integer width (32 or 64 bits).
ACPICA BZ 810. Lin Ming.
Add support for execution of an _INI method at the namespace root.
Although not defined in the ACPI specification, this support was
added to Windows around the Vista timeframe. It is added here
for Windows compatibility.
Fixes a possible memory leak in the interpreter for package objects if the
package initializer list is longer than the defined size of the package. This
apparently can only happen if the BIOS changes the package size on the fly
(seen in a _PSS object), as both iASL and the other compiler do not allow this.
The interpreter will truncate the package to the defined size (and issue an
error message), but can leave the extra objects undeleted if they have been
pre-created during the argument processing (such is the case if the package
consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
Fixes a compatibility issue when the same buffer or string is
stored to itself. This has been seen in the field. Previously,
ACPICA would zero out the buffer/string. Now, the operation is
treated as a noop. ACPICA BZ 803. Lin Ming.
Add limited support for executable AML code that exists outside of
any control method. This type of code has been illegal since ACPI 2.0.
The code must exist in an If/Else/While block. All AML tables are
supported, including tables that are dynamically loaded.
ACPICA BZ 762. Lin Ming.
Since PM2 control is an optional register, ignore an AE_BAD_ADDRESS
exception from any writes to it. Affects writes to the BM arbitration
bit. ACPICA BZ 799.
Fixes a problem with the mechanism that prevents problems if the
AcpiTerminate interface is inadvertently called more than once before
the ACPICA code is re-initialized. ACPICA BZ 795.
Problem was introduced in 20090625. The _HID and _CID matching code
was broken with the introduction of the string changes for these
IDs. ACPICA BZ 793. Reported by Dana Myers.
Added one new package type, a package that contains a revision number
and a variable number of sub-packages. Restructured the module to
put the sub-package list traversal in a separate function.
Fixes a problem where a predefined method is defined to return a
variable-length Package of sub-packages. If the length is one, the
BIOS code occasionally creates a simple single package with no
sub-packages. This code attempts to fix the problem by wrapping
a new package object around the existing package. ACPICA BZ 790.
This fixes a problem where the code that attempts to repair/convert an
object of incorrect type is only executed on the first time the
predefined method is called. The mechanism that disables warnings
on subsequent calls was interfering with the repair mechanism.
ACPICA BZ 781.
Function AcpiTbPrintTableHeader. Some ACPI tables contain non-printable
characters in one of the string fields of the the header - Signature,
OemId, OemTableId, or CompilerId. Invalid characters are replaced
by '?'. ACPICA BZ 788.
Handler was never invoked. Now invoked if/when host node is deleted.
Data object was not automatically deleted when host node was deleted.
Interface to handler had an unused parameter, removed it.
ACPICA BZ 778.
Completed a major update for the AcpiGetObjectInfo external interface.
Changes include:
- Support for variable, unlimited length HID, UID, and CID strings
- Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
- Call the _SxW power methods on behalf of a device object
- Determine if a device is a PCI root bridge
- Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
These changes will require an update to all callers of this interface.
See the ACPICA Programmer Reference for details.