📄 changes.txt
字号:
2) iASL Compiler/Disassembler and Tools:
Fixed a fault when using -g option (get tables from registry) on
Windows machines.
Fixed problem reports integrated:
- Generate error if CreateField NumBits parameter is zero. (BZ
405)
- Fault if Offset/Length in Field unit is very large (BZ 432,
Fiodor Suietov)
- Global table revision override (-r) is ignored (BZ 413)
----------------------------------------
26 May 2006. Summary of changes for version 20060526:
1) ACPI CA Core Subsystem:
Restructured, flattened, and simplified the internal interfaces
for namespace object evaluation - resulting in smaller code, less
CPU stack use, and fewer interfaces. (With assistance from Mikhail
Kouzmich)
Fixed a problem with the CopyObject operator where the first
parameter was not typed correctly for the parser, interpreter,
compiler, and disassembler. Caused various errors and unexpected
behavior.
Fixed a problem where a ShiftLeft or ShiftRight of more than 64
bits produced incorrect results with some C compilers. Since the
behavior of C compilers when the shift value is larger than the
datatype width is apparently not well defined, the interpreter now
detects this condition and simply returns zero as expected in all
such cases. (BZ 395)
Fixed problem reports (Valery Podrezov) integrated:
- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ
5329)
- Allow interpreter to handle nested method declarations (BZ 5361)
Fixed problem reports (Fiodor Suietov) integrated:
- AcpiTerminate doesn't free debug memory allocation list objects
(BZ 355)
- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK
(BZ 356)
- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ
357)
- Resource Manager should return AE_TYPE for non-device objects
(BZ 358)
- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData
(BZ 360)
- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is
loaded (BZ 365)
- Status of the Global Initialization Handler call not used (BZ
366)
- Incorrect object parameter to Global Initialization Handler (BZ
367)
Example Code and Data Size: These are the sizes for the OS-
independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-
bit compiler. The debug version of the code includes the debug
output trace mechanism and has a much larger code and data size.
Previous Release:
Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
Current Release:
Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
2) iASL Compiler/Disassembler and Tools:
Modified the parser to allow the names IO, DMA, and IRQ to be used
as namespace identifiers with no collision with existing resource
descriptor macro names. This provides compatibility with other ASL
compilers and is most useful for disassembly/recompilation of
existing tables without parse errors. (With assistance from Thomas
Renninger)
Disassembler: fixed an incorrect disassembly problem with the
DataTableRegion and CopyObject operators. Fixed a possible fault
during disassembly of some Alias operators.
----------------------------------------
12 May 2006. Summary of changes for version 20060512:
1) ACPI CA Core Subsystem:
Replaced the AcpiOsQueueForExecution interface with a new
interface named AcpiOsExecute. The major difference is that the
new interface does not have a Priority parameter, this appeared to
be useless and has been replaced by a Type parameter. The Type
tells the host what type of execution is being requested, such as
global lock handler, notify handler, GPE handler, etc. This allows
the host to queue and execute the request as appropriate for the
request type, possibly using different work queues and different
priorities for the various request types. This enables fixes for
multithreading deadlock problems such as BZ #5534, and will
require changes to all existing OS interface layers. (Alexey
Starikovskiy and Bob Moore)
Fixed a possible memory leak associated with the support for the
so-called "implicit return" ACPI extension. Reported by FreeBSD,
BZ #6514. (Fiodor Suietov)
Fixed a problem with the Load() operator where a table load from
an operation region could overwrite an internal table buffer by up
to 7 bytes and cause alignment faults on IPF systems. (With
assistance from Luming Yu)
Example Code and Data Size: These are the sizes for the OS-
independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-
bit compiler. The debug version of the code includes the debug
output trace mechanism and has a much larger code and data size.
Previous Release:
Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
Current Release:
Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Implemented support to cross reference the internal
namespace and automatically generate ASL External() statements for
symbols not defined within the current table being disassembled.
This will simplify the disassembly and recompilation of
interdependent tables such as SSDTs since these statements will no
longer have to be added manually.
Disassembler: Implemented experimental support to automatically
detect invocations of external control methods and generate
appropriate External() statements. This is problematic because the
AML cannot be correctly parsed until the number of arguments for
each control method is known. Currently, standalone method
invocations and invocations as the source operand of a Store()
statement are supported.
Disassembler: Implemented support for the ASL pseudo-operators
LNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled
as LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this makes
the disassembled ASL code more readable and likely closer to the
original ASL source.
----------------------------------------
21 April 2006. Summary of changes for version 20060421:
1) ACPI CA Core Subsystem:
Removed a device initialization optimization introduced in
20051216 where the _STA method was not run unless an _INI was also
present for the same device. This optimization could cause
problems because it could allow _INI methods to be run within a
not-present device subtree. (If a not-present device had no _INI,
_STA would not be run, the not-present status would not be
discovered, and the children of the device would be incorrectly
traversed.)
Implemented a new _STA optimization where namespace subtrees that
do not contain _INI are identified and ignored during device
initialization. Selectively running _STA can significantly improve
boot time on large machines (with assistance from Len Brown.)
Implemented support for the device initialization case where the
returned _STA flags indicate a device not-present but functioning.
In this case, _INI is not run, but the device children are
examined for presence, as per the ACPI specification.
Implemented an additional change to the IndexField support in
order to conform to MS behavior. The value written to the Index
Register is not simply a byte offset, it is a byte offset in units
of the access width of the parent Index Field. (Fiodor Suietov)
Defined and deployed a new OSL interface, AcpiOsValidateAddress.
This interface is called during the creation of all AML operation
regions, and allows the host OS to exert control over what
addresses it will allow the AML code to access. Operation Regions
whose addresses are disallowed will cause a runtime exception when
they are actually accessed (will not affect or abort table
loading.) See oswinxf or osunixxf for an example implementation.
Defined and deployed a new OSL interface, AcpiOsValidateInterface.
This interface allows the host OS to match the various "optional"
interface/behavior strings for the _OSI predefined control method
as appropriate (with assistance from Bjorn Helgaas.) See oswinxf
or osunixxf for an example implementation.
Restructured and corrected various problems in the exception
handling code paths within DsCallControlMethod and
DsTerminateControlMethod in dsmethod (with assistance from
Takayoshi Kochi.)
Modified the Linux source converter to ignore quoted string
literals while converting identifiers from mixed to lower case.
This will correct problems with the disassembler and other areas
where such strings must not be modified.
The ACPI_FUNCTION_* macros no longer require quotes around the
function name. This allows the Linux source converter to convert
the names, now that the converter ignores quoted strings.
Example Code and Data Size: These are the sizes for the OS-
independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-
bit compiler. The debug version of the code includes the debug
output trace mechanism and has a much larger code and data size.
Previous Release:
Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
Current Release:
Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
2) iASL Compiler/Disassembler and Tools:
Implemented 3 new warnings for iASL, and implemented multiple
warning levels (w2 flag).
1) Ignored timeouts: If the TimeoutValue parameter to Wait or
Acquire is not WAIT_FOREVER (0xFFFF) and the code does not examine
the return value to check for the possible timeout, a warning is
issued.
2) Useless operators: If an ASL operator does not specify an
optional target operand and it also does not use the function
return value from the operator, a warning is issued since the
operator effectively does nothing.
3) Unreferenced objects: If a namespace object is created, but
never referenced, a warning is issued. This is a warning level 2
since there are cases where this is ok, such as when a secondary
table is loaded that uses the unreferenced objects. Even so, care
is taken to only flag objects that don't look like they will ever
be used. For example, the reserved methods (starting with an
underscore) are usually not referenced because it is expected that
the OS will invoke them.
----------------------------------------
31 March 2006. Summary of changes for version 20060331:
1) ACPI CA Core Subsystem:
Implemented header file support for the following additional ACPI
tables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT.
With this support, all current and known ACPI tables are now
defined in the ACPICA headers and are available for use by device
drivers and other software.
Implemented support to allow tables that contain ACPI names with
invalid characters to be loaded. Previously, this would cause the
table load to fail, but since there are several known cases of
such tables on existing machines, this change was made to enable
ACPI support for them. Also, this matches the behavior of the
Microsoft ACPI implementation.
Fixed a couple regressions introduced during the memory
optimization in the 20060317 release. The namespace node
definition required additional reorganization and an internal
datatype that had been changed to 8-bit was restored to 32-bit.
(Valery Podrezov)
Fixed a problem where a null pointer passed to
AcpiUtDeleteGenericState could be passed through to
AcpiOsReleaseObject which is unexpected. Such null pointers are
now trapped and ignored, matching the behavior of the previous
implementation before the deployment of AcpiOsReleaseObject.
(Valery Podrezov, Fiodor Suietov)
Fixed a memory mapping leak during the deletion of a SystemMemory
operation region where a cached memory mapping was not deleted.
This became a noticeable problem for operation regions that are
defined within frequently used control methods. (Dana Meyers)
Reorganized the ACPI table header files into two main files: one
for the ACPI tables consumed by the ACPICA core, and another for
the miscellaneous ACPI tables that are consumed by the drivers and
other software. The various FADT definitions were merged into one
common section and three different tables (ACPI 1.0, 1.0+, and
2.0)
Example Code and Data Size: These are the sizes for the OS-
independent acpica.lib produced by the Microsoft Visual C++ 6.0 32-
bit compiler. The debug version of the code includes the debug
output trace mechanism and has a much larger code and data size.
Previous Release:
Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
Current Release:
Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Implemented support to decode and format all non-AML
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -