2829 lines
97 KiB
Plaintext
2829 lines
97 KiB
Plaintext
|
----------------------------------------
|
|||
|
15 August 2002. Summary of changes for this release.
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020815:
|
|||
|
|
|||
|
Fixed a reported problem where a Store to a method argument
|
|||
|
that contains a reference did not perform the indirect store
|
|||
|
correctly. This problem was created during the conversion
|
|||
|
to the new reference object model <20> the indirect store to a
|
|||
|
method argument code was not updated to reflect the new
|
|||
|
model.
|
|||
|
|
|||
|
Reworked the ACPI mode change code to better conform to ACPI
|
|||
|
2.0, handle corner cases, and improve code legibility (Kochi
|
|||
|
Takayoshi)
|
|||
|
|
|||
|
Fixed a problem with the pathname parsing for the carat (^)
|
|||
|
prefix. The heavy use of the carat operator by the new
|
|||
|
namepath optimization in the iASL compiler uncovered a
|
|||
|
problem with the AML interpreter handling of this prefix.
|
|||
|
In the case where one or more carats precede a single
|
|||
|
nameseg, the nameseg was treated as standalone and the
|
|||
|
search rule (to root) was inadvertently applied. This could
|
|||
|
cause both the iASL compiler and the interpreter to find the
|
|||
|
wrong object or to miss the error that should occur if the
|
|||
|
object does not exist at that exact pathname.
|
|||
|
|
|||
|
Found and fixed the problem where the HP Pavilion DSDT would
|
|||
|
not load. This was a relatively minor tweak to the table
|
|||
|
loading code (a problem caused by the unexpected encounter
|
|||
|
with a method invocation not within a control method), but
|
|||
|
it does not solve the overall issue of the execution of AML
|
|||
|
code at the table level. This investigation is still
|
|||
|
ongoing.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K
|
|||
|
Total
|
|||
|
Debug Version: 149.4K Code, 61.6K Data, 211.0K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K
|
|||
|
Total
|
|||
|
Debug Version: 150.0K Code, 61.7K Data, 211.7K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Remove redundant slab.h include (Brad Hards)
|
|||
|
|
|||
|
Fix several bugs in thermal.c (Herbert Nachtnebel)
|
|||
|
|
|||
|
Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
|
|||
|
|
|||
|
Change acpi_system_suspend to use updated irq functions
|
|||
|
(Pavel Machek)
|
|||
|
|
|||
|
Export acpi_get_firmware_table (Matthew Wilcox)
|
|||
|
|
|||
|
Use proper root proc entry for ACPI (Kochi Takayoshi)
|
|||
|
|
|||
|
Fix early-boot table parsing (Bjorn Helgaas)
|
|||
|
|
|||
|
|
|||
|
3) iASL Compiler/Disassembler
|
|||
|
|
|||
|
Reworked the compiler options to make them more consistent
|
|||
|
and to use two-letter options where appropriate. We were
|
|||
|
running out of sensible letters. This may break some
|
|||
|
makefiles, so check the current options list by invoking the
|
|||
|
compiler with no parameters.
|
|||
|
|
|||
|
Completed the design and implementation of the ASL namepath
|
|||
|
optimization option for the compiler. This option optimizes
|
|||
|
all references to named objects to the shortest possible
|
|||
|
path. The first attempt tries to utilize a single nameseg
|
|||
|
(4 characters) and the <20>search-to-root<6F> algorithm used by
|
|||
|
the interpreter. If that cannot be used (because either the
|
|||
|
name is not in the search path or there is a conflict with
|
|||
|
another object with the same name), the pathname is
|
|||
|
optimized using the carat prefix (usually a shorter string
|
|||
|
than specifying the entire path from the root.)
|
|||
|
|
|||
|
Implemented support to obtain the DSDT from the Windows
|
|||
|
registry (when the disassembly option is specified with no
|
|||
|
input file). Added this code as the implementation for
|
|||
|
AcpiOsTableOverride in the Windows OSL. Migrated the 16-bit
|
|||
|
code (used in the AcpiDump utility) to scan memory for the
|
|||
|
DSDT to the AcpiOsTableOverride function in the DOS OSL to
|
|||
|
make the disassembler truly OS independent.
|
|||
|
|
|||
|
Implemented a new option to disassemble and compile in one
|
|||
|
step. When used without an input filename, this option will
|
|||
|
grab the DSDT from the local machine, disassemble it, and
|
|||
|
compile it in one step.
|
|||
|
|
|||
|
Added a warning message for invalid escapes (a backslash
|
|||
|
followed by any character other than the allowable escapes).
|
|||
|
This catches the quoted string error <20>\_SB_<42> (which should
|
|||
|
be <20>\\_SB_<42> ). Also, there are numerous instances in the
|
|||
|
ACPI specification where this error occurs.
|
|||
|
|
|||
|
Added a compiler option to disable all optimizations. This
|
|||
|
is basically the <20>compatibility mode<64> because by using this
|
|||
|
option, the AML code will come out exactly the same as other
|
|||
|
ASL compilers.
|
|||
|
|
|||
|
Added error messages for incorrectly ordered dependent
|
|||
|
resource functions. This includes: missing EndDependentFn
|
|||
|
macro at end of dependent resource list, nested dependent
|
|||
|
function macros (both start and end), and missing
|
|||
|
StartDependentFn macro. These are common errors that should
|
|||
|
be caught at compile time.
|
|||
|
|
|||
|
Implemented _OSI support for the disassembler and compiler.
|
|||
|
_OSI must be included in the namespace for proper
|
|||
|
disassembly (because the disassembler must know the number
|
|||
|
of arguments.)
|
|||
|
|
|||
|
Added an <20>optimization<6F> message type that is optional (off
|
|||
|
by default). This message is used for all optimizations <20>
|
|||
|
including constant folding, integer optimization, and
|
|||
|
namepath optimization.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
25 July 2002. Summary of changes for this release.
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020725:
|
|||
|
|
|||
|
The AML Disassembler has been enhanced to produce compilable
|
|||
|
ASL code and has been integrated into the iASL compiler (see
|
|||
|
below) as well as the single-step disassembly for the AML
|
|||
|
debugger and the disassembler for the AcpiDump utility. All
|
|||
|
ACPI 2.0A opcodes, resource templates and macros are fully
|
|||
|
supported. The disassembler has been tested on over 30
|
|||
|
different AML files, producing identical AML when the
|
|||
|
resulting disassembled ASL file is recompiled with the same
|
|||
|
ASL compiler.
|
|||
|
|
|||
|
Modified the Resource Manager to allow zero interrupts and
|
|||
|
zero dma channels during the GetCurrentResources call. This
|
|||
|
was causing problems on some platforms.
|
|||
|
|
|||
|
Added the AcpiOsRedirectOutput interface to the OSL to
|
|||
|
simplify output redirection for the AcpiOsPrintf and
|
|||
|
AcpiOsVprintf interfaces.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K
|
|||
|
Total
|
|||
|
Debug Version: 142.9K Code, 58.7K Data, 201.6K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K
|
|||
|
Total
|
|||
|
Debug Version: 149.4K Code, 61.6K Data, 211.0K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Fixed a panic in the EC driver (Dominik Brodowski)
|
|||
|
|
|||
|
Implemented checksum of the R/XSDT itself during Linux table
|
|||
|
scan (Richard Schaal)
|
|||
|
|
|||
|
|
|||
|
3) iASL compiler
|
|||
|
|
|||
|
The AML disassembler is integrated into the compiler. The "-
|
|||
|
d" option invokes the disassembler to completely
|
|||
|
disassemble an input AML file, producing as output a text
|
|||
|
ASL file with the extension ".dsl" (to avoid name collisions
|
|||
|
with existing .asl source files.) A future enhancement will
|
|||
|
allow the disassembler to obtain the BIOS DSDT from the
|
|||
|
registry under Windows.
|
|||
|
|
|||
|
Fixed a problem with the VendorShort and VendorLong resource
|
|||
|
descriptors where an invalid AML sequence was created.
|
|||
|
|
|||
|
Implemented a fix for BufferData term in the ASL parser. It
|
|||
|
was inadvertently defined twice, allowing invalid syntax to
|
|||
|
pass and causing reduction conflicts.
|
|||
|
|
|||
|
Fixed a problem where the Ones opcode could get converted to
|
|||
|
a value of zero if "Ones" was used where a byte, word or
|
|||
|
dword value was expected. The 64-bit value is now truncated
|
|||
|
to the correct size with the correct value.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
02 July 2002. Summary of changes for this release.
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020702:
|
|||
|
|
|||
|
The Table Manager code has been restructured to add several
|
|||
|
new features. Tables that are not required by the core
|
|||
|
subsystem (other than the FADT, DSDT, FACS, PSDTs, etc.) are
|
|||
|
no longer validated in any way and are returned from
|
|||
|
AcpiGetFirmwareTable if requested. The AcpiOsTableOverride
|
|||
|
interface is now called for each table that is loaded by the
|
|||
|
subsystem in order to allow the host to override any table
|
|||
|
it chooses. Previously, only the DSDT could be overridden.
|
|||
|
Added one new files, tbrsdt.c and tbgetall.c.
|
|||
|
|
|||
|
Fixed a problem with the conversion of internal package
|
|||
|
objects to external objects (when a package is returned from
|
|||
|
a control method.) The return buffer length was set to zero
|
|||
|
instead of the proper length of the package object.
|
|||
|
|
|||
|
Fixed a reported problem with the use of the RefOf and
|
|||
|
DeRefOf operators when passing reference arguments to
|
|||
|
control methods. A new type of Reference object is used
|
|||
|
internally for references produced by the RefOf operator.
|
|||
|
|
|||
|
Added additional error messages in the Resource Manager to
|
|||
|
explain AE_BAD_DATA errors when they occur during resource
|
|||
|
parsing.
|
|||
|
|
|||
|
Split the AcpiEnableSubsystem into two primitives to enable
|
|||
|
a finer granularity initialization sequence. These two
|
|||
|
calls should be called in this order: AcpiEnableSubsystem
|
|||
|
(flags), AcpiInitializeObjects (flags). The flags parameter
|
|||
|
remains the same.
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Updated the ACPI utilities module to understand the new
|
|||
|
style of fully resolved package objects that are now
|
|||
|
returned from the core subsystem. This eliminates errors of
|
|||
|
the form:
|
|||
|
|
|||
|
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
|
|||
|
acpi_utils-0430 [145] acpi_evaluate_reference:
|
|||
|
Invalid element in package (not a device reference)
|
|||
|
|
|||
|
The method evaluation utility uses the new buffer allocation
|
|||
|
scheme instead of calling AcpiEvaluate Object twice.
|
|||
|
|
|||
|
Added support for ECDT. This allows the use of the Embedded
|
|||
|
Controller before the namespace has been fully initialized,
|
|||
|
which is necessary for ACPI 2.0 support, and for some
|
|||
|
laptops to initialize properly. (Laptops using ECDT are
|
|||
|
still rare, so only limited testing was performed of the
|
|||
|
added functionality.)
|
|||
|
|
|||
|
Fixed memory leaks in the EC driver.
|
|||
|
|
|||
|
Eliminated a brittle code structure in acpi_bus_init().
|
|||
|
|
|||
|
Eliminated the acpi_evaluate() helper function in utils.c.
|
|||
|
It is no longer needed since acpi_evaluate_object can
|
|||
|
optionally allocate memory for the return object.
|
|||
|
|
|||
|
Implemented fix for keyboard hang when getting battery
|
|||
|
readings on some systems (Stephen White)
|
|||
|
|
|||
|
PCI IRQ routing update (Dominik Brodowski)
|
|||
|
|
|||
|
Fix an ifdef to allow compilation on UP with LAPIC but no
|
|||
|
IOAPIC support
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
11 June 2002. Summary of changes for this release.
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020611:
|
|||
|
|
|||
|
Fixed a reported problem where constants such as Zero and
|
|||
|
One appearing within _PRT packages were not handled
|
|||
|
correctly within the resource manager code. Originally
|
|||
|
reported against the ASL compiler because the code generator
|
|||
|
now optimizes integers to their minimal AML representation
|
|||
|
(i.e. AML constants if possible.) The _PRT code now handles
|
|||
|
all AML constant opcodes correctly (Zero, One, Ones,
|
|||
|
Revision).
|
|||
|
|
|||
|
Fixed a problem with the Concatenate operator in the AML
|
|||
|
interpreter where a buffer result object was incorrectly
|
|||
|
marked as not fully evaluated, causing a run-time error of
|
|||
|
AE_AML_INTERNAL.
|
|||
|
|
|||
|
All package sub-objects are now fully resolved before they
|
|||
|
are returned from the external ACPI interfaces. This means
|
|||
|
that name strings are resolved to object handles, and
|
|||
|
constant operators (Zero, One, Ones, Revision) are resolved
|
|||
|
to Integers.
|
|||
|
|
|||
|
Implemented immediate resolution of the AML Constant opcodes
|
|||
|
(Zero, One, Ones, Revision) to Integer objects upon
|
|||
|
detection within the AML stream. This has simplified and
|
|||
|
reduced the generated code size of the subsystem by
|
|||
|
eliminating about 10 switch statements for these constants
|
|||
|
(which previously were contained in Reference objects.) The
|
|||
|
complicating issues are that the Zero opcode is used as a
|
|||
|
"placeholder" for unspecified optional target operands and
|
|||
|
stores to constants are defined to be no-ops.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K
|
|||
|
Total
|
|||
|
Debug Version: 143.8K Code, 58.8K Data, 202.6K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K
|
|||
|
Total
|
|||
|
Debug Version: 142.9K Code, 58.7K Data, 201.6K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Added preliminary support for obtaining _TRA data for PCI
|
|||
|
root bridges (Bjorn Helgaas).
|
|||
|
|
|||
|
|
|||
|
3) iASL Compiler Version X2046:
|
|||
|
|
|||
|
Fixed a problem where the "_DDN" reserved name was defined
|
|||
|
to be a control method with one argument. There are no
|
|||
|
arguments, and _DDN does not have to be a control method.
|
|||
|
|
|||
|
Fixed a problem with the Linux version of the compiler where
|
|||
|
the source lines printed with error messages were the wrong
|
|||
|
lines. This turned out to be the "LF versus CR/LF"
|
|||
|
difference between Windows and Unix. This appears to be the
|
|||
|
longstanding issue concerning listing output and error
|
|||
|
messages.
|
|||
|
|
|||
|
Fixed a problem with the Linux version of compiler where
|
|||
|
opcode names within error messages were wrong. This was
|
|||
|
caused by a slight difference in the output of the Flex tool
|
|||
|
on Linux versus Windows.
|
|||
|
|
|||
|
Fixed a problem with the Linux compiler where the hex output
|
|||
|
files contained some garbage data caused by an internal
|
|||
|
buffer overrun.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
17 May 2002. Summary of changes for this release.
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020517:
|
|||
|
|
|||
|
Implemented a workaround to an BIOS bug discovered on the HP
|
|||
|
OmniBook where the FADT revision number and the table size
|
|||
|
are inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table
|
|||
|
size). The new behavior is to fallback to using only the
|
|||
|
ACPI 1.0 fields of the FADT if the table is too small to be
|
|||
|
a ACPI 2.0 table as claimed by the revision number.
|
|||
|
Although this is a BIOS bug, this is a case where the
|
|||
|
workaround is simple enough and with no side effects, so it
|
|||
|
seemed prudent to add it. A warning message is issued,
|
|||
|
however.
|
|||
|
|
|||
|
Implemented minimum size checks for the fixed-length ACPI
|
|||
|
tables -- the FADT and FACS, as well as consistency checks
|
|||
|
between the revision number and the table size.
|
|||
|
|
|||
|
Fixed a reported problem in the table override support where
|
|||
|
the new table pointer was incorrectly treated as a physical
|
|||
|
address instead of a logical address.
|
|||
|
|
|||
|
Eliminated the use of the AE_AML_ERROR exception and
|
|||
|
replaced it with more descriptive codes.
|
|||
|
|
|||
|
Fixed a problem where an exception would occur if an ASL
|
|||
|
Field was defined with no named Field Units underneath it
|
|||
|
(used by some index fields).
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K
|
|||
|
Total
|
|||
|
Debug Version: 142.9K Code, 58.4K Data, 201.3K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K
|
|||
|
Total
|
|||
|
Debug Version: 143.8K Code, 58.8K Data, 202.6K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Much work done on ACPI init (MADT and PCI IRQ routing
|
|||
|
support). (Paul D. and Dominik Brodowski)
|
|||
|
|
|||
|
Fix PCI IRQ-related panic on boot (Sam Revitch)
|
|||
|
|
|||
|
Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
|
|||
|
|
|||
|
Fix "MHz" typo (Dominik Brodowski)
|
|||
|
|
|||
|
Fix RTC year 2000 issue (Dominik Brodowski)
|
|||
|
|
|||
|
Preclude multiple button proc entries (Eric Brunet)
|
|||
|
|
|||
|
Moved arch-specific code out of include/platform/aclinux.h
|
|||
|
|
|||
|
3) iASL Compiler Version X2044:
|
|||
|
|
|||
|
Implemented error checking for the string used in the EISAID
|
|||
|
macro (Usually used in the definition of the _HID object.)
|
|||
|
The code now strictly enforces the PnP format - exactly 7
|
|||
|
characters, 3 uppercase letters and 4 hex digits.
|
|||
|
|
|||
|
If a raw string is used in the definition of the _HID object
|
|||
|
(instead of the EISAID macro), the string must contain all
|
|||
|
alphanumeric characters (e.g., "*PNP0011" is not allowed
|
|||
|
because of the asterisk.)
|
|||
|
|
|||
|
Implemented checking for invalid use of ACPI reserved names
|
|||
|
for most of the name creation operators (Name, Device,
|
|||
|
Event, Mutex, OperationRegion, PowerResource, Processor, and
|
|||
|
ThermalZone.) Previously, this check was only performed for
|
|||
|
control methods.
|
|||
|
|
|||
|
Implemented an additional check on the Name operator to emit
|
|||
|
an error if a reserved name that must be implemented in ASL
|
|||
|
as a control method is used. We know that a reserved name
|
|||
|
must be a method if it is defined with input arguments.
|
|||
|
|
|||
|
The warning emitted when a namespace object reference is not
|
|||
|
found during the cross reference phase has been changed into
|
|||
|
an error. The "External" directive should be used for names
|
|||
|
defined in other modules.
|
|||
|
|
|||
|
|
|||
|
4) Tools and Utilities
|
|||
|
|
|||
|
The 16-bit tools (adump16 and aexec16) have been regenerated
|
|||
|
and tested.
|
|||
|
|
|||
|
Fixed a problem with the output of both acpidump and adump16
|
|||
|
where the indentation of closing parentheses and brackets
|
|||
|
was not aligned properly with the parent block.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
03 May 2002. Summary of changes for this release.
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020503:
|
|||
|
|
|||
|
Added support a new OSL interface that allows the host
|
|||
|
operating system software to override the DSDT found in the
|
|||
|
firmware - AcpiOsTableOverride. With this interface, the
|
|||
|
OSL can examine the version of the firmware DSDT and replace
|
|||
|
it with a different one if desired.
|
|||
|
|
|||
|
Added new external interfaces for accessing ACPI registers
|
|||
|
from device drivers and other system software -
|
|||
|
AcpiGetRegister and AcpiSetRegister. This was simply an
|
|||
|
externalization of the existing AcpiHwBitRegister
|
|||
|
interfaces.
|
|||
|
|
|||
|
Fixed a regression introduced in the previous build where
|
|||
|
the ASL/AML CreateField operator always returned an error,
|
|||
|
"destination must be a NS Node".
|
|||
|
|
|||
|
Extended the maximum time (before failure) to successfully
|
|||
|
enable ACPI mode to 3 seconds.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K
|
|||
|
Total
|
|||
|
Debug Version: 142.4K Code, 58.3K Data, 200.7K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K
|
|||
|
Total
|
|||
|
Debug Version: 142.9K Code, 58.4K Data, 201.3K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Enhanced ACPI init code for SMP. We are now fully MPS and
|
|||
|
$PIR-free. While 3 out of 4 of our in-house systems work
|
|||
|
fine, the last one still hangs when testing the LAPIC timer.
|
|||
|
|
|||
|
Renamed many files in 2.5 kernel release to omit "acpi_"
|
|||
|
from the name.
|
|||
|
|
|||
|
Added warning on boot for Presario 711FR.
|
|||
|
|
|||
|
Sleep improvements (Pavel Machek)
|
|||
|
|
|||
|
ACPI can now be built without CONFIG_PCI enabled.
|
|||
|
|
|||
|
IA64: Fixed memory map functions (JI Lee)
|
|||
|
|
|||
|
|
|||
|
3) iASL Compiler Version X2043:
|
|||
|
|
|||
|
Added support to allow the compiler to be integrated into
|
|||
|
the MS VC++ development environment for one-button
|
|||
|
compilation of single files or entire projects -- with error-
|
|||
|
to-source-line mapping.
|
|||
|
|
|||
|
Implemented support for compile-time constant folding for
|
|||
|
the Type3, Type4, and Type5 opcodes first defined in the
|
|||
|
ACPI 2.0 specification. This allows the ASL writer to use
|
|||
|
expressions instead of Integer/Buffer/String constants in
|
|||
|
terms that must evaluate to constants at compile time and
|
|||
|
will also simplify the emitted AML in any such sub-
|
|||
|
expressions that can be folded (evaluated at compile-time.)
|
|||
|
This increases the size of the compiler significantly
|
|||
|
because a portion of the ACPI CA AML interpreter is included
|
|||
|
within the compiler in order to pre-evaluate constant
|
|||
|
expressions.
|
|||
|
|
|||
|
Fixed a problem with the "Unicode" ASL macro that caused the
|
|||
|
compiler to fault. (This macro is used in conjunction with
|
|||
|
the _STR reserved name.)
|
|||
|
|
|||
|
Implemented an AML opcode optimization to use the Zero, One,
|
|||
|
and Ones opcodes where possible to further reduce the size
|
|||
|
of integer constants and thus reduce the overall size of the
|
|||
|
generated AML code.
|
|||
|
|
|||
|
Implemented error checking for new reserved terms for ACPI
|
|||
|
version 2.0A.
|
|||
|
|
|||
|
Implemented the -qr option to display the current list of
|
|||
|
ACPI reserved names known to the compiler.
|
|||
|
|
|||
|
Implemented the -qc option to display the current list of
|
|||
|
ASL operators that are allowed within constant expressions
|
|||
|
and can therefore be folded at compile time if the operands
|
|||
|
are constants.
|
|||
|
|
|||
|
|
|||
|
4) Documentation
|
|||
|
|
|||
|
Updated the Programmer's Reference for new interfaces, data
|
|||
|
types, and memory allocation model options.
|
|||
|
|
|||
|
Updated the iASL Compiler User Reference to apply new format
|
|||
|
and add information about new features and options.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
19 April 2002. Summary of changes for this release.
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020419:
|
|||
|
|
|||
|
The source code base for the Core Subsystem has been
|
|||
|
completely cleaned with PC-lint (FlexLint) for both 32-bit
|
|||
|
and 64-bit versions. The Lint option files used are
|
|||
|
included in the /acpi/generate/lint directory.
|
|||
|
|
|||
|
Implemented enhanced status/error checking across the entire
|
|||
|
Hardware manager subsystem. Any hardware errors (reported
|
|||
|
from the OSL) are now bubbled up and will abort a running
|
|||
|
control method.
|
|||
|
|
|||
|
Fixed a problem where the per-ACPI-table integer width (32
|
|||
|
or 64) was stored only with control method nodes, causing a
|
|||
|
fault when non-control method code was executed during table
|
|||
|
loading. The solution implemented uses a global variable to
|
|||
|
indicate table width across the entire ACPI subsystem.
|
|||
|
Therefore, ACPI CA does not support mixed integer widths
|
|||
|
across different ACPI tables (DSDT, SSDT).
|
|||
|
|
|||
|
Fixed a problem where NULL extended fields (X fields) in an
|
|||
|
ACPI 2.0 ACPI FADT caused the table load to fail. Although
|
|||
|
the existing ACPI specification is a bit fuzzy on this
|
|||
|
topic, the new behavior is to fall back on a ACPI 1.0 field
|
|||
|
if the corresponding ACPI 2.0 X field is zero (even though
|
|||
|
the table revision indicates a full ACPI 2.0 table.) The
|
|||
|
ACPI specification will be updated to clarify this issue.
|
|||
|
|
|||
|
Fixed a problem with the SystemMemory operation region
|
|||
|
handler where memory was always accessed byte-wise even if
|
|||
|
the AML-specified access width was larger than a byte. This
|
|||
|
caused problems on systems with memory-mapped I/O. Memory
|
|||
|
is now accessed with the width specified. On systems that
|
|||
|
do not support non-aligned transfers, a check is made to
|
|||
|
guarantee proper address alignment before proceeding in
|
|||
|
order to avoid an AML-caused alignment fault within the
|
|||
|
kernel.
|
|||
|
|
|||
|
Fixed a problem with the ExtendedIrq resource where only one
|
|||
|
byte of the 4-byte Irq field was extracted.
|
|||
|
|
|||
|
Fixed the AcpiExDigitsNeeded() procedure to support _UID.
|
|||
|
This function was out of date and required a rewrite.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K
|
|||
|
Total
|
|||
|
Debug Version: 139.8K Code, 57.4K Data, 197.2K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K
|
|||
|
Total
|
|||
|
Debug Version: 142.4K Code, 58.3K Data, 200.7K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
PCI IRQ routing fixes (Dominik Brodowski)
|
|||
|
|
|||
|
|
|||
|
3) iASL Compiler Version X2042:
|
|||
|
|
|||
|
Implemented an additional compile-time error check for a
|
|||
|
field unit whose size + minimum access width would cause a
|
|||
|
run-time access beyond the end-of-region. Previously, only
|
|||
|
the field size itself was checked.
|
|||
|
|
|||
|
The Core subsystem and iASL compiler now share a common
|
|||
|
parse object in preparation for compile-time evaluation of
|
|||
|
the type 3/4/5 ASL operators.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this release: 03_29_02
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020329:
|
|||
|
|
|||
|
Implemented support for late evaluation of TermArg operands
|
|||
|
to Buffer and Package objects. This allows complex
|
|||
|
expressions to be used in the declarations of these object
|
|||
|
types.
|
|||
|
|
|||
|
Fixed an ACPI 1.0 compatibility issue when reading Fields.
|
|||
|
In ACPI 1.0, if the field was larger than 32 bits, it was
|
|||
|
returned as a buffer <20> otherwise it was returned as an
|
|||
|
integer. In ACPI 2.0, the field is returned as a buffer
|
|||
|
only if the field is larger than 64 bits. The TableRevision
|
|||
|
is now considered when making this conversion to avoid
|
|||
|
incompatibility with existing ASL code.
|
|||
|
|
|||
|
Implemented logical addressing for AcpiOsGetRootPointer.
|
|||
|
This allows an RSDP with either a logical or physical
|
|||
|
address. With this support, the host OS can now override
|
|||
|
all ACPI tables with one logical RSDP. Includes
|
|||
|
implementation of <20>typed<65> pointer support to allow a common
|
|||
|
data type for both physical and logical pointers internally.
|
|||
|
This required a change to the AcpiOsGetRootPointer
|
|||
|
interface.
|
|||
|
|
|||
|
Implemented the use of ACPI 2.0 Generic Address Structures
|
|||
|
for all GPE, Fixed Event, and PM Timer I/O. This allows the
|
|||
|
use of memory mapped I/O for these ACPI features.
|
|||
|
|
|||
|
Initialization now ignores not only non-required tables (All
|
|||
|
tables other than the FADT, FACS, DSDT, and SSDTs), but also
|
|||
|
does not validate the table headers of unrecognized tables.
|
|||
|
|
|||
|
Fixed a problem where a notify handler could only be
|
|||
|
installed/removed on an object of type Device. All "notify"
|
|||
|
objects are now supported -- Devices, Processor, Power, and
|
|||
|
Thermal.
|
|||
|
|
|||
|
Removed most verbosity from the ACPI_DB_INFO debug level.
|
|||
|
Only critical information is returned when this debug level
|
|||
|
is enabled.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release
|
|||
|
Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K
|
|||
|
Total
|
|||
|
Debug Version: 138.0K Code, 56.6K Data, 194.6K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K
|
|||
|
Total
|
|||
|
Debug Version: 139.8K Code, 57.4K Data, 197.2K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux:
|
|||
|
|
|||
|
The processor driver (acpi_processor.c) now fully supports
|
|||
|
ACPI 2.0-based processor performance control (e.g. Intel(R)
|
|||
|
SpeedStep(TM) technology) Note that older laptops that only
|
|||
|
have the Intel "applet" interface are not supported through
|
|||
|
this. The 'limit' and 'performance' interface (/proc) are
|
|||
|
fully functional. [Note that basic policy for controlling
|
|||
|
performance state transitions will be included in the next
|
|||
|
version of ospmd.] The idle handler was modified to more
|
|||
|
aggressively use C2, and PIIX4 errata handling underwent a
|
|||
|
complete overhaul (big thanks to Dominik Brodowski).
|
|||
|
|
|||
|
Added support for ACPI-PCI device binding (acpi_pci_root.c).
|
|||
|
_ADR-based devices in the ACPI namespace are now dynamically
|
|||
|
bound (associated) with their PCI counterparts (e.g. PCI1-
|
|||
|
>01:00.0). This allows, among other things, ACPI to resolve
|
|||
|
bus numbers for subordinate PCI bridges.
|
|||
|
|
|||
|
Enhanced PCI IRQ routing to get the proper bus number for
|
|||
|
_PRT entries defined underneath PCI bridges.
|
|||
|
|
|||
|
Added IBM 600E to bad bios list due to invalid _ADR value
|
|||
|
for PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ
|
|||
|
routing.
|
|||
|
|
|||
|
In the process of adding full MADT support (e.g. IOAPIC) for
|
|||
|
IA32 (acpi.c, mpparse.c) -- stay tuned.
|
|||
|
|
|||
|
Added back visual differentiation between fixed-feature and
|
|||
|
control-method buttons in dmesg. Buttons are also subtyped
|
|||
|
(e.g. button/power/PWRF) to simplify button identification.
|
|||
|
|
|||
|
We no longer use -Wno-unused when compiling debug. Please
|
|||
|
ignore any "_THIS_MODULE defined but not used" messages.
|
|||
|
|
|||
|
Can now shut down the system using "magic sysrq" key.
|
|||
|
|
|||
|
|
|||
|
3) iASL Compiler version 2041:
|
|||
|
|
|||
|
Fixed a problem where conversion errors for
|
|||
|
hex/octal/decimal constants were not reported.
|
|||
|
|
|||
|
Implemented a fix for the General Register template Address
|
|||
|
field. This field was 8 bits when it should be 64.
|
|||
|
|
|||
|
Fixed a problem where errors/warnings were no longer being
|
|||
|
emitted within the listing output file.
|
|||
|
|
|||
|
Implemented the ACPI 2.0A restriction on ACPI Table
|
|||
|
Signatures to exactly 4 characters, alphanumeric only.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this release: 03_08_02
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem Version 20020308:
|
|||
|
|
|||
|
Fixed a problem with AML Fields where the use of the
|
|||
|
"AccessAny" keyword could cause an interpreter error due to
|
|||
|
attempting to read or write beyond the end of the parent
|
|||
|
Operation Region.
|
|||
|
|
|||
|
Fixed a problem in the SystemMemory Operation Region handler
|
|||
|
where an attempt was made to map memory beyond the end of
|
|||
|
the region. This was the root cause of the "AE_ERROR" and
|
|||
|
"AE_NO_MEMORY" errors on some Linux systems.
|
|||
|
|
|||
|
Fixed a problem where the interpreter/namespace "search to
|
|||
|
root" algorithm was not functioning for some object types.
|
|||
|
Relaxed the internal restriction on the search to allow
|
|||
|
upsearches for all external object types as well as most
|
|||
|
internal types.
|
|||
|
|
|||
|
|
|||
|
2) Linux:
|
|||
|
|
|||
|
We now use safe_halt() macro versus individual calls to sti
|
|||
|
| hlt.
|
|||
|
|
|||
|
Writing to the processor limit interface should now work.
|
|||
|
"echo 1" will increase the limit, 2 will decrease, and 0
|
|||
|
will reset to the default.
|
|||
|
|
|||
|
|
|||
|
3) ASL compiler:
|
|||
|
|
|||
|
Fixed segfault on Linux version.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this release: 02_25_02
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
|
|||
|
Fixed a problem where the GPE bit masks were not initialized
|
|||
|
properly, causing erratic GPE behavior.
|
|||
|
|
|||
|
Implemented limited support for multiple calling
|
|||
|
conventions. The code can be generated with either the VPL
|
|||
|
(variable parameter list, or "C") convention, or the FPL
|
|||
|
(fixed parameter list, or "Pascal") convention. The core
|
|||
|
subsystem is about 3.4% smaller when generated with FPL.
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Re-add some /proc/acpi/event functionality that was lost
|
|||
|
during the rewrite
|
|||
|
|
|||
|
Resolved issue with /proc events for fixed-feature buttons
|
|||
|
showing up as the system device.
|
|||
|
|
|||
|
Fixed checks on C2/C3 latencies to be inclusive of maximum
|
|||
|
values.
|
|||
|
|
|||
|
Replaced AE_ERRORs in acpi_osl.c with more specific error
|
|||
|
codes.
|
|||
|
|
|||
|
Changed ACPI PRT option from "pci=noacpi-routing" to
|
|||
|
"pci=noacpi"
|
|||
|
|
|||
|
Fixed limit interface & usage to fix bugs with passive
|
|||
|
cooling hysterisis.
|
|||
|
|
|||
|
Restructured PRT support.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 02_14_02
|
|||
|
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Implemented support in AcpiLoadTable to allow loading of
|
|||
|
FACS and FADT tables.
|
|||
|
|
|||
|
Suport for the now-obsolete interim 0.71 64-bit ACPI tables
|
|||
|
has been removed. All 64-bit platforms should be migrated
|
|||
|
to the ACPI 2.0 tables. The actbl71.h header has been
|
|||
|
removed from the source tree.
|
|||
|
|
|||
|
All C macros defined within the subsystem have been prefixed
|
|||
|
with "ACPI_" to avoid collision with other system include
|
|||
|
files.
|
|||
|
|
|||
|
Removed the return value for the two AcpiOsPrint interfaces,
|
|||
|
since it is never used and causes lint warnings for ignoring
|
|||
|
the return value.
|
|||
|
|
|||
|
Added error checking to all internal mutex acquire and
|
|||
|
release calls. Although a failure from one of these
|
|||
|
interfaces is probably a fatal system error, these checks
|
|||
|
will cause the immediate abort of the currently executing
|
|||
|
method or interface.
|
|||
|
|
|||
|
Fixed a problem where the AcpiSetCurrentResources interface
|
|||
|
could fault. This was a side effect of the deployment of
|
|||
|
the new memory allocation model.
|
|||
|
|
|||
|
Fixed a couple of problems with the Global Lock support
|
|||
|
introduced in the last major build. The "common" (1.0/2.0)
|
|||
|
internal FACS was being overwritten with the FACS signature
|
|||
|
and clobbering the Global Lock pointer. Also, the actual
|
|||
|
firmware FACS was being unmapped after construction of the
|
|||
|
"common" FACS, preventing access to the actual Global Lock
|
|||
|
field within it. The "common" internal FACS is no longer
|
|||
|
installed as an actual ACPI table; it is used simply as a
|
|||
|
global.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release (02_07_01)
|
|||
|
Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K
|
|||
|
Total
|
|||
|
Debug Version: 136.9K Code, 56.4K Data, 193.3K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K
|
|||
|
Total
|
|||
|
Debug Version: 138.0K Code, 56.6K Data, 194.6K
|
|||
|
Total
|
|||
|
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Updated Linux-specific code for core macro and OSL interface
|
|||
|
changes described above.
|
|||
|
|
|||
|
Improved /proc/acpi/event. It now can be opened only once
|
|||
|
and has proper poll functionality.
|
|||
|
|
|||
|
Fixed and restructured power management (acpi_bus).
|
|||
|
|
|||
|
Only create /proc "view by type" when devices of that class
|
|||
|
exist.
|
|||
|
|
|||
|
Fixed "charging/discharging" bug (and others) in
|
|||
|
acpi_battery.
|
|||
|
|
|||
|
Improved thermal zone code.
|
|||
|
|
|||
|
|
|||
|
3) ASL Compiler, version X2039:
|
|||
|
|
|||
|
Implemented the new compiler restriction on ASL String
|
|||
|
hex/octal escapes to non-null, ASCII values. An error
|
|||
|
results if an invalid value is used. (This will require an
|
|||
|
ACPI 2.0 specification change.)
|
|||
|
|
|||
|
AML object labels that are output to the optional C and ASM
|
|||
|
source are now prefixed with both the ACPI table signature
|
|||
|
and table ID to help guarantee uniqueness within a large
|
|||
|
BIOS project.
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 02_01_02
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
ACPI 2.0 support is complete in the entire Core Subsystem
|
|||
|
and the ASL compiler. All new ACPI 2.0 operators are
|
|||
|
implemented and all other changes for ACPI 2.0 support are
|
|||
|
complete. With simultaneous code and data optimizations
|
|||
|
throughout the subsystem, ACPI 2.0 support has been
|
|||
|
implemented with almost no additional cost in terms of code
|
|||
|
and data size.
|
|||
|
|
|||
|
Implemented a new mechanism for allocation of return
|
|||
|
buffers. If the buffer length is set to
|
|||
|
ACPI_ALLOCATE_BUFFER, the buffer will be allocated on behalf
|
|||
|
of the caller. Consolidated all return buffer validation
|
|||
|
and allocation to a common procedure. Return buffers will
|
|||
|
be allocated via the primary OSL allocation interface since
|
|||
|
it appears that a separate pool is not needed by most users.
|
|||
|
If a separate pool is required for these buffers, the caller
|
|||
|
can still use the original mechanism and pre-allocate the
|
|||
|
buffer(s).
|
|||
|
|
|||
|
Implemented support for string operands within the DerefOf
|
|||
|
operator.
|
|||
|
|
|||
|
Restructured the Hardware and Event managers to be table
|
|||
|
driven, simplifying the source code and reducing the amount
|
|||
|
of generated code.
|
|||
|
|
|||
|
Split the common read/write low-level ACPI register bitfield
|
|||
|
procedure into a separate read and write, simplifying the
|
|||
|
code considerably.
|
|||
|
|
|||
|
Obsoleted the AcpiOsCallocate OSL interface. This interface
|
|||
|
was used only a handful of times and didn't have enough
|
|||
|
critical mass for a separate interface. Replaced with a
|
|||
|
common calloc procedure in the core.
|
|||
|
|
|||
|
Fixed a reported problem with the GPE number mapping
|
|||
|
mechanism that allows GPE1 numbers to be non-contiguous with
|
|||
|
GPE0. Reorganized the GPE information and shrunk a large
|
|||
|
array that was originally large enough to hold info for all
|
|||
|
possible GPEs (256) to simply large enough to hold all GPEs
|
|||
|
up to the largest GPE number on the machine.
|
|||
|
|
|||
|
Fixed a reported problem with resource structure alignment
|
|||
|
on 64-bit platforms.
|
|||
|
|
|||
|
Changed the AcpiEnableEvent and AcpiDisableEvent external
|
|||
|
interfaces to not require any flags for the common case of
|
|||
|
enabling/disabling a GPE.
|
|||
|
|
|||
|
Implemented support to allow a "Notify" on a Processor
|
|||
|
object.
|
|||
|
|
|||
|
Most TBDs in comments within the source code have been
|
|||
|
resolved and eliminated.
|
|||
|
|
|||
|
Fixed a problem in the interpreter where a standalone parent
|
|||
|
prefix (^) was not handled correctly in the interpreter and
|
|||
|
debugger.
|
|||
|
|
|||
|
Removed obsolete and unnecessary GPE save/restore code.
|
|||
|
|
|||
|
Implemented Field support in the ASL Load operator. This
|
|||
|
allows a table to be loaded from a named field, in addition
|
|||
|
to loading a table directly from an Operation Region.
|
|||
|
|
|||
|
Implemented timeout and handle support in the external
|
|||
|
Global Lock interfaces.
|
|||
|
|
|||
|
Fixed a problem in the AcpiDump utility where pathnames were
|
|||
|
no longer being generated correctly during the dump of named
|
|||
|
objects.
|
|||
|
|
|||
|
Modified the AML debugger to give a full display of if/while
|
|||
|
predicates instead of just one AML opcode at a time. (The
|
|||
|
predicate can have several nested ASL statements.) The old
|
|||
|
method was confusing during single stepping.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release (12_18_01)
|
|||
|
Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K
|
|||
|
Total
|
|||
|
Debug Version: 138.3K Code, 55.9K Data, 194.2K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K
|
|||
|
Total
|
|||
|
Debug Version: 136.9K Code, 56.4K Data, 193.3K
|
|||
|
Total
|
|||
|
|
|||
|
2) Linux
|
|||
|
|
|||
|
Implemented fix for PIIX reverse throttling errata
|
|||
|
(Processor driver)
|
|||
|
|
|||
|
Added new Limit interface (Processor and Thermal drivers)
|
|||
|
|
|||
|
New thermal policy (Thermal driver)
|
|||
|
|
|||
|
Many updates to /proc
|
|||
|
|
|||
|
Battery "low" event support (Battery driver)
|
|||
|
|
|||
|
Supports ACPI PCI IRQ routing (PCI Link and PCI root
|
|||
|
drivers)
|
|||
|
|
|||
|
IA32 - IA64 initialization unification, no longer
|
|||
|
experimental
|
|||
|
|
|||
|
Menuconfig options redesigned
|
|||
|
|
|||
|
3) ASL Compiler, version X2037:
|
|||
|
|
|||
|
Implemented several new output features to simplify
|
|||
|
integration of AML code into firmware: 1) Output the AML in
|
|||
|
C source code with labels for each named ASL object. The
|
|||
|
original ASL source code is interleaved as C comments. 2)
|
|||
|
Output the AML in ASM source code with labels and
|
|||
|
interleaved ASL source. 3) Output the AML in raw hex
|
|||
|
table form, in either C or ASM.
|
|||
|
|
|||
|
Implemented support for optional string parameters to the
|
|||
|
LoadTable operator.
|
|||
|
|
|||
|
Completed support for embedded escape sequences within
|
|||
|
string literals. The compiler now supports all single
|
|||
|
character escapes as well as the Octal and Hex escapes.
|
|||
|
Note: the insertion of a null byte into a string literal
|
|||
|
(via the hex/octal escape) causes the string to be
|
|||
|
immediately terminated. A warning is issued.
|
|||
|
|
|||
|
Fixed a problem where incorrect AML was generated for the
|
|||
|
case where an ASL namepath consists of a single parent
|
|||
|
prefix (
|
|||
|
|
|||
|
) with no trailing name segments.
|
|||
|
|
|||
|
The compiler has been successfully generated with a 64-bit C
|
|||
|
compiler.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 12_18_01
|
|||
|
|
|||
|
1) Linux
|
|||
|
|
|||
|
Enhanced blacklist with reason and severity fields. Any
|
|||
|
table's signature may now be used to identify a blacklisted
|
|||
|
system.
|
|||
|
|
|||
|
Call _PIC control method to inform the firmware which
|
|||
|
interrupt model the OS is using. Turn on any disabled link
|
|||
|
devices.
|
|||
|
|
|||
|
Cleaned up busmgr /proc error handling (Andreas Dilger)
|
|||
|
|
|||
|
2) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Implemented ACPI 2.0 semantics for the "Break" operator
|
|||
|
(Exit from while loop)
|
|||
|
|
|||
|
Completed implementation of the ACPI 2.0 "Continue",
|
|||
|
"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
|
|||
|
operators. All new ACPI 2.0 operators are now implemented
|
|||
|
in both the ASL compiler and the AML interpreter. The only
|
|||
|
remaining ACPI 2.0 task is support for the String data type
|
|||
|
in the DerefOf operator. Fixed a problem with AcquireMutex
|
|||
|
where the status code was lost if the caller had to actually
|
|||
|
wait for the mutex.
|
|||
|
|
|||
|
Increased the maximum ASL Field size from 64K bits to 4G
|
|||
|
bits.
|
|||
|
|
|||
|
Completed implementation of the external Global Lock
|
|||
|
interfaces -- AcpiAcquireGlobalLock and
|
|||
|
AcpiReleaseGlobalLock. The Timeout and Handler parameters
|
|||
|
were added.
|
|||
|
|
|||
|
Completed another pass at removing warnings and issues when
|
|||
|
compiling with 64-bit compilers. The code now compiles
|
|||
|
cleanly with the Intel 64-bit C/C++ compiler. Most notably,
|
|||
|
the pointer add and subtract (diff) macros have changed
|
|||
|
considerably.
|
|||
|
|
|||
|
Created and deployed a new ACPI_SIZE type that is 64-bits
|
|||
|
wide on 64-bit platforms, 32-bits on all others. This type
|
|||
|
is used wherever memory allocation and/or the C sizeof()
|
|||
|
operator is used, and affects the OSL memory allocation
|
|||
|
interfaces AcpiOsAllocate and AcpiOsCallocate.
|
|||
|
|
|||
|
Implemented sticky user breakpoints in the AML debugger.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release (12_05_01)
|
|||
|
Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K
|
|||
|
Total
|
|||
|
Debug Version: 136.2K Code, 55.6K Data, 191.8K
|
|||
|
Total
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K
|
|||
|
Total
|
|||
|
Debug Version: 138.3K Code, 55.9K Data, 194.2K
|
|||
|
Total
|
|||
|
|
|||
|
3) ASL Compiler, version X2034:
|
|||
|
|
|||
|
Now checks for (and generates an error if detected) the use
|
|||
|
of a Break or Continue statement without an enclosing While
|
|||
|
statement.
|
|||
|
|
|||
|
Successfully generated the compiler with the Intel 64-bit C
|
|||
|
compiler.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 12_05_01
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
The ACPI 2.0 CopyObject operator is fully implemented. This
|
|||
|
operator creates a new copy of an object (and is also used
|
|||
|
to bypass the "implicit conversion" mechanism of the Store
|
|||
|
operator.)
|
|||
|
|
|||
|
The ACPI 2.0 semantics for the SizeOf operator are fully
|
|||
|
implemented. The change is that performing a SizeOf on a
|
|||
|
reference object causes an automatic dereference of the
|
|||
|
object to tha actual value before the size is evaluated.
|
|||
|
This behavior was undefined in ACPI 1.0.
|
|||
|
|
|||
|
The ACPI 2.0 semantics for the Extended IRQ resource
|
|||
|
descriptor have been implemented. The interrupt polarity
|
|||
|
and mode are now independently set.
|
|||
|
|
|||
|
Fixed a problem where ASL Constants (Zero, One, Ones,
|
|||
|
Revision) appearing in Package objects were not properly
|
|||
|
converted to integers when the internal Package was
|
|||
|
converted to an external object (via the AcpiEvaluateObject
|
|||
|
interface.)
|
|||
|
|
|||
|
Fixed a problem with the namespace object deletion mechanism
|
|||
|
for objects created by control methods. There were two
|
|||
|
parts to this problem: 1) Objects created during the
|
|||
|
initialization phase method parse were not being deleted,
|
|||
|
and 2) The object owner ID mechanism to track objects was
|
|||
|
broken.
|
|||
|
|
|||
|
Fixed a problem where the use of the ASL Scope operator
|
|||
|
within a control method would result in an invalid opcode
|
|||
|
exception.
|
|||
|
|
|||
|
Fixed a problem introduced in the previous label where the
|
|||
|
buffer length required for the _PRT structure was not being
|
|||
|
returned correctly.
|
|||
|
|
|||
|
Code and Data Size: Current core subsystem library sizes are
|
|||
|
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 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.
|
|||
|
|
|||
|
Previous Release (11_20_01)
|
|||
|
Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K
|
|||
|
Total
|
|||
|
Debug Version: 135.1K Code, 55.4K Data, 190.5K
|
|||
|
Total
|
|||
|
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K
|
|||
|
Total
|
|||
|
Debug Version: 136.2K Code, 55.6K Data, 191.8K
|
|||
|
Total
|
|||
|
|
|||
|
2) Linux:
|
|||
|
|
|||
|
Updated all files to apply cleanly against 2.4.16.
|
|||
|
|
|||
|
Added basic PCI Interrupt Routing Table (PRT) support for
|
|||
|
IA32 (acpi_pci.c), and unified the PRT code for IA32 and
|
|||
|
IA64. This version supports both static and dyanmic PRT
|
|||
|
entries, but dynamic entries are treated as if they were
|
|||
|
static (not yet reconfigurable). Architecture- specific
|
|||
|
code to use this data is absent on IA32 but should be
|
|||
|
available shortly.
|
|||
|
|
|||
|
Changed the initialization sequence to start the ACPI
|
|||
|
interpreter (acpi_init) prior to initialization of the PCI
|
|||
|
driver (pci_init) in init/main.c. This ordering is required
|
|||
|
to support PRT and facilitate other (future) enhancement. A
|
|||
|
side effect is that the ACPI bus driver and certain device
|
|||
|
drivers can no longer be loaded as modules.
|
|||
|
|
|||
|
Modified the 'make menuconfig' options to allow PCI
|
|||
|
Interrupt Routing support to be included without the ACPI
|
|||
|
Bus and other device drivers.
|
|||
|
|
|||
|
3) ASL Compiler, version X2033:
|
|||
|
|
|||
|
Fixed some issues with the use of the new CopyObject and
|
|||
|
DataTableRegion operators. Both are fully functional.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 11_20_01
|
|||
|
|
|||
|
20 November 2001. Summary of changes for this release.
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Updated Index support to match ACPI 2.0 semantics. Storing
|
|||
|
a Integer, String, or Buffer to an Index of a Buffer will
|
|||
|
store only the least-significant byte of the source to the
|
|||
|
Indexed buffer byte. Multiple writes are not performed.
|
|||
|
|
|||
|
Fixed a problem where the access type used in an AccessAs
|
|||
|
ASL operator was not recorded correctly into the field
|
|||
|
object.
|
|||
|
|
|||
|
Fixed a problem where ASL Event objects were created in a
|
|||
|
signalled state. Events are now created in an unsignalled
|
|||
|
state.
|
|||
|
|
|||
|
The internal object cache is now purged after table loading
|
|||
|
and initialization to reduce the use of dynamic kernel
|
|||
|
memory -- on the assumption that object use is greatest
|
|||
|
during the parse phase of the entire table (versus the run-
|
|||
|
time use of individual control methods.)
|
|||
|
|
|||
|
ACPI 2.0 variable-length packages are now fully operational.
|
|||
|
|
|||
|
Code and Data Size: Code and Data optimizations have
|
|||
|
permitted new feature development with an actual reduction
|
|||
|
in the library size. Current core subsystem library sizes
|
|||
|
are 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 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.
|
|||
|
|
|||
|
Previous Release (11_09_01):
|
|||
|
Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K
|
|||
|
Total
|
|||
|
Debug Version: 134.5K Code, 55.4K Data, 189.9K
|
|||
|
Total
|
|||
|
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K
|
|||
|
Total
|
|||
|
Debug Version: 135.1K Code, 55.4K Data, 190.5K
|
|||
|
Total
|
|||
|
|
|||
|
2) Linux:
|
|||
|
|
|||
|
Enhanced the ACPI boot-time initialization code to allow the
|
|||
|
use of Local APIC tables for processor enumeration on IA-32,
|
|||
|
and to pave the way for a fully MPS-free boot (on SMP
|
|||
|
systems) in the near future. This functionality replaces
|
|||
|
arch/i386/kernel/acpitables.c, which was introduced in an
|
|||
|
earlier 2.4.15-preX release. To enable this feature you
|
|||
|
must add "acpi_boot=on" to the kernel command line -- see
|
|||
|
the help entry for CONFIG_ACPI_BOOT for more information.
|
|||
|
An IA-64 release is in the works...
|
|||
|
|
|||
|
Restructured the configuration options to allow boot-time
|
|||
|
table parsing support without inclusion of the ACPI
|
|||
|
Interpreter (and other) code.
|
|||
|
|
|||
|
NOTE: This release does not include fixes for the reported
|
|||
|
events, power-down, and thermal passive cooling issues
|
|||
|
(coming soon).
|
|||
|
|
|||
|
3) ASL Compiler:
|
|||
|
|
|||
|
Added additional typechecking for Fields within restricted
|
|||
|
access Operation Regions. All fields within EC and CMOS
|
|||
|
regions must be declared with ByteAcc. All fields withing
|
|||
|
SMBus regions must be declared with the BufferAcc access
|
|||
|
type.
|
|||
|
|
|||
|
Fixed a problem where the listing file output of control
|
|||
|
methods no longer interleaved the actual AML code with the
|
|||
|
ASL source code.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 11_09_01
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Implemented ACPI 2.0-defined support for writes to fields
|
|||
|
with a Buffer, String, or Integer source operand that is
|
|||
|
smaller than the target field. In these cases, the source
|
|||
|
operand is zero-extended to fill the target field.
|
|||
|
|
|||
|
Fixed a problem where a Field starting bit offset (within
|
|||
|
the parent operation region) was calculated incorrectly if
|
|||
|
the alignment of the field differed from the access width.
|
|||
|
This affected CreateWordField, CreateDwordField,
|
|||
|
CreateQwordField, and possibly other fields that use the
|
|||
|
"AccessAny" keyword.
|
|||
|
|
|||
|
Fixed a problem introduced in the 11_02_01 release where
|
|||
|
indirect stores through method arguments did not operate
|
|||
|
correctly.
|
|||
|
|
|||
|
2) Linux:
|
|||
|
|
|||
|
Implemented boot-time ACPI table parsing support
|
|||
|
(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This
|
|||
|
code facilitates the use of ACPI tables (e.g. MADT, SRAT)
|
|||
|
rather than legacy BIOS interfaces (e.g. MPS) for the
|
|||
|
configuration of system processors, memory, and interrupts
|
|||
|
during setup_arch(). Note that this patch does not include
|
|||
|
the required architecture-specific changes required to apply
|
|||
|
this information -- subsequent patches will be posted for
|
|||
|
both IA32 and IA64 to achieve this.
|
|||
|
|
|||
|
Added low-level sleep support for IA32 platforms, courtesy
|
|||
|
of Pat Mochel. This allows IA32 systems to transition
|
|||
|
to/from various sleeping states (e.g. S1, S3), although the
|
|||
|
lack of a centralized driver model and power-manageable
|
|||
|
drivers will prevent its (successful) use on most systems.
|
|||
|
|
|||
|
Revamped the ACPI 'menuconfig' layout: created new "ACPI
|
|||
|
Support" submenu, unified IA32 and IA64 options, added new
|
|||
|
"Boot using ACPI tables" option, etc.
|
|||
|
|
|||
|
Increased the default timeout for the EC driver from 1ms to
|
|||
|
10ms (1000 cycles of 10us) to try to address AE_TIME errors
|
|||
|
during EC transactions.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 11_02_01
|
|||
|
|
|||
|
1) ACPI CA Core Subsystem:
|
|||
|
|
|||
|
ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
|
|||
|
(QWordAcc keyword). All ACPI 2.0 64-bit support is now
|
|||
|
implemented.
|
|||
|
|
|||
|
OSL Interfaces: Several of the OSL (AcpiOs*) interfaces
|
|||
|
required changes to support ACPI 2.0 Qword field access.
|
|||
|
Read/Write PciConfiguration(), Read/Write Memory(), and
|
|||
|
Read/Write Port() now accept an ACPI_INTEGER (64 bits) as
|
|||
|
the value parameter. Also, the value parameter for the
|
|||
|
address space handler interface is now an ACPI_INTEGER. OSL
|
|||
|
implementations of these interfaces must now handle the case
|
|||
|
where the Width parameter is 64.
|
|||
|
|
|||
|
Index Fields: Fixed a problem where unaligned bit assembly
|
|||
|
and disassembly for IndexFields was not supported correctly.
|
|||
|
|
|||
|
Index and Bank Fields: Nested Index and Bank Fields are now
|
|||
|
supported. During field access, a check is performed to
|
|||
|
ensure that the value written to an Index or Bank register
|
|||
|
is not out of the range of the register. The Index (or
|
|||
|
Bank) register is written before each access to the field
|
|||
|
data. Future support will include allowing individual
|
|||
|
IndexFields to be wider than the DataRegister width.
|
|||
|
|
|||
|
Fields: Fixed a problem where the AML interpreter was
|
|||
|
incorrectly attempting to write beyond the end of a
|
|||
|
Field/OpRegion. This was a boundary case that occurred when
|
|||
|
a DWORD field was written to a BYTE access OpRegion, forcing
|
|||
|
multiple writes and causing the interpreter to write one
|
|||
|
datum too many.
|
|||
|
|
|||
|
Fields: Fixed a problem with Field/OpRegion access where the
|
|||
|
starting bit address of a field was incorrectly calculated
|
|||
|
if the current access type was wider than a byte (WordAcc,
|
|||
|
DwordAcc, or QwordAcc).
|
|||
|
|
|||
|
Fields: Fixed a problem where forward references to
|
|||
|
individual FieldUnits (individual Field names within a Field
|
|||
|
definition) were not resolved during the AML table load.
|
|||
|
|
|||
|
Fields: Fixed a problem where forward references from a
|
|||
|
Field definition to the parent Operation Region definition
|
|||
|
were not resolved during the AML table load.
|
|||
|
|
|||
|
Fields: Duplicate FieldUnit names within a scope are now
|
|||
|
detected during AML table load.
|
|||
|
|
|||
|
Acpi Interfaces: Fixed a problem where the AcpiGetName()
|
|||
|
interface returned an incorrect name for the root node.
|
|||
|
|
|||
|
Code and Data Size: Code and Data optimizations have
|
|||
|
permitted new feature development with an actual reduction
|
|||
|
in the library size. Current core subsystem library sizes
|
|||
|
are 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 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.
|
|||
|
|
|||
|
Previous Release (10_18_01):
|
|||
|
Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K
|
|||
|
Total
|
|||
|
Debug Version: 136.7K Code, 57.4K Data, 194.2K
|
|||
|
Total
|
|||
|
|
|||
|
Current Release:
|
|||
|
Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K
|
|||
|
Total
|
|||
|
Debug Version: 134.5K Code, 55.4K Data, 189.9K
|
|||
|
Total
|
|||
|
|
|||
|
2) Linux:
|
|||
|
|
|||
|
Improved /proc processor output (Pavel Machek) Re-added
|
|||
|
MODULE_LICENSE("GPL") to all modules.
|
|||
|
|
|||
|
3) ASL Compiler version X2030:
|
|||
|
|
|||
|
Duplicate FieldUnit names within a scope are now detected
|
|||
|
and flagged as errors.
|
|||
|
|
|||
|
4) Documentation:
|
|||
|
|
|||
|
Programmer Reference updated to reflect OSL and address
|
|||
|
space handler interface changes described above.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 10_18_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Fixed a problem with the internal object reference count
|
|||
|
mechanism that occasionally caused premature object
|
|||
|
deletion. This resolves all of the outstanding problem
|
|||
|
reports where an object is deleted in the middle of an
|
|||
|
interpreter evaluation. Although this problem only showed
|
|||
|
up in rather obscure cases, the solution to the problem
|
|||
|
involved an adjustment of all reference counts involving
|
|||
|
objects attached to namespace nodes.
|
|||
|
|
|||
|
Fixed a problem with Field support in the interpreter where
|
|||
|
writing to an aligned field whose length is an exact
|
|||
|
multiple (2 or greater) of the field access granularity
|
|||
|
would cause an attempt to write beyond the end of the field.
|
|||
|
|
|||
|
The top level AML opcode execution functions within the
|
|||
|
interpreter have been renamed with a more meaningful and
|
|||
|
consistent naming convention. The modules exmonad.c and
|
|||
|
exdyadic.c were eliminated. New modules are exoparg1.c,
|
|||
|
exoparg2.c, exoparg3.c, and exoparg6.c.
|
|||
|
|
|||
|
Support for the ACPI 2.0 "Mid" ASL operator has been
|
|||
|
implemented.
|
|||
|
|
|||
|
Fixed a problem where the AML debugger was causing some
|
|||
|
internal objects to not be deleted during subsystem
|
|||
|
termination.
|
|||
|
|
|||
|
Fixed a problem with the external AcpiEvaluateObject
|
|||
|
interface where the subsystem would fault if the named
|
|||
|
object to be evaluated refered to a constant such as Zero,
|
|||
|
Ones, etc.
|
|||
|
|
|||
|
Fixed a problem with IndexFields and BankFields where the
|
|||
|
subsystem would fault if the index, data, or bank registers
|
|||
|
were not defined in the same scope as the field itself.
|
|||
|
|
|||
|
Added printf format string checking for compilers that
|
|||
|
support this feature. Corrected more than 50 instances of
|
|||
|
issues with format specifiers within invocations of
|
|||
|
ACPI_DEBUG_PRINT throughout the core subsystem code.
|
|||
|
|
|||
|
The ASL "Revision" operator now returns the ACPI support
|
|||
|
level implemented in the core - the value "2" since the ACPI
|
|||
|
2.0 support is more than 50% implemented.
|
|||
|
|
|||
|
Enhanced the output of the AML debugger "dump namespace"
|
|||
|
command to output in a more human-readable form.
|
|||
|
|
|||
|
Current core subsystem library code sizes are 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 full debug trace
|
|||
|
mechanism -- leading to 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.
|
|||
|
|
|||
|
Previous Label (09_20_01):
|
|||
|
Non-Debug Version: 65K Code, 5K Data, 70K
|
|||
|
Total
|
|||
|
Debug Version: 138K Code, 58K Data, 196K
|
|||
|
Total
|
|||
|
|
|||
|
This Label:
|
|||
|
Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K
|
|||
|
Total
|
|||
|
Debug Version: 136.7K Code, 57.4K Data, 194.2K
|
|||
|
Total
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Implemented a "Bad BIOS Blacklist" to track machines that
|
|||
|
have known ASL/AML problems.
|
|||
|
|
|||
|
Enhanced the /proc interface for the thermal zone driver and
|
|||
|
added support for _HOT (the critical suspend trip point).
|
|||
|
The 'info' file now includes threshold/policy information,
|
|||
|
and allows setting of _SCP (cooling preference) and _TZP
|
|||
|
(polling frequency) values to the 'info' file. Examples:
|
|||
|
"echo tzp=5 > info" sets the polling frequency to 5 seconds,
|
|||
|
and "echo scp=1 > info" sets the cooling preference to the
|
|||
|
passive/quiet mode (if supported by the ASL).
|
|||
|
|
|||
|
Implemented a workaround for a gcc bug that resuted in an
|
|||
|
OOPs when loading the control method battery driver.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 09_20_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
The AcpiEnableEvent and AcpiDisableEvent interfaces have
|
|||
|
been modified to allow individual GPE levels to be flagged
|
|||
|
as wake-enabled (i.e., these GPEs are to remain enabled when
|
|||
|
the platform sleeps.)
|
|||
|
|
|||
|
The AcpiEnterSleepState and AcpiLeaveSleepState interfaces
|
|||
|
now support wake-enabled GPEs. This means that upon
|
|||
|
entering the sleep state, all GPEs that are not wake-enabled
|
|||
|
are disabled. When leaving the sleep state, these GPEs are
|
|||
|
reenabled.
|
|||
|
|
|||
|
A local double-precision divide/modulo module has been added
|
|||
|
to enhance portability to OS kernels where a 64-bit math
|
|||
|
library is not available. The new module is "utmath.c".
|
|||
|
|
|||
|
Several optimizations have been made to reduce the use of
|
|||
|
CPU stack. Originally over 2K, the maximum stack usage is
|
|||
|
now below 2K at 1860 bytes (1.82k)
|
|||
|
|
|||
|
Fixed a problem with the AcpiGetFirmwareTable interface
|
|||
|
where the root table pointer was not mapped into a logical
|
|||
|
address properly.
|
|||
|
|
|||
|
Fixed a problem where a NULL pointer was being dereferenced
|
|||
|
in the interpreter code for the ASL Notify operator.
|
|||
|
|
|||
|
Fixed a problem where the use of the ASL Revision operator
|
|||
|
returned an error. This operator now returns the current
|
|||
|
version of the ACPI CA core subsystem.
|
|||
|
|
|||
|
Fixed a problem where objects passed as control method
|
|||
|
parameters to AcpiEvaluateObject were always deleted at
|
|||
|
method termination. However, these objects may end up being
|
|||
|
stored into the namespace by the called method. The object
|
|||
|
reference count mechanism was applied to these objects
|
|||
|
instead of a force delete.
|
|||
|
|
|||
|
Fixed a problem where static strings or buffers (contained
|
|||
|
in the AML code) that are declared as package elements
|
|||
|
within the ASL code could cause a fault because the
|
|||
|
interpreter would attempt to delete them. These objects are
|
|||
|
now marked with the "static object" flag to prevent any
|
|||
|
attempt to delete them.
|
|||
|
|
|||
|
Implemented an interpreter optimization to use operands
|
|||
|
directly from the state object instead of extracting the
|
|||
|
operands to local variables. This reduces stack use and
|
|||
|
code size, and improves performance.
|
|||
|
|
|||
|
The module exxface.c was eliminated as it was an unnecessary
|
|||
|
extra layer of code.
|
|||
|
|
|||
|
Current core subsystem library code sizes are 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 full debug trace
|
|||
|
mechanism -- leading to 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.
|
|||
|
|
|||
|
Non-Debug Version: 65K Code, 5K Data, 70K Total
|
|||
|
(Previously 69K) Debug Version: 138K Code, 58K Data,
|
|||
|
196K Total (Previously 195K)
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Support for ACPI 2.0 64-bit integers has been added. All
|
|||
|
ACPI Integer objects are now 64 bits wide
|
|||
|
|
|||
|
All Acpi data types and structures are now in lower case.
|
|||
|
Only Acpi macros are upper case for differentiation.
|
|||
|
|
|||
|
Documentation:
|
|||
|
|
|||
|
Changes to the external interfaces as described above.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 08_31_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
A bug with interpreter implementation of the ASL Divide
|
|||
|
operator was found and fixed. The implicit function return
|
|||
|
value (not the explicit store operands) was returning the
|
|||
|
remainder instead of the quotient. This was a longstanding
|
|||
|
bug and it fixes several known outstanding issues on various
|
|||
|
platforms.
|
|||
|
|
|||
|
The ACPI_DEBUG_PRINT and function trace entry/exit macros
|
|||
|
have been further optimized for size. There are 700
|
|||
|
invocations of the DEBUG_PRINT macro alone, so each
|
|||
|
optimization reduces the size of the debug version of the
|
|||
|
subsystem significantly.
|
|||
|
|
|||
|
A stack trace mechanism has been implemented. The maximum
|
|||
|
stack usage is about 2K on 32-bit platforms. The debugger
|
|||
|
command "stat stack" will display the current maximum stack
|
|||
|
usage.
|
|||
|
|
|||
|
All public symbols and global variables within the subsystem
|
|||
|
are now prefixed with the string "Acpi". This keeps all of
|
|||
|
the symbols grouped together in a kernel map, and avoids
|
|||
|
conflicts with other kernel subsystems.
|
|||
|
|
|||
|
Most of the internal fixed lookup tables have been moved
|
|||
|
into the code segment via the const operator.
|
|||
|
|
|||
|
Several enhancements have been made to the interpreter to
|
|||
|
both reduce the code size and improve performance.
|
|||
|
|
|||
|
Current core subsystem library code sizes are 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 full debug trace
|
|||
|
mechanism which contains over 700 invocations of the
|
|||
|
DEBUG_PRINT macro, 500 function entry macro invocations, and
|
|||
|
over 900 function exit macro invocations -- leading to 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.
|
|||
|
|
|||
|
Non-Debug Version: 64K Code, 5K Data, 69K Total
|
|||
|
Debug Version: 137K Code, 58K Data, 195K Total
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Implemented wbinvd() macro, pending a kernel-wide
|
|||
|
definition.
|
|||
|
|
|||
|
Fixed /proc/acpi/event to handle poll() and short reads.
|
|||
|
|
|||
|
ASL Compiler, version X2026:
|
|||
|
|
|||
|
Fixed a problem introduced in the previous label where the
|
|||
|
AML code emitted for package objects produced packages with
|
|||
|
zero length.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 08_16_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
The following ACPI 2.0 ASL operators have been implemented
|
|||
|
in the AML interpreter (These are already supported by the
|
|||
|
Intel ASL compiler): ToDecimalString, ToHexString,
|
|||
|
ToString, ToInteger, and ToBuffer. Support for 64-bit AML
|
|||
|
constants is implemented in the AML parser, debugger, and
|
|||
|
disassembler.
|
|||
|
|
|||
|
The internal memory tracking mechanism (leak detection code)
|
|||
|
has been upgraded to reduce the memory overhead (a separate
|
|||
|
tracking block is no longer allocated for each memory
|
|||
|
allocation), and now supports all of the internal object
|
|||
|
caches.
|
|||
|
|
|||
|
The data structures and code for the internal object caches
|
|||
|
have been coelesced and optimized so that there is a single
|
|||
|
cache and memory list data structure and a single group of
|
|||
|
functions that implement generic cache management. This has
|
|||
|
reduced the code size in both the debug and release versions
|
|||
|
of the subsystem.
|
|||
|
|
|||
|
The DEBUG_PRINT macro(s) have been optimized for size and
|
|||
|
replaced by ACPI_DEBUG_PRINT. The syntax for this macro is
|
|||
|
slightly different, because it generates a single call to an
|
|||
|
internal function. This results in a savings of about 90
|
|||
|
bytes per invocation, resulting in an overall code and data
|
|||
|
savings of about 16% in the debug version of the subsystem.
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Fixed C3 disk corruption problems and re-enabled C3 on
|
|||
|
supporting machines.
|
|||
|
|
|||
|
Integrated low-level sleep code by Patrick Mochel.
|
|||
|
|
|||
|
Further tweaked source code Linuxization.
|
|||
|
|
|||
|
Other minor fixes.
|
|||
|
|
|||
|
ASL Compiler:
|
|||
|
|
|||
|
Support for ACPI 2.0 variable length packages is
|
|||
|
fixed/completed.
|
|||
|
|
|||
|
Fixed a problem where the optional length parameter for the
|
|||
|
ACPI 2.0 ToString operator.
|
|||
|
|
|||
|
Fixed multiple extraneous error messages when a syntax error
|
|||
|
is detected within the declaration line of a control method.
|
|||
|
|
|||
|
----------------------------------------
|
|||
|
Summary of changes for this label: 07_17_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Added a new interface named AcpiGetFirmwareTable to obtain
|
|||
|
any ACPI table via the ACPI signature. The interface can be
|
|||
|
called at any time during kernel initialization, even before
|
|||
|
the kernel virtual memory manager is initialized and paging
|
|||
|
is enabled. This allows kernel subsystems to obtain ACPI
|
|||
|
tables very early, even before the ACPI CA subsystem is
|
|||
|
initialized.
|
|||
|
|
|||
|
Fixed a problem where Fields defined with the AnyAcc
|
|||
|
attribute could be resolved to the incorrect address under
|
|||
|
the following conditions: 1) the field width is larger than
|
|||
|
8 bits and 2) the parent operation region is not defined on
|
|||
|
a DWORD boundary.
|
|||
|
|
|||
|
Fixed a problem where the interpreter is not being locked
|
|||
|
during namespace initialization (during execution of the
|
|||
|
_INI control methods), causing an error when an attempt is
|
|||
|
made to release it later.
|
|||
|
|
|||
|
ACPI 2.0 support in the AML Interpreter has begun and will
|
|||
|
be ongoing throughout the rest of this year. In this label,
|
|||
|
The Mod operator is implemented.
|
|||
|
|
|||
|
Added a new data type to contain full PCI addresses named
|
|||
|
ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
|
|||
|
Device, and Function values.
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Enhanced the Linux version of the source code to change most
|
|||
|
capitalized ACPI type names to lowercase. For example, all
|
|||
|
instances of ACPI_STATUS are changed to acpi_status. This
|
|||
|
will result in a large diff, but the change is strictly
|
|||
|
cosmetic and aligns the CA code closer to the Linux coding
|
|||
|
standard.
|
|||
|
|
|||
|
OSL Interfaces:
|
|||
|
|
|||
|
The interfaces to the PCI configuration space have been
|
|||
|
changed to add the PCI Segment number and to split the
|
|||
|
single 32-bit combined DeviceFunction field into two 16-bit
|
|||
|
fields. This was accomplished by moving the four values
|
|||
|
that define an address in PCI configuration space (segment,
|
|||
|
bus, device, and function) to the new ACPI_PCI_ID structure.
|
|||
|
|
|||
|
The changes to the PCI configuration space interfaces led to
|
|||
|
a reexamination of the complete set of address space access
|
|||
|
interfaces for PCI, I/O, and Memory. The previously
|
|||
|
existing 18 interfaces have proven difficult to maintain
|
|||
|
(any small change must be propagated across at least 6
|
|||
|
interfaces) and do not easily allow for future expansion to
|
|||
|
64 bits if necessary. Also, on some systems, it would not
|
|||
|
be appropriate to demultiplex the access width (8, 16, 32,or
|
|||
|
64) before calling the OSL if the corresponding native OS
|
|||
|
interfaces contain a similar access width parameter. For
|
|||
|
these reasons, the 18 address space interfaces have been
|
|||
|
replaced by these 6 new ones:
|
|||
|
|
|||
|
AcpiOsReadPciConfiguration
|
|||
|
AcpiOsWritePciConfiguration
|
|||
|
AcpiOsReadMemory
|
|||
|
AcpiOsWriteMemory
|
|||
|
AcpiOsReadPort
|
|||
|
AcpiOsWritePort
|
|||
|
|
|||
|
Added a new interface named AcpiOsGetRootPointer to allow
|
|||
|
the OSL to perform the platform and/or OS-specific actions
|
|||
|
necessary to obtain the ACPI RSDP table pointer. On IA-32
|
|||
|
platforms, this interface will simply call down to the CA
|
|||
|
core to perform the low-memory search for the table. On IA-
|
|||
|
64, the RSDP is obtained from EFI. Migrating this interface
|
|||
|
to the OSL allows the CA core to remain OS and platform
|
|||
|
independent.
|
|||
|
|
|||
|
Added a new interface named AcpiOsSignal to provide a
|
|||
|
generic "function code and pointer" interface for various
|
|||
|
miscellaneous signals and notifications that must be made to
|
|||
|
the host OS. The first such signals are intended to
|
|||
|
support the ASL Fatal and Breakpoint operators. In the
|
|||
|
latter case, the AcpiOsBreakpoint interface has been
|
|||
|
obsoleted.
|
|||
|
|
|||
|
The definition of the AcpiFormatException interface has been
|
|||
|
changed to simplify its use. The caller no longer must
|
|||
|
supply a buffer to the call; A pointer to a const string is
|
|||
|
now returned directly. This allows the call to be easily
|
|||
|
used in printf statements, etc. since the caller does not
|
|||
|
have to manage a local buffer.
|
|||
|
|
|||
|
ASL Compiler, Version X2025:
|
|||
|
|
|||
|
The ACPI 2.0 Switch/Case/Default operators have been
|
|||
|
implemented and are fully functional. They will work with
|
|||
|
all ACPI 1.0 interpreters, since the operators are simply
|
|||
|
translated to If/Else pairs.
|
|||
|
|
|||
|
The ACPI 2.0 ElseIf operator is implemented and will also
|
|||
|
work with 1.0 interpreters, for the same reason.
|
|||
|
|
|||
|
Implemented support for ACPI 2.0 variable-length packages.
|
|||
|
These packages have a separate opcode, and their size is
|
|||
|
determined by the interpreter at run-time.
|
|||
|
|
|||
|
Documentation The ACPI CA Programmer Reference has been
|
|||
|
updated to reflect the new interfaces and changes to
|
|||
|
existing interfaces.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 06_15_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Fixed a problem where a DWORD-accessed field within a Buffer
|
|||
|
object would get its byte address inadvertently rounded down
|
|||
|
to the nearest DWORD. Buffers are always Byte-accessible.
|
|||
|
|
|||
|
ASL Compiler, version X2024:
|
|||
|
|
|||
|
Fixed a problem where the Switch() operator would either
|
|||
|
fault or hang the compiler. Note however, that the AML code
|
|||
|
for this ACPI 2.0 operator is not yet implemented.
|
|||
|
|
|||
|
Compiler uses the new AcpiOsGetTimer interface to obtain
|
|||
|
compile timings.
|
|||
|
|
|||
|
Implementation of the CreateField operator automatically
|
|||
|
converts a reference to a named field within a resource
|
|||
|
descriptor from a byte offset to a bit offset if required.
|
|||
|
|
|||
|
Added some missing named fields from the resource descriptor
|
|||
|
support. These are the names that are automatically created
|
|||
|
by the compiler to reference fields within a descriptor.
|
|||
|
They are only valid at compile time and are not passed
|
|||
|
through to the AML interpreter.
|
|||
|
|
|||
|
Resource descriptor named fields are now typed as Integers
|
|||
|
and subject to compile-time typechecking when used in
|
|||
|
expressions.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 05_18_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Fixed a couple of problems in the Field support code where
|
|||
|
bits from adjacent fields could be returned along with the
|
|||
|
proper field bits. Restructured the field support code to
|
|||
|
improve performance, readability and maintainability.
|
|||
|
|
|||
|
New DEBUG_PRINTP macro automatically inserts the procedure
|
|||
|
name into the output, saving hundreds of copies of procedure
|
|||
|
name strings within the source, shrinking the memory
|
|||
|
footprint of the debug version of the core subsystem.
|
|||
|
|
|||
|
Source Code Structure:
|
|||
|
|
|||
|
The source code directory tree was restructured to reflect
|
|||
|
the current organization of the component architecture.
|
|||
|
Some files and directories have been moved and/or renamed.
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Fixed leaking kacpidpc processes.
|
|||
|
|
|||
|
Fixed queueing event data even when /proc/acpi/event is not
|
|||
|
opened.
|
|||
|
|
|||
|
ASL Compiler, version X2020:
|
|||
|
|
|||
|
Memory allocation performance enhancement - over 24X compile
|
|||
|
time improvement on large ASL files. Parse nodes and
|
|||
|
namestring buffers are now allocated from a large internal
|
|||
|
compiler buffer.
|
|||
|
|
|||
|
The temporary .SRC file is deleted unless the "-s" option is
|
|||
|
specified
|
|||
|
|
|||
|
The "-d" debug output option now sends all output to the
|
|||
|
.DBG file instead of the console.
|
|||
|
|
|||
|
"External" second parameter is now optional
|
|||
|
|
|||
|
"ElseIf" syntax now properly allows the predicate
|
|||
|
|
|||
|
Last operand to "Load" now recognized as a Target operand
|
|||
|
|
|||
|
Debug object can now be used anywhere as a normal object.
|
|||
|
|
|||
|
ResourceTemplate now returns an object of type BUFFER
|
|||
|
|
|||
|
EISAID now returns an object of type INTEGER
|
|||
|
|
|||
|
"Index" now works with a STRING operand
|
|||
|
|
|||
|
"LoadTable" now accepts optional parameters
|
|||
|
|
|||
|
"ToString" length parameter is now optional
|
|||
|
|
|||
|
"Interrupt (ResourceType," parse error fixed.
|
|||
|
|
|||
|
"Register" with a user-defined region space parse error
|
|||
|
fixed
|
|||
|
|
|||
|
Escaped backslash at the end of a string ("\\") scan/parse
|
|||
|
error fixed
|
|||
|
|
|||
|
"Revision" is now an object of type INTEGER.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 05_02_01
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
/proc/acpi/event now blocks properly.
|
|||
|
|
|||
|
Removed /proc/sys/acpi. You can still dump your DSDT from
|
|||
|
/proc/acpi/dsdt.
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Fixed a problem introduced in the previous label where some
|
|||
|
of the "small" resource descriptor types were not
|
|||
|
recognized.
|
|||
|
|
|||
|
Improved error messages for the case where an ASL Field is
|
|||
|
outside the range of the parent operation region.
|
|||
|
|
|||
|
ASL Compiler, version X2018:
|
|||
|
|
|||
|
Added error detection for ASL Fields that extend beyond the
|
|||
|
length of the parent operation region (only if the length of
|
|||
|
the region is known at compile time.) This includes fields
|
|||
|
that have a minimum access width that is smaller than the
|
|||
|
parent region, and individual field units that are partially
|
|||
|
or entirely beyond the extent of the parent.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 04_27_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Fixed a problem where the namespace mutex could be released
|
|||
|
at the wrong time during execution of
|
|||
|
AcpiRemoveAddressSpaceHandler.
|
|||
|
|
|||
|
Added optional thread ID output for debug traces, to
|
|||
|
simplify debugging of multiple threads. Added context
|
|||
|
switch notification when the debug code realizes that a
|
|||
|
different thread is now executing ACPI code.
|
|||
|
|
|||
|
Some additional external data types have been prefixed with
|
|||
|
the string "ACPI_" for consistency. This may effect
|
|||
|
existing code. The data types affected are the external
|
|||
|
callback typedefs - e.g., WALK_CALLBACK becomes
|
|||
|
ACPI_WALK_CALLBACK.
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Fixed an issue with the OSL semaphore implementation where a
|
|||
|
thread was waking up with an error from receiving a SIGCHLD
|
|||
|
signal.
|
|||
|
|
|||
|
Linux version of ACPI CA now uses the system C library for
|
|||
|
string manipulation routines instead of a local
|
|||
|
implementation.
|
|||
|
|
|||
|
Cleaned up comments and removed TBDs.
|
|||
|
|
|||
|
ASL Compiler, version X2017:
|
|||
|
|
|||
|
Enhanced error detection and reporting for all file I/O
|
|||
|
operations.
|
|||
|
|
|||
|
Documentation:
|
|||
|
|
|||
|
Programmer Reference updated to version 1.06.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 04_13_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Restructured support for BufferFields and RegionFields.
|
|||
|
BankFields support is now fully operational. All known 32-
|
|||
|
bit limitations on field sizes have been removed. Both
|
|||
|
BufferFields and (Operation) RegionFields are now supported
|
|||
|
by the same field management code.
|
|||
|
|
|||
|
Resource support now supports QWORD address and IO
|
|||
|
resources. The 16/32/64 bit address structures and the
|
|||
|
Extended IRQ structure have been changed to properly handle
|
|||
|
Source Resource strings.
|
|||
|
|
|||
|
A ThreadId of -1 is now used to indicate a "mutex not
|
|||
|
acquired" condition internally and must never be returned by
|
|||
|
AcpiOsThreadId. This reserved value was changed from 0 since
|
|||
|
Unix systems allow a thread ID of 0.
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
Driver code reorganized to enhance portability
|
|||
|
|
|||
|
Added a kernel configuration option to control ACPI_DEBUG
|
|||
|
|
|||
|
Fixed the EC driver to honor _GLK.
|
|||
|
|
|||
|
ASL Compiler, version X2016:
|
|||
|
|
|||
|
Fixed support for the "FixedHw" keyword. Previously, the
|
|||
|
FixedHw address space was set to 0, not 0x7f as it should
|
|||
|
be.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 03_13_01
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
During ACPI initialization, the _SB_._INI method is now run
|
|||
|
if present.
|
|||
|
|
|||
|
Notify handler fix - notifies are deferred until the parent
|
|||
|
method completes execution. This fixes the "mutex already
|
|||
|
acquired" issue seen occasionally.
|
|||
|
|
|||
|
Part of the "implicit conversion" rules in ACPI 2.0 have
|
|||
|
been found to cause compatibility problems with existing
|
|||
|
ASL/AML. The convert "result-to-target-type" implementation
|
|||
|
has been removed for stores to method Args and Locals.
|
|||
|
Source operand conversion is still fully implemented.
|
|||
|
Possible changes to ACPI 2.0 specification pending.
|
|||
|
|
|||
|
Fix to AcpiRsCalculatePciRoutingTableLength to return
|
|||
|
correct length.
|
|||
|
|
|||
|
Fix for compiler warnings for 64-bit compiles.
|
|||
|
|
|||
|
Linux:
|
|||
|
|
|||
|
/proc output aligned for easier parsing.
|
|||
|
|
|||
|
Release-version compile problem fixed.
|
|||
|
|
|||
|
New kernel configuration options documented in
|
|||
|
Configure.help.
|
|||
|
|
|||
|
IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
|
|||
|
context" message.
|
|||
|
|
|||
|
OSPM:
|
|||
|
|
|||
|
Power resource driver integrated with bus manager.
|
|||
|
|
|||
|
Fixed kernel fault during active cooling for thermal zones.
|
|||
|
|
|||
|
Source Code:
|
|||
|
|
|||
|
The source code tree has been restructured.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 03_02_01
|
|||
|
|
|||
|
Linux OS Services Layer (OSL):
|
|||
|
|
|||
|
Major revision of all Linux-specific code.
|
|||
|
|
|||
|
Modularized all ACPI-specific drivers.
|
|||
|
|
|||
|
Added new thermal zone and power resource drivers.
|
|||
|
|
|||
|
Revamped /proc interface (new functionality is under
|
|||
|
/proc/acpi).
|
|||
|
|
|||
|
New kernel configuration options.
|
|||
|
|
|||
|
Linux known issues:
|
|||
|
|
|||
|
New kernel configuration options not documented in
|
|||
|
Configure.help yet.
|
|||
|
|
|||
|
Module dependencies not currently implemented. If used, they
|
|||
|
should be loaded in this order: busmgr, power, ec, system,
|
|||
|
processor, battery, ac_adapter, button, thermal.
|
|||
|
|
|||
|
Modules will not load if CONFIG_MODVERSION is set.
|
|||
|
|
|||
|
IBM 600E - entering S5 may reboot instead of shutting down.
|
|||
|
|
|||
|
IBM 600E - Sleep button may generate "Invalid <NULL>
|
|||
|
context" message.
|
|||
|
|
|||
|
Some systems may fail with "execution mutex already
|
|||
|
acquired" message.
|
|||
|
|
|||
|
ACPI CA Core Subsystem:
|
|||
|
|
|||
|
Added a new OSL Interface, AcpiOsGetThreadId. This was
|
|||
|
required for the deadlock detection code. Defined to return
|
|||
|
a non-zero, 32-bit thread ID for the currently executing
|
|||
|
thread. May be a non-zero constant integer on single-thread
|
|||
|
systems.
|
|||
|
|
|||
|
Implemented deadlock detection for internal subsystem
|
|||
|
mutexes. We may add conditional compilation for this code
|
|||
|
(debug only) later.
|
|||
|
|
|||
|
ASL/AML Mutex object semantics are now fully supported.
|
|||
|
This includes multiple acquires/releases by owner and
|
|||
|
support for the Mutex SyncLevel parameter.
|
|||
|
|
|||
|
A new "Force Release" mechanism automatically frees all ASL
|
|||
|
Mutexes that have been acquired but not released when a
|
|||
|
thread exits the interpreter. This forces conformance to
|
|||
|
the ACPI spec ("All mutexes must be released when an
|
|||
|
invocation exits") and prevents deadlocked ASL threads.
|
|||
|
This mechanism can be expanded (later) to monitor other
|
|||
|
resource acquisitions if OEM ASL code continues to misbehave
|
|||
|
(which it will).
|
|||
|
|
|||
|
Several new ACPI exception codes have been added for the
|
|||
|
Mutex support.
|
|||
|
|
|||
|
Recursive method calls are now allowed and supported (the
|
|||
|
ACPI spec does in fact allow recursive method calls.) The
|
|||
|
number of recursive calls is subject to the restrictions
|
|||
|
imposed by the SERIALIZED method keyword and SyncLevel (ACPI
|
|||
|
2.0) method parameter.
|
|||
|
|
|||
|
Implemented support for the SyncLevel parameter for control
|
|||
|
methods (ACPI 2.0 feature)
|
|||
|
|
|||
|
Fixed a deadlock problem when multiple threads attempted to
|
|||
|
use the interpreter.
|
|||
|
|
|||
|
Fixed a problem where the string length of a String package
|
|||
|
element was not always set in a package returned from
|
|||
|
AcpiEvaluateObject.
|
|||
|
|
|||
|
Fixed a problem where the length of a String package element
|
|||
|
was not always included in the length of the overall package
|
|||
|
returned from AcpiEvaluateObject.
|
|||
|
|
|||
|
Added external interfaces (Acpi*) to the ACPI debug memory
|
|||
|
manager. This manager keeps a list of all outstanding
|
|||
|
allocations, and can therefore detect memory leaks and
|
|||
|
attempts to free memory blocks more than once. Useful for
|
|||
|
code such as the power manager, etc. May not be appropriate
|
|||
|
for device drivers. Performance with the debug code enabled
|
|||
|
is slow.
|
|||
|
|
|||
|
The ACPI Global Lock is now an optional hardware element.
|
|||
|
|
|||
|
ASL Compiler Version X2015:
|
|||
|
|
|||
|
Integrated changes to allow the compiler to be generated on
|
|||
|
multiple platforms.
|
|||
|
|
|||
|
Linux makefile added to generate the compiler on Linux
|
|||
|
|
|||
|
Source Code:
|
|||
|
|
|||
|
All platform-specific headers have been moved to their own
|
|||
|
subdirectory, Include/Platform.
|
|||
|
|
|||
|
New source file added, Interpreter/ammutex.c
|
|||
|
|
|||
|
New header file, Include/acstruct.h
|
|||
|
|
|||
|
Documentation:
|
|||
|
|
|||
|
The programmer reference has been updated for the following
|
|||
|
new interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate
|
|||
|
AcpiFree
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 02_08_01
|
|||
|
|
|||
|
Core ACPI CA Subsystem: Fixed a problem where an error was
|
|||
|
incorrectly returned if the return resource buffer was
|
|||
|
larger than the actual data (in the resource interfaces).
|
|||
|
|
|||
|
References to named objects within packages are resolved to
|
|||
|
the full pathname string before packages are returned
|
|||
|
directly (via the AcpiEvaluateObject interface) or
|
|||
|
indirectly via the resource interfaces.
|
|||
|
|
|||
|
Linux OS Services Layer (OSL):
|
|||
|
|
|||
|
Improved /proc battery interface.
|
|||
|
|
|||
|
|
|||
|
Added C-state debugging output and other miscellaneous
|
|||
|
fixes.
|
|||
|
|
|||
|
ASL Compiler Version X2014:
|
|||
|
|
|||
|
All defined method arguments can now be used as local
|
|||
|
variables, including the ones that are not actually passed
|
|||
|
in as parameters. The compiler tracks initialization of the
|
|||
|
arguments and issues an exception if they are used without
|
|||
|
prior assignment (just like locals).
|
|||
|
|
|||
|
The -o option now specifies a filename prefix that is used
|
|||
|
for all output files, including the AML output file.
|
|||
|
Otherwise, the default behavior is as follows: 1) the AML
|
|||
|
goes to the file specified in the DSDT. 2) all other output
|
|||
|
files use the input source filename as the base.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 01_25_01
|
|||
|
|
|||
|
Core ACPI CA Subsystem: Restructured the implementation of
|
|||
|
object store support within the interpreter. This includes
|
|||
|
support for the Store operator as well as any ASL operators
|
|||
|
that include a target operand.
|
|||
|
|
|||
|
Partially implemented support for Implicit Result-to-Target
|
|||
|
conversion. This is when a result object is converted on the
|
|||
|
fly to the type of an existing target object. Completion
|
|||
|
of this support is pending further analysis of the ACPI
|
|||
|
specification concerning this matter.
|
|||
|
|
|||
|
CPU-specific code has been removed from the subsystem
|
|||
|
(hardware directory).
|
|||
|
|
|||
|
New Power Management Timer functions added
|
|||
|
|
|||
|
Linux OS Services Layer (OSL): Moved system state transition
|
|||
|
code to the core, fixed it, and modified Linux OSL
|
|||
|
accordingly.
|
|||
|
|
|||
|
Fixed C2 and C3 latency calculations.
|
|||
|
|
|||
|
|
|||
|
We no longer use the compilation date for the version
|
|||
|
message on initialization, but retrieve the version from
|
|||
|
AcpiGetSystemInfo().
|
|||
|
|
|||
|
Incorporated for fix Sony VAIO machines.
|
|||
|
|
|||
|
Documentation: The Programmer Reference has been updated
|
|||
|
and reformatted.
|
|||
|
|
|||
|
|
|||
|
ASL Compiler: Version X2013: Fixed a problem where the line
|
|||
|
numbering and error reporting could get out of sync in the
|
|||
|
presence of multiple include files.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 01_15_01
|
|||
|
|
|||
|
Core ACPI CA Subsystem:
|
|||
|
|
|||
|
Implemented support for type conversions in the execution of
|
|||
|
the ASL Concatenate operator (The second operand is
|
|||
|
converted to match the type of the first operand before
|
|||
|
concatenation.)
|
|||
|
|
|||
|
Support for implicit source operand conversion is partially
|
|||
|
implemented. The ASL source operand types Integer, Buffer,
|
|||
|
and String are freely interchangeable for most ASL
|
|||
|
operators and are converted by the interpreter on the fly
|
|||
|
as required. Implicit Target operand conversion (where the
|
|||
|
result is converted to the target type before storing) is
|
|||
|
not yet implemented.
|
|||
|
|
|||
|
Support for 32-bit and 64-bit BCD integers is implemented.
|
|||
|
|
|||
|
Problem fixed where a field read on an aligned field could
|
|||
|
cause a read past the end of the field.
|
|||
|
|
|||
|
New exception, AE_AML_NO_RETURN_VALUE, is returned when a
|
|||
|
method does not return a value, but the caller expects one.
|
|||
|
(The ASL compiler flags this as a warning.)
|
|||
|
|
|||
|
ASL Compiler:
|
|||
|
|
|||
|
Version X2011:
|
|||
|
1. Static typechecking of all operands is implemented. This
|
|||
|
prevents the use of invalid objects (such as using a Package
|
|||
|
where an Integer is required) at compile time instead of at
|
|||
|
interpreter run-time.
|
|||
|
2. The ASL source line is printed with ALL errors and
|
|||
|
warnings.
|
|||
|
3. Bug fix for source EOF without final linefeed.
|
|||
|
4. Debug option is split into a parse trace and a namespace
|
|||
|
trace.
|
|||
|
5. Namespace output option (-n) includes initial values for
|
|||
|
integers and strings.
|
|||
|
6. Parse-only option added for quick syntax checking.
|
|||
|
7. Compiler checks for duplicate ACPI name declarations
|
|||
|
|
|||
|
Version X2012:
|
|||
|
1. Relaxed typechecking to allow interchangeability between
|
|||
|
strings, integers, and buffers. These types are now
|
|||
|
converted by the interpreter at runtime.
|
|||
|
2. Compiler reports time taken by each internal subsystem in
|
|||
|
the debug output file.
|
|||
|
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 12_14_00
|
|||
|
|
|||
|
ASL Compiler:
|
|||
|
|
|||
|
This is the first official release of the compiler. Since
|
|||
|
the compiler requires elements of the Core Subsystem, this
|
|||
|
label synchronizes everything.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 12_08_00
|
|||
|
|
|||
|
Fixed a problem where named references within the ASL
|
|||
|
definition of both OperationRegions and CreateXXXFields did
|
|||
|
not work properly. The symptom was an AE_AML_OPERAND_TYPE
|
|||
|
during initialization of the region/field. This is similar
|
|||
|
(but not related internally) to the problem that was fixed
|
|||
|
in the last label.
|
|||
|
|
|||
|
Implemented both 32-bit and 64-bit support for the BCD ASL
|
|||
|
functions ToBCD and FromBCD.
|
|||
|
|
|||
|
Updated all legal headers to include "2000" in the copyright
|
|||
|
years.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 12_01_00
|
|||
|
|
|||
|
Fixed a problem where method invocations within the ASL
|
|||
|
definition of both OperationRegions and CreateXXXFields did
|
|||
|
not work properly. The symptom was an AE_AML_OPERAND_TYPE
|
|||
|
during initialization of the region/field:
|
|||
|
|
|||
|
nsinit-0209: AE_AML_OPERAND_TYPE while getting region
|
|||
|
arguments [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad
|
|||
|
operand(s) (0x3005)
|
|||
|
|
|||
|
Fixed a problem where operators with more than one nested
|
|||
|
subexpression would fail. The symptoms were varied, by
|
|||
|
mostly AE_AML_OPERAND_TYPE errors. This was actually a
|
|||
|
rather serious problem that has gone unnoticed until now.
|
|||
|
|
|||
|
Subtract (Add (1,2), Multiply (3,4))
|
|||
|
|
|||
|
Fixed a problem where AcpiGetHandle didn't quite get fixed
|
|||
|
in the previous build (The prefix part of a relative path
|
|||
|
was handled incorrectly).
|
|||
|
|
|||
|
Fixed a problem where Operation Region initialization failed
|
|||
|
if the operation region name was a "namepath" instead of a
|
|||
|
simple "nameseg". Symptom was an AE_NO_OPERAND error.
|
|||
|
|
|||
|
Fixed a problem where an assignment to a local variable via
|
|||
|
the indirect RefOf mechanism only worked for the first such
|
|||
|
assignment. Subsequent assignments were ignored.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 11_15_00
|
|||
|
|
|||
|
ACPI 2.0 table support with backwards support for ACPI 1.0
|
|||
|
and the 0.71 extensions. Note: although we can read ACPI
|
|||
|
2.0 BIOS tables, the AML interpreter does NOT have support
|
|||
|
for the new 2.0 ASL grammar terms at this time.
|
|||
|
|
|||
|
All ACPI hardware access is via the GAS structures in the
|
|||
|
ACPI 2.0 FADT.
|
|||
|
|
|||
|
All physical memory addresses across all platforms are now
|
|||
|
64 bits wide. Logical address width remains dependent on the
|
|||
|
platform (i.e., "void *").
|
|||
|
|
|||
|
AcpiOsMapMemory interface changed to a 64-bit physical
|
|||
|
address.
|
|||
|
|
|||
|
The AML interpreter integer size is now 64 bits, as per the
|
|||
|
ACPI 2.0 specification.
|
|||
|
|
|||
|
For backwards compatibility with ACPI 1.0, ACPI tables with
|
|||
|
a revision number less than 2 use 32-bit integers only.
|
|||
|
|
|||
|
Fixed a problem where the evaluation of OpRegion operands
|
|||
|
did not always resolve them to numbers properly.
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 10_20_00
|
|||
|
|
|||
|
Fix for CBN_._STA issue. This fix will allow correct access
|
|||
|
to CBN_ OpRegions when the _STA returns 0x8.
|
|||
|
|
|||
|
Support to convert ACPI constants (Ones, Zeros, One) to
|
|||
|
actual values before a package object is returned
|
|||
|
|
|||
|
Fix for method call as predicate to if/while construct
|
|||
|
causing incorrect if/while behavior
|
|||
|
|
|||
|
Fix for Else block package lengths sometimes calculated
|
|||
|
wrong (if block > 63 bytes)
|
|||
|
|
|||
|
Fix for Processor object length field, was always zero
|
|||
|
|
|||
|
Table load abort if FACP sanity check fails
|
|||
|
|
|||
|
Fix for problem with Scope(name) if name already exists
|
|||
|
|
|||
|
Warning emitted if a named object referenced cannot be found
|
|||
|
(resolved) during method execution.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
------------------------------------------
|
|||
|
Summary of changes for this label: 9_29_00
|
|||
|
|
|||
|
New table initialization interfaces: AcpiInitializeSubsystem
|
|||
|
no longer has any parameters AcpiFindRootPointer - Find the
|
|||
|
RSDP (if necessary) AcpiLoadTables (RSDP) - load all tables
|
|||
|
found at RSDP->RSDT Obsolete Interfaces
|
|||
|
AcpiLoadFirmwareTables - replaced by AcpiLoadTables
|
|||
|
|
|||
|
Note: These interface changes require changes to all
|
|||
|
existing OSDs
|
|||
|
|
|||
|
The PCI_Config default address space handler is always
|
|||
|
installed at the root namespace object.
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 09_15_00
|
|||
|
|
|||
|
The new initialization architecture is implemented. New
|
|||
|
interfaces are: AcpiInitializeSubsystem (replaces
|
|||
|
AcpiInitialize) AcpiEnableSubsystem Obsolete Interfaces:
|
|||
|
AcpiLoadNamespace (Namespace is automatically loaded when a
|
|||
|
table is loaded)
|
|||
|
|
|||
|
The ACPI_OPERAND_OBJECT has been optimized to shrink its
|
|||
|
size from 52 bytes to 32 bytes. There is usually one of
|
|||
|
these for every namespace object, so the memory savings is
|
|||
|
significant.
|
|||
|
|
|||
|
Implemented just-in-time evaluation of the CreateField
|
|||
|
operators.
|
|||
|
|
|||
|
Bug fixes for IA-64 support have been integrated.
|
|||
|
|
|||
|
Additional code review comments have been implemented
|
|||
|
|
|||
|
The so-called "third pass parse" has been replaced by a
|
|||
|
final walk through the namespace to initialize all operation
|
|||
|
regions (address spaces) and fields that have not yet been
|
|||
|
initialized during the execution of the various _INI and REG
|
|||
|
methods.
|
|||
|
|
|||
|
New file - namespace/nsinit.c
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 09_01_00
|
|||
|
|
|||
|
Namespace manager data structures have been reworked to
|
|||
|
change the primary object from a table to a single object.
|
|||
|
This has resulted in dynamic memory savings of 3X within
|
|||
|
the namespace and 2X overall in the ACPI CA subsystem.
|
|||
|
|
|||
|
Fixed problem where the call to AcpiEvFindPciRootBuses was
|
|||
|
inadvertently left commented out.
|
|||
|
|
|||
|
Reduced the warning count when generating the source with
|
|||
|
the GCC compiler.
|
|||
|
|
|||
|
Revision numbers added to each module header showing the
|
|||
|
SourceSafe version of the file. Please refer to this
|
|||
|
version number when giving us feedback or comments on
|
|||
|
individual modules.
|
|||
|
|
|||
|
The main object types within the subsystem have been renamed
|
|||
|
to clarify their purpose:
|
|||
|
|
|||
|
ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
|
|||
|
ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
|
|||
|
ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
|
|||
|
|
|||
|
NOTE: no changes to the initialization sequence are included
|
|||
|
in this label.
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 08_23_00
|
|||
|
|
|||
|
Fixed problem where TerminateControlMethod was being called
|
|||
|
multiple times per method
|
|||
|
|
|||
|
Fixed debugger problem where single stepping caused a
|
|||
|
semaphore to be oversignalled
|
|||
|
|
|||
|
Improved performance through additional parse object caching
|
|||
|
- added ACPI_EXTENDED_OP type
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 08_10_00
|
|||
|
|
|||
|
Parser/Interpreter integration: Eliminated the creation of
|
|||
|
complete parse trees for ACPI tables and control methods.
|
|||
|
Instead, parse subtrees are created and then deleted as
|
|||
|
soon as they are processed (Either entered into the
|
|||
|
namespace or executed by the interpreter). This reduces
|
|||
|
the use of dynamic kernel memory significantly. (about 10X)
|
|||
|
|
|||
|
Exception codes broken into classes and renumbered. Be sure
|
|||
|
to recompile all code that includes acexcep.h. Hopefully
|
|||
|
we won't have to renumber the codes again now that they are
|
|||
|
split into classes (environment, programmer, AML code, ACPI
|
|||
|
table, and internal).
|
|||
|
|
|||
|
Fixed some additional alignment issues in the Resource
|
|||
|
Manager subcomponent
|
|||
|
|
|||
|
Implemented semaphore tracking in the AcpiExec utility, and
|
|||
|
fixed several places where mutexes/semaphores were being
|
|||
|
unlocked without a corresponding lock operation. There are
|
|||
|
no known semaphore or mutex "leaks" at this time.
|
|||
|
|
|||
|
Fixed the case where an ASL Return operator is used to
|
|||
|
return an unnamed package.
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 07_28_00
|
|||
|
|
|||
|
Fixed a problem with the way addresses were calculated in
|
|||
|
AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This
|
|||
|
problem manifested itself when a Field was created with
|
|||
|
WordAccess or DwordAccess, but the field unit defined within
|
|||
|
the Field was less than a Word or Dword.
|
|||
|
|
|||
|
Fixed a problem in AmlDumpOperands() module's loop to pull
|
|||
|
operands off of the operand stack to display information.
|
|||
|
The problem manifested itself as a TLB error on 64-bit
|
|||
|
systems when accessing an operand stack with two or more
|
|||
|
operands.
|
|||
|
|
|||
|
Fixed a problem with the PCI configuration space handlers
|
|||
|
where context was getting confused between accesses. This
|
|||
|
required a change to the generic address space handler and
|
|||
|
address space setup definitions. Handlers now get both a
|
|||
|
global handler context (this is the one passed in by the
|
|||
|
user when executing AcpiInstallAddressSpaceHandler() and a
|
|||
|
specific region context that is unique to each region (For
|
|||
|
example, the _ADR, _SEG and _BBN values associated with a
|
|||
|
specific region). The generic function definitions have
|
|||
|
changed to the following:
|
|||
|
|
|||
|
typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32
|
|||
|
Function, UINT32 Address, UINT32 BitWidth, UINT32 *Value,
|
|||
|
void *HandlerContext, // This used to be void *Context void
|
|||
|
*RegionContext); // This is an additional parameter
|
|||
|
|
|||
|
typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
|
|||
|
RegionHandle, UINT32 Function, void *HandlerContext, void
|
|||
|
**RegionContext); // This used to be **ReturnContext
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 07_21_00
|
|||
|
|
|||
|
Major file consolidation and rename. All files within the
|
|||
|
interpreter have been renamed as well as most header files.
|
|||
|
This was done to prevent collisions with existing files in
|
|||
|
the host OSs -- filenames such as "config.h" and "global.h"
|
|||
|
seem to be quite common. The VC project files have been
|
|||
|
updated. All makefiles will require modification.
|
|||
|
|
|||
|
The parser/interpreter integration continues in Phase 5 with
|
|||
|
the implementation of a complete 2-pass parse (the AML is
|
|||
|
parsed twice) for each table; This avoids the construction
|
|||
|
of a huge parse tree and therefore reduces the amount of
|
|||
|
dynamic memory required by the subsystem. Greater use of
|
|||
|
the parse object cache means that performance is
|
|||
|
unaffected.
|
|||
|
|
|||
|
Many comments from the two code reviews have been rolled in.
|
|||
|
|
|||
|
The 64-bit alignment support is complete.
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 06_30_00
|
|||
|
|
|||
|
With a nod and a tip of the hat to the technology of
|
|||
|
yesteryear, we've added support in the source code for 80
|
|||
|
column output devices. The code is now mostly constrained
|
|||
|
to 80 columns or less to support environments and editors
|
|||
|
that 1) cannot display or print more than 80 characters on
|
|||
|
a single line, and 2) cannot disable line wrapping.
|
|||
|
|
|||
|
A major restructuring of the namespace data structure has
|
|||
|
been completed. The result is 1) cleaner and more
|
|||
|
understandable/maintainable code, and 2) a significant
|
|||
|
reduction in the dynamic memory requirement for each named
|
|||
|
ACPI object (almost half).
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 06_23_00
|
|||
|
|
|||
|
Linux support has been added. In order to obtain approval
|
|||
|
to get the ACPI CA subsystem into the Linux kernel, we've
|
|||
|
had to make quite a few changes to the base subsystem that
|
|||
|
will affect all users (all the changes are generic and OS-
|
|||
|
independent). The effects of these global changes have been
|
|||
|
somewhat far reaching. Files have been merged and/or
|
|||
|
renamed and interfaces have been renamed. The major
|
|||
|
changes are described below.
|
|||
|
|
|||
|
Osd* interfaces renamed to AcpiOs* to eliminate namespace
|
|||
|
pollution/confusion within our target kernels. All OSD
|
|||
|
interfaces must be modified to match the new naming
|
|||
|
convention.
|
|||
|
|
|||
|
Files merged across the subsystem. A number of the smaller
|
|||
|
source and header files have been merged to reduce the file
|
|||
|
count and increase the density of the existing files.
|
|||
|
There are too many to list here. In general, makefiles that
|
|||
|
call out individual files will require rebuilding.
|
|||
|
|
|||
|
Interpreter files renamed. All interpreter files now have
|
|||
|
the prefix am* instead of ie* and is*.
|
|||
|
|
|||
|
Header files renamed: The acapi.h file is now acpixf.h.
|
|||
|
The acpiosd.h file is now acpiosxf.h. We are removing
|
|||
|
references to the acronym "API" since it is somewhat
|
|||
|
windowsy. The new name is "external interface" or xface or
|
|||
|
xf in the filenames.j
|
|||
|
|
|||
|
|
|||
|
All manifest constants have been forced to upper case (some
|
|||
|
were mixed case.) Also, the string "ACPI_" has been
|
|||
|
prepended to many (not all) of the constants, typedefs, and
|
|||
|
structs.
|
|||
|
|
|||
|
The globals "DebugLevel" and "DebugLayer" have been renamed
|
|||
|
"AcpiDbgLevel" and "AcpiDbgLayer" respectively.
|
|||
|
|
|||
|
All other globals within the subsystem are now prefixed with
|
|||
|
"AcpiGbl_" Internal procedures within the subsystem are now
|
|||
|
prefixed with "Acpi" (with only a few exceptions). The
|
|||
|
original two-letter abbreviation for the subcomponent
|
|||
|
remains after "Acpi" - for example, CmCallocate became
|
|||
|
AcpiCmCallocate.
|
|||
|
|
|||
|
Added a source code translation/conversion utility. Used to
|
|||
|
generate the Linux source code, it can be modified to
|
|||
|
generate other types of source as well. Can also be used to
|
|||
|
cleanup existing source by removing extraneous spaces and
|
|||
|
blank lines. Found in tools/acpisrc/*
|
|||
|
|
|||
|
OsdUnMapMemory was renamed to OsdUnmapMemory and then
|
|||
|
AcpiOsUnmapMemory. (UnMap became Unmap).
|
|||
|
|
|||
|
A "MaxUnits" parameter has been added to
|
|||
|
AcpiOsCreateSemaphore. When set to one, this indicates
|
|||
|
that the caller wants to use the semaphore as a mutex, not a
|
|||
|
counting semaphore. ACPI CA uses both types. However,
|
|||
|
implementers of this call may want to use different OS
|
|||
|
primitives depending on the type of semaphore requested.
|
|||
|
For example, some operating systems provide separate "mutex"
|
|||
|
and "semaphore" interfaces - where the mutex interface is
|
|||
|
much faster because it doesn't have all the overhead of a
|
|||
|
full semaphore implementation.
|
|||
|
|
|||
|
Fixed a deadlock problem where a method that accesses the
|
|||
|
PCI address space can block forever if it is the first
|
|||
|
access to the space.
|
|||
|
|
|||
|
-------------------------------------------
|
|||
|
Summary of changes for this label: 06_02_00
|
|||
|
|
|||
|
Support for environments that cannot handle unaligned data
|
|||
|
accesses (e.g. firmware and OS environments devoid of
|
|||
|
alignment handler technology namely SAL/EFI and the IA-64
|
|||
|
Linux kernel) has been added (via configurable macros) in
|
|||
|
these three areas: - Transfer of data from the raw AML byte
|
|||
|
stream is done via byte moves instead of word/dword/qword
|
|||
|
moves. - External objects are aligned within the user
|
|||
|
buffer, including package elements (sub-objects). -
|
|||
|
Conversion of name strings to UINT32 Acpi Names is now done
|
|||
|
byte-wise.
|
|||
|
|
|||
|
The Store operator was modified to mimic Microsoft's
|
|||
|
implementation when storing to a Buffer Field.
|
|||
|
|
|||
|
Added a check of the BM_STS bit before entering C3.
|
|||
|
|
|||
|
The methods subdirectory has been obsoleted and removed. A
|
|||
|
new file, cmeval.c subsumes the functionality.
|
|||
|
|
|||
|
A 16-bit (DOS) version of AcpiExec has been developed. The
|
|||
|
makefile is under the acpiexec directory.
|