aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJung-uk Kim <jkim@FreeBSD.org>2013-07-26 18:20:00 +0000
committerJung-uk Kim <jkim@FreeBSD.org>2013-07-26 18:20:00 +0000
commitdbded195f9840f9044a6828c8877c6bf0a956482 (patch)
treee05da15a04629f6e36af5ca6c81a2efda47a9dc3
parent94c37fb2483cc09856a30e74879a69f2ccfe22f0 (diff)
downloadsrc-dbded195f9840f9044a6828c8877c6bf0a956482.tar.gz
src-dbded195f9840f9044a6828c8877c6bf0a956482.zip
Import ACPICA 20130725.vendor/acpica/20130725
Notes
Notes: svn path=/vendor-sys/acpica/dist/; revision=253681 svn path=/vendor-sys/acpica/20130725/; revision=253682; tag=vendor/acpica/20130725
-rw-r--r--changes.txt1566
-rw-r--r--generate/unix/Makefile.common4
-rw-r--r--generate/unix/Makefile.config14
-rw-r--r--source/common/dmextern.c47
-rw-r--r--source/common/getopt.c20
-rw-r--r--source/compiler/asloffset.c172
-rw-r--r--source/compiler/asloperands.c9
-rw-r--r--source/compiler/asloptions.c2
-rw-r--r--source/compiler/dttemplate.c23
-rw-r--r--source/components/executer/exoparg1.c50
-rw-r--r--source/components/hardware/hwtimer.c15
-rw-r--r--source/components/namespace/nspredef.c18
-rw-r--r--source/components/namespace/nswalk.c18
-rw-r--r--source/components/namespace/nsxfeval.c14
-rw-r--r--source/components/tables/tbfadt.c4
-rw-r--r--source/components/tables/tbxfroot.c10
-rw-r--r--source/components/utilities/utglobal.c1
-rw-r--r--source/components/utilities/utosi.c89
-rw-r--r--source/components/utilities/utxface.c34
-rw-r--r--source/include/acglobal.h7
-rw-r--r--source/include/aclocal.h17
-rw-r--r--source/include/acnamesp.h4
-rw-r--r--source/include/acpixf.h11
-rw-r--r--source/include/actables.h4
-rw-r--r--source/include/actypes.h28
-rw-r--r--source/include/acutils.h4
-rw-r--r--source/include/platform/acfreebsd.h12
-rw-r--r--source/os_specific/service_layers/osfreebsdtbl.c27
-rw-r--r--source/os_specific/service_layers/oslinuxtbl.c23
-rw-r--r--source/tools/acpiexec/aetables.c9
-rw-r--r--source/tools/acpiexec/aetables.h54
31 files changed, 1629 insertions, 681 deletions
diff --git a/changes.txt b/changes.txt
index 0eb04f92decc..83c156bde4ca 100644
--- a/changes.txt
+++ b/changes.txt
@@ -1,4 +1,76 @@
----------------------------------------
+25 July 2013. Summary of changes for version 20130725:
+
+1) ACPICA kernel-resident subsystem:
+
+Fixed a problem with the DerefOf operator where references to FieldUnits
+and BufferFields incorrectly returned the parent object, not the actual
+value of the object. After this change, a dereference of a FieldUnit
+reference results in a read operation on the field to get the value, and
+likewise, the appropriate BufferField value is extracted from the target
+buffer.
+
+Fixed a problem where the _WAK method could cause a fault under these
+circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
+method returned no value. The problem is rarely seen because most kernels
+run ACPICA in slack mode.
+
+For the DerefOf operator, a fatal error now results if an attempt is made
+to dereference a reference (created by the Index operator) to a NULL
+package element. Provides compatibility with other ACPI implementations,
+and this behavior will be added to a future version of the ACPI
+specification.
+
+The ACPI Power Management Timer (defined in the FADT) is now optional.
+This provides compatibility with other ACPI implementations and will
+appear in the next version of the ACPI specification. If there is no PM
+Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
+zero in the FADT indicates no PM timer.
+
+Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
+allows the host to globally enable/disable all vendor strings, all
+feature strings, or both. Intended to be primarily used for debugging
+purposes only. Lv Zheng.
+
+Expose the collected _OSI data to the host via a global variable. This
+data tracks the highest level vendor ID that has been invoked by the BIOS
+so that the host (and potentially ACPICA itself) can change behaviors
+based upon the age of the BIOS.
+
+Example Code and Data Size: These are the sizes for the OS-independent
+acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
+debug version of the code includes the debug output trace mechanism and
+has a much larger code and data size.
+
+ Current Release:
+ Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
+ Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
+ Previous Release:
+ Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
+ Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
+
+
+2) iASL Compiler/Disassembler and Tools:
+
+iASL: Created the following enhancements for the -so option (create
+offset table):
+1)Add offsets for the last nameseg in each namepath for every supported
+object type
+2)Add support for Processor, Device, Thermal Zone, and Scope objects
+3)Add the actual AML opcode for the parent object of every supported
+object type
+4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
+
+Disassembler: Emit all unresolved external symbols in a single block.
+These are external references to control methods that could not be
+resolved, and thus, the disassembler had to make a guess at the number of
+arguments to parse.
+
+iASL: The argument to the -T option (create table template) is now
+optional. If not specified, the default table is a DSDT, typically the
+most common case.
+
+----------------------------------------
26 June 2013. Summary of changes for version 20130626:
1) ACPICA kernel-resident subsystem:
@@ -65,12 +137,14 @@ longer executed properly because of a memory block that was not
initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
<tomasz.nowicki@linaro.org>.
-Fixed a possible problem with the new extended sleep registers in the ACPI
+Fixed a possible problem with the new extended sleep registers in the
+ACPI
5.0 FADT. Do not use these registers (even if populated) unless the HW-
reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
1020. Lv Zheng.
-Implemented return value repair code for _CST predefined objects: Sort the
+Implemented return value repair code for _CST predefined objects: Sort
+the
list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
Implemented a debug-only option to disable loading of SSDTs from the
@@ -87,7 +161,8 @@ BZ 1013.
4) Clear debug buffer global on termination to prevent possible multiple
delete. ACPICA BZ 1010.
-Standardized all switch() blocks across the entire source base. After many
+Standardized all switch() blocks across the entire source base. After
+many
years, different formatting for switch() had crept in. This change makes
the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
@@ -118,7 +193,8 @@ has a much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
New utility: Implemented an easily portable version of the acpidump
-utility to extract ACPI tables from the system (or a file) in an ASCII hex
+utility to extract ACPI tables from the system (or a file) in an ASCII
+hex
dump format. The top-level code implements the various command line
options, file I/O, and table dump routines. To port to a new host, only
three functions need to be implemented to get tables -- since this
@@ -152,7 +228,8 @@ iASL: Added control method and package support for the -so option
iASL: issue a remark if a non-serialized method creates named objects. If
a thread blocks within the method for any reason, and another thread
-enters the method, the method will fail because an attempt will be made to
+enters the method, the method will fail because an attempt will be made
+to
create the same (named) object twice. In this case, issue a remark that
the method should be marked serialized. NOTE: may become a warning later.
ACPICA BZ 909.
@@ -165,10 +242,13 @@ ACPICA BZ 909.
Fixed a possible buffer overrun during some rare but specific field unit
read operations. This overrun can only happen if the DSDT version is 1 --
meaning that all AML integers are 32 bits -- and the field length is
-between 33 and 55 bits long. During the read, an internal buffer object is
-created for the field unit because the field is larger than an integer (32
+between 33 and 55 bits long. During the read, an internal buffer object
+is
+created for the field unit because the field is larger than an integer
+(32
bits). However, in this case, the buffer will be incorrectly written
-beyond the end because the buffer length is less than the internal minimum
+beyond the end because the buffer length is less than the internal
+minimum
of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
long, but a full 8 bytes will be written.
@@ -220,7 +300,8 @@ has a much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
AcpiExec: Added installation of a handler for the SystemCMOS address
-space. This prevents control method abort if a method accesses this space.
+space. This prevents control method abort if a method accesses this
+space.
AcpiExec: Added support for multiple EC devices, and now install EC
operation region handler(s) at the actual EC device instead of the
@@ -235,7 +316,8 @@ AcpiExec installs a handler for every possible address space.
Debugger: Enhanced the "handlers" command to display non-root handlers.
This change enhances the handlers command to display handlers associated
with individual devices throughout the namespace, in addition to the
-currently supported display of handlers associated with the root namespace
+currently supported display of handlers associated with the root
+namespace
node.
ASL Test Suite: Several test suite errors have been identified and
@@ -264,7 +346,8 @@ return from this interface. Handles a possible timeout case if
ACPI_WAIT_FOREVER is modified by the host to be a value less than
"forever". Jung-uk Kim.
-Predefined name support: Add allowed/required argument type information to
+Predefined name support: Add allowed/required argument type information
+to
the master predefined info table. This change adds the infrastructure to
enable typechecking on incoming arguments for all predefined
methods/objects. It does not actually contain the code that will fully
@@ -287,10 +370,12 @@ has a much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-iASL: Implemented a new option to simplify the development of ACPI-related
+iASL: Implemented a new option to simplify the development of ACPI-
+related
BIOS code. Adds support for a new "offset table" output file. The -so
option will create a C table containing the AML table offsets of various
-named objects in the namespace so that BIOS code can modify them easily at
+named objects in the namespace so that BIOS code can modify them easily
+at
boot time. This can simplify BIOS runtime code by eliminating expensive
searches for "magic values", enhancing boot times and adding greater
reliability. With assistance from Lee Hamel.
@@ -324,11 +409,13 @@ names table (above).
Fixed a possible regression on some hosts: Reinstated the safe return
macros (return_ACPI_STATUS, etc.) that ensure that the argument is
evaluated only once. Although these macros are not needed for the ACPICA
-code itself, they are often used by ACPI-related host device drivers where
+code itself, they are often used by ACPI-related host device drivers
+where
the safe feature may be necessary.
Fixed several issues related to the ACPI 5.0 reduced hardware support
-(SOC): Now ensure that if the platform declares itself as hardware-reduced
+(SOC): Now ensure that if the platform declares itself as hardware-
+reduced
via the FADT, the following functions become NOOPs (and always return
AE_OK) because ACPI is always enabled by definition on these machines:
AcpiEnable
@@ -341,13 +428,15 @@ predefined name return values. Both of these repairs can simplify code in
the related device drivers that invoke these methods:
1) For the _STR and _MLS names, automatically repair/convert an ASCII
string to a Unicode buffer.
-2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with a
+2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
+a
lone end tag descriptor in the following cases: A Return(0) was executed,
a null buffer was returned, or no object at all was returned (non-slack
mode only). Adds a new file, nsconvert.c
ACPICA BZ 998. Bob Moore, Lv Zheng.
-Resource Manager: Added additional code to prevent possible infinite loops
+Resource Manager: Added additional code to prevent possible infinite
+loops
while traversing corrupted or ill-formed resource template buffers. Check
for zero-length resource descriptors in all code that loops through
resource templates (the length field is used to index through the
@@ -388,7 +477,8 @@ iASL: Implemented compile-time validation of package objects returned by
predefined names. This new feature validates static package objects
returned by the various predefined names defined to return packages. Both
object types and package lengths are validated, for both parent packages
-and sub-packages, if any. The code is similar in structure and behavior to
+and sub-packages, if any. The code is similar in structure and behavior
+to
the runtime repair mechanism within the AML interpreter and uses the
existing predefined name information table. Adds a new file, aslprepkg.c.
ACPICA BZ 938.
@@ -405,7 +495,8 @@ assumes zero method arguments in these cases (it cannot determine the
actual number of arguments without resolution/definition of the method).
Debugger: Added support to display all resources with a single command.
-Invocation of the resources command with no arguments will now display all
+Invocation of the resources command with no arguments will now display
+all
resources within the current namespace.
AcpiHelp: Added descriptive text for each ACPICA exception code displayed
@@ -418,8 +509,10 @@ via the -e option.
Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
-objects to return a package containing one integer, most BIOS code returns
-two integers and the previous code reflects that. However, we also need to
+objects to return a package containing one integer, most BIOS code
+returns
+two integers and the previous code reflects that. However, we also need
+to
support BIOS code that actually implements to the ACPI spec, and this
change reflects this.
@@ -463,12 +556,15 @@ attempt to flush data to the output file(s) as the compiler is aborting.
This can cause an infinite loop as the max error count code essentially
keeps calling itself.
-iASL/Disassembler: Added an option (-in) to ignore NOOP opcodes/operators.
+iASL/Disassembler: Added an option (-in) to ignore NOOP
+opcodes/operators.
Implemented for both the compiler and the disassembler. Often, the NOOP
-opcode is used as padding for packages that are changed dynamically by the
+opcode is used as padding for packages that are changed dynamically by
+the
BIOS. When disassembled and recompiled, these NOOPs will cause syntax
errors. This option causes the disassembler to ignore all NOOP opcodes
-(0xA3), and it also causes the compiler to ignore all ASL source code NOOP
+(0xA3), and it also causes the compiler to ignore all ASL source code
+NOOP
statements as well.
Debugger: Enhanced the Sleep command to execute all sleep states. This
@@ -499,7 +595,8 @@ the existing share bit. Reported by Aaron Lu.
Interpreter: Fix Store() when an implicit conversion is not possible. For
example, in the cases such as a store of a string to an existing package
object, implement the store as a CopyObject(). This is a small departure
-from the ACPI specification which states that the control method should be
+from the ACPI specification which states that the control method should
+be
aborted in this case. However, the ASLTS suite depends on this behavior.
Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
@@ -538,15 +635,18 @@ iASL: Disallow a method call as argument to the ObjectType ASL operator.
This change tracks an errata to the ACPI 5.0 document. The AML grammar
will not allow the interpreter to differentiate between a method and a
method invocation when these are used as an argument to the ObjectType
-operator. The ACPI specification change is to disallow a method invocation
+operator. The ACPI specification change is to disallow a method
+invocation
(UserTerm) for the ObjectType operator.
Finish support for the TPM2 and CSRT tables in the headers, table
compiler, and disassembler.
Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
-always expires immediately if the semaphore is not available. The original
-code was using a relative-time timeout, but sem_timedwait requires the use
+always expires immediately if the semaphore is not available. The
+original
+code was using a relative-time timeout, but sem_timedwait requires the
+use
of an absolute time.
iASL: Added a remark if the Timer() operator is used within a 32-bit
@@ -566,14 +666,18 @@ been updated.
Implemented a performance enhancement for ACPI/AML Package objects. This
change greatly increases the performance of Package objects within the
-interpreter. It changes the processing of reference counts for packages by
+interpreter. It changes the processing of reference counts for packages
+by
optimizing for the most common case where the package sub-objects are
-either Integers, Strings, or Buffers. Increases the overall performance of
-the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 2X.)
+either Integers, Strings, or Buffers. Increases the overall performance
+of
+the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
+2X.)
Chao Guan. ACPICA BZ 943.
Implemented and deployed common macros to extract flag bits from resource
-descriptors. Improves readability and maintainability of the code. Fixes a
+descriptors. Improves readability and maintainability of the code. Fixes
+a
problem with the UART serial bus descriptor for the number of data bits
flags (was incorrectly 2 bits, should be 3).
@@ -607,14 +711,17 @@ carats (^). ACPICA BZ 984.
Debugger: Completed a major update for the Disassemble<method> command.
This command was out-of-date and did not properly disassemble control
-methods that had any reasonable complexity. This fix brings the command up
+methods that had any reasonable complexity. This fix brings the command
+up
to the same level as the rest of the disassembler. Adds one new file,
dmdeferred.c, which is existing code that is now common with the main
disassembler and the debugger disassemble command. ACPICA MZ 978.
iASL: Moved the parser entry prototype to avoid a duplicate declaration.
-Newer versions of Bison emit this prototype, so moved the prototype out of
-the iASL header to where it is actually used in order to avoid a duplicate
+Newer versions of Bison emit this prototype, so moved the prototype out
+of
+the iASL header to where it is actually used in order to avoid a
+duplicate
declaration.
iASL/Tools: Standardized use of the stream I/O functions:
@@ -622,7 +729,8 @@ iASL/Tools: Standardized use of the stream I/O functions:
2) Ensure proper order of size/count arguments for fread/fwrite
3) Use test of (Actual != Requested) after all fwrite, and most fread
4) Standardize I/O error messages
-Improves reliability and maintainability of the code. Bob Moore, Lv Zheng.
+Improves reliability and maintainability of the code. Bob Moore, Lv
+Zheng.
ACPICA BZ 981.
Disassembler: Prevent duplicate External() statements. During generation
@@ -744,7 +852,8 @@ ACPICA
BZ 846.
Makefiles: Completely removed the obsolete "Linux" makefiles under
-acpica/generate/linux. These makefiles are obsolete and have been replaced
+acpica/generate/linux. These makefiles are obsolete and have been
+replaced
by
the generic unix makefiles under acpica/generate/unix.
@@ -783,7 +892,8 @@ that is a named object. This change fixes the problem.
iASL: Fixed a regression where the AML file is not deleted on errors. The
AML
-output file should be deleted if there are any errors during the compiler.
+output file should be deleted if there are any errors during the
+compiler.
The
only exception is if the -f (force output) option is used. ACPICA BZ 974.
@@ -838,7 +948,8 @@ ACPICA BZ 969.
Implemented support for complex bit-packed buffers returned from the _PLD
(Physical Location of Device) predefined method. Adds a new external
-interface, AcpiDecodePldBuffer that parses the buffer into a more usable C
+interface, AcpiDecodePldBuffer that parses the buffer into a more usable
+C
structure. Note: C Bitfields cannot be used for this type of predefined
structure since the memory layout of individual bitfields is not defined
by
@@ -853,7 +964,8 @@ during
execution of module-level ASL code (code that is executed at table load
time.) Lin Ming.
-Added the Windows8/Server2012 string for the _OSI method. This change adds
+Added the Windows8/Server2012 string for the _OSI method. This change
+adds
a
new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
2012.
@@ -870,14 +982,16 @@ GPE support: Removed an extraneous parameter from the various low-level
internal GPE functions. Tang Feng.
Removed the linux makefiles from the unix packages. The generate/linux
-makefiles are obsolete and have been removed from the unix tarball release
+makefiles are obsolete and have been removed from the unix tarball
+release
packages. The replacement makefiles are under generate/unix, and there is
a
top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
Updates for Unix makefiles:
1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
-2) Update linker flags (move to end of command line) for AcpiExec utility.
+2) Update linker flags (move to end of command line) for AcpiExec
+utility.
Guan Chao.
Split ACPICA initialization functions to new file, utxfinit.c. Split from
@@ -901,13 +1015,15 @@ much larger code and data size.
iASL: Fixed a problem with constant folding for fixed-length constant
expressions. The constant-folding code was not being invoked for constant
-expressions that allow the use of type 3/4/5 opcodes to generate constants
+expressions that allow the use of type 3/4/5 opcodes to generate
+constants
for expressions such as ByteConstExpr, WordConstExpr, etc. This could
result
in the generation of invalid AML bytecode. ACPICA BZ 970.
iASL: Fixed a generation issue on newer versions of Bison. Newer versions
-apparently automatically emit some of the necessary externals. This change
+apparently automatically emit some of the necessary externals. This
+change
handles these versions in order to eliminate generation warnings.
Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
@@ -925,7 +1041,8 @@ AE_BAD_PARAMETER was always returned.
1) ACPICA Kernel-resident Subsystem:
Fixed a possible fault in the return package object repair code. Fixes a
-problem that can occur when a lone package object is wrapped with an outer
+problem that can occur when a lone package object is wrapped with an
+outer
package object in order to force conformance to the ACPI specification.
Can
affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
@@ -969,14 +1086,16 @@ table
and FADT errors. Additional deployment to be completed as appropriate in
the
future. The associated conditional macros are ACPI_BIOS_ERROR and
-ACPI_BIOS_WARNING. See the ACPICA reference for additional details. ACPICA
+ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
+ACPICA
BZ
843.
Implicit notify support: ensure that no memory allocation occurs within a
critical region. This fix moves a memory allocation outside of the time
that a
-spinlock is held. Fixes issues on systems that do not allow this behavior.
+spinlock is held. Fixes issues on systems that do not allow this
+behavior.
Jung-uk Kim.
Split exception code utilities and tables into a new file,
@@ -1029,7 +1148,8 @@ generates a
runtime device notification in the absence of a BIOS-provided GPE control
method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
notify is
-provided by ACPICA for Windows compatibility, and is a workaround for BIOS
+provided by ACPICA for Windows compatibility, and is a workaround for
+BIOS
AML
code errors. See the description of the AcpiSetupGpeForWake interface in
the
@@ -1068,9 +1188,11 @@ etc.)
AcpiSrc: Fixed several long-standing Linux code translation issues.
Argument
-descriptions in function headers are now translated properly to lower case
+descriptions in function headers are now translated properly to lower
+case
and
-underscores. ACPICA BZ 961. Also fixes translation problems such as these:
+underscores. ACPICA BZ 961. Also fixes translation problems such as
+these:
(old -> new)
i_aSL -> iASL
00-7_f -> 00-7F
@@ -1112,7 +1234,8 @@ additional information. ACPICA BZ 868.
ACPI Tables: Added a new error message for a possible overflow failure
during
-the conversion of FADT 32-bit legacy register addresses to internal common
+the conversion of FADT 32-bit legacy register addresses to internal
+common
64-
bit GAS structure representation. The GAS has a one-byte "bit length"
field,
@@ -1149,7 +1272,8 @@ correct External statement.
Disassembler: Several additional fixes for the External() statement
generation
related to some ASL operators. Also, order the External() statements
-alphabetically in the disassembler output. Fixes the External() generation
+alphabetically in the disassembler output. Fixes the External()
+generation
for
the Create* field, Alias, and Scope operators:
1) Create* buffer field operators - fix type mismatch warning on
@@ -1173,7 +1297,8 @@ condition.
iASL: Implemented some changes to enhance the IDE support (-vi option.)
Error
-and Warning messages are now correctly recognized for both the source code
+and Warning messages are now correctly recognized for both the source
+code
browser and the global error and warning counts.
----------------------------------------
@@ -1182,13 +1307,15 @@ browser and the global error and warning counts.
1) ACPICA Core Subsystem:
-Implemented support for multiple notify handlers. This change adds support
+Implemented support for multiple notify handlers. This change adds
+support
to
allow multiple system and device notify handlers on Device, Thermal Zone,
and
Processor objects. This can simplify the host OS notification
implementation.
-Also re-worked and restructured the entire notify support code to simplify
+Also re-worked and restructured the entire notify support code to
+simplify
handler installation, handler removal, notify event queuing, and notify
dispatch to handler(s). Note: there can still only be two global notify
handlers - one for system notifies and one for device notifies. There are
@@ -1229,7 +1356,8 @@ resource tags within resource descriptors appearing after a
StartDependent*
descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
-iASL and Preprocessor: Implemented full support for the #line directive to
+iASL and Preprocessor: Implemented full support for the #line directive
+to
correctly track original source file line numbers through the .i
preprocessor
output file - for error and warning messages.
@@ -1250,7 +1378,8 @@ ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
Update
for resource descriptor offset fix above. Update/cleanup error output
routines. Enable and send iASL errors/warnings to an error logfile
-(error.txt). Send all other iASL output to a logfile (compiler.txt). Fixed
+(error.txt). Send all other iASL output to a logfile (compiler.txt).
+Fixed
several extraneous "unrecognized operator" messages.
----------------------------------------
@@ -1260,7 +1389,8 @@ several extraneous "unrecognized operator" messages.
1) ACPICA Core Subsystem:
Enhanced the sleep/wake interfaces to optionally execute the _GTS method
-(Going To Sleep) and the _BFS method (Back From Sleep). Windows apparently
+(Going To Sleep) and the _BFS method (Back From Sleep). Windows
+apparently
does not execute these methods, and therefore these methods are often
untested. It has been seen on some systems where the execution of these
methods causes errors and also prevents the machine from entering S5. It
@@ -1281,8 +1411,10 @@ early.
The local FADT table length cannot be set to the common length until the
original length has been examined. There is code that checks the table
length
-and sets various fields appropriately. This can affect older machines with
-early FADT versions. For example, this can cause inadvertent writes to the
+and sets various fields appropriately. This can affect older machines
+with
+early FADT versions. For example, this can cause inadvertent writes to
+the
CST_CNT register. Julian Anastasov.
Fixed a mapping issue related to a physical table override. Use the
@@ -1295,10 +1427,12 @@ Thomas Renninger, Bob Moore.
Enhanced the automatic return-object repair code: Repair a common problem
with
-predefined methods that are defined to return a variable-length Package of
+predefined methods that are defined to return a variable-length Package
+of
sub-objects. If there is only one sub-object, some BIOS ASL code
mistakenly
-simply returns the single object instead of a Package with one sub-object.
+simply returns the single object instead of a Package with one sub-
+object.
This new support will repair this error by wrapping a Package object
around
the original object, creating the correct and expected Package with one
@@ -1393,7 +1527,8 @@ method. Some machines require that the GPEs are enabled before the _WAK
method
is executed. Thomas Renninger.
-c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) bit.
+c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
+bit.
Some BIOS code assumes that WAK_STS will be cleared on resume and use it
to
determine whether the system is rebooting or resuming. Matthew Garrett.
@@ -1429,7 +1564,8 @@ build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
model.
See the ACPICA reference for details. ACPICA BZ 942. This option removes
about
-10% of the code and 5% of the static data, and the following hardware ACPI
+10% of the code and 5% of the static data, and the following hardware
+ACPI
features become unavailable:
PM Event and Control registers
SCI interrupt (and handler)
@@ -1442,7 +1578,8 @@ features become unavailable:
Updated the unix tarball directory structure to match the ACPICA git
source
tree. This ensures that the generic unix makefiles work properly (in
-generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 867.
+generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
+867.
Updated the return value of the _REV predefined method to integer value 5
to
@@ -1493,7 +1630,8 @@ the
ACPICA reference for additional details. Adds one new file,
utilities/utaddress.c. Lin Ming, Bob Moore.
-Fixed several issues with the ACPI 5.0 FADT support: Add the sleep Control
+Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
+Control
and
Status registers, update the ACPI 5.0 flags, and update internal data
structures to handle an FADT larger than 256 bytes. The size of the ACPI
@@ -1551,7 +1689,8 @@ summarized below.
Reduced Hardware Support:
-------------------------
-This support allows for ACPI systems without the usual ACPI hardware. This
+This support allows for ACPI systems without the usual ACPI hardware.
+This
support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
will
not attempt to initialize or use any of the usual ACPI hardware. Note,
@@ -1571,7 +1710,8 @@ ACPI Tables:
------------
All new tables and updates to existing tables are fully supported in the
-ACPICA headers (for use by device drivers), the disassembler, and the iASL
+ACPICA headers (for use by device drivers), the disassembler, and the
+iASL
Data Table Compiler. ACPI 5.0 defines these new tables:
BGRT /* Boot Graphics Resource Table */
@@ -1597,7 +1737,8 @@ The new operation region Space IDs are:
Resource Descriptors:
---------------------
-All new ASL resource descriptors are fully supported by the iASL compiler,
+All new ASL resource descriptors are fully supported by the iASL
+compiler,
the
ASL/AML disassembler, and the ACPICA runtime Resource Manager code
(including
@@ -1615,15 +1756,18 @@ ASL/AML Operators, New and Modified:
One new operator is added, the Connection operator, which is used to
associate
-a GeneralPurposeIo or GenericSerialBus resource descriptor with individual
+a GeneralPurposeIo or GenericSerialBus resource descriptor with
+individual
field objects within an operation region. Several new protocols are
associated
with the AccessAs operator. All are fully supported by the iASL compiler,
disassembler, and runtime ACPICA AML interpreter:
- Connection // Declare Field Connection attributes
+ Connection // Declare Field Connection
+attributes
AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
- AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes Protocol
+ AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
+Protocol
AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
RawDataBuffer // Data type for Vendor Data
fields
@@ -1658,7 +1802,8 @@ drivers and other host OS services:
AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
to
acquire and release AML mutexes that are defined in the DSDT/SSDT tables
-provided by the BIOS. They are intended to be used in conjunction with the
+provided by the BIOS. They are intended to be used in conjunction with
+the
ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
mutual exclusion with the AML code/interpreter.
@@ -1705,7 +1850,8 @@ Non-ACPI 5.0 changes for this release:
1) ACPICA Core Subsystem:
-Fix a problem with operation region declarations where a failure can occur
+Fix a problem with operation region declarations where a failure can
+occur
if
the region name and an argument that evaluates to an object (such as the
region address) are in different namespace scopes. Lin Ming, ACPICA BZ
@@ -1757,7 +1903,8 @@ now allowed after every <Term> grammar element. ACPICA BZ 927.
iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
923.
-Disassembler: Fix problem with disassembly of the DataTableRegion operator
+Disassembler: Fix problem with disassembly of the DataTableRegion
+operator
where an inadvertent "Unhandled deferred opcode" message could be
generated.
@@ -1785,15 +1932,18 @@ Support for ACPI 5.0 in ACPICA has been underway for several months and
will
be released at the same time that ACPI 5.0 is officially released.
-The ACPI 5.0 specification is on track for release in the next few months.
+The ACPI 5.0 specification is on track for release in the next few
+months.
1) ACPICA Core Subsystem:
Fixed a problem where the maximum sleep time for the Sleep() operator was
-intended to be limited to two seconds, but was inadvertently limited to 20
+intended to be limited to two seconds, but was inadvertently limited to
+20
seconds instead.
-Linux and Unix makefiles: Added header file dependencies to ensure correct
+Linux and Unix makefiles: Added header file dependencies to ensure
+correct
generation of ACPICA core code and utilities. Also simplified the
makefiles
considerably through the use of the vpath variable to specify search
@@ -1806,8 +1956,10 @@ iASL: Implemented support to check the access length for all fields
created to
access named Resource Descriptor fields. For example, if a resource field
is
-defined to be two bits, a warning is issued if a CreateXxxxField() is used
-with an incorrect bit length. This is implemented for all current resource
+defined to be two bits, a warning is issued if a CreateXxxxField() is
+used
+with an incorrect bit length. This is implemented for all current
+resource
descriptor names. ACPICA BZ 930.
Disassembler: Fixed a byte ordering problem with the output of 24-bit and
@@ -1829,13 +1981,15 @@ AML output). Includes listings, hex files, etc.
iASL: Added -G option to the table compiler to allow the compilation of
custom
-ACPI tables. The only part of a table that is required is the standard 36-
+ACPI tables. The only part of a table that is required is the standard
+36-
byte
ACPI header.
AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
headers),
-which also adds correct 64-bit support. Also, now all output filenames are
+which also adds correct 64-bit support. Also, now all output filenames
+are
completely lower case.
AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
@@ -1844,7 +1998,8 @@ exception is an FADT. This also fixes a possible fault when attempting to
load
non-AML tables. ACPICA BZ 932.
-AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where a
+AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
+a
missing table terminator could cause a fault when using the -p option.
AcpiSrc: Fixed a possible divide-by-zero fault when generating file
@@ -1875,7 +2030,8 @@ Updated the predefined name repair mechanism to not attempt repair of a
_TSS
return object if a _PSS object is present. We can only sort the _TSS
return
-package if there is no _PSS within the same scope. This is because if _PSS
+package if there is no _PSS within the same scope. This is because if
+_PSS
is
present, the ACPI specification dictates that the _TSS Power Dissipation
field
@@ -1887,9 +2043,11 @@ is. Reported by, and fixed with assistance from Fenghua Yu.
Added an option to globally disable the control method return value
validation
-and repair. This runtime option can be used to disable return value repair
+and repair. This runtime option can be used to disable return value
+repair
if
-this is causing a problem on a particular machine. Also added an option to
+this is causing a problem on a particular machine. Also added an option
+to
AcpiExec (-dr) to set this disable flag.
All makefiles and project files: Major changes to improve generation of
@@ -1935,11 +2093,13 @@ provides the following functionality:
of arguments, and the return value data type.
Find/display AML opcode name(s) -- with opcode, arguments, and
grammar.
- Decode/display AML opcode -- with opcode name, arguments, and grammar.
+ Decode/display AML opcode -- with opcode name, arguments, and
+grammar.
Service Layers: Make multi-thread support configurable. Conditionally
compile
-the multi-thread support so that threading libraries will not be linked if
+the multi-thread support so that threading libraries will not be linked
+if
not
necessary. The only tool that requires multi-thread support is AcpiExec.
@@ -1972,7 +2132,8 @@ signature. Now, only allow SSDT, OEMx, and a null signature. History:
interpreter errors and kernel faults. So now, we once again allow
only SSDT, OEMx, and now, also a null signature. (05/2011).
-Added the missing _TDL predefined name to the global name list in order to
+Added the missing _TDL predefined name to the global name list in order
+to
enable validation. Affects both the core ACPICA code and the iASL
compiler.
@@ -2039,11 +2200,14 @@ device even if there is no corresponding operation region of type
EmbeddedControl. Fixes a problem seen on some machines and apparently is
compatible with Windows behavior. ACPICA BZ 875.
-Added more predefined methods that are eligible for automatic NULL package
-element removal. This change adds another group of predefined names to the
+Added more predefined methods that are eligible for automatic NULL
+package
+element removal. This change adds another group of predefined names to
+the
list
of names that can be repaired by having NULL package elements dynamically
-removed. This group are those methods that return a single variable-length
+removed. This group are those methods that return a single variable-
+length
package containing simple data types such as integers, buffers, strings.
This
includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
@@ -2082,7 +2246,8 @@ data size.
iASL/DTC: Major update for new grammar features. Allow generic data types
in
-custom ACPI tables. Field names are now optional. Any line can be split to
+custom ACPI tables. Field names are now optional. Any line can be split
+to
multiple lines using the continuation char (\). Large buffers now use
line-
continuation character(s) and no colon on the continuation lines. See the
@@ -2108,7 +2273,8 @@ region declaration in the same scope. If not, the _REG method is not very
useful
since it probably won't be executed. ACPICA BZ 915.
-iASL/DTC: Finish support for expression evaluation. Added a new expression
+iASL/DTC: Finish support for expression evaluation. Added a new
+expression
parser
that implements c-style operator precedence and parenthesization. ACPICA
bugzilla
@@ -2129,10 +2295,12 @@ AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
"unusual"
headers in the acpidump file. Update the header validation to support
these
-tables. Problem introduced in previous AcpiXtract version in the change to
+tables. Problem introduced in previous AcpiXtract version in the change
+to
support "wrong checksum" error messages emitted by acpidump utility.
-iASL: Add a * option to generate all template files (as a synonym for ALL)
+iASL: Add a * option to generate all template files (as a synonym for
+ALL)
as
in
"iasl -T *" or "iasl -T ALL".
@@ -2158,7 +2326,8 @@ root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
Implemented support for "spurious" Global Lock interrupts. On some
systems, a
-global lock interrupt can occur without the pending flag being set. Upon a
+global lock interrupt can occur without the pending flag being set. Upon
+a
GL
interrupt, we now ensure that a thread is actually waiting for the lock
before
@@ -2188,7 +2357,8 @@ header files, disassembler, table compiler, and template generator. Bob
Moore,
Lin Ming.
-AcpiXtract: Correctly handle embedded comments and messages from AcpiDump.
+AcpiXtract: Correctly handle embedded comments and messages from
+AcpiDump.
Apparently some or all versions of acpidump will occasionally emit a
comment
like
@@ -2209,8 +2379,10 @@ for a user-defined address space. This is used by the ASL test suite
1) ACPI CA Core Subsystem:
-Added a mechanism to defer _REG methods for some early-installed handlers.
-Most user handlers should be installed before call to AcpiEnableSubsystem.
+Added a mechanism to defer _REG methods for some early-installed
+handlers.
+Most user handlers should be installed before call to
+AcpiEnableSubsystem.
However, Event handlers and region handlers should be installed after
AcpiInitializeObjects. Override handlers for the "default" regions should
be
@@ -2222,15 +2394,18 @@ Implemented an optimization for GPE detection. This optimization will
simply
ignore GPE registers that contain no enabled GPEs -- there is no need to
read the register since this information is available internally. This
-becomes more important on machines with a large GPE space. ACPICA bugzilla
+becomes more important on machines with a large GPE space. ACPICA
+bugzilla
884. Lin Ming. Suggestion from Joe Liu.
-Removed all use of the highly unreliable FADT revision field. The revision
+Removed all use of the highly unreliable FADT revision field. The
+revision
number in the FADT has been found to be completely unreliable and cannot
be
trusted. Only the actual table length can be used to infer the version.
This
-change updates the ACPICA core and the disassembler so that both no longer
+change updates the ACPICA core and the disassembler so that both no
+longer
even look at the FADT version and instead depend solely upon the FADT
length.
@@ -2278,7 +2453,8 @@ global handlers. installation status -- and for op regions, whether
default
or user-installed handler will be used.
-iASL: Warn if reserved method incorrectly returns a value. Many predefined
+iASL: Warn if reserved method incorrectly returns a value. Many
+predefined
names are defined such that they do not return a value. If implemented as
a
method, issue a warning if such a name explicitly returns a value. ACPICA
@@ -2311,7 +2487,8 @@ a single screen, instead of help subcommands. ACPICA Bugzilla 897.
Fixed a race condition between method execution and namespace walks that
can
possibly cause a fault. The problem was apparently introduced in version
-20100528 as a result of a performance optimization that reduces the number
+20100528 as a result of a performance optimization that reduces the
+number
of
namespace walks upon method exit by using the delete_namespace_subtree
function instead of the delete_namespace_by_owner function used
@@ -2323,7 +2500,8 @@ Fixed several issues and a possible fault with the automatic "serialized"
method support. History: This support changes a method to "serialized" on
the
fly if the method generates an AE_ALREADY_EXISTS error, indicating the
-possibility that it cannot handle reentrancy. This fix repairs a couple of
+possibility that it cannot handle reentrancy. This fix repairs a couple
+of
issues seen in the field, especially on machines with many cores:
1) Delete method children only upon the exit of the last thread,
@@ -2380,7 +2558,8 @@ much larger code and data size.
iASL: Added generic data types to the Data Table compiler. Add "generic"
data
-types such as UINT32, String, Unicode, etc., to simplify the generation of
+types such as UINT32, String, Unicode, etc., to simplify the generation
+of
platform-defined tables such as UEFI. Lin Ming.
iASL: Added listing support for the Data Table Compiler. Adds listing
@@ -2407,15 +2586,18 @@ a handful of new interfaces:
One new file, evxfgpe.c to consolidate all external GPE interfaces.
See the ACPICA Programmer Reference for full details and programming
-information. See the new section 4.4 "General Purpose Event (GPE) Support"
+information. See the new section 4.4 "General Purpose Event (GPE)
+Support"
for a full overview, and section 8.7 "ACPI General Purpose Event
Management"
-for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming,
+for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
+Ming,
Bob Moore, Rafael Wysocki.
Implemented a new GPE feature for Windows compatibility, the "Implicit
Wake
-GPE Notify". This feature will automatically issue a Notify(2) on a device
+GPE Notify". This feature will automatically issue a Notify(2) on a
+device
when a Wake GPE is received if there is no corresponding GPE method or
handler. ACPICA BZ 870.
@@ -2462,13 +2644,15 @@ access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
New: AcpiNames utility - Example namespace dump utility. Shows an example
of
ACPICA configuration for a minimal namespace dump utility. Uses table and
-namespace managers, but no AML interpreter. Does not add any functionality
+namespace managers, but no AML interpreter. Does not add any
+functionality
over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
partition and configure ACPICA. ACPICA BZ 883.
AML Debugger: Increased the debugger buffer size for method return
objects.
-Was 4K, increased to 16K. Also enhanced error messages for debugger method
+Was 4K, increased to 16K. Also enhanced error messages for debugger
+method
execution, including the buffer overflow case.
----------------------------------------
@@ -2483,8 +2667,10 @@ HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
Changed the type of the predefined namespace object _TZ from ThermalZone
to
-Device. This was found to be confusing to the host software that processes
-the various thermal zones, since _TZ is not really a ThermalZone. However,
+Device. This was found to be confusing to the host software that
+processes
+the various thermal zones, since _TZ is not really a ThermalZone.
+However,
a
Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
Zhang.
@@ -2495,7 +2681,8 @@ string is "Windows 2006 SP2".
Eliminated duplicate code in AcpiUtExecute* functions. Now that the
nsrepair
code automatically repairs _HID-related strings, this type of code is no
-longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878.
+longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
+878.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
@@ -2512,8 +2699,10 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-iASL: Implemented additional compile-time validation for _HID strings. The
-non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length
+iASL: Implemented additional compile-time validation for _HID strings.
+The
+non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
+length
of
the string must be exactly seven or eight characters. For both _HID and
_CID
@@ -2527,8 +2716,10 @@ be filled in at runtime. iASL now allows this as long as there is a
tag" (name) associated with the descriptor, which gives the ASL a handle
needed to modify the descriptor. ACPICA BZ 873.
-Added single-thread support to the generic Unix application OSL. Primarily
-for iASL support, this change removes the use of semaphores in the single-
+Added single-thread support to the generic Unix application OSL.
+Primarily
+for iASL support, this change removes the use of semaphores in the
+single-
threaded ACPICA tools/applications - increasing performance. The
_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
option. ACPICA BZ 879.
@@ -2555,7 +2746,8 @@ module, hwpci.c. ACPICA BZ 857.
Implemented a dynamic repair for _HID and _CID strings. The following
problems are now repaired at runtime: 1) Remove a leading asterisk in the
string, and 2) the entire string is uppercased. Both repairs are in
-accordance with the ACPI specification and will simplify host driver code.
+accordance with the ACPI specification and will simplify host driver
+code.
ACPICA BZ 871.
The ACPI_THREAD_ID type is no longer configurable, internally it is now
@@ -2574,7 +2766,8 @@ keyword is not standard across compilers, and this type allows inline to
be
configured on a per-compiler basis. Lin Ming.
-Made the system global AcpiGbl_SystemAwakeAndRunning publically available.
+Made the system global AcpiGbl_SystemAwakeAndRunning publically
+available.
Added an extern for this boolean in acpixf.h. Some hosts utilize this
value
during suspend/restore operations. ACPICA BZ 869.
@@ -2602,10 +2795,12 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-iASL/Disassembler: Write ACPI errors to stderr instead of the output file.
+iASL/Disassembler: Write ACPI errors to stderr instead of the output
+file.
This keeps the output files free of random error messages that may
originate
-from within the namespace/interpreter code. Used this opportunity to merge
+from within the namespace/interpreter code. Used this opportunity to
+merge
all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
866. Lin Ming, Bob Moore.
@@ -2620,7 +2815,8 @@ of size_t on 32-bit versus 64-bit generations. Lin Ming.
Designed and implemented a new host interface to the _OSI support code.
This
-will allow the host to dynamically add or remove multiple _OSI strings, as
+will allow the host to dynamically add or remove multiple _OSI strings,
+as
well as install an optional handler that is called for each _OSI
invocation.
Also added a new AML debugger command, 'osi' to display and modify the
@@ -2680,13 +2876,15 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-iASL/Disassembler: Added a new option (-da, "disassemble all") to load the
+iASL/Disassembler: Added a new option (-da, "disassemble all") to load
+the
namespace from and disassemble an entire group of AML files. Useful for
loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
and
disassembling with one simple command. ACPICA BZ 865. Lin Ming.
-iASL: Allow multiple invocations of -e option. This change allows multiple
+iASL: Allow multiple invocations of -e option. This change allows
+multiple
uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
834.
Lin Ming.
@@ -2715,7 +2913,8 @@ interface. This interface will set or clear individual GPEs for wakeup.
interfaces
are now used for "runtime" GPEs only.
-Changed the behavior of the GPE install/remove handler interfaces. The GPE
+Changed the behavior of the GPE install/remove handler interfaces. The
+GPE
is
no longer disabled during this process, as it was found to cause problems
on
@@ -2727,10 +2926,13 @@ with
Index Fields and possibly Bank Fields. It will be reintroduced when these
problems have been resolved.
-Fixed a problem with references to Alias objects within Package Objects. A
+Fixed a problem with references to Alias objects within Package Objects.
+A
reference to an Alias within the definition of a Package was not always
-resolved properly. Aliases to objects like Processors, Thermal zones, etc.
-were resolved to the actual object instead of a reference to the object as
+resolved properly. Aliases to objects like Processors, Thermal zones,
+etc.
+were resolved to the actual object instead of a reference to the object
+as
it
should be. Package objects are only allowed to contain integer, string,
buffer, package, and reference objects. Redhat bugzilla 608648.
@@ -2774,7 +2976,8 @@ object files in the local directory so that there can be no collisions
between the shared files between them that are generated with different
options.
-Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use
+Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
+Use
the #define __APPLE__ to enable this support.
----------------------------------------
@@ -2789,8 +2992,10 @@ Undefined ACPI tables: We are looking for the definitions for the
following
ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
-Implemented support to enable multi-byte transfers for Embedded Controller
-(EC) operation regions. Previously, the maximum data size passed to the EC
+Implemented support to enable multi-byte transfers for Embedded
+Controller
+(EC) operation regions. Previously, the maximum data size passed to the
+EC
operation region handler was a single byte. There are often EC Fields
larger
than one byte that need to be transferred, and it is useful for the EC
@@ -2833,7 +3038,8 @@ Moore.
Added support to truncate I/O addresses to 16 bits for Windows
compatibility.
Some ASL code has been seen in the field that inadvertently has bits set
-above bit 15. This feature is optional and is enabled if the BIOS requests
+above bit 15. This feature is optional and is enabled if the BIOS
+requests
any Windows OSI strings. It can also be enabled by the host OS. Matthew
Garrett, Bob Moore.
@@ -2902,9 +3108,12 @@ Devices. Provides compatibility with other ACPI implementations. Two new
files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
Moore.
-Fixed a regression introduced in version 20100331 within the table manager
-where initial table loading could fail. This was introduced in the fix for
-AcpiReallocateRootTable. Also, renamed some of fields in the table manager
+Fixed a regression introduced in version 20100331 within the table
+manager
+where initial table loading could fail. This was introduced in the fix
+for
+AcpiReallocateRootTable. Also, renamed some of fields in the table
+manager
data structures to clarify their meaning and use.
Fixed a possible allocation overrun during internal object copy in
@@ -2934,10 +3143,12 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented Min/Max/Len/Gran validation for address resource
-descriptors. This change implements validation for the address fields that
+descriptors. This change implements validation for the address fields
+that
are common to all address-type resource descriptors. These checks are
implemented: Checks for valid Min/Max, length within the Min/Max window,
-valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per
+valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
+per
table 6-40 in the ACPI 4.0a specification. Also split the large
aslrestype1.c
and aslrestype2.c files into five new files. ACPICA BZ 840.
@@ -2954,10 +3165,12 @@ of
the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
-iASL: Implemented the -ts option to emit hex AML data in ASL format, as an
+iASL: Implemented the -ts option to emit hex AML data in ASL format, as
+an
ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
be
-dynamically loaded via the Load() operator. Also cleaned up output for the
+dynamically loaded via the Load() operator. Also cleaned up output for
+the
-
ta and -tc options. ACPICA BZ 853.
@@ -2979,7 +3192,8 @@ drivers.
Several external interfaces have changed. One external interface has been
removed. One new external interface was added. Most of the GPE external
interfaces now use the GPE spinlock instead of the events mutex (and the
-Flags parameter for many GPE interfaces has been removed.) See the updated
+Flags parameter for many GPE interfaces has been removed.) See the
+updated
ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
Rafael
Wysocki. ACPICA BZ 831.
@@ -3000,10 +3214,12 @@ read/write,
however.
Implemented a new subsystem option to force a copy of the DSDT to local
-memory. Optionally copy the entire DSDT to local memory (instead of simply
+memory. Optionally copy the entire DSDT to local memory (instead of
+simply
mapping it.) There are some (albeit very rare) BIOSs that corrupt or
replace
-the original DSDT, creating the need for this option. Default is FALSE, do
+the original DSDT, creating the need for this option. Default is FALSE,
+do
not copy the DSDT.
Implemented detection of a corrupted or replaced DSDT. This change adds
@@ -3048,12 +3264,14 @@ introduced in version 20100304. An error is incorrectly generated if a
predefined name is declared as a static named object with a value defined
using the keywords "Zero", "One", or "Ones". Lin Ming.
-iASL: Added Windows 7 support for the -g option (get local ACPI tables) by
+iASL: Added Windows 7 support for the -g option (get local ACPI tables)
+by
reducing the requested registry access rights. ACPICA BZ 842.
Disassembler: fixed a possible fault when generating External()
statements.
-Introduced in commit ae7d6fd: Properly handle externals with parent-prefix
+Introduced in commit ae7d6fd: Properly handle externals with parent-
+prefix
(carat). Fixes a string length allocation calculation. Lin Ming.
----------------------------------------
@@ -3076,7 +3294,8 @@ AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
debugging.
This debug output is now available in the release version of ACPICA
instead
-of just the debug version. Also, the entire debug output module can now be
+of just the debug version. Also, the entire debug output module can now
+be
configured out of the ACPICA build if desired. One new file added,
executer/exdebug.c. Lin Ming, Bob Moore.
@@ -3089,7 +3308,8 @@ Standardized output of integer values for ACPICA warnings/errors. Always
use
0x prefix for hex output, always use %u for unsigned integer decimal
output.
-Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400
+Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
+400
invocations.) These invocations were converted from the original
ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
@@ -3137,7 +3357,8 @@ which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
Implemented an additional repair for predefined method return values.
Attempt
-to repair unexpected NULL elements within returned Package objects. Create
+to repair unexpected NULL elements within returned Package objects.
+Create
an
Integer of value zero, a NULL String, or a zero-length Buffer as
appropriate.
@@ -3151,16 +3372,19 @@ code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
the
ACPICA code base, replaced by UINT64. The original typedef has been
retained
-for now for compatibility with existing device driver code. ACPICA BZ 824.
+for now for compatibility with existing device driver code. ACPICA BZ
+824.
-Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in
+Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
+in
the parse tree object.
Added additional warning options for the gcc-4 generation. Updated the
source
accordingly. This includes some code restructuring to eliminate
unreachable
-code, elimination of some gotos, elimination of unused return values, some
+code, elimination of some gotos, elimination of unused return values,
+some
additional casting, and removal of redundant declarations.
Example Code and Data Size: These are the sizes for the OS-independent
@@ -3185,10 +3409,12 @@ No functional changes for this release.
1) ACPI CA Core Subsystem:
-Enhanced automatic data type conversions for predefined name repairs. This
+Enhanced automatic data type conversions for predefined name repairs.
+This
change expands the automatic repairs/conversions for predefined name
return
-values to make Integers, Strings, and Buffers fully interchangeable. Also,
+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
@@ -3197,15 +3423,18 @@ module was completely restructured. Lin Ming, Bob Moore.
Implemented automatic removal of null package elements during predefined
name
repairs. This change will automatically remove embedded and trailing NULL
-package elements from returned package objects that are defined to contain
+package elements from returned package objects that are defined to
+contain
a
variable number of sub-packages. The driver is then presented with a
package
with no null elements to deal with. ACPICA BZ 819.
Implemented a repair for the predefined _FDE and _GTM names. The expected
-return value for both names is a Buffer of 5 DWORDs. This repair fixes two
-possible problems (both seen in the field), where a package of integers is
+return value for both names is a Buffer of 5 DWORDs. This repair fixes
+two
+possible problems (both seen in the field), where a package of integers
+is
returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
Kim.
@@ -3217,20 +3446,25 @@ Device object, etc.). Now executes the code within the current scope
instead
of the root. ACPICA BZ 762. Lin Ming.
-Fixed possible mutex acquisition errors when running _REG methods. Fixes a
-problem where mutex errors can occur when running a _REG method that is in
-the same scope as a method-defined operation region or an operation region
+Fixed possible mutex acquisition errors when running _REG methods. Fixes
+a
+problem where mutex errors can occur when running a _REG method that is
+in
+the same scope as a method-defined operation region or an operation
+region
under a module-level IF block. This type of code is rare, so the problem
has
not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
-Fixed a possible memory leak during module-level code execution. An object
+Fixed a possible memory leak during module-level code execution. An
+object
could be leaked for each block of executed module-level code if the
interpreter slack mode is enabled This change deletes any implicitly
returned
object from the module-level code block. Lin Ming.
-Removed messages for successful predefined repair(s). The repair mechanism
+Removed messages for successful predefined repair(s). The repair
+mechanism
was considered too wordy. Now, messages are only unconditionally emitted
if
the return object cannot be repaired. Existing messages for successful
@@ -3309,7 +3543,8 @@ Implemented a new internal function to create Integer objects. This
function
simplifies miscellaneous object creation code. ACPICA BZ 823.
-Reduced the severity of predefined repair messages, Warning to Info. Since
+Reduced the severity of predefined repair messages, Warning to Info.
+Since
the object was successfully repaired, a warning is too severe. Reduced to
an
info message for now. These messages may eventually be changed to debug-
@@ -3362,7 +3597,8 @@ Fixed a problem where an Operation Region _REG method could be executed
more
than once. If a custom address space handler is installed by the host
before
-the "initialize operation regions" phase of the ACPICA initialization, any
+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.
@@ -3402,7 +3638,8 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a problem where references to external symbols that
-contained one or more parent-prefixes (carats) were not handled correctly,
+contained one or more parent-prefixes (carats) were not handled
+correctly,
possibly causing a fault. ACPICA BZ 806. Lin Ming.
Disassembler: Restructured the code so that all functions that handle
@@ -3425,10 +3662,12 @@ files.
For Windows Vista compatibility, added the automatic execution of an _INI
method located at the namespace root (\_INI). This method is executed at
-table load time. This support is in addition to the automatic execution of
+table load time. This support is in addition to the automatic execution
+of
\_SB._INI. Lin Ming.
-Fixed a possible memory leak in the interpreter for AML package objects if
+Fixed a possible memory leak in the interpreter for AML 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
@@ -3443,14 +3682,16 @@ package
consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
Fixed a problem seen when a Buffer or String is stored to itself via ASL.
-This has been reported in the field. Previously, ACPICA would zero out the
+This has been reported in the field. Previously, ACPICA would zero out
+the
buffer/string. Now, the operation is treated as a noop. Provides Windows
compatibility. ACPICA BZ 803. Lin Ming.
Removed an extraneous error message for ASL constructs of the form
Store(LocalX,LocalX) when LocalX is uninitialized. These curious
statements
-are seen in many BIOSs and are once again treated as NOOPs and no error is
+are seen in many BIOSs and are once again treated as NOOPs and no error
+is
emitted when they are encountered. ACPICA BZ 785.
Fixed an extraneous warning message if a _DSM reserved method returns a
@@ -3479,7 +3720,8 @@ ACPICA BZ 738.
iASL: Implemented the -I option to specify additional search directories
for
include files. Allows multiple additional search paths for include files.
-Directories are searched in the order specified on the command line (after
+Directories are searched in the order specified on the command line
+(after
the local directory is searched.) ACPICA BZ 800.
iASL: Fixed a problem where the full pathname for include files was not
@@ -3489,7 +3731,8 @@ properly. ACPICA BZ 765.
iASL: Implemented the -@ option to specify a Windows-style response file
containing additional command line options. ACPICA BZ 801.
-AcpiExec: Added support to load multiple AML files simultaneously (such as
+AcpiExec: Added support to load multiple AML files simultaneously (such
+as
a
DSDT and multiple SSDTs). Also added support for wildcards within the AML
pathname. These features allow all machine tables to be easily loaded and
@@ -3507,7 +3750,8 @@ The ACPI 4.0 implementation for ACPICA is complete with this release.
1) ACPI CA Core Subsystem:
ACPI 4.0: Added header file support for all new and changed ACPI tables.
-Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new
+Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
+new
for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
BERT,
EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
@@ -3526,8 +3770,10 @@ executable AML code that exists outside of any control method and is
intended
to be executed at table load time. Although illegal since ACPI 2.0, this
type
-of code still exists and is apparently still being created. Blocks of this
-code are now detected and executed as intended. Currently, the code blocks
+of code still exists and is apparently still being created. Blocks of
+this
+code are now detected and executed as intended. Currently, the code
+blocks
must exist under either an If, Else, or While construct; these are the
typical cases seen in the field. ACPICA BZ 762. Lin Ming.
@@ -3540,7 +3786,8 @@ single
package with no sub-packages. This code attempts to fix the problem by
wrapping a new package object around the existing package. These methods
can
-be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ
+be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
+BZ
790.
Fixed a regression introduced in 20090625 for the AcpiGetDevices
@@ -3560,7 +3807,8 @@ Fixed a regression related to the recent update of the AcpiRead/Write
interfaces. A sleep/suspend could fail if the optional PM2 Control
register
does not exist during an attempt to write the Bus Master Arbitration bit.
-(However, some hosts already delete the code that writes this bit, and the
+(However, some hosts already delete the code that writes this bit, and
+the
code may in fact be obsolete at this date.) ACPICA BZ 799.
Fixed a problem where AcpiTerminate could fault if inadvertently called
@@ -3601,7 +3849,8 @@ address space handler (to be installed by an IPMI device driver.) ACPICA
BZ
773. Lin Ming.
-ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes
+ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
+Includes
support in both the header files and the disassembler.
Completed a major update for the AcpiGetObjectInfo external interface.
@@ -3612,7 +3861,8 @@ 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
+These changes will require an update to all callers of this interface.
+See
the updated ACPICA Programmer Reference for details. One new source file
has
been added - utilities/utids.c. ACPICA BZ 368, 780.
@@ -3620,7 +3870,8 @@ been added - utilities/utids.c. ACPICA BZ 368, 780.
Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
transfers. The Value parameter has been extended from 32 bits to 64 bits
in
-order to support new ACPI 4.0 tables. These changes will require an update
+order to support new ACPI 4.0 tables. These changes will require an
+update
to
all callers of these interfaces. See the ACPICA Programmer Reference for
details. ACPICA BZ 768.
@@ -3629,7 +3880,8 @@ Fixed several problems with AcpiAttachData. The handler was not invoked
when
the host node was deleted. The data sub-object was not automatically
deleted
-when the host node was deleted. The interface to the handler had an unused
+when the host node was deleted. The interface to the handler had an
+unused
parameter, this was removed. ACPICA BZ 778.
Enhanced the function that dumps ACPI table headers. All non-printable
@@ -3639,13 +3891,15 @@ OemTableId, and CompilerId.) ACPI tables with non-printable characters in
these fields are occasionally seen in the field. ACPICA BZ 788.
Fixed a problem with predefined method repair code where the code that
-attempts to repair/convert an object of incorrect type is only executed on
+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.
-Fixed a possible memory leak in the predefined validation/repair code when
+Fixed a possible memory leak in the predefined validation/repair code
+when
a
buffer is automatically converted to an expected string object.
@@ -3681,7 +3935,8 @@ predefined names and control methods (31 total). ACPICA BZ 769.
Disabled the preservation of the SCI enable bit in the PM1 control
register.
-The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to
+The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
+to
be
a "preserved" bit - "OSPM always preserves this bit position", section
4.7.3.2.1. However, some machines fail if this bit is in fact preserved
@@ -3705,7 +3960,8 @@ examples. Lin Ming, Bob Moore.
Fixed several reference count issues with the DdbHandle object that is
created from a Load or LoadTable operator. Prevent premature deletion of
the
-object. Also, mark the object as invalid once the table has been unloaded.
+object. Also, mark the object as invalid once the table has been
+unloaded.
This is needed because the handle itself may not be deleted after the
table
unload, depending on whether it has been stored in a named object by the
@@ -3721,7 +3977,8 @@ and can cause subsequent execution errors. ACPICA BZ 471.
Changed the allowable release order for ASL mutex objects. The ACPI 4.0
specification has been changed to make the SyncLevel for mutex objects
more
-useful. When releasing a mutex, the SyncLevel of the mutex must now be the
+useful. When releasing a mutex, the SyncLevel of the mutex must now be
+the
same as the current sync level. This makes more sense than the previous
rule
(SyncLevel less than or equal). This change updates the code to match the
@@ -3768,7 +4025,8 @@ after an invalid sub-table ID.
1) ACPI CA Core Subsystem:
-Fixed a compatibility issue with the recently released I/O port protection
+Fixed a compatibility issue with the recently released I/O port
+protection
mechanism. For windows compatibility, 1) On a port protection violation,
simply ignore the request and do not return an exception (allow the
control
@@ -3812,7 +4070,8 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings
+iASL: Fixed a generation warning from Bison 2.3 and fixed several
+warnings
on
the 64-bit build.
@@ -3824,13 +4083,16 @@ iASL: Added a new option for "quiet mode" (-va) that produces only the
compilation summary, not individual errors and warnings. Useful for large
batch compilations.
-AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex
-timeout that can be used to detect hang conditions during execution of AML
+AcpiExec: Implemented a new option (-z) to enable a forced
+semaphore/mutex
+timeout that can be used to detect hang conditions during execution of
+AML
code (includes both internal semaphores and AML-defined mutexes and
events.)
Added new makefiles for the generation of acpica in a generic unix-like
-environment. These makefiles are intended to generate the acpica tools and
+environment. These makefiles are intended to generate the acpica tools
+and
utilities from the original acpica git source tree structure.
Test Suites: Updated and cleaned up the documentation files. Updated the
@@ -3897,12 +4159,14 @@ operation region did not actually access those ports. Validation is now
performed on a per-field basis instead of the entire region.
Modified the handling of the PM1 Status Register ignored bit (bit 11.)
-Ignored bits must be "preserved" according to the ACPI spec. Usually, this
+Ignored bits must be "preserved" according to the ACPI spec. Usually,
+this
means a read/modify/write when writing to the register. However, for
status
registers, writing a one means clear the event. Writing a zero means
preserve
-the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec,
+the event (do not clear.) This behavior is clarified in the ACPI 4.0
+spec,
and the ACPICA code now simply always writes a zero to the ignored bit.
Modified the handling of ignored bits for the PM1 A/B Control Registers.
@@ -3940,13 +4204,17 @@ aetables.c
Optimized the ACPI register locking. Removed locking for reads from the
ACPI
-bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is
+bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
+is
not required when reading the single-bit registers. The
-AcpiGetRegisterUnlocked function is no longer needed and has been removed.
-This will improve performance for reads on these registers. ACPICA BZ 760.
+AcpiGetRegisterUnlocked function is no longer needed and has been
+removed.
+This will improve performance for reads on these registers. ACPICA BZ
+760.
Fixed the parameter validation for AcpiRead/Write. Now return
-AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS
+AE_BAD_PARAMETER if the input register pointer is null, and
+AE_BAD_ADDRESS
if
the register has an address of zero. Previously, these cases simply
returned
@@ -3956,14 +4224,17 @@ should check for a valid register address before calling. ACPICA BZ 748.
Renamed the external ACPI bit register access functions. Renamed
AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
-functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister.
+functions. The new names are AcpiReadBitRegister and
+AcpiWriteBitRegister.
Also, restructured the code for these functions by simplifying the code
path
and condensing duplicate code to reduce code size.
Added new functions to transparently handle the possibly split PM1 A/B
-registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions
-now handle the split registers for PM1 Status, Enable, and Control. ACPICA
+registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
+functions
+now handle the split registers for PM1 Status, Enable, and Control.
+ACPICA
BZ
746.
@@ -3973,7 +4244,8 @@ This function writes both of the PM1 control registers (A/B). These
registers
are different than the PM1 A/B status and enable registers in that
different
-values can be written to the A/B registers. Most notably, the SLP_TYP bits
+values can be written to the A/B registers. Most notably, the SLP_TYP
+bits
can be different, as per the values returned from the _Sx predefined
methods.
@@ -3988,7 +4260,8 @@ register. ACPICA BZ 751.
Split out the PM1 Status registers from the FADT. Added new globals for
these
registers (A/B), similar to the way the PM1 Enable registers are handled.
-Instead of overloading the FADT Event Register blocks. This makes the code
+Instead of overloading the FADT Event Register blocks. This makes the
+code
clearer and less prone to error.
Fixed the warning message for when the platform contains too many ACPI
@@ -3998,7 +4271,8 @@ calculation
for the truncation value was incorrect.
Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
-obsolete macro, since it is now a simple reference to ->common.type. There
+obsolete macro, since it is now a simple reference to ->common.type.
+There
were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
@@ -4011,7 +4285,8 @@ included for 32-bit hosts.
Debug output: print the input and result for invocations of the _OSI
reserved
-control method via the ACPI_LV_INFO debug level. Also, reduced some of the
+control method via the ACPI_LV_INFO debug level. Also, reduced some of
+the
verbosity of this debug level. Len Brown.
Example Code and Data Size: These are the sizes for the OS-independent
@@ -4053,8 +4328,10 @@ a table is dynamically loaded via the AML Load operator.
Updated FADT flag definitions, especially the Boot Architecture flags.
-Debugger: For the Find command, automatically pad the input ACPI name with
-underscores if the name is shorter than 4 characters. This enables a match
+Debugger: For the Find command, automatically pad the input ACPI name
+with
+underscores if the name is shorter than 4 characters. This enables a
+match
with the actual namespace entry which is itself padded with underscores.
Example Code and Data Size: These are the sizes for the OS-independent
@@ -4112,7 +4389,8 @@ register lengths within the FADT are now used, and the low level ACPI
register access no longer hardcodes the ACPI register lengths. Given that
there may be some risk in actually trusting the FADT register lengths, a
run-
-time option was added to fall back to the default hardcoded lengths if the
+time option was added to fall back to the default hardcoded lengths if
+the
FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
option is set to true for now, and a warning is issued if a suspicious
FADT
@@ -4145,9 +4423,11 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-iASL: Completed the '-e' option to include additional ACPI tables in order
+iASL: Completed the '-e' option to include additional ACPI tables in
+order
to
-aid with disassembly and External statement generation. ACPICA BZ 742. Lin
+aid with disassembly and External statement generation. ACPICA BZ 742.
+Lin
Ming.
iASL: Removed the "named object in while loop" error. The compiler cannot
@@ -4157,7 +4437,8 @@ Disassembler: Implemented support for FADT revision 2 (MS extension).
ACPICA
BZ 743.
-Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
+Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
+MCFG).
----------------------------------------
31 October 2008. Summary of changes for version 20081031:
@@ -4175,37 +4456,48 @@ Future
plans include moving all private headers to a new subdirectory.
Implemented an automatic Buffer->String return value conversion for
-predefined ACPI methods. For these methods (such as _BIF), added automatic
+predefined ACPI methods. For these methods (such as _BIF), added
+automatic
conversion for return objects that are required to be a String, but a
Buffer
was found instead. This can happen when reading string battery data from
an
-operation region, because it used to be difficult to convert the data from
-buffer to string from within the ASL. Ensures that the host OS is provided
+operation region, because it used to be difficult to convert the data
+from
+buffer to string from within the ASL. Ensures that the host OS is
+provided
with a valid null-terminated string. Linux BZ 11822.
Updated the FACS waking vector interfaces. Split
AcpiSetFirmwareWakingVector
into two: one for the 32-bit vector, another for the 64-bit vector. This
is
-required because the host OS must setup the wake much differently for each
-vector (real vs. protected mode, etc.) and the interface itself should not
+required because the host OS must setup the wake much differently for
+each
+vector (real vs. protected mode, etc.) and the interface itself should
+not
be
-deciding which vector to use. Also, eliminated the GetFirmwareWakingVector
-interface, as it served no purpose (only the firmware reads the vector, OS
+deciding which vector to use. Also, eliminated the
+GetFirmwareWakingVector
+interface, as it served no purpose (only the firmware reads the vector,
+OS
only writes the vector.) ACPICA BZ 731.
-Implemented a mechanism to escape infinite AML While() loops. Added a loop
-counter to force exit from AML While loops if the count becomes too large.
+Implemented a mechanism to escape infinite AML While() loops. Added a
+loop
+counter to force exit from AML While loops if the count becomes too
+large.
This can occur in poorly written AML when the hardware does not respond
-within a while loop and the loop does not implement a timeout. The maximum
+within a while loop and the loop does not implement a timeout. The
+maximum
loop count is configurable. A new exception code is returned when a loop
is
broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
Optimized the execution of AML While loops. Previously, a control state
object was allocated and freed for each execution of the loop. The
-optimization is to simply reuse the control state for each iteration. This
+optimization is to simply reuse the control state for each iteration.
+This
speeds up the raw loop execution time by about 5%.
Enhanced the implicit return mechanism. For Windows compatibility, return
@@ -4219,7 +4511,8 @@ Allow multiple backslashes as root prefixes in namepaths. In a fully
qualified namepath, allow multiple backslash prefixes. This can happen
(and
is seen in the field) because of the use of a double-backslash in strings
-(since backslash is the escape character) causing confusion. ACPICA BZ 739
+(since backslash is the escape character) causing confusion. ACPICA BZ
+739
Lin Ming.
Emit a warning if two different FACS or DSDT tables are discovered in the
@@ -4261,13 +4554,15 @@ much larger code and data size.
iASL: Improved disassembly of external method calls. Added the -e option
to
-allow the inclusion of additional ACPI tables to help with the disassembly
+allow the inclusion of additional ACPI tables to help with the
+disassembly
of
method invocations and the generation of external declarations during the
disassembly. Certain external method invocations cannot be disassembled
properly without the actual declaration of the method. Use the -e option
to
-include the table where the external method(s) are actually declared. Most
+include the table where the external method(s) are actually declared.
+Most
useful for disassembling SSDTs that make method calls back to the master
DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
-d
@@ -4298,7 +4593,8 @@ may
include actual repair of incorrect return objects where possible. Two new
files are nspredef.c and acpredef.h.
-Fixed a fault in the AML parser if a memory allocation fails during the Op
+Fixed a fault in the AML parser if a memory allocation fails during the
+Op
completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
Fixed an issue with implicit return compatibility. This change improves
@@ -4315,7 +4611,8 @@ during the ToDecimalString and ToHexString operators, as well as implicit
conversions. Fiodor Suietov, ACPICA BZ 585.
Fixed two possible memory leaks in the error exit paths of
-AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are
+AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
+are
similar in that they use a stack of state objects in order to eliminate
recursion. The stack must be fully unwound and deallocated if an error
occurs. Lin Ming. ACPICA BZ 383.
@@ -4351,7 +4648,8 @@ much larger code and data size.
1) ACPI CA Core Subsystem:
Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
-Reference. Changes include the elimination of cheating on the Object field
+Reference. Changes include the elimination of cheating on the Object
+field
for the DdbHandle subtype, addition of a reference class field to
differentiate the various reference types (instead of an AML opcode), and
the
@@ -4361,7 +4659,8 @@ Reduce an error to a warning for an incorrect method argument count.
Previously aborted with an error if too few arguments were passed to a
control method via the external ACPICA interface. Now issue a warning
instead
-and continue. Handles the case where the method inadvertently declares too
+and continue. Handles the case where the method inadvertently declares
+too
many arguments, but does not actually use the extra ones. Applies mainly
to
the predefined methods. Lin Ming. Linux BZ 11032.
@@ -4415,7 +4714,8 @@ Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
defines _SCP with 3 arguments. Previous versions defined it with only 1
argument. iASL now allows both definitions.
-iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
+iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
+zero-
length subtables when disassembling ACPI tables. Also fixed a couple of
errors where a full 16-bit table type field was not extracted from the
input
@@ -4447,7 +4747,8 @@ Add a function to dereference returned reference objects. Examines the
return
object from a call to AcpiEvaluateObject. Any Index or RefOf references
are
-automatically dereferenced in an attempt to return something useful (these
+automatically dereferenced in an attempt to return something useful
+(these
reference types cannot be converted into an external ACPI_OBJECT.)
Provides
MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
@@ -4467,8 +4768,10 @@ to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
Return status from the global init function AcpiUtGlobalInitialize. This
is
-used by both the kernel subsystem and the utilities such as iASL compiler.
-The function could possibly fail when the caches are initialized. Yang Yi.
+used by both the kernel subsystem and the utilities such as iASL
+compiler.
+The function could possibly fail when the caches are initialized. Yang
+Yi.
Add a function to decode reference object types to strings. Created for
improved error messages.
@@ -4494,8 +4797,10 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-Debugger: fix a possible hang when evaluating non-methods. Fixes a problem
-introduced in version 20080701. If the object being evaluated (via execute
+Debugger: fix a possible hang when evaluating non-methods. Fixes a
+problem
+introduced in version 20080701. If the object being evaluated (via
+execute
command) is not a method, the debugger can hang while trying to obtain
non-
existent parameters.
@@ -4507,15 +4812,18 @@ manually change these names, issue a remark instead.
iASL: error if named object created in while loop. Emit an error if any
named
-object is created within a While loop. If allowed, this code will generate
+object is created within a While loop. If allowed, this code will
+generate
a
-run-time error on the second iteration of the loop when an attempt is made
+run-time error on the second iteration of the loop when an attempt is
+made
to
create the same named object twice. ACPICA bugzilla 730.
iASL: Support absolute pathnames for include files. Add support for
absolute
-pathnames within the Include operator. previously, only relative pathnames
+pathnames within the Include operator. previously, only relative
+pathnames
were supported.
iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
@@ -4576,7 +4884,8 @@ found,
this no longer returns an exception. BZ 722
Fixed a problem where the wrong descriptor length was calculated for the
-EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag
+EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
+EndTag
are calculated as 12 bytes long, but the actual length in the internal
descriptor is 16 because of the round-up to 8 on the 64-bit build.
Reported
@@ -4637,13 +4946,15 @@ the
"result of operation not used" warning when the DDB handle returned from
LoadTable is not used. The warning is not needed. BZ 590
-AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method
+AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
+method
to
pass address of table to the AML. Added option to disable OpRegion
simulation
to allow creation of an OpRegion with a real address that was passed to
_CFG.
-All of this allows testing of the Load and Unload operators from AcpiExec.
+All of this allows testing of the Load and Unload operators from
+AcpiExec.
Debugger: update tables command for unloaded tables. Handle unloaded
tables
@@ -4676,7 +4987,8 @@ pointer.
Fixed a problem where the _SST execution status was incorrectly returned
to
-the caller of AcpiEnterSleepStatePrep. This was a regression introduced in
+the caller of AcpiEnterSleepStatePrep. This was a regression introduced
+in
20080514. _SST is optional and a NOT_FOUND exception should never be
returned. BZ 716
@@ -4782,7 +5094,8 @@ signatures, ACPICA must be compatible. BZ 10454.
Fixed a possible negative array index in AcpiUtValidateException. Added
NULL
-fields to the exception string arrays to eliminate a -1 subtraction on the
+fields to the exception string arrays to eliminate a -1 subtraction on
+the
SubStatus field.
Updated the debug tracking macros to reduce overall code and data size.
@@ -4790,7 +5103,8 @@ Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
instead of pointers to static strings. Jan Beulich and Bob Moore.
Implemented argument count checking in control method invocation via
-AcpiEvaluateObject. Now emit an error if too few arguments, warning if too
+AcpiEvaluateObject. Now emit an error if too few arguments, warning if
+too
many. This applies only to extern programmatic control method execution,
not
method-to-method calls within the AML. Lin Ming.
@@ -4799,7 +5113,8 @@ Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
no
longer needed, especially with the removal of 16-bit support. It was
replaced
-mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit
+mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
+bit
on
32/64-bit platforms is required.
@@ -4821,7 +5136,8 @@ much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-Implemented ACPI table revision ID validation in the disassembler. Zero is
+Implemented ACPI table revision ID validation in the disassembler. Zero
+is
always invalid. For DSDTs, the ID controls the interpreter integer width.
1
means 32-bit and this is unusual. 2 or greater is 64-bit.
@@ -4832,7 +5148,8 @@ means 32-bit and this is unusual. 2 or greater is 64-bit.
1) ACPI CA Core Subsystem:
Implemented an additional change to the GPE support in order to suppress
-spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently
+spurious or stray GPEs. The AcpiEvDisableGpe function will now
+permanently
disable incoming GPEs that are neither enabled nor disabled -- meaning
that
the GPE is unknown to the system. This should prevent future interrupt
@@ -4867,7 +5184,8 @@ generated.
Implemented several changes for Notify handling. Added support for new
Notify
values (ACPI 2.0+) and improved the Notify debug output. Notify on
-PowerResource objects is no longer allowed, as per the ACPI specification.
+PowerResource objects is no longer allowed, as per the ACPI
+specification.
(Bob Moore, Zhang Rui)
All Reference Objects returned via the AcpiEvaluateObject interface are
@@ -4877,9 +5195,11 @@ for
NULL objects - either NULL package elements or unresolved named
references.
-Fixed a problem where an extraneous debug message was produced for package
+Fixed a problem where an extraneous debug message was produced for
+package
objects (when debugging enabled). The message "Package List length larger
-than NumElements count" is now produced in the correct case, and is now an
+than NumElements count" is now produced in the correct case, and is now
+an
error message rather than a debug message. Added a debug message for the
opposite case, where NumElements is larger than the Package List (the
package
@@ -4889,7 +5209,8 @@ Implemented several improvements for the output of the ASL "Debug" object
to
clarify and keep all data for a given object on one output line.
-Fixed two size calculation issues with the variable-length Start Dependent
+Fixed two size calculation issues with the variable-length Start
+Dependent
resource descriptor.
Example Code and Data Size: These are the sizes for the OS-independent
@@ -4907,7 +5228,8 @@ a much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-Fixed a problem with the use of the Switch operator where execution of the
+Fixed a problem with the use of the Switch operator where execution of
+the
containing method by multiple concurrent threads could cause an
AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
actual Switch opcode, it must be simulated with local named temporary
@@ -4937,7 +5259,8 @@ AE_AML_INTERNAL exception depending on the order and type of operators
executed by the target control method.
Fixed a problem where resource descriptor size optimization could cause a
-problem when a _CRS resource template is passed to a _SRS method. The _SRS
+problem when a _CRS resource template is passed to a _SRS method. The
+_SRS
resource template must use the same descriptors (with the same size) as
returned from _CRS. This change affects the following resource
descriptors:
@@ -4997,22 +5320,27 @@ Added the 2008 copyright to all module headers and signons. This affects
virtually every file in the ACPICA core subsystem, the iASL compiler, and
the tools/utilities.
-Fixed a problem with the SizeOf operator when used with Package and Buffer
-objects. These objects have deferred execution for some arguments, and the
+Fixed a problem with the SizeOf operator when used with Package and
+Buffer
+objects. These objects have deferred execution for some arguments, and
+the
execution is now completed before the SizeOf is executed. This problem
caused
unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
BZ
9558
-Implemented an enhancement to the interpreter "slack mode". In the absence
+Implemented an enhancement to the interpreter "slack mode". In the
+absence
of
-an explicit return or an implicitly returned object from the last executed
+an explicit return or an implicitly returned object from the last
+executed
opcode, a control method will now implicitly return an integer of value 0
for
Microsoft compatibility. (Lin Ming) BZ 392
-Fixed a problem with the Load operator where an exception was not returned
+Fixed a problem with the Load operator where an exception was not
+returned
in
the case where the table is already loaded. (Lin Ming) BZ 463
@@ -5024,7 +5352,8 @@ Implemented support for UserTerm (Method invocation) for the Unload
operator
as per the ACPI spec. (Lin Ming) BZ 580
-Fixed a problem with the LoadTable operator where the OemId and OemTableId
+Fixed a problem with the LoadTable operator where the OemId and
+OemTableId
input strings could cause unexpected failures if they were shorter than
the
maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
@@ -5058,7 +5387,8 @@ binary DSDTs and SSDTs. If incorrect, a message is displayed within the
table
header dump at the start of the disassembly.
-Implemented additional debugging information in the namespace listing file
+Implemented additional debugging information in the namespace listing
+file
created during compilation. In addition to the namespace hierarchy, the
full
pathname to each namespace object is displayed.
@@ -5070,7 +5400,8 @@ faults or infinite loops.
Fixed an unexpected parse error when using the optional "parameter types"
list in a control method declaration. (Lin Ming) BZ 397
-Fixed a problem where two External declarations with the same name did not
+Fixed a problem where two External declarations with the same name did
+not
cause an error (Lin Ming) BZ 509
Implemented support for full TermArgs (adding Argx, Localx and method
@@ -5089,7 +5420,8 @@ operand resolution for the three string arguments. Similar to
OperationRegion
deferred argument execution.) Lin Ming. BZ 430
-Implemented full argument resolution support for the BankValue argument to
+Implemented full argument resolution support for the BankValue argument
+to
BankField. Previously, only constants were supported, now any TermArg may
be
used. Lin Ming BZ 387, 393
@@ -5104,15 +5436,18 @@ Zhao.
Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
if
-the underlying AML code changed the GPE enable registers. Now, any unknown
+the underlying AML code changed the GPE enable registers. Now, any
+unknown
incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
disabled
instead of simply ignored. Rui Zhang.
-Fixed a problem with Index Fields where the Index register was incorrectly
+Fixed a problem with Index Fields where the Index register was
+incorrectly
limited to a maximum of 32 bits. Now any size may be used.
-Fixed a couple memory leaks associated with "implicit return" objects when
+Fixed a couple memory leaks associated with "implicit return" objects
+when
the AML Interpreter slack mode is enabled. Lin Ming BZ 349
Example Code and Data Size: These are the sizes for the OS-independent
@@ -5144,11 +5479,14 @@ contents of the various event counters. Returns the current values for
AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
AcpiMethodCount. The interface can be expanded in the future if new
counters
-are added. Device drivers should use this interface rather than access the
+are added. Device drivers should use this interface rather than access
+the
counters directly.
-Fixed a problem with the FromBCD and ToBCD operators. With some compilers,
-the ShortDivide function worked incorrectly, causing problems with the BCD
+Fixed a problem with the FromBCD and ToBCD operators. With some
+compilers,
+the ShortDivide function worked incorrectly, causing problems with the
+BCD
functions with large input values. A truncation from 64-bit to 32-bit
inadvertently occurred. Internal BZ 435. Lin Ming
@@ -5156,7 +5494,8 @@ Fixed a problem with Index references passed as method arguments.
References
passed as arguments to control methods were dereferenced immediately
(before
-control was passed to the called method). The references are now correctly
+control was passed to the called method). The references are now
+correctly
passed directly to the called method. BZ 5389. Lin Ming
Fixed a problem with CopyObject used in conjunction with the Index
@@ -5193,7 +5532,8 @@ PCIBARTarget.
Fixed a problem with the 64-bit version of AcpiExec where the extended
(64-
bit) address fields for the DSDT and FACS within the FADT were not being
-used, causing truncation of the upper 32-bits of these addresses. Lin Ming
+used, causing truncation of the upper 32-bits of these addresses. Lin
+Ming
and Bob Moore
----------------------------------------
@@ -5202,7 +5542,8 @@ and Bob Moore
1) ACPI CA Core Subsystem:
Fixed a problem with the Alias operator when the target of the alias is a
-named ASL operator that opens a new scope -- Scope, Device, PowerResource,
+named ASL operator that opens a new scope -- Scope, Device,
+PowerResource,
Processor, and ThermalZone. In these cases, any children of the original
operator could not be accessed via the alias, potentially causing
unexpected
@@ -5308,12 +5649,14 @@ a much larger code and data size.
2) iASL Compiler/Disassembler:
-Implemented support to allow multiple files to be compiled/disassembled in
+Implemented support to allow multiple files to be compiled/disassembled
+in
a
single invocation. This includes command line wildcard support for both
the
Windows and Unix versions of the compiler. This feature simplifies the
-disassembly and compilation of multiple ACPI tables in a single directory.
+disassembly and compilation of multiple ACPI tables in a single
+directory.
----------------------------------------
08 May 2007. Summary of changes for version 20070508:
@@ -5324,8 +5667,10 @@ Implemented a Microsoft compatibility design change for the handling of
the
Notify AML operator. Previously, notify handlers were dispatched and
executed completely asynchronously in a deferred thread. The new design
-still executes the notify handlers in a different thread, but the original
-thread that executed the Notify() now waits at a synchronization point for
+still executes the notify handlers in a different thread, but the
+original
+thread that executed the Notify() now waits at a synchronization point
+for
the notify handler to complete. Some machines depend on a synchronous
Notify
operator in order to operate correctly.
@@ -5339,13 +5684,16 @@ until recently.
Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
that
contained invalid non-zero values in reserved fields could cause later
-failures because these fields have meaning in later revisions of the FADT.
+failures because these fields have meaning in later revisions of the
+FADT.
For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
fields
are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
-Fixed a problem where the Global Lock handle was not properly updated if a
-thread that acquired the Global Lock via executing AML code then attempted
+Fixed a problem where the Global Lock handle was not properly updated if
+a
+thread that acquired the Global Lock via executing AML code then
+attempted
to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
Joe
Liu.
@@ -5375,8 +5723,10 @@ a much larger code and data size.
Implemented a change to the order of interpretation and evaluation of AML
operand objects within the AML interpreter. The interpreter now evaluates
operands in the order that they appear in the AML stream (and the
-corresponding ASL code), instead of in the reverse order (after the entire
-operand list has been parsed). The previous behavior caused several subtle
+corresponding ASL code), instead of in the reverse order (after the
+entire
+operand list has been parsed). The previous behavior caused several
+subtle
incompatibilities with the Microsoft AML interpreter as well as being
somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
@@ -5388,7 +5738,8 @@ lock
as well as the internal use of the global lock to support AML fields -- a
control method that is holding the global lock can now simultaneously
access
-AML fields that require global lock protection. Previously, in both cases,
+AML fields that require global lock protection. Previously, in both
+cases,
this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
to
AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
@@ -5398,7 +5749,8 @@ as this can already be used to acquire a mutex multiple times by the same
thread. BZ 8066. With assistance from Alexey Starikovskiy.
Fixed a problem where invalid objects could be referenced in the AML
-Interpreter after error conditions. During operand evaluation, ensure that
+Interpreter after error conditions. During operand evaluation, ensure
+that
the internal "Return Object" field is cleared on error and only valid
pointers are stored there. Caused occasional access to deleted objects
that
@@ -5417,7 +5769,8 @@ target
of a reference (Reference.Opcode). This code was no longer necessary. BZ
7874. Valery Podrezov.
-Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was
+Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
+was
a
remnant from the previously discontinued 16-bit support.
@@ -5479,7 +5832,8 @@ enable a clean subsystem restart, via the implementation of the
AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
HP)
-Implemented enhancements to the multithreading support within the debugger
+Implemented enhancements to the multithreading support within the
+debugger
to enable improved multithreading debugging and evaluation of the
subsystem.
(Valery Podrezov)
@@ -5514,7 +5868,8 @@ statistics upon subsystem/program termination. (Valery Podrezov)
1) ACPI CA Core Subsystem:
-Optimized the Load ASL operator in the case where the source operand is an
+Optimized the Load ASL operator in the case where the source operand is
+an
operation region. Simply map the operation region memory, instead of
performing a bytewise read. (Region must be of type SystemMemory, see
below.)
@@ -5530,7 +5885,8 @@ SystemMemory, as per the ACPI specification. BZ 481
Additional cleanup and optimizations for the new Table Manager code.
-AcpiEnable will now fail if all of the required ACPI tables are not loaded
+AcpiEnable will now fail if all of the required ACPI tables are not
+loaded
(FADT, FACS, DSDT). BZ 477
Added #pragma pack(8/4) to acobject.h to ensure that the structures in
@@ -5581,22 +5937,26 @@ obtained and also checked for an ID match.
Implemented additional support for the PCI _ADR execution: upsearch until
a
device scope is found before executing _ADR. This allows PCI_Config
-operation regions to be declared locally within control methods underneath
+operation regions to be declared locally within control methods
+underneath
PCI device objects.
Fixed a problem with a possible race condition between threads executing
AcpiWalkNamespace and the AML interpreter. This condition was removed by
-modifying AcpiWalkNamespace to (by default) ignore all temporary namespace
+modifying AcpiWalkNamespace to (by default) ignore all temporary
+namespace
entries created during any concurrent control method execution. An
additional namespace race condition is known to exist between
AcpiWalkNamespace and the Load/Unload ASL operators and is still under
investigation.
Restructured the AML ParseLoop function, breaking it into several
-subfunctions in order to reduce CPU stack use and improve maintainability.
+subfunctions in order to reduce CPU stack use and improve
+maintainability.
(Mikhail Kouzmich)
-AcpiGetHandle: Fix for parameter validation to detect invalid combinations
+AcpiGetHandle: Fix for parameter validation to detect invalid
+combinations
of prefix handle and pathname. BZ 478
Example Code and Data Size: These are the sizes for the OS-independent
@@ -5629,7 +5989,8 @@ level indication flag is not needed.
Fixed a problem with the Global Lock where the lock could appear to be
obtained before it is actually obtained. The global lock semaphore was
-inadvertently created with one unit instead of zero units. (BZ 464) Fiodor
+inadvertently created with one unit instead of zero units. (BZ 464)
+Fiodor
Suietov.
Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
@@ -5652,13 +6013,15 @@ a much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-Fixed a compilation problem with the pre-defined Resource Descriptor field
+Fixed a compilation problem with the pre-defined Resource Descriptor
+field
names where an "object does not exist" error could be incorrectly
generated
if the parent ResourceTemplate pathname places the template within a
different namespace scope than the current scope. (BZ 7212)
-Fixed a problem where the compiler could hang after syntax errors detected
+Fixed a problem where the compiler could hang after syntax errors
+detected
in an ElseIf construct. (BZ 453)
Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
@@ -5667,7 +6030,8 @@ was
a null string (""). Now, the original input filename is used as the AML
output filename, with an ".aml" extension.
-Implemented a generic batch command mode for the AcpiExec utility (execute
+Implemented a generic batch command mode for the AcpiExec utility
+(execute
any AML debugger command) (Valery Podrezov).
----------------------------------------
@@ -5699,8 +6063,10 @@ Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
AcpiHwInitialize function - the FADT registers are now validated when the
table is loaded.
-Added two new warnings during FADT verification - 1) if the FADT is larger
-than the largest known FADT version, and 2) if there is a mismatch between
+Added two new warnings during FADT verification - 1) if the FADT is
+larger
+than the largest known FADT version, and 2) if there is a mismatch
+between
a
32-bit block address and the 64-bit X counterpart (when both are non-
zero.)
@@ -5721,8 +6087,10 @@ a much larger code and data size.
2) iASL Compiler/Disassembler and Tools:
-Fixed a problem with the implementation of the Switch() operator where the
-temporary variable was declared too close to the actual Switch, instead of
+Fixed a problem with the implementation of the Switch() operator where
+the
+temporary variable was declared too close to the actual Switch, instead
+of
at method level. This could cause a problem if the Switch() operator is
within a while loop, causing an error on the second iteration. (BZ 460)
@@ -5732,7 +6100,8 @@ operator. Now, ignore it and continue.
Disassembly of an FADT now verifies the input FADT and reports any errors
found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
-Disassembly of raw data buffers with byte initialization data now prefixes
+Disassembly of raw data buffers with byte initialization data now
+prefixes
each output line with the current buffer offset.
Disassembly of ASF! table now includes all variable-length data fields at
@@ -5765,7 +6134,8 @@ now
immediately disabled to prevent the waking GPE from firing again and to
prevent other wake GPEs from interrupting the wake process.
-Added the AcpiGpeCount global that tracks the number of processed GPEs, to
+Added the AcpiGpeCount global that tracks the number of processed GPEs,
+to
be used for debugging systems with a large number of ACPI interrupts.
Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
@@ -5817,7 +6187,8 @@ New ACPICA interfaces:
used.
- AcpiReallocateRootTable: Used to transfer the root table to dynamically
allocated memory after it becomes available.
-- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables
+- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
+tables
in the RSDT/XSDT.
Other ACPICA changes:
@@ -5836,7 +6207,8 @@ other allocation interfaces.
- The interface to AcpiOsGetRootPointer has changed to eliminate
unnecessary
parameters.
-- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
+- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
+64-
bit platforms. Was previously 64 bits on all platforms.
- The interface to the ACPI Global Lock acquire/release macros have
changed
@@ -5857,7 +6229,8 @@ running
to copy the root table to a dynamically allocated array, freeing up the
scratch memory specified in the call to AcpiInitializeTables.
- AcpiSubsystemInitialize: This existing interface is independent of the
-Table Manager, and does not have to be called before the Table Manager can
+Table Manager, and does not have to be called before the Table Manager
+can
be used, it only must be called before the rest of ACPICA can be used.
- ACPI Tables: Some changes have been made to the names and structure of
the
@@ -5902,7 +6275,8 @@ source for the first time. The source is contained in a separate package
and
consists of over 1100 files that exercise all ASL/AML operators. The
package
-should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
+should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
+Fiodor
Suietov)
Completed a new design and implementation for support of the ACPI Global
@@ -5920,18 +6294,22 @@ semaphore
is signaled directly from the interrupt handler.
Implemented support within the AML interpreter for package objects that
-contain a larger AML length (package list length) than the package element
+contain a larger AML length (package list length) than the package
+element
count. In this case, the length of the package is truncated to match the
package element count. Some BIOS code apparently modifies the package
length
-on the fly, and this change supports this behavior. Provides compatibility
+on the fly, and this change supports this behavior. Provides
+compatibility
with the MS AML interpreter. (With assistance from Fiodor Suietov)
-Implemented a temporary fix for the BankValue parameter of a Bank Field to
+Implemented a temporary fix for the BankValue parameter of a Bank Field
+to
support all constant values, now including the Zero and One opcodes.
Evaluation of this parameter must eventually be converted to a full
TermArg
-evaluation. A not-implemented error is now returned (temporarily) for non-
+evaluation. A not-implemented error is now returned (temporarily) for
+non-
constant values for this parameter.
Fixed problem reports (Fiodor Suietov) integrated:
@@ -5976,7 +6354,8 @@ operation of AML mutexes and recursive control methods.
The DSDT is now the only ACPI table that determines whether the AML
interpreter is in 32-bit or 64-bit mode. Not really a functional change,
but
-the hooks for per-table 32/64 switching have been removed from the code. A
+the hooks for per-table 32/64 switching have been removed from the code.
+A
clarification to the ACPI specification is forthcoming in ACPI 3.0B.
Fixed a possible leak of an OwnerID in the error path of
@@ -6002,7 +6381,8 @@ Fixed problem reports (Valery Podrezov) integrated:
Fixed problem reports (Fiodor Suietov) integrated:
- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
- On Address Space handler deletion, needless deactivation call (BZ 374)
-- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
+- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
+375)
- Possible memory leak, Notify sub-objects of Processor, Power,
ThermalZone
(BZ 376)
@@ -6043,13 +6423,15 @@ Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
allows the type to be customized to the host OS for improved efficiency
(since a spinlock is usually a very small object.)
-Implemented support for "ignored" bits in the ACPI registers. According to
+Implemented support for "ignored" bits in the ACPI registers. According
+to
the ACPI specification, these bits should be preserved when writing the
registers via a read/modify/write cycle. There are 3 bits preserved in
this
manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
-Implemented the initial deployment of new OSL mutex interfaces. Since some
+Implemented the initial deployment of new OSL mutex interfaces. Since
+some
host operating systems have separate mutex and semaphore objects, this
feature was requested. The base code now uses mutexes (and the new mutex
interfaces) wherever a binary semaphore was used previously. However, for
@@ -6060,14 +6442,17 @@ required
at this time. (See acpiosxf.h)
Fixed several problems with the support for the control method SyncLevel
-parameter. The SyncLevel now works according to the ACPI specification and
-in concert with the Mutex SyncLevel parameter, since the current SyncLevel
+parameter. The SyncLevel now works according to the ACPI specification
+and
+in concert with the Mutex SyncLevel parameter, since the current
+SyncLevel
is a property of the executing thread. Mutual exclusion for control
methods
is now implemented with a mutex instead of a semaphore.
Fixed three instances of the use of the C shift operator in the bitfield
-support code (exfldio.c) to avoid the use of a shift value larger than the
+support code (exfldio.c) to avoid the use of a shift value larger than
+the
target data width. The behavior of C compilers is undefined in this case
and
can cause unpredictable results, and therefore the case must be detected
@@ -6075,8 +6460,10 @@ and
avoided. (Fiodor Suietov)
Added an info message whenever an SSDT or OEM table is loaded dynamically
-via the Load() or LoadTable() ASL operators. This should improve debugging
-capability since it will show exactly what tables have been loaded (beyond
+via the Load() or LoadTable() ASL operators. This should improve
+debugging
+capability since it will show exactly what tables have been loaded
+(beyond
the tables present in the RSDT/XSDT.)
Example Code and Data Size: These are the sizes for the OS-independent
@@ -6102,7 +6489,8 @@ No changes for this release.
1) ACPI CA Core Subsystem:
-Converted the locking mutex used for the ACPI hardware to a spinlock. This
+Converted the locking mutex used for the ACPI hardware to a spinlock.
+This
change should eliminate all problems caused by attempting to acquire a
semaphore at interrupt level, and it means that all ACPICA external
interfaces that directly access the ACPI hardware can be safely called
@@ -6165,7 +6553,8 @@ namespace object evaluation - resulting in smaller code, less CPU stack
use,
and fewer interfaces. (With assistance from Mikhail Kouzmich)
-Fixed a problem with the CopyObject operator where the first parameter was
+Fixed a problem with the CopyObject operator where the first parameter
+was
not typed correctly for the parser, interpreter, compiler, and
disassembler.
Caused various errors and unexpected behavior.
@@ -6182,7 +6571,8 @@ Fixed problem reports (Valery Podrezov) integrated:
- Allow interpreter to handle nested method declarations (BZ 5361)
Fixed problem reports (Fiodor Suietov) integrated:
-- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
+- AcpiTerminate doesn't free debug memory allocation list objects (BZ
+355)
- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
356)
- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
@@ -6215,7 +6605,8 @@ a much larger code and data size.
Modified the parser to allow the names IO, DMA, and IRQ to be used as
namespace identifiers with no collision with existing resource descriptor
macro names. This provides compatibility with other ASL compilers and is
-most useful for disassembly/recompilation of existing tables without parse
+most useful for disassembly/recompilation of existing tables without
+parse
errors. (With assistance from Thomas Renninger)
Disassembler: fixed an incorrect disassembly problem with the
@@ -6230,7 +6621,8 @@ disassembly of some Alias operators.
Replaced the AcpiOsQueueForExecution interface with a new interface named
AcpiOsExecute. The major difference is that the new interface does not
have
-a Priority parameter, this appeared to be useless and has been replaced by
+a Priority parameter, this appeared to be useless and has been replaced
+by
a
Type parameter. The Type tells the host what type of execution is being
requested, such as global lock handler, notify handler, GPE handler, etc.
@@ -6243,12 +6635,14 @@ deadlock problems such as BZ #5534, and will require changes to all
existing
OS interface layers. (Alexey Starikovskiy and Bob Moore)
-Fixed a possible memory leak associated with the support for the so-called
+Fixed a possible memory leak associated with the support for the so-
+called
"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
Suietov)
Fixed a problem with the Load() operator where a table load from an
-operation region could overwrite an internal table buffer by up to 7 bytes
+operation region could overwrite an internal table buffer by up to 7
+bytes
and cause alignment faults on IPF systems. (With assistance from Luming
Yu)
@@ -6274,14 +6668,17 @@ namespace
and automatically generate ASL External() statements for symbols not
defined
within the current table being disassembled. This will simplify the
-disassembly and recompilation of interdependent tables such as SSDTs since
+disassembly and recompilation of interdependent tables such as SSDTs
+since
these statements will no longer have to be added manually.
Disassembler: Implemented experimental support to automatically detect
invocations of external control methods and generate appropriate
External()
-statements. This is problematic because the AML cannot be correctly parsed
-until the number of arguments for each control method is known. Currently,
+statements. This is problematic because the AML cannot be correctly
+parsed
+until the number of arguments for each control method is known.
+Currently,
standalone method invocations and invocations as the source operand of a
Store() statement are supported.
@@ -6297,7 +6694,8 @@ more readable and likely closer to the original ASL source.
Removed a device initialization optimization introduced in 20051216 where
the _STA method was not run unless an _INI was also present for the same
-device. This optimization could cause problems because it could allow _INI
+device. This optimization could cause problems because it could allow
+_INI
methods to be run within a not-present device subtree. (If a not-present
device had no _INI, _STA would not be run, the not-present status would
not
@@ -6324,7 +6722,8 @@ Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
interface is called during the creation of all AML operation regions, and
allows the host OS to exert control over what addresses it will allow the
AML code to access. Operation Regions whose addresses are disallowed will
-cause a runtime exception when they are actually accessed (will not affect
+cause a runtime exception when they are actually accessed (will not
+affect
or abort table loading.) See oswinxf or osunixxf for an example
implementation.
@@ -6334,11 +6733,13 @@ interface/behavior strings for the _OSI predefined control method as
appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
for an example implementation.
-Restructured and corrected various problems in the exception handling code
+Restructured and corrected various problems in the exception handling
+code
paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
(with assistance from Takayoshi Kochi.)
-Modified the Linux source converter to ignore quoted string literals while
+Modified the Linux source converter to ignore quoted string literals
+while
converting identifiers from mixed to lower case. This will correct
problems
with the disassembler and other areas where such strings must not be
@@ -6378,12 +6779,16 @@ check for the possible timeout, a warning is issued.
2) Useless operators: If an ASL operator does not specify an optional
target
operand and it also does not use the function return value from the
-operator, a warning is issued since the operator effectively does nothing.
+operator, a warning is issued since the operator effectively does
+nothing.
3) Unreferenced objects: If a namespace object is created, but never
-referenced, a warning is issued. This is a warning level 2 since there are
-cases where this is ok, such as when a secondary table is loaded that uses
-the unreferenced objects. Even so, care is taken to only flag objects that
+referenced, a warning is issued. This is a warning level 2 since there
+are
+cases where this is ok, such as when a secondary table is loaded that
+uses
+the unreferenced objects. Even so, care is taken to only flag objects
+that
don't look like they will ever be used. For example, the reserved methods
(starting with an underscore) are usually not referenced because it is
expected that the OS will invoke them.
@@ -6403,13 +6808,15 @@ are available for use by device drivers and other software.
Implemented support to allow tables that contain ACPI names with invalid
characters to be loaded. Previously, this would cause the table load to
fail, but since there are several known cases of such tables on existing
-machines, this change was made to enable ACPI support for them. Also, this
+machines, this change was made to enable ACPI support for them. Also,
+this
matches the behavior of the Microsoft ACPI implementation.
Fixed a couple regressions introduced during the memory optimization in
the
20060317 release. The namespace node definition required additional
-reorganization and an internal datatype that had been changed to 8-bit was
+reorganization and an internal datatype that had been changed to 8-bit
+was
restored to 32-bit. (Valery Podrezov)
Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
@@ -6426,7 +6833,8 @@ frequently
used control methods. (Dana Meyers)
Reorganized the ACPI table header files into two main files: one for the
-ACPI tables consumed by the ACPICA core, and another for the miscellaneous
+ACPI tables consumed by the ACPICA core, and another for the
+miscellaneous
ACPI tables that are consumed by the drivers and other software. The
various
FADT definitions were merged into one common section and three different
@@ -6475,21 +6883,25 @@ makefile for the AcpiXtract utility.
Implemented the use of a cache object for all internal namespace nodes.
Since there are about 1000 static nodes in a typical system, this will
-decrease memory use for cache implementations that minimize per-allocation
+decrease memory use for cache implementations that minimize per-
+allocation
overhead (such as a slab allocator.)
Removed the reference count mechanism for internal namespace nodes, since
it
was deemed unnecessary. This reduces the size of each namespace node by
-about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case,
+about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
+case,
and 32 bytes for the 64-bit case.
-Optimized several internal data structures to reduce object size on 64-bit
+Optimized several internal data structures to reduce object size on 64-
+bit
platforms by packing data within the 64-bit alignment. This includes the
frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
instances corresponding to the namespace objects.
-Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1"
+Added two new strings for the predefined _OSI method: "Windows 2001.1
+SP1"
and "Windows 2006".
Split the allocation tracking mechanism out to a separate file, from
@@ -6502,7 +6914,8 @@ associated
code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
macros.)
-Code and Data Size: These are the sizes for the acpica.lib produced by the
+Code and Data Size: These are the sizes for the acpica.lib produced by
+the
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
ACPI
driver or OSPM code. The debug version of the code includes the debug
@@ -6521,7 +6934,8 @@ compiler options used during generation.
2) iASL Compiler/Disassembler and Tools:
-Implemented an ANSI C version of the acpixtract utility. This version will
+Implemented an ANSI C version of the acpixtract utility. This version
+will
automatically extract the DSDT and all SSDTs from the input acpidump text
file and dump the binary output to separate files. It can also display a
summary of the input file including the headers for each table found and
@@ -6534,11 +6948,13 @@ source/tools/acpixtract)
1) ACPI CA Core Subsystem:
Tagged all external interfaces to the subsystem with the new
-ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist
+ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
+assist
kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
macro. The default definition is NULL.
-Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId.
+Added the ACPI_THREAD_ID type for the return value from
+AcpiOsGetThreadId.
This allows the host to define this as necessary to simplify kernel
integration. The default definition is ACPI_NATIVE_UINT.
@@ -6554,13 +6970,15 @@ with
large namespaces (especially 64-bit.) Increased the value from 0x400 to
0x800.
-Due to universal disagreement as to the meaning of the 'c' in the calloc()
+Due to universal disagreement as to the meaning of the 'c' in the
+calloc()
function, the ACPI_MEM_CALLOCATE macro has been renamed to
ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
ACPI_FREE.
-Code and Data Size: These are the sizes for the acpica.lib produced by the
+Code and Data Size: These are the sizes for the acpica.lib produced by
+the
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
ACPI
driver or OSPM code. The debug version of the code includes the debug
@@ -6580,17 +6998,20 @@ compiler options used during generation.
2) iASL Compiler/Disassembler:
Disassembler: implemented support for symbolic resource descriptor
-references. If a CreateXxxxField operator references a fixed offset within
+references. If a CreateXxxxField operator references a fixed offset
+within
a
resource descriptor, a name is assigned to the descriptor and the offset
is
translated to the appropriate resource tag and pathname. The addition of
this support brings the disassembled code very close to the original ASL
-source code and helps eliminate run-time errors when the disassembled code
+source code and helps eliminate run-time errors when the disassembled
+code
is modified (and recompiled) in such a way as to invalidate the original
fixed offsets.
-Implemented support for a Descriptor Name as the last parameter to the ASL
+Implemented support for a Descriptor Name as the last parameter to the
+ASL
Register() macro. This parameter was inadvertently left out of the ACPI
specification, and will be added for ACPI 3.0b.
@@ -6612,7 +7033,8 @@ Implemented a change to the IndexField support to match the behavior of
the
Microsoft AML interpreter. The value written to the Index register is now
a
-byte offset, no longer an index based upon the width of the Data register.
+byte offset, no longer an index based upon the width of the Data
+register.
This should fix IndexField problems seen on some machines where the Data
register is not exactly one byte wide. The ACPI specification will be
clarified on this point.
@@ -6626,7 +7048,8 @@ Fixed a problem where individual resource descriptors were misaligned
within
the internal buffer, causing alignment faults on IA64 platforms.
-Code and Data Size: These are the sizes for the acpica.lib produced by the
+Code and Data Size: These are the sizes for the acpica.lib produced by
+the
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
ACPI
driver or OSPM code. The debug version of the code includes the debug
@@ -6675,7 +7098,8 @@ AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
BZ
5480)
-Implemented a memory cleanup at the end of the execution of each iteration
+Implemented a memory cleanup at the end of the execution of each
+iteration
of an AML While() loop, preventing the accumulation of outstanding
objects.
(Valery Podrezov, BZ 5427)
@@ -6686,14 +7110,16 @@ Podrezov, BZ 5336)
Fixed several warnings during the 64-bit code generation.
-The AcpiSrc source code conversion tool now inserts one line of whitespace
+The AcpiSrc source code conversion tool now inserts one line of
+whitespace
after an if() statement that is followed immediately by a comment,
improving
readability of the Linux code.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -6720,7 +7146,8 @@ expression for the BankValue parameter.
1) ACPI CA Core Subsystem:
-Implemented support in the Resource Manager to allow unresolved namestring
+Implemented support in the Resource Manager to allow unresolved
+namestring
references within resource package objects for the _PRT method. This
support
is in addition to the previously implemented unresolved reference support
@@ -6736,7 +7163,8 @@ ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
macros remain defined to allow ACPI drivers time to migrate to the new
macros.
-Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the
+Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
+the
Acquire/Release Lock OSL interfaces.
Fixed a problem where Alias ASL operators are sometimes not correctly
@@ -6755,7 +7183,8 @@ interface. (With assistance from Thomas Renninger)
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -6786,15 +7215,18 @@ Added 2006 copyright to all module headers and signons. This affects
virtually every file in the ACPICA core subsystem, iASL compiler, and the
utilities.
-Enhanced the ACPICA error reporting in order to simplify user migration to
+Enhanced the ACPICA error reporting in order to simplify user migration
+to
the non-debug version of ACPICA. Replaced all instances of the
-ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug
+ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
+debug
levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
respectively. This preserves all error and warning messages in the non-
debug
version of the ACPICA code (this has been referred to as the "debug lite"
option.) Over 200 cases were converted to create a total of over 380
-error/warning messages across the ACPICA code. This increases the code and
+error/warning messages across the ACPICA code. This increases the code
+and
data size of the default non-debug version of the code somewhat (about
13K),
but all error/warning reporting may be disabled if desired (and code
@@ -6808,7 +7240,8 @@ not properly deleted for every successful invocation of the command.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -6838,7 +7271,8 @@ www.acpi.info)
Implemented optional support to allow unresolved names within ASL Package
objects. A null object is inserted in the package when a named reference
cannot be located in the current namespace. Enabled via the interpreter
-slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines
+slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
+machines
that contain such code.
Implemented an optimization to the initialization sequence that can
@@ -6854,7 +7288,8 @@ it is a waste of time to run the _STA method if the _INI does not exist.
Implemented use of the C99 uintptr_t for the pointer casting macros if it
is
-available in the current compiler. Otherwise, the default (void *) cast is
+available in the current compiler. Otherwise, the default (void *) cast
+is
used as before.
Fixed some possible memory leaks found within the execution path of the
@@ -6868,7 +7303,8 @@ Moved resource descriptor string constants that are used by both the AML
disassembler and AML debugger to the common utilities directory so that
these components are independent.
-Implemented support in the AcpiExec utility (-e switch) to globally ignore
+Implemented support in the AcpiExec utility (-e switch) to globally
+ignore
exceptions during control method execution (method is not aborted.)
Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
@@ -6876,7 +7312,8 @@ generation.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -6905,12 +7342,15 @@ method call was made from within a Return statement.
Modified the parsing of control methods to no longer create namespace
objects during the first pass of the parse. Objects are now created only
-during the execute phase, at the moment the namespace creation operator is
-encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This
+during the execute phase, at the moment the namespace creation operator
+is
+encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
+This
should eliminate ALREADY_EXISTS exceptions seen on some machines where
reentrant control methods are protected by an AML mutex. The mutex will
now
-correctly block multiple threads from attempting to create the same object
+correctly block multiple threads from attempting to create the same
+object
more than once.
Increased the number of available Owner Ids for namespace object tracking
@@ -6928,7 +7368,8 @@ namespace object.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -6948,7 +7389,8 @@ of the compiler and the compiler options used during generation.
Fixed a parse error during compilation of certain Switch/Case constructs.
To
-simplify the parse, the grammar now allows for multiple Default statements
+simplify the parse, the grammar now allows for multiple Default
+statements
and this error is now detected and flagged during the analysis phase.
Disassembler: The disassembly now includes the contents of the original
@@ -6983,14 +7425,16 @@ buffer overflow could occur for small resource templates.
Implemented a new external interface, AcpiGetVendorResource. This
interface
-will find and return a vendor-defined resource descriptor within a _CRS or
+will find and return a vendor-defined resource descriptor within a _CRS
+or
_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
Helgaas.
Removed the length limit (200) on string objects as per the upcoming ACPI
3.0A specification. This affects the following areas of the interpreter:
1)
-any implicit conversion of a Buffer to a String, 2) a String object result
+any implicit conversion of a Buffer to a String, 2) a String object
+result
of the ASL Concatentate operator, 3) the String object result of the ASL
ToString operator.
@@ -7005,7 +7449,8 @@ the recently added file named "utresrc.c".
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -7043,16 +7488,19 @@ tree. The transformed tree is dumped also.
1) ACPI CA Core Subsystem:
-Modified the subsystem initialization sequence to improve GPE support. The
+Modified the subsystem initialization sequence to improve GPE support.
+The
GPE initialization has been split into two parts in order to defer
execution
-of the _PRW methods (Power Resources for Wake) until after the hardware is
+of the _PRW methods (Power Resources for Wake) until after the hardware
+is
fully initialized and the SCI handler is installed. This allows the _PRW
methods to access fields protected by the Global Lock. This will fix
systems
where a NO_GLOBAL_LOCK exception has been seen during initialization.
-Converted the ACPI internal object disassemble and display code within the
+Converted the ACPI internal object disassemble and display code within
+the
AML debugger to fully table-driven operation, reducing code size and
increasing maintainability.
@@ -7066,12 +7514,14 @@ These local types include RegionFields, BankFields, IndexFields, Alias,
and
reference objects.
-Moved common AML resource handling code into a new file, "utresrc.c". This
+Moved common AML resource handling code into a new file, "utresrc.c".
+This
code is shared by both the Resource Manager and the AML Debugger.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -7100,7 +7550,8 @@ no
longer optional, detecting invalid characters within a source file
immediately rather than during the parse phase or later.
-Enhanced the ASL grammar definition to force early reductions on all list-
+Enhanced the ASL grammar definition to force early reductions on all
+list-
style grammar elements so that the overall parse stack usage is greatly
reduced. This should improve performance and reduce the possibility of
parse
@@ -7131,8 +7582,10 @@ resource descriptors are fully table-driven, reducing code and data size
and
improving maintainability.
-The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word
-on 64-bit processors instead of a fixed 32-bit word. (With assistance from
+The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
+word
+on 64-bit processors instead of a fixed 32-bit word. (With assistance
+from
Alexey Starikovskiy)
Implemented support within the resource conversion code for the Type-
@@ -7146,7 +7599,8 @@ TTP flags into two separate fields.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -7165,7 +7619,8 @@ of the compiler and the compiler options used during generation.
2) iASL Compiler/Disassembler:
-Relaxed a compiler restriction that disallowed a ResourceIndex byte if the
+Relaxed a compiler restriction that disallowed a ResourceIndex byte if
+the
corresponding ResourceSource string was not also present in a resource
descriptor declaration. This restriction caused problems with existing
AML/ASL code that includes the Index byte without the string. When such
@@ -7173,7 +7628,8 @@ AML
was disassembled, it could not be compiled without modification. Further,
the modified code created a resource template with a different size than
the
-original, breaking code that used fixed offsets into the resource template
+original, breaking code that used fixed offsets into the resource
+template
buffer.
Removed a recent feature of the disassembler to ignore a lone
@@ -7210,7 +7666,8 @@ single location for clarity and ease of maintenance. One new file was
created, named "rsinfo.c".
The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
-guarantee that the argument is not evaluated twice, making them less prone
+guarantee that the argument is not evaluated twice, making them less
+prone
to macro side-effects. However, since there exists the possibility of
additional stack use if a particular compiler cannot optimize them (such
as
@@ -7221,7 +7678,8 @@ mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
to
eliminate these. (From Randy Dunlap)
-Implemented a new mechanism to enable debug tracing for individual control
+Implemented a new mechanism to enable debug tracing for individual
+control
methods. A new external interface, AcpiDebugTrace, is provided to enable
this mechanism. The intent is to allow the host OS to easily enable and
disable tracing for problematic control methods. This interface can be
@@ -7234,7 +7692,8 @@ the behavior of AcpiUtAllocate.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -7279,7 +7738,8 @@ optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
Code and Data Size: The current and previous library sizes for the core
subsystem are shown below. These are the code and data sizes for the
-acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
+acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
+These
values do not include any ACPI driver or OSPM code. The debug version of
the
code includes the debug output trace mechanism and has a much larger code
@@ -7297,7 +7757,8 @@ of the compiler and the compiler options used during generation.
2) iASL Compiler/Disassembler:
-Updated the disassembler to automatically insert an EndDependentFn() macro
+Updated the disassembler to automatically insert an EndDependentFn()
+macro
into the ASL stream if this macro is missing in the original AML code,
simplifying compilation of the resulting ASL module.
@@ -7330,7 +7791,8 @@ flags
for a 64-bit address descriptor were handled incorrectly in the type-
specific flag byte.
-Consolidated duplicate code within the address descriptor resource manager
+Consolidated duplicate code within the address descriptor resource
+manager
code, reducing overall subsystem code size.
Fixed a fault when using the AML debugger "disassemble" command to
@@ -7344,7 +7806,8 @@ are shown below. These are the code and data sizes for the acpica.lib
produced by the Microsoft Visual C++ 6.0 compiler. These values do not
include any ACPI driver or OSPM code. The debug version of the code
includes
-the debug output trace mechanism and has a much larger code and data size.
+the debug output trace mechanism and has a much larger code and data
+size.
Note that these values will vary depending on the efficiency of the
compiler
and the compiler options used during generation.
@@ -7364,7 +7827,8 @@ and
dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
Interrupt().
-Implemented error checking for the Irq() and IrqNoFlags() macros to detect
+Implemented error checking for the Irq() and IrqNoFlags() macros to
+detect
too many values in the interrupt list (16 max) and invalid values in the
list (range 0 - 15)
@@ -7393,7 +7857,8 @@ specification, but discovered in the field nonetheless.
Added the changes.txt logfile to each of the zipped release packages.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7416,7 +7881,8 @@ Fixed a problem where incorrect AML code could be generated for Package
objects if optimization is disabled (via the -oa switch).
Fixed a problem with where incorrect AML code is generated for variable-
-length packages when the package length is not specified and the number of
+length packages when the package length is not specified and the number
+of
initializer values is greater than 255.
@@ -7425,7 +7891,8 @@ initializer values is greater than 255.
1) ACPI CA Core Subsystem:
-Implemented support to ignore an attempt to install/load a particular ACPI
+Implemented support to ignore an attempt to install/load a particular
+ACPI
table more than once. Apparently there exists BIOS code that repeatedly
attempts to load the same SSDT upon certain events. With assistance from
Venkatesh Pallipadi.
@@ -7437,7 +7904,8 @@ resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
some
machines. With assistance from Alexey Starikovskiy.
-Support for "module level code" has been disabled in this version due to a
+Support for "module level code" has been disabled in this version due to
+a
number of issues that have appeared on various machines. The support can
be
enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
@@ -7446,7 +7914,8 @@ by
default again.
Modified the internal functions for debug print support to define the
-FunctionName parameter as a (const char *) for compatibility with compiler
+FunctionName parameter as a (const char *) for compatibility with
+compiler
built-in macros such as __FUNCTION__, etc.
Linted the entire ACPICA source tree for both 32-bit and 64-bit.
@@ -7456,7 +7925,8 @@ Debugger
commands Object and Methods.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7510,8 +7980,10 @@ name.
Redesigned and reimplemented the "Owner ID" mechanism used to track
namespace objects created/deleted by ACPI tables and control method
-execution. A bitmap is now used to allocate and free the IDs, thus solving
-the wraparound problem present in the previous implementation. The size of
+execution. A bitmap is now used to allocate and free the IDs, thus
+solving
+the wraparound problem present in the previous implementation. The size
+of
the namespace node descriptor was reduced by 2 bytes as a result (Alexey
Starikovskiy).
@@ -7533,7 +8005,8 @@ Fixed several possible memory leaks and the inverse - premature object
deletion (Alexey Starikovskiy).
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7597,7 +8070,8 @@ been updated.
interpreter/parser/psloop.c /* Main AML parse loop */
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7629,8 +8103,10 @@ original behavior has been restored (a Match() operator is emitted.)
Moved the object cache operations into the OS interface layer (OSL) to
allow
the host OS to handle these operations if desired (for example, the Linux
-OSL will invoke the slab allocator). This support is optional; the compile
-time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache
+OSL will invoke the slab allocator). This support is optional; the
+compile
+time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
+cache
code in the ACPI CA core. The new OSL interfaces are shown below. See
utalloc.c for an example implementation, and acpiosxf.h for the exact
interface definitions. With assistance from Alexey Starikovskiy.
@@ -7654,7 +8130,8 @@ present if the revision of the RSDP was 2 or greater. According to the
ACPI
specification, the XSDT is optional in all cases, and the table manager
therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
-Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain
+Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
+contain
only the RSDT.
Fixed an interpreter problem with the Mid() operator in the case of an
@@ -7664,7 +8141,8 @@ correctly
returns a valid, null terminated string object instead of a string object
with a null pointer.
-Fixed a problem with the control method argument handling to allow a store
+Fixed a problem with the control method argument handling to allow a
+store
to an Arg object that already contains an object of type Device. The
Device
object is now correctly overwritten. Previously, an error was returned.
@@ -7676,13 +8154,15 @@ found object pathnames. The output format is the same as the dump
namespace
command.
-Enhanced the debugger Set command. It now has the ability to set the value
+Enhanced the debugger Set command. It now has the ability to set the
+value
of any Named integer object in the namespace (Previously, only method
locals
and args could be set.)
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7701,7 +8181,8 @@ the compiler options used during generation.
2) iASL Compiler/Disassembler:
-Fixed a regression in the disassembler where if/else/while constructs were
+Fixed a regression in the disassembler where if/else/while constructs
+were
output incorrectly. This problem was introduced in the previous release
(20050526). This problem also affected the single-step disassembly in the
debugger.
@@ -7710,7 +8191,8 @@ Fixed a problem where compiling the reserved _OSI method would randomly
(but
rarely) produce compile errors.
-Enhanced the disassembler to emit compilable code in the face of incorrect
+Enhanced the disassembler to emit compilable code in the face of
+incorrect
AML resource descriptors. If the optional ResourceSourceIndex is present,
but the ResourceSource is not, do not emit the ResourceSourceIndex in the
disassembly. Otherwise, the resulting code cannot be compiled without
@@ -7722,7 +8204,8 @@ errors.
1) ACPI CA Core Subsystem:
Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
-the module level (not within a control method.) These opcodes are executed
+the module level (not within a control method.) These opcodes are
+executed
exactly once at the time the table is loaded. This type of code was legal
up
until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
@@ -7734,7 +8217,8 @@ that was previously generated upon detection of such code.
Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
inadvertently be generated during the lookup of namespace objects in the
-second pass parse of ACPI tables and control methods. It appears that this
+second pass parse of ACPI tables and control methods. It appears that
+this
problem could occur during the resolution of forward references to
namespace
objects.
@@ -7749,11 +8233,13 @@ Implemented a handful of miscellaneous fixes for possible memory leaks on
error conditions and error handling control paths. These fixes were
suggested by FreeBSD and the Coverity Prevent source code analysis tool.
-Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c)
+Added a check for a null RSDT pointer in AcpiGetFirmwareTable
+(tbxfroot.c)
to prevent a fault in this error case.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7774,9 +8260,11 @@ the compiler options used during generation.
Implemented support to allow Type 1 and Type 2 ASL operators to appear at
the module level (not within a control method.) These operators will be
-executed once at the time the table is loaded. This type of code was legal
+executed once at the time the table is loaded. This type of code was
+legal
up until the release of ACPI 2.0B (2002) and is now supported by the iASL
-compiler in order to provide backwards compatibility with earlier BIOS ASL
+compiler in order to provide backwards compatibility with earlier BIOS
+ASL
code.
The ACPI integer width (specified via the table revision ID or the -r
@@ -7821,21 +8309,25 @@ to a newly allocated buffer, regardless of whether the source object is
static or not.
Fixed a problem with the FromBCD operator where an implicit result
-conversion was improperly performed while storing the result to the target
+conversion was improperly performed while storing the result to the
+target
operand. Since this is an "explicit conversion" operator, the implicit
conversion should never be performed on the output.
Fixed a problem with the CopyObject operator where a copy to an existing
named object did not always completely overwrite the existing object
stored
-at name. Specifically, a buffer-to-buffer copy did not delete the existing
+at name. Specifically, a buffer-to-buffer copy did not delete the
+existing
buffer.
-Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and
+Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
+and
structs for consistency.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7893,7 +8385,8 @@ the static attribute have been moved from the headers to the owning C
file.
Implemented an extract option (-e) for the AcpiBin utility (AML binary
-utility). This option allows the utility to extract individual ACPI tables
+utility). This option allows the utility to extract individual ACPI
+tables
from the output of AcpiDmp. It provides the same functionality of the
acpixtract.pl perl script without the worry of setting the correct perl
options. AcpiBin runs on Windows and has not yet been generated/validated
@@ -7901,11 +8394,13 @@ in
the Linux/Unix environment (but should be soon).
Updated and fixed the table dump option for AcpiBin (-d). This option
-converts a single ACPI table to a hex/ascii file, similar to the output of
+converts a single ACPI table to a hex/ascii file, similar to the output
+of
AcpiDmp.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -7970,7 +8465,8 @@ Two new header files have been added, acopcode.h and acnames.h.
Removed several obsolete functions that were no longer used.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8007,23 +8503,28 @@ occurred during the compilation.
The string-to-buffer implicit conversion code has been modified again
after
-a change to the ACPI specification. In order to match the behavior of the
+a change to the ACPI specification. In order to match the behavior of
+the
other major ACPI implementation, the target buffer is no longer truncated
if
the source string is smaller than an existing target buffer. This change
requires an update to the ACPI spec, and should eliminate the recent
AE_AML_BUFFER_LIMIT issues.
-The "implicit return" support was rewritten to a new algorithm that solves
+The "implicit return" support was rewritten to a new algorithm that
+solves
the general case. Rather than attempt to determine when a method is about
to
-exit, the result of every ASL operator is saved momentarily until the very
+exit, the result of every ASL operator is saved momentarily until the
+very
next ASL operator is executed. Therefore, no matter how the method exits,
there will always be a saved implicit return value. This feature is only
-enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate
+enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
+eliminate
AE_AML_NO_RETURN_VALUE errors when enabled.
-Implemented implicit conversion support for the predicate (operand) of the
+Implemented implicit conversion support for the predicate (operand) of
+the
If, Else, and While operators. String and Buffer arguments are
automatically
converted to Integers.
@@ -8039,7 +8540,8 @@ first
non-hex character terminates the conversion and this is the code that was
changed.
-Fixed a problem where the ObjectType operator would fail (fault) when used
+Fixed a problem where the ObjectType operator would fail (fault) when
+used
on an Index of a Package which pointed to a null package element. The
operator now properly returns zero (Uninitialized) in this case.
@@ -8048,16 +8550,19 @@ properly popping the result stack during execution. There was no memory
leak
after execution, however. (Code provided by Valery Podrezov.)
-Fixed a problem where references to control methods within Package objects
+Fixed a problem where references to control methods within Package
+objects
caused the method to be invoked, instead of producing a reference object
pointing to the method.
-Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to
+Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
+to
improve performance and reduce code size. (Code provided by Alexey
Starikovskiy.)
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8111,7 +8616,8 @@ operator. The valid range (max 255) is now only checked if the operand is
of
type Integer. All other operand types cannot be statically checked.
-Fixed a problem where control method references within the RefOf, DeRefOf,
+Fixed a problem where control method references within the RefOf,
+DeRefOf,
and ObjectType operators were not treated properly. They are now treated
as
actual references, not method invocations.
@@ -8136,7 +8642,8 @@ Disassembler - Comments in output now use "//" instead of "/*"
1) ACPI CA Core Subsystem:
Fixed a problem where the result of an Index() operator (an object
-reference) must increment the reference count on the target object for the
+reference) must increment the reference count on the target object for
+the
life of the object reference.
Implemented AML Interpreter and Debugger support for the new ACPI 3.0
@@ -8165,7 +8672,8 @@ flag
at runtime.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8184,7 +8692,8 @@ the compiler options used during generation.
2) iASL Compiler/Disassembler:
-Fixed a problem with the internal 64-bit String-to-integer conversion with
+Fixed a problem with the internal 64-bit String-to-integer conversion
+with
strings less than two characters long.
Fixed a problem with constant folding where the result of the Index()
@@ -8214,7 +8723,8 @@ an
errata change to the ACPI specification as this support was intended for
ACPI 3.0, but was inadvertently omitted.
-Fixed a problem with the internal implicit "to buffer" conversion. Strings
+Fixed a problem with the internal implicit "to buffer" conversion.
+Strings
that are converted to buffers will cause buffer truncation if the string
is
smaller than the target buffer. Integers that are converted to buffers
@@ -8247,7 +8757,8 @@ Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8285,7 +8796,8 @@ Acquire() operation on _GL.
The local object cache is now optional, and is disabled by default. Both
AcpiExec and the iASL compiler enable the cache because they run in user
-mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE
+mode and this enhances their performance. #define
+ACPI_ENABLE_OBJECT_CACHE
to enable the local cache.
Fixed an issue in the internal function AcpiUtEvaluateObject concerning
@@ -8308,8 +8820,10 @@ and explicit conversion via the ToInteger() operator.
The internal debug code in AcpiUtAcquireMutex has been commented out. It
is
-not needed for normal operation and should increase the performance of the
-entire subsystem. The code remains in case it is needed for debug purposes
+not needed for normal operation and should increase the performance of
+the
+entire subsystem. The code remains in case it is needed for debug
+purposes
again.
The AcpiExec source and makefile are included in the Unix/Linux package
@@ -8317,7 +8831,8 @@ for
the first time.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8338,7 +8853,8 @@ the compiler options used during generation.
Switch/Case support: A warning is now issued if the type of the Switch
value
cannot be determined at compile time. For example, Switch(Arg0) will
-generate the warning, and the type is assumed to be an integer. As per the
+generate the warning, and the type is assumed to be an integer. As per
+the
ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
the
warning.
@@ -8356,7 +8872,8 @@ converted to the type of the switch value, not the other way around.
Switch/Case support: Temporary variables are now emitted immediately
within
-the control method, not at the global level. This means that there are now
+the control method, not at the global level. This means that there are
+now
36 temps available per-method, not 36 temps per-module as was the case
with
the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
@@ -8370,12 +8887,14 @@ the core subsystem, iASL compiler, and the utilities.
1) ACPI CA Core Subsystem:
Fixed an issue with the String-to-Buffer conversion code where the string
-null terminator was not included in the buffer after conversion, but there
+null terminator was not included in the buffer after conversion, but
+there
is existing ASL that assumes the string null terminator is included. This
is
the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
introduced in the previous version when the code was updated to correctly
-set the converted buffer size as per the ACPI specification. The ACPI spec
+set the converted buffer size as per the ACPI specification. The ACPI
+spec
is ambiguous and will be updated to specify that the null terminator must
be
included in the converted buffer. This also affects the ToBuffer() ASL
@@ -8420,7 +8939,8 @@ of ACPI, now 3.
Implemented batch mode option for the AcpiExec utility (-b).
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8444,7 +8964,8 @@ ACPI CA core subsystem.
1) ACPI CA Core Subsystem:
-Fixed a problem in the ToDecimalString operator where the resulting string
+Fixed a problem in the ToDecimalString operator where the resulting
+string
length was incorrectly calculated. The length is now calculated exactly,
eliminating incorrect AE_STRING_LIMIT exceptions.
@@ -8452,12 +8973,14 @@ Fixed a problem in the ToHexString operator to allow a maximum 200
character
string to be produced.
-Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy
+Fixed a problem in the internal string-to-buffer and buffer-to-buffer
+copy
routine where the length of the resulting buffer was not truncated to the
new size (if the target buffer already existed).
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8494,7 +9017,8 @@ incorrect AML code was generated if the offset within the resource buffer
was 0 or 1. The optimizer shortened the AML code to a single byte opcode
but did not update the surrounding package lengths.
-Changes to the Dma macro: All channels within the channel list must be in
+Changes to the Dma macro: All channels within the channel list must be
+in
the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
optional (default is BusMaster).
@@ -8531,7 +9055,8 @@ Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
semaphores to be allocated.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8590,7 +9115,8 @@ ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
RSDP signature is found with a valid checksum.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8626,8 +9152,10 @@ Integer
object with a value of zero. This support is enabled by setting the
AcpiGbl_EnableInterpreterSlack flag to TRUE.
-Implemented support for Integer objects for the SizeOf operator. Either 4
-or 8 is returned, depending on the current integer size (32-bit or 64-bit,
+Implemented support for Integer objects for the SizeOf operator. Either
+4
+or 8 is returned, depending on the current integer size (32-bit or 64-
+bit,
depending on the parent table revision).
Fixed a problem in the implementation of the SizeOf and ObjectType
@@ -8638,7 +9166,8 @@ return values for some objects.
Fixed some possible memory leaks during exceptional conditions.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8703,7 +9232,8 @@ BCD number were truncated during conversion.
Fixed a problem in the ToDecimal operator where the length of the
resulting
-string could be set incorrectly too long if the input operand was a Buffer
+string could be set incorrectly too long if the input operand was a
+Buffer
object.
Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
@@ -8715,7 +9245,8 @@ Added a check for string overflow (>200 characters as per the ACPI
specification) during the Concatenate operator with two string operands.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8738,10 +9269,12 @@ the compiler options used during generation.
Allow the use of the ObjectType operator on uninitialized Locals and Args
(returns 0 as per the ACPI specification).
-Fixed a problem where the compiler would fault if there was a syntax error
+Fixed a problem where the compiler would fault if there was a syntax
+error
in the FieldName of all of the various CreateXXXField operators.
-Disallow the use of lower case letters within the EISAID macro, as per the
+Disallow the use of lower case letters within the EISAID macro, as per
+the
ACPI specification. All EISAID strings must be of the form "UUUNNNN"
Where
U is an uppercase letter and N is a hex digit.
@@ -8758,7 +9291,8 @@ implements a 64-bit timer with 100 nanosecond granularity.
Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
implement the ACPI 3.0 Timer operator. This allows the host OS to
implement
-the timer with the best clock available. Also, it keeps the core subsystem
+the timer with the best clock available. Also, it keeps the core
+subsystem
out of the clock handling business, since the host OS (usually) performs
this function.
@@ -8770,12 +9304,14 @@ are now used to extract the address to a local variable before use.
Fixed a problem where the ToInteger operator assumed all input strings
were
-hexadecimal. The operator now handles both decimal strings and hex strings
+hexadecimal. The operator now handles both decimal strings and hex
+strings
(prefixed with "0x").
Fixed a problem where the string length in the string object created as a
result of the internal ConvertToString procedure could be incorrect. This
-potentially affected all implicit conversions and also the ToDecimalString
+potentially affected all implicit conversions and also the
+ToDecimalString
and ToHexString operators.
Fixed two problems in the ToString operator. If the length parameter was
@@ -8791,7 +9327,8 @@ code
size and complexity.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8838,7 +9375,8 @@ of (!Arg) which was usually 1. This change affects iASL constant folding
for
this operator also.
-Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not
+Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
+not
initialized properly -- Now zero the entire buffer in this case where the
buffer already exists.
@@ -8857,7 +9395,8 @@ Added support for the DSDT in AcpiTbFindTable. This allows the
DataTableRegion() operator to access the local copy of the DSDT.
Code and Data Size: Current and previous core subsystem library sizes are
-shown below. These are the code and data sizes for the acpica.lib produced
+shown below. These are the code and data sizes for the acpica.lib
+produced
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
any ACPI driver or OSPM code. The debug version of the code includes the
debug output trace mechanism and has a much larger code and data size.
@@ -8877,11 +9416,13 @@ the compiler options used during generation.
2) iASL Compiler/Disassembler:
Fixed a problem with constant folding and the LNot operator. LNot was
-returning 1 in the TRUE case, not Ones as per the ACPI specification. This
+returning 1 in the TRUE case, not Ones as per the ACPI specification.
+This
could result in the generation of an incorrect folded/reduced constant.
End-Of-File is now allowed within a "//"-style comment. A parse error no
-longer occurs if such a comment is at the very end of the input ASL source
+longer occurs if such a comment is at the very end of the input ASL
+source
file.
Implemented the "-r" option to override the Revision in the table header.
@@ -8898,16 +9439,19 @@ either
1) ACPI CA Core Subsystem:
- Implemented support for implicit object conversion in the non-numeric
-logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and
+logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
+and
LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
-the second operand is implicitly converted on the fly to match the type of
+the second operand is implicitly converted on the fly to match the type
+of
the first operand. For example:
LEqual (Source1, Source2)
Source1 and Source2 must each evaluate to an integer, a string, or a
buffer.
-The data type of Source1 dictates the required type of Source2. Source2 is
+The data type of Source1 dictates the required type of Source2. Source2
+is
implicitly converted if necessary to match the type of Source1.
- Updated and corrected the behavior of the string conversion support.
@@ -8923,12 +9467,14 @@ ToString - explicit byte-wise conversion of buffer to string. Byte-by-
byte
copy with no transform except NULL terminated. Any other implicit buffer-
to-
-string conversion - byte-wise conversion of buffer to string of hex values
+string conversion - byte-wise conversion of buffer to string of hex
+values
(0-FF) separated by spaces.
- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
-- Fixed a problem in AcpiNsGetPathnameLength where the returned length was
+- Fixed a problem in AcpiNsGetPathnameLength where the returned length
+was
one byte too short in the case of a node in the root scope. This could
cause a fault during debug output.
@@ -8963,10 +9509,12 @@ the compiler options used during generation.
1) ACPI CA Core Subsystem:
Designed and implemented support within the AML interpreter for the so-
-called "implicit return". This support returns the result of the last ASL
+called "implicit return". This support returns the result of the last
+ASL
operation within a control method, in the absence of an explicit Return()
operator. A few machines depend on this behavior, even though it is not
-explicitly supported by the ASL language. It is optional support that can
+explicitly supported by the ASL language. It is optional support that
+can
be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
Removed support for the PCI_Config address space from the internal low
@@ -9017,7 +9565,8 @@ increase flexibility of the interfaces.
Implemented a "lexicographical compare" for String and Buffer objects
within
-the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual --
+the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
+-
as per further clarification to the ACPI specification. Behavior is
similar
to C library "strcmp".
@@ -9076,7 +9625,8 @@ ACPI
1.0 interpreters.
-Fixed a problem where complex terms were not supported properly within the
+Fixed a problem where complex terms were not supported properly within
+the
Switch() operator.
Eliminated extraneous warning for compiler-emitted reserved names of the
@@ -9161,7 +9711,8 @@ the
EBDA by simply scanning from memory location 0 to 0x400. The correct
method
is to first obtain the EBDA pointer from within the BIOS data area, then
-scan 1K of memory starting at the EBDA pointer. There appear to be few if
+scan 1K of memory starting at the EBDA pointer. There appear to be few
+if
any machines that place the RSDP in the EBDA, however.
Integrated a fix for a possible fault during evaluation of BufferField
@@ -9196,7 +9747,8 @@ the compiler options used during generation.
2) iASL Compiler/Disassembler:
-Fixed a generation warning produced by some overly-verbose compilers for a
+Fixed a generation warning produced by some overly-verbose compilers for
+a
64-bit constant.
----------------------------------------
@@ -9216,7 +9768,8 @@ the new AcpiEv* calls as appropriate.
ACPI_OS_NAME was removed from the OS-specific headers. The default name
is
-now "Microsoft Windows NT" for maximum compatibility. However this can be
+now "Microsoft Windows NT" for maximum compatibility. However this can
+be
changed by modifying the acconfig.h file.
Allow a single invocation of AcpiInstallNotifyHandler for a handler that
@@ -9263,7 +9816,8 @@ button,
or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
not
referenced by any _PRW methods are marked for "runtime" and hardware
-enabled. Any GPE that is referenced by a _PRW method is marked for "wake"
+enabled. Any GPE that is referenced by a _PRW method is marked for
+"wake"
(and disabled at runtime). However, at sleep time, only those GPEs that
have been specifically enabled for wake via the AcpiEnableGpe interface
will
@@ -9271,13 +9825,15 @@ actually be hardware enabled.
A new external interface has been added, AcpiSetGpeType(), that is meant
to
-be used by device drivers to force a GPE to a particular type. It will be
+be used by device drivers to force a GPE to a particular type. It will
+be
especially useful for the drivers for the button devices mentioned above.
Completed restructuring of the ACPI CA initialization sequence so that
default operation region handlers are installed before GPEs are
initialized
-and the _PRW methods are executed. This will prevent errors when the _PRW
+and the _PRW methods are executed. This will prevent errors when the
+_PRW
methods attempt to access system memory or I/O space.
GPE enable/disable no longer reads the GPE enable register. We now keep
@@ -9295,7 +9851,8 @@ Added new strings for the _OSI method, of the form "Windows 2001 SPx"
where
x = 0,1,2,3,4.
-Fixed a problem where the physical address was incorrectly calculated when
+Fixed a problem where the physical address was incorrectly calculated
+when
the Load() operator was used to directly load from an Operation Region
(vs.
loading from a Field object.) Also added check for minimum table length
@@ -9324,13 +9881,15 @@ Do not exit/reenter when dispatching to a default handler (e.g., default
system memory or I/O handlers)
-Notes for updating drivers for the new GPE support. The following changes
+Notes for updating drivers for the new GPE support. The following
+changes
must be made to ACPI-related device drivers that are attached to one or
more
GPEs: (This information will be added to the ACPI CA Programmer
Reference.)
-1) AcpiInstallGpeHandler no longer automatically enables the GPE, you must
+1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
+must
explicitly call AcpiEnableGpe.
2) There is a new interface called AcpiSetGpeType. This should be called
before enabling the GPE. Also, this interface will automatically disable
@@ -9353,8 +9912,10 @@ If _PRW exists: /* This is a control-method button */
For all other devices that have _PRWs, we automatically set the GPE type
to
-ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. This
-must be done on a selective basis, usually requiring some kind of user app
+ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
+This
+must be done on a selective basis, usually requiring some kind of user
+app
to allow the user to pick the wake devices.
@@ -9422,7 +9983,8 @@ the compiler options used during generation.
2) iASL Compiler/Disassembler:
-iASL now fully disassembles SSDTs. However, External() statements are not
+iASL now fully disassembles SSDTs. However, External() statements are
+not
generated automatically for unresolved symbols at this time. This is a
planned feature for future implementation.
@@ -9433,7 +9995,8 @@ incorrectly nested internal namespace to be constructed.
Any warnings or errors that are emitted during disassembly are now
commented
-out automatically so that the resulting file can be recompiled without any
+out automatically so that the resulting file can be recompiled without
+any
hand editing.
----------------------------------------
@@ -9459,14 +10022,16 @@ properly. The proper scope within the namespace was not initialized
(transferred to the target of the aliased method) before executing the
target method.
-Fixed a potential race condition on internal object deletion on the return
+Fixed a potential race condition on internal object deletion on the
+return
object in AcpiEvaluateObject.
Integrated a fix for resource descriptors where both _MEM and _MTP were
being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
wide, 0x0F instead of 0x03.)
-Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing
+Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
+preventing
a
fault in some cases.
@@ -9509,8 +10074,10 @@ if the method attempts to create namespace objects. (The root of the
AE_ALREADY_EXISTS problem.)
Implemented support for the predefined _OSI "internal" control method.
-Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and
-"Windows 2001.1", and can be easily upgraded for new strings as necessary.
+Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
+and
+"Windows 2001.1", and can be easily upgraded for new strings as
+necessary.
This feature will allow "other" operating systems to execute the fully
tested, "Windows" code path through the ASL code
@@ -9532,7 +10099,8 @@ defined on the machine.
Implemented two runtime options: One to force all control method
execution
-to "Serialized" to mimic Windows behavior, another to disable _OSI support
+to "Serialized" to mimic Windows behavior, another to disable _OSI
+support
if it causes problems on a given machine.
Code and Data Size: Current and previous core subsystem library sizes are
@@ -9609,7 +10177,8 @@ obscure objects (e.g., Reference objects.)
Improved the output of the Debug object to display buffer, package, and
index objects.
-Fixed a problem where constructs of the form "RefOf (ArgX)" did not return
+Fixed a problem where constructs of the form "RefOf (ArgX)" did not
+return
the expected result.
Added permanent ACPI_REPORT_ERROR macros for all instances of the
@@ -9626,7 +10195,8 @@ functional changes, however.
1) ACPI CA Core Subsystem:
-Improved error messages when there is a problem finding one or more of the
+Improved error messages when there is a problem finding one or more of
+the
required base ACPI tables
Reintroduced the definition of APIC_HEADER in actbl.h
diff --git a/generate/unix/Makefile.common b/generate/unix/Makefile.common
index 21f8786cbb91..fe5e46bd335a 100644
--- a/generate/unix/Makefile.common
+++ b/generate/unix/Makefile.common
@@ -6,7 +6,11 @@
# Get the OS machine architecture. Anything with a "64" in the returned
# string will be treated as a 64-bit OS. Otherwise, the default is 32-bit.
#
+ifeq ($(HOST), _FreeBSD)
+HARDWARE_NAME := $(shell uname -p)
+else
HARDWARE_NAME := $(shell uname -m)
+endif
#
# Main rule will only generate versions that are appropriate for the running
diff --git a/generate/unix/Makefile.config b/generate/unix/Makefile.config
index 3e4ecd2b9de0..3c13f36a5f50 100644
--- a/generate/unix/Makefile.config
+++ b/generate/unix/Makefile.config
@@ -47,14 +47,18 @@ LINKPROG = $(CC) $(OBJECTS) -o $(PROG) $(LDFLAGS)
PREFIX ?= /usr
INSTALLDIR = $(PREFIX)/bin
-ifneq ($(HOST), _APPLE)
- INSTALLPROG = install -D ../$(BINDIR)/$(PROG) $(DESTDIR)$(INSTALLDIR)/$(PROG)
+ifeq ($(HOST), _APPLE)
+INSTALL = cp
+INSTALLFLAGS ?= -f
else
- INSTALLPROG = \
- test -d $(DESTDIR)$(INSTALLDIR) || mkdir -p $(DESTDIR)$(INSTALLDIR); \
- cp -f ../$(BINDIR)/$(PROG) $(DESTDIR)$(INSTALLDIR)/$(PROG)
+INSTALL = install
+INSTALLFLAGS ?= -m 555 -s
endif
+INSTALLPROG = \
+ mkdir -p $(DESTDIR)$(INSTALLDIR); \
+ $(INSTALL) $(INSTALLFLAGS) ../$(BINDIR)/$(PROG) $(DESTDIR)$(INSTALLDIR)/$(PROG)
+
#
# Rename a .exe file if necessary
#
diff --git a/source/common/dmextern.c b/source/common/dmextern.c
index 5baa462579ee..e74311701bc4 100644
--- a/source/common/dmextern.c
+++ b/source/common/dmextern.c
@@ -719,34 +719,54 @@ AcpiDmEmitExternals (
AcpiDmUnresolvedWarning (1);
+ /* Emit any unresolved method externals in a single text block */
+
+ NextExternal = AcpiGbl_ExternalList;
+ while (NextExternal)
+ {
+ if ((NextExternal->Type == ACPI_TYPE_METHOD) &&
+ (!NextExternal->Resolved))
+ {
+ AcpiOsPrintf (" External (%s%s",
+ NextExternal->Path,
+ AcpiDmGetObjectTypeName (NextExternal->Type));
+
+ AcpiOsPrintf (") // Warning: Unresolved Method, "
+ "guessing %u arguments (may be incorrect, see warning above)\n",
+ NextExternal->Value);
+
+ NextExternal->Emitted = TRUE;
+ }
+
+ NextExternal = NextExternal->Next;
+ }
+
+ AcpiOsPrintf ("\n");
+
/*
* Walk the list of externals (unresolved references)
* found during the AML parsing
*/
while (AcpiGbl_ExternalList)
{
- AcpiOsPrintf (" External (%s%s",
- AcpiGbl_ExternalList->Path,
- AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type));
-
- if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
+ if (!AcpiGbl_ExternalList->Emitted)
{
- if (AcpiGbl_ExternalList->Resolved)
+ AcpiOsPrintf (" External (%s%s",
+ AcpiGbl_ExternalList->Path,
+ AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type));
+
+ /* For methods, add a comment with the number of arguments */
+
+ if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD)
{
AcpiOsPrintf (") // %u Arguments\n",
AcpiGbl_ExternalList->Value);
}
else
{
- AcpiOsPrintf (") // Warning: unresolved Method, "
- "assuming %u arguments (may be incorrect, see warning above)\n",
- AcpiGbl_ExternalList->Value);
+ AcpiOsPrintf (")\n");
}
}
- else
- {
- AcpiOsPrintf (")\n");
- }
/* Free this external info block and move on to next external */
@@ -931,5 +951,4 @@ AcpiDmUnresolvedWarning (
(AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods));
}
}
-
}
diff --git a/source/common/getopt.c b/source/common/getopt.c
index f1921ee2c2cb..4bcf3dbc2821 100644
--- a/source/common/getopt.c
+++ b/source/common/getopt.c
@@ -197,6 +197,26 @@ AcpiGetopt(
CurrentCharPtr = 1;
}
+ /* Option has an optional argument? */
+
+ else if (*OptsPtr == '+')
+ {
+ if (argv[AcpiGbl_Optind][(int) (CurrentCharPtr+1)] != '\0')
+ {
+ AcpiGbl_Optarg = &argv[AcpiGbl_Optind++][(int) (CurrentCharPtr+1)];
+ }
+ else if (++AcpiGbl_Optind >= argc)
+ {
+ AcpiGbl_Optarg = NULL;
+ }
+ else
+ {
+ AcpiGbl_Optarg = argv[AcpiGbl_Optind++];
+ }
+
+ CurrentCharPtr = 1;
+ }
+
/* Option has optional single-char arguments? */
else if (*OptsPtr == '^')
diff --git a/source/compiler/asloffset.c b/source/compiler/asloffset.c
index 25e5b0f43fef..b2fe775d84bb 100644
--- a/source/compiler/asloffset.c
+++ b/source/compiler/asloffset.c
@@ -57,10 +57,12 @@ static void
LsEmitOffsetTableEntry (
UINT32 FileId,
ACPI_NAMESPACE_NODE *Node,
+ UINT32 NamepathOffset,
UINT32 Offset,
char *OpName,
UINT64 Value,
- UINT8 AmlOpcode);
+ UINT8 AmlOpcode,
+ UINT16 ParentOpcode);
/*******************************************************************************
@@ -94,7 +96,8 @@ LsAmlOffsetWalk (
UINT32 FileId = (UINT32) ACPI_TO_INTEGER (Context);
ACPI_NAMESPACE_NODE *Node;
UINT32 Length;
- UINT32 OffsetOfOpcode;
+ UINT32 NamepathOffset;
+ UINT32 DataOffset;
ACPI_PARSE_OBJECT *NextOp;
@@ -119,8 +122,9 @@ LsAmlOffsetWalk (
if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE) &&
(Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC))
{
- LsEmitOffsetTableEntry (FileId, Node, Gbl_CurrentAmlOffset,
- Op->Asl.ParseOpName, 0, Op->Asl.Extra);
+ LsEmitOffsetTableEntry (FileId, Node, 0, Gbl_CurrentAmlOffset,
+ Op->Asl.ParseOpName, 0, Op->Asl.Extra, AML_BUFFER_OP);
+
Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength;
return (AE_OK);
}
@@ -138,22 +142,25 @@ LsAmlOffsetWalk (
}
Length = Op->Asl.FinalAmlLength;
+ NamepathOffset = Gbl_CurrentAmlOffset + Length;
/* Get to the NameSeg/NamePath Op (and length of the name) */
Op = Op->Asl.Child;
- OffsetOfOpcode = Length + Op->Asl.FinalAmlLength;
+
+ /* Get offset of last nameseg and the actual data */
+
+ NamepathOffset = Gbl_CurrentAmlOffset + Length +
+ (Op->Asl.FinalAmlLength - ACPI_NAME_SIZE);
+
+ DataOffset = Gbl_CurrentAmlOffset + Length +
+ Op->Asl.FinalAmlLength;
/* Get actual value associated with the name */
Op = Op->Asl.Next;
switch (Op->Asl.AmlOpcode)
{
- /*
- * We are only interested in integer constants that can be changed
- * at boot time. Note, the One/Ones/Zero opcodes are considered
- * non-changeable, so we ignore them here.
- */
case AML_BYTE_OP:
case AML_WORD_OP:
case AML_DWORD_OP:
@@ -161,22 +168,32 @@ LsAmlOffsetWalk (
/* The +1 is to handle the integer size prefix (opcode) */
- LsEmitOffsetTableEntry (FileId, Node,
- (Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, (DataOffset + 1),
Op->Asl.ParseOpName, Op->Asl.Value.Integer,
- (UINT8) Op->Asl.AmlOpcode);
+ (UINT8) Op->Asl.AmlOpcode, AML_NAME_OP);
+ break;
+
+ case AML_ONE_OP:
+ case AML_ONES_OP:
+ case AML_ZERO_OP:
+
+ /* For these, offset will point to the opcode */
+
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
+ Op->Asl.ParseOpName, Op->Asl.Value.Integer,
+ (UINT8) Op->Asl.AmlOpcode, AML_NAME_OP);
break;
case AML_PACKAGE_OP:
case AML_VAR_PACKAGE_OP:
+ /* Get the package element count */
+
NextOp = Op->Asl.Child;
- LsEmitOffsetTableEntry (FileId, Node,
- (Gbl_CurrentAmlOffset + OffsetOfOpcode),
- Op->Asl.ParseOpName,
- NextOp->Asl.Value.Integer,
- (UINT8) Op->Asl.AmlOpcode);
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
+ Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
+ (UINT8) Op->Asl.AmlOpcode, AML_NAME_OP);
break;
default:
@@ -195,7 +212,14 @@ LsAmlOffsetWalk (
/* Get the name/namepath node */
NextOp = Op->Asl.Child;
- OffsetOfOpcode = Length + NextOp->Asl.FinalAmlLength + 1;
+
+ /* Get offset of last nameseg and the actual data */
+
+ NamepathOffset = Gbl_CurrentAmlOffset + Length +
+ (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
+
+ DataOffset = Gbl_CurrentAmlOffset + Length +
+ (NextOp->Asl.FinalAmlLength + 1);
/* Get the SpaceId node, then the Offset (address) node */
@@ -214,10 +238,9 @@ LsAmlOffsetWalk (
case AML_DWORD_OP:
case AML_QWORD_OP:
- LsEmitOffsetTableEntry (FileId, Node,
- (Gbl_CurrentAmlOffset + OffsetOfOpcode + 1),
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, (DataOffset + 1),
Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
- (UINT8) NextOp->Asl.AmlOpcode);
+ (UINT8) NextOp->Asl.AmlOpcode, AML_REGION_OP);
Gbl_CurrentAmlOffset += Length;
return (AE_OK);
@@ -237,15 +260,62 @@ LsAmlOffsetWalk (
NextOp = Op->Asl.Child;
- /* Point to the *last* nameseg in the namepath */
+ /* Get offset of last nameseg and the actual data (flags byte) */
- OffsetOfOpcode = NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE;
+ NamepathOffset = Gbl_CurrentAmlOffset + Length +
+ (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
- LsEmitOffsetTableEntry (FileId, Node,
- (Gbl_CurrentAmlOffset + OffsetOfOpcode + Length),
- Op->Asl.ParseOpName,
- *((UINT32 *) &NextOp->Asl.Value.Buffer[OffsetOfOpcode]),
- (UINT8) Op->Asl.AmlOpcode);
+ DataOffset = Gbl_CurrentAmlOffset + Length +
+ NextOp->Asl.FinalAmlLength;
+
+ /* Get the flags byte Op */
+
+ NextOp = NextOp->Asl.Next;
+
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
+ Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
+ (UINT8) Op->Asl.AmlOpcode, AML_METHOD_OP);
+ break;
+
+ case AML_PROCESSOR_OP:
+
+ /* Processor (Namepath, ProcessorId, Address, Length) */
+
+ Length = Op->Asl.FinalAmlLength;
+ NextOp = Op->Asl.Child; /* Get Namepath */
+
+ /* Get offset of last nameseg and the actual data (PBlock address) */
+
+ NamepathOffset = Gbl_CurrentAmlOffset + Length +
+ (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
+
+ DataOffset = Gbl_CurrentAmlOffset + Length +
+ (NextOp->Asl.FinalAmlLength + 1);
+
+ NextOp = NextOp->Asl.Next; /* Get ProcessorID (BYTE) */
+ NextOp = NextOp->Asl.Next; /* Get Address (DWORD) */
+
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset,
+ Op->Asl.ParseOpName, NextOp->Asl.Value.Integer,
+ (UINT8) AML_DWORD_OP, AML_PROCESSOR_OP);
+ break;
+
+ case AML_DEVICE_OP:
+ case AML_SCOPE_OP:
+ case AML_THERMAL_ZONE_OP:
+
+ /* Device/Scope/ThermalZone (Namepath) */
+
+ Length = Op->Asl.FinalAmlLength;
+ NextOp = Op->Asl.Child; /* Get Namepath */
+
+ /* Get offset of last nameseg */
+
+ NamepathOffset = Gbl_CurrentAmlOffset + Length +
+ (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE);
+
+ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, 0,
+ Op->Asl.ParseOpName, 0, (UINT8) 0, Op->Asl.AmlOpcode);
break;
default:
@@ -267,6 +337,7 @@ LsAmlOffsetWalk (
* OpName - Name of the AML opcode
* Value - Current value of the AML field
* AmlOpcode - Opcode associated with the field
+ * ObjectType - ACPI object type
*
* RETURN: None
*
@@ -278,10 +349,12 @@ static void
LsEmitOffsetTableEntry (
UINT32 FileId,
ACPI_NAMESPACE_NODE *Node,
+ UINT32 NamepathOffset,
UINT32 Offset,
char *OpName,
UINT64 Value,
- UINT8 AmlOpcode)
+ UINT8 AmlOpcode,
+ UINT16 ParentOpcode)
{
ACPI_BUFFER TargetPath;
ACPI_STATUS Status;
@@ -308,8 +381,9 @@ LsEmitOffsetTableEntry (
* Max Length for Integers is 8 bytes.
*/
FlPrintFile (FileId,
- " {%-29s 0x%8.8X, 0x%2.2X, 0x%8.8X%8.8X}, /* %s */\n",
- MsgBuffer, Offset, AmlOpcode, ACPI_FORMAT_UINT64 (Value), OpName);
+ " {%-29s 0x%4.4X, 0x%8.8X, 0x%2.2X, 0x%8.8X, 0x%8.8X%8.8X}, /* %s */\n",
+ MsgBuffer, ParentOpcode, NamepathOffset, AmlOpcode,
+ Offset, ACPI_FORMAT_UINT64 (Value), OpName);
}
@@ -335,10 +409,12 @@ LsDoOffsetTableHeader (
"#define __AML_OFFSET_TABLE_H\n\n");
FlPrintFile (FileId, "typedef struct {\n"
- " char *Pathname;\n"
- " unsigned long Offset;\n"
- " unsigned char Opcode;\n"
- " unsigned long long Value;\n"
+ " char *Pathname; /* Full pathname (from root) to the object */\n"
+ " unsigned short ParentOpcode; /* AML opcode for the parent object */\n"
+ " unsigned long NamesegOffset; /* Offset of last nameseg in the parent namepath */\n"
+ " unsigned char Opcode; /* AML opcode for the data */\n"
+ " unsigned long Offset; /* Offset for the data */\n"
+ " unsigned long long Value; /* Original value of the data (as applicable) */\n"
"} AML_OFFSET_TABLE_ENTRY;\n\n");
FlPrintFile (FileId,
@@ -346,29 +422,37 @@ LsDoOffsetTableHeader (
FlPrintFile (FileId,
"/*\n"
- " * Information about supported object types:\n"
+ " * Information specific to the supported object types:\n"
" *\n"
" * Integers:\n"
- " * Offset points to the actual integer data\n"
" * Opcode is the integer prefix, indicates length of the data\n"
+ " * (One of: BYTE, WORD, DWORD, QWORD, ZERO, ONE, ONES)\n"
+ " * Offset points to the actual integer data\n"
" * Value is the existing value in the AML\n"
" *\n"
" * Packages:\n"
- " * Offset points to the package opcode\n"
" * Opcode is the package or var_package opcode\n"
- " * Value is the package element cound\n"
+ " * Offset points to the package opcode\n"
+ " * Value is the package element count\n"
" *\n"
" * Operation Regions:\n"
- " * Offset points to the region address data\n"
" * Opcode is the address integer prefix, indicates length of the data\n"
+ " * Offset points to the region address\n"
" * Value is the existing address value in the AML\n"
" *\n"
" * Control Methods:\n"
- " * Offset points to the first byte of the namepath\n"
+ " * Offset points to the method flags byte\n"
+ " * Value is the existing flags value in the AML\n"
+ " *\n"
+ " * Processors:\n"
+ " * Offset points to the first byte of the PBlock Address\n"
" *\n"
" * Resource Descriptors:\n"
- " * Offset points to the start of the descriptor\n"
" * Opcode is the descriptor type\n"
+ " * Offset points to the start of the descriptor\n"
+ " *\n"
+ " * Scopes/Devices/ThermalZones:\n"
+ " * Nameseg offset only\n"
" */\n");
FlPrintFile (FileId,
@@ -383,6 +467,6 @@ LsDoOffsetTableFooter (
{
FlPrintFile (FileId,
- " {0,0,0,0} /* Table terminator */\n};\n\n");
+ " {NULL,0,0,0,0,0} /* Table terminator */\n};\n\n");
Gbl_CurrentAmlOffset = 0;
}
diff --git a/source/compiler/asloperands.c b/source/compiler/asloperands.c
index deb4bd4cba50..4afbd9629042 100644
--- a/source/compiler/asloperands.c
+++ b/source/compiler/asloperands.c
@@ -971,12 +971,15 @@ OpnDoDefinitionBlock (
Gbl_TableId = AcpiOsAllocate (Length + 1);
ACPI_STRCPY (Gbl_TableId, Child->Asl.Value.String);
+ /*
+ * Convert anything non-alphanumeric to an underscore. This
+ * allows us to use the TableID to generate unique C symbols.
+ */
for (i = 0; i < Length; i++)
{
- if (Gbl_TableId[i] == ' ')
+ if (!isalnum ((int) Gbl_TableId[i]))
{
- Gbl_TableId[i] = 0;
- break;
+ Gbl_TableId[i] = '_';
}
}
}
diff --git a/source/compiler/asloptions.c b/source/compiler/asloptions.c
index bfb3d75d1340..441dbb3fd1f5 100644
--- a/source/compiler/asloptions.c
+++ b/source/compiler/asloptions.c
@@ -68,7 +68,7 @@ AslDoResponseFile (
#define ASL_TOKEN_SEPARATORS " \t\n"
-#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T:G^v^w|x:z"
+#define ASL_SUPPORTED_OPTIONS "@:b|c|d^D:e:fgh^i|I:l^m:no|p:P^r:s|t|T+G^v^w|x:z"
/*******************************************************************************
diff --git a/source/compiler/dttemplate.c b/source/compiler/dttemplate.c
index 09e9990149c8..73708558d0ee 100644
--- a/source/compiler/dttemplate.c
+++ b/source/compiler/dttemplate.c
@@ -117,13 +117,21 @@ DtCreateTemplates (
AslInitializeGlobals ();
- AcpiUtStrupr (Signature);
- /* Create all known templates if requested */
+ /* Default (no signature) is DSDT */
+
+ if (!Signature)
+ {
+ Signature = "DSDT";
+ goto GetTemplate;
+ }
- if (!ACPI_STRNCMP (Signature, "ALL", 3) ||
+ AcpiUtStrupr (Signature);
+ if (!ACPI_STRCMP (Signature, "ALL") ||
!ACPI_STRCMP (Signature, "*"))
{
+ /* Create all available/known templates */
+
Status = DtCreateAllTemplates ();
return (Status);
}
@@ -136,7 +144,9 @@ DtCreateTemplates (
*/
if (strlen (Signature) != ACPI_NAME_SIZE)
{
- fprintf (stderr, "%s, Invalid ACPI table signature\n", Signature);
+ fprintf (stderr,
+ "%s: Invalid ACPI table signature (length must be 4 characters)\n",
+ Signature);
return (AE_ERROR);
}
@@ -153,19 +163,20 @@ DtCreateTemplates (
Signature = "FACP";
}
+GetTemplate:
TableData = AcpiDmGetTableData (Signature);
if (TableData)
{
if (!TableData->Template)
{
- fprintf (stderr, "%4.4s, No template available\n", Signature);
+ fprintf (stderr, "%4.4s: No template available\n", Signature);
return (AE_ERROR);
}
}
else if (!AcpiUtIsSpecialTable (Signature))
{
fprintf (stderr,
- "%4.4s, Unrecognized ACPI table signature\n", Signature);
+ "%4.4s: Unrecognized ACPI table signature\n", Signature);
return (AE_ERROR);
}
diff --git a/source/components/executer/exoparg1.c b/source/components/executer/exoparg1.c
index ff8dee2487aa..bcd702af946b 100644
--- a/source/components/executer/exoparg1.c
+++ b/source/components/executer/exoparg1.c
@@ -1009,10 +1009,17 @@ AcpiExOpcode_1A_0T_1R (
* add another reference to the referenced object, however.
*/
ReturnDesc = *(Operand[0]->Reference.Where);
- if (ReturnDesc)
+ if (!ReturnDesc)
{
- AcpiUtAddReference (ReturnDesc);
+ /*
+ * Element is NULL, do not allow the dereference.
+ * This provides compatibility with other ACPI
+ * implementations.
+ */
+ return_ACPI_STATUS (AE_AML_UNINITIALIZED_ELEMENT);
}
+
+ AcpiUtAddReference (ReturnDesc);
break;
default:
@@ -1030,15 +1037,44 @@ AcpiExOpcode_1A_0T_1R (
ReturnDesc = Operand[0]->Reference.Object;
if (ACPI_GET_DESCRIPTOR_TYPE (ReturnDesc) ==
- ACPI_DESC_TYPE_NAMED)
+ ACPI_DESC_TYPE_NAMED)
{
ReturnDesc = AcpiNsGetAttachedObject (
- (ACPI_NAMESPACE_NODE *) ReturnDesc);
- }
+ (ACPI_NAMESPACE_NODE *) ReturnDesc);
+ if (!ReturnDesc)
+ {
+ break;
+ }
- /* Add another reference to the object! */
+ /*
+ * June 2013:
+ * BufferFields/FieldUnits require additional resolution
+ */
+ switch (ReturnDesc->Common.Type)
+ {
+ case ACPI_TYPE_BUFFER_FIELD:
+ case ACPI_TYPE_LOCAL_REGION_FIELD:
+ case ACPI_TYPE_LOCAL_BANK_FIELD:
+ case ACPI_TYPE_LOCAL_INDEX_FIELD:
- AcpiUtAddReference (ReturnDesc);
+ Status = AcpiExReadDataFromField (WalkState,
+ ReturnDesc, &TempDesc);
+ if (ACPI_FAILURE (Status))
+ {
+ goto Cleanup;
+ }
+
+ ReturnDesc = TempDesc;
+ break;
+
+ default:
+
+ /* Add another reference to the object */
+
+ AcpiUtAddReference (ReturnDesc);
+ break;
+ }
+ }
break;
default:
diff --git a/source/components/hardware/hwtimer.c b/source/components/hardware/hwtimer.c
index 7e4177afd6d5..cbfa96b0c7a3 100644
--- a/source/components/hardware/hwtimer.c
+++ b/source/components/hardware/hwtimer.c
@@ -115,8 +115,14 @@ AcpiGetTimer (
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
- Status = AcpiHwRead (Ticks, &AcpiGbl_FADT.XPmTimerBlock);
+ /* ACPI 5.0A: PM Timer is optional */
+ if (!AcpiGbl_FADT.XPmTimerBlock.Address)
+ {
+ return_ACPI_STATUS (AE_SUPPORT);
+ }
+
+ Status = AcpiHwRead (Ticks, &AcpiGbl_FADT.XPmTimerBlock);
return_ACPI_STATUS (Status);
}
@@ -171,6 +177,13 @@ AcpiGetTimerDuration (
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
+ /* ACPI 5.0A: PM Timer is optional */
+
+ if (!AcpiGbl_FADT.XPmTimerBlock.Address)
+ {
+ return_ACPI_STATUS (AE_SUPPORT);
+ }
+
/*
* Compute Tick Delta:
* Handle (max one) timer rollovers on 24-bit versus 32-bit timers.
diff --git a/source/components/namespace/nspredef.c b/source/components/namespace/nspredef.c
index 7122e7accbe1..7b7e3e34fd50 100644
--- a/source/components/namespace/nspredef.c
+++ b/source/components/namespace/nspredef.c
@@ -166,6 +166,16 @@ AcpiNsCheckReturnValue (
}
/*
+ *
+ * 4) If there is no return value and it is optional, just return
+ * AE_OK (_WAK).
+ */
+ if (!(*ReturnObjectPtr))
+ {
+ goto Exit;
+ }
+
+ /*
* For returned Package objects, check the type of all sub-objects.
* Note: Package may have been newly created by call above.
*/
@@ -293,7 +303,13 @@ TypeErrorExit:
AcpiUtGetExpectedReturnTypes (TypeBuffer, ExpectedBtypes);
- if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT)
+ if (!ReturnObject)
+ {
+ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
+ "Expected return object of type %s",
+ TypeBuffer));
+ }
+ else if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT)
{
ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
"Return type mismatch - found %s, expected %s",
diff --git a/source/components/namespace/nswalk.c b/source/components/namespace/nswalk.c
index 0b25ffdb8951..577b89bd5244 100644
--- a/source/components/namespace/nswalk.c
+++ b/source/components/namespace/nswalk.c
@@ -165,9 +165,9 @@ AcpiNsGetNextNodeTyped (
* MaxDepth - Depth to which search is to reach
* Flags - Whether to unlock the NS before invoking
* the callback routine
- * PreOrderVisit - Called during tree pre-order visit
+ * DescendingCallback - Called during tree descent
* when an object of "Type" is found
- * PostOrderVisit - Called during tree post-order visit
+ * AscendingCallback - Called during tree ascent
* when an object of "Type" is found
* Context - Passed to user function(s) above
* ReturnValue - from the UserFunction if terminated
@@ -195,8 +195,8 @@ AcpiNsWalkNamespace (
ACPI_HANDLE StartNode,
UINT32 MaxDepth,
UINT32 Flags,
- ACPI_WALK_CALLBACK PreOrderVisit,
- ACPI_WALK_CALLBACK PostOrderVisit,
+ ACPI_WALK_CALLBACK DescendingCallback,
+ ACPI_WALK_CALLBACK AscendingCallback,
void *Context,
void **ReturnValue)
{
@@ -274,22 +274,22 @@ AcpiNsWalkNamespace (
}
/*
- * Invoke the user function, either pre-order or post-order
+ * Invoke the user function, either descending, ascending,
* or both.
*/
if (!NodePreviouslyVisited)
{
- if (PreOrderVisit)
+ if (DescendingCallback)
{
- Status = PreOrderVisit (ChildNode, Level,
+ Status = DescendingCallback (ChildNode, Level,
Context, ReturnValue);
}
}
else
{
- if (PostOrderVisit)
+ if (AscendingCallback)
{
- Status = PostOrderVisit (ChildNode, Level,
+ Status = AscendingCallback (ChildNode, Level,
Context, ReturnValue);
}
}
diff --git a/source/components/namespace/nsxfeval.c b/source/components/namespace/nsxfeval.c
index 6a2649a5dd0e..e5c1e17f2027 100644
--- a/source/components/namespace/nsxfeval.c
+++ b/source/components/namespace/nsxfeval.c
@@ -574,9 +574,9 @@ AcpiNsResolveReferences (
* PARAMETERS: Type - ACPI_OBJECT_TYPE to search for
* StartObject - Handle in namespace where search begins
* MaxDepth - Depth to which search is to reach
- * PreOrderVisit - Called during tree pre-order visit
+ * DescendingCallback - Called during tree descent
* when an object of "Type" is found
- * PostOrderVisit - Called during tree post-order visit
+ * AscendingCallback - Called during tree ascent
* when an object of "Type" is found
* Context - Passed to user function(s) above
* ReturnValue - Location where return value of
@@ -605,8 +605,8 @@ AcpiWalkNamespace (
ACPI_OBJECT_TYPE Type,
ACPI_HANDLE StartObject,
UINT32 MaxDepth,
- ACPI_WALK_CALLBACK PreOrderVisit,
- ACPI_WALK_CALLBACK PostOrderVisit,
+ ACPI_WALK_CALLBACK DescendingCallback,
+ ACPI_WALK_CALLBACK AscendingCallback,
void *Context,
void **ReturnValue)
{
@@ -620,7 +620,7 @@ AcpiWalkNamespace (
if ((Type > ACPI_TYPE_LOCAL_MAX) ||
(!MaxDepth) ||
- (!PreOrderVisit && !PostOrderVisit))
+ (!DescendingCallback && !AscendingCallback))
{
return_ACPI_STATUS (AE_BAD_PARAMETER);
}
@@ -655,8 +655,8 @@ AcpiWalkNamespace (
}
Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth,
- ACPI_NS_WALK_UNLOCK, PreOrderVisit,
- PostOrderVisit, Context, ReturnValue);
+ ACPI_NS_WALK_UNLOCK, DescendingCallback,
+ AscendingCallback, Context, ReturnValue);
(void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE);
diff --git a/source/components/tables/tbfadt.c b/source/components/tables/tbfadt.c
index 6f41c46321e4..eb4e0e5695d5 100644
--- a/source/components/tables/tbfadt.c
+++ b/source/components/tables/tbfadt.c
@@ -132,7 +132,7 @@ static ACPI_FADT_INFO FadtInfoTable[] =
ACPI_FADT_OFFSET (PmTimerBlock),
ACPI_FADT_OFFSET (PmTimerLength),
ACPI_PM_TIMER_WIDTH,
- ACPI_FADT_REQUIRED},
+ ACPI_FADT_SEPARATE_LENGTH}, /* ACPI 5.0A: Timer is optional */
{"Gpe0Block",
ACPI_FADT_OFFSET (XGpe0Block),
@@ -606,7 +606,7 @@ AcpiTbValidateFadt (
if (FadtInfoTable[i].Type & ACPI_FADT_REQUIRED)
{
/*
- * Field is required (PM1aEvent, PM1aControl, PmTimer).
+ * Field is required (PM1aEvent, PM1aControl).
* Both the address and length must be non-zero.
*/
if (!Address64->Address || !Length)
diff --git a/source/components/tables/tbxfroot.c b/source/components/tables/tbxfroot.c
index 20cc0fa6c85b..fa67781cb14f 100644
--- a/source/components/tables/tbxfroot.c
+++ b/source/components/tables/tbxfroot.c
@@ -51,12 +51,6 @@
#define _COMPONENT ACPI_TABLES
ACPI_MODULE_NAME ("tbxfroot")
-/* Local prototypes */
-
-static ACPI_STATUS
-AcpiTbValidateRsdp (
- ACPI_TABLE_RSDP *Rsdp);
-
/*******************************************************************************
*
@@ -70,7 +64,7 @@ AcpiTbValidateRsdp (
*
******************************************************************************/
-static ACPI_STATUS
+ACPI_STATUS
AcpiTbValidateRsdp (
ACPI_TABLE_RSDP *Rsdp)
{
@@ -81,7 +75,7 @@ AcpiTbValidateRsdp (
* Note: Sometimes there exists more than one RSDP in memory; the valid
* RSDP has a valid checksum, all others have an invalid checksum.
*/
- if (ACPI_STRNCMP ((char *) Rsdp, ACPI_SIG_RSDP,
+ if (ACPI_STRNCMP ((char *) Rsdp->Signature, ACPI_SIG_RSDP,
sizeof (ACPI_SIG_RSDP)-1) != 0)
{
/* Nope, BAD Signature */
diff --git a/source/components/utilities/utglobal.c b/source/components/utilities/utglobal.c
index 83b05266ad5f..56c4e0693573 100644
--- a/source/components/utilities/utglobal.c
+++ b/source/components/utilities/utglobal.c
@@ -319,7 +319,6 @@ AcpiUtInitGlobals (
AcpiGbl_TraceDbgLayer = 0;
AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING;
AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT;
- AcpiGbl_OsiData = 0;
AcpiGbl_OsiMutex = NULL;
AcpiGbl_RegMethodsExecuted = FALSE;
diff --git a/source/components/utilities/utosi.c b/source/components/utilities/utosi.c
index 21fe51b5faec..c3762562bd71 100644
--- a/source/components/utilities/utosi.c
+++ b/source/components/utilities/utosi.c
@@ -81,21 +81,20 @@ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] =
/* Feature Group Strings */
- {"Extended Address Space Descriptor", NULL, 0, 0}
+ {"Extended Address Space Descriptor", NULL, ACPI_OSI_FEATURE, 0},
/*
* All "optional" feature group strings (features that are implemented
- * by the host) should be dynamically added by the host via
- * AcpiInstallInterface and should not be manually added here.
- *
- * Examples of optional feature group strings:
- *
- * "Module Device"
- * "Processor Device"
- * "3.0 Thermal Model"
- * "3.0 _SCP Extensions"
- * "Processor Aggregator Device"
+ * by the host) should be dynamically modified to VALID by the host via
+ * AcpiInstallInterface or AcpiUpdateInterfaces. Such optional feature
+ * group strings are set as INVALID by default here.
*/
+
+ {"Module Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
+ {"Processor Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
+ {"3.0 Thermal Model", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
+ {"3.0 _SCP Extensions", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0},
+ {"Processor Aggregator Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0}
};
@@ -172,13 +171,26 @@ AcpiUtInterfaceTerminate (
{
AcpiGbl_SupportedInterfaces = NextInterface->Next;
- /* Only interfaces added at runtime can be freed */
-
if (NextInterface->Flags & ACPI_OSI_DYNAMIC)
{
+ /* Only interfaces added at runtime can be freed */
+
ACPI_FREE (NextInterface->Name);
ACPI_FREE (NextInterface);
}
+ else
+ {
+ /* Interface is in static list. Reset it to invalid or valid. */
+
+ if (NextInterface->Flags & ACPI_OSI_DEFAULT_INVALID)
+ {
+ NextInterface->Flags |= ACPI_OSI_INVALID;
+ }
+ else
+ {
+ NextInterface->Flags &= ~ACPI_OSI_INVALID;
+ }
+ }
NextInterface = AcpiGbl_SupportedInterfaces;
}
@@ -307,6 +319,57 @@ AcpiUtRemoveInterface (
/*******************************************************************************
*
+ * FUNCTION: AcpiUtUpdateInterfaces
+ *
+ * PARAMETERS: Action - Actions to be performed during the
+ * update
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor
+ * strings or/and feature group strings.
+ * Caller MUST hold AcpiGbl_OsiMutex
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtUpdateInterfaces (
+ UINT8 Action)
+{
+ ACPI_INTERFACE_INFO *NextInterface;
+
+
+ NextInterface = AcpiGbl_SupportedInterfaces;
+ while (NextInterface)
+ {
+ if (((NextInterface->Flags & ACPI_OSI_FEATURE) &&
+ (Action & ACPI_FEATURE_STRINGS)) ||
+ (!(NextInterface->Flags & ACPI_OSI_FEATURE) &&
+ (Action & ACPI_VENDOR_STRINGS)))
+ {
+ if (Action & ACPI_DISABLE_INTERFACES)
+ {
+ /* Mark the interfaces as invalid */
+
+ NextInterface->Flags |= ACPI_OSI_INVALID;
+ }
+ else
+ {
+ /* Mark the interfaces as valid */
+
+ NextInterface->Flags &= ~ACPI_OSI_INVALID;
+ }
+ }
+
+ NextInterface = NextInterface->Next;
+ }
+
+ return (AE_OK);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiUtGetInterface
*
* PARAMETERS: InterfaceName - The interface to find
diff --git a/source/components/utilities/utxface.c b/source/components/utilities/utxface.c
index 450698054d3b..021a4627702c 100644
--- a/source/components/utilities/utxface.c
+++ b/source/components/utilities/utxface.c
@@ -499,6 +499,40 @@ ACPI_EXPORT_SYMBOL (AcpiInstallInterfaceHandler)
/*****************************************************************************
*
+ * FUNCTION: AcpiUpdateInterfaces
+ *
+ * PARAMETERS: Action - Actions to be performed during the
+ * update
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor
+ * string or/and feature group strings.
+ *
+ ****************************************************************************/
+
+ACPI_STATUS
+AcpiUpdateInterfaces (
+ UINT8 Action)
+{
+ ACPI_STATUS Status;
+
+
+ Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER);
+ if (ACPI_FAILURE (Status))
+ {
+ return (Status);
+ }
+
+ Status = AcpiUtUpdateInterfaces (Action);
+
+ AcpiOsReleaseMutex (AcpiGbl_OsiMutex);
+ return (Status);
+}
+
+
+/*****************************************************************************
+ *
* FUNCTION: AcpiCheckAddressRange
*
* PARAMETERS: SpaceId - Address space ID
diff --git a/source/include/acglobal.h b/source/include/acglobal.h
index 32ae55f855f9..a4538051ec0f 100644
--- a/source/include/acglobal.h
+++ b/source/include/acglobal.h
@@ -140,6 +140,12 @@ UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableAutoRepair, FALSE);
*/
UINT8 ACPI_INIT_GLOBAL (AcpiGbl_DisableSsdtTableLoad, FALSE);
+/*
+ * We keep track of the latest version of Windows that has been requested by
+ * the BIOS.
+ */
+UINT8 ACPI_INIT_GLOBAL (AcpiGbl_OsiData, 0);
+
/* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */
@@ -290,7 +296,6 @@ ACPI_EXTERN UINT8 AcpiGbl_DebuggerConfiguration;
ACPI_EXTERN BOOLEAN AcpiGbl_StepToNextCall;
ACPI_EXTERN BOOLEAN AcpiGbl_AcpiHardwarePresent;
ACPI_EXTERN BOOLEAN AcpiGbl_EventsInitialized;
-ACPI_EXTERN UINT8 AcpiGbl_OsiData;
ACPI_EXTERN ACPI_INTERFACE_INFO *AcpiGbl_SupportedInterfaces;
ACPI_EXTERN ACPI_ADDRESS_RANGE *AcpiGbl_AddressRangeList[ACPI_ADDRESS_RANGE_MAX];
diff --git a/source/include/aclocal.h b/source/include/aclocal.h
index 47e743738f49..a3569fb8b7ec 100644
--- a/source/include/aclocal.h
+++ b/source/include/aclocal.h
@@ -1100,19 +1100,6 @@ typedef struct acpi_bit_register_info
/* Structs and definitions for _OSI support and I/O port validation */
-#define ACPI_OSI_WIN_2000 0x01
-#define ACPI_OSI_WIN_XP 0x02
-#define ACPI_OSI_WIN_XP_SP1 0x03
-#define ACPI_OSI_WINSRV_2003 0x04
-#define ACPI_OSI_WIN_XP_SP2 0x05
-#define ACPI_OSI_WINSRV_2003_SP1 0x06
-#define ACPI_OSI_WIN_VISTA 0x07
-#define ACPI_OSI_WINSRV_2008 0x08
-#define ACPI_OSI_WIN_VISTA_SP1 0x09
-#define ACPI_OSI_WIN_VISTA_SP2 0x0A
-#define ACPI_OSI_WIN_7 0x0B
-#define ACPI_OSI_WIN_8 0x0C
-
#define ACPI_ALWAYS_ILLEGAL 0x00
typedef struct acpi_interface_info
@@ -1126,6 +1113,9 @@ typedef struct acpi_interface_info
#define ACPI_OSI_INVALID 0x01
#define ACPI_OSI_DYNAMIC 0x02
+#define ACPI_OSI_FEATURE 0x04
+#define ACPI_OSI_DEFAULT_INVALID 0x08
+#define ACPI_OSI_OPTIONAL_FEATURE (ACPI_OSI_FEATURE | ACPI_OSI_DEFAULT_INVALID | ACPI_OSI_INVALID)
typedef struct acpi_port_info
{
@@ -1221,6 +1211,7 @@ typedef struct acpi_external_list
UINT8 Type;
UINT8 Flags;
BOOLEAN Resolved;
+ BOOLEAN Emitted;
} ACPI_EXTERNAL_LIST;
diff --git a/source/include/acnamesp.h b/source/include/acnamesp.h
index 1118184ed383..63caba3afa19 100644
--- a/source/include/acnamesp.h
+++ b/source/include/acnamesp.h
@@ -117,8 +117,8 @@ AcpiNsWalkNamespace (
ACPI_HANDLE StartObject,
UINT32 MaxDepth,
UINT32 Flags,
- ACPI_WALK_CALLBACK PreOrderVisit,
- ACPI_WALK_CALLBACK PostOrderVisit,
+ ACPI_WALK_CALLBACK DescendingCallback,
+ ACPI_WALK_CALLBACK AscendingCallback,
void *Context,
void **ReturnValue);
diff --git a/source/include/acpixf.h b/source/include/acpixf.h
index a334b2d4401a..7dee52a64b24 100644
--- a/source/include/acpixf.h
+++ b/source/include/acpixf.h
@@ -47,7 +47,7 @@
/* Current ACPICA subsystem version in YYYYMMDD format */
-#define ACPI_CA_VERSION 0x20130626
+#define ACPI_CA_VERSION 0x20130725
#include "acconfig.h"
#include "actypes.h"
@@ -61,6 +61,7 @@ extern UINT32 AcpiCurrentGpeCount;
extern ACPI_TABLE_FADT AcpiGbl_FADT;
extern BOOLEAN AcpiGbl_SystemAwakeAndRunning;
extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */
+extern UINT8 AcpiGbl_OsiData;
/* Runtime configuration of debug print levels */
@@ -177,6 +178,10 @@ ACPI_STATUS
AcpiRemoveInterface (
ACPI_STRING InterfaceName);
+ACPI_STATUS
+AcpiUpdateInterfaces (
+ UINT8 Action);
+
UINT32
AcpiCheckAddressRange (
ACPI_ADR_SPACE_TYPE SpaceId,
@@ -268,8 +273,8 @@ AcpiWalkNamespace (
ACPI_OBJECT_TYPE Type,
ACPI_HANDLE StartObject,
UINT32 MaxDepth,
- ACPI_WALK_CALLBACK PreOrderVisit,
- ACPI_WALK_CALLBACK PostOrderVisit,
+ ACPI_WALK_CALLBACK DescendingCallback,
+ ACPI_WALK_CALLBACK AscendingCallback,
void *Context,
void **ReturnValue);
diff --git a/source/include/actables.h b/source/include/actables.h
index 3452a7b870a6..42958945bca4 100644
--- a/source/include/actables.h
+++ b/source/include/actables.h
@@ -52,6 +52,10 @@ AcpiAllocateRootTable (
/*
* tbxfroot - Root pointer utilities
*/
+ACPI_STATUS
+AcpiTbValidateRsdp (
+ ACPI_TABLE_RSDP *Rsdp);
+
UINT8 *
AcpiTbScanMemoryForRsdp (
UINT8 *StartAddress,
diff --git a/source/include/actypes.h b/source/include/actypes.h
index 09ccfdf08d73..cf98e4bfc6e9 100644
--- a/source/include/actypes.h
+++ b/source/include/actypes.h
@@ -1244,4 +1244,32 @@ typedef struct acpi_memory_list
} ACPI_MEMORY_LIST;
+/* Definitions of _OSI support */
+
+#define ACPI_VENDOR_STRINGS 0x01
+#define ACPI_FEATURE_STRINGS 0x02
+#define ACPI_ENABLE_INTERFACES 0x00
+#define ACPI_DISABLE_INTERFACES 0x04
+
+#define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS)
+#define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS)
+#define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS)
+#define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS)
+#define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS)
+#define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS)
+
+#define ACPI_OSI_WIN_2000 0x01
+#define ACPI_OSI_WIN_XP 0x02
+#define ACPI_OSI_WIN_XP_SP1 0x03
+#define ACPI_OSI_WINSRV_2003 0x04
+#define ACPI_OSI_WIN_XP_SP2 0x05
+#define ACPI_OSI_WINSRV_2003_SP1 0x06
+#define ACPI_OSI_WIN_VISTA 0x07
+#define ACPI_OSI_WINSRV_2008 0x08
+#define ACPI_OSI_WIN_VISTA_SP1 0x09
+#define ACPI_OSI_WIN_VISTA_SP2 0x0A
+#define ACPI_OSI_WIN_7 0x0B
+#define ACPI_OSI_WIN_8 0x0C
+
+
#endif /* __ACTYPES_H__ */
diff --git a/source/include/acutils.h b/source/include/acutils.h
index c0ea53333503..c80dd36ca4f6 100644
--- a/source/include/acutils.h
+++ b/source/include/acutils.h
@@ -670,6 +670,10 @@ ACPI_STATUS
AcpiUtRemoveInterface (
ACPI_STRING InterfaceName);
+ACPI_STATUS
+AcpiUtUpdateInterfaces (
+ UINT8 Action);
+
ACPI_INTERFACE_INFO *
AcpiUtGetInterface (
ACPI_STRING InterfaceName);
diff --git a/source/include/platform/acfreebsd.h b/source/include/platform/acfreebsd.h
index 92d7382d19aa..4b9c203b022e 100644
--- a/source/include/platform/acfreebsd.h
+++ b/source/include/platform/acfreebsd.h
@@ -49,12 +49,21 @@
#include "acgcc.h"
#include <sys/types.h>
-#include <machine/acpica_machdep.h>
+
+#ifdef __LP64__
+#define ACPI_MACHINE_WIDTH 64
+#else
+#define ACPI_MACHINE_WIDTH 32
+#endif
+
+#define COMPILER_DEPENDENT_INT64 int64_t
+#define COMPILER_DEPENDENT_UINT64 uint64_t
#define ACPI_UINTPTR_T uintptr_t
#define ACPI_USE_DO_WHILE_0
#define ACPI_USE_LOCAL_CACHE
+#define ACPI_USE_NATIVE_DIVIDE
#define ACPI_USE_SYSTEM_CLIBRARY
#ifdef _KERNEL
@@ -63,6 +72,7 @@
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/libkern.h>
+#include <machine/acpica_machdep.h>
#include <machine/stdarg.h>
#include "opt_acpi.h"
diff --git a/source/os_specific/service_layers/osfreebsdtbl.c b/source/os_specific/service_layers/osfreebsdtbl.c
index 3df48456d2ba..9d39bc3ca8f1 100644
--- a/source/os_specific/service_layers/osfreebsdtbl.c
+++ b/source/os_specific/service_layers/osfreebsdtbl.c
@@ -964,28 +964,15 @@ OslMapTable (
*Table = MappedTable;
- /* Checksum for RSDP */
+ /*
+ * Checksum for RSDP.
+ * Note: Other checksums are computed during the table dump.
+ */
- if (!ACPI_STRNCMP (MappedTable->Signature, ACPI_SIG_RSDP,
- sizeof (ACPI_SIG_RSDP) - 1))
+ if (AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MappedTable)) ==
+ AE_BAD_CHECKSUM)
{
- /* Check the standard checksum */
-
- if (AcpiTbChecksum ((UINT8 *) MappedTable, ACPI_RSDP_CHECKSUM_LENGTH))
- {
- fprintf (stderr, "Warning: wrong checksum for RSDP\n");
- }
-
- /* Check extended checksum if table version >= 2 */
-
- if (MappedTable->Revision)
- {
- if (AcpiTbChecksum ((UINT8 *) MappedTable,
- ACPI_RSDP_XCHECKSUM_LENGTH))
- {
- fprintf (stderr, "Warning: wrong checksum for RSDP\n");
- }
- }
+ fprintf (stderr, "Warning: wrong checksum for RSDP\n");
}
return (AE_OK);
diff --git a/source/os_specific/service_layers/oslinuxtbl.c b/source/os_specific/service_layers/oslinuxtbl.c
index 67a5e0246db3..fd593a12263e 100644
--- a/source/os_specific/service_layers/oslinuxtbl.c
+++ b/source/os_specific/service_layers/oslinuxtbl.c
@@ -960,26 +960,11 @@ OslMapTable (
* Checksum for RSDP.
* Note: Other checksums are computed during the table dump.
*/
- if (!ACPI_STRNCMP (MappedTable->Signature, ACPI_SIG_RSDP,
- sizeof (ACPI_SIG_RSDP) - 1))
- {
- /* Check the standard checksum */
-
- if (AcpiTbChecksum ((UINT8 *) MappedTable, ACPI_RSDP_CHECKSUM_LENGTH))
- {
- fprintf (stderr, "Warning: wrong checksum for RSDP\n");
- }
-
- /* Check extended checksum if table version >= 2 */
- if (MappedTable->Revision)
- {
- if (AcpiTbChecksum ((UINT8 *) MappedTable,
- ACPI_RSDP_XCHECKSUM_LENGTH))
- {
- fprintf (stderr, "Warning: wrong checksum for RSDP\n");
- }
- }
+ if (AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MappedTable)) ==
+ AE_BAD_CHECKSUM)
+ {
+ fprintf (stderr, "Warning: wrong checksum for RSDP\n");
}
return (AE_OK);
diff --git a/source/tools/acpiexec/aetables.c b/source/tools/acpiexec/aetables.c
index 07af7965899f..a32c4c54dea8 100644
--- a/source/tools/acpiexec/aetables.c
+++ b/source/tools/acpiexec/aetables.c
@@ -81,7 +81,7 @@ static ACPI_TABLE_FADT LocalFADT;
*/
static ACPI_TABLE_XSDT *LocalXSDT;
-#define BASE_XSDT_TABLES 8
+#define BASE_XSDT_TABLES 10
#define BASE_XSDT_SIZE (sizeof (ACPI_TABLE_XSDT) + \
((BASE_XSDT_TABLES -1) * sizeof (UINT64)))
@@ -198,7 +198,12 @@ AeBuildLocalTables (
LocalXSDT->TableOffsetEntry[7] = ACPI_PTR_TO_PHYSADDR (&EcdtCode);
- /*
+ /* Install two UEFIs to test multiple table support */
+
+ LocalXSDT->TableOffsetEntry[8] = ACPI_PTR_TO_PHYSADDR (&Uefi1Code);
+ LocalXSDT->TableOffsetEntry[9] = ACPI_PTR_TO_PHYSADDR (&Uefi2Code);
+
+ /*
* Install the user tables. The DSDT must be installed in the FADT.
* All other tables are installed directly into the XSDT.
*/
diff --git a/source/tools/acpiexec/aetables.h b/source/tools/acpiexec/aetables.h
index 791a7492975d..410d5289b9ec 100644
--- a/source/tools/acpiexec/aetables.h
+++ b/source/tools/acpiexec/aetables.h
@@ -214,6 +214,30 @@ unsigned char EcdtCode[] =
0x49,0x30,0x2E,0x45,0x43,0x00 /* 00000048 "I0.EC." */
};
+/* Test for multiple UEFI tables */
+
+unsigned char Uefi1Code[] =
+{
+ 0x55,0x45,0x46,0x49,0x36,0x00,0x00,0x00, /* 00000000 "UEFI6..." */
+ 0x01,0x03,0x20,0x49,0x6E,0x74,0x65,0x6C, /* 00000008 ".. Intel" */
+ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
+ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
+ 0x26,0x06,0x13,0x20,0x00,0x01,0x02,0x03, /* 00000020 "&.. ...." */
+ 0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B, /* 00000028 "........" */
+ 0x0C,0x0D,0x0E,0x0F,0x36,0x00 /* 00000030 "....6." */
+};
+
+unsigned char Uefi2Code[] =
+{
+ 0x55,0x45,0x46,0x49,0x36,0x00,0x00,0x00, /* 00000000 "UEFI6..." */
+ 0x01,0xEB,0x20,0x49,0x6E,0x74,0x65,0x6C, /* 00000008 ".. Intel" */
+ 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */
+ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */
+ 0x26,0x06,0x13,0x20,0x06,0x07,0x08,0x09, /* 00000020 "&.. ...." */
+ 0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B, /* 00000028 "........" */
+ 0x0C,0x0D,0x0E,0x0F,0x36,0x00 /* 00000030 "....6." */
+};
+
/*
* Example installable control method
@@ -414,6 +438,36 @@ DefinitionBlock ("ssdt4.aml", "SSDT", 2, "Intel", "ssdt4", 0x00000004)
[040h 0064 1] GPE Number : 09
[041h 0065 13] Namepath : "\_SB.PCI0.EC"
+
+/* Test multiple UEFI support */
+
+[0004] Signature : "UEFI" [UEFI Boot Optimization Table]
+[0004] Table Length : 00000036
+[0001] Revision : 01
+[0001] Checksum : 9B
+[0006] Oem ID : " Intel"
+[0008] Oem Table ID : "Template"
+[0004] Oem Revision : 00000001
+[0004] Asl Compiler ID : "INTL"
+[0004] Asl Compiler Revision : 20100528
+
+[0016] UUID Identifier : 03020100-0504-0706-0809-0A0B0C0D0E0F
+[0002] Data Offset : 0000
+
+
+[0004] Signature : "UEFI" [UEFI Boot Optimization Table]
+[0004] Table Length : 00000036
+[0001] Revision : 01
+[0001] Checksum : 9B
+[0006] Oem ID : " Intel"
+[0008] Oem Table ID : "Template"
+[0004] Oem Revision : 00000001
+[0004] Asl Compiler ID : "INTL"
+[0004] Asl Compiler Revision : 20100528
+
+[0016] UUID Identifier : 09080706-0504-0706-0809-0A0B0C0D0E0F
+[0002] Data Offset : 0000
+
#endif
#endif /* __AETABLES_H__ */