xref: /illumos-gate/usr/src/uts/intel/io/acpica/changes.txt (revision 3ce33fb052b375020ea4249290d33b834d9f9e75)
1----------------------------------------
227 May 2011. Summary of changes for version 20110527:
3
4This release is available at www.acpica.org/downloads
5
61) ACPI CA Core Subsystem:
7
8ASL Load() operator: Reinstate most restrictions on the incoming ACPI table
9signature. Now, only allow SSDT, OEMx, and a null signature. History:
10    1) Originally, we checked the table signature for "SSDT" or "PSDT".
11       (PSDT is now obsolete.)
12    2) We added support for OEMx tables, signature "OEM" plus a fourth
13       "don't care" character.
14    3) Valid tables were encountered with a null signature, so we just
15       gave up on validating the signature, (05/2008).
16    4) We encountered non-AML tables such as the MADT, which caused
17       interpreter errors and kernel faults. So now, we once again allow
18       only SSDT, OEMx, and now, also a null signature. (05/2011).
19
20Added the missing _TDL predefined name to the global name list in order to
21enable validation. Affects both the core ACPICA code and the iASL compiler.
22
23Example Code and Data Size: These are the sizes for the OS-independent
24acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
25version of the code includes the debug output trace mechanism and has a much
26larger code and data size.
27
28  Previous Release (VC 9.0):
29    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
30    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
31  Current Release (VC 9.0):
32    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
33    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
34
352) iASL Compiler/Disassembler and Tools:
36
37Debugger/AcpiExec: Implemented support for "complex" method arguments on the
38debugger command line. This adds support beyond simple integers -- including
39Strings, Buffers, and Packages. Includes support for nested packages.
40Increased the default command line buffer size to accommodate these arguments.
41See the ACPICA reference for details and syntax. ACPICA BZ 917.
42
43Debugger/AcpiExec: Implemented support for "default" method arguments for the
44Execute/Debug command. Now, the debugger will always invoke a control method
45with the required number of arguments -- even if the command line specifies
46none or insufficient arguments. It uses default integer values for any missing
47arguments. Also fixes a bug where only six method arguments maximum were
48supported instead of the required seven.
49
50Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine and
51also return status in order to prevent buffer overruns. See the ACPICA
52reference for details and syntax. ACPICA BZ 921
53
54iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
55makefiles to simplify support for the two different but similar parser
56generators, bison and yacc.
57
58Updated the generic unix makefile for gcc 4. The default gcc version is now
59expected to be 4 or greater, since options specific to gcc 4 are used.
60
61----------------------------------------
6213 April 2011. Summary of changes for version 20110413:
63
641) ACPI CA Core Subsystem:
65
66Implemented support to execute a so-called "orphan" _REG method under the EC
67device. This change will force the execution of a _REG method underneath the
68EC
69device even if there is no corresponding operation region of type
70EmbeddedControl. Fixes a problem seen on some machines and apparently is
71compatible with Windows behavior. ACPICA BZ 875.
72
73Added more predefined methods that are eligible for automatic NULL package
74element removal. This change adds another group of predefined names to the
75list
76of names that can be repaired by having NULL package elements dynamically
77removed. This group are those methods that return a single variable-length
78package containing simple data types such as integers, buffers, strings. This
79includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, _PSL,
80_Sx,
81and _TZD. ACPICA BZ 914.
82
83Split and segregated all internal global lock functions to a new file,
84evglock.c.
85
86Updated internal address SpaceID for DataTable regions. Moved this internal
87space
88id in preparation for ACPI 5.0 changes that will include some new space IDs.
89This
90change should not affect user/host code.
91
92Example Code and Data Size: These are the sizes for the OS-independent
93acpica.lib
94produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of
95the code includes the debug output trace mechanism and has a much larger code
96and
97data size.
98
99  Previous Release (VC 9.0):
100    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
101    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
102  Current Release (VC 9.0):
103    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
104    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
105
1062) iASL Compiler/Disassembler and Tools:
107
108iASL/DTC: Major update for new grammar features. Allow generic data types in
109custom ACPI tables. Field names are now optional. Any line can be split to
110multiple lines using the continuation char (\). Large buffers now use line-
111continuation character(s) and no colon on the continuation lines. See the
112grammar
113update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob Moore.
114
115iASL: Mark ASL "Return()" and the simple "Return" as "Null" return statements.
116Since the parser stuffs a "zero" as the return value for these statements (due
117to
118the underlying AML grammar), they were seen as "return with value" by the iASL
119semantic checking. They are now seen correctly as "null" return statements.
120
121iASL: Check if a_REG declaration has a corresponding Operation Region. Adds a
122check for each _REG to ensure that there is in fact a corresponding operation
123region declaration in the same scope. If not, the _REG method is not very
124useful
125since it probably won't be executed. ACPICA BZ 915.
126
127iASL/DTC: Finish support for expression evaluation. Added a new expression
128parser
129that implements c-style operator precedence and parenthesization. ACPICA
130bugzilla
131908.
132
133Disassembler/DTC: Remove support for () and <> style comments in data tables.
134Now
135that DTC has full expression support, we don't want to have comment strings
136that
137start with a parentheses or a less-than symbol. Now, only the standard /* and
138//
139comments are supported, as well as the bracket [] comments.
140
141AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
142"unusual"
143headers in the acpidump file. Update the header validation to support these
144tables. Problem introduced in previous AcpiXtract version in the change to
145support "wrong checksum" error messages emitted by acpidump utility.
146
147iASL: Add a * option to generate all template files (as a synonym for ALL) as
148in
149"iasl -T *" or "iasl -T ALL".
150
151iASL/DTC: Do not abort compiler on fatal errors. We do not want to completely
152abort the compiler on "fatal" errors, simply should abort the current compile.
153This allows multiple compiles with a single (possibly wildcard) compiler
154invocation.
155
156----------------------------------------
15716 March 2011. Summary of changes for version 20110316:
158
1591) ACPI CA Core Subsystem:
160
161Fixed a problem caused by a _PRW method appearing at the namespace root scope
162during the setup of wake GPEs. A fault could occur if a _PRW directly under
163the
164root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
165
166Implemented support for "spurious" Global Lock interrupts. On some systems, a
167global lock interrupt can occur without the pending flag being set. Upon a GL
168interrupt, we now ensure that a thread is actually waiting for the lock before
169signaling GL availability. Rafael Wysocki, Bob Moore.
170
171Example Code and Data Size: These are the sizes for the OS-independent
172acpica.lib
173produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of
174the code includes the debug output trace mechanism and has a much larger code
175and
176data size.
177
178  Previous Release (VC 9.0):
179    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
180    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
181  Current Release (VC 9.0):
182    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
183    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
184
1852) iASL Compiler/Disassembler and Tools:
186
187Implemented full support for the "SLIC" ACPI table. Includes support in the
188header files, disassembler, table compiler, and template generator. Bob Moore,
189Lin Ming.
190
191AcpiXtract: Correctly handle embedded comments and messages from AcpiDump.
192Apparently some or all versions of acpidump will occasionally emit a comment
193like
194"Wrong checksum", etc., into the dump file. This was causing problems for
195AcpiXtract. ACPICA BZ 905.
196
197iASL: Fix the Linux makefile by removing an inadvertent double file inclusion.
198ACPICA BZ 913.
199
200AcpiExec: Update installation of operation region handlers. Install one
201handler
202for a user-defined address space. This is used by the ASL test suite (ASLTS).
203
204----------------------------------------
20511 February 2011. Summary of changes for version 20110211:
206
2071) ACPI CA Core Subsystem:
208
209Added a mechanism to defer _REG methods for some early-installed handlers.
210Most user handlers should be installed before call to AcpiEnableSubsystem.
211However, Event handlers and region handlers should be installed after
212AcpiInitializeObjects. Override handlers for the "default" regions should be
213installed early, however. This change executes all _REG methods for the
214default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
215chicken/egg issues between them. ACPICA BZ 848.
216
217Implemented an optimization for GPE detection. This optimization will simply
218ignore GPE registers that contain no enabled GPEs -- there is no need to
219read the register since this information is available internally. This
220becomes more important on machines with a large GPE space. ACPICA bugzilla
221884. Lin Ming. Suggestion from Joe Liu.
222
223Removed all use of the highly unreliable FADT revision field. The revision
224number in the FADT has been found to be completely unreliable and cannot be
225trusted. Only the actual table length can be used to infer the version. This
226change updates the ACPICA core and the disassembler so that both no longer
227even look at the FADT version and instead depend solely upon the FADT
228length.
229
230Fix an unresolved name issue for the no-debug and no-error-message source
231generation cases. The _AcpiModuleName was left undefined in these cases, but
232it is actually needed as a parameter to some interfaces. Define
233_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
234
235Split several large files (makefiles and project files updated)
236  utglobal.c   -> utdecode.c
237  dbcomds.c    -> dbmethod.c dbnames.c
238  dsopcode.c   -> dsargs.c dscontrol.c
239  dsload.c     -> dsload2.c
240  aslanalyze.c -> aslbtypes.c aslwalks.c
241
242Example Code and Data Size: These are the sizes for the OS-independent
243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
244debug version of the code includes the debug output trace mechanism and has
245a much larger code and data size.
246
247  Previous Release (VC 9.0):
248    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
249    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
250  Current Release (VC 9.0):
251    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
252    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
253
2542) iASL Compiler/Disassembler and Tools:
255
256iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
257These are useful C-style macros with the standard definitions. ACPICA
258bugzilla 898.
259
260iASL/DTC: Added support for integer expressions and labels. Support for full
261expressions for all integer fields in all ACPI tables. Support for labels in
262"generic" portions of tables such as UEFI. See the iASL reference manual.
263
264Debugger: Added a command to display the status of global handlers. The
265"handlers" command will display op region, fixed event, and miscellaneous
266global handlers. installation status -- and for op regions, whether default
267or user-installed handler will be used.
268
269iASL: Warn if reserved method incorrectly returns a value. Many predefined
270names are defined such that they do not return a value. If implemented as a
271method, issue a warning if such a name explicitly returns a value. ACPICA
272Bugzilla 855.
273
274iASL: Added detection of GPE method name conflicts. Detects a conflict where
275there are two GPE methods of the form _Lxy and _Exy in the same scope. (For
276example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
277
278iASL/DTC: Fixed a couple input scanner issues with comments and line
279numbers. Comment remover could get confused and miss a comment ending. Fixed
280a problem with line counter maintenance.
281
282iASL/DTC: Reduced the severity of some errors from fatal to error. There is
283no need to abort on simple errors within a field definition.
284
285Debugger: Simplified the output of the help command. All help output now in
286a single screen, instead of help subcommands. ACPICA Bugzilla 897.
287
288----------------------------------------
28912 January 2011. Summary of changes for version 20110112:
290
2911) ACPI CA Core Subsystem:
292
293Fixed a race condition between method execution and namespace walks that can
294possibly cause a fault. The problem was apparently introduced in version
29520100528 as a result of a performance optimization that reduces the number of
296namespace walks upon method exit by using the delete_namespace_subtree
297function instead of the delete_namespace_by_owner function used previously.
298Bug is a missing namespace lock in the delete_namespace_subtree function.
299dana.myers@oracle.com
300
301Fixed several issues and a possible fault with the automatic "serialized"
302method support. History: This support changes a method to "serialized" on the
303fly if the method generates an AE_ALREADY_EXISTS error, indicating the
304possibility that it cannot handle reentrancy. This fix repairs a couple of
305issues seen in the field, especially on machines with many cores:
306
307    1) Delete method children only upon the exit of the last thread,
308       so as to not delete objects out from under other running threads
309      (and possibly causing a fault.)
310    2) Set the "serialized" bit for the method only upon the exit of the
311       Last thread, so as to not cause deadlock when running threads
312       attempt to exit.
313    3) Cleanup the use of the AML "MethodFlags" and internal method flags
314       so that there is no longer any confusion between the two.
315
316    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
317
318Debugger: Now lock the namespace for duration of a namespace dump. Prevents
319issues if the namespace is changing dynamically underneath the debugger.
320Especially affects temporary namespace nodes, since the debugger displays
321these also.
322
323Updated the ordering of include files. The ACPICA headers should appear
324before any compiler-specific headers (stdio.h, etc.) so that acenv.h can set
325any necessary compiler-specific defines, etc. Affects the ACPI-related tools
326and utilities.
327
328Updated all ACPICA copyrights and signons to 2011. Added the 2011 copyright
329to all module headers and signons, including the Linux header. This affects
330virtually every file in the ACPICA core subsystem, iASL compiler, and all
331utilities.
332
333Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
334project files for VC++ 6.0 are now obsolete. New project files can be found
335under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
336details.
337
338Example Code and Data Size: These are the sizes for the OS-independent
339acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
340debug version of the code includes the debug output trace mechanism and has a
341much larger code and data size.
342
343  Previous Release (VC 6.0):
344    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
345    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
346  Current Release (VC 9.0):
347    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
348    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
349
3502) iASL Compiler/Disassembler and Tools:
351
352iASL: Added generic data types to the Data Table compiler. Add "generic" data
353types such as UINT32, String, Unicode, etc., to simplify the generation of
354platform-defined tables such as UEFI. Lin Ming.
355
356iASL: Added listing support for the Data Table Compiler. Adds listing support
357(-l) to display actual binary output for each line of input code.
358
359----------------------------------------
36009 December 2010. Summary of changes for version 20101209:
361
3621) ACPI CA Core Subsystem:
363
364Completed the major overhaul of the GPE support code that was begun in July
3652010. Major features include: removal of _PRW execution in ACPICA (host
366executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
367changes to existing interfaces, simplification of GPE handler operation, and
368a handful of new interfaces:
369
370    AcpiUpdateAllGpes
371    AcpiFinishGpe
372    AcpiSetupGpeForWake
373    AcpiSetGpeWakeMask
374    One new file, evxfgpe.c to consolidate all external GPE interfaces.
375
376See the ACPICA Programmer Reference for full details and programming
377information. See the new section 4.4 "General Purpose Event (GPE) Support"
378for a full overview, and section 8.7 "ACPI General Purpose Event Management"
379for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming,
380Bob Moore, Rafael Wysocki.
381
382Implemented a new GPE feature for Windows compatibility, the "Implicit Wake
383GPE Notify". This feature will automatically issue a Notify(2) on a device
384when a Wake GPE is received if there is no corresponding GPE method or
385handler. ACPICA BZ 870.
386
387Fixed a problem with the Scope() operator during table parse and load phase.
388During load phase (table load or method execution), the scope operator should
389not enter the target into the namespace. Instead, it should open a new scope
390at the target location. Linux BZ 19462, ACPICA BZ 882.
391
392Example Code and Data Size: These are the sizes for the OS-independent
393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
394debug version of the code includes the debug output trace mechanism and has a
395much larger code and data size.
396
397  Previous Release:
398    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
399    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
400  Current Release:
401    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
402    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
403
4042) iASL Compiler/Disassembler and Tools:
405
406iASL: Relax the alphanumeric restriction on _CID strings. These strings are
407"bus-specific" per the ACPI specification, and therefore any characters are
408acceptable. The only checks that can be performed are for a null string and
409perhaps for a leading asterisk. ACPICA BZ 886.
410
411iASL: Fixed a problem where a syntax error that caused a premature EOF
412condition on the source file emitted a very confusing error message. The
413premature EOF is now detected correctly. ACPICA BZ 891.
414
415Disassembler: Decode the AccessSize within a Generic Address Structure (byte
416access, word access, etc.) Note, this field does not allow arbitrary bit
417access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
418
419New: AcpiNames utility - Example namespace dump utility. Shows an example of
420ACPICA configuration for a minimal namespace dump utility. Uses table and
421namespace managers, but no AML interpreter. Does not add any functionality
422over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
423partition and configure ACPICA. ACPICA BZ 883.
424
425AML Debugger: Increased the debugger buffer size for method return objects.
426Was 4K, increased to 16K. Also enhanced error messages for debugger method
427execution, including the buffer overflow case.
428
429----------------------------------------
43013 October 2010. Summary of changes for version 20101013:
431
4321) ACPI CA Core Subsystem:
433
434Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, now
435clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
436HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
437
438Changed the type of the predefined namespace object _TZ from ThermalZone to
439Device. This was found to be confusing to the host software that processes
440the various thermal zones, since _TZ is not really a ThermalZone. However, a
441Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
442Zhang.
443
444Added Windows Vista SP2 to the list of supported _OSI strings. The actual
445string is "Windows 2006 SP2".
446
447Eliminated duplicate code in AcpiUtExecute* functions. Now that the nsrepair
448code automatically repairs _HID-related strings, this type of code is no
449longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878.
450
451Example Code and Data Size: These are the sizes for the OS-independent
452acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
453debug version of the code includes the debug output trace mechanism and has a
454much larger code and data size.
455
456  Previous Release:
457    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
458    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
459  Current Release:
460    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
461    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
462
4632) iASL Compiler/Disassembler and Tools:
464
465iASL: Implemented additional compile-time validation for _HID strings. The
466non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length of
467the string must be exactly seven or eight characters. For both _HID and _CID
468strings, all characters must be alphanumeric. ACPICA BZ 874.
469
470iASL: Allow certain "null" resource descriptors. Some BIOS code creates
471descriptors that are mostly or all zeros, with the expectation that they will
472be filled in at runtime. iASL now allows this as long as there is a "resource
473tag" (name) associated with the descriptor, which gives the ASL a handle
474needed to modify the descriptor. ACPICA BZ 873.
475
476Added single-thread support to the generic Unix application OSL. Primarily
477for iASL support, this change removes the use of semaphores in the single-
478threaded ACPICA tools/applications - increasing performance. The
479_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
480option. ACPICA BZ 879.
481
482AcpiExec: several fixes for the 64-bit version. Adds XSDT support and support
483for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
484
485iASL: Moved all compiler messages to a new file, aslmessages.h.
486
487----------------------------------------
48815 September 2010. Summary of changes for version 20100915:
489
4901) ACPI CA Core Subsystem:
491
492Removed the AcpiOsDerivePciId OSL interface. The various host implementations
493of this function were not OS-dependent and are now obsolete and can be
494removed from all host OSLs. This function has been replaced by
495AcpiHwDerivePciId, which is now part of the ACPICA core code.
496AcpiHwDerivePciId has been implemented without recursion. Adds one new
497module, hwpci.c. ACPICA BZ 857.
498
499Implemented a dynamic repair for _HID and _CID strings. The following
500problems are now repaired at runtime: 1) Remove a leading asterisk in the
501string, and 2) the entire string is uppercased. Both repairs are in
502accordance with the ACPI specification and will simplify host driver code.
503ACPICA BZ 871.
504
505The ACPI_THREAD_ID type is no longer configurable, internally it is now
506always UINT64. This simplifies the ACPICA code, especially any printf output.
507UINT64 is the only common data type for all thread_id types across all
508operating systems. It is now up to the host OSL to cast the native thread_id
509type to UINT64 before returning the value to ACPICA (via AcpiOsGetThreadId).
510Lin Ming, Bob Moore.
511
512Added the ACPI_INLINE type to enhance the ACPICA configuration. The "inline"
513keyword is not standard across compilers, and this type allows inline to be
514configured on a per-compiler basis. Lin Ming.
515
516Made the system global AcpiGbl_SystemAwakeAndRunning publically available.
517Added an extern for this boolean in acpixf.h. Some hosts utilize this value
518during suspend/restore operations. ACPICA BZ 869.
519
520All code that implements error/warning messages with the "ACPI:" prefix has
521been moved to a new module, utxferror.c.
522
523The UINT64_OVERLAY was moved to utmath.c, which is the only module where it
524is used. ACPICA BZ 829. Lin Ming, Bob Moore.
525
526Example Code and Data Size: These are the sizes for the OS-independent
527acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
528debug version of the code includes the debug output trace mechanism and has a
529much larger code and data size.
530
531  Previous Release:
532    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
533    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
534  Current Release:
535    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
536    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
537
5382) iASL Compiler/Disassembler and Tools:
539
540iASL/Disassembler: Write ACPI errors to stderr instead of the output file.
541This keeps the output files free of random error messages that may originate
542from within the namespace/interpreter code. Used this opportunity to merge
543all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
544866. Lin Ming, Bob Moore.
545
546Tools: update some printfs for ansi warnings on size_t. Handle width change
547of size_t on 32-bit versus 64-bit generations. Lin Ming.
548
549----------------------------------------
55006 August 2010. Summary of changes for version 20100806:
551
5521) ACPI CA Core Subsystem:
553
554Designed and implemented a new host interface to the _OSI support code. This
555will allow the host to dynamically add or remove multiple _OSI strings, as
556well as install an optional handler that is called for each _OSI invocation.
557Also added a new AML debugger command, 'osi' to display and modify the global
558_OSI string table, and test support in the AcpiExec utility. See the ACPICA
559reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
560New Functions:
561    AcpiInstallInterface - Add an _OSI string.
562    AcpiRemoveInterface - Delete an _OSI string.
563    AcpiInstallInterfaceHandler - Install optional _OSI handler.
564Obsolete Functions:
565    AcpiOsValidateInterface - no longer used.
566New Files:
567    source/components/utilities/utosi.c
568
569Re-introduced the support to enable multi-byte transfers for Embedded
570Controller (EC) operation regions. A reported problem was found to be a bug
571in the host OS, not in the multi-byte support. Previously, the maximum data
572size passed to the EC operation region handler was a single byte. There are
573often EC Fields larger than one byte that need to be transferred, and it is
574useful for the EC driver to lock these as a single transaction. This change
575enables single transfers larger than 8 bits. This effectively changes the
576access to the EC space from ByteAcc to AnyAcc, and will probably require
577changes to the host OS Embedded Controller driver to enable 16/32/64/256-bit
578transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
579
580Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
581prototype in acpiosxf.h had the output value pointer as a (void *).
582It should be a (UINT64 *). This may affect some host OSL code.
583
584Fixed a couple problems with the recently modified Linux makefiles for iASL
585and AcpiExec. These new makefiles place the generated object files in the
586local directory so that there can be no collisions between the files that are
587shared between them that are compiled with different options.
588
589Example Code and Data Size: These are the sizes for the OS-independent
590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
591debug version of the code includes the debug output trace mechanism and has a
592much larger code and data size.
593
594  Previous Release:
595    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
596    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
597  Current Release:
598    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
599    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
600
6012) iASL Compiler/Disassembler and Tools:
602
603iASL/Disassembler: Added a new option (-da, "disassemble all") to load the
604namespace from and disassemble an entire group of AML files. Useful for
605loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) and
606disassembling with one simple command. ACPICA BZ 865. Lin Ming.
607
608iASL: Allow multiple invocations of -e option. This change allows multiple
609uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 834.
610Lin Ming.
611
612----------------------------------------
61302 July 2010. Summary of changes for version 20100702:
614
6151) ACPI CA Core Subsystem:
616
617Implemented several updates to the recently added GPE reference count
618support. The model for "wake" GPEs is changing to give the host OS complete
619control of these GPEs. Eventually, the ACPICA core will not execute any _PRW
620methods, since the host already must execute them. Also, additional changes
621were made to help ensure that the reference counts are kept in proper
622synchronization with reality. Rafael J. Wysocki.
623
6241) Ensure that GPEs are not enabled twice during initialization.
6252) Ensure that GPE enable masks stay in sync with the reference count.
6263) Do not inadvertently enable GPEs when writing GPE registers.
6274) Remove the internal wake reference counter and add new AcpiGpeWakeup
628interface. This interface will set or clear individual GPEs for wakeup.
6295) Remove GpeType argument from AcpiEnable and AcpiDisable. These interfaces
630are now used for "runtime" GPEs only.
631
632Changed the behavior of the GPE install/remove handler interfaces. The GPE is
633no longer disabled during this process, as it was found to cause problems on
634some machines. Rafael J. Wysocki.
635
636Reverted a change introduced in version 20100528 to enable Embedded
637Controller multi-byte transfers. This change was found to cause problems with
638Index Fields and possibly Bank Fields. It will be reintroduced when these
639problems have been resolved.
640
641Fixed a problem with references to Alias objects within Package Objects. A
642reference to an Alias within the definition of a Package was not always
643resolved properly. Aliases to objects like Processors, Thermal zones, etc.
644were resolved to the actual object instead of a reference to the object as it
645should be. Package objects are only allowed to contain integer, string,
646buffer, package, and reference objects. Redhat bugzilla 608648.
647
648Example Code and Data Size: These are the sizes for the OS-independent
649acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
650debug version of the code includes the debug output trace mechanism and has a
651much larger code and data size.
652
653  Previous Release:
654    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
655    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
656  Current Release:
657    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
658    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
659
6602) iASL Compiler/Disassembler and Tools:
661
662iASL: Implemented a new compiler subsystem to allow definition and
663compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. These
664are called "ACPI Data Tables", and the new compiler is the "Data Table
665Compiler". This compiler is intended to simplify the existing error-prone
666process of creating these tables for the BIOS, as well as allowing the
667disassembly, modification, recompilation, and override of existing ACPI data
668tables. See the iASL User Guide for detailed information.
669
670iASL: Implemented a new Template Generator option in support of the new Data
671Table Compiler. This option will create examples of all known ACPI tables
672that can be used as the basis for table development. See the iASL
673documentation and the -T option.
674
675Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
676Descriptor Table).
677
678Updated the Linux makefiles for iASL and AcpiExec to place the generated
679object files in the local directory so that there can be no collisions
680between the shared files between them that are generated with different
681options.
682
683Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use
684the #define __APPLE__ to enable this support.
685
686----------------------------------------
68728 May 2010. Summary of changes for version 20100528:
688
689Note: The ACPI 4.0a specification was released on April 5, 2010 and is
690available at www.acpi.info. This is primarily an errata release.
691
6921) ACPI CA Core Subsystem:
693
694Undefined ACPI tables: We are looking for the definitions for the following
695ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
696
697Implemented support to enable multi-byte transfers for Embedded Controller
698(EC) operation regions. Previously, the maximum data size passed to the EC
699operation region handler was a single byte. There are often EC Fields larger
700than one byte that need to be transferred, and it is useful for the EC driver
701to lock these as a single transaction. This change enables single transfers
702larger than 8 bits. This effectively changes the access to the EC space from
703ByteAcc to AnyAcc, and will probably require changes to the host OS Embedded
704Controller driver to enable 16/32/64/256-bit transfers in addition to 8-bit
705transfers. Alexey Starikovskiy, Lin Ming
706
707Implemented a performance enhancement for namespace search and access. This
708change enhances the performance of namespace searches and walks by adding a
709backpointer to the parent in each namespace node. On large namespaces, this
710change can improve overall ACPI performance by up to 9X. Adding a pointer to
711each namespace node increases the overall size of the internal namespace by
712about 5%, since each namespace entry usually consists of both a namespace
713node and an ACPI operand object. However, this is the first growth of the
714namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
715
716Implemented a performance optimization that reduces the number of namespace
717walks. On control method exit, only walk the namespace if the method is known
718to have created namespace objects outside of its local scope. Previously, the
719entire namespace was traversed on each control method exit. This change can
720improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob Moore.
721
722Added support to truncate I/O addresses to 16 bits for Windows compatibility.
723Some ASL code has been seen in the field that inadvertently has bits set
724above bit 15. This feature is optional and is enabled if the BIOS requests
725any Windows OSI strings. It can also be enabled by the host OS. Matthew
726Garrett, Bob Moore.
727
728Added support to limit the maximum time for the ASL Sleep() operator. To
729prevent accidental deep sleeps, limit the maximum time that Sleep() will
730actually sleep. Configurable, the default maximum is two seconds. ACPICA
731bugzilla 854.
732
733Added run-time validation support for the _WDG and_WED Microsoft predefined
734methods. These objects are defined by "Windows Instrumentation", and are not
735part of the ACPI spec. ACPICA BZ 860.
736
737Expanded all statistic counters used during namespace and device
738initialization from 16 to 32 bits in order to support very large namespaces.
739
740Replaced all instances of %d in printf format specifiers with %u since nearly
741all integers in ACPICA are unsigned.
742
743Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly returned
744as AE_NO_HANDLER.
745
746Example Code and Data Size: These are the sizes for the OS-independent
747acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
748debug version of the code includes the debug output trace mechanism and has a
749much larger code and data size.
750
751  Previous Release:
752    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
753    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
754  Current Release:
755    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
756    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
757
7582) iASL Compiler/Disassembler and Tools:
759
760iASL: Added compiler support for the _WDG and_WED Microsoft predefined
761methods. These objects are defined by "Windows Instrumentation", and are not
762part of the ACPI spec. ACPICA BZ 860.
763
764AcpiExec: added option to disable the memory tracking mechanism. The -dt
765option will disable the tracking mechanism, which improves performance
766considerably.
767
768AcpiExec: Restructured the command line options into -d (disable) and -e
769(enable) options.
770
771----------------------------------------
77228 April 2010. Summary of changes for version 20100428:
773
7741) ACPI CA Core Subsystem:
775
776Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
777including FADT-based and GPE Block Devices, execute any _PRW methods in the
778new table, and process any _Lxx/_Exx GPE methods in the new table. Any
779runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
780immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
781Devices. Provides compatibility with other ACPI implementations. Two new
782files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob Moore.
783
784Fixed a regression introduced in version 20100331 within the table manager
785where initial table loading could fail. This was introduced in the fix for
786AcpiReallocateRootTable. Also, renamed some of fields in the table manager
787data structures to clarify their meaning and use.
788
789Fixed a possible allocation overrun during internal object copy in
790AcpiUtCopySimpleObject. The original code did not correctly handle the case
791where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 847.
792
793Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
794possible access beyond end-of-allocation. Also, now fully validate descriptor
795(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
796
797Example Code and Data Size: These are the sizes for the OS-independent
798acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
799debug version of the code includes the debug output trace mechanism and has a
800much larger code and data size.
801
802  Previous Release:
803    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
804    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
805  Current Release:
806    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
807    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
808
8092) iASL Compiler/Disassembler and Tools:
810
811iASL: Implemented Min/Max/Len/Gran validation for address resource
812descriptors. This change implements validation for the address fields that
813are common to all address-type resource descriptors. These checks are
814implemented: Checks for valid Min/Max, length within the Min/Max window,
815valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per
816table 6-40 in the ACPI 4.0a specification. Also split the large aslrestype1.c
817and aslrestype2.c files into five new files. ACPICA BZ 840.
818
819iASL: Added support for the _Wxx predefined names. This support was missing
820and these names were not recognized by the compiler as valid predefined
821names. ACPICA BZ 851.
822
823iASL: Added an error for all predefined names that are defined to return no
824value and thus must be implemented as Control Methods. These include all of
825the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
826names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
827
828iASL: Implemented the -ts option to emit hex AML data in ASL format, as an
829ASL Buffer. Allows ACPI tables to be easily included within ASL files, to be
830dynamically loaded via the Load() operator. Also cleaned up output for the -
831ta and -tc options. ACPICA BZ 853.
832
833Tests: Added a new file with examples of extended iASL error checking.
834Demonstrates the advanced error checking ability of the iASL compiler.
835Available at tests/misc/badcode.asl.
836
837----------------------------------------
83831 March 2010. Summary of changes for version 20100331:
839
8401) ACPI CA Core Subsystem:
841
842Completed a major update for the GPE support in order to improve support for
843shared GPEs and to simplify both host OS and ACPICA code. Added a reference
844count mechanism to support shared GPEs that require multiple device drivers.
845Several external interfaces have changed. One external interface has been
846removed. One new external interface was added. Most of the GPE external
847interfaces now use the GPE spinlock instead of the events mutex (and the
848Flags parameter for many GPE interfaces has been removed.) See the updated
849ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, Rafael
850Wysocki. ACPICA BZ 831.
851
852Changed:
853    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
854Removed:
855    AcpiSetGpeType
856New:
857    AcpiSetGpe
858
859Implemented write support for DataTable operation regions. These regions are
860defined via the DataTableRegion() operator. Previously, only read support was
861implemented. The ACPI specification allows DataTableRegions to be read/write,
862however.
863
864Implemented a new subsystem option to force a copy of the DSDT to local
865memory. Optionally copy the entire DSDT to local memory (instead of simply
866mapping it.) There are some (albeit very rare) BIOSs that corrupt or replace
867the original DSDT, creating the need for this option. Default is FALSE, do
868not copy the DSDT.
869
870Implemented detection of a corrupted or replaced DSDT. This change adds
871support to detect a DSDT that has been corrupted and/or replaced from outside
872the OS (by firmware). This is typically catastrophic for the system, but has
873been seen on some machines. Once this problem has been detected, the DSDT
874copy option can be enabled via system configuration. Lin Ming, Bob Moore.
875
876Fixed two problems with AcpiReallocateRootTable during the root table copy.
877When copying the root table to the new allocation, the length used was
878incorrect. The new size was used instead of the current table size, meaning
879too much data was copied. Also, the count of available slots for ACPI tables
880was not set correctly. Alexey Starikovskiy, Bob Moore.
881
882Example Code and Data Size: These are the sizes for the OS-independent
883acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
884debug version of the code includes the debug output trace mechanism and has a
885much larger code and data size.
886
887  Previous Release:
888    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
889    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
890  Current Release:
891    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
892    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
893
8942) iASL Compiler/Disassembler and Tools:
895
896iASL: Implement limited typechecking for values returned from predefined
897control methods. The type of any returned static (unnamed) object is now
898validated. For example, Return(1). ACPICA BZ 786.
899
900iASL: Fixed a predefined name object verification regression. Fixes a problem
901introduced in version 20100304. An error is incorrectly generated if a
902predefined name is declared as a static named object with a value defined
903using the keywords "Zero", "One", or "Ones". Lin Ming.
904
905iASL: Added Windows 7 support for the -g option (get local ACPI tables) by
906reducing the requested registry access rights. ACPICA BZ 842.
907
908Disassembler: fixed a possible fault when generating External() statements.
909Introduced in commit ae7d6fd: Properly handle externals with parent-prefix
910(carat). Fixes a string length allocation calculation. Lin Ming.
911
912----------------------------------------
91304 March 2010. Summary of changes for version 20100304:
914
9151) ACPI CA Core Subsystem:
916
917Fixed a possible problem with the AML Mutex handling function
918AcpiExReleaseMutex where the function could fault under the very rare
919condition when the interpreter has blocked, the interpreter lock is released,
920the interpreter is then reentered via the same thread, and attempts to
921acquire an AML mutex that was previously acquired. FreeBSD report 140979. Lin
922Ming.
923
924Implemented additional configuration support for the AML "Debug Object".
925Output from the debug object can now be enabled via a global variable,
926AcpiGbl_EnableAmlDebugObject. This will assist with remote machine debugging.
927This debug output is now available in the release version of ACPICA instead
928of just the debug version. Also, the entire debug output module can now be
929configured out of the ACPICA build if desired. One new file added,
930executer/exdebug.c. Lin Ming, Bob Moore.
931
932Added header support for the ACPI MCHI table (Management Controller Host
933Interface Table). This table was added in ACPI 4.0, but the defining document
934has only recently become available.
935
936Standardized output of integer values for ACPICA warnings/errors. Always use
9370x prefix for hex output, always use %u for unsigned integer decimal output.
938Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400
939invocations.) These invocations were converted from the original
940ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
941
942Example Code and Data Size: These are the sizes for the OS-independent
943acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
944debug version of the code includes the debug output trace mechanism and has a
945much larger code and data size.
946
947  Previous Release:
948    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
949    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
950  Current Release:
951    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
952    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
953
9542) iASL Compiler/Disassembler and Tools:
955
956iASL: Implemented typechecking support for static (non-control method)
957predefined named objects that are declared with the Name() operator. For
958example, the type of this object is now validated to be of type Integer:
959Name(_BBN, 1). This change migrates the compiler to using the core predefined
960name table instead of maintaining a local version. Added a new file,
961aslpredef.c. ACPICA BZ 832.
962
963Disassembler: Added support for the ACPI 4.0 MCHI table.
964
965----------------------------------------
96621 January 2010. Summary of changes for version 20100121:
967
9681) ACPI CA Core Subsystem:
969
970Added the 2010 copyright to all module headers and signons. This affects
971virtually every file in the ACPICA core subsystem, the iASL compiler, the
972tools/utilities, and the test suites.
973
974Implemented a change to the AcpiGetDevices interface to eliminate unnecessary
975invocations of the _STA method. In the case where a specific _HID is
976requested, do not run _STA until a _HID match is found. This eliminates
977potentially dozens of _STA calls during a search for a particular device/HID,
978which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
979
980Implemented an additional repair for predefined method return values. Attempt
981to repair unexpected NULL elements within returned Package objects. Create an
982Integer of value zero, a NULL String, or a zero-length Buffer as appropriate.
983ACPICA BZ 818. Lin Ming, Bob Moore.
984
985Removed the obsolete ACPI_INTEGER data type. This type was introduced as the
986code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 (with
98764-bit AML integers). It is now obsolete and this change removes it from the
988ACPICA code base, replaced by UINT64. The original typedef has been retained
989for now for compatibility with existing device driver code. ACPICA BZ 824.
990
991Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in
992the parse tree object.
993
994Added additional warning options for the gcc-4 generation. Updated the source
995accordingly. This includes some code restructuring to eliminate unreachable
996code, elimination of some gotos, elimination of unused return values, some
997additional casting, and removal of redundant declarations.
998
999Example Code and Data Size: These are the sizes for the OS-independent
1000acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1001debug version of the code includes the debug output trace mechanism and has a
1002much larger code and data size.
1003
1004  Previous Release:
1005    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
1006    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
1007  Current Release:
1008    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
1009    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
1010
10112) iASL Compiler/Disassembler and Tools:
1012
1013No functional changes for this release.
1014
1015----------------------------------------
101614 December 2009. Summary of changes for version 20091214:
1017
10181) ACPI CA Core Subsystem:
1019
1020Enhanced automatic data type conversions for predefined name repairs. This
1021change expands the automatic repairs/conversions for predefined name return
1022values to make Integers, Strings, and Buffers fully interchangeable. Also, a
1023Buffer can be converted to a Package of Integers if necessary. The nsrepair.c
1024module was completely restructured. Lin Ming, Bob Moore.
1025
1026Implemented automatic removal of null package elements during predefined name
1027repairs. This change will automatically remove embedded and trailing NULL
1028package elements from returned package objects that are defined to contain a
1029variable number of sub-packages. The driver is then presented with a package
1030with no null elements to deal with. ACPICA BZ 819.
1031
1032Implemented a repair for the predefined _FDE and _GTM names. The expected
1033return value for both names is a Buffer of 5 DWORDs. This repair fixes two
1034possible problems (both seen in the field), where a package of integers is
1035returned, or a buffer of BYTEs is returned. With assistance from Jung-uk Kim.
1036
1037Implemented additional module-level code support. This change will properly
1038execute module-level code that is not at the root of the namespace (under a
1039Device object, etc.). Now executes the code within the current scope instead
1040of the root. ACPICA BZ 762. Lin Ming.
1041
1042Fixed possible mutex acquisition errors when running _REG methods. Fixes a
1043problem where mutex errors can occur when running a _REG method that is in
1044the same scope as a method-defined operation region or an operation region
1045under a module-level IF block. This type of code is rare, so the problem has
1046not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
1047
1048Fixed a possible memory leak during module-level code execution. An object
1049could be leaked for each block of executed module-level code if the
1050interpreter slack mode is enabled This change deletes any implicitly returned
1051object from the module-level code block. Lin Ming.
1052
1053Removed messages for successful predefined repair(s). The repair mechanism
1054was considered too wordy. Now, messages are only unconditionally emitted if
1055the return object cannot be repaired. Existing messages for successful
1056repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 827.
1057
1058Example Code and Data Size: These are the sizes for the OS-independent
1059acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1060debug version of the code includes the debug output trace mechanism and has a
1061much larger code and data size.
1062
1063  Previous Release:
1064    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
1065    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
1066  Current Release:
1067    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
1068    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
1069
10702) iASL Compiler/Disassembler and Tools:
1071
1072iASL: Fixed a regression introduced in 20091112 where intermediate .SRC files
1073were no longer automatically removed at the termination of the compile.
1074
1075acpiexec: Implemented the -f option to specify default region fill value.
1076This option specifies the value used to initialize buffers that simulate
1077operation regions. Default value is zero. Useful for debugging problems that
1078depend on a specific initial value for a region or field.
1079
1080----------------------------------------
108112 November 2009. Summary of changes for version 20091112:
1082
10831) ACPI CA Core Subsystem:
1084
1085Implemented a post-order callback to AcpiWalkNamespace. The existing
1086interface only has a pre-order callback. This change adds an additional
1087parameter for a post-order callback which will be more useful for bus scans.
1088ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
1089
1090Modified the behavior of the operation region memory mapping cache for
1091SystemMemory. Ensure that the memory mappings created for operation regions
1092do not cross 4K page boundaries. Crossing a page boundary while mapping
1093regions can cause kernel warnings on some hosts if the pages have different
1094attributes. Such regions are probably BIOS bugs, and this is the workaround.
1095Linux BZ 14445. Lin Ming.
1096
1097Implemented an automatic repair for predefined methods that must return
1098sorted lists. This change will repair (by sorting) packages returned by _ALR,
1099_PSS, and _TSS. Drivers can now assume that the packages are correctly sorted
1100and do not contain NULL package elements. Adds one new file,
1101namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
1102
1103Fixed a possible fault during predefined name validation if a return Package
1104object contains NULL elements. Also adds a warning if a NULL element is
1105followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement may
1106include repair or removal of all such NULL elements where possible.
1107
1108Implemented additional module-level executable AML code support. This change
1109will execute module-level code that is not at the root of the namespace
1110(under a Device object, etc.) at table load time. Module-level executable AML
1111code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
1112
1113Implemented a new internal function to create Integer objects. This function
1114simplifies miscellaneous object creation code. ACPICA BZ 823.
1115
1116Reduced the severity of predefined repair messages, Warning to Info. Since
1117the object was successfully repaired, a warning is too severe. Reduced to an
1118info message for now. These messages may eventually be changed to debug-only.
1119ACPICA BZ 812.
1120
1121Example Code and Data Size: These are the sizes for the OS-independent
1122acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1123debug version of the code includes the debug output trace mechanism and has a
1124much larger code and data size.
1125
1126  Previous Release:
1127    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
1128    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
1129  Current Release:
1130    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
1131    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
1132
11332) iASL Compiler/Disassembler and Tools:
1134
1135iASL: Implemented Switch() with While(1) so that Break works correctly. This
1136change correctly implements the Switch operator with a surrounding While(1)
1137so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
1138
1139iASL: Added a message if a package initializer list is shorter than package
1140length. Adds a new remark for a Package() declaration if an initializer list
1141exists, but is shorter than the declared length of the package. Although
1142technically legal, this is probably a coding error and it is seen in the
1143field. ACPICA BZ 815. Lin Ming, Bob Moore.
1144
1145iASL: Fixed a problem where the compiler could fault after the maximum number
1146of errors was reached (200).
1147
1148acpixtract: Fixed a possible warning for pointer cast if the compiler warning
1149level set very high.
1150
1151----------------------------------------
115213 October 2009. Summary of changes for version 20091013:
1153
11541) ACPI CA Core Subsystem:
1155
1156Fixed a problem where an Operation Region _REG method could be executed more
1157than once. If a custom address space handler is installed by the host before
1158the "initialize operation regions" phase of the ACPICA initialization, any
1159_REG methods for that address space could be executed twice. This change
1160fixes the problem. ACPICA BZ 427. Lin Ming.
1161
1162Fixed a possible memory leak for the Scope() ASL operator. When the exact
1163invocation of "Scope(\)" is executed (change scope to root), one internal
1164operand object was leaked. Lin Ming.
1165
1166Implemented a run-time repair for the _MAT predefined method. If the _MAT
1167return value is defined as a Field object in the AML, and the field
1168size is less than or equal to the default width of an integer (32 or 64),_MAT
1169can incorrectly return an Integer instead of a Buffer. ACPICA now
1170automatically repairs this problem. ACPICA BZ 810.
1171
1172Implemented a run-time repair for the _BIF and _BIX predefined methods. The
1173"OEM Information" field is often incorrectly returned as an Integer with
1174value zero if the field is not supported by the platform. This is due to an
1175ambiguity in the ACPI specification. The field should always be a string.
1176ACPICA now automatically repairs this problem by returning a NULL string
1177within the returned Package. ACPICA BZ 807.
1178
1179Example Code and Data Size: These are the sizes for the OS-independent
1180acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1181debug version of the code includes the debug output trace mechanism and has a
1182much larger code and data size.
1183
1184  Previous Release:
1185    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
1186    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
1187  Current Release:
1188    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
1189    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
1190
11912) iASL Compiler/Disassembler and Tools:
1192
1193Disassembler: Fixed a problem where references to external symbols that
1194contained one or more parent-prefixes (carats) were not handled correctly,
1195possibly causing a fault. ACPICA BZ 806. Lin Ming.
1196
1197Disassembler: Restructured the code so that all functions that handle
1198external symbols are in a single module. One new file is added,
1199common/dmextern.c.
1200
1201AML Debugger: Added a max count argument for the Batch command (which
1202executes multiple predefined methods within the namespace.)
1203
1204iASL: Updated the compiler documentation (User Reference.) Available at
1205http://www.acpica.org/documentation/. ACPICA BZ 750.
1206
1207AcpiXtract: Updated for Lint and other formatting changes. Close all open
1208files.
1209
1210----------------------------------------
121103 September 2009. Summary of changes for version 20090903:
1212
12131) ACPI CA Core Subsystem:
1214
1215For Windows Vista compatibility, added the automatic execution of an _INI
1216method located at the namespace root (\_INI). This method is executed at
1217table load time. This support is in addition to the automatic execution of
1218\_SB._INI. Lin Ming.
1219
1220Fixed a possible memory leak in the interpreter for AML package objects if
1221the package initializer list is longer than the defined size of the package.
1222This apparently can only happen if the BIOS changes the package size on the
1223fly (seen in a _PSS object), as ASL compilers do not allow this. The
1224interpreter will truncate the package to the defined size (and issue an error
1225message), but previously could leave the extra objects undeleted if they were
1226pre-created during the argument processing (such is the case if the package
1227consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
1228
1229Fixed a problem seen when a Buffer or String is stored to itself via ASL.
1230This has been reported in the field. Previously, ACPICA would zero out the
1231buffer/string. Now, the operation is treated as a noop. Provides Windows
1232compatibility. ACPICA BZ 803. Lin Ming.
1233
1234Removed an extraneous error message for ASL constructs of the form
1235Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements
1236are seen in many BIOSs and are once again treated as NOOPs and no error is
1237emitted when they are encountered. ACPICA BZ 785.
1238
1239Fixed an extraneous warning message if a _DSM reserved method returns a
1240Package object. _DSM can return any type of object, so validation on the
1241return type cannot be performed. ACPICA BZ 802.
1242
1243Example Code and Data Size: These are the sizes for the OS-independent
1244acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1245debug version of the code includes the debug output trace mechanism and has a
1246much larger code and data size.
1247
1248  Previous Release:
1249    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
1250    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
1251  Current Release:
1252    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
1253    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
1254
12552) iASL Compiler/Disassembler and Tools:
1256
1257iASL: Fixed a problem with the use of the Alias operator and Resource
1258Templates. The correct alias is now constructed and no error is emitted.
1259ACPICA BZ 738.
1260
1261iASL: Implemented the -I option to specify additional search directories for
1262include files. Allows multiple additional search paths for include files.
1263Directories are searched in the order specified on the command line (after
1264the local directory is searched.) ACPICA BZ 800.
1265
1266iASL: Fixed a problem where the full pathname for include files was not
1267emitted for warnings/errors. This caused the IDE support to not work
1268properly. ACPICA BZ 765.
1269
1270iASL: Implemented the -@ option to specify a Windows-style response file
1271containing additional command line options. ACPICA BZ 801.
1272
1273AcpiExec: Added support to load multiple AML files simultaneously (such as a
1274DSDT and multiple SSDTs). Also added support for wildcards within the AML
1275pathname. These features allow all machine tables to be easily loaded and
1276debugged together. ACPICA BZ 804.
1277
1278Disassembler: Added missing support for disassembly of HEST table Error Bank
1279subtables.
1280
1281----------------------------------------
128230 July 2009. Summary of changes for version 20090730:
1283
1284The ACPI 4.0 implementation for ACPICA is complete with this release.
1285
12861) ACPI CA Core Subsystem:
1287
1288ACPI 4.0: Added header file support for all new and changed ACPI tables.
1289Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new
1290for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT,
1291EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There
1292have been some ACPI 4.0 changes to other existing tables. Split the large
1293actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
1294
1295ACPI 4.0: Implemented predefined name validation for all new names. There are
129631 new names in ACPI 4.0. The predefined validation module was split into two
1297files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
1298
1299Implemented support for so-called "module-level executable code". This is
1300executable AML code that exists outside of any control method and is intended
1301to be executed at table load time. Although illegal since ACPI 2.0, this type
1302of code still exists and is apparently still being created. Blocks of this
1303code are now detected and executed as intended. Currently, the code blocks
1304must exist under either an If, Else, or While construct; these are the
1305typical cases seen in the field. ACPICA BZ 762. Lin Ming.
1306
1307Implemented an automatic dynamic repair for predefined names that return
1308nested Package objects. This applies to predefined names that are defined to
1309return a variable-length Package of sub-packages. If the number of sub-
1310packages is one, BIOS code is occasionally seen that creates a simple single
1311package with no sub-packages. This code attempts to fix the problem by
1312wrapping a new package object around the existing package. These methods can
1313be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ
1314790.
1315
1316Fixed a regression introduced in 20090625 for the AcpiGetDevices interface.
1317The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA
1318BZ 793.
1319
1320Fixed a problem with AcpiReset where the reset would silently fail if the
1321register was one of the protected I/O ports. AcpiReset now bypasses the port
1322validation mechanism. This may eventually be driven into the AcpiRead/Write
1323interfaces.
1324
1325Fixed a regression related to the recent update of the AcpiRead/Write
1326interfaces. A sleep/suspend could fail if the optional PM2 Control register
1327does not exist during an attempt to write the Bus Master Arbitration bit.
1328(However, some hosts already delete the code that writes this bit, and the
1329code may in fact be obsolete at this date.) ACPICA BZ 799.
1330
1331Fixed a problem where AcpiTerminate could fault if inadvertently called twice
1332in succession. ACPICA BZ 795.
1333
1334Example Code and Data Size: These are the sizes for the OS-independent
1335acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1336debug version of the code includes the debug output trace mechanism and has a
1337much larger code and data size.
1338
1339  Previous Release:
1340    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
1341    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
1342  Current Release:
1343    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
1344    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
1345
13462) iASL Compiler/Disassembler and Tools:
1347
1348ACPI 4.0: Implemented disassembler support for all new ACPI tables and
1349changes to existing tables. ACPICA BZ 775.
1350
1351----------------------------------------
135225 June 2009. Summary of changes for version 20090625:
1353
1354The ACPI 4.0 Specification was released on June 16 and is available at
1355www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
1356continue for the next few releases.
1357
13581) ACPI CA Core Subsystem:
1359
1360ACPI 4.0: Implemented interpreter support for the IPMI operation region
1361address space. Includes support for bi-directional data buffers and an IPMI
1362address space handler (to be installed by an IPMI device driver.) ACPICA BZ
1363773. Lin Ming.
1364
1365ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes
1366support in both the header files and the disassembler.
1367
1368Completed a major update for the AcpiGetObjectInfo external interface.
1369Changes include:
1370 - Support for variable, unlimited length HID, UID, and CID strings.
1371 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
1372 - Call the _SxW power methods on behalf of a device object.
1373 - Determine if a device is a PCI root bridge.
1374 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
1375These changes will require an update to all callers of this interface. See
1376the updated ACPICA Programmer Reference for details. One new source file has
1377been added - utilities/utids.c. ACPICA BZ 368, 780.
1378
1379Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
1380transfers. The Value parameter has been extended from 32 bits to 64 bits in
1381order to support new ACPI 4.0 tables. These changes will require an update to
1382all callers of these interfaces. See the ACPICA Programmer Reference for
1383details. ACPICA BZ 768.
1384
1385Fixed several problems with AcpiAttachData. The handler was not invoked when
1386the host node was deleted. The data sub-object was not automatically deleted
1387when the host node was deleted. The interface to the handler had an unused
1388parameter, this was removed. ACPICA BZ 778.
1389
1390Enhanced the function that dumps ACPI table headers. All non-printable
1391characters in the string fields are now replaced with '?' (Signature, OemId,
1392OemTableId, and CompilerId.) ACPI tables with non-printable characters in
1393these fields are occasionally seen in the field. ACPICA BZ 788.
1394
1395Fixed a problem with predefined method repair code where the code that
1396attempts to repair/convert an object of incorrect type is only executed on
1397the first time the predefined method is called. The mechanism that disables
1398warnings on subsequent calls was interfering with the repair mechanism.
1399ACPICA BZ 781.
1400
1401Fixed a possible memory leak in the predefined validation/repair code when a
1402buffer is automatically converted to an expected string object.
1403
1404Removed obsolete 16-bit files from the distribution and from the current git
1405tree head. ACPICA BZ 776.
1406
1407Example Code and Data Size: These are the sizes for the OS-independent
1408acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1409debug version of the code includes the debug output trace mechanism and has a
1410much larger code and data size.
1411
1412  Previous Release:
1413    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
1414    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
1415  Current Release:
1416    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
1417    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
1418
14192) iASL Compiler/Disassembler and Tools:
1420
1421ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
1422operation region keyword. ACPICA BZ 771, 772. Lin Ming.
1423
1424ACPI 4.0: iASL - implemented compile-time validation support for all new
1425predefined names and control methods (31 total). ACPICA BZ 769.
1426
1427----------------------------------------
142821 May 2009. Summary of changes for version 20090521:
1429
14301) ACPI CA Core Subsystem:
1431
1432Disabled the preservation of the SCI enable bit in the PM1 control register.
1433The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be
1434a "preserved" bit - "OSPM always preserves this bit position", section
14354.7.3.2.1. However, some machines fail if this bit is in fact preserved
1436because the bit needs to be explicitly set by the OS as a workaround. No
1437machines fail if the bit is not preserved. Therefore, ACPICA no longer
1438attempts to preserve this bit.
1439
1440Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
1441incorrectly formed _PRT package could cause a fault. Added validation to
1442ensure that each package element is actually a sub-package.
1443
1444Implemented a new interface to install or override a single control method,
1445AcpiInstallMethod. This interface is useful when debugging in order to repair
1446an existing method or to install a missing method without having to override
1447the entire ACPI table. See the ACPICA Programmer Reference for use and
1448examples. Lin Ming, Bob Moore.
1449
1450Fixed several reference count issues with the DdbHandle object that is
1451created from a Load or LoadTable operator. Prevent premature deletion of the
1452object. Also, mark the object as invalid once the table has been unloaded.
1453This is needed because the handle itself may not be deleted after the table
1454unload, depending on whether it has been stored in a named object by the
1455caller. Lin Ming.
1456
1457Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
1458mutexes of the same sync level are acquired but then not released in strict
1459opposite order, the internally maintained Current Sync Level becomes confused
1460and can cause subsequent execution errors. ACPICA BZ 471.
1461
1462Changed the allowable release order for ASL mutex objects. The ACPI 4.0
1463specification has been changed to make the SyncLevel for mutex objects more
1464useful. When releasing a mutex, the SyncLevel of the mutex must now be the
1465same as the current sync level. This makes more sense than the previous rule
1466(SyncLevel less than or equal). This change updates the code to match the
1467specification.
1468
1469Fixed a problem with the local version of the AcpiOsPurgeCache function. The
1470(local) cache must be locked during all cache object deletions. Andrew
1471Baumann.
1472
1473Updated the Load operator to use operation region interfaces. This replaces
1474direct memory mapping with region access calls. Now, all region accesses go
1475through the installed region handler as they should.
1476
1477Simplified and optimized the NsGetNextNode function. Reduced parameter count
1478and reduced code for this frequently used function.
1479
1480Example Code and Data Size: These are the sizes for the OS-independent
1481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1482debug version of the code includes the debug output trace mechanism and has a
1483much larger code and data size.
1484
1485  Previous Release:
1486    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
1487    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
1488  Current Release:
1489    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
1490    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
1491
14922) iASL Compiler/Disassembler and Tools:
1493
1494Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems
1495with sub-table disassembly and handling invalid sub-tables. Attempt recovery
1496after an invalid sub-table ID.
1497
1498----------------------------------------
149922 April 2009. Summary of changes for version 20090422:
1500
15011) ACPI CA Core Subsystem:
1502
1503Fixed a compatibility issue with the recently released I/O port protection
1504mechanism. For windows compatibility, 1) On a port protection violation,
1505simply ignore the request and do not return an exception (allow the control
1506method to continue execution.) 2) If only part of the request overlaps a
1507protected port, read/write the individual ports that are not protected. Linux
1508BZ 13036. Lin Ming
1509
1510Enhanced the execution of the ASL/AML BreakPoint operator so that it actually
1511breaks into the AML debugger if the debugger is present. This matches the
1512ACPI-defined behavior.
1513
1514Fixed several possible warnings related to the use of the configurable
1515ACPI_THREAD_ID. This type can now be configured as either an integer or a
1516pointer with no warnings. Also fixes several warnings in printf-like
1517statements for the 64-bit build when the type is configured as a pointer.
1518ACPICA BZ 766, 767.
1519
1520Fixed a number of possible warnings when compiling with gcc 4+ (depending on
1521warning options.) Examples include printf formats, aliasing, unused globals,
1522missing prototypes, missing switch default statements, use of non-ANSI
1523library functions, use of non-ANSI constructs. See generate/unix/Makefile for
1524a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
1525
1526Example Code and Data Size: These are the sizes for the OS-independent
1527acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1528debug version of the code includes the debug output trace mechanism and has a
1529much larger code and data size.
1530
1531  Previous Release:
1532    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
1533    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
1534  Current Release:
1535    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
1536    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
1537
15382) iASL Compiler/Disassembler and Tools:
1539
1540iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on
1541the 64-bit build.
1542
1543iASL: Fixed a problem where the Unix/Linux versions of the compiler could not
1544correctly digest Windows/DOS formatted files (with CR/LF).
1545
1546iASL: Added a new option for "quiet mode" (-va) that produces only the
1547compilation summary, not individual errors and warnings. Useful for large
1548batch compilations.
1549
1550AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex
1551timeout that can be used to detect hang conditions during execution of AML
1552code (includes both internal semaphores and AML-defined mutexes and events.)
1553
1554Added new makefiles for the generation of acpica in a generic unix-like
1555environment. These makefiles are intended to generate the acpica tools and
1556utilities from the original acpica git source tree structure.
1557
1558Test Suites: Updated and cleaned up the documentation files. Updated the
1559copyrights to 2009, affecting all source files. Use the new version of iASL
1560with quiet mode. Increased the number of available semaphores in the Windows
1561OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added
1562an alternate implementation of the semaphore timeout to allow aslts to
1563execute fully on Cygwin.
1564
1565----------------------------------------
156620 March 2009. Summary of changes for version 20090320:
1567
15681) ACPI CA Core Subsystem:
1569
1570Fixed a possible race condition between AcpiWalkNamespace and dynamic table
1571unloads. Added a reader/writer locking mechanism to allow multiple concurrent
1572namespace walks (readers), but block a dynamic table unload until it can gain
1573exclusive write access to the namespace. This fixes a problem where a table
1574unload could (possibly catastrophically) delete the portion of the namespace
1575that is currently being examined by a walk. Adds a new file, utlock.c, that
1576implements the reader/writer lock mechanism. ACPICA BZ 749.
1577
1578Fixed a regression introduced in version 20090220 where a change to the FADT
1579handling could cause the ACPICA subsystem to access non-existent I/O ports.
1580
1581Modified the handling of FADT register and table (FACS/DSDT) addresses. The
1582FADT can contain both 32-bit and 64-bit versions of these addresses.
1583Previously, the 64-bit versions were favored, meaning that if both 32 and 64
1584versions were valid, but not equal, the 64-bit version was used. This was
1585found to cause some machines to fail. Now, in this case, the 32-bit version
1586is used instead. This now matches the Windows behavior.
1587
1588Implemented a new mechanism to protect certain I/O ports. Provides Microsoft
1589compatibility and protects the standard PC I/O ports from access via AML
1590code. Adds a new file, hwvalid.c
1591
1592Fixed a possible extraneous warning message from the FADT support. The
1593message warns of a 32/64 length mismatch between the legacy and GAS
1594definitions for a register.
1595
1596Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is
1597made obsolete by the port protection mechanism above. It was previously used
1598to validate the entire address range of an operation region, which could be
1599incorrect if the range included illegal ports, but fields within the
1600operation region did not actually access those ports. Validation is now
1601performed on a per-field basis instead of the entire region.
1602
1603Modified the handling of the PM1 Status Register ignored bit (bit 11.)
1604Ignored bits must be "preserved" according to the ACPI spec. Usually, this
1605means a read/modify/write when writing to the register. However, for status
1606registers, writing a one means clear the event. Writing a zero means preserve
1607the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec,
1608and the ACPICA code now simply always writes a zero to the ignored bit.
1609
1610Modified the handling of ignored bits for the PM1 A/B Control Registers. As
1611per the ACPI specification, for the control registers, preserve
1612(read/modify/write) all bits that are defined as either reserved or ignored.
1613
1614Updated the handling of write-only bits in the PM1 A/B Control Registers.
1615When reading the register, zero the write-only bits as per the ACPI spec.
1616ACPICA BZ 443. Lin Ming.
1617
1618Removed "Linux" from the list of supported _OSI strings. Linux no longer
1619wants to reply true to this request. The Windows strings are the only paths
1620through the AML that are tested and known to work properly.
1621
1622  Previous Release:
1623    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
1624    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
1625  Current Release:
1626    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
1627    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
1628
16292) iASL Compiler/Disassembler and Tools:
1630
1631Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and
1632aetables.c
1633
1634----------------------------------------
163520 February 2009. Summary of changes for version 20090220:
1636
16371) ACPI CA Core Subsystem:
1638
1639Optimized the ACPI register locking. Removed locking for reads from the ACPI
1640bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is
1641not required when reading the single-bit registers. The
1642AcpiGetRegisterUnlocked function is no longer needed and has been removed.
1643This will improve performance for reads on these registers. ACPICA BZ 760.
1644
1645Fixed the parameter validation for AcpiRead/Write. Now return
1646AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if
1647the register has an address of zero. Previously, these cases simply returned
1648AE_OK. For optional registers such as PM1B status/enable/control, the caller
1649should check for a valid register address before calling. ACPICA BZ 748.
1650
1651Renamed the external ACPI bit register access functions. Renamed
1652AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
1653functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister.
1654Also, restructured the code for these functions by simplifying the code path
1655and condensing duplicate code to reduce code size.
1656
1657Added new functions to transparently handle the possibly split PM1 A/B
1658registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions
1659now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ
1660746.
1661
1662Added a function to handle the PM1 control registers, AcpiHwWritePm1Control.
1663This function writes both of the PM1 control registers (A/B). These registers
1664are different than the PM1 A/B status and enable registers in that different
1665values can be written to the A/B registers. Most notably, the SLP_TYP bits
1666can be different, as per the values returned from the _Sx predefined methods.
1667
1668Removed an extra register write within AcpiHwClearAcpiStatus. This function
1669was writing an optional PM1B status register twice. The existing call to the
1670low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B
1671register. ACPICA BZ 751.
1672
1673Split out the PM1 Status registers from the FADT. Added new globals for these
1674registers (A/B), similar to the way the PM1 Enable registers are handled.
1675Instead of overloading the FADT Event Register blocks. This makes the code
1676clearer and less prone to error.
1677
1678Fixed the warning message for when the platform contains too many ACPI tables
1679for the default size of the global root table data structure. The calculation
1680for the truncation value was incorrect.
1681
1682Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
1683obsolete macro, since it is now a simple reference to ->common.type. There
1684were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
1685
1686Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
1687TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
1688simply SLEEP_TYPE. ACPICA BZ 754.
1689
1690Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
1691function is only needed on 64-bit host operating systems and is thus not
1692included for 32-bit hosts.
1693
1694Debug output: print the input and result for invocations of the _OSI reserved
1695control method via the ACPI_LV_INFO debug level. Also, reduced some of the
1696verbosity of this debug level. Len Brown.
1697
1698Example Code and Data Size: These are the sizes for the OS-independent
1699acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1700debug version of the code includes the debug output trace mechanism and has a
1701much larger code and data size.
1702
1703  Previous Release:
1704    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
1705    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
1706  Current Release:
1707    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
1708    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
1709
17102) iASL Compiler/Disassembler and Tools:
1711
1712Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
1713various legal performance profiles.
1714
1715----------------------------------------
171623 January 2009. Summary of changes for version 20090123:
1717
17181) ACPI CA Core Subsystem:
1719
1720Added the 2009 copyright to all module headers and signons. This affects
1721virtually every file in the ACPICA core subsystem, the iASL compiler, and
1722the tools/utilities.
1723
1724Implemented a change to allow the host to override any ACPI table, including
1725dynamically loaded tables. Previously, only the DSDT could be replaced by the
1726host. With this change, the AcpiOsTableOverride interface is called for each
1727table found in the RSDT/XSDT during ACPICA initialization, and also whenever
1728a table is dynamically loaded via the AML Load operator.
1729
1730Updated FADT flag definitions, especially the Boot Architecture flags.
1731
1732Debugger: For the Find command, automatically pad the input ACPI name with
1733underscores if the name is shorter than 4 characters. This enables a match
1734with the actual namespace entry which is itself padded with underscores.
1735
1736Example Code and Data Size: These are the sizes for the OS-independent
1737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1738debug version of the code includes the debug output trace mechanism and has a
1739much larger code and data size.
1740
1741  Previous Release:
1742    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
1743    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
1744  Current Release:
1745    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
1746    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
1747
17482) iASL Compiler/Disassembler and Tools:
1749
1750Fix build error under Bison-2.4.
1751
1752Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture
1753flags. Now decode all flags, regardless of the FADT version. Flag output
1754includes the FADT version which first defined each flag.
1755
1756The iASL -g option now dumps the RSDT to a file (in addition to the FADT and
1757DSDT). Windows only.
1758
1759----------------------------------------
176004 December 2008. Summary of changes for version 20081204:
1761
17621) ACPI CA Core Subsystem:
1763
1764The ACPICA Programmer Reference has been completely updated and revamped for
1765this release. This includes updates to the external interfaces, OSL
1766interfaces, the overview sections, and the debugger reference.
1767
1768Several new ACPICA interfaces have been implemented and documented in the
1769programmer reference:
1770AcpiReset - Writes the reset value to the FADT-defined reset register.
1771AcpiDisableAllGpes - Disable all available GPEs.
1772AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
1773AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
1774AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
1775AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
1776AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
1777
1778Most of the public ACPI hardware-related interfaces have been moved to a new
1779file, components/hardware/hwxface.c
1780
1781Enhanced the FADT parsing and low-level ACPI register access: The ACPI
1782register lengths within the FADT are now used, and the low level ACPI
1783register access no longer hardcodes the ACPI register lengths. Given that
1784there may be some risk in actually trusting the FADT register lengths, a run-
1785time option was added to fall back to the default hardcoded lengths if the
1786FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
1787option is set to true for now, and a warning is issued if a suspicious FADT
1788register length is overridden with the default value.
1789
1790Fixed a reference count issue in NsRepairObject. This problem was introduced
1791in version 20081031 as part of a fix to repair Buffer objects within
1792Packages. Lin Ming.
1793
1794Added semaphore support to the Linux/Unix application OS-services layer
1795(OSL). ACPICA BZ 448. Lin Ming.
1796
1797Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will
1798be implemented in the OSL, or will binary semaphores be used instead.
1799
1800Example Code and Data Size: These are the sizes for the OS-independent
1801acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1802debug version of the code includes the debug output trace mechanism and has a
1803much larger code and data size.
1804
1805  Previous Release:
1806    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
1807    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
1808  Current Release:
1809    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
1810    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
1811
18122) iASL Compiler/Disassembler and Tools:
1813
1814iASL: Completed the '-e' option to include additional ACPI tables in order to
1815aid with disassembly and External statement generation. ACPICA BZ 742. Lin
1816Ming.
1817
1818iASL: Removed the "named object in while loop" error. The compiler cannot
1819determine how many times a loop will execute. ACPICA BZ 730.
1820
1821Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA
1822BZ 743.
1823
1824Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
1825
1826----------------------------------------
182731 October 2008. Summary of changes for version 20081031:
1828
18291) ACPI CA Core Subsystem:
1830
1831Restructured the ACPICA header files into public/private. acpi.h now includes
1832only the "public" acpica headers. All other acpica headers are "private" and
1833should not be included by acpica users. One new file, accommon.h is used to
1834include the commonly used private headers for acpica code generation. Future
1835plans include moving all private headers to a new subdirectory.
1836
1837Implemented an automatic Buffer->String return value conversion for
1838predefined ACPI methods. For these methods (such as _BIF), added automatic
1839conversion for return objects that are required to be a String, but a Buffer
1840was found instead. This can happen when reading string battery data from an
1841operation region, because it used to be difficult to convert the data from
1842buffer to string from within the ASL. Ensures that the host OS is provided
1843with a valid null-terminated string. Linux BZ 11822.
1844
1845Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector
1846into two: one for the 32-bit vector, another for the 64-bit vector. This is
1847required because the host OS must setup the wake much differently for each
1848vector (real vs. protected mode, etc.) and the interface itself should not be
1849deciding which vector to use. Also, eliminated the GetFirmwareWakingVector
1850interface, as it served no purpose (only the firmware reads the vector, OS
1851only writes the vector.) ACPICA BZ 731.
1852
1853Implemented a mechanism to escape infinite AML While() loops. Added a loop
1854counter to force exit from AML While loops if the count becomes too large.
1855This can occur in poorly written AML when the hardware does not respond
1856within a while loop and the loop does not implement a timeout. The maximum
1857loop count is configurable. A new exception code is returned when a loop is
1858broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
1859
1860Optimized the execution of AML While loops. Previously, a control state
1861object was allocated and freed for each execution of the loop. The
1862optimization is to simply reuse the control state for each iteration. This
1863speeds up the raw loop execution time by about 5%.
1864
1865Enhanced the implicit return mechanism. For Windows compatibility, return an
1866implicit integer of value zero for methods that contain no executable code.
1867Such methods are seen in the field as stubs (presumably), and can cause
1868drivers to fail if they expect a return value. Lin Ming.
1869
1870Allow multiple backslashes as root prefixes in namepaths. In a fully
1871qualified namepath, allow multiple backslash prefixes. This can happen (and
1872is seen in the field) because of the use of a double-backslash in strings
1873(since backslash is the escape character) causing confusion. ACPICA BZ 739
1874Lin Ming.
1875
1876Emit a warning if two different FACS or DSDT tables are discovered in the
1877FADT. Checks if there are two valid but different addresses for the FACS and
1878DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
1879
1880Consolidated the method argument count validation code. Merged the code that
1881validates control method argument counts into the predefined validation
1882module. Eliminates possible multiple warnings for incorrect argument counts.
1883
1884Implemented ACPICA example code. Includes code for ACPICA initialization,
1885handler installation, and calling a control method. Available at
1886source/tools/examples.
1887
1888Added a global pointer for FACS table to simplify internal FACS access. Use
1889the global pointer instead of using AcpiGetTableByIndex for each FACS access.
1890This simplifies the code for the Global Lock and the Firmware Waking
1891Vector(s).
1892
1893Example Code and Data Size: These are the sizes for the OS-independent
1894acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1895debug version of the code includes the debug output trace mechanism and has a
1896much larger code and data size.
1897
1898  Previous Release:
1899    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
1900    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
1901  Current Release:
1902    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
1903    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
1904
19052) iASL Compiler/Disassembler and Tools:
1906
1907iASL: Improved disassembly of external method calls. Added the -e option to
1908allow the inclusion of additional ACPI tables to help with the disassembly of
1909method invocations and the generation of external declarations during the
1910disassembly. Certain external method invocations cannot be disassembled
1911properly without the actual declaration of the method. Use the -e option to
1912include the table where the external method(s) are actually declared. Most
1913useful for disassembling SSDTs that make method calls back to the master
1914DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl -d
1915-e dsdt.aml ssdt1.aml
1916
1917iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
1918problem where the use of an alias within a namepath would result in a not
1919found error or cause the compiler to fault. Also now allows forward
1920references from the Alias operator itself. ACPICA BZ 738.
1921
1922----------------------------------------
192326 September 2008. Summary of changes for version 20080926:
1924
19251) ACPI CA Core Subsystem:
1926
1927Designed and implemented a mechanism to validate predefined ACPI methods and
1928objects. This code validates the predefined ACPI objects (objects whose names
1929start with underscore) that appear in the namespace, at the time they are
1930evaluated. The argument count and the type of the returned object are
1931validated against the ACPI specification. The purpose of this validation is
1932to detect problems with the BIOS-implemented predefined ACPI objects before
1933the results are returned to the ACPI-related drivers. Future enhancements may
1934include actual repair of incorrect return objects where possible. Two new
1935files are nspredef.c and acpredef.h.
1936
1937Fixed a fault in the AML parser if a memory allocation fails during the Op
1938completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
1939
1940Fixed an issue with implicit return compatibility. This change improves the
1941implicit return mechanism to be more compatible with the MS interpreter. Lin
1942Ming, ACPICA BZ 349.
1943
1944Implemented support for zero-length buffer-to-string conversions. Allow zero
1945length strings during interpreter buffer-to-string conversions. For example,
1946during the ToDecimalString and ToHexString operators, as well as implicit
1947conversions. Fiodor Suietov, ACPICA BZ 585.
1948
1949Fixed two possible memory leaks in the error exit paths of
1950AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are
1951similar in that they use a stack of state objects in order to eliminate
1952recursion. The stack must be fully unwound and deallocated if an error
1953occurs. Lin Ming. ACPICA BZ 383.
1954
1955Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global
1956ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
1957Moore ACPICA BZ 442.
1958
1959Removed the obsolete version number in module headers. Removed the
1960"$Revision" number that appeared in each module header. This version number
1961was useful under SourceSafe and CVS, but has no meaning under git. It is not
1962only incorrect, it could also be misleading.
1963
1964Example Code and Data Size: These are the sizes for the OS-independent
1965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1966debug version of the code includes the debug output trace mechanism and has a
1967much larger code and data size.
1968
1969  Previous Release:
1970    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
1971    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
1972  Current Release:
1973    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
1974    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
1975
1976----------------------------------------
197729 August 2008. Summary of changes for version 20080829:
1978
19791) ACPI CA Core Subsystem:
1980
1981Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
1982Reference. Changes include the elimination of cheating on the Object field
1983for the DdbHandle subtype, addition of a reference class field to
1984differentiate the various reference types (instead of an AML opcode), and the
1985cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
1986
1987Reduce an error to a warning for an incorrect method argument count.
1988Previously aborted with an error if too few arguments were passed to a
1989control method via the external ACPICA interface. Now issue a warning instead
1990and continue. Handles the case where the method inadvertently declares too
1991many arguments, but does not actually use the extra ones. Applies mainly to
1992the predefined methods. Lin Ming. Linux BZ 11032.
1993
1994Disallow the evaluation of named object types with no intrinsic value. Return
1995AE_TYPE for objects that have no value and therefore evaluation is undefined:
1996Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of
1997these types were allowed, but an exception would be generated at some point
1998during the evaluation. Now, the error is generated up front.
1999
2000Fixed a possible memory leak in the AcpiNsGetExternalPathname function
2001(nsnames.c). Fixes a leak in the error exit path.
2002
2003Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug
2004levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION
2005interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
2006ACPI_LV_EVENTS.
2007
2008Removed obsolete and/or unused exception codes from the acexcep.h header.
2009There is the possibility that certain device drivers may be affected if they
2010use any of these exceptions.
2011
2012The ACPICA documentation has been added to the public git source tree, under
2013acpica/documents. Included are the ACPICA programmer reference, the iASL
2014compiler reference, and the changes.txt release logfile.
2015
2016Example Code and Data Size: These are the sizes for the OS-independent
2017acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2018debug version of the code includes the debug output trace mechanism and has a
2019much larger code and data size.
2020
2021  Previous Release:
2022    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2023    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
2024  Current Release:
2025    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2026    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
2027
20282) iASL Compiler/Disassembler and Tools:
2029
2030Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
2031defines _SCP with 3 arguments. Previous versions defined it with only 1
2032argument. iASL now allows both definitions.
2033
2034iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
2035length subtables when disassembling ACPI tables. Also fixed a couple of
2036errors where a full 16-bit table type field was not extracted from the input
2037properly.
2038
2039acpisrc: Improve comment counting mechanism for generating source code
2040statistics. Count first and last lines of multi-line comments as whitespace,
2041not comment lines. Handle Linux legal header in addition to standard acpica
2042header.
2043
2044----------------------------------------
2045
204629 July 2008. Summary of changes for version 20080729:
2047
20481) ACPI CA Core Subsystem:
2049
2050Fix a possible deadlock in the GPE dispatch. Remove call to
2051AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt
2052to acquire the GPE lock but can deadlock since the GPE lock is already held
2053at dispatch time. This code was introduced in version 20060831 as a response
2054to Linux BZ 6881 and has since been removed from Linux.
2055
2056Add a function to dereference returned reference objects. Examines the return
2057object from a call to AcpiEvaluateObject. Any Index or RefOf references are
2058automatically dereferenced in an attempt to return something useful (these
2059reference types cannot be converted into an external ACPI_OBJECT.) Provides
2060MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
2061
2062x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
2063subtables for the MADT and one new subtable for the SRAT. Includes
2064disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC
2065Specification, June 2008.
2066
2067Additional error checking for pathname utilities. Add error check after all
2068calls to AcpiNsGetPathnameLength. Add status return from
2069AcpiNsBuildExternalPath and check after all calls. Add parameter validation
2070to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
2071
2072Return status from the global init function AcpiUtGlobalInitialize. This is
2073used by both the kernel subsystem and the utilities such as iASL compiler.
2074The function could possibly fail when the caches are initialized. Yang Yi.
2075
2076Add a function to decode reference object types to strings. Created for
2077improved error messages.
2078
2079Improve object conversion error messages. Better error messages during object
2080conversion from internal to the external ACPI_OBJECT. Used for external calls
2081to AcpiEvaluateObject.
2082
2083Example Code and Data Size: These are the sizes for the OS-independent
2084acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2085debug version of the code includes the debug output trace mechanism and has a
2086much larger code and data size.
2087
2088  Previous Release:
2089    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
2090    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
2091  Current Release:
2092    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2093    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
2094
20952) iASL Compiler/Disassembler and Tools:
2096
2097Debugger: fix a possible hang when evaluating non-methods. Fixes a problem
2098introduced in version 20080701. If the object being evaluated (via execute
2099command) is not a method, the debugger can hang while trying to obtain non-
2100existent parameters.
2101
2102iASL: relax error for using reserved "_T_x" identifiers. These names can
2103appear in a disassembled ASL file if they were emitted by the original
2104compiler. Instead of issuing an error or warning and forcing the user to
2105manually change these names, issue a remark instead.
2106
2107iASL: error if named object created in while loop. Emit an error if any named
2108object is created within a While loop. If allowed, this code will generate a
2109run-time error on the second iteration of the loop when an attempt is made to
2110create the same named object twice. ACPICA bugzilla 730.
2111
2112iASL: Support absolute pathnames for include files. Add support for absolute
2113pathnames within the Include operator. previously, only relative pathnames
2114were supported.
2115
2116iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor.
2117The ACPI spec requires one interrupt minimum. BZ 423
2118
2119iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
2120Handles the case for the Interrupt Resource Descriptor where
2121the ResourceSource argument is omitted but ResourceSourceIndex
2122is present. Now leave room for the Index. BZ 426
2123
2124iASL: Prevent error message if CondRefOf target does not exist. Fixes cases
2125where an error message is emitted if the target does not exist. BZ 516
2126
2127iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
2128(get ACPI tables on Windows). This was apparently broken in version 20070919.
2129
2130AcpiXtract: Handle EOF while extracting data. Correctly handle the case where
2131the EOF happens immediately after the last table in the input file. Print
2132completion message. Previously, no message was displayed in this case.
2133
2134----------------------------------------
213501 July 2008. Summary of changes for version 20080701:
2136
21370) Git source tree / acpica.org
2138
2139Fixed a problem where a git-clone from http would not transfer the entire
2140source tree.
2141
21421) ACPI CA Core Subsystem:
2143
2144Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
2145enable bit. Now performs a read-change-write of the enable register instead
2146of simply writing out the cached enable mask. This will prevent inadvertent
2147enabling of GPEs if a rogue GPE is received during initialization (before GPE
2148handlers are installed.)
2149
2150Implemented a copy for dynamically loaded tables. Previously, dynamically
2151loaded tables were simply mapped - but on some machines this memory is
2152corrupted after suspend. Now copy the table to a local buffer. For the
2153OpRegion case, added checksum verify. Use the table length from the table
2154header, not the region length. For the Buffer case, use the table length
2155also. Dennis Noordsij, Bob Moore. BZ 10734
2156
2157Fixed a problem where the same ACPI table could not be dynamically loaded and
2158unloaded more than once. Without this change, a table cannot be loaded again
2159once it has been loaded/unloaded one time. The current mechanism does not
2160unregister a table upon an unload. During a load, if the same table is found,
2161this no longer returns an exception. BZ 722
2162
2163Fixed a problem where the wrong descriptor length was calculated for the
2164EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag
2165are calculated as 12 bytes long, but the actual length in the internal
2166descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported
2167by Linn Crosetto. BZ 728
2168
2169Fixed a possible memory leak in the Unload operator. The DdbHandle returned
2170by Load() did not have its reference count decremented during unload, leading
2171to a memory leak. Lin Ming. BZ 727
2172
2173Fixed a possible memory leak when deleting thermal/processor objects. Any
2174associated notify handlers (and objects) were not being deleted. Fiodor
2175Suietov. BZ 506
2176
2177Fixed the ordering of the ASCII names in the global mutex table to match the
2178actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only.
2179Vegard Nossum. BZ 726
2180
2181Enhanced the AcpiGetObjectInfo interface to return the number of required
2182arguments if the object is a control method. Added this call to the debugger
2183so the proper number of default arguments are passed to a method. This
2184prevents a warning when executing methods from AcpiExec.
2185
2186Added a check for an invalid handle in AcpiGetObjectInfo. Return
2187AE_BAD_PARAMETER if input handle is invalid. BZ 474
2188
2189Fixed an extraneous warning from exconfig.c on the 64-bit build.
2190
2191Example Code and Data Size: These are the sizes for the OS-independent
2192acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2193debug version of the code includes the debug output trace mechanism and has a
2194much larger code and data size.
2195
2196  Previous Release:
2197    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
2198    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
2199  Current Release:
2200    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
2201    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
2202
22032) iASL Compiler/Disassembler and Tools:
2204
2205iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
2206resource descriptor names.
2207
2208iASL: Detect invalid ASCII characters in input (windows version). Removed the
2209"-CF" flag from the flex compile, enables correct detection of non-ASCII
2210characters in the input. BZ 441
2211
2212iASL: Eliminate warning when result of LoadTable is not used. Eliminate the
2213"result of operation not used" warning when the DDB handle returned from
2214LoadTable is not used. The warning is not needed. BZ 590
2215
2216AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to
2217pass address of table to the AML. Added option to disable OpRegion simulation
2218to allow creation of an OpRegion with a real address that was passed to _CFG.
2219All of this allows testing of the Load and Unload operators from AcpiExec.
2220
2221Debugger: update tables command for unloaded tables. Handle unloaded tables
2222and use the standard table header output routine.
2223
2224----------------------------------------
222509 June 2008. Summary of changes for version 20080609:
2226
22271) ACPI CA Core Subsystem:
2228
2229Implemented a workaround for reversed _PRT entries. A significant number of
2230BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
2231change dynamically detects and repairs this problem. Provides compatibility
2232with MS ACPI. BZ 6859
2233
2234Simplified the internal ACPI hardware interfaces to eliminate the locking
2235flag parameter from Register Read/Write. Added a new external interface,
2236AcpiGetRegisterUnlocked.
2237
2238Fixed a problem where the invocation of a GPE control method could hang. This
2239was a regression introduced in 20080514. The new method argument count
2240validation mechanism can enter an infinite loop when a GPE method is
2241dispatched. Problem fixed by removing the obsolete code that passed GPE block
2242information to the notify handler via the control method parameter pointer.
2243
2244Fixed a problem where the _SST execution status was incorrectly returned to
2245the caller of AcpiEnterSleepStatePrep. This was a regression introduced in
224620080514. _SST is optional and a NOT_FOUND exception should never be
2247returned. BZ 716
2248
2249Fixed a problem where a deleted object could be accessed from within the AML
2250parser. This was a regression introduced in version 20080123 as a fix for the
2251Unload operator. Lin Ming. BZ 10669
2252
2253Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands
2254and eliminated the use of a negative index in a loop. Operands are now
2255displayed in the correct order, not backwards. This also fixes a regression
2256introduced in 20080514 on 64-bit systems where the elimination of
2257ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
2258
2259Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit
2260path did not delete a locally allocated structure.
2261
2262Updated definitions for the DMAR and SRAT tables to synchronize with the
2263current specifications. Includes disassembler support.
2264
2265Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
2266loop termination value was used. Loop terminated on iteration early, missing
2267one mutex. Linn Crosetto
2268
2269Example Code and Data Size: These are the sizes for the OS-independent
2270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2271debug version of the code includes the debug output trace mechanism and has a
2272much larger code and data size.
2273
2274  Previous Release:
2275    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
2276    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
2277  Current Release:
2278    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
2279    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
2280
22812) iASL Compiler/Disassembler and Tools:
2282
2283Disassembler: Implemented support for EisaId() within _CID objects. Now
2284disassemble integer _CID objects back to EisaId invocations, including
2285multiple integers within _CID packages. Includes single-step support for
2286debugger also.
2287
2288Disassembler: Added support for DMAR and SRAT table definition changes.
2289
2290----------------------------------------
229114 May 2008. Summary of changes for version 20080514:
2292
22931) ACPI CA Core Subsystem:
2294
2295Fixed a problem where GPEs were enabled too early during the ACPICA
2296initialization. This could lead to "handler not installed" errors on some
2297machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This
2298ensures that all operation regions and devices throughout the namespace have
2299been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
2300
2301Implemented a change to the enter sleep code. Moved execution of the _GTS
2302method to just before setting sleep enable bit. The execution was moved from
2303AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
2304immediately before the SLP_EN bit is set, as per the ACPI specification.
2305Luming Yu, BZ 1653.
2306
2307Implemented a fix to disable unknown GPEs (2nd version). Now always disable
2308the GPE, even if ACPICA thinks that that it is already disabled. It is
2309possible that the AML or some other code has enabled the GPE unbeknownst to
2310the ACPICA code.
2311
2312Fixed a problem with the Field operator where zero-length fields would return
2313an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL
2314field declarations in Field(), BankField(), and IndexField(). BZ 10606.
2315
2316Implemented a fix for the Load operator, now load the table at the namespace
2317root. This reverts a change introduced in version 20071019. The table is now
2318loaded at the namespace root even though this goes against the ACPI
2319specification. This provides compatibility with other ACPI implementations.
2320The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
2321
2322Fixed a problem where ACPICA would not Load() tables with unusual signatures.
2323Now ignore ACPI table signature for Load() operator. Only "SSDT" is
2324acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
2325Therefore, signature validation is worthless. Apparently MS ACPI accepts such
2326signatures, ACPICA must be compatible. BZ 10454.
2327
2328Fixed a possible negative array index in AcpiUtValidateException. Added NULL
2329fields to the exception string arrays to eliminate a -1 subtraction on the
2330SubStatus field.
2331
2332Updated the debug tracking macros to reduce overall code and data size.
2333Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
2334instead of pointers to static strings. Jan Beulich and Bob Moore.
2335
2336Implemented argument count checking in control method invocation via
2337AcpiEvaluateObject. Now emit an error if too few arguments, warning if too
2338many. This applies only to extern programmatic control method execution, not
2339method-to-method calls within the AML. Lin Ming.
2340
2341Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no
2342longer needed, especially with the removal of 16-bit support. It was replaced
2343mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on
234432/64-bit platforms is required.
2345
2346Added the C const qualifier for appropriate string constants -- mostly
2347MODULE_NAME and printf format strings. Jan Beulich.
2348
2349Example Code and Data Size: These are the sizes for the OS-independent
2350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2351debug version of the code includes the debug output trace mechanism and has a
2352much larger code and data size.
2353
2354  Previous Release:
2355    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
2356    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
2357  Current Release:
2358    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
2359    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
2360
23612) iASL Compiler/Disassembler and Tools:
2362
2363Implemented ACPI table revision ID validation in the disassembler. Zero is
2364always invalid. For DSDTs, the ID controls the interpreter integer width. 1
2365means 32-bit and this is unusual. 2 or greater is 64-bit.
2366
2367----------------------------------------
236821 March 2008. Summary of changes for version 20080321:
2369
23701) ACPI CA Core Subsystem:
2371
2372Implemented an additional change to the GPE support in order to suppress
2373spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently
2374disable incoming GPEs that are neither enabled nor disabled -- meaning that
2375the GPE is unknown to the system. This should prevent future interrupt floods
2376from that GPE. BZ 6217 (Zhang Rui)
2377
2378Fixed a problem where NULL package elements were not returned to the
2379AcpiEvaluateObject interface correctly. The element was simply ignored
2380instead of returning a NULL ACPI_OBJECT package element, potentially causing
2381a buffer overflow and/or confusing the caller who expected a fixed number of
2382elements. BZ 10132 (Lin Ming, Bob Moore)
2383
2384Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword,
2385Qword), Field, BankField, and IndexField operators when invoked from inside
2386an executing control method. In this case, these operators created namespace
2387nodes that were incorrectly left marked as permanent nodes instead of
2388temporary nodes. This could cause a problem if there is race condition
2389between an exiting control method and a running namespace walk. (Reported by
2390Linn Crosetto)
2391
2392Fixed a problem where the CreateField and CreateXXXField operators would
2393incorrectly allow duplicate names (the name of the field) with no exception
2394generated.
2395
2396Implemented several changes for Notify handling. Added support for new Notify
2397values (ACPI 2.0+) and improved the Notify debug output. Notify on
2398PowerResource objects is no longer allowed, as per the ACPI specification.
2399(Bob Moore, Zhang Rui)
2400
2401All Reference Objects returned via the AcpiEvaluateObject interface are now
2402marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for
2403NULL objects - either NULL package elements or unresolved named references.
2404
2405Fixed a problem where an extraneous debug message was produced for package
2406objects (when debugging enabled). The message "Package List length larger
2407than NumElements count" is now produced in the correct case, and is now an
2408error message rather than a debug message. Added a debug message for the
2409opposite case, where NumElements is larger than the Package List (the package
2410will be padded out with NULL elements as per the ACPI spec.)
2411
2412Implemented several improvements for the output of the ASL "Debug" object to
2413clarify and keep all data for a given object on one output line.
2414
2415Fixed two size calculation issues with the variable-length Start Dependent
2416resource descriptor.
2417
2418Example Code and Data Size: These are the sizes for the OS-independent
2419acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2420debug version of the code includes the debug output trace mechanism and has
2421a much larger code and data size.
2422
2423  Previous Release:
2424    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
2425    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
2426  Current Release:
2427    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
2428    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
2429
24302) iASL Compiler/Disassembler and Tools:
2431
2432Fixed a problem with the use of the Switch operator where execution of the
2433containing method by multiple concurrent threads could cause an
2434AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
2435actual Switch opcode, it must be simulated with local named temporary
2436variables and if/else pairs. The solution chosen was to mark any method that
2437uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
2438
2439----------------------------------------
244013 February 2008. Summary of changes for version 20080213:
2441
24421) ACPI CA Core Subsystem:
2443
2444Implemented another MS compatibility design change for GPE/Notify handling.
2445GPEs are now cleared/enabled asynchronously to allow all pending notifies to
2446complete first. It is expected that the OSL will queue the enable request
2447behind all pending notify requests (may require changes to the local host OSL
2448in AcpiOsExecute). Alexey Starikovskiy.
2449
2450Fixed a problem where buffer and package objects passed as arguments to a
2451control method via the external AcpiEvaluateObject interface could cause an
2452AE_AML_INTERNAL exception depending on the order and type of operators
2453executed by the target control method.
2454
2455Fixed a problem where resource descriptor size optimization could cause a
2456problem when a _CRS resource template is passed to a _SRS method. The _SRS
2457resource template must use the same descriptors (with the same size) as
2458returned from _CRS. This change affects the following resource descriptors:
2459IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
2460
2461Fixed a problem where a CopyObject to RegionField, BankField, and IndexField
2462objects did not perform an implicit conversion as it should. These types must
2463retain their initial type permanently as per the ACPI specification. However,
2464a CopyObject to all other object types should not perform an implicit
2465conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
2466
2467Fixed a problem with the AcpiGetDevices interface where the mechanism to
2468match device CIDs did not examine the entire list of available CIDs, but
2469instead aborted on the first non-matching CID. Andrew Patterson.
2470
2471Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was
2472inadvertently changed to return a 16-bit value instead of a 32-bit value,
2473truncating the upper dword of a 64-bit value. This macro is only used to
2474display debug output, so no incorrect calculations were made. Also,
2475reimplemented the macro so that a 64-bit shift is not performed by
2476inefficient compilers.
2477
2478Added missing va_end statements that should correspond with each va_start
2479statement.
2480
2481Example Code and Data Size: These are the sizes for the OS-independent
2482acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2483debug version of the code includes the debug output trace mechanism and has
2484a much larger code and data size.
2485
2486  Previous Release:
2487    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
2488    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
2489  Current Release:
2490    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
2491    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
2492
24932) iASL Compiler/Disassembler and Tools:
2494
2495Implemented full disassembler support for the following new ACPI tables:
2496BERT, EINJ, and ERST. Implemented partial disassembler support for the
2497complicated HEST table. These tables support the Windows Hardware Error
2498Architecture (WHEA).
2499
2500----------------------------------------
250123 January 2008. Summary of changes for version 20080123:
2502
25031) ACPI CA Core Subsystem:
2504
2505Added the 2008 copyright to all module headers and signons. This affects
2506virtually every file in the ACPICA core subsystem, the iASL compiler, and
2507the tools/utilities.
2508
2509Fixed a problem with the SizeOf operator when used with Package and Buffer
2510objects. These objects have deferred execution for some arguments, and the
2511execution is now completed before the SizeOf is executed. This problem caused
2512unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ
25139558
2514
2515Implemented an enhancement to the interpreter "slack mode". In the absence of
2516an explicit return or an implicitly returned object from the last executed
2517opcode, a control method will now implicitly return an integer of value 0 for
2518Microsoft compatibility. (Lin Ming) BZ 392
2519
2520Fixed a problem with the Load operator where an exception was not returned in
2521the case where the table is already loaded. (Lin Ming) BZ 463
2522
2523Implemented support for the use of DDBHandles as an Indexed Reference, as per
2524the ACPI spec. (Lin Ming) BZ 486
2525
2526Implemented support for UserTerm (Method invocation) for the Unload operator
2527as per the ACPI spec. (Lin Ming) BZ 580
2528
2529Fixed a problem with the LoadTable operator where the OemId and OemTableId
2530input strings could cause unexpected failures if they were shorter than the
2531maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
2532
2533Implemented support for UserTerm (Method invocation) for the Unload operator
2534as per the ACPI spec. (Lin Ming) BZ 580
2535
2536Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST,
2537IBFT, UEFI, WDAT. Disassembler support is forthcoming.
2538
2539Example Code and Data Size: These are the sizes for the OS-independent
2540acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2541debug version of the code includes the debug output trace mechanism and has
2542a much larger code and data size.
2543
2544  Previous Release:
2545    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
2546    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
2547  Current Release:
2548    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
2549    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
2550
25512) iASL Compiler/Disassembler and Tools:
2552
2553Implemented support in the disassembler for checksum validation on incoming
2554binary DSDTs and SSDTs. If incorrect, a message is displayed within the table
2555header dump at the start of the disassembly.
2556
2557Implemented additional debugging information in the namespace listing file
2558created during compilation. In addition to the namespace hierarchy, the full
2559pathname to each namespace object is displayed.
2560
2561Fixed a problem with the disassembler where invalid ACPI tables could cause
2562faults or infinite loops.
2563
2564Fixed an unexpected parse error when using the optional "parameter types"
2565list in a control method declaration. (Lin Ming) BZ 397
2566
2567Fixed a problem where two External declarations with the same name did not
2568cause an error (Lin Ming) BZ 509
2569
2570Implemented support for full TermArgs (adding Argx, Localx and method
2571invocation) for the ParameterData parameter to the LoadTable operator. (Lin
2572Ming) BZ 583,587
2573
2574----------------------------------------
257519 December 2007. Summary of changes for version 20071219:
2576
25771) ACPI CA Core Subsystem:
2578
2579Implemented full support for deferred execution for the TermArg string
2580arguments for DataTableRegion. This enables forward references and full
2581operand resolution for the three string arguments. Similar to OperationRegion
2582deferred argument execution.) Lin Ming. BZ 430
2583
2584Implemented full argument resolution support for the BankValue argument to
2585BankField. Previously, only constants were supported, now any TermArg may be
2586used. Lin Ming BZ 387, 393
2587
2588Fixed a problem with AcpiGetDevices where the search of a branch of the
2589device tree could be terminated prematurely. In accordance with the ACPI
2590specification, the search down the current branch is terminated if a device
2591is both not present and not functional (instead of just not present.) Yakui
2592Zhao.
2593
2594Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if
2595the underlying AML code changed the GPE enable registers. Now, any unknown
2596incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled
2597instead of simply ignored. Rui Zhang.
2598
2599Fixed a problem with Index Fields where the Index register was incorrectly
2600limited to a maximum of 32 bits. Now any size may be used.
2601
2602Fixed a couple memory leaks associated with "implicit return" objects when
2603the AML Interpreter slack mode is enabled. Lin Ming BZ 349
2604
2605Example Code and Data Size: These are the sizes for the OS-independent
2606acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2607debug version of the code includes the debug output trace mechanism and has
2608a much larger code and data size.
2609
2610  Previous Release:
2611    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
2612    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
2613  Current Release:
2614    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
2615    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
2616
2617----------------------------------------
261814 November 2007. Summary of changes for version 20071114:
2619
26201) ACPI CA Core Subsystem:
2621
2622Implemented event counters for each of the Fixed Events, the ACPI SCI
2623(interrupt) itself, and control methods executed. Named
2624AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These
2625should be useful for debugging and statistics.
2626
2627Implemented a new external interface, AcpiGetStatistics, to retrieve the
2628contents of the various event counters. Returns the current values for
2629AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
2630AcpiMethodCount. The interface can be expanded in the future if new counters
2631are added. Device drivers should use this interface rather than access the
2632counters directly.
2633
2634Fixed a problem with the FromBCD and ToBCD operators. With some compilers,
2635the ShortDivide function worked incorrectly, causing problems with the BCD
2636functions with large input values. A truncation from 64-bit to 32-bit
2637inadvertently occurred. Internal BZ 435. Lin Ming
2638
2639Fixed a problem with Index references passed as method arguments. References
2640passed as arguments to control methods were dereferenced immediately (before
2641control was passed to the called method). The references are now correctly
2642passed directly to the called method. BZ 5389. Lin Ming
2643
2644Fixed a problem with CopyObject used in conjunction with the Index operator.
2645The reference was incorrectly dereferenced before the copy. The reference is
2646now correctly copied. BZ 5391. Lin Ming
2647
2648Fixed a problem with Control Method references within Package objects. These
2649references are now correctly generated. This completes the package
2650construction overhaul that began in version 20071019.
2651
2652Example Code and Data Size: These are the sizes for the OS-independent
2653acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2654debug version of the code includes the debug output trace mechanism and has
2655a much larger code and data size.
2656
2657  Previous Release:
2658    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
2659    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
2660  Current Release:
2661    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
2662    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
2663
2664
26652) iASL Compiler/Disassembler and Tools:
2666
2667The AcpiExec utility now installs handlers for all of the predefined
2668Operation Region types. New types supported are: PCI_Config, CMOS, and
2669PCIBARTarget.
2670
2671Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
2672bit) address fields for the DSDT and FACS within the FADT were not being
2673used, causing truncation of the upper 32-bits of these addresses. Lin Ming
2674and Bob Moore
2675
2676----------------------------------------
267719 October 2007. Summary of changes for version 20071019:
2678
26791) ACPI CA Core Subsystem:
2680
2681Fixed a problem with the Alias operator when the target of the alias is a
2682named ASL operator that opens a new scope -- Scope, Device, PowerResource,
2683Processor, and ThermalZone. In these cases, any children of the original
2684operator could not be accessed via the alias, potentially causing unexpected
2685AE_NOT_FOUND exceptions. (BZ 9067)
2686
2687Fixed a problem with the Package operator where all named references were
2688created as object references and left otherwise unresolved. According to the
2689ACPI specification, a Package can only contain Data Objects or references to
2690control methods. The implication is that named references to Data Objects
2691(Integer, Buffer, String, Package, BufferField, Field) should be resolved
2692immediately upon package creation. This is the approach taken with this
2693change. References to all other named objects (Methods, Devices, Scopes,
2694etc.) are all now properly created as reference objects. (BZ 5328)
2695
2696Reverted a change to Notify handling that was introduced in version
269720070508. This version changed the Notify handling from asynchronous to
2698fully synchronous (Device driver Notify handling with respect to the Notify
2699ASL operator). It was found that this change caused more problems than it
2700solved and was removed by most users.
2701
2702Fixed a problem with the Increment and Decrement operators where the type of
2703the target object could be unexpectedly and incorrectly changed. (BZ 353)
2704Lin Ming.
2705
2706Fixed a problem with the Load and LoadTable operators where the table
2707location within the namespace was ignored. Instead, the table was always
2708loaded into the root or current scope. Lin Ming.
2709
2710Fixed a problem with the Load operator when loading a table from a buffer
2711object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
2712
2713Fixed a problem with the Debug object where a store of a DdbHandle reference
2714object to the Debug object could cause a fault.
2715
2716Added a table checksum verification for the Load operator, in the case where
2717the load is from a buffer. (BZ 578).
2718
2719Implemented additional parameter validation for the LoadTable operator. The
2720length of the input strings SignatureString, OemIdString, and OemTableId are
2721now checked for maximum lengths. (BZ 582) Lin Ming.
2722
2723Example Code and Data Size: These are the sizes for the OS-independent
2724acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2725debug version of the code includes the debug output trace mechanism and has
2726a much larger code and data size.
2727
2728  Previous Release:
2729    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
2730    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
2731  Current Release:
2732    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
2733    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
2734
2735
27362) iASL Compiler/Disassembler:
2737
2738Fixed a problem where if a single file was specified and the file did not
2739exist, no error message was emitted. (Introduced with wildcard support in
2740version 20070917.)
2741
2742----------------------------------------
274319 September 2007. Summary of changes for version 20070919:
2744
27451) ACPI CA Core Subsystem:
2746
2747Designed and implemented new external interfaces to install and remove
2748handlers for ACPI table-related events. Current events that are defined are
2749LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
2750they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
2751AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
2752
2753Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
2754(acpi_serialized option on Linux) could cause some systems to hang during
2755initialization. (Bob Moore) BZ 8171
2756
2757Fixed a problem where objects of certain types (Device, ThermalZone,
2758Processor, PowerResource) can be not found if they are declared and
2759referenced from within the same control method (Lin Ming) BZ 341
2760
2761Example Code and Data Size: These are the sizes for the OS-independent
2762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2763debug version of the code includes the debug output trace mechanism and has
2764a much larger code and data size.
2765
2766  Previous Release:
2767    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
2768    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
2769  Current Release:
2770    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
2771    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
2772
2773
27742) iASL Compiler/Disassembler:
2775
2776Implemented support to allow multiple files to be compiled/disassembled in a
2777single invocation. This includes command line wildcard support for both the
2778Windows and Unix versions of the compiler. This feature simplifies the
2779disassembly and compilation of multiple ACPI tables in a single directory.
2780
2781----------------------------------------
278208 May 2007. Summary of changes for version 20070508:
2783
27841) ACPI CA Core Subsystem:
2785
2786Implemented a Microsoft compatibility design change for the handling of the
2787Notify AML operator. Previously, notify handlers were dispatched and
2788executed completely asynchronously in a deferred thread. The new design
2789still executes the notify handlers in a different thread, but the original
2790thread that executed the Notify() now waits at a synchronization point for
2791the notify handler to complete. Some machines depend on a synchronous Notify
2792operator in order to operate correctly.
2793
2794Implemented support to allow Package objects to be passed as method
2795arguments to the external AcpiEvaluateObject interface. Previously, this
2796would return the AE_NOT_IMPLEMENTED exception. This feature had not been
2797implemented since there were no reserved control methods that required it
2798until recently.
2799
2800Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that
2801contained invalid non-zero values in reserved fields could cause later
2802failures because these fields have meaning in later revisions of the FADT.
2803For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields
2804are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
2805
2806Fixed a problem where the Global Lock handle was not properly updated if a
2807thread that acquired the Global Lock via executing AML code then attempted
2808to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe
2809Liu.
2810
2811Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
2812could be corrupted if the interrupt being removed was at the head of the
2813list. Reported by Linn Crosetto.
2814
2815Example Code and Data Size: These are the sizes for the OS-independent
2816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2817debug version of the code includes the debug output trace mechanism and has
2818a much larger code and data size.
2819
2820  Previous Release:
2821    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2822    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
2823  Current Release:
2824    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
2825    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
2826
2827----------------------------------------
282820 March 2007. Summary of changes for version 20070320:
2829
28301) ACPI CA Core Subsystem:
2831
2832Implemented a change to the order of interpretation and evaluation of AML
2833operand objects within the AML interpreter. The interpreter now evaluates
2834operands in the order that they appear in the AML stream (and the
2835corresponding ASL code), instead of in the reverse order (after the entire
2836operand list has been parsed). The previous behavior caused several subtle
2837incompatibilities with the Microsoft AML interpreter as well as being
2838somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
2839
2840Implemented a change to the ACPI Global Lock support. All interfaces to the
2841global lock now allow the same thread to acquire the lock multiple times.
2842This affects the AcpiAcquireGlobalLock external interface to the global lock
2843as well as the internal use of the global lock to support AML fields -- a
2844control method that is holding the global lock can now simultaneously access
2845AML fields that require global lock protection. Previously, in both cases,
2846this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to
2847AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
2848Controller. There is no change to the behavior of the AML Acquire operator,
2849as this can already be used to acquire a mutex multiple times by the same
2850thread. BZ 8066. With assistance from Alexey Starikovskiy.
2851
2852Fixed a problem where invalid objects could be referenced in the AML
2853Interpreter after error conditions. During operand evaluation, ensure that
2854the internal "Return Object" field is cleared on error and only valid
2855pointers are stored there. Caused occasional access to deleted objects that
2856resulted in "large reference count" warning messages. Valery Podrezov.
2857
2858Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on
2859deeply nested control method invocations. BZ 7873, local BZ 487. Valery
2860Podrezov.
2861
2862Fixed an internal problem with the handling of result objects on the
2863interpreter result stack. BZ 7872. Valery Podrezov.
2864
2865Removed obsolete code that handled the case where AML_NAME_OP is the target
2866of a reference (Reference.Opcode). This code was no longer necessary. BZ
28677874. Valery Podrezov.
2868
2869Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a
2870remnant from the previously discontinued 16-bit support.
2871
2872Example Code and Data Size: These are the sizes for the OS-independent
2873acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2874debug version of the code includes the debug output trace mechanism and has
2875a much larger code and data size.
2876
2877  Previous Release:
2878    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2879    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2880  Current Release:
2881    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2882    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
2883
2884----------------------------------------
288526 January 2007. Summary of changes for version 20070126:
2886
28871) ACPI CA Core Subsystem:
2888
2889Added the 2007 copyright to all module headers and signons. This affects
2890virtually every file in the ACPICA core subsystem, the iASL compiler, and
2891the utilities.
2892
2893Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
2894during a table load. A bad pointer was passed in the case where the DSDT is
2895overridden, causing a fault in this case.
2896
2897Example Code and Data Size: These are the sizes for the OS-independent
2898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2899debug version of the code includes the debug output trace mechanism and has
2900a much larger code and data size.
2901
2902  Previous Release:
2903    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2904    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2905  Current Release:
2906    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2907    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2908
2909----------------------------------------
291015 December 2006. Summary of changes for version 20061215:
2911
29121) ACPI CA Core Subsystem:
2913
2914Support for 16-bit ACPICA has been completely removed since it is no longer
2915necessary and it clutters the code. All 16-bit macros, types, and
2916conditional compiles have been removed, cleaning up and simplifying the code
2917across the entire subsystem. DOS support is no longer needed since the
2918bootable Linux firmware kit is now available.
2919
2920The handler for the Global Lock is now removed during AcpiTerminate to
2921enable a clean subsystem restart, via the implementation of the
2922AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
2923HP)
2924
2925Implemented enhancements to the multithreading support within the debugger
2926to enable improved multithreading debugging and evaluation of the subsystem.
2927(Valery Podrezov)
2928
2929Debugger: Enhanced the Statistics/Memory command to emit the total (maximum)
2930memory used during the execution, as well as the maximum memory consumed by
2931each of the various object types. (Valery Podrezov)
2932
2933Example Code and Data Size: These are the sizes for the OS-independent
2934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2935debug version of the code includes the debug output trace mechanism and has
2936a much larger code and data size.
2937
2938  Previous Release:
2939    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
2940    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
2941  Current Release:
2942    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2943    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2944
2945
29462) iASL Compiler/Disassembler and Tools:
2947
2948AcpiExec: Implemented a new option (-m) to display full memory use
2949statistics upon subsystem/program termination. (Valery Podrezov)
2950
2951----------------------------------------
295209 November 2006. Summary of changes for version 20061109:
2953
29541) ACPI CA Core Subsystem:
2955
2956Optimized the Load ASL operator in the case where the source operand is an
2957operation region. Simply map the operation region memory, instead of
2958performing a bytewise read. (Region must be of type SystemMemory, see
2959below.)
2960
2961Fixed the Load ASL operator for the case where the source operand is a
2962region field. A buffer object is also allowed as the source operand. BZ 480
2963
2964Fixed a problem where the Load ASL operator allowed the source operand to be
2965an operation region of any type. It is now restricted to regions of type
2966SystemMemory, as per the ACPI specification. BZ 481
2967
2968Additional cleanup and optimizations for the new Table Manager code.
2969
2970AcpiEnable will now fail if all of the required ACPI tables are not loaded
2971(FADT, FACS, DSDT). BZ 477
2972
2973Added #pragma pack(8/4) to acobject.h to ensure that the structures in this
2974header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
2975manually optimized to be aligned and will not work if it is byte-packed.
2976
2977Example Code and Data Size: These are the sizes for the OS-independent
2978acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2979debug version of the code includes the debug output trace mechanism and has
2980a much larger code and data size.
2981
2982  Previous Release:
2983    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
2984    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
2985  Current Release:
2986    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
2987    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
2988
2989
29902) iASL Compiler/Disassembler and Tools:
2991
2992Fixed a problem where the presence of the _OSI predefined control method
2993within complex expressions could cause an internal compiler error.
2994
2995AcpiExec: Implemented full region support for multiple address spaces.
2996SpaceId is now part of the REGION object. BZ 429
2997
2998----------------------------------------
299911 October 2006. Summary of changes for version 20061011:
3000
30011) ACPI CA Core Subsystem:
3002
3003Completed an AML interpreter performance enhancement for control method
3004execution. Previously a 2-pass parse/execution, control methods are now
3005completely parsed and executed in a single pass. This improves overall
3006interpreter performance by ~25%, reduces code size, and reduces CPU stack
3007use. (Valery Podrezov + interpreter changes in version 20051202 that
3008eliminated namespace loading during the pass one parse.)
3009
3010Implemented _CID support for PCI Root Bridge detection. If the _HID does not
3011match the predefined PCI Root Bridge IDs, the _CID list (if present) is now
3012obtained and also checked for an ID match.
3013
3014Implemented additional support for the PCI _ADR execution: upsearch until a
3015device scope is found before executing _ADR. This allows PCI_Config
3016operation regions to be declared locally within control methods underneath
3017PCI device objects.
3018
3019Fixed a problem with a possible race condition between threads executing
3020AcpiWalkNamespace and the AML interpreter. This condition was removed by
3021modifying AcpiWalkNamespace to (by default) ignore all temporary namespace
3022entries created during any concurrent control method execution. An
3023additional namespace race condition is known to exist between
3024AcpiWalkNamespace and the Load/Unload ASL operators and is still under
3025investigation.
3026
3027Restructured the AML ParseLoop function, breaking it into several
3028subfunctions in order to reduce CPU stack use and improve maintainability.
3029(Mikhail Kouzmich)
3030
3031AcpiGetHandle: Fix for parameter validation to detect invalid combinations
3032of prefix handle and pathname. BZ 478
3033
3034Example Code and Data Size: These are the sizes for the OS-independent
3035acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3036debug version of the code includes the debug output trace mechanism and has
3037a much larger code and data size.
3038
3039  Previous Release:
3040    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3041    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
3042  Current Release:
3043    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
3044    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
3045
30462) iASL Compiler/Disassembler and Tools:
3047
3048Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager
3049to restore original behavior.
3050
3051----------------------------------------
305227 September 2006. Summary of changes for version 20060927:
3053
30541) ACPI CA Core Subsystem:
3055
3056Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
3057These functions now use a spinlock for mutual exclusion and the interrupt
3058level indication flag is not needed.
3059
3060Fixed a problem with the Global Lock where the lock could appear to be
3061obtained before it is actually obtained. The global lock semaphore was
3062inadvertently created with one unit instead of zero units. (BZ 464) Fiodor
3063Suietov.
3064
3065Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during
3066a read from a buffer or region field. (BZ 458) Fiodor Suietov.
3067
3068Example Code and Data Size: These are the sizes for the OS-independent
3069acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3070debug version of the code includes the debug output trace mechanism and has
3071a much larger code and data size.
3072
3073  Previous Release:
3074    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3075    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
3076  Current Release:
3077    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3078    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
3079
3080
30812) iASL Compiler/Disassembler and Tools:
3082
3083Fixed a compilation problem with the pre-defined Resource Descriptor field
3084names where an "object does not exist" error could be incorrectly generated
3085if the parent ResourceTemplate pathname places the template within a
3086different namespace scope than the current scope. (BZ 7212)
3087
3088Fixed a problem where the compiler could hang after syntax errors detected
3089in an ElseIf construct. (BZ 453)
3090
3091Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
3092operator. An incorrect output filename was produced when this parameter was
3093a null string (""). Now, the original input filename is used as the AML
3094output filename, with an ".aml" extension.
3095
3096Implemented a generic batch command mode for the AcpiExec utility (execute
3097any AML debugger command) (Valery Podrezov).
3098
3099----------------------------------------
310012 September 2006. Summary of changes for version 20060912:
3101
31021) ACPI CA Core Subsystem:
3103
3104Enhanced the implementation of the "serialized mode" of the interpreter
3105(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
3106specified, instead of creating a serialization semaphore per control method,
3107the interpreter lock is simply no longer released before a blocking
3108operation during control method execution. This effectively makes the AML
3109Interpreter single-threaded. The overhead of a semaphore per-method is
3110eliminated.
3111
3112Fixed a regression where an error was no longer emitted if a control method
3113attempts to create 2 objects of the same name. This once again returns
3114AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that
3115will dynamically serialize the control method to possible prevent future
3116errors. (BZ 440)
3117
3118Integrated a fix for a problem with PCI Express HID detection in the PCI
3119Config Space setup procedure. (BZ 7145)
3120
3121Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
3122AcpiHwInitialize function - the FADT registers are now validated when the
3123table is loaded.
3124
3125Added two new warnings during FADT verification - 1) if the FADT is larger
3126than the largest known FADT version, and 2) if there is a mismatch between a
312732-bit block address and the 64-bit X counterpart (when both are non-zero.)
3128
3129Example Code and Data Size: These are the sizes for the OS-independent
3130acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3131debug version of the code includes the debug output trace mechanism and has
3132a much larger code and data size.
3133
3134  Previous Release:
3135    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
3136    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
3137  Current Release:
3138    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3139    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
3140
3141
31422) iASL Compiler/Disassembler and Tools:
3143
3144Fixed a problem with the implementation of the Switch() operator where the
3145temporary variable was declared too close to the actual Switch, instead of
3146at method level. This could cause a problem if the Switch() operator is
3147within a while loop, causing an error on the second iteration. (BZ 460)
3148
3149Disassembler - fix for error emitted for unknown type for target of scope
3150operator. Now, ignore it and continue.
3151
3152Disassembly of an FADT now verifies the input FADT and reports any errors
3153found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
3154
3155Disassembly of raw data buffers with byte initialization data now prefixes
3156each output line with the current buffer offset.
3157
3158Disassembly of ASF! table now includes all variable-length data fields at
3159the end of some of the subtables.
3160
3161The disassembler now emits a comment if a buffer appears to be a
3162ResourceTemplate, but cannot be disassembled as such because the EndTag does
3163not appear at the very end of the buffer.
3164
3165AcpiExec - Added the "-t" command line option to enable the serialized mode
3166of the AML interpreter.
3167
3168----------------------------------------
316931 August 2006. Summary of changes for version 20060831:
3170
31711) ACPI CA Core Subsystem:
3172
3173Miscellaneous fixes for the Table Manager:
3174- Correctly initialize internal common FADT for all 64-bit "X" fields
3175- Fixed a couple table mapping issues during table load
3176- Fixed a couple alignment issues for IA64
3177- Initialize input array to zero in AcpiInitializeTables
3178- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
3179AcpiGetTableByIndex
3180
3181Change for GPE support: when a "wake" GPE is received, all wake GPEs are now
3182immediately disabled to prevent the waking GPE from firing again and to
3183prevent other wake GPEs from interrupting the wake process.
3184
3185Added the AcpiGpeCount global that tracks the number of processed GPEs, to
3186be used for debugging systems with a large number of ACPI interrupts.
3187
3188Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
3189both the ACPICA headers and the disassembler.
3190
3191Example Code and Data Size: These are the sizes for the OS-independent
3192acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3193debug version of the code includes the debug output trace mechanism and has
3194a much larger code and data size.
3195
3196  Previous Release:
3197    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
3198    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
3199  Current Release:
3200    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
3201    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
3202
3203
32042) iASL Compiler/Disassembler and Tools:
3205
3206Disassembler support for the DMAR ACPI table.
3207
3208----------------------------------------
320923 August 2006. Summary of changes for version 20060823:
3210
32111) ACPI CA Core Subsystem:
3212
3213The Table Manager component has been completely redesigned and
3214reimplemented. The new design is much simpler, and reduces the overall code
3215and data size of the kernel-resident ACPICA by approximately 5%. Also, it is
3216now possible to obtain the ACPI tables very early during kernel
3217initialization, even before dynamic memory management is initialized.
3218(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
3219
3220Obsolete ACPICA interfaces:
3221
3222- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init
3223time).
3224- AcpiLoadTable: Not needed.
3225- AcpiUnloadTable: Not needed.
3226
3227New ACPICA interfaces:
3228
3229- AcpiInitializeTables: Must be called before the table manager can be used.
3230- AcpiReallocateRootTable: Used to transfer the root table to dynamically
3231allocated memory after it becomes available.
3232- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables
3233in the RSDT/XSDT.
3234
3235Other ACPICA changes:
3236
3237- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use
3238AcpiOsUnmapMemory to free this mapping.
3239- AcpiGetTable returns the actual mapped table. The mapping is managed
3240internally and must not be deleted by the caller. Use of this interface
3241causes no additional dynamic memory allocation.
3242- AcpiFindRootPointer: Support for physical addressing has been eliminated,
3243it appeared to be unused.
3244- The interface to AcpiOsMapMemory has changed to be consistent with the
3245other allocation interfaces.
3246- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary
3247parameters.
3248- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
3249bit platforms. Was previously 64 bits on all platforms.
3250- The interface to the ACPI Global Lock acquire/release macros have changed
3251slightly since ACPICA no longer keeps a local copy of the FACS with a
3252constructed pointer to the actual global lock.
3253
3254Porting to the new table manager:
3255
3256- AcpiInitializeTables: Must be called once, and can be called anytime
3257during the OS initialization process. It allows the host to specify an area
3258of memory to be used to store the internal version of the RSDT/XSDT (root
3259table). This allows the host to access ACPI tables before memory management
3260is initialized and running.
3261- AcpiReallocateRootTable: Can be called after memory management is running
3262to copy the root table to a dynamically allocated array, freeing up the
3263scratch memory specified in the call to AcpiInitializeTables.
3264- AcpiSubsystemInitialize: This existing interface is independent of the
3265Table Manager, and does not have to be called before the Table Manager can
3266be used, it only must be called before the rest of ACPICA can be used.
3267- ACPI Tables: Some changes have been made to the names and structure of the
3268actbl.h and actbl1.h header files and may require changes to existing code.
3269For example, bitfields have been completely removed because of their lack of
3270portability across C compilers.
3271- Update interfaces to the Global Lock acquire/release macros if local
3272versions are used. (see acwin.h)
3273
3274Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
3275
3276New files: tbfind.c
3277
3278Example Code and Data Size: These are the sizes for the OS-independent
3279acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3280debug version of the code includes the debug output trace mechanism and has
3281a much larger code and data size.
3282
3283  Previous Release:
3284    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
3285    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
3286  Current Release:
3287    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
3288    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
3289
3290
32912) iASL Compiler/Disassembler and Tools:
3292
3293No changes for this release.
3294
3295----------------------------------------
329621 July 2006. Summary of changes for version 20060721:
3297
32981) ACPI CA Core Subsystem:
3299
3300The full source code for the ASL test suite used to validate the iASL
3301compiler and the ACPICA core subsystem is being released with the ACPICA
3302source for the first time. The source is contained in a separate package and
3303consists of over 1100 files that exercise all ASL/AML operators. The package
3304should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
3305Suietov)
3306
3307Completed a new design and implementation for support of the ACPI Global
3308Lock. On the OS side, the global lock is now treated as a standard AML
3309mutex. Previously, multiple OS threads could "acquire" the global lock
3310simultaneously. However, this could cause the BIOS to be starved out of the
3311lock - especially in cases such as the Embedded Controller driver where
3312there is a tight coupling between the OS and the BIOS.
3313
3314Implemented an optimization for the ACPI Global Lock interrupt mechanism.
3315The Global Lock interrupt handler no longer queues the execution of a
3316separate thread to signal the global lock semaphore. Instead, the semaphore
3317is signaled directly from the interrupt handler.
3318
3319Implemented support within the AML interpreter for package objects that
3320contain a larger AML length (package list length) than the package element
3321count. In this case, the length of the package is truncated to match the
3322package element count. Some BIOS code apparently modifies the package length
3323on the fly, and this change supports this behavior. Provides compatibility
3324with the MS AML interpreter. (With assistance from Fiodor Suietov)
3325
3326Implemented a temporary fix for the BankValue parameter of a Bank Field to
3327support all constant values, now including the Zero and One opcodes.
3328Evaluation of this parameter must eventually be converted to a full TermArg
3329evaluation. A not-implemented error is now returned (temporarily) for non-
3330constant values for this parameter.
3331
3332Fixed problem reports (Fiodor Suietov) integrated:
3333- Fix for premature object deletion after CopyObject on Operation Region (BZ
3334350)
3335
3336Example Code and Data Size: These are the sizes for the OS-independent
3337acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3338debug version of the code includes the debug output trace mechanism and has
3339a much larger code and data size.
3340
3341  Previous Release:
3342    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
3343    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
3344  Current Release:
3345    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
3346    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
3347
3348
33492) iASL Compiler/Disassembler and Tools:
3350
3351No changes for this release.
3352
3353----------------------------------------
335407 July 2006. Summary of changes for version 20060707:
3355
33561) ACPI CA Core Subsystem:
3357
3358Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
3359that do not allow the initialization of address pointers within packed
3360structures - even though the hardware itself may support misaligned
3361transfers. Some of the debug data structures are packed by default to
3362minimize size.
3363
3364Added an error message for the case where AcpiOsGetThreadId() returns zero.
3365A non-zero value is required by the core ACPICA code to ensure the proper
3366operation of AML mutexes and recursive control methods.
3367
3368The DSDT is now the only ACPI table that determines whether the AML
3369interpreter is in 32-bit or 64-bit mode. Not really a functional change, but
3370the hooks for per-table 32/64 switching have been removed from the code. A
3371clarification to the ACPI specification is forthcoming in ACPI 3.0B.
3372
3373Fixed a possible leak of an OwnerID in the error path of
3374AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
3375deletion to a single place in AcpiTbUninstallTable to correct possible leaks
3376when using the AcpiTbDeleteTablesByType interface (with assistance from
3377Lance Ortiz.)
3378
3379Fixed a problem with Serialized control methods where the semaphore
3380associated with the method could be over-signaled after multiple method
3381invocations.
3382
3383Fixed two issues with the locking of the internal namespace data structure.
3384Both the Unload() operator and AcpiUnloadTable interface now lock the
3385namespace during the namespace deletion associated with the table unload
3386(with assistance from Linn Crosetto.)
3387
3388Fixed problem reports (Valery Podrezov) integrated:
3389- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
3390
3391Fixed problem reports (Fiodor Suietov) integrated:
3392- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
3393- On Address Space handler deletion, needless deactivation call (BZ 374)
3394- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
3395- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone
3396(BZ 376)
3397- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
3398- Minimum Length of RSDT should be validated (BZ 379)
3399- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
3400Handler (BZ (380)
3401- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded
3402(BZ 381)
3403
3404Example Code and Data Size: These are the sizes for the OS-independent
3405acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3406debug version of the code includes the debug output trace mechanism and has
3407a much larger code and data size.
3408
3409  Previous Release:
3410    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
3411    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
3412  Current Release:
3413    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
3414    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
3415
3416
34172) iASL Compiler/Disassembler and Tools:
3418
3419Fixed problem reports:
3420Compiler segfault when ASL contains a long (>1024) String declaration (BZ
3421436)
3422
3423----------------------------------------
342423 June 2006. Summary of changes for version 20060623:
3425
34261) ACPI CA Core Subsystem:
3427
3428Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
3429allows the type to be customized to the host OS for improved efficiency
3430(since a spinlock is usually a very small object.)
3431
3432Implemented support for "ignored" bits in the ACPI registers. According to
3433the ACPI specification, these bits should be preserved when writing the
3434registers via a read/modify/write cycle. There are 3 bits preserved in this
3435manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
3436
3437Implemented the initial deployment of new OSL mutex interfaces. Since some
3438host operating systems have separate mutex and semaphore objects, this
3439feature was requested. The base code now uses mutexes (and the new mutex
3440interfaces) wherever a binary semaphore was used previously. However, for
3441the current release, the mutex interfaces are defined as macros to map them
3442to the existing semaphore interfaces. Therefore, no OSL changes are required
3443at this time. (See acpiosxf.h)
3444
3445Fixed several problems with the support for the control method SyncLevel
3446parameter. The SyncLevel now works according to the ACPI specification and
3447in concert with the Mutex SyncLevel parameter, since the current SyncLevel
3448is a property of the executing thread. Mutual exclusion for control methods
3449is now implemented with a mutex instead of a semaphore.
3450
3451Fixed three instances of the use of the C shift operator in the bitfield
3452support code (exfldio.c) to avoid the use of a shift value larger than the
3453target data width. The behavior of C compilers is undefined in this case and
3454can cause unpredictable results, and therefore the case must be detected and
3455avoided. (Fiodor Suietov)
3456
3457Added an info message whenever an SSDT or OEM table is loaded dynamically
3458via the Load() or LoadTable() ASL operators. This should improve debugging
3459capability since it will show exactly what tables have been loaded (beyond
3460the tables present in the RSDT/XSDT.)
3461
3462Example Code and Data Size: These are the sizes for the OS-independent
3463acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3464debug version of the code includes the debug output trace mechanism and has
3465a much larger code and data size.
3466
3467  Previous Release:
3468    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
3469    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
3470  Current Release:
3471    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
3472    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
3473
3474
34752) iASL Compiler/Disassembler and Tools:
3476
3477No changes for this release.
3478
3479----------------------------------------
348008 June 2006. Summary of changes for version 20060608:
3481
34821) ACPI CA Core Subsystem:
3483
3484Converted the locking mutex used for the ACPI hardware to a spinlock. This
3485change should eliminate all problems caused by attempting to acquire a
3486semaphore at interrupt level, and it means that all ACPICA external
3487interfaces that directly access the ACPI hardware can be safely called from
3488interrupt level. OSL code that implements the semaphore interfaces should be
3489able to eliminate any workarounds for being called at interrupt level.
3490
3491Fixed a regression introduced in 20060526 where the ACPI device
3492initialization could be prematurely aborted with an AE_NOT_FOUND if a device
3493did not have an optional _INI method.
3494
3495Fixed an IndexField issue where a write to the Data Register should be
3496limited in size to the AccessSize (width) of the IndexField itself. (BZ 433,
3497Fiodor Suietov)
3498
3499Fixed problem reports (Valery Podrezov) integrated:
3500- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
3501
3502Fixed problem reports (Fiodor Suietov) integrated:
3503- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
3504
3505Removed four global mutexes that were obsolete and were no longer being
3506used.
3507
3508Example Code and Data Size: These are the sizes for the OS-independent
3509acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3510debug version of the code includes the debug output trace mechanism and has
3511a much larger code and data size.
3512
3513  Previous Release:
3514    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
3515    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
3516  Current Release:
3517    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
3518    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
3519
3520
35212) iASL Compiler/Disassembler and Tools:
3522
3523Fixed a fault when using -g option (get tables from registry) on Windows
3524machines.
3525
3526Fixed problem reports integrated:
3527- Generate error if CreateField NumBits parameter is zero. (BZ 405)
3528- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
3529Suietov)
3530- Global table revision override (-r) is ignored (BZ 413)
3531
3532----------------------------------------
353326 May 2006. Summary of changes for version 20060526:
3534
35351) ACPI CA Core Subsystem:
3536
3537Restructured, flattened, and simplified the internal interfaces for
3538namespace object evaluation - resulting in smaller code, less CPU stack use,
3539and fewer interfaces. (With assistance from Mikhail Kouzmich)
3540
3541Fixed a problem with the CopyObject operator where the first parameter was
3542not typed correctly for the parser, interpreter, compiler, and disassembler.
3543Caused various errors and unexpected behavior.
3544
3545Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
3546produced incorrect results with some C compilers. Since the behavior of C
3547compilers when the shift value is larger than the datatype width is
3548apparently not well defined, the interpreter now detects this condition and
3549simply returns zero as expected in all such cases. (BZ 395)
3550
3551Fixed problem reports (Valery Podrezov) integrated:
3552- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
3553- Allow interpreter to handle nested method declarations (BZ 5361)
3554
3555Fixed problem reports (Fiodor Suietov) integrated:
3556- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
3557- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
3558- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
3559- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
3560- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
3561- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
3562- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
3563- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
3564- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
3565- Status of the Global Initialization Handler call not used (BZ 366)
3566- Incorrect object parameter to Global Initialization Handler (BZ 367)
3567
3568Example Code and Data Size: These are the sizes for the OS-independent
3569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3570debug version of the code includes the debug output trace mechanism and has
3571a much larger code and data size.
3572
3573  Previous Release:
3574    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
3575    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
3576  Current Release:
3577    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
3578    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
3579
3580
35812) iASL Compiler/Disassembler and Tools:
3582
3583Modified the parser to allow the names IO, DMA, and IRQ to be used as
3584namespace identifiers with no collision with existing resource descriptor
3585macro names. This provides compatibility with other ASL compilers and is
3586most useful for disassembly/recompilation of existing tables without parse
3587errors. (With assistance from Thomas Renninger)
3588
3589Disassembler: fixed an incorrect disassembly problem with the
3590DataTableRegion and CopyObject operators. Fixed a possible fault during
3591disassembly of some Alias operators.
3592
3593----------------------------------------
359412 May 2006. Summary of changes for version 20060512:
3595
35961) ACPI CA Core Subsystem:
3597
3598Replaced the AcpiOsQueueForExecution interface with a new interface named
3599AcpiOsExecute. The major difference is that the new interface does not have
3600a Priority parameter, this appeared to be useless and has been replaced by a
3601Type parameter. The Type tells the host what type of execution is being
3602requested, such as global lock handler, notify handler, GPE handler, etc.
3603This allows the host to queue and execute the request as appropriate for the
3604request type, possibly using different work queues and different priorities
3605for the various request types. This enables fixes for multithreading
3606deadlock problems such as BZ #5534, and will require changes to all existing
3607OS interface layers. (Alexey Starikovskiy and Bob Moore)
3608
3609Fixed a possible memory leak associated with the support for the so-called
3610"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
3611Suietov)
3612
3613Fixed a problem with the Load() operator where a table load from an
3614operation region could overwrite an internal table buffer by up to 7 bytes
3615and cause alignment faults on IPF systems. (With assistance from Luming Yu)
3616
3617Example Code and Data Size: These are the sizes for the OS-independent
3618acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3619debug version of the code includes the debug output trace mechanism and has
3620a much larger code and data size.
3621
3622  Previous Release:
3623    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
3624    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
3625  Current Release:
3626    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
3627    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
3628
3629
3630
36312) iASL Compiler/Disassembler and Tools:
3632
3633Disassembler: Implemented support to cross reference the internal namespace
3634and automatically generate ASL External() statements for symbols not defined
3635within the current table being disassembled. This will simplify the
3636disassembly and recompilation of interdependent tables such as SSDTs since
3637these statements will no longer have to be added manually.
3638
3639Disassembler: Implemented experimental support to automatically detect
3640invocations of external control methods and generate appropriate External()
3641statements. This is problematic because the AML cannot be correctly parsed
3642until the number of arguments for each control method is known. Currently,
3643standalone method invocations and invocations as the source operand of a
3644Store() statement are supported.
3645
3646Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
3647LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
3648LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
3649more readable and likely closer to the original ASL source.
3650
3651----------------------------------------
365221 April 2006. Summary of changes for version 20060421:
3653
36541) ACPI CA Core Subsystem:
3655
3656Removed a device initialization optimization introduced in 20051216 where
3657the _STA method was not run unless an _INI was also present for the same
3658device. This optimization could cause problems because it could allow _INI
3659methods to be run within a not-present device subtree. (If a not-present
3660device had no _INI, _STA would not be run, the not-present status would not
3661be discovered, and the children of the device would be incorrectly
3662traversed.)
3663
3664Implemented a new _STA optimization where namespace subtrees that do not
3665contain _INI are identified and ignored during device initialization.
3666Selectively running _STA can significantly improve boot time on large
3667machines (with assistance from Len Brown.)
3668
3669Implemented support for the device initialization case where the returned
3670_STA flags indicate a device not-present but functioning. In this case, _INI
3671is not run, but the device children are examined for presence, as per the
3672ACPI specification.
3673
3674Implemented an additional change to the IndexField support in order to
3675conform to MS behavior. The value written to the Index Register is not
3676simply a byte offset, it is a byte offset in units of the access width of
3677the parent Index Field. (Fiodor Suietov)
3678
3679Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
3680interface is called during the creation of all AML operation regions, and
3681allows the host OS to exert control over what addresses it will allow the
3682AML code to access. Operation Regions whose addresses are disallowed will
3683cause a runtime exception when they are actually accessed (will not affect
3684or abort table loading.) See oswinxf or osunixxf for an example
3685implementation.
3686
3687Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
3688interface allows the host OS to match the various "optional"
3689interface/behavior strings for the _OSI predefined control method as
3690appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
3691for an example implementation.
3692
3693Restructured and corrected various problems in the exception handling code
3694paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
3695(with assistance from Takayoshi Kochi.)
3696
3697Modified the Linux source converter to ignore quoted string literals while
3698converting identifiers from mixed to lower case. This will correct problems
3699with the disassembler and other areas where such strings must not be
3700modified.
3701
3702The ACPI_FUNCTION_* macros no longer require quotes around the function
3703name. This allows the Linux source converter to convert the names, now that
3704the converter ignores quoted strings.
3705
3706Example Code and Data Size: These are the sizes for the OS-independent
3707acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3708debug version of the code includes the debug output trace mechanism and has
3709a much larger code and data size.
3710
3711  Previous Release:
3712
3713    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
3714    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
3715  Current Release:
3716    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
3717    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
3718
3719
37202) iASL Compiler/Disassembler and Tools:
3721
3722Implemented 3 new warnings for iASL, and implemented multiple warning levels
3723(w2 flag).
3724
37251) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not
3726WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
3727check for the possible timeout, a warning is issued.
3728
37292) Useless operators: If an ASL operator does not specify an optional target
3730operand and it also does not use the function return value from the
3731operator, a warning is issued since the operator effectively does nothing.
3732
37333) Unreferenced objects: If a namespace object is created, but never
3734referenced, a warning is issued. This is a warning level 2 since there are
3735cases where this is ok, such as when a secondary table is loaded that uses
3736the unreferenced objects. Even so, care is taken to only flag objects that
3737don't look like they will ever be used. For example, the reserved methods
3738(starting with an underscore) are usually not referenced because it is
3739expected that the OS will invoke them.
3740
3741----------------------------------------
374231 March 2006. Summary of changes for version 20060331:
3743
37441) ACPI CA Core Subsystem:
3745
3746Implemented header file support for the following additional ACPI tables:
3747ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support,
3748all current and known ACPI tables are now defined in the ACPICA headers and
3749are available for use by device drivers and other software.
3750
3751Implemented support to allow tables that contain ACPI names with invalid
3752characters to be loaded. Previously, this would cause the table load to
3753fail, but since there are several known cases of such tables on existing
3754machines, this change was made to enable ACPI support for them. Also, this
3755matches the behavior of the Microsoft ACPI implementation.
3756
3757Fixed a couple regressions introduced during the memory optimization in the
375820060317 release. The namespace node definition required additional
3759reorganization and an internal datatype that had been changed to 8-bit was
3760restored to 32-bit. (Valery Podrezov)
3761
3762Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
3763could be passed through to AcpiOsReleaseObject which is unexpected. Such
3764null pointers are now trapped and ignored, matching the behavior of the
3765previous implementation before the deployment of AcpiOsReleaseObject.
3766(Valery Podrezov, Fiodor Suietov)
3767
3768Fixed a memory mapping leak during the deletion of a SystemMemory operation
3769region where a cached memory mapping was not deleted. This became a
3770noticeable problem for operation regions that are defined within frequently
3771used control methods. (Dana Meyers)
3772
3773Reorganized the ACPI table header files into two main files: one for the
3774ACPI tables consumed by the ACPICA core, and another for the miscellaneous
3775ACPI tables that are consumed by the drivers and other software. The various
3776FADT definitions were merged into one common section and three different
3777tables (ACPI 1.0, 1.0+, and 2.0)
3778
3779Example Code and Data Size: These are the sizes for the OS-independent
3780acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3781debug version of the code includes the debug output trace mechanism and has
3782a much larger code and data size.
3783
3784  Previous Release:
3785    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
3786    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
3787  Current Release:
3788    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
3789    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
3790
3791
37922) iASL Compiler/Disassembler and Tools:
3793
3794Disassembler: Implemented support to decode and format all non-AML ACPI
3795tables (tables other than DSDTs and SSDTs.) This includes the new tables
3796added to the ACPICA headers, therefore all current and known ACPI tables are
3797supported.
3798
3799Disassembler: The change to allow ACPI names with invalid characters also
3800enables the disassembly of such tables. Invalid characters within names are
3801changed to '*' to make the name printable; the iASL compiler will still
3802generate an error for such names, however, since this is an invalid ACPI
3803character.
3804
3805Implemented an option for AcpiXtract (-a) to extract all tables found in the
3806input file. The default invocation extracts only the DSDTs and SSDTs.
3807
3808Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
3809makefile for the AcpiXtract utility.
3810
3811----------------------------------------
381217 March 2006. Summary of changes for version 20060317:
3813
38141) ACPI CA Core Subsystem:
3815
3816Implemented the use of a cache object for all internal namespace nodes.
3817Since there are about 1000 static nodes in a typical system, this will
3818decrease memory use for cache implementations that minimize per-allocation
3819overhead (such as a slab allocator.)
3820
3821Removed the reference count mechanism for internal namespace nodes, since it
3822was deemed unnecessary. This reduces the size of each namespace node by
3823about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case,
3824and 32 bytes for the 64-bit case.
3825
3826Optimized several internal data structures to reduce object size on 64-bit
3827platforms by packing data within the 64-bit alignment. This includes the
3828frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
3829instances corresponding to the namespace objects.
3830
3831Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1"
3832and "Windows 2006".
3833
3834Split the allocation tracking mechanism out to a separate file, from
3835utalloc.c to uttrack.c. This mechanism appears to be only useful for
3836application-level code. Kernels may wish to not include uttrack.c in
3837distributions.
3838
3839Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated
3840code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
3841macros.)
3842
3843Code and Data Size: These are the sizes for the acpica.lib produced by the
3844Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3845driver or OSPM code. The debug version of the code includes the debug output
3846trace mechanism and has a much larger code and data size. Note that these
3847values will vary depending on the efficiency of the compiler and the
3848compiler options used during generation.
3849
3850  Previous Release:
3851    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3852    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
3853  Current Release:
3854    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
3855    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
3856
3857
38582) iASL Compiler/Disassembler and Tools:
3859
3860Implemented an ANSI C version of the acpixtract utility. This version will
3861automatically extract the DSDT and all SSDTs from the input acpidump text
3862file and dump the binary output to separate files. It can also display a
3863summary of the input file including the headers for each table found and
3864will extract any single ACPI table, with any signature. (See
3865source/tools/acpixtract)
3866
3867----------------------------------------
386810 March 2006. Summary of changes for version 20060310:
3869
38701) ACPI CA Core Subsystem:
3871
3872Tagged all external interfaces to the subsystem with the new
3873ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist
3874kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
3875macro. The default definition is NULL.
3876
3877Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId.
3878This allows the host to define this as necessary to simplify kernel
3879integration. The default definition is ACPI_NATIVE_UINT.
3880
3881Fixed two interpreter problems related to error processing, the deletion of
3882objects, and placing invalid pointers onto the internal operator result
3883stack. BZ 6028, 6151 (Valery Podrezov)
3884
3885Increased the reference count threshold where a warning is emitted for large
3886reference counts in order to eliminate unnecessary warnings on systems with
3887large namespaces (especially 64-bit.) Increased the value from 0x400 to
38880x800.
3889
3890Due to universal disagreement as to the meaning of the 'c' in the calloc()
3891function, the ACPI_MEM_CALLOCATE macro has been renamed to
3892ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
3893ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
3894ACPI_FREE.
3895
3896Code and Data Size: These are the sizes for the acpica.lib produced by the
3897Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3898driver or OSPM code. The debug version of the code includes the debug output
3899trace mechanism and has a much larger code and data size. Note that these
3900values will vary depending on the efficiency of the compiler and the
3901compiler options used during generation.
3902
3903  Previous Release:
3904    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
3905    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
3906  Current Release:
3907    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3908    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
3909
3910
39112) iASL Compiler/Disassembler:
3912
3913Disassembler: implemented support for symbolic resource descriptor
3914references. If a CreateXxxxField operator references a fixed offset within a
3915resource descriptor, a name is assigned to the descriptor and the offset is
3916translated to the appropriate resource tag and pathname. The addition of
3917this support brings the disassembled code very close to the original ASL
3918source code and helps eliminate run-time errors when the disassembled code
3919is modified (and recompiled) in such a way as to invalidate the original
3920fixed offsets.
3921
3922Implemented support for a Descriptor Name as the last parameter to the ASL
3923Register() macro. This parameter was inadvertently left out of the ACPI
3924specification, and will be added for ACPI 3.0b.
3925
3926Fixed a problem where the use of the "_OSI" string (versus the full path
3927"\_OSI") caused an internal compiler error. ("No back ptr to op")
3928
3929Fixed a problem with the error message that occurs when an invalid string is
3930used for a _HID object (such as one with an embedded asterisk: "*PNP010A".)
3931The correct message is now displayed.
3932
3933----------------------------------------
393417 February 2006. Summary of changes for version 20060217:
3935
39361) ACPI CA Core Subsystem:
3937
3938Implemented a change to the IndexField support to match the behavior of the
3939Microsoft AML interpreter. The value written to the Index register is now a
3940byte offset, no longer an index based upon the width of the Data register.
3941This should fix IndexField problems seen on some machines where the Data
3942register is not exactly one byte wide. The ACPI specification will be
3943clarified on this point.
3944
3945Fixed a problem where several resource descriptor types could overrun the
3946internal descriptor buffer due to size miscalculation: VendorShort,
3947VendorLong, and Interrupt. This was noticed on IA64 machines, but could
3948affect all platforms.
3949
3950Fixed a problem where individual resource descriptors were misaligned within
3951the internal buffer, causing alignment faults on IA64 platforms.
3952
3953Code and Data Size: These are the sizes for the acpica.lib produced by the
3954Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3955driver or OSPM code. The debug version of the code includes the debug output
3956trace mechanism and has a much larger code and data size. Note that these
3957values will vary depending on the efficiency of the compiler and the
3958compiler options used during generation.
3959
3960  Previous Release:
3961    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3962    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
3963  Current Release:
3964    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
3965    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
3966
3967
39682) iASL Compiler/Disassembler:
3969
3970Implemented support for new reserved names: _WDG and _WED are Microsoft
3971extensions for Windows Instrumentation Management, _TDL is a new ACPI-
3972defined method (Throttling Depth Limit.)
3973
3974Fixed a problem where a zero-length VendorShort or VendorLong resource
3975descriptor was incorrectly emitted as a descriptor of length one.
3976
3977----------------------------------------
397810 February 2006. Summary of changes for version 20060210:
3979
39801) ACPI CA Core Subsystem:
3981
3982Removed a couple of extraneous ACPI_ERROR messages that appeared during
3983normal execution. These became apparent after the conversion from
3984ACPI_DEBUG_PRINT.
3985
3986Fixed a problem where the CreateField operator could hang if the BitIndex or
3987NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
3988
3989Fixed a problem where a DeRefOf operation on a buffer object incorrectly
3990failed with an exception. This also fixes a couple of related RefOf and
3991DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
3992
3993Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of
3994AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ
39955480)
3996
3997Implemented a memory cleanup at the end of the execution of each iteration
3998of an AML While() loop, preventing the accumulation of outstanding objects.
3999(Valery Podrezov, BZ 5427)
4000
4001Eliminated a chunk of duplicate code in the object resolution code. (Valery
4002Podrezov, BZ 5336)
4003
4004Fixed several warnings during the 64-bit code generation.
4005
4006The AcpiSrc source code conversion tool now inserts one line of whitespace
4007after an if() statement that is followed immediately by a comment, improving
4008readability of the Linux code.
4009
4010Code and Data Size: The current and previous library sizes for the core
4011subsystem are shown below. These are the code and data sizes for the
4012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4013values do not include any ACPI driver or OSPM code. The debug version of the
4014code includes the debug output trace mechanism and has a much larger code
4015and data size. Note that these values will vary depending on the efficiency
4016of the compiler and the compiler options used during generation.
4017
4018  Previous Release:
4019    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
4020    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
4021  Current Release:
4022    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4023    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
4024
4025
40262) iASL Compiler/Disassembler:
4027
4028Fixed a problem with the disassembly of a BankField operator with a complex
4029expression for the BankValue parameter.
4030
4031----------------------------------------
403227 January 2006. Summary of changes for version 20060127:
4033
40341) ACPI CA Core Subsystem:
4035
4036Implemented support in the Resource Manager to allow unresolved namestring
4037references within resource package objects for the _PRT method. This support
4038is in addition to the previously implemented unresolved reference support
4039within the AML parser. If the interpreter slack mode is enabled, these
4040unresolved references will be passed through to the caller as a NULL package
4041entry.
4042
4043Implemented and deployed new macros and functions for error and warning
4044messages across the subsystem. These macros are simpler and generate less
4045code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
4046ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
4047macros remain defined to allow ACPI drivers time to migrate to the new
4048macros.
4049
4050Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the
4051Acquire/Release Lock OSL interfaces.
4052
4053Fixed a problem where Alias ASL operators are sometimes not correctly
4054resolved, in both the interpreter and the iASL compiler.
4055
4056Fixed several problems with the implementation of the ConcatenateResTemplate
4057ASL operator. As per the ACPI specification, zero length buffers are now
4058treated as a single EndTag. One-length buffers always cause a fatal
4059exception. Non-zero length buffers that do not end with a full 2-byte EndTag
4060cause a fatal exception.
4061
4062Fixed a possible structure overwrite in the AcpiGetObjectInfo external
4063interface. (With assistance from Thomas Renninger)
4064
4065Code and Data Size: The current and previous library sizes for the core
4066subsystem are shown below. These are the code and data sizes for the
4067acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4068values do not include any ACPI driver or OSPM code. The debug version of the
4069code includes the debug output trace mechanism and has a much larger code
4070and data size. Note that these values will vary depending on the efficiency
4071of the compiler and the compiler options used during generation.
4072
4073  Previous Release:
4074    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
4075    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
4076  Current Release:
4077    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
4078    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
4079
4080
40812) iASL Compiler/Disassembler:
4082
4083Fixed an internal error that was generated for any forward references to ASL
4084Alias objects.
4085
4086----------------------------------------
408713 January 2006. Summary of changes for version 20060113:
4088
40891) ACPI CA Core Subsystem:
4090
4091Added 2006 copyright to all module headers and signons. This affects
4092virtually every file in the ACPICA core subsystem, iASL compiler, and the
4093utilities.
4094
4095Enhanced the ACPICA error reporting in order to simplify user migration to
4096the non-debug version of ACPICA. Replaced all instances of the
4097ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug
4098levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
4099respectively. This preserves all error and warning messages in the non-debug
4100version of the ACPICA code (this has been referred to as the "debug lite"
4101option.) Over 200 cases were converted to create a total of over 380
4102error/warning messages across the ACPICA code. This increases the code and
4103data size of the default non-debug version of the code somewhat (about 13K),
4104but all error/warning reporting may be disabled if desired (and code
4105eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
4106configuration option. The size of the debug version of ACPICA remains about
4107the same.
4108
4109Fixed a memory leak within the AML Debugger "Set" command. One object was
4110not properly deleted for every successful invocation of the command.
4111
4112Code and Data Size: The current and previous library sizes for the core
4113subsystem are shown below. These are the code and data sizes for the
4114acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4115values do not include any ACPI driver or OSPM code. The debug version of the
4116code includes the debug output trace mechanism and has a much larger code
4117and data size. Note that these values will vary depending on the efficiency
4118of the compiler and the compiler options used during generation.
4119
4120  Previous Release:
4121    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
4122    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
4123  Current Release:
4124    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
4125    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
4126
4127
41282) iASL Compiler/Disassembler:
4129
4130The compiler now officially supports the ACPI 3.0a specification that was
4131released on December 30, 2005. (Specification is available at www.acpi.info)
4132
4133----------------------------------------
413416 December 2005. Summary of changes for version 20051216:
4135
41361) ACPI CA Core Subsystem:
4137
4138Implemented optional support to allow unresolved names within ASL Package
4139objects. A null object is inserted in the package when a named reference
4140cannot be located in the current namespace. Enabled via the interpreter
4141slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines
4142that contain such code.
4143
4144Implemented an optimization to the initialization sequence that can improve
4145boot time. During ACPI device initialization, the _STA method is now run if
4146and only if the _INI method exists. The _STA method is used to determine if
4147the device is present; An _INI can only be run if _STA returns present, but
4148it is a waste of time to run the _STA method if the _INI does not exist.
4149(Prototype and assistance from Dong Wei)
4150
4151Implemented use of the C99 uintptr_t for the pointer casting macros if it is
4152available in the current compiler. Otherwise, the default (void *) cast is
4153used as before.
4154
4155Fixed some possible memory leaks found within the execution path of the
4156Break, Continue, If, and CreateField operators. (Valery Podrezov)
4157
4158Fixed a problem introduced in the 20051202 release where an exception is
4159generated during method execution if a control method attempts to declare
4160another method.
4161
4162Moved resource descriptor string constants that are used by both the AML
4163disassembler and AML debugger to the common utilities directory so that
4164these components are independent.
4165
4166Implemented support in the AcpiExec utility (-e switch) to globally ignore
4167exceptions during control method execution (method is not aborted.)
4168
4169Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
4170generation.
4171
4172Code and Data Size: The current and previous library sizes for the core
4173subsystem are shown below. These are the code and data sizes for the
4174acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4175values do not include any ACPI driver or OSPM code. The debug version of the
4176code includes the debug output trace mechanism and has a much larger code
4177and data size. Note that these values will vary depending on the efficiency
4178of the compiler and the compiler options used during generation.
4179
4180  Previous Release:
4181    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4182    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
4183  Current Release:
4184    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
4185    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
4186
4187
41882) iASL Compiler/Disassembler:
4189
4190Fixed a problem where a CPU stack overflow fault could occur if a recursive
4191method call was made from within a Return statement.
4192
4193----------------------------------------
419402 December 2005. Summary of changes for version 20051202:
4195
41961) ACPI CA Core Subsystem:
4197
4198Modified the parsing of control methods to no longer create namespace
4199objects during the first pass of the parse. Objects are now created only
4200during the execute phase, at the moment the namespace creation operator is
4201encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This
4202should eliminate ALREADY_EXISTS exceptions seen on some machines where
4203reentrant control methods are protected by an AML mutex. The mutex will now
4204correctly block multiple threads from attempting to create the same object
4205more than once.
4206
4207Increased the number of available Owner Ids for namespace object tracking
4208from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on
4209some machines with a large number of ACPI tables (either static or dynamic).
4210
4211Fixed a problem with the AcpiExec utility where a fault could occur when the
4212-b switch (batch mode) is used.
4213
4214Enhanced the namespace dump routine to output the owner ID for each
4215namespace object.
4216
4217Code and Data Size: The current and previous library sizes for the core
4218subsystem are shown below. These are the code and data sizes for the
4219acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4220values do not include any ACPI driver or OSPM code. The debug version of the
4221code includes the debug output trace mechanism and has a much larger code
4222and data size. Note that these values will vary depending on the efficiency
4223of the compiler and the compiler options used during generation.
4224
4225  Previous Release:
4226    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4227    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4228  Current Release:
4229    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4230    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
4231
4232
42332) iASL Compiler/Disassembler:
4234
4235Fixed a parse error during compilation of certain Switch/Case constructs. To
4236simplify the parse, the grammar now allows for multiple Default statements
4237and this error is now detected and flagged during the analysis phase.
4238
4239Disassembler: The disassembly now includes the contents of the original
4240table header within a comment at the start of the file. This includes the
4241name and version of the original ASL compiler.
4242
4243----------------------------------------
424417 November 2005. Summary of changes for version 20051117:
4245
42461) ACPI CA Core Subsystem:
4247
4248Fixed a problem in the AML parser where the method thread count could be
4249decremented below zero if any errors occurred during the method parse phase.
4250This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines.
4251This also fixed a related regression with the mechanism that detects and
4252corrects methods that cannot properly handle reentrancy (related to the
4253deployment of the new OwnerId mechanism.)
4254
4255Eliminated the pre-parsing of control methods (to detect errors) during
4256table load. Related to the problem above, this was causing unwind issues if
4257any errors occurred during the parse, and it seemed to be overkill. A table
4258load should not be aborted if there are problems with any single control
4259method, thus rendering this feature rather pointless.
4260
4261Fixed a problem with the new table-driven resource manager where an internal
4262buffer overflow could occur for small resource templates.
4263
4264Implemented a new external interface, AcpiGetVendorResource. This interface
4265will find and return a vendor-defined resource descriptor within a _CRS or
4266_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
4267
4268Removed the length limit (200) on string objects as per the upcoming ACPI
42693.0A specification. This affects the following areas of the interpreter: 1)
4270any implicit conversion of a Buffer to a String, 2) a String object result
4271of the ASL Concatentate operator, 3) the String object result of the ASL
4272ToString operator.
4273
4274Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER
4275on a semaphore object would incorrectly timeout. This allows the
4276multithreading features of the AcpiExec utility to work properly under
4277Windows.
4278
4279Updated the Linux makefiles for the iASL compiler and AcpiExec to include
4280the recently added file named "utresrc.c".
4281
4282Code and Data Size: The current and previous library sizes for the core
4283subsystem are shown below. These are the code and data sizes for the
4284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4285values do not include any ACPI driver or OSPM code. The debug version of the
4286code includes the debug output trace mechanism and has a much larger code
4287and data size. Note that these values will vary depending on the efficiency
4288of the compiler and the compiler options used during generation.
4289
4290  Previous Release:
4291    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
4292    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4293  Current Release:
4294    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4295    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4296
4297
42982) iASL Compiler/Disassembler:
4299
4300Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
4301specification. For the iASL compiler, this means that string literals within
4302the source ASL can be of any length.
4303
4304Enhanced the listing output to dump the AML code for resource descriptors
4305immediately after the ASL code for each descriptor, instead of in a block at
4306the end of the entire resource template.
4307
4308Enhanced the compiler debug output to dump the entire original parse tree
4309constructed during the parse phase, before any transforms are applied to the
4310tree. The transformed tree is dumped also.
4311
4312----------------------------------------
431302 November 2005. Summary of changes for version 20051102:
4314
43151) ACPI CA Core Subsystem:
4316
4317Modified the subsystem initialization sequence to improve GPE support. The
4318GPE initialization has been split into two parts in order to defer execution
4319of the _PRW methods (Power Resources for Wake) until after the hardware is
4320fully initialized and the SCI handler is installed. This allows the _PRW
4321methods to access fields protected by the Global Lock. This will fix systems
4322where a NO_GLOBAL_LOCK exception has been seen during initialization.
4323
4324Converted the ACPI internal object disassemble and display code within the
4325AML debugger to fully table-driven operation, reducing code size and
4326increasing maintainability.
4327
4328Fixed a regression with the ConcatenateResTemplate() ASL operator introduced
4329in the 20051021 release.
4330
4331Implemented support for "local" internal ACPI object types within the
4332debugger "Object" command and the AcpiWalkNamespace external interfaces.
4333These local types include RegionFields, BankFields, IndexFields, Alias, and
4334reference objects.
4335
4336Moved common AML resource handling code into a new file, "utresrc.c". This
4337code is shared by both the Resource Manager and the AML Debugger.
4338
4339Code and Data Size: The current and previous library sizes for the core
4340subsystem are shown below. These are the code and data sizes for the
4341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4342values do not include any ACPI driver or OSPM code. The debug version of the
4343code includes the debug output trace mechanism and has a much larger code
4344and data size. Note that these values will vary depending on the efficiency
4345of the compiler and the compiler options used during generation.
4346
4347  Previous Release:
4348    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
4349    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
4350  Current Release:
4351    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
4352    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4353
4354
43552) iASL Compiler/Disassembler:
4356
4357Fixed a problem with very large initializer lists (more than 4000 elements)
4358for both Buffer and Package objects where the parse stack could overflow.
4359
4360Enhanced the pre-compile source code scan for non-ASCII characters to ignore
4361characters within comment fields. The scan is now always performed and is no
4362longer optional, detecting invalid characters within a source file
4363immediately rather than during the parse phase or later.
4364
4365Enhanced the ASL grammar definition to force early reductions on all list-
4366style grammar elements so that the overall parse stack usage is greatly
4367reduced. This should improve performance and reduce the possibility of parse
4368stack overflow.
4369
4370Eliminated all reduce/reduce conflicts in the iASL parser generation. Also,
4371with the addition of a %expected statement, the compiler generates from
4372source with no warnings.
4373
4374Fixed a possible segment fault in the disassembler if the input filename
4375does not contain a "dot" extension (Thomas Renninger).
4376
4377----------------------------------------
437821 October 2005. Summary of changes for version 20051021:
4379
43801) ACPI CA Core Subsystem:
4381
4382Implemented support for the EM64T and other x86-64 processors. This
4383essentially entails recognizing that these processors support non-aligned
4384memory transfers. Previously, all 64-bit processors were assumed to lack
4385hardware support for non-aligned transfers.
4386
4387Completed conversion of the Resource Manager to nearly full table-driven
4388operation. Specifically, the resource conversion code (convert AML to
4389internal format and the reverse) and the debug code to dump internal
4390resource descriptors are fully table-driven, reducing code and data size and
4391improving maintainability.
4392
4393The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word
4394on 64-bit processors instead of a fixed 32-bit word. (With assistance from
4395Alexey Starikovskiy)
4396
4397Implemented support within the resource conversion code for the Type-
4398Specific byte within the various ACPI 3.0 *WordSpace macros.
4399
4400Fixed some issues within the resource conversion code for the type-specific
4401flags for both Memory and I/O address resource descriptors. For Memory,
4402implemented support for the MTP and TTP flags. For I/O, split the TRS and
4403TTP flags into two separate fields.
4404
4405Code and Data Size: The current and previous library sizes for the core
4406subsystem are shown below. These are the code and data sizes for the
4407acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4408values do not include any ACPI driver or OSPM code. The debug version of the
4409code includes the debug output trace mechanism and has a much larger code
4410and data size. Note that these values will vary depending on the efficiency
4411of the compiler and the compiler options used during generation.
4412
4413  Previous Release:
4414    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
4415    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
4416  Current Release:
4417    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
4418    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
4419
4420
4421
44222) iASL Compiler/Disassembler:
4423
4424Relaxed a compiler restriction that disallowed a ResourceIndex byte if the
4425corresponding ResourceSource string was not also present in a resource
4426descriptor declaration. This restriction caused problems with existing
4427AML/ASL code that includes the Index byte without the string. When such AML
4428was disassembled, it could not be compiled without modification. Further,
4429the modified code created a resource template with a different size than the
4430original, breaking code that used fixed offsets into the resource template
4431buffer.
4432
4433Removed a recent feature of the disassembler to ignore a lone ResourceIndex
4434byte. This byte is now emitted if present so that the exact AML can be
4435reproduced when the disassembled code is recompiled.
4436
4437Improved comments and text alignment for the resource descriptor code
4438emitted by the disassembler.
4439
4440Implemented disassembler support for the ACPI 3.0 AccessSize field within a
4441Register() resource descriptor.
4442
4443----------------------------------------
444430 September 2005. Summary of changes for version 20050930:
4445
44461) ACPI CA Core Subsystem:
4447
4448Completed a major overhaul of the Resource Manager code - specifically,
4449optimizations in the area of the AML/internal resource conversion code. The
4450code has been optimized to simplify and eliminate duplicated code, CPU stack
4451use has been decreased by optimizing function parameters and local
4452variables, and naming conventions across the manager have been standardized
4453for clarity and ease of maintenance (this includes function, parameter,
4454variable, and struct/typedef names.) The update may force changes in some
4455driver code, depending on how resources are handled by the host OS.
4456
4457All Resource Manager dispatch and information tables have been moved to a
4458single location for clarity and ease of maintenance. One new file was
4459created, named "rsinfo.c".
4460
4461The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
4462guarantee that the argument is not evaluated twice, making them less prone
4463to macro side-effects. However, since there exists the possibility of
4464additional stack use if a particular compiler cannot optimize them (such as
4465in the debug generation case), the original macros are optionally available.
4466Note that some invocations of the return_VALUE macro may now cause size
4467mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to
4468eliminate these. (From Randy Dunlap)
4469
4470Implemented a new mechanism to enable debug tracing for individual control
4471methods. A new external interface, AcpiDebugTrace, is provided to enable
4472this mechanism. The intent is to allow the host OS to easily enable and
4473disable tracing for problematic control methods. This interface can be
4474easily exposed to a user or debugger interface if desired. See the file
4475psxface.c for details.
4476
4477AcpiUtCallocate will now return a valid pointer if a length of zero is
4478specified - a length of one is used and a warning is issued. This matches
4479the behavior of AcpiUtAllocate.
4480
4481Code and Data Size: The current and previous library sizes for the core
4482subsystem are shown below. These are the code and data sizes for the
4483acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4484values do not include any ACPI driver or OSPM code. The debug version of the
4485code includes the debug output trace mechanism and has a much larger code
4486and data size. Note that these values will vary depending on the efficiency
4487of the compiler and the compiler options used during generation.
4488
4489  Previous Release:
4490    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
4491    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
4492  Current Release:
4493    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
4494    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
4495
4496
44972) iASL Compiler/Disassembler:
4498
4499A remark is issued if the effective compile-time length of a package or
4500buffer is zero. Previously, this was a warning.
4501
4502----------------------------------------
450316 September 2005. Summary of changes for version 20050916:
4504
45051) ACPI CA Core Subsystem:
4506
4507Fixed a problem within the Resource Manager where support for the Generic
4508Register descriptor was not fully implemented. This descriptor is now fully
4509recognized, parsed, disassembled, and displayed.
4510
4511Completely restructured the Resource Manager code to utilize table-driven
4512dispatch and lookup, eliminating many of the large switch() statements. This
4513reduces overall subsystem code size and code complexity. Affects the
4514resource parsing and construction, disassembly, and debug dump output.
4515
4516Cleaned up and restructured the debug dump output for all resource
4517descriptors. Improved readability of the output and reduced code size.
4518
4519Fixed a problem where changes to internal data structures caused the
4520optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
4521
4522Code and Data Size: The current and previous library sizes for the core
4523subsystem are shown below. These are the code and data sizes for the
4524acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4525values do not include any ACPI driver or OSPM code. The debug version of the
4526code includes the debug output trace mechanism and has a much larger code
4527and data size. Note that these values will vary depending on the efficiency
4528of the compiler and the compiler options used during generation.
4529
4530  Previous Release:
4531    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
4532    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
4533  Current Release:
4534    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
4535    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
4536
4537
45382) iASL Compiler/Disassembler:
4539
4540Updated the disassembler to automatically insert an EndDependentFn() macro
4541into the ASL stream if this macro is missing in the original AML code,
4542simplifying compilation of the resulting ASL module.
4543
4544Fixed a problem in the disassembler where a disassembled ResourceSource
4545string (within a large resource descriptor) was not surrounded by quotes and
4546not followed by a comma, causing errors when the resulting ASL module was
4547compiled. Also, escape sequences within a ResourceSource string are now
4548handled correctly (especially "\\")
4549
4550----------------------------------------
455102 September 2005. Summary of changes for version 20050902:
4552
45531) ACPI CA Core Subsystem:
4554
4555Fixed a problem with the internal Owner ID allocation and deallocation
4556mechanisms for control method execution and recursive method invocation.
4557This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
4558messages seen on some systems. Recursive method invocation depth is
4559currently limited to 255. (Alexey Starikovskiy)
4560
4561Completely eliminated all vestiges of support for the "module-level
4562executable code" until this support is fully implemented and debugged. This
4563should eliminate the NO_RETURN_VALUE exceptions seen during table load on
4564some systems that invoke this support.
4565
4566Fixed a problem within the resource manager code where the transaction flags
4567for a 64-bit address descriptor were handled incorrectly in the type-
4568specific flag byte.
4569
4570Consolidated duplicate code within the address descriptor resource manager
4571code, reducing overall subsystem code size.
4572
4573Fixed a fault when using the AML debugger "disassemble" command to
4574disassemble individual control methods.
4575
4576Removed references to the "release_current" directory within the Unix
4577release package.
4578
4579Code and Data Size: The current and previous core subsystem library sizes
4580are shown below. These are the code and data sizes for the acpica.lib
4581produced by the Microsoft Visual C++ 6.0 compiler. These values do not
4582include any ACPI driver or OSPM code. The debug version of the code includes
4583the debug output trace mechanism and has a much larger code and data size.
4584Note that these values will vary depending on the efficiency of the compiler
4585and the compiler options used during generation.
4586
4587  Previous Release:
4588    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4589    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
4590  Current Release:
4591    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
4592    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
4593
4594
45952) iASL Compiler/Disassembler:
4596
4597Implemented an error check for illegal duplicate values in the interrupt and
4598dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
4599Interrupt().
4600
4601Implemented error checking for the Irq() and IrqNoFlags() macros to detect
4602too many values in the interrupt list (16 max) and invalid values in the
4603list (range 0 - 15)
4604
4605The maximum length string literal within an ASL file is now restricted to
4606200 characters as per the ACPI specification.
4607
4608Fixed a fault when using the -ln option (generate namespace listing).
4609
4610Implemented an error check to determine if a DescriptorName within a
4611resource descriptor has already been used within the current scope.
4612
4613----------------------------------------
461415 August 2005.  Summary of changes for version 20050815:
4615
46161) ACPI CA Core Subsystem:
4617
4618Implemented a full bytewise compare to determine if a table load request is
4619attempting to load a duplicate table. The compare is performed if the table
4620signatures and table lengths match. This will allow different tables with
4621the same OEM Table ID and revision to be loaded - probably against the ACPI
4622specification, but discovered in the field nonetheless.
4623
4624Added the changes.txt logfile to each of the zipped release packages.
4625
4626Code and Data Size: Current and previous core subsystem library sizes are
4627shown below. These are the code and data sizes for the acpica.lib produced
4628by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4629any ACPI driver or OSPM code. The debug version of the code includes the
4630debug output trace mechanism and has a much larger code and data size. Note
4631that these values will vary depending on the efficiency of the compiler and
4632the compiler options used during generation.
4633
4634  Previous Release:
4635    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4636    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
4637  Current Release:
4638    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4639    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
4640
4641
46422) iASL Compiler/Disassembler:
4643
4644Fixed a problem where incorrect AML code could be generated for Package
4645objects if optimization is disabled (via the -oa switch).
4646
4647Fixed a problem with where incorrect AML code is generated for variable-
4648length packages when the package length is not specified and the number of
4649initializer values is greater than 255.
4650
4651
4652----------------------------------------
465329 July 2005.  Summary of changes for version 20050729:
4654
46551) ACPI CA Core Subsystem:
4656
4657Implemented support to ignore an attempt to install/load a particular ACPI
4658table more than once. Apparently there exists BIOS code that repeatedly
4659attempts to load the same SSDT upon certain events. With assistance from
4660Venkatesh Pallipadi.
4661
4662Restructured the main interface to the AML parser in order to correctly
4663handle all exceptional conditions. This will prevent leakage of the OwnerId
4664resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some
4665machines. With assistance from Alexey Starikovskiy.
4666
4667Support for "module level code" has been disabled in this version due to a
4668number of issues that have appeared on various machines. The support can be
4669enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
4670compilation. When the issues are fully resolved, the code will be enabled by
4671default again.
4672
4673Modified the internal functions for debug print support to define the
4674FunctionName parameter as a (const char *) for compatibility with compiler
4675built-in macros such as __FUNCTION__, etc.
4676
4677Linted the entire ACPICA source tree for both 32-bit and 64-bit.
4678
4679Implemented support to display an object count summary for the AML Debugger
4680commands Object and Methods.
4681
4682Code and Data Size: Current and previous core subsystem library sizes are
4683shown below. These are the code and data sizes for the acpica.lib produced
4684by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4685any ACPI driver or OSPM code. The debug version of the code includes the
4686debug output trace mechanism and has a much larger code and data size. Note
4687that these values will vary depending on the efficiency of the compiler and
4688the compiler options used during generation.
4689
4690  Previous Release:
4691    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
4692    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
4693  Current Release:
4694    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4695    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
4696
4697
46982) iASL Compiler/Disassembler:
4699
4700Fixed a regression that appeared in the 20050708 version of the compiler
4701where an error message was inadvertently emitted for invocations of the _OSI
4702reserved control method.
4703
4704----------------------------------------
470508 July 2005.  Summary of changes for version 20050708:
4706
47071) ACPI CA Core Subsystem:
4708
4709The use of the CPU stack in the debug version of the subsystem has been
4710considerably reduced. Previously, a debug structure was declared in every
4711function that used the debug macros. This structure has been removed in
4712favor of declaring the individual elements as parameters to the debug
4713functions. This reduces the cumulative stack use during nested execution of
4714ACPI function calls at the cost of a small increase in the code size of the
4715debug version of the subsystem. With assistance from Alexey Starikovskiy and
4716Len Brown.
4717
4718Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
4719headers to define a macro that will return the current function name at
4720runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by
4721the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
4722compiler-dependent header, the function name is saved on the CPU stack (one
4723pointer per function.) This mechanism is used because apparently there
4724exists no standard ANSI-C defined macro that that returns the function name.
4725
4726Redesigned and reimplemented the "Owner ID" mechanism used to track
4727namespace objects created/deleted by ACPI tables and control method
4728execution. A bitmap is now used to allocate and free the IDs, thus solving
4729the wraparound problem present in the previous implementation. The size of
4730the namespace node descriptor was reduced by 2 bytes as a result (Alexey
4731Starikovskiy).
4732
4733Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield
4734flag definitions within the headers for the predefined ACPI tables. These
4735have been replaced by UINT8_BIT in order to increase the code portability of
4736the subsystem. If the use of UINT8 remains a problem, we may be forced to
4737eliminate bitfields entirely because of a lack of portability.
4738
4739Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This
4740is a frequently used function and this improvement increases the performance
4741of the entire subsystem (Alexey Starikovskiy).
4742
4743Fixed several possible memory leaks and the inverse - premature object
4744deletion (Alexey Starikovskiy).
4745
4746Code and Data Size: Current and previous core subsystem library sizes are
4747shown below. These are the code and data sizes for the acpica.lib produced
4748by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4749any ACPI driver or OSPM code. The debug version of the code includes the
4750debug output trace mechanism and has a much larger code and data size. Note
4751that these values will vary depending on the efficiency of the compiler and
4752the compiler options used during generation.
4753
4754  Previous Release:
4755    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
4756    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
4757  Current Release:
4758    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
4759    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
4760
4761----------------------------------------
476224 June 2005.  Summary of changes for version 20050624:
4763
47641) ACPI CA Core Subsystem:
4765
4766Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
4767the host-defined cache object. This allows the OSL implementation to define
4768and type this object in any manner desired, simplifying the OSL
4769implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
4770Linux, and should be defined in the OS-specific header file for other
4771operating systems as required.
4772
4773Changed the interface to AcpiOsAcquireObject to directly return the
4774requested object as the function return (instead of ACPI_STATUS.) This
4775change was made for performance reasons, since this is the purpose of the
4776interface in the first place. AcpiOsAcquireObject is now similar to the
4777AcpiOsAllocate interface.
4778
4779Implemented a new AML debugger command named Businfo. This command displays
4780information about all devices that have an associate _PRT object. The _ADR,
4781_HID, _UID, and _CID are displayed for these devices.
4782
4783Modified the initialization sequence in AcpiInitializeSubsystem to call the
4784OSL interface AcpiOslInitialize first, before any local initialization. This
4785change was required because the global initialization now calls OSL
4786interfaces.
4787
4788Enhanced the Dump command to display the entire contents of Package objects
4789(including all sub-objects and their values.)
4790
4791Restructured the code base to split some files because of size and/or
4792because the code logically belonged in a separate file. New files are listed
4793below. All makefiles and project files included in the ACPI CA release have
4794been updated.
4795    utilities/utcache.c           /* Local cache interfaces */
4796    utilities/utmutex.c           /* Local mutex support */
4797    utilities/utstate.c           /* State object support */
4798    interpreter/parser/psloop.c   /* Main AML parse loop */
4799
4800Code and Data Size: Current and previous core subsystem library sizes are
4801shown below. These are the code and data sizes for the acpica.lib produced
4802by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4803any ACPI driver or OSPM code. The debug version of the code includes the
4804debug output trace mechanism and has a much larger code and data size. Note
4805that these values will vary depending on the efficiency of the compiler and
4806the compiler options used during generation.
4807
4808  Previous Release:
4809    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
4810    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
4811  Current Release:
4812    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
4813    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
4814
4815
48162) iASL Compiler/Disassembler:
4817
4818Fixed a regression introduced in version 20050513 where the use of a Package
4819object within a Case() statement caused a compile time exception. The
4820original behavior has been restored (a Match() operator is emitted.)
4821
4822----------------------------------------
482317 June 2005.  Summary of changes for version 20050617:
4824
48251) ACPI CA Core Subsystem:
4826
4827Moved the object cache operations into the OS interface layer (OSL) to allow
4828the host OS to handle these operations if desired (for example, the Linux
4829OSL will invoke the slab allocator). This support is optional; the compile
4830time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache
4831code in the ACPI CA core. The new OSL interfaces are shown below. See
4832utalloc.c for an example implementation, and acpiosxf.h for the exact
4833interface definitions. With assistance from Alexey Starikovskiy.
4834    AcpiOsCreateCache
4835    AcpiOsDeleteCache
4836    AcpiOsPurgeCache
4837    AcpiOsAcquireObject
4838    AcpiOsReleaseObject
4839
4840Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return
4841and restore a flags parameter. This fits better with many OS lock models.
4842Note: the current execution state (interrupt handler or not) is no longer
4843passed to these interfaces. If necessary, the OSL must determine this state
4844by itself, a simple and fast operation. With assistance from Alexey
4845Starikovskiy.
4846
4847Fixed a problem in the ACPI table handling where a valid XSDT was assumed
4848present if the revision of the RSDP was 2 or greater. According to the ACPI
4849specification, the XSDT is optional in all cases, and the table manager
4850therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
4851Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain
4852only the RSDT.
4853
4854Fixed an interpreter problem with the Mid() operator in the case of an input
4855string where the resulting output string is of zero length. It now correctly
4856returns a valid, null terminated string object instead of a string object
4857with a null pointer.
4858
4859Fixed a problem with the control method argument handling to allow a store
4860to an Arg object that already contains an object of type Device. The Device
4861object is now correctly overwritten. Previously, an error was returned.
4862
4863
4864Enhanced the debugger Find command to emit object values in addition to the
4865found object pathnames. The output format is the same as the dump namespace
4866command.
4867
4868Enhanced the debugger Set command. It now has the ability to set the value
4869of any Named integer object in the namespace (Previously, only method locals
4870and args could be set.)
4871
4872Code and Data Size: Current and previous core subsystem library sizes are
4873shown below. These are the code and data sizes for the acpica.lib produced
4874by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4875any ACPI driver or OSPM code. The debug version of the code includes the
4876debug output trace mechanism and has a much larger code and data size. Note
4877that these values will vary depending on the efficiency of the compiler and
4878the compiler options used during generation.
4879
4880  Previous Release:
4881    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
4882    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
4883  Current Release:
4884    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
4885    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
4886
4887
48882) iASL Compiler/Disassembler:
4889
4890Fixed a regression in the disassembler where if/else/while constructs were
4891output incorrectly. This problem was introduced in the previous release
4892(20050526). This problem also affected the single-step disassembly in the
4893debugger.
4894
4895Fixed a problem where compiling the reserved _OSI method would randomly (but
4896rarely) produce compile errors.
4897
4898Enhanced the disassembler to emit compilable code in the face of incorrect
4899AML resource descriptors. If the optional ResourceSourceIndex is present,
4900but the ResourceSource is not, do not emit the ResourceSourceIndex in the
4901disassembly. Otherwise, the resulting code cannot be compiled without
4902errors.
4903
4904----------------------------------------
490526 May 2005.  Summary of changes for version 20050526:
4906
49071) ACPI CA Core Subsystem:
4908
4909Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
4910the module level (not within a control method.) These opcodes are executed
4911exactly once at the time the table is loaded. This type of code was legal up
4912until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in
4913order to provide backwards compatibility with earlier BIOS implementations.
4914This eliminates the "Encountered executable code at module level" warning
4915that was previously generated upon detection of such code.
4916
4917Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
4918inadvertently be generated during the lookup of namespace objects in the
4919second pass parse of ACPI tables and control methods. It appears that this
4920problem could occur during the resolution of forward references to namespace
4921objects.
4922
4923Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
4924corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
4925allows the deadlock detection debug code to be compiled out in the normal
4926case, improving mutex performance (and overall subsystem performance)
4927considerably.
4928
4929Implemented a handful of miscellaneous fixes for possible memory leaks on
4930error conditions and error handling control paths. These fixes were
4931suggested by FreeBSD and the Coverity Prevent source code analysis tool.
4932
4933Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c)
4934to prevent a fault in this error case.
4935
4936Code and Data Size: Current and previous core subsystem library sizes are
4937shown below. These are the code and data sizes for the acpica.lib produced
4938by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4939any ACPI driver or OSPM code. The debug version of the code includes the
4940debug output trace mechanism and has a much larger code and data size. Note
4941that these values will vary depending on the efficiency of the compiler and
4942the compiler options used during generation.
4943
4944  Previous Release:
4945    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
4946    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
4947  Current Release:
4948    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
4949    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
4950
4951
49522) iASL Compiler/Disassembler:
4953
4954Implemented support to allow Type 1 and Type 2 ASL operators to appear at
4955the module level (not within a control method.) These operators will be
4956executed once at the time the table is loaded. This type of code was legal
4957up until the release of ACPI 2.0B (2002) and is now supported by the iASL
4958compiler in order to provide backwards compatibility with earlier BIOS ASL
4959code.
4960
4961The ACPI integer width (specified via the table revision ID or the -r
4962override, 32 or 64 bits) is now used internally during compile-time constant
4963folding to ensure that constants are truncated to 32 bits if necessary.
4964Previously, the revision ID value was only emitted in the AML table header.
4965
4966An error message is now generated for the Mutex and Method operators if the
4967SyncLevel parameter is outside the legal range of 0 through 15.
4968
4969Fixed a problem with the Method operator ParameterTypes list handling (ACPI
49703.0). Previously, more than 2 types or 2 arguments generated a syntax error.
4971The actual underlying implementation of method argument typechecking is
4972still under development, however.
4973
4974----------------------------------------
497513 May 2005.  Summary of changes for version 20050513:
4976
49771) ACPI CA Core Subsystem:
4978
4979Implemented support for PCI Express root bridges -- added support for device
4980PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
4981
4982The interpreter now automatically truncates incoming 64-bit constants to 32
4983bits if currently executing out of a 32-bit ACPI table (Revision < 2). This
4984also affects the iASL compiler constant folding. (Note: as per below, the
4985iASL compiler no longer allows 64-bit constants within 32-bit tables.)
4986
4987Fixed a problem where string and buffer objects with "static" pointers
4988(pointers to initialization data within an ACPI table) were not handled
4989consistently. The internal object copy operation now always copies the data
4990to a newly allocated buffer, regardless of whether the source object is
4991static or not.
4992
4993Fixed a problem with the FromBCD operator where an implicit result
4994conversion was improperly performed while storing the result to the target
4995operand. Since this is an "explicit conversion" operator, the implicit
4996conversion should never be performed on the output.
4997
4998Fixed a problem with the CopyObject operator where a copy to an existing
4999named object did not always completely overwrite the existing object stored
5000at name. Specifically, a buffer-to-buffer copy did not delete the existing
5001buffer.
5002
5003Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and
5004structs for consistency.
5005
5006Code and Data Size: Current and previous core subsystem library sizes are
5007shown below. These are the code and data sizes for the acpica.lib produced
5008by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5009any ACPI driver or OSPM code. The debug version of the code includes the
5010debug output trace mechanism and has a much larger code and data size. Note
5011that these values will vary depending on the efficiency of the compiler and
5012the compiler options used during generation.
5013
5014  Previous Release:
5015    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5016    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5017  Current Release: (Same sizes)
5018    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5019    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5020
5021
50222) iASL Compiler/Disassembler:
5023
5024The compiler now emits a warning if an attempt is made to generate a 64-bit
5025integer constant from within a 32-bit ACPI table (Revision < 2). The integer
5026is truncated to 32 bits.
5027
5028Fixed a problem with large package objects: if the static length of the
5029package is greater than 255, the "variable length package" opcode is
5030emitted. Previously, this caused an error. This requires an update to the
5031ACPI spec, since it currently (incorrectly) states that packages larger than
5032255 elements are not allowed.
5033
5034The disassembler now correctly handles variable length packages and packages
5035larger than 255 elements.
5036
5037----------------------------------------
503808 April 2005.  Summary of changes for version 20050408:
5039
50401) ACPI CA Core Subsystem:
5041
5042Fixed three cases in the interpreter where an "index" argument to an ASL
5043function was still (internally) 32 bits instead of the required 64 bits.
5044This was the Index argument to the Index, Mid, and Match operators.
5045
5046The "strupr" function is now permanently local (AcpiUtStrupr), since this is
5047not a POSIX-defined function and not present in most kernel-level C
5048libraries. All references to the C library strupr function have been removed
5049from the headers.
5050
5051Completed the deployment of static functions/prototypes. All prototypes with
5052the static attribute have been moved from the headers to the owning C file.
5053
5054Implemented an extract option (-e) for the AcpiBin utility (AML binary
5055utility). This option allows the utility to extract individual ACPI tables
5056from the output of AcpiDmp. It provides the same functionality of the
5057acpixtract.pl perl script without the worry of setting the correct perl
5058options. AcpiBin runs on Windows and has not yet been generated/validated in
5059the Linux/Unix environment (but should be soon).
5060
5061Updated and fixed the table dump option for AcpiBin (-d). This option
5062converts a single ACPI table to a hex/ascii file, similar to the output of
5063AcpiDmp.
5064
5065Code and Data Size: Current and previous core subsystem library sizes are
5066shown below. These are the code and data sizes for the acpica.lib produced
5067by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5068any ACPI driver or OSPM code. The debug version of the code includes the
5069debug output trace mechanism and has a much larger code and data size. Note
5070that these values will vary depending on the efficiency of the compiler and
5071the compiler options used during generation.
5072
5073  Previous Release:
5074    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
5075    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
5076  Current Release:
5077    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5078    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5079
5080
50812) iASL Compiler/Disassembler:
5082
5083Disassembler fix: Added a check to ensure that the table length found in the
5084ACPI table header within the input file is not longer than the actual input
5085file size. This indicates some kind of file or table corruption.
5086
5087----------------------------------------
508829 March 2005.  Summary of changes for version 20050329:
5089
50901) ACPI CA Core Subsystem:
5091
5092An error is now generated if an attempt is made to create a Buffer Field of
5093length zero (A CreateField with a length operand of zero.)
5094
5095The interpreter now issues a warning whenever executable code at the module
5096level is detected during ACPI table load. This will give some idea of the
5097prevalence of this type of code.
5098
5099Implemented support for references to named objects (other than control
5100methods) within package objects.
5101
5102Enhanced package object output for the debug object. Package objects are now
5103completely dumped, showing all elements.
5104
5105Enhanced miscellaneous object output for the debug object. Any object can
5106now be written to the debug object (for example, a device object can be
5107written, and the type of the object will be displayed.)
5108
5109The "static" qualifier has been added to all local functions across both the
5110core subsystem and the iASL compiler.
5111
5112The number of "long" lines (> 80 chars) within the source has been
5113significantly reduced, by about 1/3.
5114
5115Cleaned up all header files to ensure that all CA/iASL functions are
5116prototyped (even static functions) and the formatting is consistent.
5117
5118Two new header files have been added, acopcode.h and acnames.h.
5119
5120Removed several obsolete functions that were no longer used.
5121
5122Code and Data Size: Current and previous core subsystem library sizes are
5123shown below. These are the code and data sizes for the acpica.lib produced
5124by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5125any ACPI driver or OSPM code. The debug version of the code includes the
5126debug output trace mechanism and has a much larger code and data size. Note
5127that these values will vary depending on the efficiency of the compiler and
5128the compiler options used during generation.
5129
5130  Previous Release:
5131    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5132    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
5133  Current Release:
5134    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
5135    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
5136
5137
5138
51392) iASL Compiler/Disassembler:
5140
5141Fixed a problem with the resource descriptor generation/support. For the
5142ResourceSourceIndex and the ResourceSource fields, both must be present, or
5143both must be not present - can't have one without the other.
5144
5145The compiler now returns non-zero from the main procedure if any errors have
5146occurred during the compilation.
5147
5148
5149----------------------------------------
515009 March 2005.  Summary of changes for version 20050309:
5151
51521) ACPI CA Core Subsystem:
5153
5154The string-to-buffer implicit conversion code has been modified again after
5155a change to the ACPI specification.  In order to match the behavior of the
5156other major ACPI implementation, the target buffer is no longer truncated if
5157the source string is smaller than an existing target buffer. This change
5158requires an update to the ACPI spec, and should eliminate the recent
5159AE_AML_BUFFER_LIMIT issues.
5160
5161The "implicit return" support was rewritten to a new algorithm that solves
5162the general case. Rather than attempt to determine when a method is about to
5163exit, the result of every ASL operator is saved momentarily until the very
5164next ASL operator is executed. Therefore, no matter how the method exits,
5165there will always be a saved implicit return value. This feature is only
5166enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate
5167AE_AML_NO_RETURN_VALUE errors when enabled.
5168
5169Implemented implicit conversion support for the predicate (operand) of the
5170If, Else, and While operators. String and Buffer arguments are automatically
5171converted to Integers.
5172
5173Changed the string-to-integer conversion behavior to match the new ACPI
5174errata: "If no integer object exists, a new integer is created. The ASCII
5175string is interpreted as a hexadecimal constant. Each string character is
5176interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
5177with the first character as the most significant digit, and ending with the
5178first non-hexadecimal character or end-of-string." This means that the first
5179non-hex character terminates the conversion and this is the code that was
5180changed.
5181
5182Fixed a problem where the ObjectType operator would fail (fault) when used
5183on an Index of a Package which pointed to a null package element. The
5184operator now properly returns zero (Uninitialized) in this case.
5185
5186Fixed a problem where the While operator used excessive memory by not
5187properly popping the result stack during execution. There was no memory leak
5188after execution, however. (Code provided by Valery Podrezov.)
5189
5190Fixed a problem where references to control methods within Package objects
5191caused the method to be invoked, instead of producing a reference object
5192pointing to the method.
5193
5194Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to
5195improve performance and reduce code size. (Code provided by Alexey
5196Starikovskiy.)
5197
5198Code and Data Size: Current and previous core subsystem library sizes are
5199shown below. These are the code and data sizes for the acpica.lib produced
5200by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5201any ACPI driver or OSPM code. The debug version of the code includes the
5202debug output trace mechanism and has a much larger code and data size. Note
5203that these values will vary depending on the efficiency of the compiler and
5204the compiler options used during generation.
5205
5206  Previous Release:
5207    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5208    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
5209  Current Release:
5210    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5211    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
5212
5213
52142) iASL Compiler/Disassembler:
5215
5216Fixed a problem with the Return operator with no arguments. Since the AML
5217grammar for the byte encoding requires an operand for the Return opcode, the
5218compiler now emits a Return(Zero) for this case.  An ACPI specification
5219update has been written for this case.
5220
5221For tables other than the DSDT, namepath optimization is automatically
5222disabled. This is because SSDTs can be loaded anywhere in the namespace, the
5223compiler has no knowledge of where, and thus cannot optimize namepaths.
5224
5225Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
5226inadvertently omitted from the ACPI specification, and will require an
5227update to the spec.
5228
5229The source file scan for ASCII characters is now optional (-a). This change
5230was made because some vendors place non-ascii characters within comments.
5231However, the scan is simply a brute-force byte compare to ensure all
5232characters in the file are in the range 0x00 to 0x7F.
5233
5234Fixed a problem with the CondRefOf operator where the compiler was
5235inappropriately checking for the existence of the target. Since the point of
5236the operator is to check for the existence of the target at run-time, the
5237compiler no longer checks for the target existence.
5238
5239Fixed a problem where errors generated from the internal AML interpreter
5240during constant folding were not handled properly, causing a fault.
5241
5242Fixed a problem with overly aggressive range checking for the Stall
5243operator. The valid range (max 255) is now only checked if the operand is of
5244type Integer. All other operand types cannot be statically checked.
5245
5246Fixed a problem where control method references within the RefOf, DeRefOf,
5247and ObjectType operators were not treated properly. They are now treated as
5248actual references, not method invocations.
5249
5250Fixed and enhanced the "list namespace" option (-ln). This option was broken
5251a number of releases ago.
5252
5253Improved error handling for the Field, IndexField, and BankField operators.
5254The compiler now cleanly reports and recovers from errors in the field
5255component (FieldUnit) list.
5256
5257Fixed a disassembler problem where the optional ResourceDescriptor fields
5258TRS and TTP were not always handled correctly.
5259
5260Disassembler - Comments in output now use "//" instead of "/*"
5261
5262----------------------------------------
526328 February 2005.  Summary of changes for version 20050228:
5264
52651) ACPI CA Core Subsystem:
5266
5267Fixed a problem where the result of an Index() operator (an object
5268reference) must increment the reference count on the target object for the
5269life of the object reference.
5270
5271Implemented AML Interpreter and Debugger support for the new ACPI 3.0
5272Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace
5273resource descriptors.
5274
5275Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
5276Space Descriptor" string, indicating interpreter support for the descriptors
5277above.
5278
5279Implemented header support for the new ACPI 3.0 FADT flag bits.
5280
5281Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1
5282status/enable registers.
5283
5284Updated header support for the MADT processor local Apic struct and MADT
5285platform interrupt source struct for new ACPI 3.0 fields.
5286
5287Implemented header support for the SRAT and SLIT ACPI tables.
5288
5289Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag
5290at runtime.
5291
5292Code and Data Size: Current and previous core subsystem library sizes are
5293shown below. These are the code and data sizes for the acpica.lib produced
5294by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5295any ACPI driver or OSPM code. The debug version of the code includes the
5296debug output trace mechanism and has a much larger code and data size. Note
5297that these values will vary depending on the efficiency of the compiler and
5298the compiler options used during generation.
5299
5300  Previous Release:
5301    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
5302    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
5303  Current Release:
5304    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5305    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
5306
5307
53082) iASL Compiler/Disassembler:
5309
5310Fixed a problem with the internal 64-bit String-to-integer conversion with
5311strings less than two characters long.
5312
5313Fixed a problem with constant folding where the result of the Index()
5314operator can not be considered a constant. This means that Index() cannot be
5315a type3 opcode and this will require an update to the ACPI specification.
5316
5317Disassembler: Implemented support for the TTP, MTP, and TRS resource
5318descriptor fields. These fields were inadvertently ignored and not output in
5319the disassembly of the resource descriptor.
5320
5321
5322 ----------------------------------------
532311 February 2005.  Summary of changes for version 20050211:
5324
53251) ACPI CA Core Subsystem:
5326
5327Implemented ACPI 3.0 support for implicit conversion within the Match()
5328operator. MatchObjects can now be of type integer, buffer, or string instead
5329of just type integer.  Package elements are implicitly converted to the type
5330of the MatchObject. This change aligns the behavior of Match() with the
5331behavior of the other logical operators (LLess(), etc.) It also requires an
5332errata change to the ACPI specification as this support was intended for
5333ACPI 3.0, but was inadvertently omitted.
5334
5335Fixed a problem with the internal implicit "to buffer" conversion. Strings
5336that are converted to buffers will cause buffer truncation if the string is
5337smaller than the target buffer. Integers that are converted to buffers will
5338not cause buffer truncation, only zero extension (both as per the ACPI
5339spec.) The problem was introduced when code was added to truncate the
5340buffer, but this should not be performed in all cases, only the string case.
5341
5342Fixed a problem with the Buffer and Package operators where the interpreter
5343would get confused if two such operators were used as operands to an ASL
5344operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
5345stack was not being popped after the execution of these operators, resulting
5346in an AE_NO_RETURN_VALUE exception.
5347
5348Fixed a problem with constructs of the form Store(Index(...),...). The
5349reference object returned from Index was inadvertently resolved to an actual
5350value. This problem was introduced in version 20050114 when the behavior of
5351Store() was modified to restrict the object types that can be used as the
5352source operand (to match the ACPI specification.)
5353
5354Reduced excessive stack use within the AcpiGetObjectInfo procedure.
5355
5356Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
5357
5358Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
5359
5360Code and Data Size: Current and previous core subsystem library sizes are
5361shown below. These are the code and data sizes for the acpica.lib produced
5362by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5363any ACPI driver or OSPM code. The debug version of the code includes the
5364debug output trace mechanism and has a much larger code and data size. Note
5365that these values will vary depending on the efficiency of the compiler and
5366the compiler options used during generation.
5367
5368  Previous Release:
5369    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
5370    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
5371  Current Release:
5372    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
5373    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
5374
5375
53762) iASL Compiler/Disassembler:
5377
5378Fixed a code generation problem in the constant folding optimization code
5379where incorrect code was generated if a constant was reduced to a buffer
5380object (i.e., a reduced type 5 opcode.)
5381
5382Fixed a typechecking problem for the ToBuffer operator. Caused by an
5383incorrect return type in the internal opcode information table.
5384
5385----------------------------------------
538625 January 2005.  Summary of changes for version 20050125:
5387
53881) ACPI CA Core Subsystem:
5389
5390Fixed a recently introduced problem with the Global Lock where the
5391underlying semaphore was not created.  This problem was introduced in
5392version 20050114, and caused an AE_AML_NO_OPERAND exception during an
5393Acquire() operation on _GL.
5394
5395The local object cache is now optional, and is disabled by default. Both
5396AcpiExec and the iASL compiler enable the cache because they run in user
5397mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE
5398to enable the local cache.
5399
5400Fixed an issue in the internal function AcpiUtEvaluateObject concerning the
5401optional "implicit return" support where an error was returned if no return
5402object was expected, but one was implicitly returned. AE_OK is now returned
5403in this case and the implicitly returned object is deleted.
5404AcpiUtEvaluateObject is only occasionally used, and only to execute reserved
5405methods such as _STA and _INI where the return type is known up front.
5406
5407Fixed a few issues with the internal convert-to-integer code. It now returns
5408an error if an attempt is made to convert a null string, a string of only
5409blanks/tabs, or a zero-length buffer. This affects both implicit conversion
5410and explicit conversion via the ToInteger() operator.
5411
5412The internal debug code in AcpiUtAcquireMutex has been commented out. It is
5413not needed for normal operation and should increase the performance of the
5414entire subsystem. The code remains in case it is needed for debug purposes
5415again.
5416
5417The AcpiExec source and makefile are included in the Unix/Linux package for
5418the first time.
5419
5420Code and Data Size: Current and previous core subsystem library sizes are
5421shown below. These are the code and data sizes for the acpica.lib produced
5422by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5423any ACPI driver or OSPM code. The debug version of the code includes the
5424debug output trace mechanism and has a much larger code and data size. Note
5425that these values will vary depending on the efficiency of the compiler and
5426the compiler options used during generation.
5427
5428  Previous Release:
5429    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
5430    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
5431  Current Release:
5432    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
5433    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
5434
54352) iASL Compiler/Disassembler:
5436
5437Switch/Case support: A warning is now issued if the type of the Switch value
5438cannot be determined at compile time. For example, Switch(Arg0) will
5439generate the warning, and the type is assumed to be an integer. As per the
5440ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the
5441warning.
5442
5443Switch/Case support: Implemented support for buffer and string objects as
5444the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
5445buffers and strings.
5446
5447Switch/Case support: The emitted code for the LEqual() comparisons now uses
5448the switch value as the first operand, not the second. The case value is now
5449the second operand, and this allows the case value to be implicitly
5450converted to the type of the switch value, not the other way around.
5451
5452Switch/Case support: Temporary variables are now emitted immediately within
5453the control method, not at the global level. This means that there are now
545436 temps available per-method, not 36 temps per-module as was the case with
5455the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
5456
5457----------------------------------------
545814 January 2005.  Summary of changes for version 20050114:
5459
5460Added 2005 copyright to all module headers.  This affects every module in
5461the core subsystem, iASL compiler, and the utilities.
5462
54631) ACPI CA Core Subsystem:
5464
5465Fixed an issue with the String-to-Buffer conversion code where the string
5466null terminator was not included in the buffer after conversion, but there
5467is existing ASL that assumes the string null terminator is included. This is
5468the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
5469introduced in the previous version when the code was updated to correctly
5470set the converted buffer size as per the ACPI specification. The ACPI spec
5471is ambiguous and will be updated to specify that the null terminator must be
5472included in the converted buffer. This also affects the ToBuffer() ASL
5473operator.
5474
5475Fixed a problem with the Mid() ASL/AML operator where it did not work
5476correctly on Buffer objects. Newly created sub-buffers were not being marked
5477as initialized.
5478
5479
5480Fixed a problem in AcpiTbFindTable where incorrect string compares were
5481performed on the OemId and OemTableId table header fields.  These fields are
5482not null terminated, so strncmp is now used instead of strcmp.
5483
5484Implemented a restriction on the Store() ASL/AML operator to align the
5485behavior with the ACPI specification.  Previously, any object could be used
5486as the source operand.  Now, the only objects that may be used are Integers,
5487Buffers, Strings, Packages, Object References, and DDB Handles.  If
5488necessary, the original behavior can be restored by enabling the
5489EnableInterpreterSlack flag.
5490
5491Enhanced the optional "implicit return" support to allow an implicit return
5492value from methods that are invoked externally via the AcpiEvaluateObject
5493interface.  This enables implicit returns from the _STA and _INI methods,
5494for example.
5495
5496Changed the Revision() ASL/AML operator to return the current version of the
5497AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned
5498the supported ACPI version (This is the function of the _REV method).
5499
5500Updated the _REV predefined method to return the currently supported version
5501of ACPI, now 3.
5502
5503Implemented batch mode option for the AcpiExec utility (-b).
5504
5505Code and Data Size: Current and previous core subsystem library sizes are
5506shown below. These are the code and data sizes for the acpica.lib produced
5507by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5508any ACPI driver or OSPM code. The debug version of the code includes the
5509debug output trace mechanism and has a much larger code and data size. Note
5510that these values will vary depending on the efficiency of the compiler and
5511the compiler options used during generation.
5512
5513  Previous Release:
5514    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5515    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
5516  Current Release:
5517    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
5518    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
5519
5520----------------------------------------
552110 December 2004.  Summary of changes for version 20041210:
5522
5523ACPI 3.0 support is nearing completion in both the iASL compiler and the
5524ACPI CA core subsystem.
5525
55261) ACPI CA Core Subsystem:
5527
5528Fixed a problem in the ToDecimalString operator where the resulting string
5529length was incorrectly calculated. The length is now calculated exactly,
5530eliminating incorrect AE_STRING_LIMIT exceptions.
5531
5532Fixed a problem in the ToHexString operator to allow a maximum 200 character
5533string to be produced.
5534
5535Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy
5536routine where the length of the resulting buffer was not truncated to the
5537new size (if the target buffer already existed).
5538
5539Code and Data Size: Current and previous core subsystem library sizes are
5540shown below. These are the code and data sizes for the acpica.lib produced
5541by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5542any ACPI driver or OSPM code. The debug version of the code includes the
5543debug output trace mechanism and has a much larger code and data size. Note
5544that these values will vary depending on the efficiency of the compiler and
5545the compiler options used during generation.
5546
5547  Previous Release:
5548    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5549    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
5550  Current Release:
5551    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5552    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
5553
5554
55552) iASL Compiler/Disassembler:
5556
5557Implemented the new ACPI 3.0 resource template macros - DWordSpace,
5558ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
5559Includes support in the disassembler.
5560
5561Implemented support for the new (ACPI 3.0) parameter to the Register macro,
5562AccessSize.
5563
5564Fixed a problem where the _HE resource name for the Interrupt macro was
5565referencing bit 0 instead of bit 1.
5566
5567Implemented check for maximum 255 interrupts in the Interrupt macro.
5568
5569Fixed a problem with the predefined resource descriptor names where
5570incorrect AML code was generated if the offset within the resource buffer
5571was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
5572but did not update the surrounding package lengths.
5573
5574Changes to the Dma macro:  All channels within the channel list must be in
5575the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
5576optional (default is BusMaster).
5577
5578Implemented check for maximum 7 data bytes for the VendorShort macro.
5579
5580The ReadWrite parameter is now optional for the Memory32 and similar macros.
5581
5582----------------------------------------
558303 December 2004.  Summary of changes for version 20041203:
5584
55851) ACPI CA Core Subsystem:
5586
5587The low-level field insertion/extraction code (exfldio) has been completely
5588rewritten to eliminate unnecessary complexity, bugs, and boundary
5589conditions.
5590
5591Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString
5592operators where the input operand could be inadvertently deleted if no
5593conversion was necessary (e.g., if the input to ToInteger was an Integer
5594object.)
5595
5596Fixed a problem with the ToDecimalString and ToHexString where an incorrect
5597exception code was returned if the resulting string would be > 200 chars.
5598AE_STRING_LIMIT is now returned.
5599
5600Fixed a problem with the Concatenate operator where AE_OK was always
5601returned, even if the operation failed.
5602
5603Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
5604semaphores to be allocated.
5605
5606Code and Data Size: Current and previous core subsystem library sizes are
5607shown below. These are the code and data sizes for the acpica.lib produced
5608by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5609any ACPI driver or OSPM code. The debug version of the code includes the
5610debug output trace mechanism and has a much larger code and data size. Note
5611that these values will vary depending on the efficiency of the compiler and
5612the compiler options used during generation.
5613
5614  Previous Release:
5615    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5616    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5617  Current Release:
5618    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5619    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
5620
5621
56222) iASL Compiler/Disassembler:
5623
5624Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
5625recently introduced in 20041119.
5626
5627Fixed a problem with the ToUUID macro where the upper nybble of each buffer
5628byte was inadvertently set to zero.
5629
5630----------------------------------------
563119 November 2004.  Summary of changes for version 20041119:
5632
56331) ACPI CA Core Subsystem:
5634
5635Fixed a problem in the internal ConvertToInteger routine where new integers
5636were not truncated to 32 bits for 32-bit ACPI tables. This routine converts
5637buffers and strings to integers.
5638
5639Implemented support to store a value to an Index() on a String object. This
5640is an ACPI 2.0 feature that had not yet been implemented.
5641
5642Implemented new behavior for storing objects to individual package elements
5643(via the Index() operator). The previous behavior was to invoke the implicit
5644conversion rules if an object was already present at the index.  The new
5645behavior is to simply delete any existing object and directly store the new
5646object. Although the ACPI specification seems unclear on this subject, other
5647ACPI implementations behave in this manner.  (This is the root of the
5648AE_BAD_HEX_CONSTANT issue.)
5649
5650Modified the RSDP memory scan mechanism to support the extended checksum for
5651ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
5652RSDP signature is found with a valid checksum.
5653
5654Code and Data Size: Current and previous core subsystem library sizes are
5655shown below. These are the code and data sizes for the acpica.lib produced
5656by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5657any ACPI driver or OSPM code. The debug version of the code includes the
5658debug output trace mechanism and has a much larger code and data size. Note
5659that these values will vary depending on the efficiency of the compiler and
5660the compiler options used during generation.
5661
5662  Previous Release:
5663    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5664    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5665  Current Release:
5666    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5667    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5668
5669
56702) iASL Compiler/Disassembler:
5671
5672Fixed a missing semicolon in the aslcompiler.y file.
5673
5674----------------------------------------
567505 November 2004.  Summary of changes for version 20041105:
5676
56771) ACPI CA Core Subsystem:
5678
5679Implemented support for FADT revision 2.  This was an interim table (between
5680ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
5681
5682Implemented optional support to allow uninitialized LocalX and ArgX
5683variables in a control method.  The variables are initialized to an Integer
5684object with a value of zero.  This support is enabled by setting the
5685AcpiGbl_EnableInterpreterSlack flag to TRUE.
5686
5687Implemented support for Integer objects for the SizeOf operator.  Either 4
5688or 8 is returned, depending on the current integer size (32-bit or 64-bit,
5689depending on the parent table revision).
5690
5691Fixed a problem in the implementation of the SizeOf and ObjectType operators
5692where the operand was resolved to a value too early, causing incorrect
5693return values for some objects.
5694
5695Fixed some possible memory leaks during exceptional conditions.
5696
5697Code and Data Size: Current and previous core subsystem library sizes are
5698shown below. These are the code and data sizes for the acpica.lib produced
5699by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5700any ACPI driver or OSPM code. The debug version of the code includes the
5701debug output trace mechanism and has a much larger code and data size. Note
5702that these values will vary depending on the efficiency of the compiler and
5703the compiler options used during generation.
5704
5705  Previous Release:
5706    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5707    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
5708  Current Release:
5709    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5710    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5711
5712
57132) iASL Compiler/Disassembler:
5714
5715Implemented support for all ACPI 3.0 reserved names and methods.
5716
5717Implemented all ACPI 3.0 grammar elements in the front-end, including
5718support for semicolons.
5719
5720Implemented the ACPI 3.0 Function() and ToUUID() macros
5721
5722Fixed a problem in the disassembler where a Scope() operator would not be
5723emitted properly if the target of the scope was in another table.
5724
5725----------------------------------------
572615 October 2004.  Summary of changes for version 20041015:
5727
5728Note:  ACPI CA is currently undergoing an in-depth and complete formal
5729evaluation to test/verify the following areas. Other suggestions are
5730welcome. This will result in an increase in the frequency of releases and
5731the number of bug fixes in the next few months.
5732  - Functional tests for all ASL/AML operators
5733  - All implicit/explicit type conversions
5734  - Bit fields and operation regions
5735  - 64-bit math support and 32-bit-only "truncated" math support
5736  - Exceptional conditions, both compiler and interpreter
5737  - Dynamic object deletion and memory leaks
5738  - ACPI 3.0 support when implemented
5739  - External interfaces to the ACPI subsystem
5740
5741
57421) ACPI CA Core Subsystem:
5743
5744Fixed two alignment issues on 64-bit platforms - within debug statements in
5745AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address
5746field within the non-aligned ACPI generic address structure.
5747
5748Fixed a problem in the Increment and Decrement operators where incorrect
5749operand resolution could result in the inadvertent modification of the
5750original integer when the integer is passed into another method as an
5751argument and the arg is then incremented/decremented.
5752
5753Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit
5754BCD number were truncated during conversion.
5755
5756Fixed a problem in the ToDecimal operator where the length of the resulting
5757string could be set incorrectly too long if the input operand was a Buffer
5758object.
5759
5760Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0)
5761within a buffer would prematurely terminate a compare between buffer
5762objects.
5763
5764Added a check for string overflow (>200 characters as per the ACPI
5765specification) during the Concatenate operator with two string operands.
5766
5767Code and Data Size: Current and previous core subsystem library sizes are
5768shown below. These are the code and data sizes for the acpica.lib produced
5769by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5770any ACPI driver or OSPM code. The debug version of the code includes the
5771debug output trace mechanism and has a much larger code and data size. Note
5772that these values will vary depending on the efficiency of the compiler and
5773the compiler options used during generation.
5774
5775  Previous Release:
5776    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5777    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
5778  Current Release:
5779    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5780    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
5781
5782
5783
57842) iASL Compiler/Disassembler:
5785
5786Allow the use of the ObjectType operator on uninitialized Locals and Args
5787(returns 0 as per the ACPI specification).
5788
5789Fixed a problem where the compiler would fault if there was a syntax error
5790in the FieldName of all of the various CreateXXXField operators.
5791
5792Disallow the use of lower case letters within the EISAID macro, as per the
5793ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where
5794U is an uppercase letter and N is a hex digit.
5795
5796
5797----------------------------------------
579806 October 2004.  Summary of changes for version 20041006:
5799
58001) ACPI CA Core Subsystem:
5801
5802Implemented support for the ACPI 3.0 Timer operator. This ASL function
5803implements a 64-bit timer with 100 nanosecond granularity.
5804
5805Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
5806implement the ACPI 3.0 Timer operator.  This allows the host OS to implement
5807the timer with the best clock available. Also, it keeps the core subsystem
5808out of the clock handling business, since the host OS (usually) performs
5809this function.
5810
5811Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
5812functions use a 64-bit address which is part of the packed ACPI Generic
5813Address Structure. Since the structure is non-aligned, the alignment macros
5814are now used to extract the address to a local variable before use.
5815
5816Fixed a problem where the ToInteger operator assumed all input strings were
5817hexadecimal. The operator now handles both decimal strings and hex strings
5818(prefixed with "0x").
5819
5820Fixed a problem where the string length in the string object created as a
5821result of the internal ConvertToString procedure could be incorrect. This
5822potentially affected all implicit conversions and also the ToDecimalString
5823and ToHexString operators.
5824
5825Fixed two problems in the ToString operator. If the length parameter was
5826zero, an incorrect string object was created and the value of the input
5827length parameter was inadvertently changed from zero to Ones.
5828
5829Fixed a problem where the optional ResourceSource string in the ExtendedIRQ
5830resource macro was ignored.
5831
5832Simplified the interfaces to the internal division functions, reducing code
5833size and complexity.
5834
5835Code and Data Size: Current and previous core subsystem library sizes are
5836shown below. These are the code and data sizes for the acpica.lib produced
5837by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5838any ACPI driver or OSPM code. The debug version of the code includes the
5839debug output trace mechanism and has a much larger code and data size. Note
5840that these values will vary depending on the efficiency of the compiler and
5841the compiler options used during generation.
5842
5843  Previous Release:
5844    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
5845    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
5846  Current Release:
5847    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5848    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
5849
5850
58512) iASL Compiler/Disassembler:
5852
5853Implemented support for the ACPI 3.0 Timer operator.
5854
5855Fixed a problem where the Default() operator was inadvertently ignored in a
5856Switch/Case block.  This was a problem in the translation of the Switch
5857statement to If...Else pairs.
5858
5859Added support to allow a standalone Return operator, with no parentheses (or
5860operands).
5861
5862Fixed a problem with code generation for the ElseIf operator where the
5863translated Else...If parse tree was improperly constructed leading to the
5864loss of some code.
5865
5866----------------------------------------
586722 September 2004.  Summary of changes for version 20040922:
5868
58691) ACPI CA Core Subsystem:
5870
5871Fixed a problem with the implementation of the LNot() operator where "Ones"
5872was not returned for the TRUE case. Changed the code to return Ones instead
5873of (!Arg) which was usually 1. This change affects iASL constant folding for
5874this operator also.
5875
5876Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not
5877initialized properly -- Now zero the entire buffer in this case where the
5878buffer already exists.
5879
5880Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
5881Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
5882related code considerably. This will require changes/updates to all OS
5883interface layers (OSLs.)
5884
5885Implemented a new external interface, AcpiInstallExceptionHandler, to allow
5886a system exception handler to be installed. This handler is invoked upon any
5887run-time exception that occurs during control method execution.
5888
5889Added support for the DSDT in AcpiTbFindTable. This allows the
5890DataTableRegion() operator to access the local copy of the DSDT.
5891
5892Code and Data Size: Current and previous core subsystem library sizes are
5893shown below. These are the code and data sizes for the acpica.lib produced
5894by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5895any ACPI driver or OSPM code. The debug version of the code includes the
5896debug output trace mechanism and has a much larger code and data size. Note
5897that these values will vary depending on the efficiency of the compiler and
5898the compiler options used during generation.
5899
5900  Previous Release:
5901    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
5902    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
5903  Current Release:
5904    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
5905    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
5906
5907
59082) iASL Compiler/Disassembler:
5909
5910Fixed a problem with constant folding and the LNot operator. LNot was
5911returning 1 in the TRUE case, not Ones as per the ACPI specification. This
5912could result in the generation of an incorrect folded/reduced constant.
5913
5914End-Of-File is now allowed within a "//"-style comment.  A parse error no
5915longer occurs if such a comment is at the very end of the input ASL source
5916file.
5917
5918Implemented the "-r" option to override the Revision in the table header.
5919The initial use of this option will be to simplify the evaluation of the AML
5920interpreter by allowing a single ASL source module to be compiled for either
592132-bit or 64-bit integers.
5922
5923
5924----------------------------------------
592527 August 2004.  Summary of changes for version 20040827:
5926
59271) ACPI CA Core Subsystem:
5928
5929- Implemented support for implicit object conversion in the non-numeric
5930logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and
5931LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
5932the second operand is implicitly converted on the fly to match the type of
5933the first operand.  For example:
5934
5935    LEqual (Source1, Source2)
5936
5937Source1 and Source2 must each evaluate to an integer, a string, or a buffer.
5938The data type of Source1 dictates the required type of Source2. Source2 is
5939implicitly converted if necessary to match the type of Source1.
5940
5941- Updated and corrected the behavior of the string conversion support.  The
5942rules concerning conversion of buffers to strings (according to the ACPI
5943specification) are as follows:
5944
5945ToDecimalString - explicit byte-wise conversion of buffer to string of
5946decimal values (0-255) separated by commas. ToHexString - explicit byte-wise
5947conversion of buffer to string of hex values (0-FF) separated by commas.
5948ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte
5949copy with no transform except NULL terminated. Any other implicit buffer-to-
5950string conversion - byte-wise conversion of buffer to string of hex values
5951(0-FF) separated by spaces.
5952
5953- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
5954
5955- Fixed a problem in AcpiNsGetPathnameLength where the returned length was
5956one byte too short in the case of a node in the root scope.  This could
5957cause a fault during debug output.
5958
5959- Code and Data Size: Current and previous core subsystem library sizes are
5960shown below.  These are the code and data sizes for the acpica.lib produced
5961by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5962any ACPI driver or OSPM code.  The debug version of the code includes the
5963debug output trace mechanism and has a much larger code and data size.  Note
5964that these values will vary depending on the efficiency of the compiler and
5965the compiler options used during generation.
5966
5967  Previous Release:
5968    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
5969    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
5970  Current Release:
5971    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
5972    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
5973
5974
59752) iASL Compiler/Disassembler:
5976
5977- Fixed a Linux generation error.
5978
5979
5980----------------------------------------
598116 August 2004.  Summary of changes for version 20040816:
5982
59831) ACPI CA Core Subsystem:
5984
5985Designed and implemented support within the AML interpreter for the so-
5986called "implicit return".  This support returns the result of the last ASL
5987operation within a control method, in the absence of an explicit Return()
5988operator.  A few machines depend on this behavior, even though it is not
5989explicitly supported by the ASL language.  It is optional support that can
5990be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
5991
5992Removed support for the PCI_Config address space from the internal low level
5993hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
5994support was not used internally, and would not work correctly anyway because
5995the PCI bus number and segment number were not supported.  There are
5996separate interfaces for PCI configuration space access because of the unique
5997interface.
5998
5999Code and Data Size: Current and previous core subsystem library sizes are
6000shown below.  These are the code and data sizes for the acpica.lib produced
6001by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6002any ACPI driver or OSPM code.  The debug version of the code includes the
6003debug output trace mechanism and has a much larger code and data size.  Note
6004that these values will vary depending on the efficiency of the compiler and
6005the compiler options used during generation.
6006
6007  Previous Release:
6008    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6009    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
6010  Current Release:
6011    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
6012    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
6013
6014
60152) iASL Compiler/Disassembler:
6016
6017Fixed a problem where constants in ASL expressions at the root level (not
6018within a control method) could be inadvertently truncated during code
6019generation.  This problem was introduced in the 20040715 release.
6020
6021
6022----------------------------------------
602315 July 2004.  Summary of changes for version 20040715:
6024
60251) ACPI CA Core Subsystem:
6026
6027Restructured the internal HW GPE interfaces to pass/track the current state
6028of interrupts (enabled/disabled) in order to avoid possible deadlock and
6029increase flexibility of the interfaces.
6030
6031Implemented a "lexicographical compare" for String and Buffer objects within
6032the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual --
6033as per further clarification to the ACPI specification.  Behavior is similar
6034to C library "strcmp".
6035
6036Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
6037external function.  In the 32-bit non-debug case, the stack use has been
6038reduced from 168 bytes to 32 bytes.
6039
6040Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack,
6041whose purpose is to allow the AML interpreter to forgive certain bad AML
6042constructs.  Default setting is FALSE.
6043
6044Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO
6045support code.  If enabled, it allows field access to go beyond the end of a
6046region definition if the field is within the region length rounded up to the
6047next access width boundary (a common coding error.)
6048
6049Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
6050ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these
6051symbols are lowercased by the latest version of the AcpiSrc tool.
6052
6053The prototypes for the PCI interfaces in acpiosxf.h have been updated to
6054rename "Register" to simply "Reg" to prevent certain compilers from
6055complaining.
6056
6057Code and Data Size: Current and previous core subsystem library sizes are
6058shown below.  These are the code and data sizes for the acpica.lib produced
6059by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6060any ACPI driver or OSPM code.  The debug version of the code includes the
6061debug output trace mechanism and has a much larger code and data size.  Note
6062that these values will vary depending on the efficiency of the compiler and
6063the compiler options used during generation.
6064
6065  Previous Release:
6066    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6067    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
6068  Current Release:
6069    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6070    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
6071
6072
60732) iASL Compiler/Disassembler:
6074
6075Implemented full support for Package objects within the Case() operator.
6076Note: The Break() operator is currently not supported within Case blocks
6077(TermLists) as there is some question about backward compatibility with ACPI
60781.0 interpreters.
6079
6080
6081Fixed a problem where complex terms were not supported properly within the
6082Switch() operator.
6083
6084Eliminated extraneous warning for compiler-emitted reserved names of the
6085form "_T_x".  (Used in Switch/Case operators.)
6086
6087Eliminated optimization messages for "_T_x" objects and small constants
6088within the DefinitionBlock operator.
6089
6090
6091----------------------------------------
609215 June 2004.  Summary of changes for version 20040615:
6093
60941) ACPI CA Core Subsystem:
6095
6096Implemented support for Buffer and String objects (as per ACPI 2.0) for the
6097following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
6098LLessEqual.
6099
6100All directory names in the entire source package are lower case, as they
6101were in earlier releases.
6102
6103Implemented "Disassemble" command in the AML debugger that will disassemble
6104a single control method.
6105
6106Code and Data Size: Current and previous core subsystem library sizes are
6107shown below.  These are the code and data sizes for the acpica.lib produced
6108by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6109any ACPI driver or OSPM code.  The debug version of the code includes the
6110debug output trace mechanism and has a much larger code and data size.  Note
6111that these values will vary depending on the efficiency of the compiler and
6112the compiler options used during generation.
6113
6114  Previous Release:
6115    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
6116    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
6117
6118  Current Release:
6119    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6120    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
6121
6122
61232) iASL Compiler/Disassembler:
6124
6125Implemented support for Buffer and String objects (as per ACPI 2.0) for the
6126following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
6127LLessEqual.
6128
6129All directory names in the entire source package are lower case, as they
6130were in earlier releases.
6131
6132Fixed a fault when using the -g or -d<nofilename> options if the FADT was
6133not found.
6134
6135Fixed an issue with the Windows version of the compiler where later versions
6136of Windows place the FADT in the registry under the name "FADT" and not
6137"FACP" as earlier versions did.  This applies when using the -g or -
6138d<nofilename> options.  The compiler now looks for both strings as
6139necessary.
6140
6141Fixed a problem with compiler namepath optimization where a namepath within
6142the Scope() operator could not be optimized if the namepath was a subpath of
6143the current scope path.
6144
6145----------------------------------------
614627 May 2004.  Summary of changes for version 20040527:
6147
61481) ACPI CA Core Subsystem:
6149
6150Completed a new design and implementation for EBDA (Extended BIOS Data Area)
6151support in the RSDP scan code.  The original code improperly scanned for the
6152EBDA by simply scanning from memory location 0 to 0x400.  The correct method
6153is to first obtain the EBDA pointer from within the BIOS data area, then
6154scan 1K of memory starting at the EBDA pointer.  There appear to be few if
6155any machines that place the RSDP in the EBDA, however.
6156
6157Integrated a fix for a possible fault during evaluation of BufferField
6158arguments.  Obsolete code that was causing the problem was removed.
6159
6160Found and fixed a problem in the Field Support Code where data could be
6161corrupted on a bit field read that starts on an aligned boundary but does
6162not end on an aligned boundary.  Merged the read/write "datum length"
6163calculation code into a common procedure.
6164
6165Rolled in a couple of changes to the FreeBSD-specific header.
6166
6167
6168Code and Data Size: Current and previous core subsystem library sizes are
6169shown below.  These are the code and data sizes for the acpica.lib produced
6170by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6171any ACPI driver or OSPM code.  The debug version of the code includes the
6172debug output trace mechanism and has a much larger code and data size.  Note
6173that these values will vary depending on the efficiency of the compiler and
6174the compiler options used during generation.
6175
6176  Previous Release:
6177    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6178    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
6179  Current Release:
6180    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
6181    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
6182
6183
61842) iASL Compiler/Disassembler:
6185
6186Fixed a generation warning produced by some overly-verbose compilers for a
618764-bit constant.
6188
6189----------------------------------------
619014 May 2004.  Summary of changes for version 20040514:
6191
61921) ACPI CA Core Subsystem:
6193
6194Fixed a problem where hardware GPE enable bits sometimes not set properly
6195during and after GPE method execution.  Result of 04/27 changes.
6196
6197Removed extra "clear all GPEs" when sleeping/waking.
6198
6199Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
6200AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to
6201the new AcpiEv* calls as appropriate.
6202
6203ACPI_OS_NAME was removed from the OS-specific headers.  The default name is
6204now "Microsoft Windows NT" for maximum compatibility.  However this can be
6205changed by modifying the acconfig.h file.
6206
6207Allow a single invocation of AcpiInstallNotifyHandler for a handler that
6208traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
6209
6210Run _INI methods on ThermalZone objects.  This is against the ACPI
6211specification, but there is apparently ASL code in the field that has these
6212_INI methods, and apparently "other" AML interpreters execute them.
6213
6214Performed a full 16/32/64 bit lint that resulted in some small changes.
6215
6216Added a sleep simulation command to the AML debugger to test sleep code.
6217
6218Code and Data Size: Current and previous core subsystem library sizes are
6219shown below.  These are the code and data sizes for the acpica.lib produced
6220by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6221any ACPI driver or OSPM code.  The debug version of the code includes the
6222debug output trace mechanism and has a much larger code and data size.  Note
6223that these values will vary depending on the efficiency of the compiler and
6224the compiler options used during generation.
6225
6226  Previous Release:
6227    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6228    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
6229  Current Release:
6230    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6231    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
6232
6233----------------------------------------
623427 April 2004.  Summary of changes for version 20040427:
6235
62361) ACPI CA Core Subsystem:
6237
6238Completed a major overhaul of the GPE handling within ACPI CA.  There are
6239now three types of GPEs:  wake-only, runtime-only, and combination wake/run.
6240The only GPEs allowed to be combination wake/run are for button-style
6241devices such as a control-method power button, control-method sleep button,
6242or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not
6243referenced by any _PRW methods are marked for "runtime" and hardware
6244enabled.  Any GPE that is referenced by a _PRW method is marked for "wake"
6245(and disabled at runtime).  However, at sleep time, only those GPEs that
6246have been specifically enabled for wake via the AcpiEnableGpe interface will
6247actually be hardware enabled.
6248
6249A new external interface has been added, AcpiSetGpeType(), that is meant to
6250be used by device drivers to force a GPE to a particular type.  It will be
6251especially useful for the drivers for the button devices mentioned above.
6252
6253Completed restructuring of the ACPI CA initialization sequence so that
6254default operation region handlers are installed before GPEs are initialized
6255and the _PRW methods are executed.  This will prevent errors when the _PRW
6256methods attempt to access system memory or I/O space.
6257
6258GPE enable/disable no longer reads the GPE enable register.  We now keep the
6259enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
6260thus no longer depend on the hardware to maintain these bits.
6261
6262Always clear the wake status and fixed/GPE status bits before sleep, even
6263for state S5.
6264
6265Improved the AML debugger output for displaying the GPE blocks and their
6266current status.
6267
6268Added new strings for the _OSI method, of the form "Windows 2001 SPx" where
6269x = 0,1,2,3,4.
6270
6271Fixed a problem where the physical address was incorrectly calculated when
6272the Load() operator was used to directly load from an Operation Region (vs.
6273loading from a Field object.)  Also added check for minimum table length for
6274this case.
6275
6276Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
6277mutex release.
6278
6279Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
6280consistency with the other fields returned.
6281
6282Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
6283structure for each GPE in the system, so the size of this structure is
6284important.
6285
6286CPU stack requirement reduction:  Cleaned up the method execution and object
6287evaluation paths so that now a parameter structure is passed, instead of
6288copying the various method parameters over and over again.
6289
6290In evregion.c:  Correctly exit and reenter the interpreter region if and
6291only if dispatching an operation region request to a user-installed handler.
6292Do not exit/reenter when dispatching to a default handler (e.g., default
6293system memory or I/O handlers)
6294
6295
6296Notes for updating drivers for the new GPE support.  The following changes
6297must be made to ACPI-related device drivers that are attached to one or more
6298GPEs: (This information will be added to the ACPI CA Programmer Reference.)
6299
63001) AcpiInstallGpeHandler no longer automatically enables the GPE, you must
6301explicitly call AcpiEnableGpe.
63022) There is a new interface called AcpiSetGpeType. This should be called
6303before enabling the GPE.  Also, this interface will automatically disable
6304the GPE if it is currently enabled.
63053) AcpiEnableGpe no longer supports a GPE type flag.
6306
6307Specific drivers that must be changed:
63081) EC driver:
6309    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
6310AeGpeHandler, NULL);
6311    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
6312    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
6313
63142) Button Drivers (Power, Lid, Sleep):
6315Run _PRW method under parent device
6316If _PRW exists: /* This is a control-method button */
6317    Extract GPE number and possibly GpeDevice
6318    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
6319    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
6320
6321For all other devices that have _PRWs, we automatically set the GPE type to
6322ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This
6323must be done on a selective basis, usually requiring some kind of user app
6324to allow the user to pick the wake devices.
6325
6326
6327Code and Data Size: Current and previous core subsystem library sizes are
6328shown below.  These are the code and data sizes for the acpica.lib produced
6329by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6330any ACPI driver or OSPM code.  The debug version of the code includes the
6331debug output trace mechanism and has a much larger code and data size.  Note
6332that these values will vary depending on the efficiency of the compiler and
6333the compiler options used during generation.
6334
6335  Previous Release:
6336    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
6337    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
6338  Current Release:
6339
6340    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6341    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
6342
6343
6344
6345----------------------------------------
634602 April 2004.  Summary of changes for version 20040402:
6347
63481) ACPI CA Core Subsystem:
6349
6350Fixed an interpreter problem where an indirect store through an ArgX
6351parameter was incorrectly applying the "implicit conversion rules" during
6352the store.  From the ACPI specification: "If the target is a method local or
6353argument (LocalX or ArgX), no conversion is performed and the result is
6354stored directly to the target".  The new behavior is to disable implicit
6355conversion during ALL stores to an ArgX.
6356
6357Changed the behavior of the _PRW method scan to ignore any and all errors
6358returned by a given _PRW.  This prevents the scan from aborting from the
6359failure of any single _PRW.
6360
6361Moved the runtime configuration parameters from the global init procedure to
6362static variables in acglobal.h.  This will allow the host to override the
6363default values easily.
6364
6365Code and Data Size: Current and previous core subsystem library sizes are
6366shown below.  These are the code and data sizes for the acpica.lib produced
6367by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6368any ACPI driver or OSPM code.  The debug version of the code includes the
6369debug output trace mechanism and has a much larger code and data size.  Note
6370that these values will vary depending on the efficiency of the compiler and
6371the compiler options used during generation.
6372
6373  Previous Release:
6374    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
6375    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
6376  Current Release:
6377    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
6378    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
6379
6380
63812) iASL Compiler/Disassembler:
6382
6383iASL now fully disassembles SSDTs.  However, External() statements are not
6384generated automatically for unresolved symbols at this time.  This is a
6385planned feature for future implementation.
6386
6387Fixed a scoping problem in the disassembler that occurs when the type of the
6388target of a Scope() operator is overridden.  This problem caused an
6389incorrectly nested internal namespace to be constructed.
6390
6391Any warnings or errors that are emitted during disassembly are now commented
6392out automatically so that the resulting file can be recompiled without any
6393hand editing.
6394
6395----------------------------------------
639626 March 2004.  Summary of changes for version 20040326:
6397
63981) ACPI CA Core Subsystem:
6399
6400Implemented support for "wake" GPEs via interaction between GPEs and the
6401_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
6402identified as a WAKE GPE and by default will no longer be enabled at
6403runtime.  Previously, we were blindly enabling all GPEs with a corresponding
6404_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We
6405believe this has been the cause of thousands of "spurious" GPEs on some
6406systems.
6407
6408This new GPE behavior is can be reverted to the original behavior (enable
6409ALL GPEs at runtime) via a runtime flag.
6410
6411Fixed a problem where aliased control methods could not access objects
6412properly.  The proper scope within the namespace was not initialized
6413(transferred to the target of the aliased method) before executing the
6414target method.
6415
6416Fixed a potential race condition on internal object deletion on the return
6417object in AcpiEvaluateObject.
6418
6419Integrated a fix for resource descriptors where both _MEM and _MTP were
6420being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
6421wide, 0x0F instead of 0x03.)
6422
6423Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a
6424fault in some cases.
6425
6426Updated Notify() values for debug statements in evmisc.c
6427
6428Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
6429
6430Code and Data Size: Current and previous core subsystem library sizes are
6431shown below.  These are the code and data sizes for the acpica.lib produced
6432by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6433any ACPI driver or OSPM code.  The debug version of the code includes the
6434debug output trace mechanism and has a much larger code and data size.  Note
6435that these values will vary depending on the efficiency of the compiler and
6436the compiler options used during generation.
6437
6438  Previous Release:
6439
6440    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
6441    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
6442  Current Release:
6443    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
6444    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
6445
6446----------------------------------------
644711 March 2004.  Summary of changes for version 20040311:
6448
64491) ACPI CA Core Subsystem:
6450
6451Fixed a problem where errors occurring during the parse phase of control
6452method execution did not abort cleanly.  For example, objects created and
6453installed in the namespace were not deleted.  This caused all subsequent
6454invocations of the method to return the AE_ALREADY_EXISTS exception.
6455
6456Implemented a mechanism to force a control method to "Serialized" execution
6457if the method attempts to create namespace objects. (The root of the
6458AE_ALREADY_EXISTS problem.)
6459
6460Implemented support for the predefined _OSI "internal" control method.
6461Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and
6462"Windows 2001.1", and can be easily upgraded for new strings as necessary.
6463This feature will allow "other" operating systems to execute the fully
6464tested, "Windows" code path through the ASL code
6465
6466Global Lock Support:  Now allows multiple acquires and releases with any
6467internal thread.  Removed concept of "owning thread" for this special mutex.
6468
6469Fixed two functions that were inappropriately declaring large objects on the
6470CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during
6471method execution considerably.
6472
6473Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
6474S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
6475
6476Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
6477defined on the machine.
6478
6479Implemented two runtime options:  One to force all control method execution
6480to "Serialized" to mimic Windows behavior, another to disable _OSI support
6481if it causes problems on a given machine.
6482
6483Code and Data Size: Current and previous core subsystem library sizes are
6484shown below.  These are the code and data sizes for the acpica.lib produced
6485by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6486any ACPI driver or OSPM code.  The debug version of the code includes the
6487debug output trace mechanism and has a much larger code and data size.  Note
6488that these values will vary depending on the efficiency of the compiler and
6489the compiler options used during generation.
6490
6491  Previous Release:
6492    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
6493    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
6494  Current Release:
6495    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
6496    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
6497
64982) iASL Compiler/Disassembler:
6499
6500Fixed an array size problem for FreeBSD that would cause the compiler to
6501fault.
6502
6503----------------------------------------
650420 February 2004.  Summary of changes for version 20040220:
6505
6506
65071) ACPI CA Core Subsystem:
6508
6509Implemented execution of _SxD methods for Device objects in the
6510GetObjectInfo interface.
6511
6512Fixed calls to _SST method to pass the correct arguments.
6513
6514Added a call to _SST on wake to restore to "working" state.
6515
6516Check for End-Of-Buffer failure case in the WalkResources interface.
6517
6518Integrated fix for 64-bit alignment issue in acglobal.h by moving two
6519structures to the beginning of the file.
6520
6521After wake, clear GPE status register(s) before enabling GPEs.
6522
6523After wake, clear/enable power button.  (Perhaps we should clear/enable all
6524fixed events upon wake.)
6525
6526Fixed a couple of possible memory leaks in the Namespace manager.
6527
6528Integrated latest acnetbsd.h file.
6529
6530----------------------------------------
653111 February 2004.  Summary of changes for version 20040211:
6532
6533
65341) ACPI CA Core Subsystem:
6535
6536Completed investigation and implementation of the call-by-reference
6537mechanism for control method arguments.
6538
6539Fixed a problem where a store of an object into an indexed package could
6540fail if the store occurs within a different method than the method that
6541created the package.
6542
6543Fixed a problem where the ToDecimal operator could return incorrect results.
6544
6545Fixed a problem where the CopyObject operator could fail on some of the more
6546obscure objects (e.g., Reference objects.)
6547
6548Improved the output of the Debug object to display buffer, package, and
6549index objects.
6550
6551Fixed a problem where constructs of the form "RefOf (ArgX)" did not return
6552the expected result.
6553
6554Added permanent ACPI_REPORT_ERROR macros for all instances of the
6555ACPI_AML_INTERNAL exception.
6556
6557Integrated latest version of acfreebsd.h
6558
6559----------------------------------------
656016 January 2004.  Summary of changes for version 20040116:
6561
6562The purpose of this release is primarily to update the copyright years in
6563each module, thus causing a huge number of diffs.  There are a few small
6564functional changes, however.
6565
65661) ACPI CA Core Subsystem:
6567
6568Improved error messages when there is a problem finding one or more of the
6569required base ACPI tables
6570
6571Reintroduced the definition of APIC_HEADER in actbl.h
6572
6573Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
6574
6575Removed extraneous reference to NewObj in dsmthdat.c
6576
65772) iASL compiler
6578
6579Fixed a problem introduced in December that disabled the correct disassembly
6580of Resource Templates
6581
6582
6583----------------------------------------
658403 December 2003.  Summary of changes for version 20031203:
6585
65861) ACPI CA Core Subsystem:
6587
6588Changed the initialization of Operation Regions during subsystem
6589init to perform two entire walks of the ACPI namespace; The first
6590to initialize the regions themselves, the second to execute the
6591_REG methods.  This fixed some interdependencies across _REG
6592methods found on some machines.
6593
6594Fixed a problem where a Store(Local0, Local1) could simply update
6595the object reference count, and not create a new copy of the
6596object if the Local1 is uninitialized.
6597
6598Implemented support for the _SST reserved method during sleep
6599transitions.
6600
6601Implemented support to clear the SLP_TYP and SLP_EN bits when
6602waking up, this is apparently required by some machines.
6603
6604When sleeping, clear the wake status only if SleepState is not S5.
6605
6606Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
6607pointer arithmetic advanced a string pointer too far.
6608
6609Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
6610could be returned if the requested table has not been loaded.
6611
6612Within the support for IRQ resources, restructured the handling of
6613the active and edge/level bits.
6614
6615Fixed a few problems in AcpiPsxExecute() where memory could be
6616leaked under certain error conditions.
6617
6618Improved error messages for the cases where the ACPI mode could
6619not be entered.
6620
6621Code and Data Size: Current and previous core subsystem library
6622sizes are shown below.  These are the code and data sizes for the
6623acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6624these values do not include any ACPI driver or OSPM code.  The
6625debug version of the code includes the debug output trace
6626mechanism and has a much larger code and data size.  Note that
6627these values will vary depending on the efficiency of the compiler
6628and the compiler options used during generation.
6629
6630  Previous Release (20031029):
6631    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
6632    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
6633  Current Release:
6634    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
6635    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
6636
66372) iASL Compiler/Disassembler:
6638
6639Implemented a fix for the iASL disassembler where a bad index was
6640generated.  This was most noticeable on 64-bit platforms
6641
6642
6643----------------------------------------
664429 October 2003.  Summary of changes for version 20031029:
6645
66461) ACPI CA Core Subsystem:
6647
6648
6649Fixed a problem where a level-triggered GPE with an associated
6650_Lxx control method was incorrectly cleared twice.
6651
6652Fixed a problem with the Field support code where an access can
6653occur beyond the end-of-region if the field is non-aligned but
6654extends to the very end of the parent region (resulted in an
6655AE_AML_REGION_LIMIT exception.)
6656
6657Fixed a problem with ACPI Fixed Events where an RT Clock handler
6658would not get invoked on an RTC event.  The RTC event bitmasks for
6659the PM1 registers were not being initialized properly.
6660
6661Implemented support for executing _STA and _INI methods for
6662Processor objects.  Although this is currently not part of the
6663ACPI specification, there is existing ASL code that depends on the
6664init-time execution of these methods.
6665
6666Implemented and deployed a GetDescriptorName function to decode
6667the various types of internal descriptors.  Guards against null
6668descriptors during debug output also.
6669
6670Implemented and deployed a GetNodeName function to extract the 4-
6671character namespace node name.  This function simplifies the debug
6672and error output, as well as guarding against null pointers during
6673output.
6674
6675Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
6676simplify the debug and error output of 64-bit integers.  This
6677macro replaces the HIDWORD and LODWORD macros for dumping these
6678integers.
6679
6680Updated the implementation of the Stall() operator to only call
6681AcpiOsStall(), and also return an error if the operand is larger
6682than 255.  This preserves the required behavior of not
6683relinquishing the processor, as would happen if AcpiOsSleep() was
6684called for "long stalls".
6685
6686Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
6687initialized are now treated as NOOPs.
6688
6689Cleaned up a handful of warnings during 64-bit generation.
6690
6691Fixed a reported error where and incorrect GPE number was passed
6692to the GPE dispatch handler.  This value is only used for error
6693output, however.  Used this opportunity to clean up and streamline
6694the GPE dispatch code.
6695
6696Code and Data Size: Current and previous core subsystem library
6697sizes are shown below.  These are the code and data sizes for the
6698acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6699these values do not include any ACPI driver or OSPM code.  The
6700
6701debug version of the code includes the debug output trace
6702mechanism and has a much larger code and data size.  Note that
6703these values will vary depending on the efficiency of the compiler
6704and the compiler options used during generation.
6705
6706  Previous Release (20031002):
6707    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
6708    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
6709  Current Release:
6710    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
6711    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
6712
6713
67142) iASL Compiler/Disassembler:
6715
6716Updated the iASL compiler to return an error if the operand to the
6717Stall() operator is larger than 255.
6718
6719
6720----------------------------------------
672102 October 2003.  Summary of changes for version 20031002:
6722
6723
67241) ACPI CA Core Subsystem:
6725
6726Fixed a problem with Index Fields where the index was not
6727incremented for fields that require multiple writes to the
6728index/data registers (Fields that are wider than the data
6729register.)
6730
6731Fixed a problem with all Field objects where a write could go
6732beyond the end-of-field if the field was larger than the access
6733granularity and therefore required multiple writes to complete the
6734request.  An extra write beyond the end of the field could happen
6735inadvertently.
6736
6737Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
6738would incorrectly be returned if the width of the Data Register
6739was larger than the specified field access width.
6740
6741Completed fixes for LoadTable() and Unload() and verified their
6742operation.  Implemented full support for the "DdbHandle" object
6743throughout the ACPI CA subsystem.
6744
6745Implemented full support for the MADT and ECDT tables in the ACPI
6746CA header files.  Even though these tables are not directly
6747consumed by ACPI CA, the header definitions are useful for ACPI
6748device drivers.
6749
6750Integrated resource descriptor fixes posted to the Linux ACPI
6751list.  This included checks for minimum descriptor length, and
6752support for trailing NULL strings within descriptors that have
6753optional string elements.
6754
6755Code and Data Size: Current and previous core subsystem library
6756sizes are shown below.  These are the code and data sizes for the
6757acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6758these values do not include any ACPI driver or OSPM code.  The
6759debug version of the code includes the debug output trace
6760mechanism and has a much larger code and data size.  Note that
6761these values will vary depending on the efficiency of the compiler
6762and the compiler options used during generation.
6763
6764  Previous Release (20030918):
6765    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
6766    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
6767  Current Release:
6768    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
6769    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
6770
6771
67722) iASL Compiler:
6773
6774Implemented detection of non-ASCII characters within the input
6775source ASL file.  This catches attempts to compile binary (AML)
6776files early in the compile, with an informative error message.
6777
6778Fixed a problem where the disassembler would fault if the output
6779filename could not be generated or if the output file could not be
6780opened.
6781
6782----------------------------------------
678318 September 2003.  Summary of changes for version 20030918:
6784
6785
67861) ACPI CA Core Subsystem:
6787
6788Found and fixed a longstanding problem with the late execution of
6789the various deferred AML opcodes (such as Operation Regions,
6790Buffer Fields, Buffers, and Packages).  If the name string
6791specified for the name of the new object placed the object in a
6792scope other than the current scope, the initialization/execution
6793of the opcode failed.  The solution to this problem was to
6794implement a mechanism where the late execution of such opcodes
6795does not attempt to lookup/create the name a second time in an
6796incorrect scope.  This fixes the "region size computed
6797incorrectly" problem.
6798
6799Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
6800Global Lock AE_BAD_PARAMETER error.
6801
6802Fixed several 64-bit issues with prototypes, casting and data
6803types.
6804
6805Removed duplicate prototype from acdisasm.h
6806
6807Fixed an issue involving EC Operation Region Detach (Shaohua Li)
6808
6809Code and Data Size: Current and previous core subsystem library
6810sizes are shown below.  These are the code and data sizes for the
6811acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6812these values do not include any ACPI driver or OSPM code.  The
6813debug version of the code includes the debug output trace
6814mechanism and has a much larger code and data size.  Note that
6815these values will vary depending on the efficiency of the compiler
6816and the compiler options used during generation.
6817
6818  Previous Release:
6819
6820    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
6821    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
6822  Current Release:
6823    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
6824    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
6825
6826
68272) Linux:
6828
6829Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
6830correct sleep time in seconds.
6831
6832----------------------------------------
683314 July 2003.  Summary of changes for version 20030619:
6834
68351) ACPI CA Core Subsystem:
6836
6837Parse SSDTs in order discovered, as opposed to reverse order
6838(Hrvoje Habjanic)
6839
6840Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
6841Klausner,
6842   Nate Lawson)
6843
6844
68452) Linux:
6846
6847Dynamically allocate SDT list (suggested by Andi Kleen)
6848
6849proc function return value cleanups (Andi Kleen)
6850
6851Correctly handle NMI watchdog during long stalls (Andrew Morton)
6852
6853Make it so acpismp=force works (reported by Andrew Morton)
6854
6855
6856----------------------------------------
685719 June 2003.  Summary of changes for version 20030619:
6858
68591) ACPI CA Core Subsystem:
6860
6861Fix To/FromBCD, eliminating the need for an arch-specific #define.
6862
6863Do not acquire a semaphore in the S5 shutdown path.
6864
6865Fix ex_digits_needed for 0. (Takayoshi Kochi)
6866
6867Fix sleep/stall code reversal. (Andi Kleen)
6868
6869Revert a change having to do with control method calling
6870semantics.
6871
68722) Linux:
6873
6874acpiphp update (Takayoshi Kochi)
6875
6876Export acpi_disabled for sonypi (Stelian Pop)
6877
6878Mention acpismp=force in config help
6879
6880Re-add acpitable.c and acpismp=force. This improves backwards
6881
6882compatibility and also cleans up the code to a significant degree.
6883
6884Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
6885
6886----------------------------------------
688722 May 2003.  Summary of changes for version 20030522:
6888
68891) ACPI CA Core Subsystem:
6890
6891Found and fixed a reported problem where an AE_NOT_FOUND error
6892occurred occasionally during _BST evaluation.  This turned out to
6893be an Owner ID allocation issue where a called method did not get
6894a new ID assigned to it.  Eventually, (after 64k calls), the Owner
6895ID UINT16 would wraparound so that the ID would be the same as the
6896caller's and the called method would delete the caller's
6897namespace.
6898
6899Implemented extended error reporting for control methods that are
6900aborted due to a run-time exception.  Output includes the exact
6901AML instruction that caused the method abort, a dump of the method
6902locals and arguments at the time of the abort, and a trace of all
6903nested control method calls.
6904
6905Modified the interpreter to allow the creation of buffers of zero
6906length from the AML code. Implemented new code to ensure that no
6907attempt is made to actually allocate a memory buffer (of length
6908zero) - instead, a simple buffer object with a NULL buffer pointer
6909and length zero is created.  A warning is no longer issued when
6910the AML attempts to create a zero-length buffer.
6911
6912Implemented a workaround for the "leading asterisk issue" in
6913_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
6914asterisk is automatically removed if present in any HID, UID, or
6915CID strings.  The iASL compiler will still flag this asterisk as
6916an error, however.
6917
6918Implemented full support for _CID methods that return a package of
6919multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
6920now additionally returns a device _CID list if present.  This
6921required a change to the external interface in order to pass an
6922ACPI_BUFFER object as a parameter since the _CID list is of
6923variable length.
6924
6925Fixed a problem with the new AE_SAME_HANDLER exception where
6926handler initialization code did not know about this exception.
6927
6928Code and Data Size: Current and previous core subsystem library
6929sizes are shown below.  These are the code and data sizes for the
6930acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6931these values do not include any ACPI driver or OSPM code.  The
6932debug version of the code includes the debug output trace
6933mechanism and has a much larger code and data size.  Note that
6934these values will vary depending on the efficiency of the compiler
6935and the compiler options used during generation.
6936
6937  Previous Release (20030509):
6938    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
6939    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
6940  Current Release:
6941    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
6942    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
6943
6944
69452) Linux:
6946
6947Fixed a bug in which we would reinitialize the ACPI interrupt
6948after it was already working, thus disabling all ACPI and the IRQs
6949for any other device sharing the interrupt. (Thanks to Stian
6950Jordet)
6951
6952Toshiba driver update (John Belmonte)
6953
6954Return only 0 or 1 for our interrupt handler status (Andrew
6955Morton)
6956
6957
69583) iASL Compiler:
6959
6960Fixed a reported problem where multiple (nested) ElseIf()
6961statements were not handled correctly by the compiler, resulting
6962in incorrect warnings and incorrect AML code.  This was a problem
6963in both the ASL parser and the code generator.
6964
6965
69664) Documentation:
6967
6968Added changes to existing interfaces, new exception codes, and new
6969text concerning reference count object management versus garbage
6970collection.
6971
6972----------------------------------------
697309 May 2003.  Summary of changes for version 20030509.
6974
6975
69761) ACPI CA Core Subsystem:
6977
6978Changed the subsystem initialization sequence to hold off
6979installation of address space handlers until the hardware has been
6980initialized and the system has entered ACPI mode.  This is because
6981the installation of space handlers can cause _REG methods to be
6982run.  Previously, the _REG methods could potentially be run before
6983ACPI mode was enabled.
6984
6985Fixed some memory leak issues related to address space handler and
6986notify handler installation.  There were some problems with the
6987reference count mechanism caused by the fact that the handler
6988objects are shared across several namespace objects.
6989
6990Fixed a reported problem where reference counts within the
6991namespace were not properly updated when named objects created by
6992method execution were deleted.
6993
6994Fixed a reported problem where multiple SSDTs caused a deletion
6995issue during subsystem termination.  Restructured the table data
6996structures to simplify the linked lists and the related code.
6997
6998Fixed a problem where the table ID associated with secondary
6999tables (SSDTs) was not being propagated into the namespace objects
7000created by those tables.  This would only present a problem for
7001tables that are unloaded at run-time, however.
7002
7003Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
7004type as the length parameter (instead of UINT32).
7005
7006Solved a long-standing problem where an ALREADY_EXISTS error
7007appears on various systems.  This problem could happen when there
7008are multiple PCI_Config operation regions under a single PCI root
7009bus.  This doesn't happen very frequently, but there are some
7010systems that do this in the ASL.
7011
7012Fixed a reported problem where the internal DeleteNode function
7013was incorrectly handling the case where a namespace node was the
7014first in the parent's child list, and had additional peers (not
7015the only child, but first in the list of children.)
7016
7017Code and Data Size: Current core subsystem library sizes are shown
7018below.  These are the code and data sizes for the acpica.lib
7019produced by the Microsoft Visual C++ 6.0 compiler, and these
7020values do not include any ACPI driver or OSPM code.  The debug
7021version of the code includes the debug output trace mechanism and
7022has a much larger code and data size.  Note that these values will
7023vary depending on the efficiency of the compiler and the compiler
7024options used during generation.
7025
7026  Previous Release
7027    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
7028    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
7029  Current Release:
7030    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
7031    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
7032
7033
70342) Linux:
7035
7036Allow ":" in OS override string (Ducrot Bruno)
7037
7038Kobject fix (Greg KH)
7039
7040
70413 iASL Compiler/Disassembler:
7042
7043Fixed a problem in the generation of the C source code files (AML
7044is emitted in C source statements for BIOS inclusion) where the
7045Ascii dump that appears within a C comment at the end of each line
7046could cause a compile time error if the AML sequence happens to
7047have an open comment or close comment sequence embedded.
7048
7049
7050----------------------------------------
705124 April 2003.  Summary of changes for version 20030424.
7052
7053
70541) ACPI CA Core Subsystem:
7055
7056Support for big-endian systems has been implemented.  Most of the
7057support has been invisibly added behind big-endian versions of the
7058ACPI_MOVE_* macros.
7059
7060Fixed a problem in AcpiHwDisableGpeBlock() and
7061AcpiHwClearGpeBlock() where an incorrect offset was passed to the
7062low level hardware write routine.  The offset parameter was
7063actually eliminated from the low level read/write routines because
7064they had become obsolete.
7065
7066Fixed a problem where a handler object was deleted twice during
7067the removal of a fixed event handler.
7068
7069
70702) Linux:
7071
7072A fix for SMP systems with link devices was contributed by
7073
7074Compaq's Dan Zink.
7075
7076(2.5) Return whether we handled the interrupt in our IRQ handler.
7077(Linux ISRs no longer return void, so we can propagate the handler
7078return value from the ACPI CA core back to the OS.)
7079
7080
7081
70823) Documentation:
7083
7084The ACPI CA Programmer Reference has been updated to reflect new
7085interfaces and changes to existing interfaces.
7086
7087----------------------------------------
708828 March 2003.  Summary of changes for version 20030328.
7089
70901) ACPI CA Core Subsystem:
7091
7092The GPE Block Device support has been completed.  New interfaces
7093are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
7094interfaces (enable, disable, clear, getstatus) have been split
7095into separate interfaces for Fixed Events and General Purpose
7096Events (GPEs) in order to support GPE Block Devices properly.
7097
7098Fixed a problem where the error message "Failed to acquire
7099semaphore" would appear during operations on the embedded
7100controller (EC).
7101
7102Code and Data Size: Current core subsystem library sizes are shown
7103below.  These are the code and data sizes for the acpica.lib
7104produced by the Microsoft Visual C++ 6.0 compiler, and these
7105values do not include any ACPI driver or OSPM code.  The debug
7106version of the code includes the debug output trace mechanism and
7107has a much larger code and data size.  Note that these values will
7108vary depending on the efficiency of the compiler and the compiler
7109options used during generation.
7110
7111  Previous Release
7112    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
7113    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
7114  Current Release:
7115    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
7116    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
7117
7118
7119----------------------------------------
712028 February 2003.  Summary of changes for version 20030228.
7121
7122
71231) ACPI CA Core Subsystem:
7124
7125The GPE handling and dispatch code has been completely overhauled
7126in preparation for support of GPE Block Devices (ID ACPI0006).
7127This affects internal data structures and code only; there should
7128be no differences visible externally.  One new file has been
7129added, evgpeblk.c
7130
7131The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
7132fields that are used to determine the GPE block lengths.  The
7133REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
7134structures are ignored.  This is per the ACPI specification but it
7135isn't very clear.  The full 256 Block 0/1 GPEs are now supported
7136(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
7137
7138In the SCI interrupt handler, removed the read of the PM1_CONTROL
7139register to look at the SCI_EN bit.  On some machines, this read
7140causes an SMI event and greatly slows down SCI events.  (This may
7141in fact be the cause of slow battery status response on some
7142systems.)
7143
7144Fixed a problem where a store of a NULL string to a package object
7145could cause the premature deletion of the object.  This was seen
7146during execution of the battery _BIF method on some systems,
7147resulting in no battery data being returned.
7148
7149Added AcpiWalkResources interface to simplify parsing of resource
7150lists.
7151
7152Code and Data Size: Current core subsystem library sizes are shown
7153below.  These are the code and data sizes for the acpica.lib
7154produced by the Microsoft Visual C++ 6.0 compiler, and these
7155values do not include any ACPI driver or OSPM code.  The debug
7156version of the code includes the debug output trace mechanism and
7157has a much larger code and data size.  Note that these values will
7158vary depending on the efficiency of the compiler and the compiler
7159options used during generation.
7160
7161  Previous Release
7162    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7163    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7164  Current Release:
7165    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
7166    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
7167
7168
71692) Linux
7170
7171S3 fixes (Ole Rohne)
7172
7173Update ACPI PHP driver with to use new acpi_walk_resource API
7174(Bjorn Helgaas)
7175
7176Add S4BIOS support (Pavel Machek)
7177
7178Map in entire table before performing checksum (John Stultz)
7179
7180Expand the mem= cmdline to allow the specification of reserved and
7181ACPI DATA blocks (Pavel Machek)
7182
7183Never use ACPI on VISWS
7184
7185Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
7186
7187Revert a change that allowed P_BLK lengths to be 4 or 5. This is
7188causing us to think that some systems support C2 when they really
7189don't.
7190
7191Do not count processor objects for non-present CPUs (Thanks to
7192Dominik Brodowski)
7193
7194
71953) iASL Compiler:
7196
7197Fixed a problem where ASL include files could not be found and
7198opened.
7199
7200Added support for the _PDC reserved name.
7201
7202
7203----------------------------------------
720422 January 2003.  Summary of changes for version 20030122.
7205
7206
72071) ACPI CA Core Subsystem:
7208
7209Added a check for constructs of the form:  Store (Local0, Local0)
7210where Local0 is not initialized.  Apparently, some BIOS
7211programmers believe that this is a NOOP.  Since this store doesn't
7212do anything anyway, the new prototype behavior will ignore this
7213error.  This is a case where we can relax the strict checking in
7214the interpreter in the name of compatibility.
7215
7216
72172) Linux
7218
7219The AcpiSrc Source Conversion Utility has been released with the
7220Linux package for the first time.  This is the utility that is
7221used to convert the ACPI CA base source code to the Linux version.
7222
7223(Both) Handle P_BLK lengths shorter than 6 more gracefully
7224
7225(Both) Move more headers to include/acpi, and delete an unused
7226header.
7227
7228(Both) Move drivers/acpi/include directory to include/acpi
7229
7230(Both) Boot functions don't use cmdline, so don't pass it around
7231
7232(Both) Remove include of unused header (Adrian Bunk)
7233
7234(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
7235the
7236former now also includes the latter, acpiphp.h only needs the one,
7237now.
7238
7239(2.5) Make it possible to select method of bios restoring after S3
7240resume. [=> no more ugly ifdefs] (Pavel Machek)
7241
7242(2.5) Make proc write interfaces work (Pavel Machek)
7243
7244(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
7245
7246(2.5) Break out ACPI Perf code into its own module, under cpufreq
7247(Dominik Brodowski)
7248
7249(2.4) S4BIOS support (Ducrot Bruno)
7250
7251(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
7252Visinoni)
7253
7254
72553) iASL Compiler:
7256
7257Added support to disassemble SSDT and PSDTs.
7258
7259Implemented support to obtain SSDTs from the Windows registry if
7260available.
7261
7262
7263----------------------------------------
726409 January 2003.  Summary of changes for version 20030109.
7265
72661) ACPI CA Core Subsystem:
7267
7268Changed the behavior of the internal Buffer-to-String conversion
7269function.  The current ACPI specification states that the contents
7270of the buffer are "converted to a string of two-character
7271hexadecimal numbers, each separated by a space".  Unfortunately,
7272this definition is not backwards compatible with existing ACPI 1.0
7273implementations (although the behavior was not defined in the ACPI
72741.0 specification).  The new behavior simply copies data from the
7275buffer to the string until a null character is found or the end of
7276the buffer is reached.  The new String object is always null
7277terminated.  This problem was seen during the generation of _BIF
7278battery data where incorrect strings were returned for battery
7279type, etc.  This will also require an errata to the ACPI
7280specification.
7281
7282Renamed all instances of NATIVE_UINT and NATIVE_INT to
7283ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
7284
7285Copyright in all module headers (both Linux and non-Linux) has be
7286updated to 2003.
7287
7288Code and Data Size: Current core subsystem library sizes are shown
7289below.  These are the code and data sizes for the acpica.lib
7290produced by the Microsoft Visual C++ 6.0 compiler, and these
7291values do not include any ACPI driver or OSPM code.  The debug
7292version of the code includes the debug output trace mechanism and
7293has a much larger code and data size.  Note that these values will
7294vary depending on the efficiency of the compiler and the compiler
7295options used during generation.
7296
7297  Previous Release
7298    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7299    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7300  Current Release:
7301    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7302    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7303
7304
73052) Linux
7306
7307Fixed an oops on module insertion/removal (Matthew Tippett)
7308
7309(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
7310
7311(2.5) Replace pr_debug (Randy Dunlap)
7312
7313(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
7314
7315(Both) Eliminate spawning of thread from timer callback, in favor
7316of schedule_work()
7317
7318(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
7319
7320(Both) Added define for Fixed Function HW region (Matthew Wilcox)
7321
7322(Both) Add missing statics to button.c (Pavel Machek)
7323
7324Several changes have been made to the source code translation
7325utility that generates the Linux Code in order to make the code
7326more "Linux-like":
7327
7328All typedefs on structs and unions have been removed in keeping
7329with the Linux coding style.
7330
7331Removed the non-Linux SourceSafe module revision number from each
7332module header.
7333
7334Completed major overhaul of symbols to be lowercased for linux.
7335Doubled the number of symbols that are lowercased.
7336
7337Fixed a problem where identifiers within procedure headers and
7338within quotes were not fully lower cased (they were left with a
7339starting capital.)
7340
7341Some C macros whose only purpose is to allow the generation of 16-
7342bit code are now completely removed in the Linux code, increasing
7343readability and maintainability.
7344
7345----------------------------------------
7346
734712 December 2002.  Summary of changes for version 20021212.
7348
7349
73501) ACPI CA Core Subsystem:
7351
7352Fixed a problem where the creation of a zero-length AML Buffer
7353would cause a fault.
7354
7355Fixed a problem where a Buffer object that pointed to a static AML
7356buffer (in an ACPI table) could inadvertently be deleted, causing
7357memory corruption.
7358
7359Fixed a problem where a user buffer (passed in to the external
7360ACPI CA interfaces) could be overwritten if the buffer was too
7361small to complete the operation, causing memory corruption.
7362
7363Fixed a problem in the Buffer-to-String conversion code where a
7364string of length one was always returned, regardless of the size
7365of the input Buffer object.
7366
7367Removed the NATIVE_CHAR data type across the entire source due to
7368lack of need and lack of consistent use.
7369
7370Code and Data Size: Current core subsystem library sizes are shown
7371below.  These are the code and data sizes for the acpica.lib
7372produced by the Microsoft Visual C++ 6.0 compiler, and these
7373values do not include any ACPI driver or OSPM code.  The debug
7374version of the code includes the debug output trace mechanism and
7375has a much larger code and data size.  Note that these values will
7376vary depending on the efficiency of the compiler and the compiler
7377options used during generation.
7378
7379  Previous Release
7380    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
7381    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
7382  Current Release:
7383    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7384    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7385
7386
7387----------------------------------------
738805 December 2002.  Summary of changes for version 20021205.
7389
73901) ACPI CA Core Subsystem:
7391
7392Fixed a problem where a store to a String or Buffer object could
7393cause corruption of the DSDT if the object type being stored was
7394the same as the target object type and the length of the object
7395being stored was equal to or smaller than the original (existing)
7396target object.  This was seen to cause corruption of battery _BIF
7397buffers if the _BIF method modified the buffer on the fly.
7398
7399Fixed a problem where an internal error was generated if a control
7400method invocation was used in an OperationRegion, Buffer, or
7401Package declaration.  This was caused by the deferred parsing of
7402the control method and thus the deferred creation of the internal
7403method object.  The solution to this problem was to create the
7404internal method object at the moment the method is encountered in
7405the first pass - so that subsequent references to the method will
7406able to obtain the required parameter count and thus properly
7407parse the method invocation.  This problem presented itself as an
7408AE_AML_INTERNAL during the pass 1 parse phase during table load.
7409
7410Fixed a problem where the internal String object copy routine did
7411not always allocate sufficient memory for the target String object
7412and caused memory corruption.  This problem was seen to cause
7413"Allocation already present in list!" errors as memory allocation
7414became corrupted.
7415
7416Implemented a new function for the evaluation of namespace objects
7417that allows the specification of the allowable return object
7418types.  This simplifies a lot of code that checks for a return
7419object of one or more specific objects returned from the
7420evaluation (such as _STA, etc.)  This may become and external
7421function if it would be useful to ACPI-related drivers.
7422
7423Completed another round of prefixing #defines with "ACPI_" for
7424clarity.
7425
7426Completed additional code restructuring to allow more modular
7427linking for iASL compiler and AcpiExec.  Several files were split
7428creating new files.  New files:  nsparse.c dsinit.c evgpe.c
7429
7430Implemented an abort mechanism to terminate an executing control
7431method via the AML debugger.  This feature is useful for debugging
7432control methods that depend (wait) for specific hardware
7433responses.
7434
7435Code and Data Size: Current core subsystem library sizes are shown
7436below.  These are the code and data sizes for the acpica.lib
7437produced by the Microsoft Visual C++ 6.0 compiler, and these
7438values do not include any ACPI driver or OSPM code.  The debug
7439version of the code includes the debug output trace mechanism and
7440has a much larger code and data size.  Note that these values will
7441vary depending on the efficiency of the compiler and the compiler
7442options used during generation.
7443
7444  Previous Release
7445    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7446    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
7447  Current Release:
7448    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
7449    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
7450
7451
74522) iASL Compiler/Disassembler
7453
7454Fixed a compiler code generation problem for "Interrupt" Resource
7455Descriptors.  If specified in the ASL, the optional "Resource
7456Source Index" and "Resource Source" fields were not inserted into
7457the correct location within the AML resource descriptor, creating
7458an invalid descriptor.
7459
7460Fixed a disassembler problem for "Interrupt" resource descriptors.
7461The optional "Resource Source Index" and "Resource Source" fields
7462were ignored.
7463
7464
7465----------------------------------------
746622 November 2002.  Summary of changes for version 20021122.
7467
7468
74691) ACPI CA Core Subsystem:
7470
7471Fixed a reported problem where an object stored to a Method Local
7472or Arg was not copied to a new object during the store - the
7473object pointer was simply copied to the Local/Arg.  This caused
7474all subsequent operations on the Local/Arg to also affect the
7475original source of the store operation.
7476
7477Fixed a problem where a store operation to a Method Local or Arg
7478was not completed properly if the Local/Arg contained a reference
7479(from RefOf) to a named field.  The general-purpose store-to-
7480namespace-node code is now used so that this case is handled
7481automatically.
7482
7483Fixed a problem where the internal object copy routine would cause
7484a protection fault if the object being copied was a Package and
7485contained either 1) a NULL package element or 2) a nested sub-
7486package.
7487
7488Fixed a problem with the GPE initialization that resulted from an
7489ambiguity in the ACPI specification.  One section of the
7490specification states that both the address and length of the GPE
7491block must be zero if the block is not supported.  Another section
7492implies that only the address need be zero if the block is not
7493supported.  The code has been changed so that both the address and
7494the length must be non-zero to indicate a valid GPE block (i.e.,
7495if either the address or the length is zero, the GPE block is
7496invalid.)
7497
7498Code and Data Size: Current core subsystem library sizes are shown
7499below.  These are the code and data sizes for the acpica.lib
7500produced by the Microsoft Visual C++ 6.0 compiler, and these
7501values do not include any ACPI driver or OSPM code.  The debug
7502version of the code includes the debug output trace mechanism and
7503has a much larger code and data size.  Note that these values will
7504vary depending on the efficiency of the compiler and the compiler
7505options used during generation.
7506
7507  Previous Release
7508    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
7509    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
7510  Current Release:
7511    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7512    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
7513
7514
75152) Linux
7516
7517Cleaned up EC driver. Exported an external EC read/write
7518interface. By going through this, other drivers (most notably
7519sonypi) will be able to serialize access to the EC.
7520
7521
75223) iASL Compiler/Disassembler
7523
7524Implemented support to optionally generate include files for both
7525ASM and C (the -i switch).  This simplifies BIOS development by
7526automatically creating include files that contain external
7527declarations for the symbols that are created within the
7528
7529(optionally generated) ASM and C AML source files.
7530
7531
7532----------------------------------------
753315 November 2002.  Summary of changes for version 20021115.
7534
75351) ACPI CA Core Subsystem:
7536
7537Fixed a memory leak problem where an error during resolution of
7538
7539method arguments during a method invocation from another method
7540failed to cleanup properly by deleting all successfully resolved
7541argument objects.
7542
7543Fixed a problem where the target of the Index() operator was not
7544correctly constructed if the source object was a package.  This
7545problem has not been detected because the use of a target operand
7546with Index() is very rare.
7547
7548Fixed a problem with the Index() operator where an attempt was
7549made to delete the operand objects twice.
7550
7551Fixed a problem where an attempt was made to delete an operand
7552twice during execution of the CondRefOf() operator if the target
7553did not exist.
7554
7555Implemented the first of perhaps several internal create object
7556functions that create and initialize a specific object type.  This
7557consolidates duplicated code wherever the object is created, thus
7558shrinking the size of the subsystem.
7559
7560Implemented improved debug/error messages for errors that occur
7561during nested method invocations.  All executing method pathnames
7562are displayed (with the error) as the call stack is unwound - thus
7563simplifying debug.
7564
7565Fixed a problem introduced in the 10/02 release that caused
7566premature deletion of a buffer object if a buffer was used as an
7567ASL operand where an integer operand is required (Thus causing an
7568implicit object conversion from Buffer to Integer.)  The change in
7569the 10/02 release was attempting to fix a memory leak (albeit
7570incorrectly.)
7571
7572Code and Data Size: Current core subsystem library sizes are shown
7573below.  These are the code and data sizes for the acpica.lib
7574produced by the Microsoft Visual C++ 6.0 compiler, and these
7575values do not include any ACPI driver or OSPM code.  The debug
7576version of the code includes the debug output trace mechanism and
7577has a much larger code and data size.  Note that these values will
7578vary depending on the efficiency of the compiler and the compiler
7579options used during generation.
7580
7581  Previous Release
7582    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
7583    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
7584  Current Release:
7585    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
7586    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
7587
7588
75892) Linux
7590
7591Changed the implementation of the ACPI semaphores to use down()
7592instead of down_interruptable().  It is important that the
7593execution of ACPI control methods not be interrupted by signals.
7594Methods must run to completion, or the system may be left in an
7595unknown/unstable state.
7596
7597Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
7598(Shawn Starr)
7599
7600
76013) iASL Compiler/Disassembler
7602
7603
7604Changed the default location of output files.  All output files
7605are now placed in the current directory by default instead of in
7606the directory of the source file.  This change may affect some
7607existing makefiles, but it brings the behavior of the compiler in
7608line with other similar tools.  The location of the output files
7609can be overridden with the -p command line switch.
7610
7611
7612----------------------------------------
761311 November 2002.  Summary of changes for version 20021111.
7614
7615
76160) ACPI Specification 2.0B is released and is now available at:
7617http://www.acpi.info/index.html
7618
7619
76201) ACPI CA Core Subsystem:
7621
7622Implemented support for the ACPI 2.0 SMBus Operation Regions.
7623This includes the early detection and handoff of the request to
7624the SMBus region handler (avoiding all of the complex field
7625support code), and support for the bidirectional return packet
7626from an SMBus write operation.  This paves the way for the
7627development of SMBus drivers in each host operating system.
7628
7629Fixed a problem where the semaphore WAIT_FOREVER constant was
7630defined as 32 bits, but must be 16 bits according to the ACPI
7631specification.  This had the side effect of causing ASL
7632Mutex/Event timeouts even though the ASL code requested a wait
7633forever.  Changed all internal references to the ACPI timeout
7634parameter to 16 bits to prevent future problems.  Changed the name
7635of WAIT_FOREVER to ACPI_WAIT_FOREVER.
7636
7637Code and Data Size: Current core subsystem library sizes are shown
7638below.  These are the code and data sizes for the acpica.lib
7639produced by the Microsoft Visual C++ 6.0 compiler, and these
7640values do not include any ACPI driver or OSPM code.  The debug
7641version of the code includes the debug output trace mechanism and
7642has a much larger code and data size.  Note that these values will
7643vary depending on the efficiency of the compiler and the compiler
7644options used during generation.
7645
7646  Previous Release
7647    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7648    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
7649  Current Release:
7650    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
7651    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
7652
7653
76542) Linux
7655
7656Module loading/unloading fixes (John Cagle)
7657
7658
76593) iASL Compiler/Disassembler
7660
7661Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
7662
7663Implemented support for the disassembly of all SMBus protocol
7664keywords (SMBQuick, SMBWord, etc.)
7665
7666----------------------------------------
766701 November 2002.  Summary of changes for version 20021101.
7668
7669
76701) ACPI CA Core Subsystem:
7671
7672Fixed a problem where platforms that have a GPE1 block but no GPE0
7673block were not handled correctly.  This resulted in a "GPE
7674overlap" error message.  GPE0 is no longer required.
7675
7676Removed code added in the previous release that inserted nodes
7677into the namespace in alphabetical order.  This caused some side-
7678effects on various machines.  The root cause of the problem is
7679still under investigation since in theory, the internal ordering
7680of the namespace nodes should not matter.
7681
7682
7683Enhanced error reporting for the case where a named object is not
7684found during control method execution.  The full ACPI namepath
7685(name reference) of the object that was not found is displayed in
7686this case.
7687
7688Note: as a result of the overhaul of the namespace object types in
7689the previous release, the namespace nodes for the predefined
7690scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
7691instead of ACPI_TYPE_ANY.  This simplifies the namespace
7692management code but may affect code that walks the namespace tree
7693looking for specific object types.
7694
7695Code and Data Size: Current core subsystem library sizes are shown
7696below.  These are the code and data sizes for the acpica.lib
7697produced by the Microsoft Visual C++ 6.0 compiler, and these
7698values do not include any ACPI driver or OSPM code.  The debug
7699version of the code includes the debug output trace mechanism and
7700has a much larger code and data size.  Note that these values will
7701vary depending on the efficiency of the compiler and the compiler
7702options used during generation.
7703
7704  Previous Release
7705    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
7706    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
7707  Current Release:
7708    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7709    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
7710
7711
77122) Linux
7713
7714Fixed a problem introduced in the previous release where the
7715Processor and Thermal objects were not recognized and installed in
7716/proc.  This was related to the scope type change described above.
7717
7718
77193) iASL Compiler/Disassembler
7720
7721Implemented the -g option to get all of the required ACPI tables
7722from the registry and save them to files (Windows version of the
7723compiler only.)  The required tables are the FADT, FACS, and DSDT.
7724
7725Added ACPI table checksum validation during table disassembly in
7726order to catch corrupted tables.
7727
7728
7729----------------------------------------
773022 October 2002.  Summary of changes for version 20021022.
7731
77321) ACPI CA Core Subsystem:
7733
7734Implemented a restriction on the Scope operator that the target
7735must already exist in the namespace at the time the operator is
7736encountered (during table load or method execution).  In other
7737words, forward references are not allowed and Scope() cannot
7738create a new object. This changes the previous behavior where the
7739interpreter would create the name if not found.  This new behavior
7740correctly enables the search-to-root algorithm during namespace
7741lookup of the target name.  Because of this upsearch, this fixes
7742the known Compaq _SB_.OKEC problem and makes both the AML
7743interpreter and iASL compiler compatible with other ACPI
7744implementations.
7745
7746Completed a major overhaul of the internal ACPI object types for
7747the ACPI Namespace and the associated operand objects.  Many of
7748these types had become obsolete with the introduction of the two-
7749pass namespace load.  This cleanup simplifies the code and makes
7750the entire namespace load mechanism much clearer and easier to
7751understand.
7752
7753Improved debug output for tracking scope opening/closing to help
7754diagnose scoping issues.  The old scope name as well as the new
7755scope name are displayed.  Also improved error messages for
7756problems with ASL Mutex objects and error messages for GPE
7757problems.
7758
7759Cleaned up the namespace dump code, removed obsolete code.
7760
7761All string output (for all namespace/object dumps) now uses the
7762common ACPI string output procedure which handles escapes properly
7763and does not emit non-printable characters.
7764
7765Fixed some issues with constants in the 64-bit version of the
7766local C library (utclib.c)
7767
7768
77692) Linux
7770
7771EC Driver:  No longer attempts to acquire the Global Lock at
7772interrupt level.
7773
7774
77753) iASL Compiler/Disassembler
7776
7777Implemented ACPI 2.0B grammar change that disallows all Type 1 and
77782 opcodes outside of a control method.  This means that the
7779"executable" operators (versus the "namespace" operators) cannot
7780be used at the table level; they can only be used within a control
7781method.
7782
7783Implemented the restriction on the Scope() operator where the
7784target must already exist in the namespace at the time the
7785operator is encountered (during ASL compilation). In other words,
7786forward references are not allowed and Scope() cannot create a new
7787object.  This makes the iASL compiler compatible with other ACPI
7788implementations and makes the Scope() implementation adhere to the
7789ACPI specification.
7790
7791Fixed a problem where namepath optimization for the Alias operator
7792was optimizing the wrong path (of the two namepaths.)  This caused
7793a "Missing alias link" error message.
7794
7795Fixed a problem where an "unknown reserved name" warning could be
7796incorrectly generated for names like "_SB" when the trailing
7797underscore is not used in the original ASL.
7798
7799Fixed a problem where the reserved name check did not handle
7800NamePaths with multiple NameSegs correctly.  The first nameseg of
7801the NamePath was examined instead of the last NameSeg.
7802
7803
7804----------------------------------------
7805
780602 October 2002.  Summary of changes for this release.
7807
7808
78091) ACPI CA Core Subsystem version 20021002:
7810
7811Fixed a problem where a store/copy of a string to an existing
7812string did not always set the string length properly in the String
7813object.
7814
7815Fixed a reported problem with the ToString operator where the
7816behavior was identical to the ToHexString operator instead of just
7817simply converting a raw buffer to a string data type.
7818
7819Fixed a problem where CopyObject and the other "explicit"
7820conversion operators were not updating the internal namespace node
7821type as part of the store operation.
7822
7823Fixed a memory leak during implicit source operand conversion
7824where the original object was not deleted if it was converted to a
7825new object of a different type.
7826
7827Enhanced error messages for all problems associated with namespace
7828lookups.  Common procedure generates and prints the lookup name as
7829well as the formatted status.
7830
7831Completed implementation of a new design for the Alias support
7832within the namespace.  The existing design did not handle the case
7833where a new object was assigned to one of the two names due to the
7834use of an explicit conversion operator, resulting in the two names
7835pointing to two different objects.  The new design simply points
7836the Alias name to the original name node - not to the object.
7837This results in a level of indirection that must be handled in the
7838name resolution mechanism.
7839
7840Code and Data Size: Current core subsystem library sizes are shown
7841below.  These are the code and data sizes for the acpica.lib
7842produced by the Microsoft Visual C++ 6.0 compiler, and these
7843values do not include any ACPI driver or OSPM code.  The debug
7844version of the code includes the debug output trace mechanism and
7845has a larger code and data size.  Note that these values will vary
7846depending on the efficiency of the compiler and the compiler
7847options used during generation.
7848
7849  Previous Release
7850    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
7851    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
7852  Current Release:
7853    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
7854    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
7855
7856
78572) Linux
7858
7859Initialize thermal driver's timer before it is used. (Knut
7860Neumann)
7861
7862Allow handling negative celsius values. (Kochi Takayoshi)
7863
7864Fix thermal management and make trip points. R/W (Pavel Machek)
7865
7866Fix /proc/acpi/sleep. (P. Christeas)
7867
7868IA64 fixes. (David Mosberger)
7869
7870Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
7871
7872Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
7873Brodowski)
7874
7875
78763) iASL Compiler/Disassembler
7877
7878Clarified some warning/error messages.
7879
7880
7881----------------------------------------
788218 September 2002.  Summary of changes for this release.
7883
7884
78851) ACPI CA Core Subsystem version 20020918:
7886
7887Fixed a reported problem with reference chaining (via the Index()
7888and RefOf() operators) in the ObjectType() and SizeOf() operators.
7889The definition of these operators includes the dereferencing of
7890all chained references to return information on the base object.
7891
7892Fixed a problem with stores to indexed package elements - the
7893existing code would not complete the store if an "implicit
7894conversion" was not performed.  In other words, if the existing
7895object (package element) was to be replaced completely, the code
7896didn't handle this case.
7897
7898Relaxed typechecking on the ASL "Scope" operator to allow the
7899target name to refer to an object of type Integer, String, or
7900Buffer, in addition to the scoping object types (Device,
7901predefined Scopes, Processor, PowerResource, and ThermalZone.)
7902This allows existing AML code that has workarounds for a bug in
7903Windows to function properly.  A warning is issued, however.  This
7904affects both the AML interpreter and the iASL compiler. Below is
7905an example of this type of ASL code:
7906
7907      Name(DEB,0x00)
7908      Scope(DEB)
7909      {
7910
7911Fixed some reported problems with 64-bit integer support in the
7912local implementation of C library functions (clib.c)
7913
7914
79152) Linux
7916
7917Use ACPI fix map region instead of IOAPIC region, since it is
7918undefined in non-SMP.
7919
7920Ensure that the SCI has the proper polarity and trigger, even on
7921systems that do not have an interrupt override entry in the MADT.
7922
79232.5 big driver reorganization (Pat Mochel)
7924
7925Use early table mapping code from acpitable.c (Andi Kleen)
7926
7927New blacklist entries (Andi Kleen)
7928
7929Blacklist improvements. Split blacklist code out into a separate
7930file. Move checking the blacklist to very early. Previously, we
7931would use ACPI tables, and then halfway through init, check the
7932blacklist -- too late. Now, it's early enough to completely fall-
7933back to non-ACPI.
7934
7935
79363) iASL Compiler/Disassembler version 20020918:
7937
7938Fixed a problem where the typechecking code didn't know that an
7939alias could point to a method.  In other words, aliases were not
7940being dereferenced during typechecking.
7941
7942
7943----------------------------------------
794429 August 2002.  Summary of changes for this release.
7945
79461) ACPI CA Core Subsystem Version 20020829:
7947
7948If the target of a Scope() operator already exists, it must be an
7949object type that actually opens a scope -- such as a Device,
7950Method, Scope, etc.  This is a fatal runtime error.  Similar error
7951check has been added to the iASL compiler also.
7952
7953Tightened up the namespace load to disallow multiple names in the
7954same scope.  This previously was allowed if both objects were of
7955the same type.  (i.e., a lookup was the same as entering a new
7956name).
7957
7958
79592) Linux
7960
7961Ensure that the ACPI interrupt has the proper trigger and
7962polarity.
7963
7964local_irq_disable is extraneous. (Matthew Wilcox)
7965
7966Make "acpi=off" actually do what it says, and not use the ACPI
7967interpreter *or* the tables.
7968
7969Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
7970Takayoshi)
7971
7972
79733) iASL Compiler/Disassembler  Version 20020829:
7974
7975Implemented namepath optimization for name declarations.  For
7976example, a declaration like "Method (\_SB_.ABCD)" would get
7977optimized to "Method (ABCD)" if the declaration is within the
7978\_SB_ scope.  This optimization is in addition to the named
7979reference path optimization first released in the previous
7980version. This would seem to complete all possible optimizations
7981for namepaths within the ASL/AML.
7982
7983If the target of a Scope() operator already exists, it must be an
7984object type that actually opens a scope -- such as a Device,
7985Method, Scope, etc.
7986
7987Implemented a check and warning for unreachable code in the same
7988block below a Return() statement.
7989
7990Fixed a problem where the listing file was not generated if the
7991compiler aborted if the maximum error count was exceeded (200).
7992
7993Fixed a problem where the typechecking of method return values was
7994broken.  This includes the check for a return value when the
7995method is invoked as a TermArg (a return value is expected.)
7996
7997Fixed a reported problem where EOF conditions during a quoted
7998string or comment caused a fault.
7999
8000
8001----------------------------------------
800215 August 2002.  Summary of changes for this release.
8003
80041) ACPI CA Core Subsystem Version 20020815:
8005
8006Fixed a reported problem where a Store to a method argument that
8007contains a reference did not perform the indirect store correctly.
8008This problem was created during the conversion to the new
8009reference object model - the indirect store to a method argument
8010code was not updated to reflect the new model.
8011
8012Reworked the ACPI mode change code to better conform to ACPI 2.0,
8013handle corner cases, and improve code legibility (Kochi Takayoshi)
8014
8015Fixed a problem with the pathname parsing for the carat (^)
8016prefix.  The heavy use of the carat operator by the new namepath
8017optimization in the iASL compiler uncovered a problem with the AML
8018interpreter handling of this prefix.  In the case where one or
8019more carats precede a single nameseg, the nameseg was treated as
8020standalone and the search rule (to root) was inadvertently
8021applied.  This could cause both the iASL compiler and the
8022interpreter to find the wrong object or to miss the error that
8023should occur if the object does not exist at that exact pathname.
8024
8025Found and fixed the problem where the HP Pavilion DSDT would not
8026load.  This was a relatively minor tweak to the table loading code
8027(a problem caused by the unexpected encounter with a method
8028invocation not within a control method), but it does not solve the
8029overall issue of the execution of AML code at the table level.
8030This investigation is still ongoing.
8031
8032Code and Data Size: Current core subsystem library sizes are shown
8033below.  These are the code and data sizes for the acpica.lib
8034produced by the Microsoft Visual C++ 6.0 compiler, and these
8035values do not include any ACPI driver or OSPM code.  The debug
8036version of the code includes the debug output trace mechanism and
8037has a larger code and data size.  Note that these values will vary
8038depending on the efficiency of the compiler and the compiler
8039options used during generation.
8040
8041  Previous Release
8042    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
8043    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
8044  Current Release:
8045    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
8046    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
8047
8048
80492) Linux
8050
8051Remove redundant slab.h include (Brad Hards)
8052
8053Fix several bugs in thermal.c (Herbert Nachtnebel)
8054
8055Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
8056
8057Change acpi_system_suspend to use updated irq functions (Pavel
8058Machek)
8059
8060Export acpi_get_firmware_table (Matthew Wilcox)
8061
8062Use proper root proc entry for ACPI (Kochi Takayoshi)
8063
8064Fix early-boot table parsing (Bjorn Helgaas)
8065
8066
80673) iASL Compiler/Disassembler
8068
8069Reworked the compiler options to make them more consistent and to
8070use two-letter options where appropriate.  We were running out of
8071sensible letters.   This may break some makefiles, so check the
8072current options list by invoking the compiler with no parameters.
8073
8074Completed the design and implementation of the ASL namepath
8075optimization option for the compiler.  This option optimizes all
8076references to named objects to the shortest possible path.  The
8077first attempt tries to utilize a single nameseg (4 characters) and
8078the "search-to-root" algorithm used by the interpreter.  If that
8079cannot be used (because either the name is not in the search path
8080or there is a conflict with another object with the same name),
8081the pathname is optimized using the carat prefix (usually a
8082shorter string than specifying the entire path from the root.)
8083
8084Implemented support to obtain the DSDT from the Windows registry
8085(when the disassembly option is specified with no input file).
8086Added this code as the implementation for AcpiOsTableOverride in
8087the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
8088utility) to scan memory for the DSDT to the AcpiOsTableOverride
8089function in the DOS OSL to make the disassembler truly OS
8090independent.
8091
8092Implemented a new option to disassemble and compile in one step.
8093When used without an input filename, this option will grab the
8094DSDT from the local machine, disassemble it, and compile it in one
8095step.
8096
8097Added a warning message for invalid escapes (a backslash followed
8098by any character other than the allowable escapes).  This catches
8099the quoted string error "\_SB_" (which should be "\\_SB_" ).
8100
8101Also, there are numerous instances in the ACPI specification where
8102this error occurs.
8103
8104Added a compiler option to disable all optimizations.  This is
8105basically the "compatibility mode" because by using this option,
8106the AML code will come out exactly the same as other ASL
8107compilers.
8108
8109Added error messages for incorrectly ordered dependent resource
8110functions.  This includes: missing EndDependentFn macro at end of
8111dependent resource list, nested dependent function macros (both
8112start and end), and missing StartDependentFn macro.  These are
8113common errors that should be caught at compile time.
8114
8115Implemented _OSI support for the disassembler and compiler.  _OSI
8116must be included in the namespace for proper disassembly (because
8117the disassembler must know the number of arguments.)
8118
8119Added an "optimization" message type that is optional (off by
8120default).  This message is used for all optimizations - including
8121constant folding, integer optimization, and namepath optimization.
8122
8123----------------------------------------
812425 July 2002.  Summary of changes for this release.
8125
8126
81271) ACPI CA Core Subsystem Version 20020725:
8128
8129The AML Disassembler has been enhanced to produce compilable ASL
8130code and has been integrated into the iASL compiler (see below) as
8131well as the single-step disassembly for the AML debugger and the
8132disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
8133resource templates and macros are fully supported.  The
8134disassembler has been tested on over 30 different AML files,
8135producing identical AML when the resulting disassembled ASL file
8136is recompiled with the same ASL compiler.
8137
8138Modified the Resource Manager to allow zero interrupts and zero
8139dma channels during the GetCurrentResources call.  This was
8140causing problems on some platforms.
8141
8142Added the AcpiOsRedirectOutput interface to the OSL to simplify
8143output redirection for the AcpiOsPrintf and AcpiOsVprintf
8144interfaces.
8145
8146Code and Data Size: Current core subsystem library sizes are shown
8147below.  These are the code and data sizes for the acpica.lib
8148produced by the Microsoft Visual C++ 6.0 compiler, and these
8149values do not include any ACPI driver or OSPM code.  The debug
8150version of the code includes the debug output trace mechanism and
8151has a larger code and data size.  Note that these values will vary
8152depending on the efficiency of the compiler and the compiler
8153options used during generation.
8154
8155  Previous Release
8156    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
8157    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
8158  Current Release:
8159    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
8160    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
8161
8162
81632) Linux
8164
8165Fixed a panic in the EC driver (Dominik Brodowski)
8166
8167Implemented checksum of the R/XSDT itself during Linux table scan
8168(Richard Schaal)
8169
8170
81713) iASL compiler
8172
8173The AML disassembler is integrated into the compiler.  The "-d"
8174option invokes the disassembler  to completely disassemble an
8175input AML file, producing as output a text ASL file with the
8176extension ".dsl" (to avoid name collisions with existing .asl
8177source files.)  A future enhancement will allow the disassembler
8178to obtain the BIOS DSDT from the registry under Windows.
8179
8180Fixed a problem with the VendorShort and VendorLong resource
8181descriptors where an invalid AML sequence was created.
8182
8183Implemented a fix for BufferData term in the ASL parser.  It was
8184inadvertently defined twice, allowing invalid syntax to pass and
8185causing reduction conflicts.
8186
8187Fixed a problem where the Ones opcode could get converted to a
8188value of zero if "Ones" was used where a byte, word or dword value
8189was expected.  The 64-bit value is now truncated to the correct
8190size with the correct value.
8191
8192
8193
8194----------------------------------------
819502 July 2002.  Summary of changes for this release.
8196
8197
81981) ACPI CA Core Subsystem Version 20020702:
8199
8200The Table Manager code has been restructured to add several new
8201features.  Tables that are not required by the core subsystem
8202(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
8203validated in any way and are returned from AcpiGetFirmwareTable if
8204requested.  The AcpiOsTableOverride interface is now called for
8205each table that is loaded by the subsystem in order to allow the
8206host to override any table it chooses.  Previously, only the DSDT
8207could be overridden.  Added one new files, tbrsdt.c and
8208tbgetall.c.
8209
8210Fixed a problem with the conversion of internal package objects to
8211external objects (when a package is returned from a control
8212method.)  The return buffer length was set to zero instead of the
8213proper length of the package object.
8214
8215Fixed a reported problem with the use of the RefOf and DeRefOf
8216operators when passing reference arguments to control methods.  A
8217new type of Reference object is used internally for references
8218produced by the RefOf operator.
8219
8220Added additional error messages in the Resource Manager to explain
8221AE_BAD_DATA errors when they occur during resource parsing.
8222
8223Split the AcpiEnableSubsystem into two primitives to enable a
8224finer granularity initialization sequence.  These two calls should
8225be called in this order: AcpiEnableSubsystem (flags),
8226AcpiInitializeObjects (flags).  The flags parameter remains the
8227same.
8228
8229
82302) Linux
8231
8232Updated the ACPI utilities module to understand the new style of
8233fully resolved package objects that are now returned from the core
8234subsystem.  This eliminates errors of the form:
8235
8236    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
8237    acpi_utils-0430 [145] acpi_evaluate_reference:
8238        Invalid element in package (not a device reference)
8239
8240The method evaluation utility uses the new buffer allocation
8241scheme instead of calling AcpiEvaluate Object twice.
8242
8243Added support for ECDT. This allows the use of the Embedded
8244
8245Controller before the namespace has been fully initialized, which
8246is necessary for ACPI 2.0 support, and for some laptops to
8247initialize properly. (Laptops using ECDT are still rare, so only
8248limited testing was performed of the added functionality.)
8249
8250Fixed memory leaks in the EC driver.
8251
8252Eliminated a brittle code structure in acpi_bus_init().
8253
8254Eliminated the acpi_evaluate() helper function in utils.c. It is
8255no longer needed since acpi_evaluate_object can optionally
8256allocate memory for the return object.
8257
8258Implemented fix for keyboard hang when getting battery readings on
8259some systems (Stephen White)
8260
8261PCI IRQ routing update (Dominik Brodowski)
8262
8263Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
8264support
8265
8266----------------------------------------
826711 June 2002.  Summary of changes for this release.
8268
8269
82701) ACPI CA Core Subsystem Version 20020611:
8271
8272Fixed a reported problem where constants such as Zero and One
8273appearing within _PRT packages were not handled correctly within
8274the resource manager code.  Originally reported against the ASL
8275compiler because the code generator now optimizes integers to
8276their minimal AML representation (i.e. AML constants if possible.)
8277The _PRT code now handles all AML constant opcodes correctly
8278(Zero, One, Ones, Revision).
8279
8280Fixed a problem with the Concatenate operator in the AML
8281interpreter where a buffer result object was incorrectly marked as
8282not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
8283
8284All package sub-objects are now fully resolved before they are
8285returned from the external ACPI interfaces.  This means that name
8286strings are resolved to object handles, and constant operators
8287(Zero, One, Ones, Revision) are resolved to Integers.
8288
8289Implemented immediate resolution of the AML Constant opcodes
8290(Zero, One, Ones, Revision) to Integer objects upon detection
8291within the AML stream. This has simplified and reduced the
8292generated code size of the subsystem by eliminating about 10
8293switch statements for these constants (which previously were
8294contained in Reference objects.)  The complicating issues are that
8295the Zero opcode is used as a "placeholder" for unspecified
8296optional target operands and stores to constants are defined to be
8297no-ops.
8298
8299Code and Data Size: Current core subsystem library sizes are shown
8300below. These are the code and data sizes for the acpica.lib
8301produced by the Microsoft Visual C++ 6.0 compiler, and these
8302values do not include any ACPI driver or OSPM code.  The debug
8303version of the code includes the debug output trace mechanism and
8304has a larger code and data size.  Note that these values will vary
8305depending on the efficiency of the compiler and the compiler
8306options used during generation.
8307
8308  Previous Release
8309    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
8310    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
8311  Current Release:
8312    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
8313    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
8314
8315
83162) Linux
8317
8318
8319Added preliminary support for obtaining _TRA data for PCI root
8320bridges (Bjorn Helgaas).
8321
8322
83233) iASL Compiler Version X2046:
8324
8325Fixed a problem where the "_DDN" reserved name was defined to be a
8326control method with one argument.  There are no arguments, and
8327_DDN does not have to be a control method.
8328
8329Fixed a problem with the Linux version of the compiler where the
8330source lines printed with error messages were the wrong lines.
8331This turned out to be the "LF versus CR/LF" difference between
8332Windows and Unix.  This appears to be the longstanding issue
8333concerning listing output and error messages.
8334
8335Fixed a problem with the Linux version of compiler where opcode
8336names within error messages were wrong.  This was caused by a
8337slight difference in the output of the Flex tool on Linux versus
8338Windows.
8339
8340Fixed a problem with the Linux compiler where the hex output files
8341contained some garbage data caused by an internal buffer overrun.
8342
8343
8344----------------------------------------
834517 May 2002.  Summary of changes for this release.
8346
8347
83481) ACPI CA Core Subsystem Version 20020517:
8349
8350Implemented a workaround to an BIOS bug discovered on the HP
8351OmniBook where the FADT revision number and the table size are
8352inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
8353behavior is to fallback to using only the ACPI 1.0 fields of the
8354FADT if the table is too small to be a ACPI 2.0 table as claimed
8355by the revision number.  Although this is a BIOS bug, this is a
8356case where the workaround is simple enough and with no side
8357effects, so it seemed prudent to add it.  A warning message is
8358issued, however.
8359
8360Implemented minimum size checks for the fixed-length ACPI tables -
8361- the FADT and FACS, as well as consistency checks between the
8362revision number and the table size.
8363
8364Fixed a reported problem in the table override support where the
8365new table pointer was incorrectly treated as a physical address
8366instead of a logical address.
8367
8368Eliminated the use of the AE_AML_ERROR exception and replaced it
8369with more descriptive codes.
8370
8371Fixed a problem where an exception would occur if an ASL Field was
8372defined with no named Field Units underneath it (used by some
8373index fields).
8374
8375Code and Data Size: Current core subsystem library sizes are shown
8376below.  These are the code and data sizes for the acpica.lib
8377produced by the Microsoft Visual C++ 6.0 compiler, and these
8378values do not include any ACPI driver or OSPM code.  The debug
8379version of the code includes the debug output trace mechanism and
8380has a larger code and data size.  Note that these values will vary
8381depending on the efficiency of the compiler and the compiler
8382options used during generation.
8383
8384  Previous Release
8385    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
8386    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
8387  Current Release:
8388    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
8389    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
8390
8391
8392
83932) Linux
8394
8395Much work done on ACPI init (MADT and PCI IRQ routing support).
8396(Paul D. and Dominik Brodowski)
8397
8398Fix PCI IRQ-related panic on boot (Sam Revitch)
8399
8400Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
8401
8402Fix "MHz" typo (Dominik Brodowski)
8403
8404Fix RTC year 2000 issue (Dominik Brodowski)
8405
8406Preclude multiple button proc entries (Eric Brunet)
8407
8408Moved arch-specific code out of include/platform/aclinux.h
8409
84103) iASL Compiler Version X2044:
8411
8412Implemented error checking for the string used in the EISAID macro
8413(Usually used in the definition of the _HID object.)  The code now
8414strictly enforces the PnP format - exactly 7 characters, 3
8415uppercase letters and 4 hex digits.
8416
8417If a raw string is used in the definition of the _HID object
8418(instead of the EISAID macro), the string must contain all
8419alphanumeric characters (e.g., "*PNP0011" is not allowed because
8420of the asterisk.)
8421
8422Implemented checking for invalid use of ACPI reserved names for
8423most of the name creation operators (Name, Device, Event, Mutex,
8424OperationRegion, PowerResource, Processor, and ThermalZone.)
8425Previously, this check was only performed for control methods.
8426
8427Implemented an additional check on the Name operator to emit an
8428error if a reserved name that must be implemented in ASL as a
8429control method is used.  We know that a reserved name must be a
8430method if it is defined with input arguments.
8431
8432The warning emitted when a namespace object reference is not found
8433during the cross reference phase has been changed into an error.
8434The "External" directive should be used for names defined in other
8435modules.
8436
8437
84384) Tools and Utilities
8439
8440The 16-bit tools (adump16 and aexec16) have been regenerated and
8441tested.
8442
8443Fixed a problem with the output of both acpidump and adump16 where
8444the indentation of closing parentheses and brackets was not
8445
8446aligned properly with the parent block.
8447
8448
8449----------------------------------------
845003 May 2002.  Summary of changes for this release.
8451
8452
84531) ACPI CA Core Subsystem Version 20020503:
8454
8455Added support a new OSL interface that allows the host operating
8456
8457system software to override the DSDT found in the firmware -
8458AcpiOsTableOverride.  With this interface, the OSL can examine the
8459version of the firmware DSDT and replace it with a different one
8460if desired.
8461
8462Added new external interfaces for accessing ACPI registers from
8463device drivers and other system software - AcpiGetRegister and
8464AcpiSetRegister.  This was simply an externalization of the
8465existing AcpiHwBitRegister interfaces.
8466
8467Fixed a regression introduced in the previous build where the
8468ASL/AML CreateField operator always returned an error,
8469"destination must be a NS Node".
8470
8471Extended the maximum time (before failure) to successfully enable
8472ACPI mode to 3 seconds.
8473
8474Code and Data Size: Current core subsystem library sizes are shown
8475below.  These are the code and data sizes for the acpica.lib
8476produced by the Microsoft Visual C++ 6.0 compiler, and these
8477values do not include any ACPI driver or OSPM code.  The debug
8478version of the code includes the debug output trace mechanism and
8479has a larger code and data size.  Note that these values will vary
8480depending on the efficiency of the compiler and the compiler
8481options used during generation.
8482
8483  Previous Release
8484    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
8485    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
8486  Current Release:
8487    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
8488    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
8489
8490
84912) Linux
8492
8493Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
8494free. While 3 out of 4 of our in-house systems work fine, the last
8495one still hangs when testing the LAPIC timer.
8496
8497Renamed many files in 2.5 kernel release to omit "acpi_" from the
8498name.
8499
8500Added warning on boot for Presario 711FR.
8501
8502Sleep improvements (Pavel Machek)
8503
8504ACPI can now be built without CONFIG_PCI enabled.
8505
8506IA64: Fixed memory map functions (JI Lee)
8507
8508
85093) iASL Compiler Version X2043:
8510
8511Added support to allow the compiler to be integrated into the MS
8512VC++ development environment for one-button compilation of single
8513files or entire projects -- with error-to-source-line mapping.
8514
8515Implemented support for compile-time constant folding for the
8516Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
8517specification.  This allows the ASL writer to use expressions
8518instead of Integer/Buffer/String constants in terms that must
8519evaluate to constants at compile time and will also simplify the
8520emitted AML in any such sub-expressions that can be folded
8521(evaluated at compile-time.)  This increases the size of the
8522compiler significantly because a portion of the ACPI CA AML
8523interpreter is included within the compiler in order to pre-
8524evaluate constant expressions.
8525
8526
8527Fixed a problem with the "Unicode" ASL macro that caused the
8528compiler to fault.  (This macro is used in conjunction with the
8529_STR reserved name.)
8530
8531Implemented an AML opcode optimization to use the Zero, One, and
8532Ones opcodes where possible to further reduce the size of integer
8533constants and thus reduce the overall size of the generated AML
8534code.
8535
8536Implemented error checking for new reserved terms for ACPI version
85372.0A.
8538
8539Implemented the -qr option to display the current list of ACPI
8540reserved names known to the compiler.
8541
8542Implemented the -qc option to display the current list of ASL
8543operators that are allowed within constant expressions and can
8544therefore be folded at compile time if the operands are constants.
8545
8546
85474) Documentation
8548
8549Updated the Programmer's Reference for new interfaces, data types,
8550and memory allocation model options.
8551
8552Updated the iASL Compiler User Reference to apply new format and
8553add information about new features and options.
8554
8555----------------------------------------
855619 April 2002.  Summary of changes for this release.
8557
85581) ACPI CA Core Subsystem Version 20020419:
8559
8560The source code base for the Core Subsystem has been completely
8561cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
8562versions.  The Lint option files used are included in the
8563/acpi/generate/lint directory.
8564
8565Implemented enhanced status/error checking across the entire
8566Hardware manager subsystem.  Any hardware errors (reported from
8567the OSL) are now bubbled up and will abort a running control
8568method.
8569
8570
8571Fixed a problem where the per-ACPI-table integer width (32 or 64)
8572was stored only with control method nodes, causing a fault when
8573non-control method code was executed during table loading.  The
8574solution implemented uses a global variable to indicate table
8575width across the entire ACPI subsystem.  Therefore, ACPI CA does
8576not support mixed integer widths across different ACPI tables
8577(DSDT, SSDT).
8578
8579Fixed a problem where NULL extended fields (X fields) in an ACPI
85802.0 ACPI FADT caused the table load to fail.  Although the
8581existing ACPI specification is a bit fuzzy on this topic, the new
8582behavior is to fall back on a ACPI 1.0 field if the corresponding
8583ACPI 2.0 X field is zero (even though the table revision indicates
8584a full ACPI 2.0 table.)  The ACPI specification will be updated to
8585clarify this issue.
8586
8587Fixed a problem with the SystemMemory operation region handler
8588where memory was always accessed byte-wise even if the AML-
8589specified access width was larger than a byte.  This caused
8590problems on systems with memory-mapped I/O.  Memory is now
8591accessed with the width specified.  On systems that do not support
8592non-aligned transfers, a check is made to guarantee proper address
8593alignment before proceeding in order to avoid an AML-caused
8594alignment fault within the kernel.
8595
8596
8597Fixed a problem with the ExtendedIrq resource where only one byte
8598of the 4-byte Irq field was extracted.
8599
8600Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
8601function was out of date and required a rewrite.
8602
8603Code and Data Size: Current core subsystem library sizes are shown
8604below.  These are the code and data sizes for the acpica.lib
8605produced by the Microsoft Visual C++ 6.0 compiler, and these
8606values do not include any ACPI driver or OSPM code.  The debug
8607version of the code includes the debug output trace mechanism and
8608has a larger code and data size.  Note that these values will vary
8609depending on the efficiency of the compiler and the compiler
8610options used during generation.
8611
8612  Previous Release
8613    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
8614    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
8615  Current Release:
8616    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
8617    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
8618
8619
86202) Linux
8621
8622PCI IRQ routing fixes (Dominik Brodowski)
8623
8624
86253) iASL Compiler Version X2042:
8626
8627Implemented an additional compile-time error check for a field
8628unit whose size + minimum access width would cause a run-time
8629access beyond the end-of-region.  Previously, only the field size
8630itself was checked.
8631
8632The Core subsystem and iASL compiler now share a common parse
8633object in preparation for compile-time evaluation of the type
86343/4/5 ASL operators.
8635
8636
8637----------------------------------------
8638Summary of changes for this release: 03_29_02
8639
86401) ACPI CA Core Subsystem Version 20020329:
8641
8642Implemented support for late evaluation of TermArg operands to
8643Buffer and Package objects.  This allows complex expressions to be
8644used in the declarations of these object types.
8645
8646Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
86471.0, if the field was larger than 32 bits, it was returned as a
8648buffer - otherwise it was returned as an integer.  In ACPI 2.0,
8649the field is returned as a buffer only if the field is larger than
865064 bits.  The TableRevision is now considered when making this
8651conversion to avoid incompatibility with existing ASL code.
8652
8653Implemented logical addressing for AcpiOsGetRootPointer.  This
8654allows an RSDP with either a logical or physical address.  With
8655this support, the host OS can now override all ACPI tables with
8656one logical RSDP.  Includes implementation of  "typed" pointer
8657support to allow a common data type for both physical and logical
8658pointers internally.  This required a change to the
8659AcpiOsGetRootPointer interface.
8660
8661Implemented the use of ACPI 2.0 Generic Address Structures for all
8662GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
8663mapped I/O for these ACPI features.
8664
8665Initialization now ignores not only non-required tables (All
8666tables other than the FADT, FACS, DSDT, and SSDTs), but also does
8667not validate the table headers of unrecognized tables.
8668
8669Fixed a problem where a notify handler could only be
8670installed/removed on an object of type Device.  All "notify"
8671
8672objects are now supported -- Devices, Processor, Power, and
8673Thermal.
8674
8675Removed most verbosity from the ACPI_DB_INFO debug level.  Only
8676critical information is returned when this debug level is enabled.
8677
8678Code and Data Size: Current core subsystem library sizes are shown
8679below.  These are the code and data sizes for the acpica.lib
8680produced by the Microsoft Visual C++ 6.0 compiler, and these
8681values do not include any ACPI driver or OSPM code.  The debug
8682version of the code includes the debug output trace mechanism and
8683has a larger code and data size.  Note that these values will vary
8684depending on the efficiency of the compiler and the compiler
8685options used during generation.
8686
8687  Previous Release
8688    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
8689    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
8690  Current Release:
8691    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
8692    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
8693
8694
86952) Linux:
8696
8697The processor driver (acpi_processor.c) now fully supports ACPI
86982.0-based processor performance control (e.g. Intel(R)
8699SpeedStep(TM) technology) Note that older laptops that only have
8700the Intel "applet" interface are not supported through this.  The
8701'limit' and 'performance' interface (/proc) are fully functional.
8702[Note that basic policy for controlling performance state
8703transitions will be included in the next version of ospmd.]  The
8704idle handler was modified to more aggressively use C2, and PIIX4
8705errata handling underwent a complete overhaul (big thanks to
8706Dominik Brodowski).
8707
8708Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
8709based devices in the ACPI namespace are now dynamically bound
8710(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
8711This allows, among other things, ACPI to resolve bus numbers for
8712subordinate PCI bridges.
8713
8714Enhanced PCI IRQ routing to get the proper bus number for _PRT
8715entries defined underneath PCI bridges.
8716
8717Added IBM 600E to bad bios list due to invalid _ADR value for
8718PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
8719
8720In the process of adding full MADT support (e.g. IOAPIC) for IA32
8721(acpi.c, mpparse.c) -- stay tuned.
8722
8723Added back visual differentiation between fixed-feature and
8724control-method buttons in dmesg.  Buttons are also subtyped (e.g.
8725button/power/PWRF) to simplify button identification.
8726
8727We no longer use -Wno-unused when compiling debug. Please ignore
8728any "_THIS_MODULE defined but not used" messages.
8729
8730Can now shut down the system using "magic sysrq" key.
8731
8732
87333) iASL Compiler version 2041:
8734
8735Fixed a problem where conversion errors for hex/octal/decimal
8736constants were not reported.
8737
8738Implemented a fix for the General Register template Address field.
8739This field was 8 bits when it should be 64.
8740
8741Fixed a problem where errors/warnings were no longer being emitted
8742within the listing output file.
8743
8744Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
8745exactly 4 characters, alphanumeric only.
8746
8747
8748
8749
8750----------------------------------------
8751Summary of changes for this release: 03_08_02
8752
8753
87541) ACPI CA Core Subsystem Version 20020308:
8755
8756Fixed a problem with AML Fields where the use of the "AccessAny"
8757keyword could cause an interpreter error due to attempting to read
8758or write beyond the end of the parent Operation Region.
8759
8760Fixed a problem in the SystemMemory Operation Region handler where
8761an attempt was made to map memory beyond the end of the region.
8762This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
8763errors on some Linux systems.
8764
8765Fixed a problem where the interpreter/namespace "search to root"
8766algorithm was not functioning for some object types.  Relaxed the
8767internal restriction on the search to allow upsearches for all
8768external object types as well as most internal types.
8769
8770
87712) Linux:
8772
8773We now use safe_halt() macro versus individual calls to sti | hlt.
8774
8775Writing to the processor limit interface should now work. "echo 1"
8776will increase the limit, 2 will decrease, and 0 will reset to the
8777
8778default.
8779
8780
87813) ASL compiler:
8782
8783Fixed segfault on Linux version.
8784
8785
8786----------------------------------------
8787Summary of changes for this release: 02_25_02
8788
87891) ACPI CA Core Subsystem:
8790
8791
8792Fixed a problem where the GPE bit masks were not initialized
8793properly, causing erratic GPE behavior.
8794
8795Implemented limited support for multiple calling conventions.  The
8796code can be generated with either the VPL (variable parameter
8797list, or "C") convention, or the FPL (fixed parameter list, or
8798"Pascal") convention.  The core subsystem is about 3.4% smaller
8799when generated with FPL.
8800
8801
88022) Linux
8803
8804Re-add some /proc/acpi/event functionality that was lost during
8805the rewrite
8806
8807Resolved issue with /proc events for fixed-feature buttons showing
8808up as the system device.
8809
8810Fixed checks on C2/C3 latencies to be inclusive of maximum values.
8811
8812Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
8813
8814Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
8815
8816Fixed limit interface & usage to fix bugs with passive cooling
8817hysterisis.
8818
8819Restructured PRT support.
8820
8821
8822----------------------------------------
8823Summary of changes for this label: 02_14_02
8824
8825
88261) ACPI CA Core Subsystem:
8827
8828Implemented support in AcpiLoadTable to allow loading of FACS and
8829FADT tables.
8830
8831Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
8832been removed.  All 64-bit platforms should be migrated to the ACPI
88332.0 tables.  The actbl71.h header has been removed from the source
8834tree.
8835
8836All C macros defined within the subsystem have been prefixed with
8837"ACPI_" to avoid collision with other system include files.
8838
8839Removed the return value for the two AcpiOsPrint interfaces, since
8840it is never used and causes lint warnings for ignoring the return
8841value.
8842
8843Added error checking to all internal mutex acquire and release
8844calls.  Although a failure from one of these interfaces is
8845probably a fatal system error, these checks will cause the
8846immediate abort of the currently executing method or interface.
8847
8848Fixed a problem where the AcpiSetCurrentResources interface could
8849fault.  This was a side effect of the deployment of the new memory
8850allocation model.
8851
8852Fixed a couple of problems with the Global Lock support introduced
8853in the last major build.  The "common" (1.0/2.0) internal FACS was
8854being overwritten with the FACS signature and clobbering the
8855Global Lock pointer.  Also, the actual firmware FACS was being
8856unmapped after construction of the "common" FACS, preventing
8857access to the actual Global Lock field within it.  The "common"
8858internal FACS is no longer installed as an actual ACPI table; it
8859is used simply as a global.
8860
8861Code and Data Size: Current core subsystem library sizes are shown
8862below.  These are the code and data sizes for the acpica.lib
8863produced by the Microsoft Visual C++ 6.0 compiler, and these
8864values do not include any ACPI driver or OSPM code.  The debug
8865version of the code includes the debug output trace mechanism and
8866has a larger code and data size.  Note that these values will vary
8867depending on the efficiency of the compiler and the compiler
8868options used during generation.
8869
8870  Previous Release (02_07_01)
8871    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
8872    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
8873  Current Release:
8874    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
8875    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
8876
8877
88782) Linux
8879
8880Updated Linux-specific code for core macro and OSL interface
8881changes described above.
8882
8883Improved /proc/acpi/event. It now can be opened only once and has
8884proper poll functionality.
8885
8886Fixed and restructured power management (acpi_bus).
8887
8888Only create /proc "view by type" when devices of that class exist.
8889
8890Fixed "charging/discharging" bug (and others) in acpi_battery.
8891
8892Improved thermal zone code.
8893
8894
88953) ASL Compiler, version X2039:
8896
8897
8898Implemented the new compiler restriction on ASL String hex/octal
8899escapes to non-null, ASCII values.  An error results if an invalid
8900value is used.  (This will require an ACPI 2.0 specification
8901change.)
8902
8903AML object labels that are output to the optional C and ASM source
8904are now prefixed with both the ACPI table signature and table ID
8905to help guarantee uniqueness within a large BIOS project.
8906
8907
8908----------------------------------------
8909Summary of changes for this label: 02_01_02
8910
89111) ACPI CA Core Subsystem:
8912
8913ACPI 2.0 support is complete in the entire Core Subsystem and the
8914ASL compiler. All new ACPI 2.0 operators are implemented and all
8915other changes for ACPI 2.0 support are complete.  With
8916simultaneous code and data optimizations throughout the subsystem,
8917ACPI 2.0 support has been implemented with almost no additional
8918cost in terms of code and data size.
8919
8920Implemented a new mechanism for allocation of return buffers.  If
8921the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
8922be allocated on behalf of the caller.  Consolidated all return
8923buffer validation and allocation to a common procedure.  Return
8924buffers will be allocated via the primary OSL allocation interface
8925since it appears that a separate pool is not needed by most users.
8926If a separate pool is required for these buffers, the caller can
8927still use the original mechanism and pre-allocate the buffer(s).
8928
8929Implemented support for string operands within the DerefOf
8930operator.
8931
8932Restructured the Hardware and Event managers to be table driven,
8933simplifying the source code and reducing the amount of generated
8934code.
8935
8936Split the common read/write low-level ACPI register bitfield
8937procedure into a separate read and write, simplifying the code
8938considerably.
8939
8940Obsoleted the AcpiOsCallocate OSL interface.  This interface was
8941used only a handful of times and didn't have enough critical mass
8942for a separate interface.  Replaced with a common calloc procedure
8943in the core.
8944
8945Fixed a reported problem with the GPE number mapping mechanism
8946that allows GPE1 numbers to be non-contiguous with GPE0.
8947Reorganized the GPE information and shrunk a large array that was
8948originally large enough to hold info for all possible GPEs (256)
8949to simply large enough to hold all GPEs up to the largest GPE
8950number on the machine.
8951
8952Fixed a reported problem with resource structure alignment on 64-
8953bit platforms.
8954
8955Changed the AcpiEnableEvent and AcpiDisableEvent external
8956interfaces to not require any flags for the common case of
8957enabling/disabling a GPE.
8958
8959Implemented support to allow a "Notify" on a Processor object.
8960
8961Most TBDs in comments within the source code have been resolved
8962and eliminated.
8963
8964
8965Fixed a problem in the interpreter where a standalone parent
8966prefix (^) was not handled correctly in the interpreter and
8967debugger.
8968
8969Removed obsolete and unnecessary GPE save/restore code.
8970
8971Implemented Field support in the ASL Load operator.  This allows a
8972table to be loaded from a named field, in addition to loading a
8973table directly from an Operation Region.
8974
8975Implemented timeout and handle support in the external Global Lock
8976interfaces.
8977
8978Fixed a problem in the AcpiDump utility where pathnames were no
8979longer being generated correctly during the dump of named objects.
8980
8981Modified the AML debugger to give a full display of if/while
8982predicates instead of just one AML opcode at a time.  (The
8983predicate can have several nested ASL statements.)  The old method
8984was confusing during single stepping.
8985
8986Code and Data Size: Current core subsystem library sizes are shown
8987below. These are the code and data sizes for the acpica.lib
8988produced by the Microsoft Visual C++ 6.0 compiler, and these
8989values do not include any ACPI driver or OSPM code.  The debug
8990version of the code includes the debug output trace mechanism and
8991has a larger code and data size.  Note that these values will vary
8992depending on the efficiency of the compiler and the compiler
8993options used during generation.
8994
8995  Previous Release (12_18_01)
8996     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
8997     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
8998   Current Release:
8999     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
9000     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
9001
90022) Linux
9003
9004 Implemented fix for PIIX reverse throttling errata (Processor
9005driver)
9006
9007Added new Limit interface (Processor and Thermal drivers)
9008
9009New thermal policy (Thermal driver)
9010
9011Many updates to /proc
9012
9013Battery "low" event support (Battery driver)
9014
9015Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
9016
9017IA32 - IA64 initialization unification, no longer experimental
9018
9019Menuconfig options redesigned
9020
90213) ASL Compiler, version X2037:
9022
9023Implemented several new output features to simplify integration of
9024AML code into  firmware: 1) Output the AML in C source code with
9025labels for each named ASL object.  The    original ASL source code
9026is interleaved as C comments. 2) Output the AML in ASM source code
9027with labels and interleaved ASL    source. 3) Output the AML in
9028raw hex table form, in either C or ASM.
9029
9030Implemented support for optional string parameters to the
9031LoadTable operator.
9032
9033Completed support for embedded escape sequences within string
9034literals.  The compiler now supports all single character escapes
9035as well as the Octal and Hex escapes.  Note: the insertion of a
9036null byte into a string literal (via the hex/octal escape) causes
9037the string to be immediately terminated.  A warning is issued.
9038
9039Fixed a problem where incorrect AML was generated for the case
9040where an ASL namepath consists of a single parent prefix (
9041
9042) with no trailing name segments.
9043
9044The compiler has been successfully generated with a 64-bit C
9045compiler.
9046
9047
9048
9049
9050----------------------------------------
9051Summary of changes for this label: 12_18_01
9052
90531) Linux
9054
9055Enhanced blacklist with reason and severity fields. Any table's
9056signature may now be used to identify a blacklisted system.
9057
9058Call _PIC control method to inform the firmware which interrupt
9059model the OS is using. Turn on any disabled link devices.
9060
9061Cleaned up busmgr /proc error handling (Andreas Dilger)
9062
9063 2) ACPI CA Core Subsystem:
9064
9065Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
9066while loop)
9067
9068Completed implementation of the ACPI 2.0 "Continue",
9069"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
9070operators.  All new ACPI 2.0 operators are now implemented in both
9071the ASL compiler and the AML interpreter.  The only remaining ACPI
90722.0 task is support for the String data type in the DerefOf
9073operator.  Fixed a problem with AcquireMutex where the status code
9074was lost if the caller had to actually wait for the mutex.
9075
9076Increased the maximum ASL Field size from 64K bits to 4G bits.
9077
9078Completed implementation of the external Global Lock interfaces --
9079AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
9080Handler parameters were added.
9081
9082Completed another pass at removing warnings and issues when
9083compiling with 64-bit compilers.  The code now compiles cleanly
9084with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
9085add and subtract (diff) macros have changed considerably.
9086
9087
9088Created and deployed a new ACPI_SIZE type that is 64-bits wide on
908964-bit platforms, 32-bits on all others.  This type is used
9090wherever memory allocation and/or the C sizeof() operator is used,
9091and affects the OSL memory allocation interfaces AcpiOsAllocate
9092and AcpiOsCallocate.
9093
9094Implemented sticky user breakpoints in the AML debugger.
9095
9096Code and Data Size: Current core subsystem library sizes are shown
9097below. These are the code and data sizes for the acpica.lib
9098produced by the Microsoft Visual C++ 6.0 compiler, and these
9099values do not include any ACPI driver or OSPM code.  The debug
9100version of the code includes the debug output trace mechanism and
9101has a larger code and data size. Note that these values will vary
9102depending on the efficiency of the compiler and the compiler
9103options used during generation.
9104
9105  Previous Release (12_05_01)
9106     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
9107     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
9108   Current Release:
9109     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
9110     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
9111
9112 3) ASL Compiler, version X2034:
9113
9114Now checks for (and generates an error if detected) the use of a
9115Break or Continue statement without an enclosing While statement.
9116
9117
9118Successfully generated the compiler with the Intel 64-bit C
9119compiler.
9120
9121 ----------------------------------------
9122Summary of changes for this label: 12_05_01
9123
9124 1) ACPI CA Core Subsystem:
9125
9126The ACPI 2.0 CopyObject operator is fully implemented.  This
9127operator creates a new copy of an object (and is also used to
9128bypass the "implicit conversion" mechanism of the Store operator.)
9129
9130The ACPI 2.0 semantics for the SizeOf operator are fully
9131implemented.  The change is that performing a SizeOf on a
9132reference object causes an automatic dereference of the object to
9133tha actual value before the size is evaluated. This behavior was
9134undefined in ACPI 1.0.
9135
9136The ACPI 2.0 semantics for the Extended IRQ resource descriptor
9137have been implemented.  The interrupt polarity and mode are now
9138independently set.
9139
9140Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
9141appearing in Package objects were not properly converted to
9142integers when the internal Package was converted to an external
9143object (via the AcpiEvaluateObject interface.)
9144
9145Fixed a problem with the namespace object deletion mechanism for
9146objects created by control methods.  There were two parts to this
9147problem: 1) Objects created during the initialization phase method
9148parse were not being deleted, and 2) The object owner ID mechanism
9149to track objects was broken.
9150
9151Fixed a problem where the use of the ASL Scope operator within a
9152control method would result in an invalid opcode exception.
9153
9154Fixed a problem introduced in the previous label where the buffer
9155length required for the _PRT structure was not being returned
9156correctly.
9157
9158Code and Data Size: Current core subsystem library sizes are shown
9159below. These are the code and data sizes for the acpica.lib
9160produced by the Microsoft Visual C++ 6.0 compiler, and these
9161values do not include any ACPI driver or OSPM code.  The debug
9162version of the code includes the debug output trace mechanism and
9163has a larger code and data size.  Note that these values will vary
9164depending on the efficiency of the compiler and the compiler
9165options used during generation.
9166
9167  Previous Release (11_20_01)
9168     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
9169     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
9170
9171  Current Release:
9172     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
9173     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
9174
9175 2) Linux:
9176
9177Updated all files to apply cleanly against 2.4.16.
9178
9179Added basic PCI Interrupt Routing Table (PRT) support for IA32
9180(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
9181version supports both static and dyanmic PRT entries, but dynamic
9182entries are treated as if they were static (not yet
9183reconfigurable).  Architecture- specific code to use this data is
9184absent on IA32 but should be available shortly.
9185
9186Changed the initialization sequence to start the ACPI interpreter
9187(acpi_init) prior to initialization of the PCI driver (pci_init)
9188in init/main.c.  This ordering is required to support PRT and
9189facilitate other (future) enhancement.  A side effect is that the
9190ACPI bus driver and certain device drivers can no longer be loaded
9191as modules.
9192
9193Modified the 'make menuconfig' options to allow PCI Interrupt
9194Routing support to be included without the ACPI Bus and other
9195device drivers.
9196
9197 3) ASL Compiler, version X2033:
9198
9199Fixed some issues with the use of the new CopyObject and
9200DataTableRegion operators.  Both are fully functional.
9201
9202 ----------------------------------------
9203Summary of changes for this label: 11_20_01
9204
9205 20 November 2001.  Summary of changes for this release.
9206
9207 1) ACPI CA Core Subsystem:
9208
9209Updated Index support to match ACPI 2.0 semantics.  Storing a
9210Integer, String, or Buffer to an Index of a Buffer will store only
9211the least-significant byte of the source to the Indexed buffer
9212byte.  Multiple writes are not performed.
9213
9214Fixed a problem where the access type used in an AccessAs ASL
9215operator was not recorded correctly into the field object.
9216
9217Fixed a problem where ASL Event objects were created in a
9218signalled state. Events are now created in an unsignalled state.
9219
9220The internal object cache is now purged after table loading and
9221initialization to reduce the use of dynamic kernel memory -- on
9222the assumption that object use is greatest during the parse phase
9223of the entire table (versus the run-time use of individual control
9224methods.)
9225
9226ACPI 2.0 variable-length packages are now fully operational.
9227
9228Code and Data Size: Code and Data optimizations have permitted new
9229feature development with an actual reduction in the library size.
9230Current core subsystem library sizes are shown below.  These are
9231the code and data sizes for the acpica.lib produced by the
9232Microsoft Visual C++ 6.0 compiler, and these values do not include
9233any ACPI driver or OSPM code.  The debug version of the code
9234includes the debug output trace mechanism and has a larger code
9235and data size.  Note that these values will vary depending on the
9236efficiency of the compiler and the compiler options used during
9237generation.
9238
9239  Previous Release (11_09_01):
9240     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
9241     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
9242
9243  Current Release:
9244     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
9245     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
9246
9247 2) Linux:
9248
9249Enhanced the ACPI boot-time initialization code to allow the use
9250of Local APIC tables for processor enumeration on IA-32, and to
9251pave the way for a fully MPS-free boot (on SMP systems) in the
9252near future.  This functionality replaces
9253arch/i386/kernel/acpitables.c, which was introduced in an earlier
92542.4.15-preX release.  To enable this feature you must add
9255"acpi_boot=on" to the kernel command line -- see the help entry
9256for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
9257the works...
9258
9259Restructured the configuration options to allow boot-time table
9260parsing support without inclusion of the ACPI Interpreter (and
9261other) code.
9262
9263NOTE: This release does not include fixes for the reported events,
9264power-down, and thermal passive cooling issues (coming soon).
9265
9266 3) ASL Compiler:
9267
9268Added additional typechecking for Fields within restricted access
9269Operation Regions.  All fields within EC and CMOS regions must be
9270declared with ByteAcc. All fields withing SMBus regions must be
9271declared with the BufferAcc access type.
9272
9273Fixed a problem where the listing file output of control methods
9274no longer interleaved the actual AML code with the ASL source
9275code.
9276
9277
9278
9279
9280----------------------------------------
9281Summary of changes for this label: 11_09_01
9282
92831) ACPI CA Core Subsystem:
9284
9285Implemented ACPI 2.0-defined support for writes to fields with a
9286Buffer, String, or Integer source operand that is smaller than the
9287target field. In these cases, the source operand is zero-extended
9288to fill the target field.
9289
9290Fixed a problem where a Field starting bit offset (within the
9291parent operation region) was calculated incorrectly if the
9292
9293alignment of the field differed from the access width.  This
9294affected CreateWordField, CreateDwordField, CreateQwordField, and
9295possibly other fields that use the "AccessAny" keyword.
9296
9297Fixed a problem introduced in the 11_02_01 release where indirect
9298stores through method arguments did not operate correctly.
9299
93002) Linux:
9301
9302Implemented boot-time ACPI table parsing support
9303(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
9304facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
9305legacy BIOS interfaces (e.g. MPS) for the configuration of system
9306processors, memory, and interrupts during setup_arch().  Note that
9307this patch does not include the required architecture-specific
9308changes required to apply this information -- subsequent patches
9309will be posted for both IA32 and IA64 to achieve this.
9310
9311Added low-level sleep support for IA32 platforms, courtesy of Pat
9312Mochel. This allows IA32 systems to transition to/from various
9313sleeping states (e.g. S1, S3), although the lack of a centralized
9314driver model and power-manageable drivers will prevent its
9315(successful) use on most systems.
9316
9317Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
9318submenu, unified IA32 and IA64 options, added new "Boot using ACPI
9319tables" option, etc.
9320
9321Increased the default timeout for the EC driver from 1ms to 10ms
9322(1000 cycles of 10us) to try to address AE_TIME errors during EC
9323transactions.
9324
9325 ----------------------------------------
9326Summary of changes for this label: 11_02_01
9327
93281) ACPI CA Core Subsystem:
9329
9330ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
9331(QWordAcc keyword). All ACPI 2.0 64-bit support is now
9332implemented.
9333
9334OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
9335changes to support ACPI 2.0 Qword field access.  Read/Write
9336PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
9337accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
9338the value parameter for the address space handler interface is now
9339an ACPI_INTEGER.  OSL implementations of these interfaces must now
9340handle the case where the Width parameter is 64.
9341
9342Index Fields: Fixed a problem where unaligned bit assembly and
9343disassembly for IndexFields was not supported correctly.
9344
9345Index and Bank Fields:  Nested Index and Bank Fields are now
9346supported. During field access, a check is performed to ensure
9347that the value written to an Index or Bank register is not out of
9348the range of the register.  The Index (or Bank) register is
9349written before each access to the field data. Future support will
9350include allowing individual IndexFields to be wider than the
9351DataRegister width.
9352
9353Fields: Fixed a problem where the AML interpreter was incorrectly
9354attempting to write beyond the end of a Field/OpRegion.  This was
9355a boundary case that occurred when a DWORD field was written to a
9356BYTE access OpRegion, forcing multiple writes and causing the
9357interpreter to write one datum too many.
9358
9359Fields: Fixed a problem with Field/OpRegion access where the
9360starting bit address of a field was incorrectly calculated if the
9361current access type was wider than a byte (WordAcc, DwordAcc, or
9362QwordAcc).
9363
9364Fields: Fixed a problem where forward references to individual
9365FieldUnits (individual Field names within a Field definition) were
9366not resolved during the AML table load.
9367
9368Fields: Fixed a problem where forward references from a Field
9369definition to the parent Operation Region definition were not
9370resolved during the AML table load.
9371
9372Fields: Duplicate FieldUnit names within a scope are now detected
9373during AML table load.
9374
9375Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
9376returned an incorrect name for the root node.
9377
9378Code and Data Size: Code and Data optimizations have permitted new
9379feature development with an actual reduction in the library size.
9380Current core subsystem library sizes are shown below.  These are
9381the code and data sizes for the acpica.lib produced by the
9382Microsoft Visual C++ 6.0 compiler, and these values do not include
9383any ACPI driver or OSPM code.  The debug version of the code
9384includes the debug output trace mechanism and has a larger code
9385and data size.  Note that these values will vary depending on the
9386efficiency of the compiler and the compiler options used during
9387generation.
9388
9389  Previous Release (10_18_01):
9390     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
9391     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
9392
9393  Current Release:
9394     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
9395     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
9396
9397 2) Linux:
9398
9399Improved /proc processor output (Pavel Machek) Re-added
9400MODULE_LICENSE("GPL") to all modules.
9401
9402 3) ASL Compiler version X2030:
9403
9404Duplicate FieldUnit names within a scope are now detected and
9405flagged as errors.
9406
9407 4) Documentation:
9408
9409Programmer Reference updated to reflect OSL and address space
9410handler interface changes described above.
9411
9412----------------------------------------
9413Summary of changes for this label: 10_18_01
9414
9415ACPI CA Core Subsystem:
9416
9417Fixed a problem with the internal object reference count mechanism
9418that occasionally caused premature object deletion. This resolves
9419all of the outstanding problem reports where an object is deleted
9420in the middle of an interpreter evaluation.  Although this problem
9421only showed up in rather obscure cases, the solution to the
9422problem involved an adjustment of all reference counts involving
9423objects attached to namespace nodes.
9424
9425Fixed a problem with Field support in the interpreter where
9426writing to an aligned field whose length is an exact multiple (2
9427or greater) of the field access granularity would cause an attempt
9428to write beyond the end of the field.
9429
9430The top level AML opcode execution functions within the
9431interpreter have been renamed with a more meaningful and
9432consistent naming convention.  The modules exmonad.c and
9433exdyadic.c were eliminated.  New modules are exoparg1.c,
9434exoparg2.c, exoparg3.c, and exoparg6.c.
9435
9436Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
9437
9438Fixed a problem where the AML debugger was causing some internal
9439objects to not be deleted during subsystem termination.
9440
9441Fixed a problem with the external AcpiEvaluateObject interface
9442where the subsystem would fault if the named object to be
9443evaluated refered to a constant such as Zero, Ones, etc.
9444
9445Fixed a problem with IndexFields and BankFields where the
9446subsystem would fault if the index, data, or bank registers were
9447not defined in the same scope as the field itself.
9448
9449Added printf format string checking for compilers that support
9450this feature.  Corrected more than 50 instances of issues with
9451format specifiers within invocations of ACPI_DEBUG_PRINT
9452throughout the core subsystem code.
9453
9454The ASL "Revision" operator now returns the ACPI support level
9455implemented in the core - the value "2" since the ACPI 2.0 support
9456is more than 50% implemented.
9457
9458Enhanced the output of the AML debugger "dump namespace" command
9459to output in a more human-readable form.
9460
9461Current core subsystem library code sizes are shown below.  These
9462
9463are the code and data sizes for the acpica.lib produced by the
9464Microsoft Visual C++ 6.0 compiler, and these values do not include
9465any ACPI driver or OSPM code.  The debug version of the code
9466includes the full debug trace mechanism -- leading to a much
9467
9468larger code and data size.  Note that these values will vary
9469depending on the efficiency of the compiler and the compiler
9470options used during generation.
9471
9472     Previous Label (09_20_01):
9473     Non-Debug Version:    65K Code,     5K Data,     70K Total
9474     Debug Version:       138K Code,    58K Data,    196K Total
9475
9476     This Label:
9477
9478     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
9479     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
9480
9481Linux:
9482
9483Implemented a "Bad BIOS Blacklist" to track machines that have
9484known ASL/AML problems.
9485
9486Enhanced the /proc interface for the thermal zone driver and added
9487support for _HOT (the critical suspend trip point).  The 'info'
9488file now includes threshold/policy information, and allows setting
9489of _SCP (cooling preference) and _TZP (polling frequency) values
9490to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
9491frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
9492preference to the passive/quiet mode (if supported by the ASL).
9493
9494Implemented a workaround for a gcc bug that resuted in an OOPs
9495when loading the control method battery driver.
9496
9497 ----------------------------------------
9498Summary of changes for this label: 09_20_01
9499
9500 ACPI CA Core Subsystem:
9501
9502The AcpiEnableEvent and AcpiDisableEvent interfaces have been
9503modified to allow individual GPE levels to be flagged as wake-
9504enabled (i.e., these GPEs are to remain enabled when the platform
9505sleeps.)
9506
9507The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
9508support wake-enabled GPEs.  This means that upon entering the
9509sleep state, all GPEs that are not wake-enabled are disabled.
9510When leaving the sleep state, these GPEs are reenabled.
9511
9512A local double-precision divide/modulo module has been added to
9513enhance portability to OS kernels where a 64-bit math library is
9514not available.  The new module is "utmath.c".
9515
9516Several optimizations have been made to reduce the use of CPU
9517stack.  Originally over 2K, the maximum stack usage is now below
95182K at 1860  bytes (1.82k)
9519
9520Fixed a problem with the AcpiGetFirmwareTable interface where the
9521root table pointer was not mapped into a logical address properly.
9522
9523Fixed a problem where a NULL pointer was being dereferenced in the
9524interpreter code for the ASL Notify operator.
9525
9526Fixed a problem where the use of the ASL Revision operator
9527returned an error. This operator now returns the current version
9528of the ACPI CA core subsystem.
9529
9530Fixed a problem where objects passed as control method parameters
9531to AcpiEvaluateObject were always deleted at method termination.
9532However, these objects may end up being stored into the namespace
9533by the called method.  The object reference count mechanism was
9534applied to these objects instead of a force delete.
9535
9536Fixed a problem where static strings or buffers (contained in the
9537AML code) that are declared as package elements within the ASL
9538code could cause a fault because the interpreter would attempt to
9539delete them.  These objects are now marked with the "static
9540object" flag to prevent any attempt to delete them.
9541
9542Implemented an interpreter optimization to use operands directly
9543from the state object instead of extracting the operands to local
9544variables.  This reduces stack use and code size, and improves
9545performance.
9546
9547The module exxface.c was eliminated as it was an unnecessary extra
9548layer of code.
9549
9550Current core subsystem library code sizes are shown below.  These
9551are the code and data sizes for the acpica.lib produced by the
9552Microsoft Visual C++ 6.0 compiler, and these values do not include
9553any ACPI driver or OSPM code.  The debug version of the code
9554includes the full debug trace mechanism -- leading to a much
9555larger code and data size.  Note that these values will vary
9556depending on the efficiency of the compiler and the compiler
9557options used during generation.
9558
9559  Non-Debug Version:  65K Code,   5K Data,   70K Total
9560(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
9561Total  (Previously 195K)
9562
9563Linux:
9564
9565Support for ACPI 2.0 64-bit integers has been added.   All ACPI
9566Integer objects are now 64 bits wide
9567
9568All Acpi data types and structures are now in lower case.  Only
9569Acpi macros are upper case for differentiation.
9570
9571 Documentation:
9572
9573Changes to the external interfaces as described above.
9574
9575 ----------------------------------------
9576Summary of changes for this label: 08_31_01
9577
9578 ACPI CA Core Subsystem:
9579
9580A bug with interpreter implementation of the ASL Divide operator
9581was found and fixed.  The implicit function return value (not the
9582explicit store operands) was returning the remainder instead of
9583the quotient.  This was a longstanding bug and it fixes several
9584known outstanding issues on various platforms.
9585
9586The ACPI_DEBUG_PRINT and function trace entry/exit macros have
9587been further optimized for size.  There are 700 invocations of the
9588DEBUG_PRINT macro alone, so each optimization reduces the size of
9589the debug version of the subsystem significantly.
9590
9591A stack trace mechanism has been implemented.  The maximum stack
9592usage is about 2K on 32-bit platforms.  The debugger command "stat
9593stack" will display the current maximum stack usage.
9594
9595All public symbols and global variables within the subsystem are
9596now prefixed with the string "Acpi".  This keeps all of the
9597symbols grouped together in a kernel map, and avoids conflicts
9598with other kernel subsystems.
9599
9600Most of the internal fixed lookup tables have been moved into the
9601code segment via the const operator.
9602
9603Several enhancements have been made to the interpreter to both
9604reduce the code size and improve performance.
9605
9606Current core subsystem library code sizes are shown below.  These
9607are the code and data sizes for the acpica.lib produced by the
9608Microsoft Visual C++ 6.0 compiler, and these values do not include
9609any ACPI driver or OSPM code.  The debug version of the code
9610includes the full debug trace mechanism which contains over 700
9611invocations of the DEBUG_PRINT macro, 500 function entry macro
9612invocations, and over 900 function exit macro invocations --
9613leading to a much larger code and data size.  Note that these
9614values will vary depending on the efficiency of the compiler and
9615the compiler options used during generation.
9616
9617        Non-Debug Version:  64K Code,   5K Data,   69K Total
9618Debug Version:     137K Code,  58K Data,  195K Total
9619
9620 Linux:
9621
9622Implemented wbinvd() macro, pending a kernel-wide definition.
9623
9624Fixed /proc/acpi/event to handle poll() and short reads.
9625
9626 ASL Compiler, version X2026:
9627
9628Fixed a problem introduced in the previous label where the AML
9629
9630code emitted for package objects produced packages with zero
9631length.
9632
9633 ----------------------------------------
9634Summary of changes for this label: 08_16_01
9635
9636ACPI CA Core Subsystem:
9637
9638The following ACPI 2.0 ASL operators have been implemented in the
9639AML interpreter (These are already supported by the Intel ASL
9640compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
9641ToBuffer.  Support for 64-bit AML constants is implemented in the
9642AML parser, debugger, and disassembler.
9643
9644The internal memory tracking mechanism (leak detection code) has
9645been upgraded to reduce the memory overhead (a separate tracking
9646block is no longer allocated for each memory allocation), and now
9647supports all of the internal object caches.
9648
9649The data structures and code for the internal object caches have
9650been coelesced and optimized so that there is a single cache and
9651memory list data structure and a single group of functions that
9652implement generic cache management.  This has reduced the code
9653size in both the debug and release versions of the subsystem.
9654
9655The DEBUG_PRINT macro(s) have been optimized for size and replaced
9656by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
9657different, because it generates a single call to an internal
9658function.  This results in a savings of about 90 bytes per
9659invocation, resulting in an overall code and data savings of about
966016% in the debug version of the subsystem.
9661
9662 Linux:
9663
9664Fixed C3 disk corruption problems and re-enabled C3 on supporting
9665machines.
9666
9667Integrated low-level sleep code by Patrick Mochel.
9668
9669Further tweaked source code Linuxization.
9670
9671Other minor fixes.
9672
9673 ASL Compiler:
9674
9675Support for ACPI 2.0 variable length packages is fixed/completed.
9676
9677Fixed a problem where the optional length parameter for the ACPI
96782.0 ToString operator.
9679
9680Fixed multiple extraneous error messages when a syntax error is
9681detected within the declaration line of a control method.
9682
9683 ----------------------------------------
9684Summary of changes for this label: 07_17_01
9685
9686ACPI CA Core Subsystem:
9687
9688Added a new interface named AcpiGetFirmwareTable to obtain any
9689ACPI table via the ACPI signature.  The interface can be called at
9690any time during kernel initialization, even before the kernel
9691virtual memory manager is initialized and paging is enabled.  This
9692allows kernel subsystems to obtain ACPI tables very early, even
9693before the ACPI CA subsystem is initialized.
9694
9695Fixed a problem where Fields defined with the AnyAcc attribute
9696could be resolved to the incorrect address under the following
9697conditions: 1) the field width is larger than 8 bits and 2) the
9698parent operation region is not defined on a DWORD boundary.
9699
9700Fixed a problem where the interpreter is not being locked during
9701namespace initialization (during execution of the _INI control
9702methods), causing an error when an attempt is made to release it
9703later.
9704
9705ACPI 2.0 support in the AML Interpreter has begun and will be
9706ongoing throughout the rest of this year.  In this label, The Mod
9707operator is implemented.
9708
9709Added a new data type to contain full PCI addresses named
9710ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
9711and Function values.
9712
9713 Linux:
9714
9715Enhanced the Linux version of the source code to change most
9716capitalized ACPI type names to lowercase. For example, all
9717instances of ACPI_STATUS are changed to acpi_status.  This will
9718result in a large diff, but the change is strictly cosmetic and
9719aligns the CA code closer to the Linux coding standard.
9720
9721OSL Interfaces:
9722
9723The interfaces to the PCI configuration space have been changed to
9724add the PCI Segment number and to split the single 32-bit combined
9725DeviceFunction field into two 16-bit fields.  This was
9726accomplished by moving the four values that define an address in
9727PCI configuration space (segment, bus, device, and function) to
9728the new ACPI_PCI_ID structure.
9729
9730The changes to the PCI configuration space interfaces led to a
9731reexamination of the complete set of address space access
9732interfaces for PCI, I/O, and Memory.  The previously existing 18
9733interfaces have proven difficult to maintain (any small change
9734must be propagated across at least 6 interfaces) and do not easily
9735allow for future expansion to 64 bits if necessary.  Also, on some
9736systems, it would not be appropriate to demultiplex the access
9737width (8, 16, 32,or 64) before calling the OSL if the
9738corresponding native OS interfaces contain a similar access width
9739parameter.  For these reasons, the 18 address space interfaces
9740have been replaced by these 6 new ones:
9741
9742AcpiOsReadPciConfiguration
9743AcpiOsWritePciConfiguration
9744AcpiOsReadMemory
9745AcpiOsWriteMemory
9746AcpiOsReadPort
9747AcpiOsWritePort
9748
9749Added a new interface named AcpiOsGetRootPointer to allow the OSL
9750to perform the platform and/or OS-specific actions necessary to
9751obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
9752interface will simply call down to the CA core to perform the low-
9753memory search for the table.  On IA-64, the RSDP is obtained from
9754EFI.  Migrating this interface to the OSL allows the CA core to
9755
9756remain OS and platform independent.
9757
9758Added a new interface named AcpiOsSignal to provide a generic
9759"function code and pointer" interface for various miscellaneous
9760signals and notifications that must be made to the host OS.   The
9761first such signals are intended to support the ASL Fatal and
9762Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
9763interface has been obsoleted.
9764
9765The definition of the AcpiFormatException interface has been
9766changed to simplify its use.  The caller no longer must supply a
9767buffer to the call; A pointer to a const string is now returned
9768directly.  This allows the call to be easily used in printf
9769statements, etc. since the caller does not have to manage a local
9770buffer.
9771
9772
9773 ASL Compiler, Version X2025:
9774
9775The ACPI 2.0 Switch/Case/Default operators have been implemented
9776and are fully functional.  They will work with all ACPI 1.0
9777interpreters, since the operators are simply translated to If/Else
9778pairs.
9779
9780The ACPI 2.0 ElseIf operator is implemented and will also work
9781with 1.0 interpreters, for the same reason.
9782
9783Implemented support for ACPI 2.0 variable-length packages.  These
9784packages have a separate opcode, and their size is determined by
9785the interpreter at run-time.
9786
9787Documentation The ACPI CA Programmer Reference has been updated to
9788reflect the new interfaces and changes to existing interfaces.
9789
9790 ------------------------------------------
9791Summary of changes for this label: 06_15_01
9792
9793 ACPI CA Core Subsystem:
9794
9795Fixed a problem where a DWORD-accessed field within a Buffer
9796object would get its byte address inadvertently rounded down to
9797the nearest DWORD.  Buffers are always Byte-accessible.
9798
9799 ASL Compiler, version X2024:
9800
9801Fixed a problem where the Switch() operator would either fault or
9802hang the compiler.  Note however, that the AML code for this ACPI
98032.0 operator is not yet implemented.
9804
9805Compiler uses the new AcpiOsGetTimer interface to obtain compile
9806timings.
9807
9808Implementation of the CreateField operator automatically converts
9809a reference to a named field within a resource descriptor from a
9810byte offset to a bit offset if required.
9811
9812Added some missing named fields from the resource descriptor
9813support. These are the names that are automatically created by the
9814compiler to reference fields within a descriptor.  They are only
9815valid at compile time and are not passed through to the AML
9816interpreter.
9817
9818Resource descriptor named fields are now typed as Integers and
9819subject to compile-time typechecking when used in expressions.
9820
9821 ------------------------------------------
9822Summary of changes for this label: 05_18_01
9823
9824 ACPI CA Core Subsystem:
9825
9826Fixed a couple of problems in the Field support code where bits
9827from adjacent fields could be returned along with the proper field
9828bits. Restructured the field support code to improve performance,
9829readability and maintainability.
9830
9831New DEBUG_PRINTP macro automatically inserts the procedure name
9832into the output, saving hundreds of copies of procedure name
9833strings within the source, shrinking the memory footprint of the
9834debug version of the core subsystem.
9835
9836 Source Code Structure:
9837
9838The source code directory tree was restructured to reflect the
9839current organization of the component architecture.  Some files
9840and directories have been moved and/or renamed.
9841
9842 Linux:
9843
9844Fixed leaking kacpidpc processes.
9845
9846Fixed queueing event data even when /proc/acpi/event is not
9847opened.
9848
9849 ASL Compiler, version X2020:
9850
9851Memory allocation performance enhancement - over 24X compile time
9852improvement on large ASL files.  Parse nodes and namestring
9853buffers are now allocated from a large internal compiler buffer.
9854
9855The temporary .SRC file is deleted unless the "-s" option is
9856specified
9857
9858The "-d" debug output option now sends all output to the .DBG file
9859instead of the console.
9860
9861"External" second parameter is now optional
9862
9863"ElseIf" syntax now properly allows the predicate
9864
9865Last operand to "Load" now recognized as a Target operand
9866
9867Debug object can now be used anywhere as a normal object.
9868
9869ResourceTemplate now returns an object of type BUFFER
9870
9871EISAID now returns an object of type INTEGER
9872
9873"Index" now works with a STRING operand
9874
9875"LoadTable" now accepts optional parameters
9876
9877"ToString" length parameter is now optional
9878
9879"Interrupt (ResourceType," parse error fixed.
9880
9881"Register" with a user-defined region space parse error fixed
9882
9883Escaped backslash at the end of a string ("\\") scan/parse error
9884fixed
9885
9886"Revision" is now an object of type INTEGER.
9887
9888
9889
9890------------------------------------------
9891Summary of changes for this label: 05_02_01
9892
9893Linux:
9894
9895/proc/acpi/event now blocks properly.
9896
9897Removed /proc/sys/acpi. You can still dump your DSDT from
9898/proc/acpi/dsdt.
9899
9900 ACPI CA Core Subsystem:
9901
9902Fixed a problem introduced in the previous label where some of the
9903"small" resource descriptor types were not recognized.
9904
9905Improved error messages for the case where an ASL Field is outside
9906the range of the parent operation region.
9907
9908 ASL Compiler, version X2018:
9909
9910
9911Added error detection for ASL Fields that extend beyond the length
9912of the parent operation region (only if the length of the region
9913is known at compile time.)  This includes fields that have a
9914minimum access width that is smaller than the parent region, and
9915individual field units that are partially or entirely beyond the
9916extent of the parent.
9917
9918
9919
9920------------------------------------------
9921Summary of changes for this label: 04_27_01
9922
9923 ACPI CA Core Subsystem:
9924
9925Fixed a problem where the namespace mutex could be released at the
9926wrong time during execution of AcpiRemoveAddressSpaceHandler.
9927
9928Added optional thread ID output for debug traces, to simplify
9929debugging of multiple threads.  Added context switch notification
9930when the debug code realizes that a different thread is now
9931executing ACPI code.
9932
9933Some additional external data types have been prefixed with the
9934string "ACPI_" for consistency.  This may effect existing code.
9935The data types affected are the external callback typedefs - e.g.,
9936
9937WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
9938
9939 Linux:
9940
9941Fixed an issue with the OSL semaphore implementation where a
9942thread was waking up with an error from receiving a SIGCHLD
9943signal.
9944
9945Linux version of ACPI CA now uses the system C library for string
9946manipulation routines instead of a local implementation.
9947
9948Cleaned up comments and removed TBDs.
9949
9950 ASL Compiler, version X2017:
9951
9952Enhanced error detection and reporting for all file I/O
9953operations.
9954
9955 Documentation:
9956
9957Programmer Reference updated to version 1.06.
9958
9959
9960
9961------------------------------------------
9962Summary of changes for this label: 04_13_01
9963
9964 ACPI CA Core Subsystem:
9965
9966Restructured support for BufferFields and RegionFields.
9967BankFields support is now fully operational.  All known 32-bit
9968limitations on field sizes have been removed.  Both BufferFields
9969and (Operation) RegionFields are now supported by the same field
9970management code.
9971
9972Resource support now supports QWORD address and IO resources. The
997316/32/64 bit address structures and the Extended IRQ structure
9974have been changed to properly handle Source Resource strings.
9975
9976A ThreadId of -1 is now used to indicate a "mutex not acquired"
9977condition internally and must never be returned by AcpiOsThreadId.
9978This reserved value was changed from 0 since Unix systems allow a
9979thread ID of 0.
9980
9981Linux:
9982
9983Driver code reorganized to enhance portability
9984
9985Added a kernel configuration option to control ACPI_DEBUG
9986
9987Fixed the EC driver to honor _GLK.
9988
9989ASL Compiler, version X2016:
9990
9991Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
9992address space was set to 0, not 0x7f as it should be.
9993
9994 ------------------------------------------
9995Summary of changes for this label: 03_13_01
9996
9997 ACPI CA Core Subsystem:
9998
9999During ACPI initialization, the _SB_._INI method is now run if
10000present.
10001
10002Notify handler fix - notifies are deferred until the parent method
10003completes execution.  This fixes the "mutex already acquired"
10004issue seen occasionally.
10005
10006Part of the "implicit conversion" rules in ACPI 2.0 have been
10007found to cause compatibility problems with existing ASL/AML.  The
10008convert "result-to-target-type" implementation has been removed
10009for stores to method Args and Locals.  Source operand conversion
10010is still fully implemented.  Possible changes to ACPI 2.0
10011specification pending.
10012
10013Fix to AcpiRsCalculatePciRoutingTableLength to return correct
10014length.
10015
10016Fix for compiler warnings for 64-bit compiles.
10017
10018 Linux:
10019
10020/proc output aligned for easier parsing.
10021
10022Release-version compile problem fixed.
10023
10024New kernel configuration options documented in Configure.help.
10025
10026IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
10027context" message.
10028
10029 OSPM:
10030
10031Power resource driver integrated with bus manager.
10032
10033Fixed kernel fault during active cooling for thermal zones.
10034
10035Source Code:
10036
10037The source code tree has been restructured.
10038
10039
10040
10041------------------------------------------
10042Summary of changes for this label: 03_02_01
10043
10044 Linux OS Services Layer (OSL):
10045
10046Major revision of all Linux-specific code.
10047
10048Modularized all ACPI-specific drivers.
10049
10050Added new thermal zone and power resource drivers.
10051
10052Revamped /proc interface (new functionality is under /proc/acpi).
10053
10054New kernel configuration options.
10055
10056 Linux known issues:
10057
10058New kernel configuration options not documented in Configure.help
10059yet.
10060
10061
10062Module dependencies not currently implemented. If used, they
10063should be loaded in this order: busmgr, power, ec, system,
10064processor, battery, ac_adapter, button, thermal.
10065
10066Modules will not load if CONFIG_MODVERSION is set.
10067
10068IBM 600E - entering S5 may reboot instead of shutting down.
10069
10070IBM 600E - Sleep button may generate "Invalid <NULL> context"
10071message.
10072
10073Some systems may fail with "execution mutex already acquired"
10074message.
10075
10076 ACPI CA Core Subsystem:
10077
10078Added a new OSL Interface, AcpiOsGetThreadId.  This was required
10079for the  deadlock detection code. Defined to return a non-zero, 32-
10080bit thread ID for the currently executing thread.  May be a non-
10081zero constant integer on single-thread systems.
10082
10083Implemented deadlock detection for internal subsystem mutexes.  We
10084may add conditional compilation for this code (debug only) later.
10085
10086ASL/AML Mutex object semantics are now fully supported.  This
10087includes multiple acquires/releases by owner and support for the
10088
10089Mutex SyncLevel parameter.
10090
10091A new "Force Release" mechanism automatically frees all ASL
10092Mutexes that have been acquired but not released when a thread
10093exits the interpreter.  This forces conformance to the ACPI spec
10094("All mutexes must be released when an invocation exits") and
10095prevents deadlocked ASL threads.  This mechanism can be expanded
10096(later) to monitor other resource acquisitions if OEM ASL code
10097continues to misbehave (which it will).
10098
10099Several new ACPI exception codes have been added for the Mutex
10100support.
10101
10102Recursive method calls are now allowed and supported (the ACPI
10103spec does in fact allow recursive method calls.)  The number of
10104recursive calls is subject to the restrictions imposed by the
10105SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
10106parameter.
10107
10108Implemented support for the SyncLevel parameter for control
10109methods (ACPI 2.0 feature)
10110
10111Fixed a deadlock problem when multiple threads attempted to use
10112the interpreter.
10113
10114Fixed a problem where the string length of a String package
10115element was not always set in a package returned from
10116AcpiEvaluateObject.
10117
10118Fixed a problem where the length of a String package element was
10119not always included in the length of the overall package returned
10120from AcpiEvaluateObject.
10121
10122Added external interfaces (Acpi*) to the ACPI debug memory
10123manager.  This manager keeps a list of all outstanding
10124allocations, and can therefore detect memory leaks and attempts to
10125free memory blocks more than once. Useful for code such as the
10126power manager, etc.  May not be appropriate for device drivers.
10127Performance with the debug code enabled is slow.
10128
10129The ACPI Global Lock is now an optional hardware element.
10130
10131 ASL Compiler Version X2015:
10132
10133Integrated changes to allow the compiler to be generated on
10134multiple platforms.
10135
10136Linux makefile added to generate the compiler on Linux
10137
10138 Source Code:
10139
10140All platform-specific headers have been moved to their own
10141subdirectory, Include/Platform.
10142
10143New source file added, Interpreter/ammutex.c
10144
10145New header file, Include/acstruct.h
10146
10147 Documentation:
10148
10149The programmer reference has been updated for the following new
10150interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
10151
10152 ------------------------------------------
10153Summary of changes for this label: 02_08_01
10154
10155Core ACPI CA Subsystem: Fixed a problem where an error was
10156incorrectly returned if the return resource buffer was larger than
10157the actual data (in the resource interfaces).
10158
10159References to named objects within packages are resolved to the
10160
10161full pathname string before packages are returned directly (via
10162the AcpiEvaluateObject interface) or indirectly via the resource
10163interfaces.
10164
10165Linux OS Services Layer (OSL):
10166
10167Improved /proc battery interface.
10168
10169
10170Added C-state debugging output and other miscellaneous fixes.
10171
10172ASL Compiler Version X2014:
10173
10174All defined method arguments can now be used as local variables,
10175including the ones that are not actually passed in as parameters.
10176The compiler tracks initialization of the arguments and issues an
10177exception if they are used without prior assignment (just like
10178locals).
10179
10180The -o option now specifies a filename prefix that is used for all
10181output files, including the AML output file.  Otherwise, the
10182default behavior is as follows:  1) the AML goes to the file
10183specified in the DSDT.  2) all other output files use the input
10184source filename as the base.
10185
10186 ------------------------------------------
10187Summary of changes for this label: 01_25_01
10188
10189Core ACPI CA Subsystem: Restructured the implementation of object
10190store support within the  interpreter.  This includes support for
10191the Store operator as well  as any ASL operators that include a
10192target operand.
10193
10194Partially implemented support for Implicit Result-to-Target
10195conversion. This is when a result object is converted on the fly
10196to the type of  an existing target object.  Completion of this
10197support is pending  further analysis of the ACPI specification
10198concerning this matter.
10199
10200CPU-specific code has been removed from the subsystem (hardware
10201directory).
10202
10203New Power Management Timer functions added
10204
10205Linux OS Services Layer (OSL): Moved system state transition code
10206to the core, fixed it, and modified  Linux OSL accordingly.
10207
10208Fixed C2 and C3 latency calculations.
10209
10210
10211We no longer use the compilation date for the version message on
10212initialization, but retrieve the version from AcpiGetSystemInfo().
10213
10214Incorporated for fix Sony VAIO machines.
10215
10216Documentation:  The Programmer Reference has been updated and
10217reformatted.
10218
10219
10220ASL Compiler:  Version X2013: Fixed a problem where the line
10221numbering and error reporting could get out  of sync in the
10222presence of multiple include files.
10223
10224 ------------------------------------------
10225Summary of changes for this label: 01_15_01
10226
10227Core ACPI CA Subsystem:
10228
10229Implemented support for type conversions in the execution of the
10230ASL  Concatenate operator (The second operand is converted to
10231match the type  of the first operand before concatenation.)
10232
10233Support for implicit source operand conversion is partially
10234implemented.   The ASL source operand types Integer, Buffer, and
10235String are freely  interchangeable for most ASL operators and are
10236converted by the interpreter  on the fly as required.  Implicit
10237Target operand conversion (where the  result is converted to the
10238target type before storing) is not yet implemented.
10239
10240Support for 32-bit and 64-bit BCD integers is implemented.
10241
10242Problem fixed where a field read on an aligned field could cause a
10243read  past the end of the field.
10244
10245New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
10246does not return a value, but the caller expects one.  (The ASL
10247compiler flags this as a warning.)
10248
10249ASL Compiler:
10250
10251Version X2011:
102521. Static typechecking of all operands is implemented. This
10253prevents the use of invalid objects (such as using a Package where
10254an Integer is required) at compile time instead of at interpreter
10255run-time.
102562. The ASL source line is printed with ALL errors and warnings.
102573. Bug fix for source EOF without final linefeed.
102584. Debug option is split into a parse trace and a namespace trace.
102595. Namespace output option (-n) includes initial values for
10260integers and strings.
102616. Parse-only option added for quick syntax checking.
102627. Compiler checks for duplicate ACPI name declarations
10263
10264Version X2012:
102651. Relaxed typechecking to allow interchangeability between
10266strings, integers, and buffers.  These types are now converted by
10267the interpreter at runtime.
102682. Compiler reports time taken by each internal subsystem in the
10269debug         output file.
10270
10271
10272 ------------------------------------------
10273Summary of changes for this label: 12_14_00
10274
10275ASL Compiler:
10276
10277This is the first official release of the compiler. Since the
10278compiler requires elements of the Core Subsystem, this label
10279synchronizes everything.
10280
10281------------------------------------------
10282Summary of changes for this label: 12_08_00
10283
10284
10285Fixed a problem where named references within the ASL definition
10286of both OperationRegions and CreateXXXFields did not work
10287properly.  The symptom was an AE_AML_OPERAND_TYPE during
10288initialization of the region/field. This is similar (but not
10289related internally) to the problem that was fixed in the last
10290label.
10291
10292Implemented both 32-bit and 64-bit support for the BCD ASL
10293functions ToBCD and FromBCD.
10294
10295Updated all legal headers to include "2000" in the copyright
10296years.
10297
10298 ------------------------------------------
10299Summary of changes for this label: 12_01_00
10300
10301Fixed a problem where method invocations within the ASL definition
10302of both OperationRegions and CreateXXXFields did not work
10303properly.  The symptom was an AE_AML_OPERAND_TYPE during
10304initialization of the region/field:
10305
10306  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
10307[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
10308(0x3005)
10309
10310Fixed a problem where operators with more than one nested
10311subexpression would fail.  The symptoms were varied, by mostly
10312AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
10313problem that has gone unnoticed until now.
10314
10315  Subtract (Add (1,2), Multiply (3,4))
10316
10317Fixed a problem where AcpiGetHandle didn't quite get fixed in the
10318previous build (The prefix part of a relative path was handled
10319incorrectly).
10320
10321Fixed a problem where Operation Region initialization failed if
10322the operation region name was a "namepath" instead of a simple
10323"nameseg". Symptom was an AE_NO_OPERAND error.
10324
10325Fixed a problem where an assignment to a local variable via the
10326indirect RefOf mechanism only worked for the first such
10327assignment.  Subsequent assignments were ignored.
10328
10329 ------------------------------------------
10330Summary of changes for this label: 11_15_00
10331
10332ACPI 2.0 table support with backwards support for ACPI 1.0 and the
103330.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
10334the AML  interpreter does NOT have support for the new 2.0 ASL
10335grammar terms at this time.
10336
10337All ACPI hardware access is via the GAS structures in the ACPI 2.0
10338FADT.
10339
10340All physical memory addresses across all platforms are now 64 bits
10341wide. Logical address width remains dependent on the platform
10342(i.e., "void *").
10343
10344AcpiOsMapMemory interface changed to a 64-bit physical address.
10345
10346The AML interpreter integer size is now 64 bits, as per the ACPI
103472.0 specification.
10348
10349For backwards compatibility with ACPI 1.0, ACPI tables with a
10350revision number less than 2 use 32-bit integers only.
10351
10352Fixed a problem where the evaluation of OpRegion operands did not
10353always resolve them to numbers properly.
10354
10355------------------------------------------
10356Summary of changes for this label: 10_20_00
10357
10358Fix for CBN_._STA issue.  This fix will allow correct access to
10359CBN_ OpRegions when the _STA returns 0x8.
10360
10361Support to convert ACPI constants (Ones, Zeros, One) to actual
10362values before a package object is returned
10363
10364Fix for method call as predicate to if/while construct causing
10365incorrect if/while behavior
10366
10367Fix for Else block package lengths sometimes calculated wrong (if
10368block > 63 bytes)
10369
10370Fix for Processor object length field, was always zero
10371
10372Table load abort if FACP sanity check fails
10373
10374Fix for problem with Scope(name) if name already exists
10375
10376Warning emitted if a named object referenced cannot be found
10377(resolved) during method execution.
10378
10379
10380
10381
10382
10383------------------------------------------
10384Summary of changes for this label: 9_29_00
10385
10386New table initialization interfaces: AcpiInitializeSubsystem no
10387longer has any parameters AcpiFindRootPointer - Find the RSDP (if
10388necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
10389>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
10390AcpiLoadTables
10391
10392Note: These interface changes require changes to all existing OSDs
10393
10394The PCI_Config default address space handler is always installed
10395at the root namespace object.
10396
10397-------------------------------------------
10398Summary of changes for this label: 09_15_00
10399
10400The new initialization architecture is implemented.  New
10401interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
10402AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
10403
10404(Namespace is automatically loaded when a table is loaded)
10405
10406The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1040752 bytes to 32 bytes.  There is usually one of these for every
10408namespace object, so the memory savings is significant.
10409
10410Implemented just-in-time evaluation of the CreateField operators.
10411
10412Bug fixes for IA-64 support have been integrated.
10413
10414Additional code review comments have been implemented
10415
10416The so-called "third pass parse" has been replaced by a final walk
10417through the namespace to initialize all operation regions (address
10418spaces) and fields that have not yet been initialized during the
10419execution of the various _INI and REG methods.
10420
10421New file - namespace/nsinit.c
10422
10423-------------------------------------------
10424Summary of changes for this label: 09_01_00
10425
10426Namespace manager data structures have been reworked to change the
10427primary  object from a table to a single object.  This has
10428resulted in dynamic memory  savings of 3X within the namespace and
104292X overall in the ACPI CA subsystem.
10430
10431Fixed problem where the call to AcpiEvFindPciRootBuses was
10432inadvertently left  commented out.
10433
10434Reduced the warning count when generating the source with the GCC
10435compiler.
10436
10437Revision numbers added to each module header showing the
10438SourceSafe version of the file.  Please refer to this version
10439number when giving us feedback or comments on individual modules.
10440
10441The main object types within the subsystem have been renamed to
10442clarify their  purpose:
10443
10444ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
10445ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
10446ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
10447
10448NOTE: no changes to the initialization sequence are included in
10449this label.
10450
10451-------------------------------------------
10452Summary of changes for this label: 08_23_00
10453
10454Fixed problem where TerminateControlMethod was being called
10455multiple times per  method
10456
10457Fixed debugger problem where single stepping caused a semaphore to
10458be  oversignalled
10459
10460Improved performance through additional parse object caching -
10461added  ACPI_EXTENDED_OP type
10462
10463-------------------------------------------
10464Summary of changes for this label: 08_10_00
10465
10466Parser/Interpreter integration:  Eliminated the creation of
10467complete parse trees  for ACPI tables and control methods.
10468Instead, parse subtrees are created and  then deleted as soon as
10469they are processed (Either entered into the namespace or  executed
10470by the interpreter).  This reduces the use of dynamic kernel
10471memory  significantly. (about 10X)
10472
10473Exception codes broken into classes and renumbered.  Be sure to
10474recompile all  code that includes acexcep.h.  Hopefully we won't
10475have to renumber the codes  again now that they are split into
10476classes (environment, programmer, AML code,  ACPI table, and
10477internal).
10478
10479Fixed some additional alignment issues in the Resource Manager
10480subcomponent
10481
10482Implemented semaphore tracking in the AcpiExec utility, and fixed
10483several places  where mutexes/semaphores were being unlocked
10484without a corresponding lock  operation.  There are no known
10485semaphore or mutex "leaks" at this time.
10486
10487Fixed the case where an ASL Return operator is used to return an
10488unnamed  package.
10489
10490-------------------------------------------
10491Summary of changes for this label: 07_28_00
10492
10493Fixed a problem with the way addresses were calculated in
10494AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
10495manifested itself when a Field was  created with WordAccess or
10496DwordAccess, but the field unit defined within the  Field was less
10497
10498than a Word or Dword.
10499
10500Fixed a problem in AmlDumpOperands() module's loop to pull
10501operands off of the  operand stack to display information. The
10502problem manifested itself as a TLB  error on 64-bit systems when
10503accessing an operand stack with two or more  operands.
10504
10505Fixed a problem with the PCI configuration space handlers where
10506context was  getting confused between accesses. This required a
10507change to the generic address  space handler and address space
10508setup definitions. Handlers now get both a  global handler context
10509(this is the one passed in by the user when executing
10510AcpiInstallAddressSpaceHandler() and a specific region context
10511that is unique to  each region (For example, the _ADR, _SEG and
10512_BBN values associated with a  specific region). The generic
10513function definitions have changed to the  following:
10514
10515typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
10516UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
10517*HandlerContext, // This used to be void *Context void
10518*RegionContext); // This is an additional parameter
10519
10520typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
10521RegionHandle, UINT32 Function, void *HandlerContext,  void
10522**RegionContext); // This used to be **ReturnContext
10523
10524-------------------------------------------
10525Summary of changes for this label: 07_21_00
10526
10527Major file consolidation and rename.  All files within the
10528interpreter have been  renamed as well as most header files.  This
10529was done to prevent collisions with  existing files in the host
10530OSs -- filenames such as "config.h" and "global.h"  seem to be
10531quite common.  The VC project files have been updated.  All
10532makefiles  will require modification.
10533
10534The parser/interpreter integration continues in Phase 5 with the
10535implementation  of a complete 2-pass parse (the AML is parsed
10536twice) for each table;  This  avoids the construction of a huge
10537parse tree and therefore reduces the amount of  dynamic memory
10538required by the subsystem.  Greater use of the parse object cache
10539means that performance is unaffected.
10540
10541Many comments from the two code reviews have been rolled in.
10542
10543The 64-bit alignment support is complete.
10544
10545-------------------------------------------
10546Summary of changes for this label: 06_30_00
10547
10548With a nod and a tip of the hat to the technology of yesteryear,
10549we've added  support in the source code for 80 column output
10550devices.  The code is now mostly  constrained to 80 columns or
10551less to support environments and editors that 1)  cannot display
10552or print more than 80 characters on a single line, and 2) cannot
10553disable line wrapping.
10554
10555A major restructuring of the namespace data structure has been
10556completed.  The  result is 1) cleaner and more
10557understandable/maintainable code, and 2) a  significant reduction
10558in the dynamic memory requirement for each named ACPI  object
10559(almost half).
10560
10561-------------------------------------------
10562Summary of changes for this label: 06_23_00
10563
10564Linux support has been added.  In order to obtain approval to get
10565the ACPI CA  subsystem into the Linux kernel, we've had to make
10566quite a few changes to the  base subsystem that will affect all
10567users (all the changes are generic and OS- independent).  The
10568effects of these global changes have been somewhat far  reaching.
10569Files have been merged and/or renamed and interfaces have been
10570renamed.   The major changes are described below.
10571
10572Osd* interfaces renamed to AcpiOs* to eliminate namespace
10573pollution/confusion  within our target kernels.  All OSD
10574interfaces must be modified to match the new  naming convention.
10575
10576Files merged across the subsystem.  A number of the smaller source
10577and header  files have been merged to reduce the file count and
10578increase the density of the  existing files.  There are too many
10579to list here.  In general, makefiles that  call out individual
10580files will require rebuilding.
10581
10582Interpreter files renamed.  All interpreter files now have the
10583prefix am*  instead of ie* and is*.
10584
10585Header files renamed:  The acapi.h file is now acpixf.h.  The
10586acpiosd.h file is  now acpiosxf.h.  We are removing references to
10587the acronym "API" since it is  somewhat windowsy. The new name is
10588"external interface" or xface or xf in the  filenames.j
10589
10590
10591All manifest constants have been forced to upper case (some were
10592mixed case.)   Also, the string "ACPI_" has been prepended to many
10593(not all) of the constants,  typedefs, and structs.
10594
10595The globals "DebugLevel" and "DebugLayer" have been renamed
10596"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
10597
10598All other globals within the subsystem are now prefixed with
10599"AcpiGbl_" Internal procedures within the subsystem are now
10600prefixed with "Acpi" (with only  a few exceptions).  The original
10601two-letter abbreviation for the subcomponent  remains after "Acpi"
10602- for example, CmCallocate became AcpiCmCallocate.
10603
10604Added a source code translation/conversion utility.  Used to
10605generate the Linux  source code, it can be modified to generate
10606other types of source as well. Can  also be used to cleanup
10607existing source by removing extraneous spaces and blank  lines.
10608Found in tools/acpisrc/*
10609
10610OsdUnMapMemory was renamed to OsdUnmapMemory and then
10611AcpiOsUnmapMemory.  (UnMap  became Unmap).
10612
10613A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
10614When set to  one, this indicates that the caller wants to use the
10615
10616semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
10617both types.  However, implementers of this  call may want to use
10618different OS primitives depending on the type of semaphore
10619requested.  For example, some operating systems provide separate
10620
10621"mutex" and  "semaphore" interfaces - where the mutex interface is
10622much faster because it  doesn't have all the overhead of a full
10623semaphore implementation.
10624
10625Fixed a deadlock problem where a method that accesses the PCI
10626address space can  block forever if it is the first access to the
10627space.
10628
10629-------------------------------------------
10630Summary of changes for this label: 06_02_00
10631
10632Support for environments that cannot handle unaligned data
10633accesses (e.g.  firmware and OS environments devoid of alignment
10634handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
10635been added (via configurable macros) in  these three areas: -
10636Transfer of data from the raw AML byte stream is done via byte
10637moves instead of    word/dword/qword moves. - External objects are
10638aligned within the user buffer, including package   elements (sub-
10639objects). - Conversion of name strings to UINT32 Acpi Names is now
10640done byte-wise.
10641
10642The Store operator was modified to mimic Microsoft's
10643implementation when storing  to a Buffer Field.
10644
10645Added a check of the BM_STS bit before entering C3.
10646
10647The methods subdirectory has been obsoleted and removed.  A new
10648file, cmeval.c  subsumes the functionality.
10649
10650A 16-bit (DOS) version of AcpiExec has been developed.  The
10651makefile is under  the acpiexec directory.
10652