xref: /titanic_52/usr/src/uts/intel/io/acpica/changes.txt (revision 940d71d237794874e18a0eb72f6564821a823517)
1----------------------------------------
221 July 2006. Summary of changes for version 20060721:
3
41) ACPI CA Core Subsystem:
5
6The full source code for the ASL test suite used to validate the
7iASL compiler and the ACPICA core subsystem is being released
8with the ACPICA source for the first time. The source is
9contained in a separate package and consists of over 1100 files
10that exercise all ASL/AML operators. The package should appear on
11the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
12Suietov)
13
14Completed a new design and implementation for support of the ACPI
15Global Lock. On the OS side, the global lock is now treated as a
16standard AML mutex. Previously, multiple OS threads could
17"acquire" the global lock simultaneously. However, this could
18cause the BIOS to be starved out of the lock - especially in
19cases such as the Embedded Controller driver where there is a
20tight coupling between the OS and the BIOS.
21
22Implemented an optimization for the ACPI Global Lock interrupt
23mechanism. The Global Lock interrupt handler no longer queues the
24execution of a separate thread to signal the global lock
25semaphore. Instead, the semaphore is signaled directly from the
26interrupt handler.
27
28Implemented support within the AML interpreter for package
29objects that contain a larger AML length (package list length)
30than the package element count. In this case, the length of the
31package is truncated to match the package element count. Some
32BIOS code apparently modifies the package length on the fly, and
33this change supports this behavior. Provides compatibility with
34the MS AML interpreter. (With assistance from Fiodor Suietov)
35
36Implemented a temporary fix for the BankValue parameter of a Bank
37Field to support all constant values, now including the Zero and
38One opcodes. Evaluation of this parameter must eventually be
39converted to a full TermArg evaluation. A not-implemented error
40is now returned (temporarily) for non-constant values for this
41parameter.
42
43Fixed problem reports (Fiodor Suietov) integrated:
44- Fix for premature object deletion after CopyObject on Operation
45Region (BZ 350)
46
47Example Code and Data Size: These are the sizes for the OS-
48independent acpica.lib produced by the Microsoft Visual C++ 6.0
4932-bit compiler. The debug version of the code includes the debug
50output trace mechanism and has a much larger code and data size.
51
52  Previous Release:
53    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
54    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
55  Current Release:
56    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
57    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
58
59
602) iASL Compiler/Disassembler and Tools:
61
62No changes for this release.
63
64----------------------------------------
6507 July 2006. Summary of changes for version 20060707:
66
671) ACPI CA Core Subsystem:
68
69Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C
70compilers that do not allow the initialization of address
71pointers within packed structures - even though the hardware
72itself may support misaligned transfers. Some of the debug data
73structures are packed by default to minimize size.
74
75Added an error message for the case where AcpiOsGetThreadId()
76returns zero. A non-zero value is required by the core ACPICA
77code to ensure the proper operation of AML mutexes and recursive
78control methods.
79
80The DSDT is now the only ACPI table that determines whether the
81AML interpreter is in 32-bit or 64-bit mode. Not really a
82functional change, but the hooks for per-table 32/64 switching
83have been removed from the code. A clarification to the ACPI
84specification is forthcoming in ACPI 3.0B.
85
86Fixed a possible leak of an OwnerID in the error path of
87AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table
88OwnerID deletion to a single place in AcpiTbUninstallTable to
89correct possible leaks when using the AcpiTbDeleteTablesByType
90interface (with assistance from Lance Ortiz.)
91
92Fixed a problem with Serialized control methods where the
93semaphore associated with the method could be over-signaled after
94multiple method invocations.
95
96Fixed two issues with the locking of the internal namespace data
97structure. Both the Unload() operator and AcpiUnloadTable
98interface now lock the namespace during the namespace deletion
99associated with the table unload (with assistance from Linn
100Crosetto.)
101
102Fixed problem reports (Valery Podrezov) integrated:
103- Eliminate unnecessary memory allocation for CreateXxxxField (BZ
1045426)
105
106Fixed problem reports (Fiodor Suietov) integrated:
107- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
108- On Address Space handler deletion, needless deactivation call
109(BZ 374)
110- AcpiRemoveAddressSpaceHandler: validate Device handle parameter
111(BZ 375)
112- Possible memory leak, Notify sub-objects of Processor, Power,
113ThermalZone (BZ 376)
114- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ
115378)
116- Minimum Length of RSDT should be validated (BZ 379)
117- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj
118has no Handler (BZ (380)
119- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified
120type loaded (BZ 381)
121
122Example Code and Data Size: These are the sizes for the OS-
123independent acpica.lib produced by the Microsoft Visual C++ 6.0
12432-bit compiler. The debug version of the code includes the debug
125output trace mechanism and has a much larger code and data size.
126
127  Previous Release:
128    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
129    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
130  Current Release:
131    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
132    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
133
134
1352) iASL Compiler/Disassembler and Tools:
136
137Fixed problem reports:
138Compiler segfault when ASL contains a long (>1024) String
139declaration (BZ 436)
140
141----------------------------------------
14223 June 2006. Summary of changes for version 20060623:
143
1441) ACPI CA Core Subsystem:
145
146Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces.
147This allows the type to be customized to the host OS for improved
148efficiency (since a spinlock is usually a very small object.)
149
150Implemented support for "ignored" bits in the ACPI registers.
151According to the ACPI specification, these bits should be
152preserved when writing the registers via a read/modify/write
153cycle. There are 3 bits preserved in this manner: PM1_CONTROL[0]
154(SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
155
156Implemented the initial deployment of new OSL mutex interfaces.
157Since some host operating systems have separate mutex and
158semaphore objects, this feature was requested. The base code now
159uses mutexes (and the new mutex interfaces) wherever a binary
160semaphore was used previously. However, for the current release,
161the mutex interfaces are defined as macros to map them to the
162existing semaphore interfaces. Therefore, no OSL changes are
163required at this time. (See acpiosxf.h)
164
165Fixed several problems with the support for the control method
166SyncLevel parameter. The SyncLevel now works according to the
167ACPI specification and in concert with the Mutex SyncLevel
168parameter, since the current SyncLevel is a property of the
169executing thread. Mutual exclusion for control methods is now
170implemented with a mutex instead of a semaphore.
171
172Fixed three instances of the use of the C shift operator in the
173bitfield support code (exfldio.c) to avoid the use of a shift
174value larger than the target data width. The behavior of C
175compilers is undefined in this case and can cause unpredictable
176results, and therefore the case must be detected and avoided.
177(Fiodor Suietov)
178
179Added an info message whenever an SSDT or OEM table is loaded
180dynamically via the Load() or LoadTable() ASL operators. This
181should improve debugging capability since it will show exactly
182what tables have been loaded (beyond the tables present in the
183RSDT/XSDT.)
184
185Example Code and Data Size: These are the sizes for the OS-
186independent acpica.lib produced by the Microsoft Visual C++ 6.0
18732-bit compiler. The debug version of the code includes the debug
188output trace mechanism and has a much larger code and data size.
189
190  Previous Release:
191    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
192    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
193  Current Release:
194    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
195    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
196
197
1982) iASL Compiler/Disassembler and Tools:
199
200No changes for this release.
201
202----------------------------------------
20308 June 2006. Summary of changes for version 20060608:
204
2051) ACPI CA Core Subsystem:
206
207Converted the locking mutex used for the ACPI hardware to a
208spinlock. This change should eliminate all problems caused by
209attempting to acquire a semaphore at interrupt level, and it
210means that all ACPICA external interfaces that directly access
211the ACPI hardware can be safely called from interrupt level. OSL
212code that implements the semaphore interfaces should be able to
213eliminate any workarounds for being called at interrupt level.
214
215Fixed a regression introduced in 20060526 where the ACPI device
216initialization could be prematurely aborted with an AE_NOT_FOUND
217if a device did not have an optional _INI method.
218
219Fixed an IndexField issue where a write to the Data Register
220should be limited in size to the AccessSize (width) of the
221IndexField itself. (BZ 433, Fiodor Suietov)
222
223Fixed problem reports (Valery Podrezov) integrated:
224- Allow store of ThermalZone objects to Debug object (BZ
2255369/5370)
226
227Fixed problem reports (Fiodor Suietov) integrated:
228- AcpiGetTableHeader doesn't handle multiple instances correctly
229(BZ 364)
230
231Removed four global mutexes that were obsolete and were no longer
232being used.
233
234Example Code and Data Size: These are the sizes for the OS-
235independent acpica.lib produced by the Microsoft Visual C++ 6.0
23632-bit compiler. The debug version of the code includes the debug
237output trace mechanism and has a much larger code and data size.
238
239  Previous Release:
240    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
241    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
242  Current Release:
243    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
244    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
245
246
2472) iASL Compiler/Disassembler and Tools:
248
249Fixed a fault when using -g option (get tables from registry) on
250Windows machines.
251
252Fixed problem reports integrated:
253- Generate error if CreateField NumBits parameter is zero. (BZ
254405)
255- Fault if Offset/Length in Field unit is very large (BZ 432,
256Fiodor Suietov)
257- Global table revision override (-r) is ignored (BZ 413)
258
259----------------------------------------
26026 May 2006. Summary of changes for version 20060526:
261
2621) ACPI CA Core Subsystem:
263
264Restructured, flattened, and simplified the internal interfaces
265for namespace object evaluation - resulting in smaller code, less
266CPU stack use, and fewer interfaces. (With assistance from
267Mikhail Kouzmich)
268
269Fixed a problem with the CopyObject operator where the first
270parameter was not typed correctly for the parser, interpreter,
271compiler, and disassembler. Caused various errors and unexpected
272behavior.
273
274Fixed a problem where a ShiftLeft or ShiftRight of more than 64
275bits produced incorrect results with some C compilers. Since the
276behavior of C compilers when the shift value is larger than the
277datatype width is apparently not well defined, the interpreter
278now detects this condition and simply returns zero as expected in
279all such cases. (BZ 395)
280
281Fixed problem reports (Valery Podrezov) integrated:
282- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ
2835329)
284- Allow interpreter to handle nested method declarations (BZ
2855361)
286
287Fixed problem reports (Fiodor Suietov) integrated:
288- AcpiTerminate doesn't free debug memory allocation list objects
289(BZ 355)
290- After Core Subsystem shutdown, AcpiSubsystemStatus returns
291AE_OK (BZ 356)
292- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ
293357)
294- Resource Manager should return AE_TYPE for non-device objects
295(BZ 358)
296- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
297- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData
298(BZ 360)
299- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
300- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
301- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is
302loaded (BZ 365)
303- Status of the Global Initialization Handler call not used (BZ
304366)
305- Incorrect object parameter to Global Initialization Handler (BZ
306367)
307
308Example Code and Data Size: These are the sizes for the OS-
309independent acpica.lib produced by the Microsoft Visual C++ 6.0
31032-bit compiler. The debug version of the code includes the debug
311output trace mechanism and has a much larger code and data size.
312
313  Previous Release:
314    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
315    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
316  Current Release:
317    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
318    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
319
320
3212) iASL Compiler/Disassembler and Tools:
322
323Modified the parser to allow the names IO, DMA, and IRQ to be
324used as namespace identifiers with no collision with existing
325resource descriptor macro names. This provides compatibility with
326other ASL compilers and is most useful for
327disassembly/recompilation of existing tables without parse
328errors. (With assistance from Thomas Renninger)
329
330Disassembler: fixed an incorrect disassembly problem with the
331DataTableRegion and CopyObject operators. Fixed a possible fault
332during disassembly of some Alias operators.
333
334----------------------------------------
33512 May 2006. Summary of changes for version 20060512:
336
3371) ACPI CA Core Subsystem:
338
339Replaced the AcpiOsQueueForExecution interface with a new
340interface named AcpiOsExecute. The major difference is that the
341new interface does not have a Priority parameter, this appeared
342to be useless and has been replaced by a Type parameter. The Type
343tells the host what type of execution is being requested, such as
344global lock handler, notify handler, GPE handler, etc. This
345allows the host to queue and execute the request as appropriate
346for the request type, possibly using different work queues and
347different priorities for the various request types. This enables
348fixes for multithreading deadlock problems such as BZ #5534, and
349will require changes to all existing OS interface layers. (Alexey
350Starikovskiy and Bob Moore)
351
352Fixed a possible memory leak associated with the support for the
353so-called "implicit return" ACPI extension. Reported by FreeBSD,
354BZ #6514. (Fiodor Suietov)
355
356Fixed a problem with the Load() operator where a table load from
357an operation region could overwrite an internal table buffer by
358up to 7 bytes and cause alignment faults on IPF systems. (With
359assistance from Luming Yu)
360
361Example Code and Data Size: These are the sizes for the OS-
362independent acpica.lib produced by the Microsoft Visual C++ 6.0
36332-bit compiler. The debug version of the code includes the debug
364output trace mechanism and has a much larger code and data size.
365
366  Previous Release:
367    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
368    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
369  Current Release:
370    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
371    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
372
373
374
3752) iASL Compiler/Disassembler and Tools:
376
377Disassembler: Implemented support to cross reference the internal
378namespace and automatically generate ASL External() statements
379for symbols not defined within the current table being
380disassembled. This will simplify the disassembly and
381recompilation of interdependent tables such as SSDTs since these
382statements will no longer have to be added manually.
383
384Disassembler: Implemented experimental support to automatically
385detect invocations of external control methods and generate
386appropriate External() statements. This is problematic because
387the AML cannot be correctly parsed until the number of arguments
388for each control method is known. Currently, standalone method
389invocations and invocations as the source operand of a Store()
390statement are supported.
391
392Disassembler: Implemented support for the ASL pseudo-operators
393LNotEqual, LLessEqual, and LGreaterEqual. Previously disassembled
394as LNot(LEqual()), LNot(LGreater()), and LNot(LLess()), this
395makes the disassembled ASL code more readable and likely closer
396to the original ASL source.
397
398----------------------------------------
39921 April 2006. Summary of changes for version 20060421:
400
4011) ACPI CA Core Subsystem:
402
403Removed a device initialization optimization introduced in
40420051216 where the _STA method was not run unless an _INI was
405also present for the same device. This optimization could cause
406problems because it could allow _INI methods to be run within a
407not-present device subtree. (If a not-present device had no _INI,
408_STA would not be run, the not-present status would not be
409discovered, and the children of the device would be incorrectly
410traversed.)
411
412Implemented a new _STA optimization where namespace subtrees that
413do not contain _INI are identified and ignored during device
414initialization. Selectively running _STA can significantly
415improve boot time on large machines (with assistance from Len
416Brown.)
417
418Implemented support for the device initialization case where the
419returned _STA flags indicate a device not-present but
420functioning. In this case, _INI is not run, but the device
421children are examined for presence, as per the ACPI
422specification.
423
424Implemented an additional change to the IndexField support in
425order to conform to MS behavior. The value written to the Index
426Register is not simply a byte offset, it is a byte offset in
427units of the access width of the parent Index Field. (Fiodor
428Suietov)
429
430Defined and deployed a new OSL interface, AcpiOsValidateAddress.
431This interface is called during the creation of all AML operation
432regions, and allows the host OS to exert control over what
433addresses it will allow the AML code to access. Operation Regions
434whose addresses are disallowed will cause a runtime exception
435when they are actually accessed (will not affect or abort table
436loading.) See oswinxf or osunixxf for an example implementation.
437
438Defined and deployed a new OSL interface,
439AcpiOsValidateInterface. This interface allows the host OS to
440match the various "optional" interface/behavior strings for the
441_OSI predefined control method as appropriate (with assistance
442from Bjorn Helgaas.) See oswinxf or osunixxf for an example
443implementation.
444
445Restructured and corrected various problems in the exception
446handling code paths within DsCallControlMethod and
447DsTerminateControlMethod in dsmethod (with assistance from
448Takayoshi Kochi.)
449
450Modified the Linux source converter to ignore quoted string
451literals while converting identifiers from mixed to lower case.
452This will correct problems with the disassembler and other areas
453where such strings must not be modified.
454
455The ACPI_FUNCTION_* macros no longer require quotes around the
456function name. This allows the Linux source converter to convert
457the names, now that the converter ignores quoted strings.
458
459Example Code and Data Size: These are the sizes for the OS-
460independent acpica.lib produced by the Microsoft Visual C++ 6.0
46132-bit compiler. The debug version of the code includes the debug
462output trace mechanism and has a much larger code and data size.
463
464  Previous Release:
465
466    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
467    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
468  Current Release:
469    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
470    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
471
472
4732) iASL Compiler/Disassembler and Tools:
474
475Implemented 3 new warnings for iASL, and implemented multiple
476warning levels (w2 flag).
477
4781) Ignored timeouts: If the TimeoutValue parameter to Wait or
479Acquire is not WAIT_FOREVER (0xFFFF) and the code does not
480examine the return value to check for the possible timeout, a
481warning is issued.
482
4832) Useless operators: If an ASL operator does not specify an
484optional target operand and it also does not use the function
485return value from the operator, a warning is issued since the
486operator effectively does nothing.
487
4883) Unreferenced objects: If a namespace object is created, but
489never referenced, a warning is issued. This is a warning level 2
490since there are cases where this is ok, such as when a secondary
491table is loaded that uses the unreferenced objects. Even so, care
492is taken to only flag objects that don't look like they will ever
493be used. For example, the reserved methods (starting with an
494underscore) are usually not referenced because it is expected
495that the OS will invoke them.
496
497----------------------------------------
49831 March 2006. Summary of changes for version 20060331:
499
5001) ACPI CA Core Subsystem:
501
502Implemented header file support for the following additional ACPI
503tables: ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT.
504With this support, all current and known ACPI tables are now
505defined in the ACPICA headers and are available for use by device
506drivers and other software.
507
508Implemented support to allow tables that contain ACPI names with
509invalid characters to be loaded. Previously, this would cause the
510table load to fail, but since there are several known cases of
511such tables on existing machines, this change was made to enable
512ACPI support for them. Also, this matches the behavior of the
513Microsoft ACPI implementation.
514
515Fixed a couple regressions introduced during the memory
516optimization in the 20060317 release. The namespace node
517definition required additional reorganization and an internal
518datatype that had been changed to 8-bit was restored to 32-bit.
519(Valery Podrezov)
520
521Fixed a problem where a null pointer passed to
522AcpiUtDeleteGenericState could be passed through to
523AcpiOsReleaseObject which is unexpected. Such null pointers are
524now trapped and ignored, matching the behavior of the previous
525implementation before the deployment of AcpiOsReleaseObject.
526(Valery Podrezov, Fiodor Suietov)
527
528Fixed a memory mapping leak during the deletion of a SystemMemory
529operation region where a cached memory mapping was not deleted.
530This became a noticeable problem for operation regions that are
531defined within frequently used control methods. (Dana Meyers)
532
533Reorganized the ACPI table header files into two main files: one
534for the ACPI tables consumed by the ACPICA core, and another for
535the miscellaneous ACPI tables that are consumed by the drivers
536and other software. The various FADT definitions were merged into
537one common section and three different tables (ACPI 1.0, 1.0+,
538and 2.0)
539
540Example Code and Data Size: These are the sizes for the OS-
541independent acpica.lib produced by the Microsoft Visual C++ 6.0
54232-bit compiler. The debug version of the code includes the debug
543output trace mechanism and has a much larger code and data size.
544
545  Previous Release:
546    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
547    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
548  Current Release:
549    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
550    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
551
552
5532) iASL Compiler/Disassembler and Tools:
554
555Disassembler: Implemented support to decode and format all non-
556AML ACPI tables (tables other than DSDTs and SSDTs.) This
557includes the new tables added to the ACPICA headers, therefore
558all current and known ACPI tables are supported.
559
560Disassembler: The change to allow ACPI names with invalid
561characters also enables the disassembly of such tables. Invalid
562characters within names are changed to '*' to make the name
563printable; the iASL compiler will still generate an error for
564such names, however, since this is an invalid ACPI character.
565
566Implemented an option for AcpiXtract (-a) to extract all tables
567found in the input file. The default invocation extracts only the
568DSDTs and SSDTs.
569
570Fixed a couple of gcc generation issues for iASL and AcpiExec and
571added a makefile for the AcpiXtract utility.
572
573----------------------------------------
57417 March 2006. Summary of changes for version 20060317:
575
5761) ACPI CA Core Subsystem:
577
578Implemented the use of a cache object for all internal namespace
579nodes. Since there are about 1000 static nodes in a typical
580system, this will decrease memory use for cache implementations
581that minimize per-allocation overhead (such as a slab allocator.)
582
583Removed the reference count mechanism for internal namespace
584nodes, since it was deemed unnecessary. This reduces the size of
585each namespace node by about 5%-10% on all platforms. Nodes are
586now 20 bytes for the 32-bit case, and 32 bytes for the 64-bit
587case.
588
589Optimized several internal data structures to reduce object size
590on 64-bit platforms by packing data within the 64-bit alignment.
591This includes the frequently used ACPI_OPERAND_OBJECT, of which
592there can be ~1000 static instances corresponding to the
593namespace objects.
594
595Added two new strings for the predefined _OSI method: "Windows
5962001.1 SP1" and "Windows 2006".
597
598Split the allocation tracking mechanism out to a separate file,
599from utalloc.c to uttrack.c. This mechanism appears to be only
600useful for application-level code. Kernels may wish to not
601include uttrack.c in distributions.
602
603Removed all remnants of the obsolete ACPI_REPORT_* macros and the
604associated code. (These macros have been replaced by the
605ACPI_ERROR and ACPI_WARNING macros.)
606
607Code and Data Size: These are the sizes for the acpica.lib
608produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
609values do not include any ACPI driver or OSPM code. The debug
610version of the code includes the debug output trace mechanism and
611has a much larger code and data size. Note that these values will
612vary depending on the efficiency of the compiler and the compiler
613options used during generation.
614
615  Previous Release:
616    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
617    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
618  Current Release:
619    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
620    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
621
622
6232) iASL Compiler/Disassembler and Tools:
624
625Implemented an ANSI C version of the acpixtract utility. This
626version will automatically extract the DSDT and all SSDTs from
627the input acpidump text file and dump the binary output to
628separate files. It can also display a summary of the input file
629including the headers for each table found and will extract any
630single ACPI table, with any signature. (See
631source/tools/acpixtract)
632
633----------------------------------------
63410 March 2006. Summary of changes for version 20060310:
635
6361) ACPI CA Core Subsystem:
637
638Tagged all external interfaces to the subsystem with the new
639ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary
640to assist kernel integration. For Linux, the macro resolves to
641the EXPORT_SYMBOL macro. The default definition is NULL.
642
643Added the ACPI_THREAD_ID type for the return value from
644AcpiOsGetThreadId. This allows the host to define this as
645necessary to simplify kernel integration. The default definition
646is ACPI_NATIVE_UINT.
647
648Fixed two interpreter problems related to error processing, the
649deletion of objects, and placing invalid pointers onto the
650internal operator result stack. BZ 6028, 6151 (Valery Podrezov)
651
652Increased the reference count threshold where a warning is
653emitted for large reference counts in order to eliminate
654unnecessary warnings on systems with large namespaces (especially
65564-bit.) Increased the value from 0x400 to 0x800.
656
657Due to universal disagreement as to the meaning of the 'c' in the
658calloc() function, the ACPI_MEM_CALLOCATE macro has been renamed
659to ACPI_ALLOCATE_ZEROED so that the purpose of the interface is
660'clear'. ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to
661ACPI_ALLOCATE and ACPI_FREE.
662
663Code and Data Size: These are the sizes for the acpica.lib
664produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
665values do not include any ACPI driver or OSPM code. The debug
666version of the code includes the debug output trace mechanism and
667has a much larger code and data size. Note that these values will
668vary depending on the efficiency of the compiler and the compiler
669options used during generation.
670
671  Previous Release:
672    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
673    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
674  Current Release:
675    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
676    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
677
678
6792) iASL Compiler/Disassembler:
680
681Disassembler: implemented support for symbolic resource
682descriptor references. If a CreateXxxxField operator references a
683fixed offset within a resource descriptor, a name is assigned to
684the descriptor and the offset is translated to the appropriate
685resource tag and pathname. The addition of this support brings
686the disassembled code very close to the original ASL source code
687and helps eliminate run-time errors when the disassembled code is
688modified (and recompiled) in such a way as to invalidate the
689original fixed offsets.
690
691Implemented support for a Descriptor Name as the last parameter
692to the ASL Register() macro. This parameter was inadvertently
693left out of the ACPI specification, and will be added for ACPI
6943.0b.
695
696Fixed a problem where the use of the "_OSI" string (versus the
697full path "\_OSI") caused an internal compiler error. ("No back
698ptr to op")
699
700Fixed a problem with the error message that occurs when an
701invalid string is used for a _HID object (such as one with an
702embedded asterisk: "*PNP010A".) The correct message is now
703displayed.
704
705----------------------------------------
70617 February 2006. Summary of changes for version 20060217:
707
7081) ACPI CA Core Subsystem:
709
710Implemented a change to the IndexField support to match the
711behavior of the Microsoft AML interpreter. The value written to
712the Index register is now a byte offset, no longer an index based
713upon the width of the Data register. This should fix IndexField
714problems seen on some machines where the Data register is not
715exactly one byte wide. The ACPI specification will be clarified
716on this point.
717
718Fixed a problem where several resource descriptor types could
719overrun the internal descriptor buffer due to size
720miscalculation: VendorShort, VendorLong, and Interrupt. This was
721noticed on IA64 machines, but could affect all platforms.
722
723Fixed a problem where individual resource descriptors were
724misaligned within the internal buffer, causing alignment faults
725on IA64 platforms.
726
727Code and Data Size: These are the sizes for the acpica.lib
728produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
729values do not include any ACPI driver or OSPM code. The debug
730version of the code includes the debug output trace mechanism and
731has a much larger code and data size. Note that these values will
732vary depending on the efficiency of the compiler and the compiler
733options used during generation.
734
735  Previous Release:
736    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
737    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
738  Current Release:
739    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
740    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
741
742
7432) iASL Compiler/Disassembler:
744
745Implemented support for new reserved names: _WDG and _WED are
746Microsoft extensions for Windows Instrumentation Management, _TDL
747is a new ACPI-defined method (Throttling Depth Limit.)
748
749Fixed a problem where a zero-length VendorShort or VendorLong
750resource descriptor was incorrectly emitted as a descriptor of
751length one.
752
753----------------------------------------
75410 February 2006. Summary of changes for version 20060210:
755
7561) ACPI CA Core Subsystem:
757
758Removed a couple of extraneous ACPI_ERROR messages that appeared
759during normal execution. These became apparent after the
760conversion from ACPI_DEBUG_PRINT.
761
762Fixed a problem where the CreateField operator could hang if the
763BitIndex or NumBits parameter referred to a named object. (Valery
764Podrezov, BZ 5359)
765
766Fixed a problem where a DeRefOf operation on a buffer object
767incorrectly failed with an exception. This also fixes a couple of
768related RefOf and DeRefOf issues. (Valery Podrezov, BZ
7695360/5392/5387)
770
771Fixed a problem where the AE_BUFFER_LIMIT exception was returned
772instead of AE_STRING_LIMIT on an out-of-bounds Index() operation.
773(Valery Podrezov, BZ 5480)
774
775Implemented a memory cleanup at the end of the execution of each
776iteration of an AML While() loop, preventing the accumulation of
777outstanding objects. (Valery Podrezov, BZ 5427)
778
779Eliminated a chunk of duplicate code in the object resolution
780code. (Valery Podrezov, BZ 5336)
781
782Fixed several warnings during the 64-bit code generation.
783
784The AcpiSrc source code conversion tool now inserts one line of
785whitespace after an if() statement that is followed immediately
786by a comment, improving readability of the Linux code.
787
788Code and Data Size: The current and previous library sizes for
789the core subsystem are shown below. These are the code and data
790sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
79132-bit compiler. These values do not include any ACPI driver or
792OSPM code. The debug version of the code includes the debug
793output trace mechanism and has a much larger code and data size.
794Note that these values will vary depending on the efficiency of
795the compiler and the compiler options used during generation.
796
797  Previous Release:
798    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
799    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
800  Current Release:
801    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
802    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
803
804
8052) iASL Compiler/Disassembler:
806
807Fixed a problem with the disassembly of a BankField operator with
808a complex expression for the BankValue parameter.
809
810----------------------------------------
81127 January 2006. Summary of changes for version 20060127:
812
8131) ACPI CA Core Subsystem:
814
815Implemented support in the Resource Manager to allow unresolved
816namestring references within resource package objects for the
817_PRT method. This support is in addition to the previously
818implemented unresolved reference support within the AML parser.
819If the interpreter slack mode is enabled, these unresolved
820references will be passed through to the caller as a NULL package
821entry.
822
823Implemented and deployed new macros and functions for error and
824warning messages across the subsystem. These macros are simpler
825and generate less code than their predecessors. The new macros
826ACPI_ERROR, ACPI_EXCEPTION, ACPI_WARNING, and ACPI_INFO replace
827the ACPI_REPORT_* macros. The older macros remain defined to
828allow ACPI drivers time to migrate to the new macros.
829
830Implemented the ACPI_CPU_FLAGS type to simplify host OS
831integration of the Acquire/Release Lock OSL interfaces.
832
833Fixed a problem where Alias ASL operators are sometimes not
834correctly resolved, in both the interpreter and the iASL
835compiler.
836
837Fixed several problems with the implementation of the
838ConcatenateResTemplate ASL operator. As per the ACPI
839specification, zero length buffers are now treated as a single
840EndTag. One-length buffers always cause a fatal exception. Non-
841zero length buffers that do not end with a full 2-byte EndTag
842cause a fatal exception.
843
844Fixed a possible structure overwrite in the AcpiGetObjectInfo
845external interface. (With assistance from Thomas Renninger)
846
847Code and Data Size: The current and previous library sizes for
848the core subsystem are shown below. These are the code and data
849sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
85032-bit compiler. These values do not include any ACPI driver or
851OSPM code. The debug version of the code includes the debug
852output trace mechanism and has a much larger code and data size.
853Note that these values will vary depending on the efficiency of
854the compiler and the compiler options used during generation.
855
856  Previous Release:
857    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
858    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
859  Current Release:
860    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
861    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
862
863
8642) iASL Compiler/Disassembler:
865
866Fixed an internal error that was generated for any forward
867references to ASL Alias objects.
868
869----------------------------------------
87013 January 2006. Summary of changes for version 20060113:
871
8721) ACPI CA Core Subsystem:
873
874Added 2006 copyright to all module headers and signons. This
875affects virtually every file in the ACPICA core subsystem, iASL
876compiler, and the utilities.
877
878Enhanced the ACPICA error reporting in order to simplify user
879migration to the non-debug version of ACPICA. Replaced all
880instances of the ACPI_DEBUG_PRINT macro invoked at the
881ACPI_DB_ERROR and ACPI_DB_WARN debug levels with the
882ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, respectively.
883This preserves all error and warning messages in the non-debug
884version of the ACPICA code (this has been referred to as the
885"debug lite" option.) Over 200 cases were converted to create a
886total of over 380 error/warning messages across the ACPICA code.
887This increases the code and data size of the default non-debug
888version of the code somewhat (about 13K), but all error/warning
889reporting may be disabled if desired (and code eliminated) by
890specifying the ACPI_NO_ERROR_MESSAGES compile-time configuration
891option. The size of the debug version of ACPICA remains about the
892same.
893
894Fixed a memory leak within the AML Debugger "Set" command. One
895object was not properly deleted for every successful invocation
896of the command.
897
898Code and Data Size: The current and previous library sizes for
899the core subsystem are shown below. These are the code and data
900sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
90132-bit compiler. These values do not include any ACPI driver or
902OSPM code. The debug version of the code includes the debug
903output trace mechanism and has a much larger code and data size.
904Note that these values will vary depending on the efficiency of
905the compiler and the compiler options used during generation.
906
907  Previous Release:
908    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
909    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
910  Current Release:
911    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
912    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
913
914
9152) iASL Compiler/Disassembler:
916
917The compiler now officially supports the ACPI 3.0a specification
918that was released on December 30, 2005. (Specification is
919available at www.acpi.info)
920
921----------------------------------------
92216 December 2005. Summary of changes for version 20051216:
923
9241) ACPI CA Core Subsystem:
925
926Implemented optional support to allow unresolved names within ASL
927Package objects. A null object is inserted in the package when a
928named reference cannot be located in the current namespace.
929Enabled via the interpreter slack flag, this should eliminate
930AE_NOT_FOUND exceptions seen on machines that contain such code.
931
932Implemented an optimization to the initialization sequence that
933can improve boot time. During ACPI device initialization, the
934_STA method is now run if and only if the _INI method exists. The
935_STA method is used to determine if the device is present; An
936_INI can only be run if _STA returns present, but it is a waste
937of time to run the _STA method if the _INI does not exist.
938(Prototype and assistance from Dong Wei)
939
940Implemented use of the C99 uintptr_t for the pointer casting
941macros if it is available in the current compiler. Otherwise, the
942default (void *) cast is used as before.
943
944Fixed some possible memory leaks found within the execution path
945of the Break, Continue, If, and CreateField operators. (Valery
946Podrezov)
947
948Fixed a problem introduced in the 20051202 release where an
949exception is generated during method execution if a control
950method attempts to declare another method.
951
952Moved resource descriptor string constants that are used by both
953the AML disassembler and AML debugger to the common utilities
954directory so that these components are independent.
955
956Implemented support in the AcpiExec utility (-e switch) to
957globally ignore exceptions during control method execution
958(method is not aborted.)
959
960Added the rsinfo.c source file to the AcpiExec makefile for
961Linux/Unix generation.
962
963Code and Data Size: The current and previous library sizes for
964the core subsystem are shown below. These are the code and data
965sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
96632-bit compiler. These values do not include any ACPI driver or
967OSPM code. The debug version of the code includes the debug
968output trace mechanism and has a much larger code and data size.
969Note that these values will vary depending on the efficiency of
970the compiler and the compiler options used during generation.
971
972  Previous Release:
973    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
974    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
975  Current Release:
976    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
977    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
978
979
9802) iASL Compiler/Disassembler:
981
982Fixed a problem where a CPU stack overflow fault could occur if a
983recursive method call was made from within a Return statement.
984
985----------------------------------------
98602 December 2005. Summary of changes for version 20051202:
987
9881) ACPI CA Core Subsystem:
989
990Modified the parsing of control methods to no longer create
991namespace objects during the first pass of the parse. Objects are
992now created only during the execute phase, at the moment the
993namespace creation operator is encountered in the AML (Name,
994OperationRegion, CreateByteField, etc.) This should eliminate
995ALREADY_EXISTS exceptions seen on some machines where reentrant
996control methods are protected by an AML mutex. The mutex will now
997correctly block multiple threads from attempting to create the
998same object more than once.
999
1000Increased the number of available Owner Ids for namespace object
1001tracking from 32 to 255. This should eliminate the OWNER_ID_LIMIT
1002exceptions seen on some machines with a large number of ACPI
1003tables (either static or dynamic).
1004
1005Fixed a problem with the AcpiExec utility where a fault could
1006occur when the -b switch (batch mode) is used.
1007
1008Enhanced the namespace dump routine to output the owner ID for
1009each namespace object.
1010
1011Code and Data Size: The current and previous library sizes for
1012the core subsystem are shown below. These are the code and data
1013sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
101432-bit compiler. These values do not include any ACPI driver or
1015OSPM code. The debug version of the code includes the debug
1016output trace mechanism and has a much larger code and data size.
1017Note that these values will vary depending on the efficiency of
1018the compiler and the compiler options used during generation.
1019
1020  Previous Release:
1021    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1022    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1023  Current Release:
1024    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1025    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
1026
1027
10282) iASL Compiler/Disassembler:
1029
1030Fixed a parse error during compilation of certain Switch/Case
1031constructs. To simplify the parse, the grammar now allows for
1032multiple Default statements and this error is now detected and
1033flagged during the analysis phase.
1034
1035Disassembler: The disassembly now includes the contents of the
1036original table header within a comment at the start of the file.
1037This includes the name and version of the original ASL compiler.
1038
1039----------------------------------------
104017 November 2005. Summary of changes for version 20051117:
1041
10421) ACPI CA Core Subsystem:
1043
1044Fixed a problem in the AML parser where the method thread count
1045could be decremented below zero if any errors occurred during the
1046method parse phase. This should eliminate AE_AML_METHOD_LIMIT
1047exceptions seen on some machines. This also fixed a related
1048regression with the mechanism that detects and corrects methods
1049that cannot properly handle reentrancy (related to the deployment
1050of the new OwnerId mechanism.)
1051
1052Eliminated the pre-parsing of control methods (to detect errors)
1053during table load. Related to the problem above, this was causing
1054unwind issues if any errors occurred during the parse, and it
1055seemed to be overkill. A table load should not be aborted if
1056there are problems with any single control method, thus rendering
1057this feature rather pointless.
1058
1059Fixed a problem with the new table-driven resource manager where
1060an internal buffer overflow could occur for small resource
1061templates.
1062
1063Implemented a new external interface, AcpiGetVendorResource. This
1064interface will find and return a vendor-defined resource
1065descriptor within a _CRS or _PRS method via an ACPI 3.0 UUID
1066match. With assistance from Bjorn Helgaas.
1067
1068Removed the length limit (200) on string objects as per the
1069upcoming ACPI 3.0A specification. This affects the following
1070areas of the interpreter: 1) any implicit conversion of a Buffer
1071to a String, 2) a String object result of the ASL Concatentate
1072operator, 3) the String object result of the ASL ToString
1073operator.
1074
1075Fixed a problem in the Windows OS interface layer (OSL) where a
1076WAIT_FOREVER on a semaphore object would incorrectly timeout.
1077This allows the multithreading features of the AcpiExec utility
1078to work properly under Windows.
1079
1080Updated the Linux makefiles for the iASL compiler and AcpiExec to
1081include the recently added file named "utresrc.c".
1082
1083Code and Data Size: The current and previous library sizes for
1084the core subsystem are shown below. These are the code and data
1085sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
108632-bit compiler. These values do not include any ACPI driver or
1087OSPM code. The debug version of the code includes the debug
1088output trace mechanism and has a much larger code and data size.
1089Note that these values will vary depending on the efficiency of
1090the compiler and the compiler options used during generation.
1091
1092  Previous Release:
1093    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
1094    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1095  Current Release:
1096    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
1097    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1098
1099
11002) iASL Compiler/Disassembler:
1101
1102Removed the limit (200) on string objects as per the upcoming
1103ACPI 3.0A specification. For the iASL compiler, this means that
1104string literals within the source ASL can be of any length.
1105
1106Enhanced the listing output to dump the AML code for resource
1107descriptors immediately after the ASL code for each descriptor,
1108instead of in a block at the end of the entire resource template.
1109
1110Enhanced the compiler debug output to dump the entire original
1111parse tree constructed during the parse phase, before any
1112transforms are applied to the tree. The transformed tree is
1113dumped also.
1114
1115----------------------------------------
111602 November 2005. Summary of changes for version 20051102:
1117
11181) ACPI CA Core Subsystem:
1119
1120Modified the subsystem initialization sequence to improve GPE
1121support. The GPE initialization has been split into two parts in
1122order to defer execution of the _PRW methods (Power Resources for
1123Wake) until after the hardware is fully initialized and the SCI
1124handler is installed. This allows the _PRW methods to access
1125fields protected by the Global Lock. This will fix systems where
1126a NO_GLOBAL_LOCK exception has been seen during initialization.
1127
1128Converted the ACPI internal object disassemble and display code
1129within the AML debugger to fully table-driven operation, reducing
1130code size and increasing maintainability.
1131
1132Fixed a regression with the ConcatenateResTemplate() ASL operator
1133introduced in the 20051021 release.
1134
1135Implemented support for "local" internal ACPI object types within
1136the debugger "Object" command and the AcpiWalkNamespace external
1137interfaces. These local types include RegionFields, BankFields,
1138IndexFields, Alias, and reference objects.
1139
1140Moved common AML resource handling code into a new file,
1141"utresrc.c". This code is shared by both the Resource Manager and
1142the AML Debugger.
1143
1144Code and Data Size: The current and previous library sizes for
1145the core subsystem are shown below. These are the code and data
1146sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
114732-bit compiler. These values do not include any ACPI driver or
1148OSPM code. The debug version of the code includes the debug
1149output trace mechanism and has a much larger code and data size.
1150Note that these values will vary depending on the efficiency of
1151the compiler and the compiler options used during generation.
1152
1153  Previous Release:
1154    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
1155    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
1156  Current Release:
1157    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
1158    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
1159
1160
11612) iASL Compiler/Disassembler:
1162
1163Fixed a problem with very large initializer lists (more than 4000
1164elements) for both Buffer and Package objects where the parse
1165stack could overflow.
1166
1167Enhanced the pre-compile source code scan for non-ASCII
1168characters to ignore characters within comment fields. The scan
1169is now always performed and is no longer optional, detecting
1170invalid characters within a source file immediately rather than
1171during the parse phase or later.
1172
1173Enhanced the ASL grammar definition to force early reductions on
1174all list-style grammar elements so that the overall parse stack
1175usage is greatly reduced. This should improve performance and
1176reduce the possibility of parse stack overflow.
1177
1178Eliminated all reduce/reduce conflicts in the iASL parser
1179generation. Also, with the addition of a %expected statement, the
1180compiler generates from source with no warnings.
1181
1182Fixed a possible segment fault in the disassembler if the input
1183filename does not contain a "dot" extension (Thomas Renninger).
1184
1185----------------------------------------
118621 October 2005. Summary of changes for version 20051021:
1187
11881) ACPI CA Core Subsystem:
1189
1190Implemented support for the EM64T and other x86-64 processors.
1191This essentially entails recognizing that these processors
1192support non-aligned memory transfers. Previously, all 64-bit
1193processors were assumed to lack hardware support for non-aligned
1194transfers.
1195
1196Completed conversion of the Resource Manager to nearly full table-
1197driven operation. Specifically, the resource conversion code
1198(convert AML to internal format and the reverse) and the debug
1199code to dump internal resource descriptors are fully table-
1200driven, reducing code and data size and improving
1201maintainability.
1202
1203The OSL interfaces for Acquire and Release Lock now use a 64-bit
1204flag word on 64-bit processors instead of a fixed 32-bit word.
1205(With assistance from Alexey Starikovskiy)
1206
1207Implemented support within the resource conversion code for the
1208Type-Specific byte within the various ACPI 3.0 *WordSpace macros.
1209
1210Fixed some issues within the resource conversion code for the
1211type-specific flags for both Memory and I/O address resource
1212descriptors. For Memory, implemented support for the MTP and TTP
1213flags. For I/O, split the TRS and TTP flags into two separate
1214fields.
1215
1216Code and Data Size: The current and previous library sizes for
1217the core subsystem are shown below. These are the code and data
1218sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
121932-bit compiler. These values do not include any ACPI driver or
1220OSPM code. The debug version of the code includes the debug
1221output trace mechanism and has a much larger code and data size.
1222Note that these values will vary depending on the efficiency of
1223the compiler and the compiler options used during generation.
1224
1225  Previous Release:
1226    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
1227    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
1228  Current Release:
1229    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
1230    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
1231
1232
1233
12342) iASL Compiler/Disassembler:
1235
1236Relaxed a compiler restriction that disallowed a ResourceIndex
1237byte if the corresponding ResourceSource string was not also
1238present in a resource descriptor declaration. This restriction
1239caused problems with existing AML/ASL code that includes the
1240Index byte without the string. When such AML was disassembled, it
1241could not be compiled without modification. Further, the modified
1242code created a resource template with a different size than the
1243original, breaking code that used fixed offsets into the resource
1244template buffer.
1245
1246Removed a recent feature of the disassembler to ignore a lone
1247ResourceIndex byte. This byte is now emitted if present so that
1248the exact AML can be reproduced when the disassembled code is
1249recompiled.
1250
1251Improved comments and text alignment for the resource descriptor
1252code emitted by the disassembler.
1253
1254Implemented disassembler support for the ACPI 3.0 AccessSize
1255field within a Register() resource descriptor.
1256
1257----------------------------------------
125830 September 2005. Summary of changes for version 20050930:
1259
12601) ACPI CA Core Subsystem:
1261
1262Completed a major overhaul of the Resource Manager code -
1263specifically, optimizations in the area of the AML/internal
1264resource conversion code. The code has been optimized to simplify
1265and eliminate duplicated code, CPU stack use has been decreased
1266by optimizing function parameters and local variables, and naming
1267conventions across the manager have been standardized for clarity
1268and ease of maintenance (this includes function, parameter,
1269variable, and struct/typedef names.) The update may force changes
1270in some driver code, depending on how resources are handled by
1271the host OS.
1272
1273All Resource Manager dispatch and information tables have been
1274moved to a single location for clarity and ease of maintenance.
1275One new file was created, named "rsinfo.c".
1276
1277The ACPI return macros (return_ACPI_STATUS, etc.) have been
1278modified to guarantee that the argument is not evaluated twice,
1279making them less prone to macro side-effects. However, since
1280there exists the possibility of additional stack use if a
1281particular compiler cannot optimize them (such as in the debug
1282generation case), the original macros are optionally available.
1283Note that some invocations of the return_VALUE macro may now
1284cause size mismatch warnings; the return_UINT8 and return_UINT32
1285macros are provided to eliminate these. (From Randy Dunlap)
1286
1287Implemented a new mechanism to enable debug tracing for
1288individual control methods. A new external interface,
1289AcpiDebugTrace, is provided to enable this mechanism. The intent
1290is to allow the host OS to easily enable and disable tracing for
1291problematic control methods. This interface can be easily exposed
1292to a user or debugger interface if desired. See the file
1293psxface.c for details.
1294
1295AcpiUtCallocate will now return a valid pointer if a length of
1296zero is specified - a length of one is used and a warning is
1297issued. This matches the behavior of AcpiUtAllocate.
1298
1299Code and Data Size: The current and previous library sizes for
1300the core subsystem are shown below. These are the code and data
1301sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
130232-bit compiler. These values do not include any ACPI driver or
1303OSPM code. The debug version of the code includes the debug
1304output trace mechanism and has a much larger code and data size.
1305Note that these values will vary depending on the efficiency of
1306the compiler and the compiler options used during generation.
1307
1308  Previous Release:
1309    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
1310    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
1311  Current Release:
1312    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
1313    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
1314
1315
13162) iASL Compiler/Disassembler:
1317
1318A remark is issued if the effective compile-time length of a
1319package or buffer is zero. Previously, this was a warning.
1320
1321----------------------------------------
132216 September 2005. Summary of changes for version 20050916:
1323
13241) ACPI CA Core Subsystem:
1325
1326Fixed a problem within the Resource Manager where support for the
1327Generic Register descriptor was not fully implemented. This
1328descriptor is now fully recognized, parsed, disassembled, and
1329displayed.
1330
1331Completely restructured the Resource Manager code to utilize
1332table-driven dispatch and lookup, eliminating many of the large
1333switch() statements. This reduces overall subsystem code size and
1334code complexity. Affects the resource parsing and construction,
1335disassembly, and debug dump output.
1336
1337Cleaned up and restructured the debug dump output for all
1338resource descriptors. Improved readability of the output and
1339reduced code size.
1340
1341Fixed a problem where changes to internal data structures caused
1342the optional ACPI_MUTEX_DEBUG code to fail compilation if
1343specified.
1344
1345Code and Data Size: The current and previous library sizes for
1346the core subsystem are shown below. These are the code and data
1347sizes for the acpica.lib produced by the Microsoft Visual C++ 6.0
134832-bit compiler. These values do not include any ACPI driver or
1349OSPM code. The debug version of the code includes the debug
1350output trace mechanism and has a much larger code and data size.
1351Note that these values will vary depending on the efficiency of
1352the compiler and the compiler options used during generation.
1353
1354  Previous Release:
1355    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
1356    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
1357  Current Release:
1358    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
1359    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
1360
1361
13622) iASL Compiler/Disassembler:
1363
1364Updated the disassembler to automatically insert an
1365EndDependentFn() macro into the ASL stream if this macro is
1366missing in the original AML code, simplifying compilation of the
1367resulting ASL module.
1368
1369Fixed a problem in the disassembler where a disassembled
1370ResourceSource string (within a large resource descriptor) was
1371not surrounded by quotes and not followed by a comma, causing
1372errors when the resulting ASL module was compiled. Also, escape
1373sequences within a ResourceSource string are now handled
1374correctly (especially "\\")
1375
1376----------------------------------------
137702 September 2005. Summary of changes for version 20050902:
1378
13791) ACPI CA Core Subsystem:
1380
1381Fixed a problem with the internal Owner ID allocation and
1382deallocation mechanisms for control method execution and
1383recursive method invocation. This should eliminate the
1384OWNER_ID_LIMIT exceptions and "Invalid OwnerId" messages seen on
1385some systems. Recursive method invocation depth is currently
1386limited to 255. (Alexey Starikovskiy)
1387
1388Completely eliminated all vestiges of support for the "module-
1389level executable code" until this support is fully implemented
1390and debugged. This should eliminate the NO_RETURN_VALUE
1391exceptions seen during table load on some systems that invoke
1392this support.
1393
1394Fixed a problem within the resource manager code where the
1395transaction flags for a 64-bit address descriptor were handled
1396incorrectly in the type-specific flag byte.
1397
1398Consolidated duplicate code within the address descriptor
1399resource manager code, reducing overall subsystem code size.
1400
1401Fixed a fault when using the AML debugger "disassemble" command
1402to disassemble individual control methods.
1403
1404Removed references to the "release_current" directory within the
1405Unix release package.
1406
1407Code and Data Size: The current and previous core subsystem
1408library sizes are shown below. These are the code and data sizes
1409for the acpica.lib produced by the Microsoft Visual C++ 6.0
1410compiler. These values do not include any ACPI driver or OSPM
1411code. The debug version of the code includes the debug output
1412trace mechanism and has a much larger code and data size. Note
1413that these values will vary depending on the efficiency of the
1414compiler and the compiler options used during generation.
1415
1416  Previous Release:
1417    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1418    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
1419  Current Release:
1420    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
1421    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
1422
1423
14242) iASL Compiler/Disassembler:
1425
1426Implemented an error check for illegal duplicate values in the
1427interrupt and dma lists for the following ASL macros: Dma(),
1428Irq(), IrqNoFlags(), and Interrupt().
1429
1430Implemented error checking for the Irq() and IrqNoFlags() macros
1431to detect too many values in the interrupt list (16 max) and
1432invalid values in the list (range 0 - 15)
1433
1434The maximum length string literal within an ASL file is now
1435restricted to 200 characters as per the ACPI specification.
1436
1437Fixed a fault when using the -ln option (generate namespace
1438listing).
1439
1440Implemented an error check to determine if a DescriptorName
1441within a resource descriptor has already been used within the
1442current scope.
1443
1444----------------------------------------
144515 August 2005.  Summary of changes for version 20050815:
1446
14471) ACPI CA Core Subsystem:
1448
1449Implemented a full bytewise compare to determine if a table load
1450request is attempting to load a duplicate table. The compare is
1451performed if the table signatures and table lengths match. This
1452will allow different tables with the same OEM Table ID and
1453revision to be loaded - probably against the ACPI specification,
1454but discovered in the field nonetheless.
1455
1456Added the changes.txt logfile to each of the zipped release
1457packages.
1458
1459Code and Data Size: Current and previous core subsystem library
1460sizes are shown below. These are the code and data sizes for the
1461acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1462these values do not include any ACPI driver or OSPM code. The
1463debug version of the code includes the debug output trace
1464mechanism and has a much larger code and data size. Note that
1465these values will vary depending on the efficiency of the
1466compiler and the compiler options used during generation.
1467
1468  Previous Release:
1469    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1470    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
1471  Current Release:
1472    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1473    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
1474
1475
14762) iASL Compiler/Disassembler:
1477
1478Fixed a problem where incorrect AML code could be generated for
1479Package objects if optimization is disabled (via the -oa switch).
1480
1481Fixed a problem with where incorrect AML code is generated for
1482variable-length packages when the package length is not specified
1483and the number of initializer values is greater than 255.
1484
1485
1486----------------------------------------
148729 July 2005.  Summary of changes for version 20050729:
1488
14891) ACPI CA Core Subsystem:
1490
1491Implemented support to ignore an attempt to install/load a
1492particular ACPI table more than once. Apparently there exists
1493BIOS code that repeatedly attempts to load the same SSDT upon
1494certain events. With assistance from Venkatesh Pallipadi.
1495
1496Restructured the main interface to the AML parser in order to
1497correctly handle all exceptional conditions. This will prevent
1498leakage of the OwnerId resource and should eliminate the
1499AE_OWNER_ID_LIMIT exceptions seen on some machines. With
1500assistance from Alexey Starikovskiy.
1501
1502Support for "module level code" has been disabled in this version
1503due to a number of issues that have appeared on various machines.
1504The support can be enabled by defining
1505ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem compilation. When
1506the issues are fully resolved, the code will be enabled by
1507default again.
1508
1509Modified the internal functions for debug print support to define
1510the FunctionName parameter as a (const char *) for compatibility
1511with compiler built-in macros such as __FUNCTION__, etc.
1512
1513Linted the entire ACPICA source tree for both 32-bit and 64-bit.
1514
1515Implemented support to display an object count summary for the
1516AML Debugger commands Object and Methods.
1517
1518Code and Data Size: Current and previous core subsystem library
1519sizes are shown below. These are the code and data sizes for the
1520acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1521these values do not include any ACPI driver or OSPM code. The
1522debug version of the code includes the debug output trace
1523mechanism and has a much larger code and data size. Note that
1524these values will vary depending on the efficiency of the
1525compiler and the compiler options used during generation.
1526
1527  Previous Release:
1528    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
1529    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
1530  Current Release:
1531    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
1532    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
1533
1534
15352) iASL Compiler/Disassembler:
1536
1537Fixed a regression that appeared in the 20050708 version of the
1538compiler where an error message was inadvertently emitted for
1539invocations of the _OSI reserved control method.
1540
1541----------------------------------------
154208 July 2005.  Summary of changes for version 20050708:
1543
15441) ACPI CA Core Subsystem:
1545
1546The use of the CPU stack in the debug version of the subsystem
1547has been considerably reduced. Previously, a debug structure was
1548declared in every function that used the debug macros. This
1549structure has been removed in favor of declaring the individual
1550elements as parameters to the debug functions. This reduces the
1551cumulative stack use during nested execution of ACPI function
1552calls at the cost of a small increase in the code size of the
1553debug version of the subsystem. With assistance from Alexey
1554Starikovskiy and Len Brown.
1555
1556Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-
1557dependent headers to define a macro that will return the current
1558function name at runtime (such as __FUNCTION__ or _func_, etc.)
1559The function name is used by the debug trace output. If
1560ACPI_GET_FUNCTION_NAME is not defined in the compiler-dependent
1561header, the function name is saved on the CPU stack (one pointer
1562per function.) This mechanism is used because apparently there
1563exists no standard ANSI-C defined macro that that returns the
1564function name.
1565
1566Redesigned and reimplemented the "Owner ID" mechanism used to
1567track namespace objects created/deleted by ACPI tables and
1568control method execution. A bitmap is now used to allocate and
1569free the IDs, thus solving the wraparound problem present in the
1570previous implementation. The size of the namespace node
1571descriptor was reduced by 2 bytes as a result (Alexey
1572Starikovskiy).
1573
1574Removed the UINT32_BIT and UINT16_BIT types that were used for
1575the bitfield flag definitions within the headers for the
1576predefined ACPI tables. These have been replaced by UINT8_BIT in
1577order to increase the code portability of the subsystem. If the
1578use of UINT8 remains a problem, we may be forced to eliminate
1579bitfields entirely because of a lack of portability.
1580
1581Enhanced the performance of the AcpiUtUpdateObjectReference
1582procedure. This is a frequently used function and this
1583improvement increases the performance of the entire subsystem
1584(Alexey Starikovskiy).
1585
1586Fixed several possible memory leaks and the inverse - premature
1587object deletion (Alexey Starikovskiy).
1588
1589Code and Data Size: Current and previous core subsystem library
1590sizes are shown below. These are the code and data sizes for the
1591acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1592these values do not include any ACPI driver or OSPM code. The
1593debug version of the code includes the debug output trace
1594mechanism and has a much larger code and data size. Note that
1595these values will vary depending on the efficiency of the
1596compiler and the compiler options used during generation.
1597
1598  Previous Release:
1599    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
1600    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
1601  Current Release:
1602    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
1603    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
1604
1605----------------------------------------
160624 June 2005.  Summary of changes for version 20050624:
1607
16081) ACPI CA Core Subsystem:
1609
1610Modified the new OSL cache interfaces to use ACPI_CACHE_T as the
1611type for the host-defined cache object. This allows the OSL
1612implementation to define and type this object in any manner
1613desired, simplifying the OSL implementation. For example,
1614ACPI_CACHE_T is defined as kmem_cache_t for Linux, and should be
1615defined in the OS-specific header file for other operating
1616systems as required.
1617
1618Changed the interface to AcpiOsAcquireObject to directly return
1619the requested object as the function return (instead of
1620ACPI_STATUS.) This change was made for performance reasons, since
1621this is the purpose of the interface in the first place.
1622AcpiOsAcquireObject is now similar to the AcpiOsAllocate
1623interface.
1624
1625Implemented a new AML debugger command named Businfo. This
1626command displays information about all devices that have an
1627associate _PRT object. The _ADR, _HID, _UID, and _CID are
1628displayed for these devices.
1629
1630Modified the initialization sequence in AcpiInitializeSubsystem
1631to call the OSL interface AcpiOslInitialize first, before any
1632local initialization. This change was required because the global
1633initialization now calls OSL interfaces.
1634
1635Enhanced the Dump command to display the entire contents of
1636Package objects (including all sub-objects and their values.)
1637
1638Restructured the code base to split some files because of size
1639and/or because the code logically belonged in a separate file.
1640New files are listed below. All makefiles and project files
1641included in the ACPI CA release have been updated.
1642    utilities/utcache.c           /* Local cache interfaces */
1643    utilities/utmutex.c           /* Local mutex support */
1644    utilities/utstate.c           /* State object support */
1645    interpreter/parser/psloop.c   /* Main AML parse loop */
1646
1647Code and Data Size: Current and previous core subsystem library
1648sizes are shown below. These are the code and data sizes for the
1649acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1650these values do not include any ACPI driver or OSPM code. The
1651debug version of the code includes the debug output trace
1652mechanism and has a much larger code and data size. Note that
1653these values will vary depending on the efficiency of the
1654compiler and the compiler options used during generation.
1655
1656  Previous Release:
1657    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
1658    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
1659  Current Release:
1660    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
1661    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
1662
1663
16642) iASL Compiler/Disassembler:
1665
1666Fixed a regression introduced in version 20050513 where the use
1667of a Package object within a Case() statement caused a compile
1668time exception. The original behavior has been restored (a
1669Match() operator is emitted.)
1670
1671----------------------------------------
167217 June 2005.  Summary of changes for version 20050617:
1673
16741) ACPI CA Core Subsystem:
1675
1676Moved the object cache operations into the OS interface layer
1677(OSL) to allow the host OS to handle these operations if desired
1678(for example, the Linux OSL will invoke the slab allocator). This
1679support is optional; the compile time define ACPI_USE_LOCAL_CACHE
1680may be used to utilize the original cache code in the ACPI CA
1681core. The new OSL interfaces are shown below. See utalloc.c for
1682an example implementation, and acpiosxf.h for the exact interface
1683definitions. With assistance from Alexey Starikovskiy.
1684    AcpiOsCreateCache
1685    AcpiOsDeleteCache
1686    AcpiOsPurgeCache
1687    AcpiOsAcquireObject
1688    AcpiOsReleaseObject
1689
1690Modified the interfaces to AcpiOsAcquireLock and
1691AcpiOsReleaseLock to return and restore a flags parameter. This
1692fits better with many OS lock models. Note: the current execution
1693state (interrupt handler or not) is no longer passed to these
1694interfaces. If necessary, the OSL must determine this state by
1695itself, a simple and fast operation. With assistance from Alexey
1696Starikovskiy.
1697
1698Fixed a problem in the ACPI table handling where a valid XSDT was
1699assumed present if the revision of the RSDP was 2 or greater.
1700According to the ACPI specification, the XSDT is optional in all
1701cases, and the table manager therefore now checks for both an
1702RSDP >=2 and a valid XSDT pointer. Otherwise, the RSDT pointer is
1703used. Some ACPI 2.0 compliant BIOSs contain only the RSDT.
1704
1705Fixed an interpreter problem with the Mid() operator in the case
1706of an input string where the resulting output string is of zero
1707length. It now correctly returns a valid, null terminated string
1708object instead of a string object with a null pointer.
1709
1710Fixed a problem with the control method argument handling to
1711allow a store to an Arg object that already contains an object of
1712type Device. The Device object is now correctly overwritten.
1713Previously, an error was returned.
1714
1715
1716Enhanced the debugger Find command to emit object values in
1717addition to the found object pathnames. The output format is the
1718same as the dump namespace command.
1719
1720Enhanced the debugger Set command. It now has the ability to set
1721the value of any Named integer object in the namespace
1722(Previously, only method locals and args could be set.)
1723
1724Code and Data Size: Current and previous core subsystem library
1725sizes are shown below. These are the code and data sizes for the
1726acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1727these values do not include any ACPI driver or OSPM code. The
1728debug version of the code includes the debug output trace
1729mechanism and has a much larger code and data size. Note that
1730these values will vary depending on the efficiency of the
1731compiler and the compiler options used during generation.
1732
1733  Previous Release:
1734    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
1735    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
1736  Current Release:
1737    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
1738    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
1739
1740
17412) iASL Compiler/Disassembler:
1742
1743Fixed a regression in the disassembler where if/else/while
1744constructs were output incorrectly. This problem was introduced
1745in the previous release (20050526). This problem also affected
1746the single-step disassembly in the debugger.
1747
1748Fixed a problem where compiling the reserved _OSI method would
1749randomly (but rarely) produce compile errors.
1750
1751Enhanced the disassembler to emit compilable code in the face of
1752incorrect AML resource descriptors. If the optional
1753ResourceSourceIndex is present, but the ResourceSource is not, do
1754not emit the ResourceSourceIndex in the disassembly. Otherwise,
1755the resulting code cannot be compiled without errors.
1756
1757----------------------------------------
175826 May 2005.  Summary of changes for version 20050526:
1759
17601) ACPI CA Core Subsystem:
1761
1762Implemented support to execute Type 1 and Type 2 AML opcodes
1763appearing at the module level (not within a control method.)
1764These opcodes are executed exactly once at the time the table is
1765loaded. This type of code was legal up until the release of ACPI
17662.0B (2002) and is now supported within ACPI CA in order to
1767provide backwards compatibility with earlier BIOS
1768implementations. This eliminates the "Encountered executable code
1769at module level" warning that was previously generated upon
1770detection of such code.
1771
1772Fixed a problem in the interpreter where an AE_NOT_FOUND
1773exception could inadvertently be generated during the lookup of
1774namespace objects in the second pass parse of ACPI tables and
1775control methods. It appears that this problem could occur during
1776the resolution of forward references to namespace objects.
1777
1778Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex
1779function, corresponding to the same #ifdef in the
1780AcpiUtAcquireMutex function. This allows the deadlock detection
1781debug code to be compiled out in the normal case, improving mutex
1782performance (and overall subsystem performance) considerably.
1783
1784Implemented a handful of miscellaneous fixes for possible memory
1785leaks on error conditions and error handling control paths. These
1786fixes were suggested by FreeBSD and the Coverity Prevent source
1787code analysis tool.
1788
1789Added a check for a null RSDT pointer in AcpiGetFirmwareTable
1790(tbxfroot.c) to prevent a fault in this error case.
1791
1792Code and Data Size: Current and previous core subsystem library
1793sizes are shown below. These are the code and data sizes for the
1794acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1795these values do not include any ACPI driver or OSPM code. The
1796debug version of the code includes the debug output trace
1797mechanism and has a much larger code and data size. Note that
1798these values will vary depending on the efficiency of the
1799compiler and the compiler options used during generation.
1800
1801  Previous Release:
1802    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
1803    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
1804  Current Release:
1805    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
1806    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
1807
1808
18092) iASL Compiler/Disassembler:
1810
1811Implemented support to allow Type 1 and Type 2 ASL operators to
1812appear at the module level (not within a control method.) These
1813operators will be executed once at the time the table is loaded.
1814This type of code was legal up until the release of ACPI 2.0B
1815(2002) and is now supported by the iASL compiler in order to
1816provide backwards compatibility with earlier BIOS ASL code.
1817
1818The ACPI integer width (specified via the table revision ID or
1819the -r override, 32 or 64 bits) is now used internally during
1820compile-time constant folding to ensure that constants are
1821truncated to 32 bits if necessary. Previously, the revision ID
1822value was only emitted in the AML table header.
1823
1824An error message is now generated for the Mutex and Method
1825operators if the SyncLevel parameter is outside the legal range
1826of 0 through 15.
1827
1828Fixed a problem with the Method operator ParameterTypes list
1829handling (ACPI 3.0). Previously, more than 2 types or 2 arguments
1830generated a syntax error.  The actual underlying implementation
1831of method argument typechecking is still under development,
1832however.
1833
1834----------------------------------------
183513 May 2005.  Summary of changes for version 20050513:
1836
18371) ACPI CA Core Subsystem:
1838
1839Implemented support for PCI Express root bridges -- added support
1840for device PNP0A08 in the root bridge search within
1841AcpiEvPciConfigRegionSetup.
1842
1843The interpreter now automatically truncates incoming 64-bit
1844constants to 32 bits if currently executing out of a 32-bit ACPI
1845table (Revision < 2). This also affects the iASL compiler
1846constant folding. (Note: as per below, the iASL compiler no
1847longer allows 64-bit constants within 32-bit tables.)
1848
1849Fixed a problem where string and buffer objects with "static"
1850pointers (pointers to initialization data within an ACPI table)
1851were not handled consistently. The internal object copy operation
1852now always copies the data to a newly allocated buffer,
1853regardless of whether the source object is static or not.
1854
1855Fixed a problem with the FromBCD operator where an implicit
1856result conversion was improperly performed while storing the
1857result to the target operand. Since this is an "explicit
1858conversion" operator, the implicit conversion should never be
1859performed on the output.
1860
1861Fixed a problem with the CopyObject operator where a copy to an
1862existing named object did not always completely overwrite the
1863existing object stored at name. Specifically, a buffer-to-buffer
1864copy did not delete the existing buffer.
1865
1866Replaced "InterruptLevel" with "InterruptNumber" in all GPE
1867interfaces and structs for consistency.
1868
1869Code and Data Size: Current and previous core subsystem library
1870sizes are shown below. These are the code and data sizes for the
1871acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1872these values do not include any ACPI driver or OSPM code. The
1873debug version of the code includes the debug output trace
1874mechanism and has a much larger code and data size. Note that
1875these values will vary depending on the efficiency of the
1876compiler and the compiler options used during generation.
1877
1878  Previous Release:
1879    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
1880    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
1881  Current Release: (Same sizes)
1882    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
1883    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
1884
1885
18862) iASL Compiler/Disassembler:
1887
1888The compiler now emits a warning if an attempt is made to
1889generate a 64-bit integer constant from within a 32-bit ACPI
1890table (Revision < 2). The integer is truncated to 32 bits.
1891
1892Fixed a problem with large package objects: if the static length
1893of the package is greater than 255, the "variable length package"
1894opcode is emitted. Previously, this caused an error. This
1895requires an update to the ACPI spec, since it currently
1896(incorrectly) states that packages larger than 255 elements are
1897not allowed.
1898
1899The disassembler now correctly handles variable length packages
1900and packages larger than 255 elements.
1901
1902----------------------------------------
190308 April 2005.  Summary of changes for version 20050408:
1904
19051) ACPI CA Core Subsystem:
1906
1907Fixed three cases in the interpreter where an "index" argument to
1908an ASL function was still (internally) 32 bits instead of the
1909required 64 bits. This was the Index argument to the Index, Mid,
1910and Match operators.
1911
1912The "strupr" function is now permanently local (AcpiUtStrupr),
1913since this is not a POSIX-defined function and not present in
1914most kernel-level C libraries. All references to the C library
1915strupr function have been removed from the headers.
1916
1917Completed the deployment of static functions/prototypes. All
1918prototypes with the static attribute have been moved from the
1919headers to the owning C file.
1920
1921Implemented an extract option (-e) for the AcpiBin utility (AML
1922binary utility). This option allows the utility to extract
1923individual ACPI tables from the output of AcpiDmp. It provides
1924the same functionality of the acpixtract.pl perl script without
1925the worry of setting the correct perl options. AcpiBin runs on
1926Windows and has not yet been generated/validated in the
1927Linux/Unix environment (but should be soon).
1928
1929Updated and fixed the table dump option for AcpiBin (-d). This
1930option converts a single ACPI table to a hex/ascii file, similar
1931to the output of AcpiDmp.
1932
1933Code and Data Size: Current and previous core subsystem library
1934sizes are shown below. These are the code and data sizes for the
1935acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1936these values do not include any ACPI driver or OSPM code. The
1937debug version of the code includes the debug output trace
1938mechanism and has a much larger code and data size. Note that
1939these values will vary depending on the efficiency of the
1940compiler and the compiler options used during generation.
1941
1942  Previous Release:
1943    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
1944    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
1945  Current Release:
1946    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
1947    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
1948
1949
19502) iASL Compiler/Disassembler:
1951
1952Disassembler fix: Added a check to ensure that the table length
1953found in the ACPI table header within the input file is not
1954longer than the actual input file size. This indicates some kind
1955of file or table corruption.
1956
1957----------------------------------------
195829 March 2005.  Summary of changes for version 20050329:
1959
19601) ACPI CA Core Subsystem:
1961
1962An error is now generated if an attempt is made to create a
1963Buffer Field of length zero (A CreateField with a length operand
1964of zero.)
1965
1966The interpreter now issues a warning whenever executable code at
1967the module level is detected during ACPI table load. This will
1968give some idea of the prevalence of this type of code.
1969
1970Implemented support for references to named objects (other than
1971control methods) within package objects.
1972
1973Enhanced package object output for the debug object. Package
1974objects are now completely dumped, showing all elements.
1975
1976Enhanced miscellaneous object output for the debug object. Any
1977object can now be written to the debug object (for example, a
1978device object can be written, and the type of the object will be
1979displayed.)
1980
1981The "static" qualifier has been added to all local functions
1982across both the core subsystem and the iASL compiler.
1983
1984The number of "long" lines (> 80 chars) within the source has
1985been significantly reduced, by about 1/3.
1986
1987Cleaned up all header files to ensure that all CA/iASL functions
1988are prototyped (even static functions) and the formatting is
1989consistent.
1990
1991Two new header files have been added, acopcode.h and acnames.h.
1992
1993Removed several obsolete functions that were no longer used.
1994
1995Code and Data Size: Current and previous core subsystem library
1996sizes are shown below. These are the code and data sizes for the
1997acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1998these values do not include any ACPI driver or OSPM code. The
1999debug version of the code includes the debug output trace
2000mechanism and has a much larger code and data size. Note that
2001these values will vary depending on the efficiency of the
2002compiler and the compiler options used during generation.
2003
2004  Previous Release:
2005    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2006    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
2007  Current Release:
2008    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
2009    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
2010
2011
2012
20132) iASL Compiler/Disassembler:
2014
2015Fixed a problem with the resource descriptor generation/support.
2016For the ResourceSourceIndex and the ResourceSource fields, both
2017must be present, or both must be not present - can't have one
2018without the other.
2019
2020The compiler now returns non-zero from the main procedure if any
2021errors have occurred during the compilation.
2022
2023
2024----------------------------------------
202509 March 2005.  Summary of changes for version 20050309:
2026
20271) ACPI CA Core Subsystem:
2028
2029The string-to-buffer implicit conversion code has been modified
2030again after a change to the ACPI specification.  In order to
2031match the behavior of the other major ACPI implementation, the
2032target buffer is no longer truncated if the source string is
2033smaller than an existing target buffer. This change requires an
2034update to the ACPI spec, and should eliminate the recent
2035AE_AML_BUFFER_LIMIT issues.
2036
2037The "implicit return" support was rewritten to a new algorithm
2038that solves the general case. Rather than attempt to determine
2039when a method is about to exit, the result of every ASL operator
2040is saved momentarily until the very next ASL operator is
2041executed. Therefore, no matter how the method exits, there will
2042always be a saved implicit return value. This feature is only
2043enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
2044eliminate AE_AML_NO_RETURN_VALUE errors when enabled.
2045
2046Implemented implicit conversion support for the predicate
2047(operand) of the If, Else, and While operators. String and Buffer
2048arguments are automatically converted to Integers.
2049
2050Changed the string-to-integer conversion behavior to match the
2051new ACPI errata: "If no integer object exists, a new integer is
2052created. The ASCII string is interpreted as a hexadecimal
2053constant. Each string character is interpreted as a hexadecimal
2054value (`0'-`9', `A'-`F', `a', `f'), starting with the first
2055character as the most significant digit, and ending with the
2056first non-hexadecimal character or end-of-string." This means
2057that the first non-hex character terminates the conversion and
2058this is the code that was changed.
2059
2060Fixed a problem where the ObjectType operator would fail (fault)
2061when used on an Index of a Package which pointed to a null
2062package element. The operator now properly returns zero
2063(Uninitialized) in this case.
2064
2065Fixed a problem where the While operator used excessive memory by
2066not properly popping the result stack during execution. There was
2067no memory leak after execution, however. (Code provided by Valery
2068Podrezov.)
2069
2070Fixed a problem where references to control methods within
2071Package objects caused the method to be invoked, instead of
2072producing a reference object pointing to the method.
2073
2074Restructured and simplified the pswalk.c module
2075(AcpiPsDeleteParseTree) to improve performance and reduce code
2076size. (Code provided by Alexey Starikovskiy.)
2077
2078Code and Data Size: Current and previous core subsystem library
2079sizes are shown below. These are the code and data sizes for the
2080acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2081these values do not include any ACPI driver or OSPM code. The
2082debug version of the code includes the debug output trace
2083mechanism and has a much larger code and data size. Note that
2084these values will vary depending on the efficiency of the
2085compiler and the compiler options used during generation.
2086
2087  Previous Release:
2088    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2089    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
2090  Current Release:
2091    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2092    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
2093
2094
20952) iASL Compiler/Disassembler:
2096
2097Fixed a problem with the Return operator with no arguments. Since
2098the AML grammar for the byte encoding requires an operand for the
2099Return opcode, the compiler now emits a Return(Zero) for this
2100case.  An ACPI specification update has been written for this
2101case.
2102
2103For tables other than the DSDT, namepath optimization is
2104automatically disabled. This is because SSDTs can be loaded
2105anywhere in the namespace, the compiler has no knowledge of
2106where, and thus cannot optimize namepaths.
2107
2108Added "ProcessorObj" to the ObjectTypeKeyword list. This object
2109type was inadvertently omitted from the ACPI specification, and
2110will require an update to the spec.
2111
2112The source file scan for ASCII characters is now optional (-a).
2113This change was made because some vendors place non-ascii
2114characters within comments. However, the scan is simply a brute-
2115force byte compare to ensure all characters in the file are in
2116the range 0x00 to 0x7F.
2117
2118Fixed a problem with the CondRefOf operator where the compiler
2119was inappropriately checking for the existence of the target.
2120Since the point of the operator is to check for the existence of
2121the target at run-time, the compiler no longer checks for the
2122target existence.
2123
2124Fixed a problem where errors generated from the internal AML
2125interpreter during constant folding were not handled properly,
2126causing a fault.
2127
2128Fixed a problem with overly aggressive range checking for the
2129Stall operator. The valid range (max 255) is now only checked if
2130the operand is of type Integer. All other operand types cannot be
2131statically checked.
2132
2133Fixed a problem where control method references within the RefOf,
2134DeRefOf, and ObjectType operators were not treated properly. They
2135are now treated as actual references, not method invocations.
2136
2137Fixed and enhanced the "list namespace" option (-ln). This option
2138was broken a number of releases ago.
2139
2140Improved error handling for the Field, IndexField, and BankField
2141operators. The compiler now cleanly reports and recovers from
2142errors in the field component (FieldUnit) list.
2143
2144Fixed a disassembler problem where the optional
2145ResourceDescriptor fields TRS and TTP were not always handled
2146correctly.
2147
2148Disassembler - Comments in output now use "//" instead of "/*"
2149
2150----------------------------------------
215128 February 2005.  Summary of changes for version 20050228:
2152
21531) ACPI CA Core Subsystem:
2154
2155Fixed a problem where the result of an Index() operator (an
2156object reference) must increment the reference count on the
2157target object for the life of the object reference.
2158
2159Implemented AML Interpreter and Debugger support for the new ACPI
21603.0 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace,
2161and WordSpace resource descriptors.
2162
2163Implemented support in the _OSI method for the ACPI 3.0 "Extended
2164Address Space Descriptor" string, indicating interpreter support
2165for the descriptors above.
2166
2167Implemented header support for the new ACPI 3.0 FADT flag bits.
2168
2169Implemented header support for the new ACPI 3.0 PCI Express bits
2170for the PM1 status/enable registers.
2171
2172Updated header support for the MADT processor local Apic struct
2173and MADT platform interrupt source struct for new ACPI 3.0
2174fields.
2175
2176Implemented header support for the SRAT and SLIT ACPI tables.
2177
2178Implemented the -s switch in AcpiExec to enable the
2179"InterpreterSlack" flag at runtime.
2180
2181Code and Data Size: Current and previous core subsystem library
2182sizes are shown below. These are the code and data sizes for the
2183acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2184these values do not include any ACPI driver or OSPM code. The
2185debug version of the code includes the debug output trace
2186mechanism and has a much larger code and data size. Note that
2187these values will vary depending on the efficiency of the
2188compiler and the compiler options used during generation.
2189
2190  Previous Release:
2191    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
2192    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
2193  Current Release:
2194    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
2195    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
2196
2197
21982) iASL Compiler/Disassembler:
2199
2200Fixed a problem with the internal 64-bit String-to-integer
2201conversion with strings less than two characters long.
2202
2203Fixed a problem with constant folding where the result of the
2204Index() operator can not be considered a constant. This means
2205that Index() cannot be a type3 opcode and this will require an
2206update to the ACPI specification.
2207
2208Disassembler: Implemented support for the TTP, MTP, and TRS
2209resource descriptor fields. These fields were inadvertently
2210ignored and not output in the disassembly of the resource
2211descriptor.
2212
2213
2214 ----------------------------------------
221511 February 2005.  Summary of changes for version 20050211:
2216
22171) ACPI CA Core Subsystem:
2218
2219Implemented ACPI 3.0 support for implicit conversion within the
2220Match() operator. MatchObjects can now be of type integer,
2221buffer, or string instead of just type integer.  Package elements
2222are implicitly converted to the type of the MatchObject. This
2223change aligns the behavior of Match() with the behavior of the
2224other logical operators (LLess(), etc.) It also requires an
2225errata change to the ACPI specification as this support was
2226intended for ACPI 3.0, but was inadvertently omitted.
2227
2228Fixed a problem with the internal implicit "to buffer"
2229conversion. Strings that are converted to buffers will cause
2230buffer truncation if the string is smaller than the target
2231buffer. Integers that are converted to buffers will not cause
2232buffer truncation, only zero extension (both as per the ACPI
2233spec.) The problem was introduced when code was added to truncate
2234the buffer, but this should not be performed in all cases, only
2235the string case.
2236
2237Fixed a problem with the Buffer and Package operators where the
2238interpreter would get confused if two such operators were used as
2239operands to an ASL operator (such as
2240LLess(Buffer(1){0},Buffer(1){1}). The internal result stack was
2241not being popped after the execution of these operators,
2242resulting in an AE_NO_RETURN_VALUE exception.
2243
2244Fixed a problem with constructs of the form
2245Store(Index(...),...). The reference object returned from Index
2246was inadvertently resolved to an actual value. This problem was
2247introduced in version 20050114 when the behavior of Store() was
2248modified to restrict the object types that can be used as the
2249source operand (to match the ACPI specification.)
2250
2251Reduced excessive stack use within the AcpiGetObjectInfo
2252procedure.
2253
2254Added a fix to aclinux.h to allow generation of AcpiExec on
2255Linux.
2256
2257Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS
2258struct.
2259
2260Code and Data Size: Current and previous core subsystem library
2261sizes are shown below. These are the code and data sizes for the
2262acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2263these values do not include any ACPI driver or OSPM code. The
2264debug version of the code includes the debug output trace
2265mechanism and has a much larger code and data size. Note that
2266these values will vary depending on the efficiency of the
2267compiler and the compiler options used during generation.
2268
2269  Previous Release:
2270    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
2271    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
2272  Current Release:
2273    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
2274    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
2275
2276
22772) iASL Compiler/Disassembler:
2278
2279Fixed a code generation problem in the constant folding
2280optimization code where incorrect code was generated if a
2281constant was reduced to a buffer object (i.e., a reduced type 5
2282opcode.)
2283
2284Fixed a typechecking problem for the ToBuffer operator. Caused by
2285an incorrect return type in the internal opcode information
2286table.
2287
2288----------------------------------------
228925 January 2005.  Summary of changes for version 20050125:
2290
22911) ACPI CA Core Subsystem:
2292
2293Fixed a recently introduced problem with the Global Lock where
2294the underlying semaphore was not created.  This problem was
2295introduced in version 20050114, and caused an AE_AML_NO_OPERAND
2296exception during an Acquire() operation on _GL.
2297
2298The local object cache is now optional, and is disabled by
2299default. Both AcpiExec and the iASL compiler enable the cache
2300because they run in user mode and this enhances their
2301performance. #define ACPI_ENABLE_OBJECT_CACHE to enable the local
2302cache.
2303
2304Fixed an issue in the internal function AcpiUtEvaluateObject
2305concerning the optional "implicit return" support where an error
2306was returned if no return object was expected, but one was
2307implicitly returned. AE_OK is now returned in this case and the
2308implicitly returned object is deleted. AcpiUtEvaluateObject is
2309only occasionally used, and only to execute reserved methods such
2310as _STA and _INI where the return type is known up front.
2311
2312Fixed a few issues with the internal convert-to-integer code. It
2313now returns an error if an attempt is made to convert a null
2314string, a string of only blanks/tabs, or a zero-length buffer.
2315This affects both implicit conversion and explicit conversion via
2316the ToInteger() operator.
2317
2318The internal debug code in AcpiUtAcquireMutex has been commented
2319out. It is not needed for normal operation and should increase
2320the performance of the entire subsystem. The code remains in case
2321it is needed for debug purposes again.
2322
2323The AcpiExec source and makefile are included in the Unix/Linux
2324package for the first time.
2325
2326Code and Data Size: Current and previous core subsystem library
2327sizes are shown below. These are the code and data sizes for the
2328acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2329these values do not include any ACPI driver or OSPM code. The
2330debug version of the code includes the debug output trace
2331mechanism and has a much larger code and data size. Note that
2332these values will vary depending on the efficiency of the
2333compiler and the compiler options used during generation.
2334
2335  Previous Release:
2336    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
2337    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
2338  Current Release:
2339    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
2340    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
2341
23422) iASL Compiler/Disassembler:
2343
2344Switch/Case support: A warning is now issued if the type of the
2345Switch value cannot be determined at compile time. For example,
2346Switch(Arg0) will generate the warning, and the type is assumed
2347to be an integer. As per the ACPI spec, use a construct such as
2348Switch(ToInteger(Arg0)) to eliminate the warning.
2349
2350Switch/Case support: Implemented support for buffer and string
2351objects as the switch value.  This is an ACPI 3.0 feature, now
2352that LEqual supports buffers and strings.
2353
2354Switch/Case support: The emitted code for the LEqual()
2355comparisons now uses the switch value as the first operand, not
2356the second. The case value is now the second operand, and this
2357allows the case value to be implicitly converted to the type of
2358the switch value, not the other way around.
2359
2360Switch/Case support: Temporary variables are now emitted
2361immediately within the control method, not at the global level.
2362This means that there are now 36 temps available per-method, not
236336 temps per-module as was the case with the earlier
2364implementation (_T_0 through _T_9 and _T_A through _T_Z.)
2365
2366----------------------------------------
236714 January 2005.  Summary of changes for version 20050114:
2368
2369Added 2005 copyright to all module headers.  This affects every
2370module in the core subsystem, iASL compiler, and the utilities.
2371
23721) ACPI CA Core Subsystem:
2373
2374Fixed an issue with the String-to-Buffer conversion code where
2375the string null terminator was not included in the buffer after
2376conversion, but there is existing ASL that assumes the string
2377null terminator is included. This is the root of the
2378ACPI_AML_BUFFER_LIMIT regression. This problem was introduced in
2379the previous version when the code was updated to correctly set
2380the converted buffer size as per the ACPI specification. The ACPI
2381spec is ambiguous and will be updated to specify that the null
2382terminator must be included in the converted buffer. This also
2383affects the ToBuffer() ASL operator.
2384
2385Fixed a problem with the Mid() ASL/AML operator where it did not
2386work correctly on Buffer objects. Newly created sub-buffers were
2387not being marked as initialized.
2388
2389
2390Fixed a problem in AcpiTbFindTable where incorrect string
2391compares were performed on the OemId and OemTableId table header
2392fields.  These fields are not null terminated, so strncmp is now
2393used instead of strcmp.
2394
2395Implemented a restriction on the Store() ASL/AML operator to
2396align the behavior with the ACPI specification.  Previously, any
2397object could be used as the source operand.  Now, the only
2398objects that may be used are Integers, Buffers, Strings,
2399Packages, Object References, and DDB Handles.  If necessary, the
2400original behavior can be restored by enabling the
2401EnableInterpreterSlack flag.
2402
2403Enhanced the optional "implicit return" support to allow an
2404implicit return value from methods that are invoked externally
2405via the AcpiEvaluateObject interface.  This enables implicit
2406returns from the _STA and _INI methods, for example.
2407
2408Changed the Revision() ASL/AML operator to return the current
2409version of the AML interpreter, in the YYYYMMDD format.
2410Previously, it incorrectly returned the supported ACPI version
2411(This is the function of the _REV method).
2412
2413Updated the _REV predefined method to return the currently
2414supported version of ACPI, now 3.
2415
2416Implemented batch mode option for the AcpiExec utility (-b).
2417
2418Code and Data Size: Current and previous core subsystem library
2419sizes are shown below. These are the code and data sizes for the
2420acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2421these values do not include any ACPI driver or OSPM code. The
2422debug version of the code includes the debug output trace
2423mechanism and has a much larger code and data size. Note that
2424these values will vary depending on the efficiency of the
2425compiler and the compiler options used during generation.
2426
2427  Previous Release:
2428    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2429    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
2430  Current Release:
2431    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
2432    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
2433
2434----------------------------------------
243510 December 2004.  Summary of changes for version 20041210:
2436
2437ACPI 3.0 support is nearing completion in both the iASL compiler
2438and the ACPI CA core subsystem.
2439
24401) ACPI CA Core Subsystem:
2441
2442Fixed a problem in the ToDecimalString operator where the
2443resulting string length was incorrectly calculated. The length is
2444now calculated exactly, eliminating incorrect AE_STRING_LIMIT
2445exceptions.
2446
2447Fixed a problem in the ToHexString operator to allow a maximum
2448200 character string to be produced.
2449
2450Fixed a problem in the internal string-to-buffer and buffer-to-
2451buffer copy routine where the length of the resulting buffer was
2452not truncated to the new size (if the target buffer already
2453existed).
2454
2455Code and Data Size: Current and previous core subsystem library
2456sizes are shown below. These are the code and data sizes for the
2457acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2458these values do not include any ACPI driver or OSPM code. The
2459debug version of the code includes the debug output trace
2460mechanism and has a much larger code and data size. Note that
2461these values will vary depending on the efficiency of the
2462compiler and the compiler options used during generation.
2463
2464  Previous Release:
2465    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2466    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
2467  Current Release:
2468    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2469    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
2470
2471
24722) iASL Compiler/Disassembler:
2473
2474Implemented the new ACPI 3.0 resource template macros -
2475DWordSpace, ExtendedIO, ExtendedMemory, ExtendedSpace,
2476QWordSpace, and WordSpace. Includes support in the disassembler.
2477
2478Implemented support for the new (ACPI 3.0) parameter to the
2479Register macro, AccessSize.
2480
2481Fixed a problem where the _HE resource name for the Interrupt
2482macro was referencing bit 0 instead of bit 1.
2483
2484Implemented check for maximum 255 interrupts in the Interrupt
2485macro.
2486
2487Fixed a problem with the predefined resource descriptor names
2488where incorrect AML code was generated if the offset within the
2489resource buffer was 0 or 1.  The optimizer shortened the AML code
2490to a single byte opcode but did not update the surrounding
2491package lengths.
2492
2493Changes to the Dma macro:  All channels within the channel list
2494must be in the range 0-7.  Maximum 8 channels can be specified.
2495BusMaster operand is optional (default is BusMaster).
2496
2497Implemented check for maximum 7 data bytes for the VendorShort
2498macro.
2499
2500The ReadWrite parameter is now optional for the Memory32 and
2501similar macros.
2502
2503----------------------------------------
250403 December 2004.  Summary of changes for version 20041203:
2505
25061) ACPI CA Core Subsystem:
2507
2508The low-level field insertion/extraction code (exfldio) has been
2509completely rewritten to eliminate unnecessary complexity, bugs,
2510and boundary conditions.
2511
2512Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
2513ToDecimalString operators where the input operand could be
2514inadvertently deleted if no conversion was necessary (e.g., if
2515the input to ToInteger was an Integer object.)
2516
2517Fixed a problem with the ToDecimalString and ToHexString where an
2518incorrect exception code was returned if the resulting string
2519would be > 200 chars.  AE_STRING_LIMIT is now returned.
2520
2521Fixed a problem with the Concatenate operator where AE_OK was
2522always returned, even if the operation failed.
2523
2524Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow >
2525128 semaphores to be allocated.
2526
2527Code and Data Size: Current and previous core subsystem library
2528sizes are shown below. These are the code and data sizes for the
2529acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2530these values do not include any ACPI driver or OSPM code. The
2531debug version of the code includes the debug output trace
2532mechanism and has a much larger code and data size. Note that
2533these values will vary depending on the efficiency of the
2534compiler and the compiler options used during generation.
2535
2536  Previous Release:
2537    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
2538    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
2539  Current Release:
2540    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
2541    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
2542
2543
25442) iASL Compiler/Disassembler:
2545
2546Fixed typechecking for the ObjectType and SizeOf operators.
2547Problem was recently introduced in 20041119.
2548
2549Fixed a problem with the ToUUID macro where the upper nybble of
2550each buffer byte was inadvertently set to zero.
2551
2552----------------------------------------
255319 November 2004.  Summary of changes for version 20041119:
2554
25551) ACPI CA Core Subsystem:
2556
2557Fixed a problem in the internal ConvertToInteger routine where
2558new integers were not truncated to 32 bits for 32-bit ACPI
2559tables. This routine converts buffers and strings to integers.
2560
2561Implemented support to store a value to an Index() on a String
2562object. This is an ACPI 2.0 feature that had not yet been
2563implemented.
2564
2565Implemented new behavior for storing objects to individual
2566package elements (via the Index() operator). The previous
2567behavior was to invoke the implicit conversion rules if an object
2568was already present at the index.  The new behavior is to simply
2569delete any existing object and directly store the new object.
2570Although the ACPI specification seems unclear on this subject,
2571other ACPI implementations behave in this manner.  (This is the
2572root of the AE_BAD_HEX_CONSTANT issue.)
2573
2574Modified the RSDP memory scan mechanism to support the extended
2575checksum for ACPI 2.0 (and above) RSDPs. Note that the search
2576continues until a valid RSDP signature is found with a valid
2577checksum.
2578
2579Code and Data Size: Current and previous core subsystem library
2580sizes are shown below. These are the code and data sizes for the
2581acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2582these values do not include any ACPI driver or OSPM code. The
2583debug version of the code includes the debug output trace
2584mechanism and has a much larger code and data size. Note that
2585these values will vary depending on the efficiency of the
2586compiler and the compiler options used during generation.
2587
2588  Previous Release:
2589    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
2590    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
2591  Current Release:
2592    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
2593    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
2594
2595
25962) iASL Compiler/Disassembler:
2597
2598Fixed a missing semicolon in the aslcompiler.y file.
2599
2600----------------------------------------
260105 November 2004.  Summary of changes for version 20041105:
2602
26031) ACPI CA Core Subsystem:
2604
2605Implemented support for FADT revision 2.  This was an interim
2606table (between ACPI 1.0 and ACPI 2.0) that adds support for the
2607FADT reset register.
2608
2609Implemented optional support to allow uninitialized LocalX and
2610ArgX variables in a control method.  The variables are
2611initialized to an Integer object with a value of zero.  This
2612support is enabled by setting the AcpiGbl_EnableInterpreterSlack
2613flag to TRUE.
2614
2615Implemented support for Integer objects for the SizeOf operator.
2616Either 4 or 8 is returned, depending on the current integer size
2617(32-bit or 64-bit, depending on the parent table revision).
2618
2619Fixed a problem in the implementation of the SizeOf and
2620ObjectType operators where the operand was resolved to a value
2621too early, causing incorrect return values for some objects.
2622
2623Fixed some possible memory leaks during exceptional conditions.
2624
2625Code and Data Size: Current and previous core subsystem library
2626sizes are shown below. These are the code and data sizes for the
2627acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2628these values do not include any ACPI driver or OSPM code. The
2629debug version of the code includes the debug output trace
2630mechanism and has a much larger code and data size. Note that
2631these values will vary depending on the efficiency of the
2632compiler and the compiler options used during generation.
2633
2634  Previous Release:
2635    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
2636    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
2637  Current Release:
2638    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
2639    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
2640
2641
26422) iASL Compiler/Disassembler:
2643
2644Implemented support for all ACPI 3.0 reserved names and methods.
2645
2646Implemented all ACPI 3.0 grammar elements in the front-end,
2647including support for semicolons.
2648
2649Implemented the ACPI 3.0 Function() and ToUUID() macros
2650
2651Fixed a problem in the disassembler where a Scope() operator
2652would not be emitted properly if the target of the scope was in
2653another table.
2654
2655----------------------------------------
265615 October 2004.  Summary of changes for version 20041015:
2657
2658Note:  ACPI CA is currently undergoing an in-depth and complete
2659formal evaluation to test/verify the following areas. Other
2660suggestions are welcome. This will result in an increase in the
2661frequency of releases and the number of bug fixes in the next few
2662months.
2663  - Functional tests for all ASL/AML operators
2664  - All implicit/explicit type conversions
2665  - Bit fields and operation regions
2666  - 64-bit math support and 32-bit-only "truncated" math support
2667  - Exceptional conditions, both compiler and interpreter
2668  - Dynamic object deletion and memory leaks
2669  - ACPI 3.0 support when implemented
2670  - External interfaces to the ACPI subsystem
2671
2672
26731) ACPI CA Core Subsystem:
2674
2675Fixed two alignment issues on 64-bit platforms - within debug
2676statements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed
2677references to the Address field within the non-aligned ACPI
2678generic address structure.
2679
2680Fixed a problem in the Increment and Decrement operators where
2681incorrect operand resolution could result in the inadvertent
2682modification of the original integer when the integer is passed
2683into another method as an argument and the arg is then
2684incremented/decremented.
2685
2686Fixed a problem in the FromBCD operator where the upper 32-bits
2687of a 64-bit BCD number were truncated during conversion.
2688
2689Fixed a problem in the ToDecimal operator where the length of the
2690resulting string could be set incorrectly too long if the input
2691operand was a Buffer object.
2692
2693Fixed a problem in the Logical operators (LLess, etc.) where a
2694NULL byte (0) within a buffer would prematurely terminate a
2695compare between buffer objects.
2696
2697Added a check for string overflow (>200 characters as per the
2698ACPI specification) during the Concatenate operator with two
2699string operands.
2700
2701Code and Data Size: Current and previous core subsystem library
2702sizes are shown below. These are the code and data sizes for the
2703acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2704these values do not include any ACPI driver or OSPM code. The
2705debug version of the code includes the debug output trace
2706mechanism and has a much larger code and data size. Note that
2707these values will vary depending on the efficiency of the
2708compiler and the compiler options used during generation.
2709
2710  Previous Release:
2711    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
2712    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
2713  Current Release:
2714    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
2715    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
2716
2717
2718
27192) iASL Compiler/Disassembler:
2720
2721Allow the use of the ObjectType operator on uninitialized Locals
2722and Args (returns 0 as per the ACPI specification).
2723
2724Fixed a problem where the compiler would fault if there was a
2725syntax error in the FieldName of all of the various
2726CreateXXXField operators.
2727
2728Disallow the use of lower case letters within the EISAID macro,
2729as per the ACPI specification.  All EISAID strings must be of the
2730form "UUUNNNN" Where U is an uppercase letter and N is a hex
2731digit.
2732
2733
2734----------------------------------------
273506 October 2004.  Summary of changes for version 20041006:
2736
27371) ACPI CA Core Subsystem:
2738
2739Implemented support for the ACPI 3.0 Timer operator. This ASL
2740function implements a 64-bit timer with 100 nanosecond
2741granularity.
2742
2743Defined a new OSL interface, AcpiOsGetTimer. This interface is
2744used to implement the ACPI 3.0 Timer operator.  This allows the
2745host OS to implement the timer with the best clock available.
2746Also, it keeps the core subsystem out of the clock handling
2747business, since the host OS (usually) performs this function.
2748
2749Fixed an alignment issue on 64-bit platforms. The
2750HwLowLevelRead(Write) functions use a 64-bit address which is
2751part of the packed ACPI Generic Address Structure. Since the
2752structure is non-aligned, the alignment macros are now used to
2753extract the address to a local variable before use.
2754
2755Fixed a problem where the ToInteger operator assumed all input
2756strings were hexadecimal. The operator now handles both decimal
2757strings and hex strings (prefixed with "0x").
2758
2759Fixed a problem where the string length in the string object
2760created as a result of the internal ConvertToString procedure
2761could be incorrect. This potentially affected all implicit
2762conversions and also the ToDecimalString and ToHexString
2763operators.
2764
2765Fixed two problems in the ToString operator. If the length
2766parameter was zero, an incorrect string object was created and
2767the value of the input length parameter was inadvertently changed
2768from zero to Ones.
2769
2770Fixed a problem where the optional ResourceSource string in the
2771ExtendedIRQ resource macro was ignored.
2772
2773Simplified the interfaces to the internal division functions,
2774reducing code size and complexity.
2775
2776Code and Data Size: Current and previous core subsystem library
2777sizes are shown below. These are the code and data sizes for the
2778acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2779these values do not include any ACPI driver or OSPM code. The
2780debug version of the code includes the debug output trace
2781mechanism and has a much larger code and data size. Note that
2782these values will vary depending on the efficiency of the
2783compiler and the compiler options used during generation.
2784
2785  Previous Release:
2786    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
2787    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
2788  Current Release:
2789    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
2790    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
2791
2792
27932) iASL Compiler/Disassembler:
2794
2795Implemented support for the ACPI 3.0 Timer operator.
2796
2797Fixed a problem where the Default() operator was inadvertently
2798ignored in a Switch/Case block.  This was a problem in the
2799translation of the Switch statement to If...Else pairs.
2800
2801Added support to allow a standalone Return operator, with no
2802parentheses (or operands).
2803
2804Fixed a problem with code generation for the ElseIf operator
2805where the translated Else...If parse tree was improperly
2806constructed leading to the loss of some code.
2807
2808----------------------------------------
280922 September 2004.  Summary of changes for version 20040922:
2810
28111) ACPI CA Core Subsystem:
2812
2813Fixed a problem with the implementation of the LNot() operator
2814where "Ones" was not returned for the TRUE case. Changed the code
2815to return Ones instead of (!Arg) which was usually 1. This change
2816affects iASL constant folding for this operator also.
2817
2818Fixed a problem in AcpiUtInitializeBuffer where an existing
2819buffer was not initialized properly -- Now zero the entire buffer
2820in this case where the buffer already exists.
2821
2822Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
2823Milliseconds) to simply (ACPI_INTEGER Milliseconds). This
2824simplifies all related code considerably. This will require
2825changes/updates to all OS interface layers (OSLs.)
2826
2827Implemented a new external interface,
2828AcpiInstallExceptionHandler, to allow a system exception handler
2829to be installed. This handler is invoked upon any run-time
2830exception that occurs during control method execution.
2831
2832Added support for the DSDT in AcpiTbFindTable. This allows the
2833DataTableRegion() operator to access the local copy of the DSDT.
2834
2835Code and Data Size: Current and previous core subsystem library
2836sizes are shown below. These are the code and data sizes for the
2837acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2838these values do not include any ACPI driver or OSPM code. The
2839debug version of the code includes the debug output trace
2840mechanism and has a much larger code and data size. Note that
2841these values will vary depending on the efficiency of the
2842compiler and the compiler options used during generation.
2843
2844  Previous Release:
2845    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
2846    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
2847  Current Release:
2848    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
2849    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
2850
2851
28522) iASL Compiler/Disassembler:
2853
2854Fixed a problem with constant folding and the LNot operator. LNot
2855was returning 1 in the TRUE case, not Ones as per the ACPI
2856specification. This could result in the generation of an
2857incorrect folded/reduced constant.
2858
2859End-Of-File is now allowed within a "//"-style comment.  A parse
2860error no longer occurs if such a comment is at the very end of
2861the input ASL source file.
2862
2863Implemented the "-r" option to override the Revision in the table
2864header. The initial use of this option will be to simplify the
2865evaluation of the AML interpreter by allowing a single ASL source
2866module to be compiled for either 32-bit or 64-bit integers.
2867
2868
2869----------------------------------------
287027 August 2004.  Summary of changes for version 20040827:
2871
28721) ACPI CA Core Subsystem:
2873
2874- Implemented support for implicit object conversion in the non-
2875numeric logical operators (LEqual, LGreater, LGreaterEqual,
2876LLess, LLessEqual, and LNotEqual.)  Any combination of
2877Integers/Strings/Buffers may now be used; the second operand is
2878implicitly converted on the fly to match the type of the first
2879operand.  For example:
2880
2881    LEqual (Source1, Source2)
2882
2883Source1 and Source2 must each evaluate to an integer, a string,
2884or a buffer. The data type of Source1 dictates the required type
2885of Source2. Source2 is implicitly converted if necessary to match
2886the type of Source1.
2887
2888- Updated and corrected the behavior of the string conversion
2889support.  The rules concerning conversion of buffers to strings
2890(according to the ACPI specification) are as follows:
2891
2892ToDecimalString - explicit byte-wise conversion of buffer to
2893string of decimal values (0-255) separated by commas. ToHexString
2894- explicit byte-wise conversion of buffer to string of hex values
2895(0-FF) separated by commas. ToString - explicit byte-wise
2896conversion of buffer to string.  Byte-by-byte copy with no
2897transform except NULL terminated. Any other implicit buffer-to-
2898string conversion - byte-wise conversion of buffer to string of
2899hex values (0-FF) separated by spaces.
2900
2901- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
2902
2903- Fixed a problem in AcpiNsGetPathnameLength where the returned
2904length was one byte too short in the case of a node in the root
2905scope.  This could cause a fault during debug output.
2906
2907- Code and Data Size: Current and previous core subsystem library
2908sizes are shown below.  These are the code and data sizes for the
2909acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2910these values do not include any ACPI driver or OSPM code.  The
2911debug version of the code includes the debug output trace
2912mechanism and has a much larger code and data size.  Note that
2913these values will vary depending on the efficiency of the
2914compiler and the compiler options used during generation.
2915
2916  Previous Release:
2917    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
2918    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
2919  Current Release:
2920    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
2921    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
2922
2923
29242) iASL Compiler/Disassembler:
2925
2926- Fixed a Linux generation error.
2927
2928
2929----------------------------------------
293016 August 2004.  Summary of changes for version 20040816:
2931
29321) ACPI CA Core Subsystem:
2933
2934Designed and implemented support within the AML interpreter for
2935the so-called "implicit return".  This support returns the result
2936of the last ASL operation within a control method, in the absence
2937of an explicit Return() operator.  A few machines depend on this
2938behavior, even though it is not explicitly supported by the ASL
2939language.  It is optional support that can be enabled at runtime
2940via the AcpiGbl_EnableInterpreterSlack flag.
2941
2942Removed support for the PCI_Config address space from the
2943internal low level hardware interfaces (AcpiHwLowLevelRead and
2944AcpiHwLowLevelWrite).  This support was not used internally, and
2945would not work correctly anyway because the PCI bus number and
2946segment number were not supported.  There are separate interfaces
2947for PCI configuration space access because of the unique
2948interface.
2949
2950Code and Data Size: Current and previous core subsystem library
2951sizes are shown below.  These are the code and data sizes for the
2952acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
2953these values do not include any ACPI driver or OSPM code.  The
2954debug version of the code includes the debug output trace
2955mechanism and has a much larger code and data size.  Note that
2956these values will vary depending on the efficiency of the
2957compiler and the compiler options used during generation.
2958
2959  Previous Release:
2960    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
2961    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
2962  Current Release:
2963    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
2964    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
2965
2966
29672) iASL Compiler/Disassembler:
2968
2969Fixed a problem where constants in ASL expressions at the root
2970level (not within a control method) could be inadvertently
2971truncated during code generation.  This problem was introduced in
2972the 20040715 release.
2973
2974
2975----------------------------------------
297615 July 2004.  Summary of changes for version 20040715:
2977
29781) ACPI CA Core Subsystem:
2979
2980Restructured the internal HW GPE interfaces to pass/track the
2981current state of interrupts (enabled/disabled) in order to avoid
2982possible deadlock and increase flexibility of the interfaces.
2983
2984Implemented a "lexicographical compare" for String and Buffer
2985objects within the logical operators -- LGreater, LLess,
2986LGreaterEqual, and LLessEqual -- as per further clarification to
2987the ACPI specification.  Behavior is similar to C library
2988"strcmp".
2989
2990Completed a major reduction in CPU stack use for the
2991AcpiGetFirmwareTable external function.  In the 32-bit non-debug
2992case, the stack use has been reduced from 168 bytes to 32 bytes.
2993
2994Deployed a new run-time configuration flag,
2995AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML
2996interpreter to forgive certain bad AML constructs.  Default
2997setting is FALSE.
2998
2999Implemented the first use of AcpiGbl_EnableInterpreterSlack in
3000the Field IO support code.  If enabled, it allows field access to
3001go beyond the end of a region definition if the field is within
3002the region length rounded up to the next access width boundary (a
3003common coding error.)
3004
3005Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and
3006OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency
3007with other ACPI symbols.  Also, these symbols are lowercased by
3008the latest version of the AcpiSrc tool.
3009
3010The prototypes for the PCI interfaces in acpiosxf.h have been
3011updated to rename "Register" to simply "Reg" to prevent certain
3012compilers from complaining.
3013
3014Code and Data Size: Current and previous core subsystem library
3015sizes are shown below.  These are the code and data sizes for the
3016acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3017these values do not include any ACPI driver or OSPM code.  The
3018debug version of the code includes the debug output trace
3019mechanism and has a much larger code and data size.  Note that
3020these values will vary depending on the efficiency of the
3021compiler and the compiler options used during generation.
3022
3023  Previous Release:
3024    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3025    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
3026  Current Release:
3027    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3028    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
3029
3030
30312) iASL Compiler/Disassembler:
3032
3033Implemented full support for Package objects within the Case()
3034operator.  Note: The Break() operator is currently not supported
3035within Case blocks (TermLists) as there is some question about
3036backward compatibility with ACPI 1.0 interpreters.
3037
3038
3039Fixed a problem where complex terms were not supported properly
3040within the Switch() operator.
3041
3042Eliminated extraneous warning for compiler-emitted reserved names
3043of the form "_T_x".  (Used in Switch/Case operators.)
3044
3045Eliminated optimization messages for "_T_x" objects and small
3046constants within the DefinitionBlock operator.
3047
3048
3049----------------------------------------
305015 June 2004.  Summary of changes for version 20040615:
3051
30521) ACPI CA Core Subsystem:
3053
3054Implemented support for Buffer and String objects (as per ACPI
30552.0) for the following ASL operators:  LEqual, LGreater, LLess,
3056LGreaterEqual, and LLessEqual.
3057
3058All directory names in the entire source package are lower case,
3059as they were in earlier releases.
3060
3061Implemented "Disassemble" command in the AML debugger that will
3062disassemble a single control method.
3063
3064Code and Data Size: Current and previous core subsystem library
3065sizes are shown below.  These are the code and data sizes for the
3066acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3067these values do not include any ACPI driver or OSPM code.  The
3068debug version of the code includes the debug output trace
3069mechanism and has a much larger code and data size.  Note that
3070these values will vary depending on the efficiency of the
3071compiler and the compiler options used during generation.
3072
3073  Previous Release:
3074    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
3075    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
3076
3077  Current Release:
3078    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3079    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
3080
3081
30822) iASL Compiler/Disassembler:
3083
3084Implemented support for Buffer and String objects (as per ACPI
30852.0) for the following ASL operators:  LEqual, LGreater, LLess,
3086LGreaterEqual, and LLessEqual.
3087
3088All directory names in the entire source package are lower case,
3089as they were in earlier releases.
3090
3091Fixed a fault when using the -g or -d<nofilename> options if the
3092FADT was not found.
3093
3094Fixed an issue with the Windows version of the compiler where
3095later versions of Windows place the FADT in the registry under
3096the name "FADT" and not "FACP" as earlier versions did.  This
3097applies when using the -g or -d<nofilename> options.  The
3098compiler now looks for both strings as necessary.
3099
3100Fixed a problem with compiler namepath optimization where a
3101namepath within the Scope() operator could not be optimized if
3102the namepath was a subpath of the current scope path.
3103
3104----------------------------------------
310527 May 2004.  Summary of changes for version 20040527:
3106
31071) ACPI CA Core Subsystem:
3108
3109Completed a new design and implementation for EBDA (Extended BIOS
3110Data Area) support in the RSDP scan code.  The original code
3111improperly scanned for the EBDA by simply scanning from memory
3112location 0 to 0x400.  The correct method is to first obtain the
3113EBDA pointer from within the BIOS data area, then scan 1K of
3114memory starting at the EBDA pointer.  There appear to be few if
3115any machines that place the RSDP in the EBDA, however.
3116
3117Integrated a fix for a possible fault during evaluation of
3118BufferField arguments.  Obsolete code that was causing the
3119problem was removed.
3120
3121Found and fixed a problem in the Field Support Code where data
3122could be corrupted on a bit field read that starts on an aligned
3123boundary but does not end on an aligned boundary.  Merged the
3124read/write "datum length" calculation code into a common
3125procedure.
3126
3127Rolled in a couple of changes to the FreeBSD-specific header.
3128
3129
3130Code and Data Size: Current and previous core subsystem library
3131sizes are shown below.  These are the code and data sizes for the
3132acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3133these values do not include any ACPI driver or OSPM code.  The
3134debug version of the code includes the debug output trace
3135mechanism and has a much larger code and data size.  Note that
3136these values will vary depending on the efficiency of the
3137compiler and the compiler options used during generation.
3138
3139  Previous Release:
3140    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3141    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
3142  Current Release:
3143    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
3144    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
3145
3146
31472) iASL Compiler/Disassembler:
3148
3149Fixed a generation warning produced by some overly-verbose
3150compilers for a 64-bit constant.
3151
3152----------------------------------------
315314 May 2004.  Summary of changes for version 20040514:
3154
31551) ACPI CA Core Subsystem:
3156
3157Fixed a problem where hardware GPE enable bits sometimes not set
3158properly during and after GPE method execution.  Result of 04/27
3159changes.
3160
3161Removed extra "clear all GPEs" when sleeping/waking.
3162
3163Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the
3164single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the
3165functions above to the new AcpiEv* calls as appropriate.
3166
3167ACPI_OS_NAME was removed from the OS-specific headers.  The
3168default name is now "Microsoft Windows NT" for maximum
3169compatibility.  However this can be changed by modifying the
3170acconfig.h file.
3171
3172Allow a single invocation of AcpiInstallNotifyHandler for a
3173handler that traps both types of notifies (System, Device).  Use
3174ACPI_ALL_NOTIFY flag.
3175
3176Run _INI methods on ThermalZone objects.  This is against the
3177ACPI specification, but there is apparently ASL code in the field
3178that has these _INI methods, and apparently "other" AML
3179interpreters execute them.
3180
3181Performed a full 16/32/64 bit lint that resulted in some small
3182changes.
3183
3184Added a sleep simulation command to the AML debugger to test
3185sleep code.
3186
3187Code and Data Size: Current and previous core subsystem library
3188sizes are shown below.  These are the code and data sizes for the
3189acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3190these values do not include any ACPI driver or OSPM code.  The
3191debug version of the code includes the debug output trace
3192mechanism and has a much larger code and data size.  Note that
3193these values will vary depending on the efficiency of the
3194compiler and the compiler options used during generation.
3195
3196  Previous Release:
3197    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3198    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
3199  Current Release:
3200    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3201    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
3202
3203----------------------------------------
320427 April 2004.  Summary of changes for version 20040427:
3205
32061) ACPI CA Core Subsystem:
3207
3208Completed a major overhaul of the GPE handling within ACPI CA.
3209There are now three types of GPEs:  wake-only, runtime-only, and
3210combination wake/run.  The only GPEs allowed to be combination
3211wake/run are for button-style devices such as a control-method
3212power button, control-method sleep button, or a notebook lid
3213switch.  GPEs that have an _Lxx or _Exx method and are not
3214referenced by any _PRW methods are marked for "runtime" and
3215hardware enabled.  Any GPE that is referenced by a _PRW method is
3216marked for "wake" (and disabled at runtime).  However, at sleep
3217time, only those GPEs that have been specifically enabled for
3218wake via the AcpiEnableGpe interface will actually be hardware
3219enabled.
3220
3221A new external interface has been added, AcpiSetGpeType(), that
3222is meant to be used by device drivers to force a GPE to a
3223particular type.  It will be especially useful for the drivers
3224for the button devices mentioned above.
3225
3226Completed restructuring of the ACPI CA initialization sequence so
3227that default operation region handlers are installed before GPEs
3228are initialized and the _PRW methods are executed.  This will
3229prevent errors when the _PRW methods attempt to access system
3230memory or I/O space.
3231
3232GPE enable/disable no longer reads the GPE enable register.  We
3233now keep the enable info for runtime and wake separate and in the
3234GPE_EVENT_INFO.  We thus no longer depend on the hardware to
3235maintain these bits.
3236
3237Always clear the wake status and fixed/GPE status bits before
3238sleep, even for state S5.
3239
3240Improved the AML debugger output for displaying the GPE blocks
3241and their current status.
3242
3243Added new strings for the _OSI method, of the form "Windows 2001
3244SPx" where x = 0,1,2,3,4.
3245
3246Fixed a problem where the physical address was incorrectly
3247calculated when the Load() operator was used to directly load
3248from an Operation Region (vs. loading from a Field object.)  Also
3249added check for minimum table length for this case.
3250
3251Fix for multiple mutex acquisition.  Restore original thread
3252SyncLevel on mutex release.
3253
3254Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
3255consistency with the other fields returned.
3256
3257Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one
3258such structure for each GPE in the system, so the size of this
3259structure is important.
3260
3261CPU stack requirement reduction:  Cleaned up the method execution
3262and object evaluation paths so that now a parameter structure is
3263passed, instead of copying the various method parameters over and
3264over again.
3265
3266In evregion.c:  Correctly exit and reenter the interpreter region
3267if and only if dispatching an operation region request to a user-
3268installed handler.  Do not exit/reenter when dispatching to a
3269default handler (e.g., default system memory or I/O handlers)
3270
3271
3272Notes for updating drivers for the new GPE support.  The
3273following changes must be made to ACPI-related device drivers
3274that are attached to one or more GPEs: (This information will be
3275added to the ACPI CA Programmer Reference.)
3276
32771) AcpiInstallGpeHandler no longer automatically enables the GPE,
3278you must explicitly call AcpiEnableGpe.
32792) There is a new interface called AcpiSetGpeType. This should be
3280called before enabling the GPE.  Also, this interface will
3281automatically disable the GPE if it is currently enabled.
32823) AcpiEnableGpe no longer supports a GPE type flag.
3283
3284Specific drivers that must be changed:
32851) EC driver:
3286    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
3287AeGpeHandler, NULL);
3288    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
3289    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
3290
32912) Button Drivers (Power, Lid, Sleep):
3292Run _PRW method under parent device
3293If _PRW exists: /* This is a control-method button */
3294    Extract GPE number and possibly GpeDevice
3295    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
3296    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
3297
3298For all other devices that have _PRWs, we automatically set the
3299GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically
3300(wake) enabled.  This must be done on a selective basis, usually
3301requiring some kind of user app to allow the user to pick the
3302wake devices.
3303
3304
3305Code and Data Size: Current and previous core subsystem library
3306sizes are shown below.  These are the code and data sizes for the
3307acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3308these values do not include any ACPI driver or OSPM code.  The
3309debug version of the code includes the debug output trace
3310mechanism and has a much larger code and data size.  Note that
3311these values will vary depending on the efficiency of the
3312compiler and the compiler options used during generation.
3313
3314  Previous Release:
3315    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
3316    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
3317  Current Release:
3318
3319    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
3320    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
3321
3322
3323
3324----------------------------------------
332502 April 2004.  Summary of changes for version 20040402:
3326
33271) ACPI CA Core Subsystem:
3328
3329Fixed an interpreter problem where an indirect store through an
3330ArgX parameter was incorrectly applying the "implicit conversion
3331rules" during the store.  From the ACPI specification: "If the
3332target is a method local or argument (LocalX or ArgX), no
3333conversion is performed and the result is stored directly to the
3334target".  The new behavior is to disable implicit conversion
3335during ALL stores to an ArgX.
3336
3337Changed the behavior of the _PRW method scan to ignore any and
3338all errors returned by a given _PRW.  This prevents the scan from
3339aborting from the failure of any single _PRW.
3340
3341Moved the runtime configuration parameters from the global init
3342procedure to static variables in acglobal.h.  This will allow the
3343host to override the default values easily.
3344
3345Code and Data Size: Current and previous core subsystem library
3346sizes are shown below.  These are the code and data sizes for the
3347acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3348these values do not include any ACPI driver or OSPM code.  The
3349debug version of the code includes the debug output trace
3350mechanism and has a much larger code and data size.  Note that
3351these values will vary depending on the efficiency of the
3352compiler and the compiler options used during generation.
3353
3354  Previous Release:
3355    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
3356    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
3357  Current Release:
3358    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
3359    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
3360
3361
33622) iASL Compiler/Disassembler:
3363
3364iASL now fully disassembles SSDTs.  However, External()
3365statements are not generated automatically for unresolved symbols
3366at this time.  This is a planned feature for future
3367implementation.
3368
3369Fixed a scoping problem in the disassembler that occurs when the
3370type of the target of a Scope() operator is overridden.  This
3371problem caused an incorrectly nested internal namespace to be
3372constructed.
3373
3374Any warnings or errors that are emitted during disassembly are
3375now commented out automatically so that the resulting file can be
3376recompiled without any hand editing.
3377
3378----------------------------------------
337926 March 2004.  Summary of changes for version 20040326:
3380
33811) ACPI CA Core Subsystem:
3382
3383Implemented support for "wake" GPEs via interaction between GPEs
3384and the _PRW methods.  Every GPE that is pointed to by one or
3385more _PRWs is identified as a WAKE GPE and by default will no
3386longer be enabled at runtime.  Previously, we were blindly
3387enabling all GPEs with a corresponding _Lxx or _Exx method - but
3388most of these turn out to be WAKE GPEs anyway.  We believe this
3389has been the cause of thousands of "spurious" GPEs on some
3390systems.
3391
3392This new GPE behavior is can be reverted to the original behavior
3393(enable ALL GPEs at runtime) via a runtime flag.
3394
3395Fixed a problem where aliased control methods could not access
3396objects properly.  The proper scope within the namespace was not
3397initialized (transferred to the target of the aliased method)
3398before executing the target method.
3399
3400Fixed a potential race condition on internal object deletion on
3401the return object in AcpiEvaluateObject.
3402
3403Integrated a fix for resource descriptors where both _MEM and
3404_MTP were being extracted instead of just _MEM.  (i.e. bitmask
3405was incorrectly too wide, 0x0F instead of 0x03.)
3406
3407Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
3408preventing a fault in some cases.
3409
3410Updated Notify() values for debug statements in evmisc.c
3411
3412Return proper status from AcpiUtMutexInitialize, not just simply
3413AE_OK.
3414
3415Code and Data Size: Current and previous core subsystem library
3416sizes are shown below.  These are the code and data sizes for the
3417acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3418these values do not include any ACPI driver or OSPM code.  The
3419debug version of the code includes the debug output trace
3420mechanism and has a much larger code and data size.  Note that
3421these values will vary depending on the efficiency of the
3422compiler and the compiler options used during generation.
3423
3424  Previous Release:
3425
3426    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
3427    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
3428  Current Release:
3429    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
3430    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
3431
3432----------------------------------------
343311 March 2004.  Summary of changes for version 20040311:
3434
34351) ACPI CA Core Subsystem:
3436
3437Fixed a problem where errors occurring during the parse phase of
3438control method execution did not abort cleanly.  For example,
3439objects created and installed in the namespace were not deleted.
3440This caused all subsequent invocations of the method to return
3441the AE_ALREADY_EXISTS exception.
3442
3443Implemented a mechanism to force a control method to "Serialized"
3444execution if the method attempts to create namespace objects.
3445(The root of the AE_ALREADY_EXISTS problem.)
3446
3447Implemented support for the predefined _OSI "internal" control
3448method.  Initial supported strings are "Linux", "Windows 2000",
3449"Windows 2001", and "Windows 2001.1", and can be easily upgraded
3450for new strings as necessary.  This feature will allow "other"
3451operating systems to execute the fully tested, "Windows" code
3452path through the ASL code
3453
3454Global Lock Support:  Now allows multiple acquires and releases
3455with any internal thread.  Removed concept of "owning thread" for
3456this special mutex.
3457
3458Fixed two functions that were inappropriately declaring large
3459objects on the CPU stack:  PsParseLoop, NsEvaluateRelative.
3460Reduces the stack usage during method execution considerably.
3461
3462Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where
3463the S4Bios_f field was incorrectly defined as UINT32 instead of
3464UINT32_BIT.
3465
3466Fixed a problem where AcpiEvGpeDetect would fault if there were
3467no GPEs defined on the machine.
3468
3469Implemented two runtime options:  One to force all control method
3470execution to "Serialized" to mimic Windows behavior, another to
3471disable _OSI support if it causes problems on a given machine.
3472
3473Code and Data Size: Current and previous core subsystem library
3474sizes are shown below.  These are the code and data sizes for the
3475acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3476these values do not include any ACPI driver or OSPM code.  The
3477debug version of the code includes the debug output trace
3478mechanism and has a much larger code and data size.  Note that
3479these values will vary depending on the efficiency of the
3480compiler and the compiler options used during generation.
3481
3482  Previous Release:
3483    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
3484    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
3485  Current Release:
3486    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
3487    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
3488
34892) iASL Compiler/Disassembler:
3490
3491Fixed an array size problem for FreeBSD that would cause the
3492compiler to fault.
3493
3494----------------------------------------
349520 February 2004.  Summary of changes for version 20040220:
3496
3497
34981) ACPI CA Core Subsystem:
3499
3500Implemented execution of _SxD methods for Device objects in the
3501GetObjectInfo interface.
3502
3503Fixed calls to _SST method to pass the correct arguments.
3504
3505Added a call to _SST on wake to restore to "working" state.
3506
3507Check for End-Of-Buffer failure case in the WalkResources
3508interface.
3509
3510Integrated fix for 64-bit alignment issue in acglobal.h by moving
3511two structures to the beginning of the file.
3512
3513After wake, clear GPE status register(s) before enabling GPEs.
3514
3515After wake, clear/enable power button.  (Perhaps we should
3516clear/enable all fixed events upon wake.)
3517
3518Fixed a couple of possible memory leaks in the Namespace manager.
3519
3520Integrated latest acnetbsd.h file.
3521
3522----------------------------------------
352311 February 2004.  Summary of changes for version 20040211:
3524
3525
35261) ACPI CA Core Subsystem:
3527
3528Completed investigation and implementation of the call-by-
3529reference mechanism for control method arguments.
3530
3531Fixed a problem where a store of an object into an indexed
3532package could fail if the store occurs within a different method
3533than the method that created the package.
3534
3535Fixed a problem where the ToDecimal operator could return
3536incorrect results.
3537
3538Fixed a problem where the CopyObject operator could fail on some
3539of the more obscure objects (e.g., Reference objects.)
3540
3541Improved the output of the Debug object to display buffer,
3542package, and index objects.
3543
3544Fixed a problem where constructs of the form "RefOf (ArgX)" did
3545not return the expected result.
3546
3547Added permanent ACPI_REPORT_ERROR macros for all instances of the
3548ACPI_AML_INTERNAL exception.
3549
3550Integrated latest version of acfreebsd.h
3551
3552----------------------------------------
355316 January 2004.  Summary of changes for version 20040116:
3554
3555The purpose of this release is primarily to update the copyright
3556years in each module, thus causing a huge number of diffs.  There
3557are a few small functional changes, however.
3558
35591) ACPI CA Core Subsystem:
3560
3561Improved error messages when there is a problem finding one or
3562more of the required base ACPI tables
3563
3564Reintroduced the definition of APIC_HEADER in actbl.h
3565
3566Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
3567
3568Removed extraneous reference to NewObj in dsmthdat.c
3569
35702) iASL compiler
3571
3572Fixed a problem introduced in December that disabled the correct
3573disassembly of Resource Templates
3574
3575
3576----------------------------------------
357703 December 2003.  Summary of changes for version 20031203:
3578
35791) ACPI CA Core Subsystem:
3580
3581Changed the initialization of Operation Regions during subsystem
3582init to perform two entire walks of the ACPI namespace; The first
3583to initialize the regions themselves, the second to execute the
3584_REG methods.  This fixed some interdependencies across _REG
3585methods found on some machines.
3586
3587Fixed a problem where a Store(Local0, Local1) could simply update
3588the object reference count, and not create a new copy of the
3589object if the Local1 is uninitialized.
3590
3591Implemented support for the _SST reserved method during sleep
3592transitions.
3593
3594Implemented support to clear the SLP_TYP and SLP_EN bits when
3595waking up, this is apparently required by some machines.
3596
3597When sleeping, clear the wake status only if SleepState is not
3598S5.
3599
3600Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
3601pointer arithmetic advanced a string pointer too far.
3602
3603Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
3604could be returned if the requested table has not been loaded.
3605
3606Within the support for IRQ resources, restructured the handling
3607of
3608the active and edge/level bits.
3609
3610Fixed a few problems in AcpiPsxExecute() where memory could be
3611leaked under certain error conditions.
3612
3613Improved error messages for the cases where the ACPI mode could
3614not be entered.
3615
3616Code and Data Size: Current and previous core subsystem library
3617sizes are shown below.  These are the code and data sizes for the
3618acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3619these values do not include any ACPI driver or OSPM code.  The
3620debug version of the code includes the debug output trace
3621mechanism and has a much larger code and data size.  Note that
3622these values will vary depending on the efficiency of the
3623compiler
3624and the compiler options used during generation.
3625
3626  Previous Release (20031029):
3627    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
3628    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
3629  Current Release:
3630    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
3631    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
3632
36332) iASL Compiler/Disassembler:
3634
3635Implemented a fix for the iASL disassembler where a bad index was
3636generated.  This was most noticeable on 64-bit platforms
3637
3638
3639----------------------------------------
364029 October 2003.  Summary of changes for version 20031029:
3641
36421) ACPI CA Core Subsystem:
3643
3644
3645Fixed a problem where a level-triggered GPE with an associated
3646_Lxx control method was incorrectly cleared twice.
3647
3648Fixed a problem with the Field support code where an access can
3649occur beyond the end-of-region if the field is non-aligned but
3650extends to the very end of the parent region (resulted in an
3651AE_AML_REGION_LIMIT exception.)
3652
3653Fixed a problem with ACPI Fixed Events where an RT Clock handler
3654would not get invoked on an RTC event.  The RTC event bitmasks
3655for
3656the PM1 registers were not being initialized properly.
3657
3658Implemented support for executing _STA and _INI methods for
3659Processor objects.  Although this is currently not part of the
3660ACPI specification, there is existing ASL code that depends on
3661the
3662init-time execution of these methods.
3663
3664Implemented and deployed a GetDescriptorName function to decode
3665the various types of internal descriptors.  Guards against null
3666descriptors during debug output also.
3667
3668Implemented and deployed a GetNodeName function to extract the 4-
3669character namespace node name.  This function simplifies the
3670debug
3671and error output, as well as guarding against null pointers
3672during
3673output.
3674
3675Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
3676simplify the debug and error output of 64-bit integers.  This
3677macro replaces the HIDWORD and LODWORD macros for dumping these
3678integers.
3679
3680Updated the implementation of the Stall() operator to only call
3681AcpiOsStall(), and also return an error if the operand is larger
3682than 255.  This preserves the required behavior of not
3683relinquishing the processor, as would happen if AcpiOsSleep() was
3684called for "long stalls".
3685
3686Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
3687initialized are now treated as NOOPs.
3688
3689Cleaned up a handful of warnings during 64-bit generation.
3690
3691Fixed a reported error where and incorrect GPE number was passed
3692to the GPE dispatch handler.  This value is only used for error
3693output, however.  Used this opportunity to clean up and
3694streamline
3695the GPE dispatch code.
3696
3697Code and Data Size: Current and previous core subsystem library
3698sizes are shown below.  These are the code and data sizes for the
3699acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3700these values do not include any ACPI driver or OSPM code.  The
3701
3702debug version of the code includes the debug output trace
3703mechanism and has a much larger code and data size.  Note that
3704these values will vary depending on the efficiency of the
3705compiler
3706and the compiler options used during generation.
3707
3708  Previous Release (20031002):
3709    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
3710    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
3711  Current Release:
3712    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
3713    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
3714
3715
37162) iASL Compiler/Disassembler:
3717
3718Updated the iASL compiler to return an error if the operand to
3719the
3720Stall() operator is larger than 255.
3721
3722
3723----------------------------------------
372402 October 2003.  Summary of changes for version 20031002:
3725
3726
37271) ACPI CA Core Subsystem:
3728
3729Fixed a problem with Index Fields where the index was not
3730incremented for fields that require multiple writes to the
3731index/data registers (Fields that are wider than the data
3732register.)
3733
3734Fixed a problem with all Field objects where a write could go
3735beyond the end-of-field if the field was larger than the access
3736granularity and therefore required multiple writes to complete
3737the
3738request.  An extra write beyond the end of the field could happen
3739inadvertently.
3740
3741Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
3742would incorrectly be returned if the width of the Data Register
3743was larger than the specified field access width.
3744
3745Completed fixes for LoadTable() and Unload() and verified their
3746operation.  Implemented full support for the "DdbHandle" object
3747throughout the ACPI CA subsystem.
3748
3749Implemented full support for the MADT and ECDT tables in the ACPI
3750CA header files.  Even though these tables are not directly
3751consumed by ACPI CA, the header definitions are useful for ACPI
3752device drivers.
3753
3754Integrated resource descriptor fixes posted to the Linux ACPI
3755list.  This included checks for minimum descriptor length, and
3756support for trailing NULL strings within descriptors that have
3757optional string elements.
3758
3759Code and Data Size: Current and previous core subsystem library
3760sizes are shown below.  These are the code and data sizes for the
3761acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3762these values do not include any ACPI driver or OSPM code.  The
3763debug version of the code includes the debug output trace
3764mechanism and has a much larger code and data size.  Note that
3765these values will vary depending on the efficiency of the
3766compiler
3767and the compiler options used during generation.
3768
3769  Previous Release (20030918):
3770    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
3771    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
3772  Current Release:
3773    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
3774    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
3775
3776
37772) iASL Compiler:
3778
3779Implemented detection of non-ASCII characters within the input
3780source ASL file.  This catches attempts to compile binary (AML)
3781files early in the compile, with an informative error message.
3782
3783Fixed a problem where the disassembler would fault if the output
3784filename could not be generated or if the output file could not
3785be
3786opened.
3787
3788----------------------------------------
378918 September 2003.  Summary of changes for version 20030918:
3790
3791
37921) ACPI CA Core Subsystem:
3793
3794Found and fixed a longstanding problem with the late execution of
3795the various deferred AML opcodes (such as Operation Regions,
3796Buffer Fields, Buffers, and Packages).  If the name string
3797specified for the name of the new object placed the object in a
3798scope other than the current scope, the initialization/execution
3799of the opcode failed.  The solution to this problem was to
3800implement a mechanism where the late execution of such opcodes
3801does not attempt to lookup/create the name a second time in an
3802incorrect scope.  This fixes the "region size computed
3803incorrectly" problem.
3804
3805Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing
3806a
3807Global Lock AE_BAD_PARAMETER error.
3808
3809Fixed several 64-bit issues with prototypes, casting and data
3810types.
3811
3812Removed duplicate prototype from acdisasm.h
3813
3814Fixed an issue involving EC Operation Region Detach (Shaohua Li)
3815
3816Code and Data Size: Current and previous core subsystem library
3817sizes are shown below.  These are the code and data sizes for the
3818acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3819these values do not include any ACPI driver or OSPM code.  The
3820debug version of the code includes the debug output trace
3821mechanism and has a much larger code and data size.  Note that
3822these values will vary depending on the efficiency of the
3823compiler
3824and the compiler options used during generation.
3825
3826  Previous Release:
3827
3828    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
3829    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
3830  Current Release:
3831    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
3832    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
3833
3834
38352) Linux:
3836
3837Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
3838correct sleep time in seconds.
3839
3840----------------------------------------
384114 July 2003.  Summary of changes for version 20030619:
3842
38431) ACPI CA Core Subsystem:
3844
3845Parse SSDTs in order discovered, as opposed to reverse order
3846(Hrvoje Habjanic)
3847
3848Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
3849Klausner,
3850   Nate Lawson)
3851
3852
38532) Linux:
3854
3855Dynamically allocate SDT list (suggested by Andi Kleen)
3856
3857proc function return value cleanups (Andi Kleen)
3858
3859Correctly handle NMI watchdog during long stalls (Andrew Morton)
3860
3861Make it so acpismp=force works (reported by Andrew Morton)
3862
3863
3864----------------------------------------
386519 June 2003.  Summary of changes for version 20030619:
3866
38671) ACPI CA Core Subsystem:
3868
3869Fix To/FromBCD, eliminating the need for an arch-specific
3870#define.
3871
3872Do not acquire a semaphore in the S5 shutdown path.
3873
3874Fix ex_digits_needed for 0. (Takayoshi Kochi)
3875
3876Fix sleep/stall code reversal. (Andi Kleen)
3877
3878Revert a change having to do with control method calling
3879semantics.
3880
38812) Linux:
3882
3883acpiphp update (Takayoshi Kochi)
3884
3885Export acpi_disabled for sonypi (Stelian Pop)
3886
3887Mention acpismp=force in config help
3888
3889Re-add acpitable.c and acpismp=force. This improves backwards
3890
3891compatibility and also cleans up the code to a significant
3892degree.
3893
3894Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
3895
3896----------------------------------------
389722 May 2003.  Summary of changes for version 20030522:
3898
38991) ACPI CA Core Subsystem:
3900
3901Found and fixed a reported problem where an AE_NOT_FOUND error
3902occurred occasionally during _BST evaluation.  This turned out to
3903be an Owner ID allocation issue where a called method did not get
3904a new ID assigned to it.  Eventually, (after 64k calls), the
3905Owner
3906ID UINT16 would wraparound so that the ID would be the same as
3907the
3908caller's and the called method would delete the caller's
3909namespace.
3910
3911Implemented extended error reporting for control methods that are
3912aborted due to a run-time exception.  Output includes the exact
3913AML instruction that caused the method abort, a dump of the
3914method
3915locals and arguments at the time of the abort, and a trace of all
3916nested control method calls.
3917
3918Modified the interpreter to allow the creation of buffers of zero
3919length from the AML code. Implemented new code to ensure that no
3920attempt is made to actually allocate a memory buffer (of length
3921zero) - instead, a simple buffer object with a NULL buffer
3922pointer
3923and length zero is created.  A warning is no longer issued when
3924the AML attempts to create a zero-length buffer.
3925
3926Implemented a workaround for the "leading asterisk issue" in
3927_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
3928asterisk is automatically removed if present in any HID, UID, or
3929CID strings.  The iASL compiler will still flag this asterisk as
3930an error, however.
3931
3932Implemented full support for _CID methods that return a package
3933of
3934multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo()
3935interface
3936now additionally returns a device _CID list if present.  This
3937required a change to the external interface in order to pass an
3938ACPI_BUFFER object as a parameter since the _CID list is of
3939variable length.
3940
3941Fixed a problem with the new AE_SAME_HANDLER exception where
3942handler initialization code did not know about this exception.
3943
3944Code and Data Size: Current and previous core subsystem library
3945sizes are shown below.  These are the code and data sizes for the
3946acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
3947these values do not include any ACPI driver or OSPM code.  The
3948debug version of the code includes the debug output trace
3949mechanism and has a much larger code and data size.  Note that
3950these values will vary depending on the efficiency of the
3951compiler
3952and the compiler options used during generation.
3953
3954  Previous Release (20030509):
3955    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
3956    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
3957  Current Release:
3958    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
3959    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
3960
3961
39622) Linux:
3963
3964Fixed a bug in which we would reinitialize the ACPI interrupt
3965after it was already working, thus disabling all ACPI and the
3966IRQs
3967for any other device sharing the interrupt. (Thanks to Stian
3968Jordet)
3969
3970Toshiba driver update (John Belmonte)
3971
3972Return only 0 or 1 for our interrupt handler status (Andrew
3973Morton)
3974
3975
39763) iASL Compiler:
3977
3978Fixed a reported problem where multiple (nested) ElseIf()
3979statements were not handled correctly by the compiler, resulting
3980in incorrect warnings and incorrect AML code.  This was a problem
3981in both the ASL parser and the code generator.
3982
3983
39844) Documentation:
3985
3986Added changes to existing interfaces, new exception codes, and
3987new
3988text concerning reference count object management versus garbage
3989collection.
3990
3991----------------------------------------
399209 May 2003.  Summary of changes for version 20030509.
3993
3994
39951) ACPI CA Core Subsystem:
3996
3997Changed the subsystem initialization sequence to hold off
3998installation of address space handlers until the hardware has
3999been
4000initialized and the system has entered ACPI mode.  This is
4001because
4002the installation of space handlers can cause _REG methods to be
4003run.  Previously, the _REG methods could potentially be run
4004before
4005ACPI mode was enabled.
4006
4007Fixed some memory leak issues related to address space handler
4008and
4009notify handler installation.  There were some problems with the
4010reference count mechanism caused by the fact that the handler
4011objects are shared across several namespace objects.
4012
4013Fixed a reported problem where reference counts within the
4014namespace were not properly updated when named objects created by
4015method execution were deleted.
4016
4017Fixed a reported problem where multiple SSDTs caused a deletion
4018issue during subsystem termination.  Restructured the table data
4019structures to simplify the linked lists and the related code.
4020
4021Fixed a problem where the table ID associated with secondary
4022tables (SSDTs) was not being propagated into the namespace
4023objects
4024created by those tables.  This would only present a problem for
4025tables that are unloaded at run-time, however.
4026
4027Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
4028type as the length parameter (instead of UINT32).
4029
4030Solved a long-standing problem where an ALREADY_EXISTS error
4031appears on various systems.  This problem could happen when there
4032are multiple PCI_Config operation regions under a single PCI root
4033bus.  This doesn't happen very frequently, but there are some
4034systems that do this in the ASL.
4035
4036Fixed a reported problem where the internal DeleteNode function
4037was incorrectly handling the case where a namespace node was the
4038first in the parent's child list, and had additional peers (not
4039the only child, but first in the list of children.)
4040
4041Code and Data Size: Current core subsystem library sizes are
4042shown
4043below.  These are the code and data sizes for the acpica.lib
4044produced by the Microsoft Visual C++ 6.0 compiler, and these
4045values do not include any ACPI driver or OSPM code.  The debug
4046version of the code includes the debug output trace mechanism and
4047has a much larger code and data size.  Note that these values
4048will
4049vary depending on the efficiency of the compiler and the compiler
4050options used during generation.
4051
4052  Previous Release
4053    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
4054    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
4055  Current Release:
4056    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
4057    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
4058
4059
40602) Linux:
4061
4062Allow ":" in OS override string (Ducrot Bruno)
4063
4064Kobject fix (Greg KH)
4065
4066
40673 iASL Compiler/Disassembler:
4068
4069Fixed a problem in the generation of the C source code files (AML
4070is emitted in C source statements for BIOS inclusion) where the
4071Ascii dump that appears within a C comment at the end of each
4072line
4073could cause a compile time error if the AML sequence happens to
4074have an open comment or close comment sequence embedded.
4075
4076
4077----------------------------------------
407824 April 2003.  Summary of changes for version 20030424.
4079
4080
40811) ACPI CA Core Subsystem:
4082
4083Support for big-endian systems has been implemented.  Most of the
4084support has been invisibly added behind big-endian versions of
4085the
4086ACPI_MOVE_* macros.
4087
4088Fixed a problem in AcpiHwDisableGpeBlock() and
4089AcpiHwClearGpeBlock() where an incorrect offset was passed to the
4090low level hardware write routine.  The offset parameter was
4091actually eliminated from the low level read/write routines
4092because
4093they had become obsolete.
4094
4095Fixed a problem where a handler object was deleted twice during
4096the removal of a fixed event handler.
4097
4098
40992) Linux:
4100
4101A fix for SMP systems with link devices was contributed by
4102
4103Compaq's Dan Zink.
4104
4105(2.5) Return whether we handled the interrupt in our IRQ handler.
4106(Linux ISRs no longer return void, so we can propagate the
4107handler
4108return value from the ACPI CA core back to the OS.)
4109
4110
4111
41123) Documentation:
4113
4114The ACPI CA Programmer Reference has been updated to reflect new
4115interfaces and changes to existing interfaces.
4116
4117----------------------------------------
411828 March 2003.  Summary of changes for version 20030328.
4119
41201) ACPI CA Core Subsystem:
4121
4122The GPE Block Device support has been completed.  New interfaces
4123are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
4124interfaces (enable, disable, clear, getstatus) have been split
4125into separate interfaces for Fixed Events and General Purpose
4126Events (GPEs) in order to support GPE Block Devices properly.
4127
4128Fixed a problem where the error message "Failed to acquire
4129semaphore" would appear during operations on the embedded
4130controller (EC).
4131
4132Code and Data Size: Current core subsystem library sizes are
4133shown
4134below.  These are the code and data sizes for the acpica.lib
4135produced by the Microsoft Visual C++ 6.0 compiler, and these
4136values do not include any ACPI driver or OSPM code.  The debug
4137version of the code includes the debug output trace mechanism and
4138has a much larger code and data size.  Note that these values
4139will
4140vary depending on the efficiency of the compiler and the compiler
4141options used during generation.
4142
4143  Previous Release
4144    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
4145    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
4146  Current Release:
4147    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
4148    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
4149
4150
4151----------------------------------------
415228 February 2003.  Summary of changes for version 20030228.
4153
4154
41551) ACPI CA Core Subsystem:
4156
4157The GPE handling and dispatch code has been completely overhauled
4158in preparation for support of GPE Block Devices (ID ACPI0006).
4159This affects internal data structures and code only; there should
4160be no differences visible externally.  One new file has been
4161added, evgpeblk.c
4162
4163The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
4164fields that are used to determine the GPE block lengths.  The
4165REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
4166structures are ignored.  This is per the ACPI specification but
4167it
4168isn't very clear.  The full 256 Block 0/1 GPEs are now supported
4169(the use of REGISTER_BIT_WIDTH limited the number of GPEs to
4170128).
4171
4172In the SCI interrupt handler, removed the read of the PM1_CONTROL
4173register to look at the SCI_EN bit.  On some machines, this read
4174causes an SMI event and greatly slows down SCI events.  (This may
4175in fact be the cause of slow battery status response on some
4176systems.)
4177
4178Fixed a problem where a store of a NULL string to a package
4179object
4180could cause the premature deletion of the object.  This was seen
4181during execution of the battery _BIF method on some systems,
4182resulting in no battery data being returned.
4183
4184Added AcpiWalkResources interface to simplify parsing of resource
4185lists.
4186
4187Code and Data Size: Current core subsystem library sizes are
4188shown
4189below.  These are the code and data sizes for the acpica.lib
4190produced by the Microsoft Visual C++ 6.0 compiler, and these
4191values do not include any ACPI driver or OSPM code.  The debug
4192version of the code includes the debug output trace mechanism and
4193has a much larger code and data size.  Note that these values
4194will
4195vary depending on the efficiency of the compiler and the compiler
4196options used during generation.
4197
4198  Previous Release
4199    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4200    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4201  Current Release:
4202    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
4203    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
4204
4205
42062) Linux
4207
4208S3 fixes (Ole Rohne)
4209
4210Update ACPI PHP driver with to use new acpi_walk_resource API
4211(Bjorn Helgaas)
4212
4213Add S4BIOS support (Pavel Machek)
4214
4215Map in entire table before performing checksum (John Stultz)
4216
4217Expand the mem= cmdline to allow the specification of reserved
4218and
4219ACPI DATA blocks (Pavel Machek)
4220
4221Never use ACPI on VISWS
4222
4223Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
4224
4225Revert a change that allowed P_BLK lengths to be 4 or 5. This is
4226causing us to think that some systems support C2 when they really
4227don't.
4228
4229Do not count processor objects for non-present CPUs (Thanks to
4230Dominik Brodowski)
4231
4232
42333) iASL Compiler:
4234
4235Fixed a problem where ASL include files could not be found and
4236opened.
4237
4238Added support for the _PDC reserved name.
4239
4240
4241----------------------------------------
424222 January 2003.  Summary of changes for version 20030122.
4243
4244
42451) ACPI CA Core Subsystem:
4246
4247Added a check for constructs of the form:  Store (Local0, Local0)
4248where Local0 is not initialized.  Apparently, some BIOS
4249programmers believe that this is a NOOP.  Since this store
4250doesn't
4251do anything anyway, the new prototype behavior will ignore this
4252error.  This is a case where we can relax the strict checking in
4253the interpreter in the name of compatibility.
4254
4255
42562) Linux
4257
4258The AcpiSrc Source Conversion Utility has been released with the
4259Linux package for the first time.  This is the utility that is
4260used to convert the ACPI CA base source code to the Linux
4261version.
4262
4263(Both) Handle P_BLK lengths shorter than 6 more gracefully
4264
4265(Both) Move more headers to include/acpi, and delete an unused
4266header.
4267
4268(Both) Move drivers/acpi/include directory to include/acpi
4269
4270(Both) Boot functions don't use cmdline, so don't pass it around
4271
4272(Both) Remove include of unused header (Adrian Bunk)
4273
4274(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
4275the
4276former now also includes the latter, acpiphp.h only needs the
4277one,
4278now.
4279
4280(2.5) Make it possible to select method of bios restoring after
4281S3
4282resume. [=> no more ugly ifdefs] (Pavel Machek)
4283
4284(2.5) Make proc write interfaces work (Pavel Machek)
4285
4286(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
4287
4288(2.5) Break out ACPI Perf code into its own module, under cpufreq
4289(Dominik Brodowski)
4290
4291(2.4) S4BIOS support (Ducrot Bruno)
4292
4293(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
4294Visinoni)
4295
4296
42973) iASL Compiler:
4298
4299Added support to disassemble SSDT and PSDTs.
4300
4301Implemented support to obtain SSDTs from the Windows registry if
4302available.
4303
4304
4305----------------------------------------
430609 January 2003.  Summary of changes for version 20030109.
4307
43081) ACPI CA Core Subsystem:
4309
4310Changed the behavior of the internal Buffer-to-String conversion
4311function.  The current ACPI specification states that the
4312contents
4313of the buffer are "converted to a string of two-character
4314hexadecimal numbers, each separated by a space".  Unfortunately,
4315this definition is not backwards compatible with existing ACPI
43161.0
4317implementations (although the behavior was not defined in the
4318ACPI
43191.0 specification).  The new behavior simply copies data from the
4320buffer to the string until a null character is found or the end
4321of
4322the buffer is reached.  The new String object is always null
4323terminated.  This problem was seen during the generation of _BIF
4324battery data where incorrect strings were returned for battery
4325type, etc.  This will also require an errata to the ACPI
4326specification.
4327
4328Renamed all instances of NATIVE_UINT and NATIVE_INT to
4329ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
4330
4331Copyright in all module headers (both Linux and non-Linux) has be
4332updated to 2003.
4333
4334Code and Data Size: Current core subsystem library sizes are
4335shown
4336below.  These are the code and data sizes for the acpica.lib
4337produced by the Microsoft Visual C++ 6.0 compiler, and these
4338values do not include any ACPI driver or OSPM code.  The debug
4339version of the code includes the debug output trace mechanism and
4340has a much larger code and data size.  Note that these values
4341will
4342vary depending on the efficiency of the compiler and the compiler
4343options used during generation.
4344
4345  Previous Release
4346    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4347    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4348  Current Release:
4349    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4350    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4351
4352
43532) Linux
4354
4355Fixed an oops on module insertion/removal (Matthew Tippett)
4356
4357(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
4358
4359(2.5) Replace pr_debug (Randy Dunlap)
4360
4361(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
4362
4363(Both) Eliminate spawning of thread from timer callback, in favor
4364of schedule_work()
4365
4366(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
4367
4368(Both) Added define for Fixed Function HW region (Matthew Wilcox)
4369
4370(Both) Add missing statics to button.c (Pavel Machek)
4371
4372Several changes have been made to the source code translation
4373utility that generates the Linux Code in order to make the code
4374more "Linux-like":
4375
4376All typedefs on structs and unions have been removed in keeping
4377with the Linux coding style.
4378
4379Removed the non-Linux SourceSafe module revision number from each
4380module header.
4381
4382Completed major overhaul of symbols to be lowercased for linux.
4383Doubled the number of symbols that are lowercased.
4384
4385Fixed a problem where identifiers within procedure headers and
4386within quotes were not fully lower cased (they were left with a
4387starting capital.)
4388
4389Some C macros whose only purpose is to allow the generation of 16-
4390bit code are now completely removed in the Linux code, increasing
4391readability and maintainability.
4392
4393----------------------------------------
4394
439512 December 2002.  Summary of changes for version 20021212.
4396
4397
43981) ACPI CA Core Subsystem:
4399
4400Fixed a problem where the creation of a zero-length AML Buffer
4401would cause a fault.
4402
4403Fixed a problem where a Buffer object that pointed to a static
4404AML
4405buffer (in an ACPI table) could inadvertently be deleted, causing
4406memory corruption.
4407
4408Fixed a problem where a user buffer (passed in to the external
4409ACPI CA interfaces) could be overwritten if the buffer was too
4410small to complete the operation, causing memory corruption.
4411
4412Fixed a problem in the Buffer-to-String conversion code where a
4413string of length one was always returned, regardless of the size
4414of the input Buffer object.
4415
4416Removed the NATIVE_CHAR data type across the entire source due to
4417lack of need and lack of consistent use.
4418
4419Code and Data Size: Current core subsystem library sizes are
4420shown
4421below.  These are the code and data sizes for the acpica.lib
4422produced by the Microsoft Visual C++ 6.0 compiler, and these
4423values do not include any ACPI driver or OSPM code.  The debug
4424version of the code includes the debug output trace mechanism and
4425has a much larger code and data size.  Note that these values
4426will
4427vary depending on the efficiency of the compiler and the compiler
4428options used during generation.
4429
4430  Previous Release
4431    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
4432    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
4433  Current Release:
4434    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
4435    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
4436
4437
4438----------------------------------------
443905 December 2002.  Summary of changes for version 20021205.
4440
44411) ACPI CA Core Subsystem:
4442
4443Fixed a problem where a store to a String or Buffer object could
4444cause corruption of the DSDT if the object type being stored was
4445the same as the target object type and the length of the object
4446being stored was equal to or smaller than the original (existing)
4447target object.  This was seen to cause corruption of battery _BIF
4448buffers if the _BIF method modified the buffer on the fly.
4449
4450Fixed a problem where an internal error was generated if a
4451control
4452method invocation was used in an OperationRegion, Buffer, or
4453Package declaration.  This was caused by the deferred parsing of
4454the control method and thus the deferred creation of the internal
4455method object.  The solution to this problem was to create the
4456internal method object at the moment the method is encountered in
4457the first pass - so that subsequent references to the method will
4458able to obtain the required parameter count and thus properly
4459parse the method invocation.  This problem presented itself as an
4460AE_AML_INTERNAL during the pass 1 parse phase during table load.
4461
4462Fixed a problem where the internal String object copy routine did
4463not always allocate sufficient memory for the target String
4464object
4465and caused memory corruption.  This problem was seen to cause
4466"Allocation already present in list!" errors as memory allocation
4467became corrupted.
4468
4469Implemented a new function for the evaluation of namespace
4470objects
4471that allows the specification of the allowable return object
4472types.  This simplifies a lot of code that checks for a return
4473object of one or more specific objects returned from the
4474evaluation (such as _STA, etc.)  This may become and external
4475function if it would be useful to ACPI-related drivers.
4476
4477Completed another round of prefixing #defines with "ACPI_" for
4478clarity.
4479
4480Completed additional code restructuring to allow more modular
4481linking for iASL compiler and AcpiExec.  Several files were split
4482creating new files.  New files:  nsparse.c dsinit.c evgpe.c
4483
4484Implemented an abort mechanism to terminate an executing control
4485method via the AML debugger.  This feature is useful for
4486debugging
4487control methods that depend (wait) for specific hardware
4488responses.
4489
4490Code and Data Size: Current core subsystem library sizes are
4491shown
4492below.  These are the code and data sizes for the acpica.lib
4493produced by the Microsoft Visual C++ 6.0 compiler, and these
4494values do not include any ACPI driver or OSPM code.  The debug
4495version of the code includes the debug output trace mechanism and
4496has a much larger code and data size.  Note that these values
4497will
4498vary depending on the efficiency of the compiler and the compiler
4499options used during generation.
4500
4501  Previous Release
4502    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
4503    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
4504  Current Release:
4505    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
4506    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
4507
4508
45092) iASL Compiler/Disassembler
4510
4511Fixed a compiler code generation problem for "Interrupt" Resource
4512Descriptors.  If specified in the ASL, the optional "Resource
4513Source Index" and "Resource Source" fields were not inserted into
4514the correct location within the AML resource descriptor, creating
4515an invalid descriptor.
4516
4517Fixed a disassembler problem for "Interrupt" resource
4518descriptors.
4519The optional "Resource Source Index" and "Resource Source" fields
4520were ignored.
4521
4522
4523----------------------------------------
452422 November 2002.  Summary of changes for version 20021122.
4525
4526
45271) ACPI CA Core Subsystem:
4528
4529Fixed a reported problem where an object stored to a Method Local
4530or Arg was not copied to a new object during the store - the
4531object pointer was simply copied to the Local/Arg.  This caused
4532all subsequent operations on the Local/Arg to also affect the
4533original source of the store operation.
4534
4535Fixed a problem where a store operation to a Method Local or Arg
4536was not completed properly if the Local/Arg contained a reference
4537(from RefOf) to a named field.  The general-purpose store-to-
4538namespace-node code is now used so that this case is handled
4539automatically.
4540
4541Fixed a problem where the internal object copy routine would
4542cause
4543a protection fault if the object being copied was a Package and
4544contained either 1) a NULL package element or 2) a nested sub-
4545package.
4546
4547Fixed a problem with the GPE initialization that resulted from an
4548ambiguity in the ACPI specification.  One section of the
4549specification states that both the address and length of the GPE
4550block must be zero if the block is not supported.  Another
4551section
4552implies that only the address need be zero if the block is not
4553supported.  The code has been changed so that both the address
4554and
4555the length must be non-zero to indicate a valid GPE block (i.e.,
4556if either the address or the length is zero, the GPE block is
4557invalid.)
4558
4559Code and Data Size: Current core subsystem library sizes are
4560shown
4561below.  These are the code and data sizes for the acpica.lib
4562produced by the Microsoft Visual C++ 6.0 compiler, and these
4563values do not include any ACPI driver or OSPM code.  The debug
4564version of the code includes the debug output trace mechanism and
4565has a much larger code and data size.  Note that these values
4566will
4567vary depending on the efficiency of the compiler and the compiler
4568options used during generation.
4569
4570  Previous Release
4571    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
4572    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
4573  Current Release:
4574    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
4575    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
4576
4577
45782) Linux
4579
4580Cleaned up EC driver. Exported an external EC read/write
4581interface. By going through this, other drivers (most notably
4582sonypi) will be able to serialize access to the EC.
4583
4584
45853) iASL Compiler/Disassembler
4586
4587Implemented support to optionally generate include files for both
4588ASM and C (the -i switch).  This simplifies BIOS development by
4589automatically creating include files that contain external
4590declarations for the symbols that are created within the
4591
4592(optionally generated) ASM and C AML source files.
4593
4594
4595----------------------------------------
459615 November 2002.  Summary of changes for version 20021115.
4597
45981) ACPI CA Core Subsystem:
4599
4600Fixed a memory leak problem where an error during resolution of
4601
4602method arguments during a method invocation from another method
4603failed to cleanup properly by deleting all successfully resolved
4604argument objects.
4605
4606Fixed a problem where the target of the Index() operator was not
4607correctly constructed if the source object was a package.  This
4608problem has not been detected because the use of a target operand
4609with Index() is very rare.
4610
4611Fixed a problem with the Index() operator where an attempt was
4612made to delete the operand objects twice.
4613
4614Fixed a problem where an attempt was made to delete an operand
4615twice during execution of the CondRefOf() operator if the target
4616did not exist.
4617
4618Implemented the first of perhaps several internal create object
4619functions that create and initialize a specific object type.
4620This
4621consolidates duplicated code wherever the object is created, thus
4622shrinking the size of the subsystem.
4623
4624Implemented improved debug/error messages for errors that occur
4625during nested method invocations.  All executing method pathnames
4626are displayed (with the error) as the call stack is unwound -
4627thus
4628simplifying debug.
4629
4630Fixed a problem introduced in the 10/02 release that caused
4631premature deletion of a buffer object if a buffer was used as an
4632ASL operand where an integer operand is required (Thus causing an
4633implicit object conversion from Buffer to Integer.)  The change
4634in
4635the 10/02 release was attempting to fix a memory leak (albeit
4636incorrectly.)
4637
4638Code and Data Size: Current core subsystem library sizes are
4639shown
4640below.  These are the code and data sizes for the acpica.lib
4641produced by the Microsoft Visual C++ 6.0 compiler, and these
4642values do not include any ACPI driver or OSPM code.  The debug
4643version of the code includes the debug output trace mechanism and
4644has a much larger code and data size.  Note that these values
4645will
4646vary depending on the efficiency of the compiler and the compiler
4647options used during generation.
4648
4649  Previous Release
4650    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
4651    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
4652  Current Release:
4653    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
4654    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
4655
4656
46572) Linux
4658
4659Changed the implementation of the ACPI semaphores to use down()
4660instead of down_interruptable().  It is important that the
4661execution of ACPI control methods not be interrupted by signals.
4662Methods must run to completion, or the system may be left in an
4663unknown/unstable state.
4664
4665Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
4666set.
4667(Shawn Starr)
4668
4669
46703) iASL Compiler/Disassembler
4671
4672
4673Changed the default location of output files.  All output files
4674are now placed in the current directory by default instead of in
4675the directory of the source file.  This change may affect some
4676existing makefiles, but it brings the behavior of the compiler in
4677line with other similar tools.  The location of the output files
4678can be overridden with the -p command line switch.
4679
4680
4681----------------------------------------
468211 November 2002.  Summary of changes for version 20021111.
4683
4684
46850) ACPI Specification 2.0B is released and is now available at:
4686http://www.acpi.info/index.html
4687
4688
46891) ACPI CA Core Subsystem:
4690
4691Implemented support for the ACPI 2.0 SMBus Operation Regions.
4692This includes the early detection and handoff of the request to
4693the SMBus region handler (avoiding all of the complex field
4694support code), and support for the bidirectional return packet
4695from an SMBus write operation.  This paves the way for the
4696development of SMBus drivers in each host operating system.
4697
4698Fixed a problem where the semaphore WAIT_FOREVER constant was
4699defined as 32 bits, but must be 16 bits according to the ACPI
4700specification.  This had the side effect of causing ASL
4701Mutex/Event timeouts even though the ASL code requested a wait
4702forever.  Changed all internal references to the ACPI timeout
4703parameter to 16 bits to prevent future problems.  Changed the
4704name
4705of WAIT_FOREVER to ACPI_WAIT_FOREVER.
4706
4707Code and Data Size: Current core subsystem library sizes are
4708shown
4709below.  These are the code and data sizes for the acpica.lib
4710produced by the Microsoft Visual C++ 6.0 compiler, and these
4711values do not include any ACPI driver or OSPM code.  The debug
4712version of the code includes the debug output trace mechanism and
4713has a much larger code and data size.  Note that these values
4714will
4715vary depending on the efficiency of the compiler and the compiler
4716options used during generation.
4717
4718  Previous Release
4719    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
4720    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
4721  Current Release:
4722    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
4723    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
4724
4725
47262) Linux
4727
4728Module loading/unloading fixes (John Cagle)
4729
4730
47313) iASL Compiler/Disassembler
4732
4733Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
4734
4735Implemented support for the disassembly of all SMBus protocol
4736keywords (SMBQuick, SMBWord, etc.)
4737
4738----------------------------------------
473901 November 2002.  Summary of changes for version 20021101.
4740
4741
47421) ACPI CA Core Subsystem:
4743
4744Fixed a problem where platforms that have a GPE1 block but no
4745GPE0
4746block were not handled correctly.  This resulted in a "GPE
4747overlap" error message.  GPE0 is no longer required.
4748
4749Removed code added in the previous release that inserted nodes
4750into the namespace in alphabetical order.  This caused some side-
4751effects on various machines.  The root cause of the problem is
4752still under investigation since in theory, the internal ordering
4753of the namespace nodes should not matter.
4754
4755
4756Enhanced error reporting for the case where a named object is not
4757found during control method execution.  The full ACPI namepath
4758(name reference) of the object that was not found is displayed in
4759this case.
4760
4761Note: as a result of the overhaul of the namespace object types
4762in
4763the previous release, the namespace nodes for the predefined
4764scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
4765instead of ACPI_TYPE_ANY.  This simplifies the namespace
4766management code but may affect code that walks the namespace tree
4767looking for specific object types.
4768
4769Code and Data Size: Current core subsystem library sizes are
4770shown
4771below.  These are the code and data sizes for the acpica.lib
4772produced by the Microsoft Visual C++ 6.0 compiler, and these
4773values do not include any ACPI driver or OSPM code.  The debug
4774version of the code includes the debug output trace mechanism and
4775has a much larger code and data size.  Note that these values
4776will
4777vary depending on the efficiency of the compiler and the compiler
4778options used during generation.
4779
4780  Previous Release
4781    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
4782    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
4783  Current Release:
4784    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
4785    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
4786
4787
47882) Linux
4789
4790Fixed a problem introduced in the previous release where the
4791Processor and Thermal objects were not recognized and installed
4792in
4793/proc.  This was related to the scope type change described
4794above.
4795
4796
47973) iASL Compiler/Disassembler
4798
4799Implemented the -g option to get all of the required ACPI tables
4800from the registry and save them to files (Windows version of the
4801compiler only.)  The required tables are the FADT, FACS, and
4802DSDT.
4803
4804Added ACPI table checksum validation during table disassembly in
4805order to catch corrupted tables.
4806
4807
4808----------------------------------------
480922 October 2002.  Summary of changes for version 20021022.
4810
48111) ACPI CA Core Subsystem:
4812
4813Implemented a restriction on the Scope operator that the target
4814must already exist in the namespace at the time the operator is
4815encountered (during table load or method execution).  In other
4816words, forward references are not allowed and Scope() cannot
4817create a new object. This changes the previous behavior where the
4818interpreter would create the name if not found.  This new
4819behavior
4820correctly enables the search-to-root algorithm during namespace
4821lookup of the target name.  Because of this upsearch, this fixes
4822the known Compaq _SB_.OKEC problem and makes both the AML
4823interpreter and iASL compiler compatible with other ACPI
4824implementations.
4825
4826Completed a major overhaul of the internal ACPI object types for
4827the ACPI Namespace and the associated operand objects.  Many of
4828these types had become obsolete with the introduction of the two-
4829pass namespace load.  This cleanup simplifies the code and makes
4830the entire namespace load mechanism much clearer and easier to
4831understand.
4832
4833Improved debug output for tracking scope opening/closing to help
4834diagnose scoping issues.  The old scope name as well as the new
4835scope name are displayed.  Also improved error messages for
4836problems with ASL Mutex objects and error messages for GPE
4837problems.
4838
4839Cleaned up the namespace dump code, removed obsolete code.
4840
4841All string output (for all namespace/object dumps) now uses the
4842common ACPI string output procedure which handles escapes
4843properly
4844and does not emit non-printable characters.
4845
4846Fixed some issues with constants in the 64-bit version of the
4847local C library (utclib.c)
4848
4849
48502) Linux
4851
4852EC Driver:  No longer attempts to acquire the Global Lock at
4853interrupt level.
4854
4855
48563) iASL Compiler/Disassembler
4857
4858Implemented ACPI 2.0B grammar change that disallows all Type 1
4859and
48602 opcodes outside of a control method.  This means that the
4861"executable" operators (versus the "namespace" operators) cannot
4862be used at the table level; they can only be used within a
4863control
4864method.
4865
4866Implemented the restriction on the Scope() operator where the
4867target must already exist in the namespace at the time the
4868operator is encountered (during ASL compilation). In other words,
4869forward references are not allowed and Scope() cannot create a
4870new
4871object.  This makes the iASL compiler compatible with other ACPI
4872implementations and makes the Scope() implementation adhere to
4873the
4874ACPI specification.
4875
4876Fixed a problem where namepath optimization for the Alias
4877operator
4878was optimizing the wrong path (of the two namepaths.)  This
4879caused
4880a "Missing alias link" error message.
4881
4882Fixed a problem where an "unknown reserved name" warning could be
4883incorrectly generated for names like "_SB" when the trailing
4884underscore is not used in the original ASL.
4885
4886Fixed a problem where the reserved name check did not handle
4887NamePaths with multiple NameSegs correctly.  The first nameseg of
4888the NamePath was examined instead of the last NameSeg.
4889
4890
4891----------------------------------------
4892
489302 October 2002.  Summary of changes for this release.
4894
4895
48961) ACPI CA Core Subsystem version 20021002:
4897
4898Fixed a problem where a store/copy of a string to an existing
4899string did not always set the string length properly in the
4900String
4901object.
4902
4903Fixed a reported problem with the ToString operator where the
4904behavior was identical to the ToHexString operator instead of
4905just
4906simply converting a raw buffer to a string data type.
4907
4908Fixed a problem where CopyObject and the other "explicit"
4909conversion operators were not updating the internal namespace
4910node
4911type as part of the store operation.
4912
4913Fixed a memory leak during implicit source operand conversion
4914where the original object was not deleted if it was converted to
4915a
4916new object of a different type.
4917
4918Enhanced error messages for all problems associated with
4919namespace
4920lookups.  Common procedure generates and prints the lookup name
4921as
4922well as the formatted status.
4923
4924Completed implementation of a new design for the Alias support
4925within the namespace.  The existing design did not handle the
4926case
4927where a new object was assigned to one of the two names due to
4928the
4929use of an explicit conversion operator, resulting in the two
4930names
4931pointing to two different objects.  The new design simply points
4932the Alias name to the original name node - not to the object.
4933This results in a level of indirection that must be handled in
4934the
4935name resolution mechanism.
4936
4937Code and Data Size: Current core subsystem library sizes are
4938shown
4939below.  These are the code and data sizes for the acpica.lib
4940produced by the Microsoft Visual C++ 6.0 compiler, and these
4941values do not include any ACPI driver or OSPM code.  The debug
4942version of the code includes the debug output trace mechanism and
4943has a larger code and data size.  Note that these values will
4944vary
4945depending on the efficiency of the compiler and the compiler
4946options used during generation.
4947
4948  Previous Release
4949    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
4950    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
4951  Current Release:
4952    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
4953    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
4954
4955
49562) Linux
4957
4958Initialize thermal driver's timer before it is used. (Knut
4959Neumann)
4960
4961Allow handling negative celsius values. (Kochi Takayoshi)
4962
4963Fix thermal management and make trip points. R/W (Pavel Machek)
4964
4965Fix /proc/acpi/sleep. (P. Christeas)
4966
4967IA64 fixes. (David Mosberger)
4968
4969Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
4970
4971Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
4972Brodowski)
4973
4974
49753) iASL Compiler/Disassembler
4976
4977Clarified some warning/error messages.
4978
4979
4980----------------------------------------
498118 September 2002.  Summary of changes for this release.
4982
4983
49841) ACPI CA Core Subsystem version 20020918:
4985
4986Fixed a reported problem with reference chaining (via the Index()
4987and RefOf() operators) in the ObjectType() and SizeOf()
4988operators.
4989The definition of these operators includes the dereferencing of
4990all chained references to return information on the base object.
4991
4992Fixed a problem with stores to indexed package elements - the
4993existing code would not complete the store if an "implicit
4994conversion" was not performed.  In other words, if the existing
4995object (package element) was to be replaced completely, the code
4996didn't handle this case.
4997
4998Relaxed typechecking on the ASL "Scope" operator to allow the
4999target name to refer to an object of type Integer, String, or
5000Buffer, in addition to the scoping object types (Device,
5001predefined Scopes, Processor, PowerResource, and ThermalZone.)
5002This allows existing AML code that has workarounds for a bug in
5003Windows to function properly.  A warning is issued, however.
5004This
5005affects both the AML interpreter and the iASL compiler. Below is
5006an example of this type of ASL code:
5007
5008      Name(DEB,0x00)
5009      Scope(DEB)
5010      {
5011
5012Fixed some reported problems with 64-bit integer support in the
5013local implementation of C library functions (clib.c)
5014
5015
50162) Linux
5017
5018Use ACPI fix map region instead of IOAPIC region, since it is
5019undefined in non-SMP.
5020
5021Ensure that the SCI has the proper polarity and trigger, even on
5022systems that do not have an interrupt override entry in the MADT.
5023
50242.5 big driver reorganization (Pat Mochel)
5025
5026Use early table mapping code from acpitable.c (Andi Kleen)
5027
5028New blacklist entries (Andi Kleen)
5029
5030Blacklist improvements. Split blacklist code out into a separate
5031file. Move checking the blacklist to very early. Previously, we
5032would use ACPI tables, and then halfway through init, check the
5033blacklist -- too late. Now, it's early enough to completely fall-
5034back to non-ACPI.
5035
5036
50373) iASL Compiler/Disassembler version 20020918:
5038
5039Fixed a problem where the typechecking code didn't know that an
5040alias could point to a method.  In other words, aliases were not
5041being dereferenced during typechecking.
5042
5043
5044----------------------------------------
504529 August 2002.  Summary of changes for this release.
5046
50471) ACPI CA Core Subsystem Version 20020829:
5048
5049If the target of a Scope() operator already exists, it must be an
5050object type that actually opens a scope -- such as a Device,
5051Method, Scope, etc.  This is a fatal runtime error.  Similar
5052error
5053check has been added to the iASL compiler also.
5054
5055Tightened up the namespace load to disallow multiple names in the
5056same scope.  This previously was allowed if both objects were of
5057the same type.  (i.e., a lookup was the same as entering a new
5058name).
5059
5060
50612) Linux
5062
5063Ensure that the ACPI interrupt has the proper trigger and
5064polarity.
5065
5066local_irq_disable is extraneous. (Matthew Wilcox)
5067
5068Make "acpi=off" actually do what it says, and not use the ACPI
5069interpreter *or* the tables.
5070
5071Added arch-neutral support for parsing SLIT and SRAT tables
5072(Kochi
5073Takayoshi)
5074
5075
50763) iASL Compiler/Disassembler  Version 20020829:
5077
5078Implemented namepath optimization for name declarations.  For
5079example, a declaration like "Method (\_SB_.ABCD)" would get
5080optimized to "Method (ABCD)" if the declaration is within the
5081\_SB_ scope.  This optimization is in addition to the named
5082reference path optimization first released in the previous
5083version. This would seem to complete all possible optimizations
5084for namepaths within the ASL/AML.
5085
5086If the target of a Scope() operator already exists, it must be an
5087object type that actually opens a scope -- such as a Device,
5088Method, Scope, etc.
5089
5090Implemented a check and warning for unreachable code in the same
5091block below a Return() statement.
5092
5093Fixed a problem where the listing file was not generated if the
5094compiler aborted if the maximum error count was exceeded (200).
5095
5096Fixed a problem where the typechecking of method return values
5097was
5098broken.  This includes the check for a return value when the
5099method is invoked as a TermArg (a return value is expected.)
5100
5101Fixed a reported problem where EOF conditions during a quoted
5102string or comment caused a fault.
5103
5104
5105----------------------------------------
510615 August 2002.  Summary of changes for this release.
5107
51081) ACPI CA Core Subsystem Version 20020815:
5109
5110Fixed a reported problem where a Store to a method argument that
5111contains a reference did not perform the indirect store
5112correctly.
5113This problem was created during the conversion to the new
5114reference object model - the indirect store to a method argument
5115code was not updated to reflect the new model.
5116
5117Reworked the ACPI mode change code to better conform to ACPI 2.0,
5118handle corner cases, and improve code legibility (Kochi
5119Takayoshi)
5120
5121Fixed a problem with the pathname parsing for the carat (^)
5122prefix.  The heavy use of the carat operator by the new namepath
5123optimization in the iASL compiler uncovered a problem with the
5124AML
5125interpreter handling of this prefix.  In the case where one or
5126more carats precede a single nameseg, the nameseg was treated as
5127standalone and the search rule (to root) was inadvertently
5128applied.  This could cause both the iASL compiler and the
5129interpreter to find the wrong object or to miss the error that
5130should occur if the object does not exist at that exact pathname.
5131
5132Found and fixed the problem where the HP Pavilion DSDT would not
5133load.  This was a relatively minor tweak to the table loading
5134code
5135(a problem caused by the unexpected encounter with a method
5136invocation not within a control method), but it does not solve
5137the
5138overall issue of the execution of AML code at the table level.
5139This investigation is still ongoing.
5140
5141Code and Data Size: Current core subsystem library sizes are
5142shown
5143below.  These are the code and data sizes for the acpica.lib
5144produced by the Microsoft Visual C++ 6.0 compiler, and these
5145values do not include any ACPI driver or OSPM code.  The debug
5146version of the code includes the debug output trace mechanism and
5147has a larger code and data size.  Note that these values will
5148vary
5149depending on the efficiency of the compiler and the compiler
5150options used during generation.
5151
5152  Previous Release
5153    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
5154    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
5155  Current Release:
5156    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
5157    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
5158
5159
51602) Linux
5161
5162Remove redundant slab.h include (Brad Hards)
5163
5164Fix several bugs in thermal.c (Herbert Nachtnebel)
5165
5166Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
5167
5168Change acpi_system_suspend to use updated irq functions (Pavel
5169Machek)
5170
5171Export acpi_get_firmware_table (Matthew Wilcox)
5172
5173Use proper root proc entry for ACPI (Kochi Takayoshi)
5174
5175Fix early-boot table parsing (Bjorn Helgaas)
5176
5177
51783) iASL Compiler/Disassembler
5179
5180Reworked the compiler options to make them more consistent and to
5181use two-letter options where appropriate.  We were running out of
5182sensible letters.   This may break some makefiles, so check the
5183current options list by invoking the compiler with no parameters.
5184
5185Completed the design and implementation of the ASL namepath
5186optimization option for the compiler.  This option optimizes all
5187references to named objects to the shortest possible path.  The
5188first attempt tries to utilize a single nameseg (4 characters)
5189and
5190the "search-to-root" algorithm used by the interpreter.  If that
5191cannot be used (because either the name is not in the search path
5192or there is a conflict with another object with the same name),
5193the pathname is optimized using the carat prefix (usually a
5194shorter string than specifying the entire path from the root.)
5195
5196Implemented support to obtain the DSDT from the Windows registry
5197(when the disassembly option is specified with no input file).
5198Added this code as the implementation for AcpiOsTableOverride in
5199the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
5200utility) to scan memory for the DSDT to the AcpiOsTableOverride
5201function in the DOS OSL to make the disassembler truly OS
5202independent.
5203
5204Implemented a new option to disassemble and compile in one step.
5205When used without an input filename, this option will grab the
5206DSDT from the local machine, disassemble it, and compile it in
5207one
5208step.
5209
5210Added a warning message for invalid escapes (a backslash followed
5211by any character other than the allowable escapes).  This catches
5212the quoted string error "\_SB_" (which should be "\\_SB_" ).
5213
5214Also, there are numerous instances in the ACPI specification
5215where
5216this error occurs.
5217
5218Added a compiler option to disable all optimizations.  This is
5219basically the "compatibility mode" because by using this option,
5220the AML code will come out exactly the same as other ASL
5221compilers.
5222
5223Added error messages for incorrectly ordered dependent resource
5224functions.  This includes: missing EndDependentFn macro at end of
5225dependent resource list, nested dependent function macros (both
5226start and end), and missing StartDependentFn macro.  These are
5227common errors that should be caught at compile time.
5228
5229Implemented _OSI support for the disassembler and compiler.  _OSI
5230must be included in the namespace for proper disassembly (because
5231the disassembler must know the number of arguments.)
5232
5233Added an "optimization" message type that is optional (off by
5234default).  This message is used for all optimizations - including
5235constant folding, integer optimization, and namepath
5236optimization.
5237
5238----------------------------------------
523925 July 2002.  Summary of changes for this release.
5240
5241
52421) ACPI CA Core Subsystem Version 20020725:
5243
5244The AML Disassembler has been enhanced to produce compilable ASL
5245code and has been integrated into the iASL compiler (see below)
5246as
5247well as the single-step disassembly for the AML debugger and the
5248disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
5249resource templates and macros are fully supported.  The
5250disassembler has been tested on over 30 different AML files,
5251producing identical AML when the resulting disassembled ASL file
5252is recompiled with the same ASL compiler.
5253
5254Modified the Resource Manager to allow zero interrupts and zero
5255dma channels during the GetCurrentResources call.  This was
5256causing problems on some platforms.
5257
5258Added the AcpiOsRedirectOutput interface to the OSL to simplify
5259output redirection for the AcpiOsPrintf and AcpiOsVprintf
5260interfaces.
5261
5262Code and Data Size: Current core subsystem library sizes are
5263shown
5264below.  These are the code and data sizes for the acpica.lib
5265produced by the Microsoft Visual C++ 6.0 compiler, and these
5266values do not include any ACPI driver or OSPM code.  The debug
5267version of the code includes the debug output trace mechanism and
5268has a larger code and data size.  Note that these values will
5269vary
5270depending on the efficiency of the compiler and the compiler
5271options used during generation.
5272
5273  Previous Release
5274    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
5275    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
5276  Current Release:
5277    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
5278    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
5279
5280
52812) Linux
5282
5283Fixed a panic in the EC driver (Dominik Brodowski)
5284
5285Implemented checksum of the R/XSDT itself during Linux table scan
5286(Richard Schaal)
5287
5288
52893) iASL compiler
5290
5291The AML disassembler is integrated into the compiler.  The "-d"
5292option invokes the disassembler  to completely disassemble an
5293input AML file, producing as output a text ASL file with the
5294extension ".dsl" (to avoid name collisions with existing .asl
5295source files.)  A future enhancement will allow the disassembler
5296to obtain the BIOS DSDT from the registry under Windows.
5297
5298Fixed a problem with the VendorShort and VendorLong resource
5299descriptors where an invalid AML sequence was created.
5300
5301Implemented a fix for BufferData term in the ASL parser.  It was
5302inadvertently defined twice, allowing invalid syntax to pass and
5303causing reduction conflicts.
5304
5305Fixed a problem where the Ones opcode could get converted to a
5306value of zero if "Ones" was used where a byte, word or dword
5307value
5308was expected.  The 64-bit value is now truncated to the correct
5309size with the correct value.
5310
5311
5312
5313----------------------------------------
531402 July 2002.  Summary of changes for this release.
5315
5316
53171) ACPI CA Core Subsystem Version 20020702:
5318
5319The Table Manager code has been restructured to add several new
5320features.  Tables that are not required by the core subsystem
5321(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
5322validated in any way and are returned from AcpiGetFirmwareTable
5323if
5324requested.  The AcpiOsTableOverride interface is now called for
5325each table that is loaded by the subsystem in order to allow the
5326host to override any table it chooses.  Previously, only the DSDT
5327could be overridden.  Added one new files, tbrsdt.c and
5328tbgetall.c.
5329
5330Fixed a problem with the conversion of internal package objects
5331to
5332external objects (when a package is returned from a control
5333method.)  The return buffer length was set to zero instead of the
5334proper length of the package object.
5335
5336Fixed a reported problem with the use of the RefOf and DeRefOf
5337operators when passing reference arguments to control methods.  A
5338new type of Reference object is used internally for references
5339produced by the RefOf operator.
5340
5341Added additional error messages in the Resource Manager to
5342explain
5343AE_BAD_DATA errors when they occur during resource parsing.
5344
5345Split the AcpiEnableSubsystem into two primitives to enable a
5346finer granularity initialization sequence.  These two calls
5347should
5348be called in this order: AcpiEnableSubsystem (flags),
5349AcpiInitializeObjects (flags).  The flags parameter remains the
5350same.
5351
5352
53532) Linux
5354
5355Updated the ACPI utilities module to understand the new style of
5356fully resolved package objects that are now returned from the
5357core
5358subsystem.  This eliminates errors of the form:
5359
5360    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
5361    acpi_utils-0430 [145] acpi_evaluate_reference:
5362        Invalid element in package (not a device reference)
5363
5364The method evaluation utility uses the new buffer allocation
5365scheme instead of calling AcpiEvaluate Object twice.
5366
5367Added support for ECDT. This allows the use of the Embedded
5368
5369Controller before the namespace has been fully initialized, which
5370is necessary for ACPI 2.0 support, and for some laptops to
5371initialize properly. (Laptops using ECDT are still rare, so only
5372limited testing was performed of the added functionality.)
5373
5374Fixed memory leaks in the EC driver.
5375
5376Eliminated a brittle code structure in acpi_bus_init().
5377
5378Eliminated the acpi_evaluate() helper function in utils.c. It is
5379no longer needed since acpi_evaluate_object can optionally
5380allocate memory for the return object.
5381
5382Implemented fix for keyboard hang when getting battery readings
5383on
5384some systems (Stephen White)
5385
5386PCI IRQ routing update (Dominik Brodowski)
5387
5388Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
5389support
5390
5391----------------------------------------
539211 June 2002.  Summary of changes for this release.
5393
5394
53951) ACPI CA Core Subsystem Version 20020611:
5396
5397Fixed a reported problem where constants such as Zero and One
5398appearing within _PRT packages were not handled correctly within
5399the resource manager code.  Originally reported against the ASL
5400compiler because the code generator now optimizes integers to
5401their minimal AML representation (i.e. AML constants if
5402possible.)
5403The _PRT code now handles all AML constant opcodes correctly
5404(Zero, One, Ones, Revision).
5405
5406Fixed a problem with the Concatenate operator in the AML
5407interpreter where a buffer result object was incorrectly marked
5408as
5409not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
5410
5411All package sub-objects are now fully resolved before they are
5412returned from the external ACPI interfaces.  This means that name
5413strings are resolved to object handles, and constant operators
5414(Zero, One, Ones, Revision) are resolved to Integers.
5415
5416Implemented immediate resolution of the AML Constant opcodes
5417(Zero, One, Ones, Revision) to Integer objects upon detection
5418within the AML stream. This has simplified and reduced the
5419generated code size of the subsystem by eliminating about 10
5420switch statements for these constants (which previously were
5421contained in Reference objects.)  The complicating issues are
5422that
5423the Zero opcode is used as a "placeholder" for unspecified
5424optional target operands and stores to constants are defined to
5425be
5426no-ops.
5427
5428Code and Data Size: Current core subsystem library sizes are
5429shown
5430below. These are the code and data sizes for the acpica.lib
5431produced by the Microsoft Visual C++ 6.0 compiler, and these
5432values do not include any ACPI driver or OSPM code.  The debug
5433version of the code includes the debug output trace mechanism and
5434has a larger code and data size.  Note that these values will
5435vary
5436depending on the efficiency of the compiler and the compiler
5437options used during generation.
5438
5439  Previous Release
5440    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
5441    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
5442  Current Release:
5443    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
5444    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
5445
5446
54472) Linux
5448
5449
5450Added preliminary support for obtaining _TRA data for PCI root
5451bridges (Bjorn Helgaas).
5452
5453
54543) iASL Compiler Version X2046:
5455
5456Fixed a problem where the "_DDN" reserved name was defined to be
5457a
5458control method with one argument.  There are no arguments, and
5459_DDN does not have to be a control method.
5460
5461Fixed a problem with the Linux version of the compiler where the
5462source lines printed with error messages were the wrong lines.
5463This turned out to be the "LF versus CR/LF" difference between
5464Windows and Unix.  This appears to be the longstanding issue
5465concerning listing output and error messages.
5466
5467Fixed a problem with the Linux version of compiler where opcode
5468names within error messages were wrong.  This was caused by a
5469slight difference in the output of the Flex tool on Linux versus
5470Windows.
5471
5472Fixed a problem with the Linux compiler where the hex output
5473files
5474contained some garbage data caused by an internal buffer overrun.
5475
5476
5477----------------------------------------
547817 May 2002.  Summary of changes for this release.
5479
5480
54811) ACPI CA Core Subsystem Version 20020517:
5482
5483Implemented a workaround to an BIOS bug discovered on the HP
5484OmniBook where the FADT revision number and the table size are
5485inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
5486new
5487behavior is to fallback to using only the ACPI 1.0 fields of the
5488FADT if the table is too small to be a ACPI 2.0 table as claimed
5489by the revision number.  Although this is a BIOS bug, this is a
5490case where the workaround is simple enough and with no side
5491effects, so it seemed prudent to add it.  A warning message is
5492issued, however.
5493
5494Implemented minimum size checks for the fixed-length ACPI tables
5495-
5496- the FADT and FACS, as well as consistency checks between the
5497revision number and the table size.
5498
5499Fixed a reported problem in the table override support where the
5500new table pointer was incorrectly treated as a physical address
5501instead of a logical address.
5502
5503Eliminated the use of the AE_AML_ERROR exception and replaced it
5504with more descriptive codes.
5505
5506Fixed a problem where an exception would occur if an ASL Field
5507was
5508defined with no named Field Units underneath it (used by some
5509index fields).
5510
5511Code and Data Size: Current core subsystem library sizes are
5512shown
5513below.  These are the code and data sizes for the acpica.lib
5514produced by the Microsoft Visual C++ 6.0 compiler, and these
5515values do not include any ACPI driver or OSPM code.  The debug
5516version of the code includes the debug output trace mechanism and
5517has a larger code and data size.  Note that these values will
5518vary
5519depending on the efficiency of the compiler and the compiler
5520options used during generation.
5521
5522  Previous Release
5523    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
5524    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
5525  Current Release:
5526    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
5527    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
5528
5529
5530
55312) Linux
5532
5533Much work done on ACPI init (MADT and PCI IRQ routing support).
5534(Paul D. and Dominik Brodowski)
5535
5536Fix PCI IRQ-related panic on boot (Sam Revitch)
5537
5538Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
5539
5540Fix "MHz" typo (Dominik Brodowski)
5541
5542Fix RTC year 2000 issue (Dominik Brodowski)
5543
5544Preclude multiple button proc entries (Eric Brunet)
5545
5546Moved arch-specific code out of include/platform/aclinux.h
5547
55483) iASL Compiler Version X2044:
5549
5550Implemented error checking for the string used in the EISAID
5551macro
5552(Usually used in the definition of the _HID object.)  The code
5553now
5554strictly enforces the PnP format - exactly 7 characters, 3
5555uppercase letters and 4 hex digits.
5556
5557If a raw string is used in the definition of the _HID object
5558(instead of the EISAID macro), the string must contain all
5559alphanumeric characters (e.g., "*PNP0011" is not allowed because
5560of the asterisk.)
5561
5562Implemented checking for invalid use of ACPI reserved names for
5563most of the name creation operators (Name, Device, Event, Mutex,
5564OperationRegion, PowerResource, Processor, and ThermalZone.)
5565Previously, this check was only performed for control methods.
5566
5567Implemented an additional check on the Name operator to emit an
5568error if a reserved name that must be implemented in ASL as a
5569control method is used.  We know that a reserved name must be a
5570method if it is defined with input arguments.
5571
5572The warning emitted when a namespace object reference is not
5573found
5574during the cross reference phase has been changed into an error.
5575The "External" directive should be used for names defined in
5576other
5577modules.
5578
5579
55804) Tools and Utilities
5581
5582The 16-bit tools (adump16 and aexec16) have been regenerated and
5583tested.
5584
5585Fixed a problem with the output of both acpidump and adump16
5586where
5587the indentation of closing parentheses and brackets was not
5588
5589aligned properly with the parent block.
5590
5591
5592----------------------------------------
559303 May 2002.  Summary of changes for this release.
5594
5595
55961) ACPI CA Core Subsystem Version 20020503:
5597
5598Added support a new OSL interface that allows the host operating
5599
5600system software to override the DSDT found in the firmware -
5601AcpiOsTableOverride.  With this interface, the OSL can examine
5602the
5603version of the firmware DSDT and replace it with a different one
5604if desired.
5605
5606Added new external interfaces for accessing ACPI registers from
5607device drivers and other system software - AcpiGetRegister and
5608AcpiSetRegister.  This was simply an externalization of the
5609existing AcpiHwBitRegister interfaces.
5610
5611Fixed a regression introduced in the previous build where the
5612ASL/AML CreateField operator always returned an error,
5613"destination must be a NS Node".
5614
5615Extended the maximum time (before failure) to successfully enable
5616ACPI mode to 3 seconds.
5617
5618Code and Data Size: Current core subsystem library sizes are
5619shown
5620below.  These are the code and data sizes for the acpica.lib
5621produced by the Microsoft Visual C++ 6.0 compiler, and these
5622values do not include any ACPI driver or OSPM code.  The debug
5623version of the code includes the debug output trace mechanism and
5624has a larger code and data size.  Note that these values will
5625vary
5626depending on the efficiency of the compiler and the compiler
5627options used during generation.
5628
5629  Previous Release
5630    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
5631    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
5632  Current Release:
5633    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
5634    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
5635
5636
56372) Linux
5638
5639Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
5640free. While 3 out of 4 of our in-house systems work fine, the
5641last
5642one still hangs when testing the LAPIC timer.
5643
5644Renamed many files in 2.5 kernel release to omit "acpi_" from the
5645name.
5646
5647Added warning on boot for Presario 711FR.
5648
5649Sleep improvements (Pavel Machek)
5650
5651ACPI can now be built without CONFIG_PCI enabled.
5652
5653IA64: Fixed memory map functions (JI Lee)
5654
5655
56563) iASL Compiler Version X2043:
5657
5658Added support to allow the compiler to be integrated into the MS
5659VC++ development environment for one-button compilation of single
5660files or entire projects -- with error-to-source-line mapping.
5661
5662Implemented support for compile-time constant folding for the
5663Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
5664specification.  This allows the ASL writer to use expressions
5665instead of Integer/Buffer/String constants in terms that must
5666evaluate to constants at compile time and will also simplify the
5667emitted AML in any such sub-expressions that can be folded
5668(evaluated at compile-time.)  This increases the size of the
5669compiler significantly because a portion of the ACPI CA AML
5670interpreter is included within the compiler in order to pre-
5671evaluate constant expressions.
5672
5673
5674Fixed a problem with the "Unicode" ASL macro that caused the
5675compiler to fault.  (This macro is used in conjunction with the
5676_STR reserved name.)
5677
5678Implemented an AML opcode optimization to use the Zero, One, and
5679Ones opcodes where possible to further reduce the size of integer
5680constants and thus reduce the overall size of the generated AML
5681code.
5682
5683Implemented error checking for new reserved terms for ACPI
5684version
56852.0A.
5686
5687Implemented the -qr option to display the current list of ACPI
5688reserved names known to the compiler.
5689
5690Implemented the -qc option to display the current list of ASL
5691operators that are allowed within constant expressions and can
5692therefore be folded at compile time if the operands are
5693constants.
5694
5695
56964) Documentation
5697
5698Updated the Programmer's Reference for new interfaces, data
5699types,
5700and memory allocation model options.
5701
5702Updated the iASL Compiler User Reference to apply new format and
5703add information about new features and options.
5704
5705----------------------------------------
570619 April 2002.  Summary of changes for this release.
5707
57081) ACPI CA Core Subsystem Version 20020419:
5709
5710The source code base for the Core Subsystem has been completely
5711cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
5712versions.  The Lint option files used are included in the
5713/acpi/generate/lint directory.
5714
5715Implemented enhanced status/error checking across the entire
5716Hardware manager subsystem.  Any hardware errors (reported from
5717the OSL) are now bubbled up and will abort a running control
5718method.
5719
5720
5721Fixed a problem where the per-ACPI-table integer width (32 or 64)
5722was stored only with control method nodes, causing a fault when
5723non-control method code was executed during table loading.  The
5724solution implemented uses a global variable to indicate table
5725width across the entire ACPI subsystem.  Therefore, ACPI CA does
5726not support mixed integer widths across different ACPI tables
5727(DSDT, SSDT).
5728
5729Fixed a problem where NULL extended fields (X fields) in an ACPI
57302.0 ACPI FADT caused the table load to fail.  Although the
5731existing ACPI specification is a bit fuzzy on this topic, the new
5732behavior is to fall back on a ACPI 1.0 field if the corresponding
5733ACPI 2.0 X field is zero (even though the table revision
5734indicates
5735a full ACPI 2.0 table.)  The ACPI specification will be updated
5736to
5737clarify this issue.
5738
5739Fixed a problem with the SystemMemory operation region handler
5740where memory was always accessed byte-wise even if the AML-
5741specified access width was larger than a byte.  This caused
5742problems on systems with memory-mapped I/O.  Memory is now
5743accessed with the width specified.  On systems that do not
5744support
5745non-aligned transfers, a check is made to guarantee proper
5746address
5747alignment before proceeding in order to avoid an AML-caused
5748alignment fault within the kernel.
5749
5750
5751Fixed a problem with the ExtendedIrq resource where only one byte
5752of the 4-byte Irq field was extracted.
5753
5754Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
5755function was out of date and required a rewrite.
5756
5757Code and Data Size: Current core subsystem library sizes are
5758shown
5759below.  These are the code and data sizes for the acpica.lib
5760produced by the Microsoft Visual C++ 6.0 compiler, and these
5761values do not include any ACPI driver or OSPM code.  The debug
5762version of the code includes the debug output trace mechanism and
5763has a larger code and data size.  Note that these values will
5764vary
5765depending on the efficiency of the compiler and the compiler
5766options used during generation.
5767
5768  Previous Release
5769    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
5770    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
5771  Current Release:
5772    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
5773    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
5774
5775
57762) Linux
5777
5778PCI IRQ routing fixes (Dominik Brodowski)
5779
5780
57813) iASL Compiler Version X2042:
5782
5783Implemented an additional compile-time error check for a field
5784unit whose size + minimum access width would cause a run-time
5785access beyond the end-of-region.  Previously, only the field size
5786itself was checked.
5787
5788The Core subsystem and iASL compiler now share a common parse
5789object in preparation for compile-time evaluation of the type
57903/4/5 ASL operators.
5791
5792
5793----------------------------------------
5794Summary of changes for this release: 03_29_02
5795
57961) ACPI CA Core Subsystem Version 20020329:
5797
5798Implemented support for late evaluation of TermArg operands to
5799Buffer and Package objects.  This allows complex expressions to
5800be
5801used in the declarations of these object types.
5802
5803Fixed an ACPI 1.0 compatibility issue when reading Fields. In
5804ACPI
58051.0, if the field was larger than 32 bits, it was returned as a
5806buffer - otherwise it was returned as an integer.  In ACPI 2.0,
5807the field is returned as a buffer only if the field is larger
5808than
580964 bits.  The TableRevision is now considered when making this
5810conversion to avoid incompatibility with existing ASL code.
5811
5812Implemented logical addressing for AcpiOsGetRootPointer.  This
5813allows an RSDP with either a logical or physical address.  With
5814this support, the host OS can now override all ACPI tables with
5815one logical RSDP.  Includes implementation of  "typed" pointer
5816support to allow a common data type for both physical and logical
5817pointers internally.  This required a change to the
5818AcpiOsGetRootPointer interface.
5819
5820Implemented the use of ACPI 2.0 Generic Address Structures for
5821all
5822GPE, Fixed Event, and PM Timer I/O.  This allows the use of
5823memory
5824mapped I/O for these ACPI features.
5825
5826Initialization now ignores not only non-required tables (All
5827tables other than the FADT, FACS, DSDT, and SSDTs), but also does
5828not validate the table headers of unrecognized tables.
5829
5830Fixed a problem where a notify handler could only be
5831installed/removed on an object of type Device.  All "notify"
5832
5833objects are now supported -- Devices, Processor, Power, and
5834Thermal.
5835
5836Removed most verbosity from the ACPI_DB_INFO debug level.  Only
5837critical information is returned when this debug level is
5838enabled.
5839
5840Code and Data Size: Current core subsystem library sizes are
5841shown
5842below.  These are the code and data sizes for the acpica.lib
5843produced by the Microsoft Visual C++ 6.0 compiler, and these
5844values do not include any ACPI driver or OSPM code.  The debug
5845version of the code includes the debug output trace mechanism and
5846has a larger code and data size.  Note that these values will
5847vary
5848depending on the efficiency of the compiler and the compiler
5849options used during generation.
5850
5851  Previous Release
5852    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
5853    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
5854  Current Release:
5855    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
5856    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
5857
5858
58592) Linux:
5860
5861The processor driver (acpi_processor.c) now fully supports ACPI
58622.0-based processor performance control (e.g. Intel(R)
5863SpeedStep(TM) technology) Note that older laptops that only have
5864the Intel "applet" interface are not supported through this.  The
5865'limit' and 'performance' interface (/proc) are fully functional.
5866[Note that basic policy for controlling performance state
5867transitions will be included in the next version of ospmd.]  The
5868idle handler was modified to more aggressively use C2, and PIIX4
5869errata handling underwent a complete overhaul (big thanks to
5870Dominik Brodowski).
5871
5872Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
5873based devices in the ACPI namespace are now dynamically bound
5874(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
5875This allows, among other things, ACPI to resolve bus numbers for
5876subordinate PCI bridges.
5877
5878Enhanced PCI IRQ routing to get the proper bus number for _PRT
5879entries defined underneath PCI bridges.
5880
5881Added IBM 600E to bad bios list due to invalid _ADR value for
5882PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
5883
5884In the process of adding full MADT support (e.g. IOAPIC) for IA32
5885(acpi.c, mpparse.c) -- stay tuned.
5886
5887Added back visual differentiation between fixed-feature and
5888control-method buttons in dmesg.  Buttons are also subtyped (e.g.
5889button/power/PWRF) to simplify button identification.
5890
5891We no longer use -Wno-unused when compiling debug. Please ignore
5892any "_THIS_MODULE defined but not used" messages.
5893
5894Can now shut down the system using "magic sysrq" key.
5895
5896
58973) iASL Compiler version 2041:
5898
5899Fixed a problem where conversion errors for hex/octal/decimal
5900constants were not reported.
5901
5902Implemented a fix for the General Register template Address
5903field.
5904This field was 8 bits when it should be 64.
5905
5906Fixed a problem where errors/warnings were no longer being
5907emitted
5908within the listing output file.
5909
5910Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
5911exactly 4 characters, alphanumeric only.
5912
5913
5914
5915
5916----------------------------------------
5917Summary of changes for this release: 03_08_02
5918
5919
59201) ACPI CA Core Subsystem Version 20020308:
5921
5922Fixed a problem with AML Fields where the use of the "AccessAny"
5923keyword could cause an interpreter error due to attempting to
5924read
5925or write beyond the end of the parent Operation Region.
5926
5927Fixed a problem in the SystemMemory Operation Region handler
5928where
5929an attempt was made to map memory beyond the end of the region.
5930This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
5931errors on some Linux systems.
5932
5933Fixed a problem where the interpreter/namespace "search to root"
5934algorithm was not functioning for some object types.  Relaxed the
5935internal restriction on the search to allow upsearches for all
5936external object types as well as most internal types.
5937
5938
59392) Linux:
5940
5941We now use safe_halt() macro versus individual calls to sti |
5942hlt.
5943
5944Writing to the processor limit interface should now work. "echo
59451"
5946will increase the limit, 2 will decrease, and 0 will reset to the
5947
5948default.
5949
5950
59513) ASL compiler:
5952
5953Fixed segfault on Linux version.
5954
5955
5956----------------------------------------
5957Summary of changes for this release: 02_25_02
5958
59591) ACPI CA Core Subsystem:
5960
5961
5962Fixed a problem where the GPE bit masks were not initialized
5963properly, causing erratic GPE behavior.
5964
5965Implemented limited support for multiple calling conventions.
5966The
5967code can be generated with either the VPL (variable parameter
5968list, or "C") convention, or the FPL (fixed parameter list, or
5969"Pascal") convention.  The core subsystem is about 3.4% smaller
5970when generated with FPL.
5971
5972
59732) Linux
5974
5975Re-add some /proc/acpi/event functionality that was lost during
5976the rewrite
5977
5978Resolved issue with /proc events for fixed-feature buttons
5979showing
5980up as the system device.
5981
5982Fixed checks on C2/C3 latencies to be inclusive of maximum
5983values.
5984
5985Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
5986
5987Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
5988
5989Fixed limit interface & usage to fix bugs with passive cooling
5990hysterisis.
5991
5992Restructured PRT support.
5993
5994
5995----------------------------------------
5996Summary of changes for this label: 02_14_02
5997
5998
59991) ACPI CA Core Subsystem:
6000
6001Implemented support in AcpiLoadTable to allow loading of FACS and
6002FADT tables.
6003
6004Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
6005been removed.  All 64-bit platforms should be migrated to the
6006ACPI
60072.0 tables.  The actbl71.h header has been removed from the
6008source
6009tree.
6010
6011All C macros defined within the subsystem have been prefixed with
6012"ACPI_" to avoid collision with other system include files.
6013
6014Removed the return value for the two AcpiOsPrint interfaces,
6015since
6016it is never used and causes lint warnings for ignoring the return
6017value.
6018
6019Added error checking to all internal mutex acquire and release
6020calls.  Although a failure from one of these interfaces is
6021probably a fatal system error, these checks will cause the
6022immediate abort of the currently executing method or interface.
6023
6024Fixed a problem where the AcpiSetCurrentResources interface could
6025fault.  This was a side effect of the deployment of the new
6026memory
6027allocation model.
6028
6029Fixed a couple of problems with the Global Lock support
6030introduced
6031in the last major build.  The "common" (1.0/2.0) internal FACS
6032was
6033being overwritten with the FACS signature and clobbering the
6034Global Lock pointer.  Also, the actual firmware FACS was being
6035unmapped after construction of the "common" FACS, preventing
6036access to the actual Global Lock field within it.  The "common"
6037internal FACS is no longer installed as an actual ACPI table; it
6038is used simply as a global.
6039
6040Code and Data Size: Current core subsystem library sizes are
6041shown
6042below.  These are the code and data sizes for the acpica.lib
6043produced by the Microsoft Visual C++ 6.0 compiler, and these
6044values do not include any ACPI driver or OSPM code.  The debug
6045version of the code includes the debug output trace mechanism and
6046has a larger code and data size.  Note that these values will
6047vary
6048depending on the efficiency of the compiler and the compiler
6049options used during generation.
6050
6051  Previous Release (02_07_01)
6052    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
6053    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
6054  Current Release:
6055    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
6056    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
6057
6058
60592) Linux
6060
6061Updated Linux-specific code for core macro and OSL interface
6062changes described above.
6063
6064Improved /proc/acpi/event. It now can be opened only once and has
6065proper poll functionality.
6066
6067Fixed and restructured power management (acpi_bus).
6068
6069Only create /proc "view by type" when devices of that class
6070exist.
6071
6072Fixed "charging/discharging" bug (and others) in acpi_battery.
6073
6074Improved thermal zone code.
6075
6076
60773) ASL Compiler, version X2039:
6078
6079
6080Implemented the new compiler restriction on ASL String hex/octal
6081escapes to non-null, ASCII values.  An error results if an
6082invalid
6083value is used.  (This will require an ACPI 2.0 specification
6084change.)
6085
6086AML object labels that are output to the optional C and ASM
6087source
6088are now prefixed with both the ACPI table signature and table ID
6089to help guarantee uniqueness within a large BIOS project.
6090
6091
6092----------------------------------------
6093Summary of changes for this label: 02_01_02
6094
60951) ACPI CA Core Subsystem:
6096
6097ACPI 2.0 support is complete in the entire Core Subsystem and the
6098ASL compiler. All new ACPI 2.0 operators are implemented and all
6099other changes for ACPI 2.0 support are complete.  With
6100simultaneous code and data optimizations throughout the
6101subsystem,
6102ACPI 2.0 support has been implemented with almost no additional
6103cost in terms of code and data size.
6104
6105Implemented a new mechanism for allocation of return buffers.  If
6106the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
6107be allocated on behalf of the caller.  Consolidated all return
6108buffer validation and allocation to a common procedure.  Return
6109buffers will be allocated via the primary OSL allocation
6110interface
6111since it appears that a separate pool is not needed by most
6112users.
6113If a separate pool is required for these buffers, the caller can
6114still use the original mechanism and pre-allocate the buffer(s).
6115
6116Implemented support for string operands within the DerefOf
6117operator.
6118
6119Restructured the Hardware and Event managers to be table driven,
6120simplifying the source code and reducing the amount of generated
6121code.
6122
6123Split the common read/write low-level ACPI register bitfield
6124procedure into a separate read and write, simplifying the code
6125considerably.
6126
6127Obsoleted the AcpiOsCallocate OSL interface.  This interface was
6128used only a handful of times and didn't have enough critical mass
6129for a separate interface.  Replaced with a common calloc
6130procedure
6131in the core.
6132
6133Fixed a reported problem with the GPE number mapping mechanism
6134that allows GPE1 numbers to be non-contiguous with GPE0.
6135Reorganized the GPE information and shrunk a large array that was
6136originally large enough to hold info for all possible GPEs (256)
6137to simply large enough to hold all GPEs up to the largest GPE
6138number on the machine.
6139
6140Fixed a reported problem with resource structure alignment on 64-
6141bit platforms.
6142
6143Changed the AcpiEnableEvent and AcpiDisableEvent external
6144interfaces to not require any flags for the common case of
6145enabling/disabling a GPE.
6146
6147Implemented support to allow a "Notify" on a Processor object.
6148
6149Most TBDs in comments within the source code have been resolved
6150and eliminated.
6151
6152
6153Fixed a problem in the interpreter where a standalone parent
6154prefix (^) was not handled correctly in the interpreter and
6155debugger.
6156
6157Removed obsolete and unnecessary GPE save/restore code.
6158
6159Implemented Field support in the ASL Load operator.  This allows
6160a
6161table to be loaded from a named field, in addition to loading a
6162table directly from an Operation Region.
6163
6164Implemented timeout and handle support in the external Global
6165Lock
6166interfaces.
6167
6168Fixed a problem in the AcpiDump utility where pathnames were no
6169longer being generated correctly during the dump of named
6170objects.
6171
6172Modified the AML debugger to give a full display of if/while
6173predicates instead of just one AML opcode at a time.  (The
6174predicate can have several nested ASL statements.)  The old
6175method
6176was confusing during single stepping.
6177
6178Code and Data Size: Current core subsystem library sizes are
6179shown
6180below. These are the code and data sizes for the acpica.lib
6181produced by the Microsoft Visual C++ 6.0 compiler, and these
6182values do not include any ACPI driver or OSPM code.  The debug
6183version of the code includes the debug output trace mechanism and
6184has a larger code and data size.  Note that these values will
6185vary
6186depending on the efficiency of the compiler and the compiler
6187options used during generation.
6188
6189  Previous Release (12_18_01)
6190     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
6191     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
6192   Current Release:
6193     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
6194     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
6195
61962) Linux
6197
6198 Implemented fix for PIIX reverse throttling errata (Processor
6199driver)
6200
6201Added new Limit interface (Processor and Thermal drivers)
6202
6203New thermal policy (Thermal driver)
6204
6205Many updates to /proc
6206
6207Battery "low" event support (Battery driver)
6208
6209Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
6210
6211IA32 - IA64 initialization unification, no longer experimental
6212
6213Menuconfig options redesigned
6214
62153) ASL Compiler, version X2037:
6216
6217Implemented several new output features to simplify integration
6218of
6219AML code into  firmware: 1) Output the AML in C source code with
6220labels for each named ASL object.  The    original ASL source
6221code
6222is interleaved as C comments. 2) Output the AML in ASM source
6223code
6224with labels and interleaved ASL    source. 3) Output the AML in
6225raw hex table form, in either C or ASM.
6226
6227Implemented support for optional string parameters to the
6228LoadTable operator.
6229
6230Completed support for embedded escape sequences within string
6231literals.  The compiler now supports all single character escapes
6232as well as the Octal and Hex escapes.  Note: the insertion of a
6233null byte into a string literal (via the hex/octal escape) causes
6234the string to be immediately terminated.  A warning is issued.
6235
6236Fixed a problem where incorrect AML was generated for the case
6237where an ASL namepath consists of a single parent prefix (
6238
6239) with no trailing name segments.
6240
6241The compiler has been successfully generated with a 64-bit C
6242compiler.
6243
6244
6245
6246
6247----------------------------------------
6248Summary of changes for this label: 12_18_01
6249
62501) Linux
6251
6252Enhanced blacklist with reason and severity fields. Any table's
6253signature may now be used to identify a blacklisted system.
6254
6255Call _PIC control method to inform the firmware which interrupt
6256model the OS is using. Turn on any disabled link devices.
6257
6258Cleaned up busmgr /proc error handling (Andreas Dilger)
6259
6260 2) ACPI CA Core Subsystem:
6261
6262Implemented ACPI 2.0 semantics for the "Break" operator (Exit
6263from
6264while loop)
6265
6266Completed implementation of the ACPI 2.0 "Continue",
6267"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
6268operators.  All new ACPI 2.0 operators are now implemented in
6269both
6270the ASL compiler and the AML interpreter.  The only remaining
6271ACPI
62722.0 task is support for the String data type in the DerefOf
6273operator.  Fixed a problem with AcquireMutex where the status
6274code
6275was lost if the caller had to actually wait for the mutex.
6276
6277Increased the maximum ASL Field size from 64K bits to 4G bits.
6278
6279Completed implementation of the external Global Lock interfaces -
6280-
6281AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
6282Handler parameters were added.
6283
6284Completed another pass at removing warnings and issues when
6285compiling with 64-bit compilers.  The code now compiles cleanly
6286with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
6287add and subtract (diff) macros have changed considerably.
6288
6289
6290Created and deployed a new ACPI_SIZE type that is 64-bits wide on
629164-bit platforms, 32-bits on all others.  This type is used
6292wherever memory allocation and/or the C sizeof() operator is
6293used,
6294and affects the OSL memory allocation interfaces AcpiOsAllocate
6295and AcpiOsCallocate.
6296
6297Implemented sticky user breakpoints in the AML debugger.
6298
6299Code and Data Size: Current core subsystem library sizes are
6300shown
6301below. These are the code and data sizes for the acpica.lib
6302produced by the Microsoft Visual C++ 6.0 compiler, and these
6303values do not include any ACPI driver or OSPM code.  The debug
6304version of the code includes the debug output trace mechanism and
6305has a larger code and data size. Note that these values will vary
6306depending on the efficiency of the compiler and the compiler
6307options used during generation.
6308
6309  Previous Release (12_05_01)
6310     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
6311     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
6312   Current Release:
6313     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
6314     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
6315
6316 3) ASL Compiler, version X2034:
6317
6318Now checks for (and generates an error if detected) the use of a
6319Break or Continue statement without an enclosing While statement.
6320
6321
6322Successfully generated the compiler with the Intel 64-bit C
6323compiler.
6324
6325 ----------------------------------------
6326Summary of changes for this label: 12_05_01
6327
6328 1) ACPI CA Core Subsystem:
6329
6330The ACPI 2.0 CopyObject operator is fully implemented.  This
6331operator creates a new copy of an object (and is also used to
6332bypass the "implicit conversion" mechanism of the Store
6333operator.)
6334
6335The ACPI 2.0 semantics for the SizeOf operator are fully
6336implemented.  The change is that performing a SizeOf on a
6337reference object causes an automatic dereference of the object to
6338tha actual value before the size is evaluated. This behavior was
6339undefined in ACPI 1.0.
6340
6341The ACPI 2.0 semantics for the Extended IRQ resource descriptor
6342have been implemented.  The interrupt polarity and mode are now
6343independently set.
6344
6345Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
6346appearing in Package objects were not properly converted to
6347integers when the internal Package was converted to an external
6348object (via the AcpiEvaluateObject interface.)
6349
6350Fixed a problem with the namespace object deletion mechanism for
6351objects created by control methods.  There were two parts to this
6352problem: 1) Objects created during the initialization phase
6353method
6354parse were not being deleted, and 2) The object owner ID
6355mechanism
6356to track objects was broken.
6357
6358Fixed a problem where the use of the ASL Scope operator within a
6359control method would result in an invalid opcode exception.
6360
6361Fixed a problem introduced in the previous label where the buffer
6362length required for the _PRT structure was not being returned
6363correctly.
6364
6365Code and Data Size: Current core subsystem library sizes are
6366shown
6367below. These are the code and data sizes for the acpica.lib
6368produced by the Microsoft Visual C++ 6.0 compiler, and these
6369values do not include any ACPI driver or OSPM code.  The debug
6370version of the code includes the debug output trace mechanism and
6371has a larger code and data size.  Note that these values will
6372vary
6373depending on the efficiency of the compiler and the compiler
6374options used during generation.
6375
6376  Previous Release (11_20_01)
6377     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
6378     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
6379
6380  Current Release:
6381     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
6382     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
6383
6384 2) Linux:
6385
6386Updated all files to apply cleanly against 2.4.16.
6387
6388Added basic PCI Interrupt Routing Table (PRT) support for IA32
6389(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
6390version supports both static and dyanmic PRT entries, but dynamic
6391entries are treated as if they were static (not yet
6392reconfigurable).  Architecture- specific code to use this data is
6393absent on IA32 but should be available shortly.
6394
6395Changed the initialization sequence to start the ACPI interpreter
6396(acpi_init) prior to initialization of the PCI driver (pci_init)
6397in init/main.c.  This ordering is required to support PRT and
6398facilitate other (future) enhancement.  A side effect is that the
6399ACPI bus driver and certain device drivers can no longer be
6400loaded
6401as modules.
6402
6403Modified the 'make menuconfig' options to allow PCI Interrupt
6404Routing support to be included without the ACPI Bus and other
6405device drivers.
6406
6407 3) ASL Compiler, version X2033:
6408
6409Fixed some issues with the use of the new CopyObject and
6410DataTableRegion operators.  Both are fully functional.
6411
6412 ----------------------------------------
6413Summary of changes for this label: 11_20_01
6414
6415 20 November 2001.  Summary of changes for this release.
6416
6417 1) ACPI CA Core Subsystem:
6418
6419Updated Index support to match ACPI 2.0 semantics.  Storing a
6420Integer, String, or Buffer to an Index of a Buffer will store
6421only
6422the least-significant byte of the source to the Indexed buffer
6423byte.  Multiple writes are not performed.
6424
6425Fixed a problem where the access type used in an AccessAs ASL
6426operator was not recorded correctly into the field object.
6427
6428Fixed a problem where ASL Event objects were created in a
6429signalled state. Events are now created in an unsignalled state.
6430
6431The internal object cache is now purged after table loading and
6432initialization to reduce the use of dynamic kernel memory -- on
6433the assumption that object use is greatest during the parse phase
6434of the entire table (versus the run-time use of individual
6435control
6436methods.)
6437
6438ACPI 2.0 variable-length packages are now fully operational.
6439
6440Code and Data Size: Code and Data optimizations have permitted
6441new
6442feature development with an actual reduction in the library size.
6443Current core subsystem library sizes are shown below.  These are
6444the code and data sizes for the acpica.lib produced by the
6445Microsoft Visual C++ 6.0 compiler, and these values do not
6446include
6447any ACPI driver or OSPM code.  The debug version of the code
6448includes the debug output trace mechanism and has a larger code
6449and data size.  Note that these values will vary depending on the
6450efficiency of the compiler and the compiler options used during
6451generation.
6452
6453  Previous Release (11_09_01):
6454     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
6455     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
6456
6457  Current Release:
6458     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
6459     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
6460
6461 2) Linux:
6462
6463Enhanced the ACPI boot-time initialization code to allow the use
6464of Local APIC tables for processor enumeration on IA-32, and to
6465pave the way for a fully MPS-free boot (on SMP systems) in the
6466near future.  This functionality replaces
6467arch/i386/kernel/acpitables.c, which was introduced in an earlier
64682.4.15-preX release.  To enable this feature you must add
6469"acpi_boot=on" to the kernel command line -- see the help entry
6470for CONFIG_ACPI_BOOT for more information.  An IA-64 release is
6471in
6472the works...
6473
6474Restructured the configuration options to allow boot-time table
6475parsing support without inclusion of the ACPI Interpreter (and
6476other) code.
6477
6478NOTE: This release does not include fixes for the reported
6479events,
6480power-down, and thermal passive cooling issues (coming soon).
6481
6482 3) ASL Compiler:
6483
6484Added additional typechecking for Fields within restricted access
6485Operation Regions.  All fields within EC and CMOS regions must be
6486declared with ByteAcc. All fields withing SMBus regions must be
6487declared with the BufferAcc access type.
6488
6489Fixed a problem where the listing file output of control methods
6490no longer interleaved the actual AML code with the ASL source
6491code.
6492
6493
6494
6495
6496----------------------------------------
6497Summary of changes for this label: 11_09_01
6498
64991) ACPI CA Core Subsystem:
6500
6501Implemented ACPI 2.0-defined support for writes to fields with a
6502Buffer, String, or Integer source operand that is smaller than
6503the
6504target field. In these cases, the source operand is zero-extended
6505to fill the target field.
6506
6507Fixed a problem where a Field starting bit offset (within the
6508parent operation region) was calculated incorrectly if the
6509
6510alignment of the field differed from the access width.  This
6511affected CreateWordField, CreateDwordField, CreateQwordField, and
6512possibly other fields that use the "AccessAny" keyword.
6513
6514Fixed a problem introduced in the 11_02_01 release where indirect
6515stores through method arguments did not operate correctly.
6516
65172) Linux:
6518
6519Implemented boot-time ACPI table parsing support
6520(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
6521facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
6522legacy BIOS interfaces (e.g. MPS) for the configuration of system
6523processors, memory, and interrupts during setup_arch().  Note
6524that
6525this patch does not include the required architecture-specific
6526changes required to apply this information -- subsequent patches
6527will be posted for both IA32 and IA64 to achieve this.
6528
6529Added low-level sleep support for IA32 platforms, courtesy of Pat
6530Mochel. This allows IA32 systems to transition to/from various
6531sleeping states (e.g. S1, S3), although the lack of a centralized
6532driver model and power-manageable drivers will prevent its
6533(successful) use on most systems.
6534
6535Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
6536submenu, unified IA32 and IA64 options, added new "Boot using
6537ACPI
6538tables" option, etc.
6539
6540Increased the default timeout for the EC driver from 1ms to 10ms
6541(1000 cycles of 10us) to try to address AE_TIME errors during EC
6542transactions.
6543
6544 ----------------------------------------
6545Summary of changes for this label: 11_02_01
6546
65471) ACPI CA Core Subsystem:
6548
6549ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
6550(QWordAcc keyword). All ACPI 2.0 64-bit support is now
6551implemented.
6552
6553OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
6554changes to support ACPI 2.0 Qword field access.  Read/Write
6555PciConfiguration(), Read/Write Memory(), and Read/Write Port()
6556now
6557accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
6558the value parameter for the address space handler interface is
6559now
6560an ACPI_INTEGER.  OSL implementations of these interfaces must
6561now
6562handle the case where the Width parameter is 64.
6563
6564Index Fields: Fixed a problem where unaligned bit assembly and
6565disassembly for IndexFields was not supported correctly.
6566
6567Index and Bank Fields:  Nested Index and Bank Fields are now
6568supported. During field access, a check is performed to ensure
6569that the value written to an Index or Bank register is not out of
6570the range of the register.  The Index (or Bank) register is
6571written before each access to the field data. Future support will
6572include allowing individual IndexFields to be wider than the
6573DataRegister width.
6574
6575Fields: Fixed a problem where the AML interpreter was incorrectly
6576attempting to write beyond the end of a Field/OpRegion.  This was
6577a boundary case that occurred when a DWORD field was written to a
6578BYTE access OpRegion, forcing multiple writes and causing the
6579interpreter to write one datum too many.
6580
6581Fields: Fixed a problem with Field/OpRegion access where the
6582starting bit address of a field was incorrectly calculated if the
6583current access type was wider than a byte (WordAcc, DwordAcc, or
6584QwordAcc).
6585
6586Fields: Fixed a problem where forward references to individual
6587FieldUnits (individual Field names within a Field definition)
6588were
6589not resolved during the AML table load.
6590
6591Fields: Fixed a problem where forward references from a Field
6592definition to the parent Operation Region definition were not
6593resolved during the AML table load.
6594
6595Fields: Duplicate FieldUnit names within a scope are now detected
6596during AML table load.
6597
6598Acpi Interfaces: Fixed a problem where the AcpiGetName()
6599interface
6600returned an incorrect name for the root node.
6601
6602Code and Data Size: Code and Data optimizations have permitted
6603new
6604feature development with an actual reduction in the library size.
6605Current core subsystem library sizes are shown below.  These are
6606the code and data sizes for the acpica.lib produced by the
6607Microsoft Visual C++ 6.0 compiler, and these values do not
6608include
6609any ACPI driver or OSPM code.  The debug version of the code
6610includes the debug output trace mechanism and has a larger code
6611and data size.  Note that these values will vary depending on the
6612efficiency of the compiler and the compiler options used during
6613generation.
6614
6615  Previous Release (10_18_01):
6616     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
6617     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
6618
6619  Current Release:
6620     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
6621     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
6622
6623 2) Linux:
6624
6625Improved /proc processor output (Pavel Machek) Re-added
6626MODULE_LICENSE("GPL") to all modules.
6627
6628 3) ASL Compiler version X2030:
6629
6630Duplicate FieldUnit names within a scope are now detected and
6631flagged as errors.
6632
6633 4) Documentation:
6634
6635Programmer Reference updated to reflect OSL and address space
6636handler interface changes described above.
6637
6638----------------------------------------
6639Summary of changes for this label: 10_18_01
6640
6641ACPI CA Core Subsystem:
6642
6643Fixed a problem with the internal object reference count
6644mechanism
6645that occasionally caused premature object deletion. This resolves
6646all of the outstanding problem reports where an object is deleted
6647in the middle of an interpreter evaluation.  Although this
6648problem
6649only showed up in rather obscure cases, the solution to the
6650problem involved an adjustment of all reference counts involving
6651objects attached to namespace nodes.
6652
6653Fixed a problem with Field support in the interpreter where
6654writing to an aligned field whose length is an exact multiple (2
6655or greater) of the field access granularity would cause an
6656attempt
6657to write beyond the end of the field.
6658
6659The top level AML opcode execution functions within the
6660interpreter have been renamed with a more meaningful and
6661consistent naming convention.  The modules exmonad.c and
6662exdyadic.c were eliminated.  New modules are exoparg1.c,
6663exoparg2.c, exoparg3.c, and exoparg6.c.
6664
6665Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
6666
6667Fixed a problem where the AML debugger was causing some internal
6668objects to not be deleted during subsystem termination.
6669
6670Fixed a problem with the external AcpiEvaluateObject interface
6671where the subsystem would fault if the named object to be
6672evaluated refered to a constant such as Zero, Ones, etc.
6673
6674Fixed a problem with IndexFields and BankFields where the
6675subsystem would fault if the index, data, or bank registers were
6676not defined in the same scope as the field itself.
6677
6678Added printf format string checking for compilers that support
6679this feature.  Corrected more than 50 instances of issues with
6680format specifiers within invocations of ACPI_DEBUG_PRINT
6681throughout the core subsystem code.
6682
6683The ASL "Revision" operator now returns the ACPI support level
6684implemented in the core - the value "2" since the ACPI 2.0
6685support
6686is more than 50% implemented.
6687
6688Enhanced the output of the AML debugger "dump namespace" command
6689to output in a more human-readable form.
6690
6691Current core subsystem library code sizes are shown below.  These
6692
6693are the code and data sizes for the acpica.lib produced by the
6694Microsoft Visual C++ 6.0 compiler, and these values do not
6695include
6696any ACPI driver or OSPM code.  The debug version of the code
6697includes the full debug trace mechanism -- leading to a much
6698
6699larger code and data size.  Note that these values will vary
6700depending on the efficiency of the compiler and the compiler
6701options used during generation.
6702
6703     Previous Label (09_20_01):
6704     Non-Debug Version:    65K Code,     5K Data,     70K Total
6705     Debug Version:       138K Code,    58K Data,    196K Total
6706
6707     This Label:
6708
6709     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
6710     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
6711
6712Linux:
6713
6714Implemented a "Bad BIOS Blacklist" to track machines that have
6715known ASL/AML problems.
6716
6717Enhanced the /proc interface for the thermal zone driver and
6718added
6719support for _HOT (the critical suspend trip point).  The 'info'
6720file now includes threshold/policy information, and allows
6721setting
6722of _SCP (cooling preference) and _TZP (polling frequency) values
6723to the 'info' file. Examples: "echo tzp=5 > info" sets the
6724polling
6725frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
6726preference to the passive/quiet mode (if supported by the ASL).
6727
6728Implemented a workaround for a gcc bug that resuted in an OOPs
6729when loading the control method battery driver.
6730
6731 ----------------------------------------
6732Summary of changes for this label: 09_20_01
6733
6734 ACPI CA Core Subsystem:
6735
6736The AcpiEnableEvent and AcpiDisableEvent interfaces have been
6737modified to allow individual GPE levels to be flagged as wake-
6738enabled (i.e., these GPEs are to remain enabled when the platform
6739sleeps.)
6740
6741The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
6742support wake-enabled GPEs.  This means that upon entering the
6743sleep state, all GPEs that are not wake-enabled are disabled.
6744When leaving the sleep state, these GPEs are reenabled.
6745
6746A local double-precision divide/modulo module has been added to
6747enhance portability to OS kernels where a 64-bit math library is
6748not available.  The new module is "utmath.c".
6749
6750Several optimizations have been made to reduce the use of CPU
6751stack.  Originally over 2K, the maximum stack usage is now below
67522K at 1860  bytes (1.82k)
6753
6754Fixed a problem with the AcpiGetFirmwareTable interface where the
6755root table pointer was not mapped into a logical address
6756properly.
6757
6758Fixed a problem where a NULL pointer was being dereferenced in
6759the
6760interpreter code for the ASL Notify operator.
6761
6762Fixed a problem where the use of the ASL Revision operator
6763returned an error. This operator now returns the current version
6764of the ACPI CA core subsystem.
6765
6766Fixed a problem where objects passed as control method parameters
6767to AcpiEvaluateObject were always deleted at method termination.
6768However, these objects may end up being stored into the namespace
6769by the called method.  The object reference count mechanism was
6770applied to these objects instead of a force delete.
6771
6772Fixed a problem where static strings or buffers (contained in the
6773AML code) that are declared as package elements within the ASL
6774code could cause a fault because the interpreter would attempt to
6775delete them.  These objects are now marked with the "static
6776object" flag to prevent any attempt to delete them.
6777
6778Implemented an interpreter optimization to use operands directly
6779from the state object instead of extracting the operands to local
6780variables.  This reduces stack use and code size, and improves
6781performance.
6782
6783The module exxface.c was eliminated as it was an unnecessary
6784extra
6785layer of code.
6786
6787Current core subsystem library code sizes are shown below.  These
6788are the code and data sizes for the acpica.lib produced by the
6789Microsoft Visual C++ 6.0 compiler, and these values do not
6790include
6791any ACPI driver or OSPM code.  The debug version of the code
6792includes the full debug trace mechanism -- leading to a much
6793larger code and data size.  Note that these values will vary
6794depending on the efficiency of the compiler and the compiler
6795options used during generation.
6796
6797  Non-Debug Version:  65K Code,   5K Data,   70K Total
6798(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
6799Total  (Previously 195K)
6800
6801Linux:
6802
6803Support for ACPI 2.0 64-bit integers has been added.   All ACPI
6804Integer objects are now 64 bits wide
6805
6806All Acpi data types and structures are now in lower case.  Only
6807Acpi macros are upper case for differentiation.
6808
6809 Documentation:
6810
6811Changes to the external interfaces as described above.
6812
6813 ----------------------------------------
6814Summary of changes for this label: 08_31_01
6815
6816 ACPI CA Core Subsystem:
6817
6818A bug with interpreter implementation of the ASL Divide operator
6819was found and fixed.  The implicit function return value (not the
6820explicit store operands) was returning the remainder instead of
6821the quotient.  This was a longstanding bug and it fixes several
6822known outstanding issues on various platforms.
6823
6824The ACPI_DEBUG_PRINT and function trace entry/exit macros have
6825been further optimized for size.  There are 700 invocations of
6826the
6827DEBUG_PRINT macro alone, so each optimization reduces the size of
6828the debug version of the subsystem significantly.
6829
6830A stack trace mechanism has been implemented.  The maximum stack
6831usage is about 2K on 32-bit platforms.  The debugger command
6832"stat
6833stack" will display the current maximum stack usage.
6834
6835All public symbols and global variables within the subsystem are
6836now prefixed with the string "Acpi".  This keeps all of the
6837symbols grouped together in a kernel map, and avoids conflicts
6838with other kernel subsystems.
6839
6840Most of the internal fixed lookup tables have been moved into the
6841code segment via the const operator.
6842
6843Several enhancements have been made to the interpreter to both
6844reduce the code size and improve performance.
6845
6846Current core subsystem library code sizes are shown below.  These
6847are the code and data sizes for the acpica.lib produced by the
6848Microsoft Visual C++ 6.0 compiler, and these values do not
6849include
6850any ACPI driver or OSPM code.  The debug version of the code
6851includes the full debug trace mechanism which contains over 700
6852invocations of the DEBUG_PRINT macro, 500 function entry macro
6853invocations, and over 900 function exit macro invocations --
6854leading to a much larger code and data size.  Note that these
6855values will vary depending on the efficiency of the compiler and
6856the compiler options used during generation.
6857
6858        Non-Debug Version:  64K Code,   5K Data,   69K Total
6859Debug Version:     137K Code,  58K Data,  195K Total
6860
6861 Linux:
6862
6863Implemented wbinvd() macro, pending a kernel-wide definition.
6864
6865Fixed /proc/acpi/event to handle poll() and short reads.
6866
6867 ASL Compiler, version X2026:
6868
6869Fixed a problem introduced in the previous label where the AML
6870
6871code emitted for package objects produced packages with zero
6872length.
6873
6874 ----------------------------------------
6875Summary of changes for this label: 08_16_01
6876
6877ACPI CA Core Subsystem:
6878
6879The following ACPI 2.0 ASL operators have been implemented in the
6880AML interpreter (These are already supported by the Intel ASL
6881compiler):  ToDecimalString, ToHexString, ToString, ToInteger,
6882and
6883ToBuffer.  Support for 64-bit AML constants is implemented in the
6884AML parser, debugger, and disassembler.
6885
6886The internal memory tracking mechanism (leak detection code) has
6887been upgraded to reduce the memory overhead (a separate tracking
6888block is no longer allocated for each memory allocation), and now
6889supports all of the internal object caches.
6890
6891The data structures and code for the internal object caches have
6892been coelesced and optimized so that there is a single cache and
6893memory list data structure and a single group of functions that
6894implement generic cache management.  This has reduced the code
6895size in both the debug and release versions of the subsystem.
6896
6897The DEBUG_PRINT macro(s) have been optimized for size and
6898replaced
6899by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
6900different, because it generates a single call to an internal
6901function.  This results in a savings of about 90 bytes per
6902invocation, resulting in an overall code and data savings of
6903about
690416% in the debug version of the subsystem.
6905
6906 Linux:
6907
6908Fixed C3 disk corruption problems and re-enabled C3 on supporting
6909machines.
6910
6911Integrated low-level sleep code by Patrick Mochel.
6912
6913Further tweaked source code Linuxization.
6914
6915Other minor fixes.
6916
6917 ASL Compiler:
6918
6919Support for ACPI 2.0 variable length packages is fixed/completed.
6920
6921Fixed a problem where the optional length parameter for the ACPI
69222.0 ToString operator.
6923
6924Fixed multiple extraneous error messages when a syntax error is
6925detected within the declaration line of a control method.
6926
6927 ----------------------------------------
6928Summary of changes for this label: 07_17_01
6929
6930ACPI CA Core Subsystem:
6931
6932Added a new interface named AcpiGetFirmwareTable to obtain any
6933ACPI table via the ACPI signature.  The interface can be called
6934at
6935any time during kernel initialization, even before the kernel
6936virtual memory manager is initialized and paging is enabled.
6937This
6938allows kernel subsystems to obtain ACPI tables very early, even
6939before the ACPI CA subsystem is initialized.
6940
6941Fixed a problem where Fields defined with the AnyAcc attribute
6942could be resolved to the incorrect address under the following
6943conditions: 1) the field width is larger than 8 bits and 2) the
6944parent operation region is not defined on a DWORD boundary.
6945
6946Fixed a problem where the interpreter is not being locked during
6947namespace initialization (during execution of the _INI control
6948methods), causing an error when an attempt is made to release it
6949later.
6950
6951ACPI 2.0 support in the AML Interpreter has begun and will be
6952ongoing throughout the rest of this year.  In this label, The Mod
6953operator is implemented.
6954
6955Added a new data type to contain full PCI addresses named
6956ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
6957Device,
6958and Function values.
6959
6960 Linux:
6961
6962Enhanced the Linux version of the source code to change most
6963capitalized ACPI type names to lowercase. For example, all
6964instances of ACPI_STATUS are changed to acpi_status.  This will
6965result in a large diff, but the change is strictly cosmetic and
6966aligns the CA code closer to the Linux coding standard.
6967
6968OSL Interfaces:
6969
6970The interfaces to the PCI configuration space have been changed
6971to
6972add the PCI Segment number and to split the single 32-bit
6973combined
6974DeviceFunction field into two 16-bit fields.  This was
6975accomplished by moving the four values that define an address in
6976PCI configuration space (segment, bus, device, and function) to
6977the new ACPI_PCI_ID structure.
6978
6979The changes to the PCI configuration space interfaces led to a
6980reexamination of the complete set of address space access
6981interfaces for PCI, I/O, and Memory.  The previously existing 18
6982interfaces have proven difficult to maintain (any small change
6983must be propagated across at least 6 interfaces) and do not
6984easily
6985allow for future expansion to 64 bits if necessary.  Also, on
6986some
6987systems, it would not be appropriate to demultiplex the access
6988width (8, 16, 32,or 64) before calling the OSL if the
6989corresponding native OS interfaces contain a similar access width
6990parameter.  For these reasons, the 18 address space interfaces
6991have been replaced by these 6 new ones:
6992
6993AcpiOsReadPciConfiguration
6994AcpiOsWritePciConfiguration
6995AcpiOsReadMemory
6996AcpiOsWriteMemory
6997AcpiOsReadPort
6998AcpiOsWritePort
6999
7000Added a new interface named AcpiOsGetRootPointer to allow the OSL
7001to perform the platform and/or OS-specific actions necessary to
7002obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
7003interface will simply call down to the CA core to perform the low-
7004memory search for the table.  On IA-64, the RSDP is obtained from
7005EFI.  Migrating this interface to the OSL allows the CA core to
7006
7007remain OS and platform independent.
7008
7009Added a new interface named AcpiOsSignal to provide a generic
7010"function code and pointer" interface for various miscellaneous
7011signals and notifications that must be made to the host OS.   The
7012first such signals are intended to support the ASL Fatal and
7013Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
7014interface has been obsoleted.
7015
7016The definition of the AcpiFormatException interface has been
7017changed to simplify its use.  The caller no longer must supply a
7018buffer to the call; A pointer to a const string is now returned
7019directly.  This allows the call to be easily used in printf
7020statements, etc. since the caller does not have to manage a local
7021buffer.
7022
7023
7024 ASL Compiler, Version X2025:
7025
7026The ACPI 2.0 Switch/Case/Default operators have been implemented
7027and are fully functional.  They will work with all ACPI 1.0
7028interpreters, since the operators are simply translated to
7029If/Else
7030pairs.
7031
7032The ACPI 2.0 ElseIf operator is implemented and will also work
7033with 1.0 interpreters, for the same reason.
7034
7035Implemented support for ACPI 2.0 variable-length packages.  These
7036packages have a separate opcode, and their size is determined by
7037the interpreter at run-time.
7038
7039Documentation The ACPI CA Programmer Reference has been updated
7040to
7041reflect the new interfaces and changes to existing interfaces.
7042
7043 ------------------------------------------
7044Summary of changes for this label: 06_15_01
7045
7046 ACPI CA Core Subsystem:
7047
7048Fixed a problem where a DWORD-accessed field within a Buffer
7049object would get its byte address inadvertently rounded down to
7050the nearest DWORD.  Buffers are always Byte-accessible.
7051
7052 ASL Compiler, version X2024:
7053
7054Fixed a problem where the Switch() operator would either fault or
7055hang the compiler.  Note however, that the AML code for this ACPI
70562.0 operator is not yet implemented.
7057
7058Compiler uses the new AcpiOsGetTimer interface to obtain compile
7059timings.
7060
7061Implementation of the CreateField operator automatically converts
7062a reference to a named field within a resource descriptor from a
7063byte offset to a bit offset if required.
7064
7065Added some missing named fields from the resource descriptor
7066support. These are the names that are automatically created by
7067the
7068compiler to reference fields within a descriptor.  They are only
7069valid at compile time and are not passed through to the AML
7070interpreter.
7071
7072Resource descriptor named fields are now typed as Integers and
7073subject to compile-time typechecking when used in expressions.
7074
7075 ------------------------------------------
7076Summary of changes for this label: 05_18_01
7077
7078 ACPI CA Core Subsystem:
7079
7080Fixed a couple of problems in the Field support code where bits
7081from adjacent fields could be returned along with the proper
7082field
7083bits. Restructured the field support code to improve performance,
7084readability and maintainability.
7085
7086New DEBUG_PRINTP macro automatically inserts the procedure name
7087into the output, saving hundreds of copies of procedure name
7088strings within the source, shrinking the memory footprint of the
7089debug version of the core subsystem.
7090
7091 Source Code Structure:
7092
7093The source code directory tree was restructured to reflect the
7094current organization of the component architecture.  Some files
7095and directories have been moved and/or renamed.
7096
7097 Linux:
7098
7099Fixed leaking kacpidpc processes.
7100
7101Fixed queueing event data even when /proc/acpi/event is not
7102opened.
7103
7104 ASL Compiler, version X2020:
7105
7106Memory allocation performance enhancement - over 24X compile time
7107improvement on large ASL files.  Parse nodes and namestring
7108buffers are now allocated from a large internal compiler buffer.
7109
7110The temporary .SRC file is deleted unless the "-s" option is
7111specified
7112
7113The "-d" debug output option now sends all output to the .DBG
7114file
7115instead of the console.
7116
7117"External" second parameter is now optional
7118
7119"ElseIf" syntax now properly allows the predicate
7120
7121Last operand to "Load" now recognized as a Target operand
7122
7123Debug object can now be used anywhere as a normal object.
7124
7125ResourceTemplate now returns an object of type BUFFER
7126
7127EISAID now returns an object of type INTEGER
7128
7129"Index" now works with a STRING operand
7130
7131"LoadTable" now accepts optional parameters
7132
7133"ToString" length parameter is now optional
7134
7135"Interrupt (ResourceType," parse error fixed.
7136
7137"Register" with a user-defined region space parse error fixed
7138
7139Escaped backslash at the end of a string ("\\") scan/parse error
7140fixed
7141
7142"Revision" is now an object of type INTEGER.
7143
7144
7145
7146------------------------------------------
7147Summary of changes for this label: 05_02_01
7148
7149Linux:
7150
7151/proc/acpi/event now blocks properly.
7152
7153Removed /proc/sys/acpi. You can still dump your DSDT from
7154/proc/acpi/dsdt.
7155
7156 ACPI CA Core Subsystem:
7157
7158Fixed a problem introduced in the previous label where some of
7159the
7160"small" resource descriptor types were not recognized.
7161
7162Improved error messages for the case where an ASL Field is
7163outside
7164the range of the parent operation region.
7165
7166 ASL Compiler, version X2018:
7167
7168
7169Added error detection for ASL Fields that extend beyond the
7170length
7171of the parent operation region (only if the length of the region
7172is known at compile time.)  This includes fields that have a
7173minimum access width that is smaller than the parent region, and
7174individual field units that are partially or entirely beyond the
7175extent of the parent.
7176
7177
7178
7179------------------------------------------
7180Summary of changes for this label: 04_27_01
7181
7182 ACPI CA Core Subsystem:
7183
7184Fixed a problem where the namespace mutex could be released at
7185the
7186wrong time during execution of AcpiRemoveAddressSpaceHandler.
7187
7188Added optional thread ID output for debug traces, to simplify
7189debugging of multiple threads.  Added context switch notification
7190when the debug code realizes that a different thread is now
7191executing ACPI code.
7192
7193Some additional external data types have been prefixed with the
7194string "ACPI_" for consistency.  This may effect existing code.
7195The data types affected are the external callback typedefs -
7196e.g.,
7197
7198WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
7199
7200 Linux:
7201
7202Fixed an issue with the OSL semaphore implementation where a
7203thread was waking up with an error from receiving a SIGCHLD
7204signal.
7205
7206Linux version of ACPI CA now uses the system C library for string
7207manipulation routines instead of a local implementation.
7208
7209Cleaned up comments and removed TBDs.
7210
7211 ASL Compiler, version X2017:
7212
7213Enhanced error detection and reporting for all file I/O
7214operations.
7215
7216 Documentation:
7217
7218Programmer Reference updated to version 1.06.
7219
7220
7221
7222------------------------------------------
7223Summary of changes for this label: 04_13_01
7224
7225 ACPI CA Core Subsystem:
7226
7227Restructured support for BufferFields and RegionFields.
7228BankFields support is now fully operational.  All known 32-bit
7229limitations on field sizes have been removed.  Both BufferFields
7230and (Operation) RegionFields are now supported by the same field
7231management code.
7232
7233Resource support now supports QWORD address and IO resources. The
723416/32/64 bit address structures and the Extended IRQ structure
7235have been changed to properly handle Source Resource strings.
7236
7237A ThreadId of -1 is now used to indicate a "mutex not acquired"
7238condition internally and must never be returned by
7239AcpiOsThreadId.
7240This reserved value was changed from 0 since Unix systems allow a
7241thread ID of 0.
7242
7243Linux:
7244
7245Driver code reorganized to enhance portability
7246
7247Added a kernel configuration option to control ACPI_DEBUG
7248
7249Fixed the EC driver to honor _GLK.
7250
7251ASL Compiler, version X2016:
7252
7253Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
7254address space was set to 0, not 0x7f as it should be.
7255
7256 ------------------------------------------
7257Summary of changes for this label: 03_13_01
7258
7259 ACPI CA Core Subsystem:
7260
7261During ACPI initialization, the _SB_._INI method is now run if
7262present.
7263
7264Notify handler fix - notifies are deferred until the parent
7265method
7266completes execution.  This fixes the "mutex already acquired"
7267issue seen occasionally.
7268
7269Part of the "implicit conversion" rules in ACPI 2.0 have been
7270found to cause compatibility problems with existing ASL/AML.  The
7271convert "result-to-target-type" implementation has been removed
7272for stores to method Args and Locals.  Source operand conversion
7273is still fully implemented.  Possible changes to ACPI 2.0
7274specification pending.
7275
7276Fix to AcpiRsCalculatePciRoutingTableLength to return correct
7277length.
7278
7279Fix for compiler warnings for 64-bit compiles.
7280
7281 Linux:
7282
7283/proc output aligned for easier parsing.
7284
7285Release-version compile problem fixed.
7286
7287New kernel configuration options documented in Configure.help.
7288
7289IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
7290context" message.
7291
7292 OSPM:
7293
7294Power resource driver integrated with bus manager.
7295
7296Fixed kernel fault during active cooling for thermal zones.
7297
7298Source Code:
7299
7300The source code tree has been restructured.
7301
7302
7303
7304------------------------------------------
7305Summary of changes for this label: 03_02_01
7306
7307 Linux OS Services Layer (OSL):
7308
7309Major revision of all Linux-specific code.
7310
7311Modularized all ACPI-specific drivers.
7312
7313Added new thermal zone and power resource drivers.
7314
7315Revamped /proc interface (new functionality is under /proc/acpi).
7316
7317New kernel configuration options.
7318
7319 Linux known issues:
7320
7321New kernel configuration options not documented in Configure.help
7322yet.
7323
7324
7325Module dependencies not currently implemented. If used, they
7326should be loaded in this order: busmgr, power, ec, system,
7327processor, battery, ac_adapter, button, thermal.
7328
7329Modules will not load if CONFIG_MODVERSION is set.
7330
7331IBM 600E - entering S5 may reboot instead of shutting down.
7332
7333IBM 600E - Sleep button may generate "Invalid <NULL> context"
7334message.
7335
7336Some systems may fail with "execution mutex already acquired"
7337message.
7338
7339 ACPI CA Core Subsystem:
7340
7341Added a new OSL Interface, AcpiOsGetThreadId.  This was required
7342for the  deadlock detection code. Defined to return a non-zero,
734332-
7344bit thread ID for the currently executing thread.  May be a non-
7345zero constant integer on single-thread systems.
7346
7347Implemented deadlock detection for internal subsystem mutexes.
7348We
7349may add conditional compilation for this code (debug only) later.
7350
7351ASL/AML Mutex object semantics are now fully supported.  This
7352includes multiple acquires/releases by owner and support for the
7353
7354Mutex SyncLevel parameter.
7355
7356A new "Force Release" mechanism automatically frees all ASL
7357Mutexes that have been acquired but not released when a thread
7358exits the interpreter.  This forces conformance to the ACPI spec
7359("All mutexes must be released when an invocation exits") and
7360prevents deadlocked ASL threads.  This mechanism can be expanded
7361(later) to monitor other resource acquisitions if OEM ASL code
7362continues to misbehave (which it will).
7363
7364Several new ACPI exception codes have been added for the Mutex
7365support.
7366
7367Recursive method calls are now allowed and supported (the ACPI
7368spec does in fact allow recursive method calls.)  The number of
7369recursive calls is subject to the restrictions imposed by the
7370SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
7371parameter.
7372
7373Implemented support for the SyncLevel parameter for control
7374methods (ACPI 2.0 feature)
7375
7376Fixed a deadlock problem when multiple threads attempted to use
7377the interpreter.
7378
7379Fixed a problem where the string length of a String package
7380element was not always set in a package returned from
7381AcpiEvaluateObject.
7382
7383Fixed a problem where the length of a String package element was
7384not always included in the length of the overall package returned
7385from AcpiEvaluateObject.
7386
7387Added external interfaces (Acpi*) to the ACPI debug memory
7388manager.  This manager keeps a list of all outstanding
7389allocations, and can therefore detect memory leaks and attempts
7390to
7391free memory blocks more than once. Useful for code such as the
7392power manager, etc.  May not be appropriate for device drivers.
7393Performance with the debug code enabled is slow.
7394
7395The ACPI Global Lock is now an optional hardware element.
7396
7397 ASL Compiler Version X2015:
7398
7399Integrated changes to allow the compiler to be generated on
7400multiple platforms.
7401
7402Linux makefile added to generate the compiler on Linux
7403
7404 Source Code:
7405
7406All platform-specific headers have been moved to their own
7407subdirectory, Include/Platform.
7408
7409New source file added, Interpreter/ammutex.c
7410
7411New header file, Include/acstruct.h
7412
7413 Documentation:
7414
7415The programmer reference has been updated for the following new
7416interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
7417
7418 ------------------------------------------
7419Summary of changes for this label: 02_08_01
7420
7421Core ACPI CA Subsystem: Fixed a problem where an error was
7422incorrectly returned if the return resource buffer was larger
7423than
7424the actual data (in the resource interfaces).
7425
7426References to named objects within packages are resolved to the
7427
7428full pathname string before packages are returned directly (via
7429the AcpiEvaluateObject interface) or indirectly via the resource
7430interfaces.
7431
7432Linux OS Services Layer (OSL):
7433
7434Improved /proc battery interface.
7435
7436
7437Added C-state debugging output and other miscellaneous fixes.
7438
7439ASL Compiler Version X2014:
7440
7441All defined method arguments can now be used as local variables,
7442including the ones that are not actually passed in as parameters.
7443The compiler tracks initialization of the arguments and issues an
7444exception if they are used without prior assignment (just like
7445locals).
7446
7447The -o option now specifies a filename prefix that is used for
7448all
7449output files, including the AML output file.  Otherwise, the
7450default behavior is as follows:  1) the AML goes to the file
7451specified in the DSDT.  2) all other output files use the input
7452source filename as the base.
7453
7454 ------------------------------------------
7455Summary of changes for this label: 01_25_01
7456
7457Core ACPI CA Subsystem: Restructured the implementation of object
7458store support within the  interpreter.  This includes support for
7459the Store operator as well  as any ASL operators that include a
7460target operand.
7461
7462Partially implemented support for Implicit Result-to-Target
7463conversion. This is when a result object is converted on the fly
7464to the type of  an existing target object.  Completion of this
7465support is pending  further analysis of the ACPI specification
7466concerning this matter.
7467
7468CPU-specific code has been removed from the subsystem (hardware
7469directory).
7470
7471New Power Management Timer functions added
7472
7473Linux OS Services Layer (OSL): Moved system state transition code
7474to the core, fixed it, and modified  Linux OSL accordingly.
7475
7476Fixed C2 and C3 latency calculations.
7477
7478
7479We no longer use the compilation date for the version message on
7480initialization, but retrieve the version from
7481AcpiGetSystemInfo().
7482
7483Incorporated for fix Sony VAIO machines.
7484
7485Documentation:  The Programmer Reference has been updated and
7486reformatted.
7487
7488
7489ASL Compiler:  Version X2013: Fixed a problem where the line
7490numbering and error reporting could get out  of sync in the
7491presence of multiple include files.
7492
7493 ------------------------------------------
7494Summary of changes for this label: 01_15_01
7495
7496Core ACPI CA Subsystem:
7497
7498Implemented support for type conversions in the execution of the
7499ASL  Concatenate operator (The second operand is converted to
7500match the type  of the first operand before concatenation.)
7501
7502Support for implicit source operand conversion is partially
7503implemented.   The ASL source operand types Integer, Buffer, and
7504String are freely  interchangeable for most ASL operators and are
7505converted by the interpreter  on the fly as required.  Implicit
7506Target operand conversion (where the  result is converted to the
7507target type before storing) is not yet implemented.
7508
7509Support for 32-bit and 64-bit BCD integers is implemented.
7510
7511Problem fixed where a field read on an aligned field could cause
7512a
7513read  past the end of the field.
7514
7515New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
7516does not return a value, but the caller expects one.  (The ASL
7517compiler flags this as a warning.)
7518
7519ASL Compiler:
7520
7521Version X2011:
75221. Static typechecking of all operands is implemented. This
7523prevents the use of invalid objects (such as using a Package
7524where
7525an Integer is required) at compile time instead of at interpreter
7526run-time.
75272. The ASL source line is printed with ALL errors and warnings.
75283. Bug fix for source EOF without final linefeed.
75294. Debug option is split into a parse trace and a namespace
7530trace.
75315. Namespace output option (-n) includes initial values for
7532integers and strings.
75336. Parse-only option added for quick syntax checking.
75347. Compiler checks for duplicate ACPI name declarations
7535
7536Version X2012:
75371. Relaxed typechecking to allow interchangeability between
7538strings, integers, and buffers.  These types are now converted by
7539the interpreter at runtime.
75402. Compiler reports time taken by each internal subsystem in the
7541debug         output file.
7542
7543
7544 ------------------------------------------
7545Summary of changes for this label: 12_14_00
7546
7547ASL Compiler:
7548
7549This is the first official release of the compiler. Since the
7550compiler requires elements of the Core Subsystem, this label
7551synchronizes everything.
7552
7553------------------------------------------
7554Summary of changes for this label: 12_08_00
7555
7556
7557Fixed a problem where named references within the ASL definition
7558of both OperationRegions and CreateXXXFields did not work
7559properly.  The symptom was an AE_AML_OPERAND_TYPE during
7560initialization of the region/field. This is similar (but not
7561related internally) to the problem that was fixed in the last
7562label.
7563
7564Implemented both 32-bit and 64-bit support for the BCD ASL
7565functions ToBCD and FromBCD.
7566
7567Updated all legal headers to include "2000" in the copyright
7568years.
7569
7570 ------------------------------------------
7571Summary of changes for this label: 12_01_00
7572
7573Fixed a problem where method invocations within the ASL
7574definition
7575of both OperationRegions and CreateXXXFields did not work
7576properly.  The symptom was an AE_AML_OPERAND_TYPE during
7577initialization of the region/field:
7578
7579  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
7580[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
7581(0x3005)
7582
7583Fixed a problem where operators with more than one nested
7584subexpression would fail.  The symptoms were varied, by mostly
7585AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
7586problem that has gone unnoticed until now.
7587
7588  Subtract (Add (1,2), Multiply (3,4))
7589
7590Fixed a problem where AcpiGetHandle didn't quite get fixed in the
7591previous build (The prefix part of a relative path was handled
7592incorrectly).
7593
7594Fixed a problem where Operation Region initialization failed if
7595the operation region name was a "namepath" instead of a simple
7596"nameseg". Symptom was an AE_NO_OPERAND error.
7597
7598Fixed a problem where an assignment to a local variable via the
7599indirect RefOf mechanism only worked for the first such
7600assignment.  Subsequent assignments were ignored.
7601
7602 ------------------------------------------
7603Summary of changes for this label: 11_15_00
7604
7605ACPI 2.0 table support with backwards support for ACPI 1.0 and
7606the
76070.71 extensions.  Note: although we can read ACPI 2.0 BIOS
7608tables,
7609the AML  interpreter does NOT have support for the new 2.0 ASL
7610grammar terms at this time.
7611
7612All ACPI hardware access is via the GAS structures in the ACPI
76132.0
7614FADT.
7615
7616All physical memory addresses across all platforms are now 64
7617bits
7618wide. Logical address width remains dependent on the platform
7619(i.e., "void *").
7620
7621AcpiOsMapMemory interface changed to a 64-bit physical address.
7622
7623The AML interpreter integer size is now 64 bits, as per the ACPI
76242.0 specification.
7625
7626For backwards compatibility with ACPI 1.0, ACPI tables with a
7627revision number less than 2 use 32-bit integers only.
7628
7629Fixed a problem where the evaluation of OpRegion operands did not
7630always resolve them to numbers properly.
7631
7632------------------------------------------
7633Summary of changes for this label: 10_20_00
7634
7635Fix for CBN_._STA issue.  This fix will allow correct access to
7636CBN_ OpRegions when the _STA returns 0x8.
7637
7638Support to convert ACPI constants (Ones, Zeros, One) to actual
7639values before a package object is returned
7640
7641Fix for method call as predicate to if/while construct causing
7642incorrect if/while behavior
7643
7644Fix for Else block package lengths sometimes calculated wrong (if
7645block > 63 bytes)
7646
7647Fix for Processor object length field, was always zero
7648
7649Table load abort if FACP sanity check fails
7650
7651Fix for problem with Scope(name) if name already exists
7652
7653Warning emitted if a named object referenced cannot be found
7654(resolved) during method execution.
7655
7656
7657
7658
7659
7660------------------------------------------
7661Summary of changes for this label: 9_29_00
7662
7663New table initialization interfaces: AcpiInitializeSubsystem no
7664longer has any parameters AcpiFindRootPointer - Find the RSDP (if
7665necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
7666>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
7667AcpiLoadTables
7668
7669Note: These interface changes require changes to all existing
7670OSDs
7671
7672The PCI_Config default address space handler is always installed
7673at the root namespace object.
7674
7675-------------------------------------------
7676Summary of changes for this label: 09_15_00
7677
7678The new initialization architecture is implemented.  New
7679interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
7680AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
7681
7682(Namespace is automatically loaded when a table is loaded)
7683
7684The ACPI_OPERAND_OBJECT has been optimized to shrink its size
7685from
768652 bytes to 32 bytes.  There is usually one of these for every
7687namespace object, so the memory savings is significant.
7688
7689Implemented just-in-time evaluation of the CreateField operators.
7690
7691Bug fixes for IA-64 support have been integrated.
7692
7693Additional code review comments have been implemented
7694
7695The so-called "third pass parse" has been replaced by a final
7696walk
7697through the namespace to initialize all operation regions
7698(address
7699spaces) and fields that have not yet been initialized during the
7700execution of the various _INI and REG methods.
7701
7702New file - namespace/nsinit.c
7703
7704-------------------------------------------
7705Summary of changes for this label: 09_01_00
7706
7707Namespace manager data structures have been reworked to change
7708the
7709primary  object from a table to a single object.  This has
7710resulted in dynamic memory  savings of 3X within the namespace
7711and
77122X overall in the ACPI CA subsystem.
7713
7714Fixed problem where the call to AcpiEvFindPciRootBuses was
7715inadvertently left  commented out.
7716
7717Reduced the warning count when generating the source with the GCC
7718compiler.
7719
7720Revision numbers added to each module header showing the
7721SourceSafe version of the file.  Please refer to this version
7722number when giving us feedback or comments on individual modules.
7723
7724The main object types within the subsystem have been renamed to
7725clarify their  purpose:
7726
7727ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
7728ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
7729ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
7730
7731NOTE: no changes to the initialization sequence are included in
7732this label.
7733
7734-------------------------------------------
7735Summary of changes for this label: 08_23_00
7736
7737Fixed problem where TerminateControlMethod was being called
7738multiple times per  method
7739
7740Fixed debugger problem where single stepping caused a semaphore
7741to
7742be  oversignalled
7743
7744Improved performance through additional parse object caching -
7745added  ACPI_EXTENDED_OP type
7746
7747-------------------------------------------
7748Summary of changes for this label: 08_10_00
7749
7750Parser/Interpreter integration:  Eliminated the creation of
7751complete parse trees  for ACPI tables and control methods.
7752Instead, parse subtrees are created and  then deleted as soon as
7753they are processed (Either entered into the namespace or
7754executed
7755by the interpreter).  This reduces the use of dynamic kernel
7756memory  significantly. (about 10X)
7757
7758Exception codes broken into classes and renumbered.  Be sure to
7759recompile all  code that includes acexcep.h.  Hopefully we won't
7760have to renumber the codes  again now that they are split into
7761classes (environment, programmer, AML code,  ACPI table, and
7762internal).
7763
7764Fixed some additional alignment issues in the Resource Manager
7765subcomponent
7766
7767Implemented semaphore tracking in the AcpiExec utility, and fixed
7768several places  where mutexes/semaphores were being unlocked
7769without a corresponding lock  operation.  There are no known
7770semaphore or mutex "leaks" at this time.
7771
7772Fixed the case where an ASL Return operator is used to return an
7773unnamed  package.
7774
7775-------------------------------------------
7776Summary of changes for this label: 07_28_00
7777
7778Fixed a problem with the way addresses were calculated in
7779AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
7780manifested itself when a Field was  created with WordAccess or
7781DwordAccess, but the field unit defined within the  Field was
7782less
7783
7784than a Word or Dword.
7785
7786Fixed a problem in AmlDumpOperands() module's loop to pull
7787operands off of the  operand stack to display information. The
7788problem manifested itself as a TLB  error on 64-bit systems when
7789accessing an operand stack with two or more  operands.
7790
7791Fixed a problem with the PCI configuration space handlers where
7792context was  getting confused between accesses. This required a
7793change to the generic address  space handler and address space
7794setup definitions. Handlers now get both a  global handler
7795context
7796(this is the one passed in by the user when executing
7797AcpiInstallAddressSpaceHandler() and a specific region context
7798that is unique to  each region (For example, the _ADR, _SEG and
7799_BBN values associated with a  specific region). The generic
7800function definitions have changed to the  following:
7801
7802typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
7803UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
7804*HandlerContext, // This used to be void *Context void
7805*RegionContext); // This is an additional parameter
7806
7807typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
7808RegionHandle, UINT32 Function, void *HandlerContext,  void
7809**RegionContext); // This used to be **ReturnContext
7810
7811-------------------------------------------
7812Summary of changes for this label: 07_21_00
7813
7814Major file consolidation and rename.  All files within the
7815interpreter have been  renamed as well as most header files.
7816This
7817was done to prevent collisions with  existing files in the host
7818OSs -- filenames such as "config.h" and "global.h"  seem to be
7819quite common.  The VC project files have been updated.  All
7820makefiles  will require modification.
7821
7822The parser/interpreter integration continues in Phase 5 with the
7823implementation  of a complete 2-pass parse (the AML is parsed
7824twice) for each table;  This  avoids the construction of a huge
7825parse tree and therefore reduces the amount of  dynamic memory
7826required by the subsystem.  Greater use of the parse object cache
7827means that performance is unaffected.
7828
7829Many comments from the two code reviews have been rolled in.
7830
7831The 64-bit alignment support is complete.
7832
7833-------------------------------------------
7834Summary of changes for this label: 06_30_00
7835
7836With a nod and a tip of the hat to the technology of yesteryear,
7837we've added  support in the source code for 80 column output
7838devices.  The code is now mostly  constrained to 80 columns or
7839less to support environments and editors that 1)  cannot display
7840or print more than 80 characters on a single line, and 2) cannot
7841disable line wrapping.
7842
7843A major restructuring of the namespace data structure has been
7844completed.  The  result is 1) cleaner and more
7845understandable/maintainable code, and 2) a  significant reduction
7846in the dynamic memory requirement for each named ACPI  object
7847(almost half).
7848
7849-------------------------------------------
7850Summary of changes for this label: 06_23_00
7851
7852Linux support has been added.  In order to obtain approval to get
7853the ACPI CA  subsystem into the Linux kernel, we've had to make
7854quite a few changes to the  base subsystem that will affect all
7855users (all the changes are generic and OS- independent).  The
7856effects of these global changes have been somewhat far  reaching.
7857Files have been merged and/or renamed and interfaces have been
7858renamed.   The major changes are described below.
7859
7860Osd* interfaces renamed to AcpiOs* to eliminate namespace
7861pollution/confusion  within our target kernels.  All OSD
7862interfaces must be modified to match the new  naming convention.
7863
7864Files merged across the subsystem.  A number of the smaller
7865source
7866and header  files have been merged to reduce the file count and
7867increase the density of the  existing files.  There are too many
7868to list here.  In general, makefiles that  call out individual
7869files will require rebuilding.
7870
7871Interpreter files renamed.  All interpreter files now have the
7872prefix am*  instead of ie* and is*.
7873
7874Header files renamed:  The acapi.h file is now acpixf.h.  The
7875acpiosd.h file is  now acpiosxf.h.  We are removing references to
7876the acronym "API" since it is  somewhat windowsy. The new name is
7877"external interface" or xface or xf in the  filenames.j
7878
7879
7880All manifest constants have been forced to upper case (some were
7881mixed case.)   Also, the string "ACPI_" has been prepended to
7882many
7883(not all) of the constants,  typedefs, and structs.
7884
7885The globals "DebugLevel" and "DebugLayer" have been renamed
7886"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
7887
7888All other globals within the subsystem are now prefixed with
7889"AcpiGbl_" Internal procedures within the subsystem are now
7890prefixed with "Acpi" (with only  a few exceptions).  The original
7891two-letter abbreviation for the subcomponent  remains after
7892"Acpi"
7893- for example, CmCallocate became AcpiCmCallocate.
7894
7895Added a source code translation/conversion utility.  Used to
7896generate the Linux  source code, it can be modified to generate
7897other types of source as well. Can  also be used to cleanup
7898existing source by removing extraneous spaces and blank  lines.
7899Found in tools/acpisrc/*
7900
7901OsdUnMapMemory was renamed to OsdUnmapMemory and then
7902AcpiOsUnmapMemory.  (UnMap  became Unmap).
7903
7904A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
7905When set to  one, this indicates that the caller wants to use the
7906
7907semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
7908both types.  However, implementers of this  call may want to use
7909different OS primitives depending on the type of semaphore
7910requested.  For example, some operating systems provide separate
7911
7912"mutex" and  "semaphore" interfaces - where the mutex interface
7913is
7914much faster because it  doesn't have all the overhead of a full
7915semaphore implementation.
7916
7917Fixed a deadlock problem where a method that accesses the PCI
7918address space can  block forever if it is the first access to the
7919space.
7920
7921-------------------------------------------
7922Summary of changes for this label: 06_02_00
7923
7924Support for environments that cannot handle unaligned data
7925accesses (e.g.  firmware and OS environments devoid of alignment
7926handler technology namely  SAL/EFI and the IA-64 Linux kernel)
7927has
7928been added (via configurable macros) in  these three areas: -
7929Transfer of data from the raw AML byte stream is done via byte
7930moves instead of    word/dword/qword moves. - External objects
7931are
7932aligned within the user buffer, including package   elements (sub-
7933objects). - Conversion of name strings to UINT32 Acpi Names is
7934now
7935done byte-wise.
7936
7937The Store operator was modified to mimic Microsoft's
7938implementation when storing  to a Buffer Field.
7939
7940Added a check of the BM_STS bit before entering C3.
7941
7942The methods subdirectory has been obsoleted and removed.  A new
7943file, cmeval.c  subsumes the functionality.
7944
7945A 16-bit (DOS) version of AcpiExec has been developed.  The
7946makefile is under  the acpiexec directory.
7947