]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/contrib/dev/acpica/CHANGES.txt
This commit was generated by cvs2svn to compensate for changes in r151208,
[FreeBSD/FreeBSD.git] / sys / contrib / dev / acpica / CHANGES.txt
1 ----------------------------------------
2 19 November 2004.  Summary of changes for version 20041119:
3
4 1) ACPI CA Core Subsystem:
5
6 Fixed a problem in the internal ConvertToInteger routine where new
7 integers were not truncated to 32 bits for 32-bit ACPI tables. This
8 routine converts buffers and strings to integers.
9
10 Implemented support to store a value to an Index() on a String object.
11 This is an ACPI 2.0 feature that had not yet been implemented.
12
13 Implemented new behavior for storing objects to individual package
14 elements (via the Index() operator). The previous behavior was to invoke
15 the implicit conversion rules if an object was already present at the
16 index.  The new behavior is to simply delete any existing object and
17 directly store the new object. Although the ACPI specification seems
18 unclear on this subject, other ACPI implementations behave in this
19 manner.  (This is the root of the AE_BAD_HEX_CONSTANT issue.)
20
21 Modified the RSDP memory scan mechanism to support the extended checksum
22 for ACPI 2.0 (and above) RSDPs. Note that the search continues until a
23 valid RSDP signature is found with a valid checksum.
24
25 Code and Data Size: Current and previous core subsystem library sizes
26 are shown below. These are the code and data sizes for the acpica.lib
27 produced by the Microsoft Visual C++ 6.0 compiler, and these values do
28 not include any ACPI driver or OSPM code. The debug version of the code
29 includes the debug output trace mechanism and has a much larger code and
30 data size. Note that these values will vary depending on the efficiency
31 of the compiler and the compiler options used during generation.
32
33    Previous Release:
34      Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
35      Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
36    Current Release:
37      Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
38      Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
39
40
41 2) iASL Compiler/Disassembler:
42
43 Fixed a missing semicolon in the aslcompiler.y file.
44
45 ----------------------------------------
46 05 November 2004.  Summary of changes for version 20041105:
47
48 1) ACPI CA Core Subsystem:
49
50 Implemented support for FADT revision 2.  This was an interim
51 table (between ACPI 1.0 and ACPI 2.0) that adds support for the
52 FADT reset register.
53
54 Implemented optional support to allow uninitialized LocalX and
55 ArgX variables in a control method.  The variables are
56 initialized to an Integer object with a value of zero.  This
57 support is enabled by setting the AcpiGbl_EnableInterpreterSlack
58 flag to TRUE.
59
60 Implemented support for Integer objects for the SizeOf operator.
61 Either 4 or 8 is returned, depending on the current integer size
62 (32-bit or 64-bit, depending on the parent table revision).
63
64 Fixed a problem in the implementation of the SizeOf and
65 ObjectType operators where the operand was resolved to a value
66 too early, causing incorrect return values for some objects.
67
68 Fixed some possible memory leaks during exceptional conditions.
69
70 Code and Data Size: Current and previous core subsystem library
71 sizes are shown below. These are the code and data sizes for the
72 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
73 these values do not include any ACPI driver or OSPM code. The
74 debug version of the code includes the debug output trace
75 mechanism and has a much larger code and data size. Note that
76 these values will vary depending on the efficiency of the
77 compiler and the compiler options used during generation.
78
79   Previous Release:
80     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
81     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
82   Current Release:
83     Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
84     Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
85
86
87 2) iASL Compiler/Disassembler:
88
89 Implemented support for all ACPI 3.0 reserved names and methods.
90
91 Implemented all ACPI 3.0 grammar elements in the front-end,
92 including support for semicolons.
93
94 Implemented the ACPI 3.0 Function() and ToUUID() macros
95
96 Fixed a problem in the disassembler where a Scope() operator
97 would not be emitted properly if the target of the scope was in
98 another table.
99
100 ----------------------------------------
101 15 October 2004.  Summary of changes for version 20041015:
102
103 Note:  ACPI CA is currently undergoing an in-depth and complete
104 formal evaluation to test/verify the following areas. Other
105 suggestions are welcome. This will result in an increase in the
106 frequency of releases and the number of bug fixes in the next few
107 months.
108   - Functional tests for all ASL/AML operators
109   - All implicit/explicit type conversions
110   - Bit fields and operation regions
111   - 64-bit math support and 32-bit-only "truncated" math support
112   - Exceptional conditions, both compiler and interpreter
113   - Dynamic object deletion and memory leaks
114   - ACPI 3.0 support when implemented
115   - External interfaces to the ACPI subsystem
116
117
118 1) ACPI CA Core Subsystem:
119
120 Fixed two alignment issues on 64-bit platforms - within debug
121 statements in AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed
122 references to the Address field within the non-aligned ACPI
123 generic address structure.
124
125 Fixed a problem in the Increment and Decrement operators where
126 incorrect operand resolution could result in the inadvertent
127 modification of the original integer when the integer is passed
128 into another method as an argument and the arg is then
129 incremented/decremented.
130
131 Fixed a problem in the FromBCD operator where the upper 32-bits
132 of a 64-bit BCD number were truncated during conversion.
133
134 Fixed a problem in the ToDecimal operator where the length of the
135 resulting string could be set incorrectly too long if the input
136 operand was a Buffer object.
137
138 Fixed a problem in the Logical operators (LLess, etc.) where a
139 NULL byte (0) within a buffer would prematurely terminate a
140 compare between buffer objects.
141
142 Added a check for string overflow (>200 characters as per the
143 ACPI specification) during the Concatenate operator with two
144 string operands.
145
146 Code and Data Size: Current and previous core subsystem library
147 sizes are shown below. These are the code and data sizes for the
148 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
149 these values do not include any ACPI driver or OSPM code. The
150 debug version of the code includes the debug output trace
151 mechanism and has a much larger code and data size. Note that
152 these values will vary depending on the efficiency of the
153 compiler and the compiler options used during generation.
154
155   Previous Release:
156     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
157     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
158   Current Release:
159     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
160     Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
161
162
163 2) iASL Compiler/Disassembler:
164
165 Allow the use of the ObjectType operator on uninitialized Locals
166 and Args (returns 0 as per the ACPI specification).
167
168 Fixed a problem where the compiler would fault if there was a
169 syntax error in the FieldName of all of the various
170 CreateXXXField operators.
171
172 Disallow the use of lower case letters within the EISAID macro,
173 as per the ACPI specification.  All EISAID strings must be of the
174 form "UUUNNNN" Where U is an uppercase letter and N is a hex
175 digit.
176
177
178 ----------------------------------------
179 06 October 2004.  Summary of changes for version 20041006:
180
181 1) ACPI CA Core Subsystem:
182
183 Implemented support for the ACPI 3.0 Timer operator. This ASL
184 function implements a 64-bit timer with 100 nanosecond
185 granularity.
186
187 Defined a new OSL interface, AcpiOsGetTimer. This interface is
188 used to implement the ACPI 3.0 Timer operator.  This allows the
189 host OS to implement the timer with the best clock available.
190 Also, it keeps the core subsystem out of the clock handling
191 business, since the host OS (usually) performs this function.
192
193 Fixed an alignment issue on 64-bit platforms. The
194 HwLowLevelRead(Write) functions use a 64-bit address which is
195 part of the packed ACPI Generic Address Structure. Since the
196 structure is non-aligned, the alignment macros are now used to
197 extract the address to a local variable before use.
198
199 Fixed a problem where the ToInteger operator assumed all input
200 strings were hexadecimal. The operator now handles both decimal
201 strings and hex strings (prefixed with "0x").
202
203 Fixed a problem where the string length in the string object
204 created as a result of the internal ConvertToString procedure
205 could be incorrect. This potentially affected all implicit
206 conversions and also the ToDecimalString and ToHexString
207 operators.
208
209 Fixed two problems in the ToString operator. If the length
210 parameter was zero, an incorrect string object was created and
211 the value of the input length parameter was inadvertently changed
212 from zero to Ones.
213
214 Fixed a problem where the optional ResourceSource string in the
215 ExtendedIRQ resource macro was ignored.
216
217 Simplified the interfaces to the internal division functions,
218 reducing code size and complexity.
219
220 Code and Data Size: Current and previous core subsystem library
221 sizes are shown below. These are the code and data sizes for the
222 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
223 these values do not include any ACPI driver or OSPM code. The
224 debug version of the code includes the debug output trace
225 mechanism and has a much larger code and data size. Note that
226 these values will vary depending on the efficiency of the
227 compiler and the compiler options used during generation.
228
229   Previous Release:
230     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
231     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
232   Current Release:
233     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
234     Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
235
236
237 2) iASL Compiler/Disassembler:
238
239 Implemented support for the ACPI 3.0 Timer operator.
240
241 Fixed a problem where the Default() operator was inadvertently
242 ignored in a Switch/Case block.  This was a problem in the
243 translation of the Switch statement to If...Else pairs.
244
245 Added support to allow a standalone Return operator, with no
246 parentheses (or operands).
247
248 Fixed a problem with code generation for the ElseIf operator
249 where the translated Else...If parse tree was improperly
250 constructed leading to the loss of some code.
251
252 ----------------------------------------
253 22 September 2004.  Summary of changes for version 20040922:
254
255 1) ACPI CA Core Subsystem:
256
257 Fixed a problem with the implementation of the LNot() operator
258 where "Ones" was not returned for the TRUE case. Changed the code
259 to return Ones instead of (!Arg) which was usually 1. This change
260 affects iASL constant folding for this operator also.
261
262 Fixed a problem in AcpiUtInitializeBuffer where an existing
263 buffer was not initialized properly -- Now zero the entire buffer
264 in this case where the buffer already exists.
265
266 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
267 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This
268 simplifies all related code considerably. This will require
269 changes/updates to all OS interface layers (OSLs.)
270
271 Implemented a new external interface,
272 AcpiInstallExceptionHandler, to allow a system exception handler
273 to be installed. This handler is invoked upon any run-time
274 exception that occurs during control method execution.
275
276 Added support for the DSDT in AcpiTbFindTable. This allows the
277 DataTableRegion() operator to access the local copy of the DSDT.
278
279 Code and Data Size: Current and previous core subsystem library
280 sizes are shown below. These are the code and data sizes for the
281 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
282 these values do not include any ACPI driver or OSPM code. The
283 debug version of the code includes the debug output trace
284 mechanism and has a much larger code and data size. Note that
285 these values will vary depending on the efficiency of the
286 compiler and the compiler options used during generation.
287
288   Previous Release:
289     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
290     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
291   Current Release:
292     Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
293     Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
294
295
296 2) iASL Compiler/Disassembler:
297
298 Fixed a problem with constant folding and the LNot operator. LNot
299 was returning 1 in the TRUE case, not Ones as per the ACPI
300 specification. This could result in the generation of an
301 incorrect folded/reduced constant.
302
303 End-Of-File is now allowed within a "//"-style comment.  A parse
304 error no longer occurs if such a comment is at the very end of
305 the input ASL source file.
306
307 Implemented the "-r" option to override the Revision in the table
308 header. The initial use of this option will be to simplify the
309 evaluation of the AML interpreter by allowing a single ASL source
310 module to be compiled for either 32-bit or 64-bit integers.
311
312
313 ----------------------------------------
314 27 August 2004.  Summary of changes for version 20040827:
315
316 1) ACPI CA Core Subsystem:
317
318 - Implemented support for implicit object conversion in the non-
319 numeric logical operators (LEqual, LGreater, LGreaterEqual,
320 LLess, LLessEqual, and LNotEqual.)  Any combination of
321 Integers/Strings/Buffers may now be used; the second operand is
322 implicitly converted on the fly to match the type of the first
323 operand.  For example:
324
325     LEqual (Source1, Source2)
326
327 Source1 and Source2 must each evaluate to an integer, a string,
328 or a buffer. The data type of Source1 dictates the required type
329 of Source2. Source2 is implicitly converted if necessary to match
330 the type of Source1.
331
332 - Updated and corrected the behavior of the string conversion
333 support.  The rules concerning conversion of buffers to strings
334 (according to the ACPI specification) are as follows:
335
336 ToDecimalString - explicit byte-wise conversion of buffer to
337 string of decimal values (0-255) separated by commas. ToHexString
338 - explicit byte-wise conversion of buffer to string of hex values
339 (0-FF) separated by commas. ToString - explicit byte-wise
340 conversion of buffer to string.  Byte-by-byte copy with no
341 transform except NULL terminated. Any other implicit buffer-to-
342 string conversion - byte-wise conversion of buffer to string of
343 hex values (0-FF) separated by spaces.
344
345 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
346
347 - Fixed a problem in AcpiNsGetPathnameLength where the returned
348 length was one byte too short in the case of a node in the root
349 scope.  This could cause a fault during debug output.
350
351 - Code and Data Size: Current and previous core subsystem library
352 sizes are shown below.  These are the code and data sizes for the
353 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
354 these values do not include any ACPI driver or OSPM code.  The
355 debug version of the code includes the debug output trace
356 mechanism and has a much larger code and data size.  Note that
357 these values will vary depending on the efficiency of the
358 compiler and the compiler options used during generation.
359
360   Previous Release:
361     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
362     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
363   Current Release:
364     Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
365     Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
366
367
368 2) iASL Compiler/Disassembler:
369
370 - Fixed a Linux generation error.
371
372
373 ----------------------------------------
374 16 August 2004.  Summary of changes for version 20040816:
375
376 1) ACPI CA Core Subsystem:
377
378 Designed and implemented support within the AML interpreter for
379 the so-called "implicit return".  This support returns the result
380 of the last ASL operation within a control method, in the absence
381 of an explicit Return() operator.  A few machines depend on this
382 behavior, even though it is not explicitly supported by the ASL
383 language.  It is optional support that can be enabled at runtime
384 via the AcpiGbl_EnableInterpeterSlack flag.
385
386 Removed support for the PCI_Config address space from the
387 internal low level hardware interfaces (AcpiHwLowLevelRead and
388 AcpiHwLowLevelWrite).  This support was not used internally, and
389 would not work correctly anyway because the PCI bus number and
390 segment number were not supported.  There are separate interfaces
391 for PCI configuration space access because of the unique
392 interface.
393
394 Code and Data Size: Current and previous core subsystem library
395 sizes are shown below.  These are the code and data sizes for the
396 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
397 these values do not include any ACPI driver or OSPM code.  The
398 debug version of the code includes the debug output trace
399 mechanism and has a much larger code and data size.  Note that
400 these values will vary depending on the efficiency of the
401 compiler and the compiler options used during generation.
402
403   Previous Release:
404     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
405     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
406   Current Release:
407     Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
408     Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
409
410
411 2) iASL Compiler/Disassembler:
412
413 Fixed a problem where constants in ASL expressions at the root
414 level (not within a control method) could be inadvertently
415 truncated during code generation.  This problem was introduced in
416 the 20040715 release.
417
418
419 ----------------------------------------
420 15 July 2004.  Summary of changes for version 20040715:
421
422 1) ACPI CA Core Subsystem:
423
424 Restructured the internal HW GPE interfaces to pass/track the
425 current state of interrupts (enabled/disabled) in order to avoid
426 possible deadlock and increase flexibility of the interfaces.
427
428 Implemented a "lexicographical compare" for String and Buffer
429 objects within the logical operators -- LGreater, LLess,
430 LGreaterEqual, and LLessEqual -- as per further clarification to
431 the ACPI specification.  Behavior is similar to C library
432 "strcmp".
433
434 Completed a major reduction in CPU stack use for the
435 AcpiGetFirmwareTable external function.  In the 32-bit non-debug
436 case, the stack use has been reduced from 168 bytes to 32 bytes.
437
438 Deployed a new run-time configuration flag,
439 AcpiGbl_EnableInterpreterSlack, whose purpose is to allow the AML
440 interpreter to forgive certain bad AML constructs.  Default
441 setting is FALSE.
442
443 Implemented the first use of AcpiGbl_EnableInterpreterSlack in
444 the Field IO support code.  If enabled, it allows field access to
445 go beyond the end of a region definition if the field is within
446 the region length rounded up to the next access width boundary (a
447 common coding error.)
448
449 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and
450 OSD_EXECUTION_CALLBACK to ACPI_OSD_EXEC_CALLBACK for consistency
451 with other ACPI symbols.  Also, these symbols are lowercased by
452 the latest version of the AcpiSrc tool.
453
454 The prototypes for the PCI interfaces in acpiosxf.h have been
455 updated to rename "Register" to simply "Reg" to prevent certain
456 compilers from complaining.
457
458 Code and Data Size: Current and previous core subsystem library
459 sizes are shown below.  These are the code and data sizes for the
460 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
461 these values do not include any ACPI driver or OSPM code.  The
462 debug version of the code includes the debug output trace
463 mechanism and has a much larger code and data size.  Note that
464 these values will vary depending on the efficiency of the
465 compiler and the compiler options used during generation.
466
467   Previous Release:
468     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
469     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
470   Current Release:
471     Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
472     Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
473
474
475 2) iASL Compiler/Disassembler:
476
477 Implemented full support for Package objects within the Case()
478 operator.  Note: The Break() operator is currently not supported
479 within Case blocks (TermLists) as there is some question about
480 backward compatibility with ACPI 1.0 interpreters.
481
482 Fixed a problem where complex terms were not supported properly
483 within the Switch() operator.
484
485 Eliminated extraneous warning for compiler-emitted reserved names
486 of the form "_T_x".  (Used in Switch/Case operators.)
487
488 Eliminated optimization messages for "_T_x" objects and small
489 constants within the DefinitionBlock operator.
490
491
492 ----------------------------------------
493 15 June 2004.  Summary of changes for version 20040615:
494
495 1) ACPI CA Core Subsystem:
496
497 Implemented support for Buffer and String objects (as per ACPI
498 2.0) for the following ASL operators:  LEqual, LGreater, LLess,
499 LGreaterEqual, and LLessEqual.
500
501 All directory names in the entire source package are lower case,
502 as they were in earlier releases.
503
504 Implemented "Disassemble" command in the AML debugger that will
505 disassemble a single control method.
506
507 Code and Data Size: Current and previous core subsystem library
508 sizes are shown below.  These are the code and data sizes for the
509 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
510 these values do not include any ACPI driver or OSPM code.  The
511 debug version of the code includes the debug output trace
512 mechanism and has a much larger code and data size.  Note that
513 these values will vary depending on the efficiency of the
514 compiler and the compiler options used during generation.
515
516   Previous Release:
517     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
518     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
519   Current Release:
520     Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
521     Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
522
523
524 2) iASL Compiler/Disassembler:
525
526 Implemented support for Buffer and String objects (as per ACPI
527 2.0) for the following ASL operators:  LEqual, LGreater, LLess,
528 LGreaterEqual, and LLessEqual.
529
530 All directory names in the entire source package are lower case,
531 as they were in earlier releases.
532
533 Fixed a fault when using the -g or -d<nofilename> options if the
534 FADT was not found.
535
536 Fixed an issue with the Windows version of the compiler where
537 later versions of Windows place the FADT in the registry under
538 the name "FADT" and not "FACP" as earlier versions did.  This
539 applies when using the -g or -d<nofilename> options.  The
540 compiler now looks for both strings as necessary.
541
542 Fixed a problem with compiler namepath optimization where a
543 namepath within the Scope() operator could not be optimized if
544 the namepath was a subpath of the current scope path.
545
546 ----------------------------------------
547 27 May 2004.  Summary of changes for version 20040527:
548
549 1) ACPI CA Core Subsystem:
550
551 Completed a new design and implementation for EBDA (Extended BIOS
552 Data Area) support in the RSDP scan code.  The original code
553 improperly scanned for the EBDA by simply scanning from memory
554 location 0 to 0x400.  The correct method is to first obtain the
555 EBDA pointer from within the BIOS data area, then scan 1K of
556 memory starting at the EBDA pointer.  There appear to be few if
557 any machines that place the RSDP in the EBDA, however.
558
559 Integrated a fix for a possible fault during evaluation of
560 BufferField arguments.  Obsolete code that was causing the
561 problem was removed.
562
563 Found and fixed a problem in the Field Support Code where data
564 could be corrupted on a bit field read that starts on an aligned
565 boundary but does not end on an aligned boundary.  Merged the
566 read/write "datum length" calculation code into a common
567 procedure.
568
569 Rolled in a couple of changes to the FreeBSD-specific header.
570
571 Code and Data Size: Current and previous core subsystem library
572 sizes are shown below.  These are the code and data sizes for the
573 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
574 these values do not include any ACPI driver or OSPM code.  The
575 debug version of the code includes the debug output trace
576 mechanism and has a much larger code and data size.  Note that
577 these values will vary depending on the efficiency of the
578 compiler and the compiler options used during generation.
579
580   Previous Release:
581     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
582     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
583   Current Release:
584     Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
585     Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
586
587
588 2) iASL Compiler/Disassembler:
589
590 Fixed a generation warning produced by some overly-verbose
591 compilers for a 64-bit constant.
592
593 ----------------------------------------
594 14 May 2004.  Summary of changes for version 20040514:
595
596 1) ACPI CA Core Subsystem:
597
598 Fixed a problem where hardware GPE enable bits sometimes not set
599 properly during and after GPE method execution.  Result of 04/27
600 changes.
601
602 Removed extra "clear all GPEs" when sleeping/waking.
603
604 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the
605 single AcpiHwWriteGpeEnableReg. Changed a couple of calls to the
606 functions above to the new AcpiEv* calls as appropriate.
607
608 ACPI_OS_NAME was removed from the OS-specific headers.  The
609 default name is now "Microsoft Windows NT" for maximum
610 compatibility.  However this can be changed by modifying the
611 acconfig.h file.
612
613 Allow a single invocation of AcpiInstallNotifyHandler for a
614 handler that traps both types of notifies (System, Device).  Use
615 ACPI_ALL_NOTIFY flag.
616
617 Run _INI methods on ThermalZone objects.  This is against the
618 ACPI specification, but there is apparently ASL code in the field
619 that has these _INI methods, and apparently "other" AML
620 interpreters execute them.
621
622 Performed a full 16/32/64 bit lint that resulted in some small
623 changes.
624
625 Added a sleep simulation command to the AML debugger to test
626 sleep code.
627
628 Code and Data Size: Current and previous core subsystem library
629 sizes are shown below.  These are the code and data sizes for the
630 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
631 these values do not include any ACPI driver or OSPM code.  The
632 debug version of the code includes the debug output trace
633 mechanism and has a much larger code and data size.  Note that
634 these values will vary depending on the efficiency of the
635 compiler and the compiler options used during generation.
636
637   Previous Release:
638     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
639     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
640   Current Release:
641     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
642     Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
643
644 ----------------------------------------
645 27 April 2004.  Summary of changes for version 20040427:
646
647 1) ACPI CA Core Subsystem:
648
649 Completed a major overhaul of the GPE handling within ACPI CA.
650 There are now three types of GPEs:  wake-only, runtime-only, and
651 combination wake/run.  The only GPEs allowed to be combination
652 wake/run are for button-style devices such as a control-method
653 power button, control-method sleep button, or a notebook lid
654 switch.  GPEs that have an _Lxx or _Exx method and are not
655 referenced by any _PRW methods are marked for "runtime" and
656 hardware enabled.  Any GPE that is referenced by a _PRW method is
657 marked for "wake" (and disabled at runtime).  However, at sleep
658 time, only those GPEs that have been specifically enabled for
659 wake via the AcpiEnableGpe interface will actually be hardware
660 enabled.
661
662 A new external interface has been added, AcpiSetGpeType(), that
663 is meant to be used by device drivers to force a GPE to a
664 particular type.  It will be especially useful for the drivers
665 for the button devices mentioned above.
666
667 Completed restructuring of the ACPI CA initialization sequence so
668 that default operation region handlers are installed before GPEs
669 are initialized and the _PRW methods are executed.  This will
670 prevent errors when the _PRW methods attempt to access system
671 memory or I/O space.
672
673 GPE enable/disable no longer reads the GPE enable register.  We
674 now keep the enable info for runtime and wake separate and in the
675 GPE_EVENT_INFO.  We thus no longer depend on the hardware to
676 maintain these bits.
677
678 Always clear the wake status and fixed/GPE status bits before
679 sleep, even for state S5.
680
681 Improved the AML debugger output for displaying the GPE blocks
682 and their current status.
683
684 Added new strings for the _OSI method, of the form "Windows 2001
685 SPx" where x = 0,1,2,3,4.
686
687 Fixed a problem where the physical address was incorrectly
688 calculated when the Load() operator was used to directly load
689 from an Operation Region (vs. loading from a Field object.)  Also
690 added check for minimum table length for this case.
691
692 Fix for multiple mutex acquisition.  Restore original thread
693 SyncLevel on mutex release.
694
695 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
696 consistency with the other fields returned.
697
698 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one
699 such structure for each GPE in the system, so the size of this
700 structure is important.
701
702 CPU stack requirement reduction:  Cleaned up the method execution
703 and object evaluation paths so that now a parameter structure is
704 passed, instead of copying the various method parameters over and
705 over again.
706
707 In evregion.c:  Correctly exit and reenter the interpreter region
708 if and only if dispatching an operation region request to a user-
709 installed handler.  Do not exit/reenter when dispatching to a
710 default handler (e.g., default system memory or I/O handlers)
711
712
713 Notes for updating drivers for the new GPE support.  The
714 following changes must be made to ACPI-related device drivers
715 that are attached to one or more GPEs: (This information will be
716 added to the ACPI CA Programmer Reference.)
717
718 1) AcpiInstallGpeHandler no longer automatically enables the GPE,
719 you must explicitly call AcpiEnableGpe.
720 2) There is a new interface called AcpiSetGpeType. This should be
721 called before enabling the GPE.  Also, this interface will
722 automatically disable the GPE if it is currently enabled.
723 3) AcpiEnableGpe no longer supports a GPE type flag.
724
725 Specific drivers that must be changed:
726 1) EC driver:
727     AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
728 AeGpeHandler, NULL);
729     AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
730     AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
731
732 2) Button Drivers (Power, Lid, Sleep):
733 Run _PRW method under parent device
734 If _PRW exists: /* This is a control-method button */
735     Extract GPE number and possibly GpeDevice
736     AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
737     AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
738
739 For all other devices that have _PRWs, we automatically set the
740 GPE type to ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically
741 (wake) enabled.  This must be done on a selective basis, usually
742 requiring some kind of user app to allow the user to pick the
743 wake devices.
744
745
746 Code and Data Size: Current and previous core subsystem library
747 sizes are shown below.  These are the code and data sizes for the
748 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
749 these values do not include any ACPI driver or OSPM code.  The
750 debug version of the code includes the debug output trace
751 mechanism and has a much larger code and data size.  Note that
752 these values will vary depending on the efficiency of the
753 compiler and the compiler options used during generation.
754
755   Previous Release:
756     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
757     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
758   Current Release:
759     Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
760     Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
761
762
763
764 ----------------------------------------
765 02 April 2004.  Summary of changes for version 20040402:
766
767 1) ACPI CA Core Subsystem:
768
769 Fixed an interpreter problem where an indirect store through an
770 ArgX parameter was incorrectly applying the "implicit conversion
771 rules" during the store.  From the ACPI specification: "If the
772 target is a method local or argument (LocalX or ArgX), no
773 conversion is performed and the result is stored directly to the
774 target".  The new behavior is to disable implicit conversion
775 during ALL stores to an ArgX.
776
777 Changed the behavior of the _PRW method scan to ignore any and
778 all errors returned by a given _PRW.  This prevents the scan from
779 aborting from the failure of any single _PRW.
780
781 Moved the runtime configuration parameters from the global init
782 procedure to static variables in acglobal.h.  This will allow the
783 host to override the default values easily.
784
785 Code and Data Size: Current and previous core subsystem library
786 sizes are shown below.  These are the code and data sizes for the
787 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
788 these values do not include any ACPI driver or OSPM code.  The
789 debug version of the code includes the debug output trace
790 mechanism and has a much larger code and data size.  Note that
791 these values will vary depending on the efficiency of the
792 compiler and the compiler options used during generation.
793
794   Previous Release:
795     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
796     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
797   Current Release:
798     Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
799     Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
800
801
802 2) iASL Compiler/Disassembler:
803
804 iASL now fully disassembles SSDTs.  However, External()
805 statements are not generated automatically for unresolved symbols
806 at this time.  This is a planned feature for future
807 implementation.
808
809 Fixed a scoping problem in the disassembler that occurs when the
810 type of the target of a Scope() operator is overridden.  This
811 problem caused an incorrectly nested internal namespace to be
812 constructed.
813
814 Any warnings or errors that are emitted during disassembly are
815 now commented out automatically so that the resulting file can be
816 recompiled without any hand editing.
817
818 ----------------------------------------
819 26 March 2004.  Summary of changes for version 20040326:
820
821 1) ACPI CA Core Subsystem:
822
823 Implemented support for "wake" GPEs via interaction between GPEs
824 and the _PRW methods.  Every GPE that is pointed to by one or
825 more _PRWs is identified as a WAKE GPE and by default will no
826 longer be enabled at runtime.  Previously, we were blindly
827 enabling all GPEs with a corresponding _Lxx or _Exx method - but
828 most of these turn out to be WAKE GPEs anyway.  We believe this
829 has been the cause of thousands of "spurious" GPEs on some
830 systems.
831
832 This new GPE behavior is can be reverted to the original behavior
833 (enable ALL GPEs at runtime) via a runtime flag.
834
835 Fixed a problem where aliased control methods could not access
836 objects properly.  The proper scope within the namespace was not
837 initialized (transferred to the target of the aliased method)
838 before executing the target method.
839
840 Fixed a potential race condition on internal object deletion on
841 the return object in AcpiEvaluateObject.
842
843 Integrated a fix for resource descriptors where both _MEM and
844 _MTP were being extracted instead of just _MEM.  (i.e. bitmask
845 was incorrectly too wide, 0x0F instead of 0x03.)
846
847 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
848 preventing a fault in some cases.
849
850 Updated Notify() values for debug statements in evmisc.c
851
852 Return proper status from AcpiUtMutexInitialize, not just simply
853 AE_OK.
854
855 Code and Data Size: Current and previous core subsystem library
856 sizes are shown below.  These are the code and data sizes for the
857 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
858 these values do not include any ACPI driver or OSPM code.  The
859 debug version of the code includes the debug output trace
860 mechanism and has a much larger code and data size.  Note that
861 these values will vary depending on the efficiency of the
862 compiler and the compiler options used during generation.
863
864   Previous Release:
865     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
866     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
867   Current Release:
868     Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
869     Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
870
871 ----------------------------------------
872 11 March 2004.  Summary of changes for version 20040311:
873
874 1) ACPI CA Core Subsystem:
875
876 Fixed a problem where errors occurring during the parse phase of
877 control method execution did not abort cleanly.  For example,
878 objects created and installed in the namespace were not deleted.
879 This caused all subsequent invocations of the method to return
880 the AE_ALREADY_EXISTS exception.
881
882 Implemented a mechanism to force a control method to "Serialized"
883 execution if the method attempts to create namespace objects.
884 (The root of the AE_ALREADY_EXISTS problem.)
885
886 Implemented support for the predefined _OSI "internal" control
887 method.  Initial supported strings are "Linux", "Windows 2000",
888 "Windows 2001", and "Windows 2001.1", and can be easily upgraded
889 for new strings as necessary.  This feature will allow "other"
890 operating systems to execute the fully tested, "Windows" code
891 path through the ASL code
892
893 Global Lock Support:  Now allows multiple acquires and releases
894 with any internal thread.  Removed concept of "owning thread" for
895 this special mutex.
896
897 Fixed two functions that were inappropriately declaring large
898 objects on the CPU stack:  PsParseLoop, NsEvaluateRelative.
899 Reduces the stack usage during method execution considerably.
900
901 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where
902 the S4Bios_f field was incorrectly defined as UINT32 instead of
903 UINT32_BIT.
904
905 Fixed a problem where AcpiEvGpeDetect would fault if there were
906 no GPEs defined on the machine.
907
908 Implemented two runtime options:  One to force all control method
909 execution to "Serialized" to mimic Windows behavior, another to
910 disable _OSI support if it causes problems on a given machine.
911
912 Code and Data Size: Current and previous core subsystem library
913 sizes are shown below.  These are the code and data sizes for the
914 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
915 these values do not include any ACPI driver or OSPM code.  The
916 debug version of the code includes the debug output trace
917 mechanism and has a much larger code and data size.  Note that
918 these values will vary depending on the efficiency of the
919 compiler and the compiler options used during generation.
920
921   Previous Release:
922     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
923     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
924   Current Release:
925     Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
926     Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
927
928 2) iASL Compiler/Disassembler:
929
930 Fixed an array size problem for FreeBSD that would cause the
931 compiler to fault.
932
933 ----------------------------------------
934 20 February 2004.  Summary of changes for version 20040220:
935
936 1) ACPI CA Core Subsystem:
937
938 Implemented execution of _SxD methods for Device objects in the
939 GetObjectInfo interface.
940
941 Fixed calls to _SST method to pass the correct arguments.
942
943 Added a call to _SST on wake to restore to "working" state.
944
945 Check for End-Of-Buffer failure case in the WalkResources
946 interface.
947
948 Integrated fix for 64-bit alignment issue in acglobal.h by moving
949 two structures to the beginning of the file.
950
951 After wake, clear GPE status register(s) before enabling GPEs.
952
953 After wake, clear/enable power button.  (Perhaps we should
954 clear/enable all fixed events upon wake.)
955
956 Fixed a couple of possible memory leaks in the Namespace manager.
957
958 Integrated latest acnetbsd.h file.
959
960 ----------------------------------------
961 11 February 2004.  Summary of changes for version 20040211:
962
963 1) ACPI CA Core Subsystem:
964
965 Completed investigation and implementation of the call-by-
966 reference mechanism for control method arguments.
967
968 Fixed a problem where a store of an object into an indexed
969 package could fail if the store occurs within a different method
970 than the method that created the package.
971
972 Fixed a problem where the ToDecimal operator could return
973 incorrect results.
974
975 Fixed a problem where the CopyObject operator could fail on some
976 of the more obscure objects (e.g., Reference objects.)
977
978 Improved the output of the Debug object to display buffer,
979 package, and index objects.
980
981 Fixed a problem where constructs of the form "RefOf (ArgX)" did
982 not return the expected result.
983
984 Added permanent ACPI_REPORT_ERROR macros for all instances of the
985 ACPI_AML_INTERNAL exception.
986
987 Integrated latest version of acfreebsd.h
988
989 ----------------------------------------
990 16 January 2004.  Summary of changes for version 20040116:
991
992 The purpose of this release is primarily to update the copyright
993 years in each module, thus causing a huge number of diffs.  There
994 are a few small functional changes, however.
995
996 1) ACPI CA Core Subsystem:
997
998 Improved error messages when there is a problem finding one or
999 more of the required base ACPI tables
1000
1001 Reintroduced the definition of APIC_HEADER in actbl.h
1002
1003 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
1004
1005 Removed extraneous reference to NewObj in dsmthdat.c
1006
1007 2) iASL compiler
1008
1009 Fixed a problem introduced in December that disabled the correct
1010 disassembly of Resource Templates
1011
1012
1013 ----------------------------------------
1014 03 December 2003.  Summary of changes for version 20031203:
1015
1016 1) ACPI CA Core Subsystem:
1017
1018 Changed the initialization of Operation Regions during subsystem
1019 init to perform two entire walks of the ACPI namespace; The first
1020 to initialize the regions themselves, the second to execute the
1021 _REG methods.  This fixed some interdependencies across _REG
1022 methods found on some machines.
1023
1024 Fixed a problem where a Store(Local0, Local1) could simply update
1025 the object reference count, and not create a new copy of the
1026 object if the Local1 is uninitialized.
1027
1028 Implemented support for the _SST reserved method during sleep
1029 transitions.
1030
1031 Implemented support to clear the SLP_TYP and SLP_EN bits when
1032 waking up, this is apparently required by some machines.
1033
1034 When sleeping, clear the wake status only if SleepState is not
1035 S5.
1036
1037 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
1038 pointer arithmetic advanced a string pointer too far.
1039
1040 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
1041 could be returned if the requested table has not been loaded.
1042
1043 Within the support for IRQ resources, restructured the handling
1044 of
1045 the active and edge/level bits.
1046
1047 Fixed a few problems in AcpiPsxExecute() where memory could be
1048 leaked under certain error conditions.
1049
1050 Improved error messages for the cases where the ACPI mode could
1051 not be entered.
1052
1053 Code and Data Size: Current and previous core subsystem library
1054 sizes are shown below.  These are the code and data sizes for the
1055 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1056 these values do not include any ACPI driver or OSPM code.  The
1057 debug version of the code includes the debug output trace
1058 mechanism and has a much larger code and data size.  Note that
1059 these values will vary depending on the efficiency of the
1060 compiler
1061 and the compiler options used during generation.
1062
1063   Previous Release (20031029):
1064     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
1065     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
1066   Current Release:
1067     Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
1068     Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
1069
1070 2) iASL Compiler/Disassembler:
1071
1072 Implemented a fix for the iASL disassembler where a bad index was
1073 generated.  This was most noticeable on 64-bit platforms
1074
1075
1076 ----------------------------------------
1077 29 October 2003.  Summary of changes for version 20031029:
1078
1079 1) ACPI CA Core Subsystem:
1080
1081 Fixed a problem where a level-triggered GPE with an associated
1082 _Lxx control method was incorrectly cleared twice.
1083
1084 Fixed a problem with the Field support code where an access can
1085 occur beyond the end-of-region if the field is non-aligned but
1086 extends to the very end of the parent region (resulted in an
1087 AE_AML_REGION_LIMIT exception.)
1088
1089 Fixed a problem with ACPI Fixed Events where an RT Clock handler
1090 would not get invoked on an RTC event.  The RTC event bitmasks
1091 for
1092 the PM1 registers were not being initialized properly.
1093
1094 Implemented support for executing _STA and _INI methods for
1095 Processor objects.  Although this is currently not part of the
1096 ACPI specification, there is existing ASL code that depends on
1097 the
1098 init-time execution of these methods.
1099
1100 Implemented and deployed a GetDescriptorName function to decode
1101 the various types of internal descriptors.  Guards against null
1102 descriptors during debug output also.
1103
1104 Implemented and deployed a GetNodeName function to extract the 4-
1105 character namespace node name.  This function simplifies the
1106 debug
1107 and error output, as well as guarding against null pointers
1108 during
1109 output.
1110
1111 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
1112 simplify the debug and error output of 64-bit integers.  This
1113 macro replaces the HIDWORD and LODWORD macros for dumping these
1114 integers.
1115
1116 Updated the implementation of the Stall() operator to only call
1117 AcpiOsStall(), and also return an error if the operand is larger
1118 than 255.  This preserves the required behavior of not
1119 relinquishing the processor, as would happen if AcpiOsSleep() was
1120 called for "long stalls".
1121
1122 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
1123 initialized are now treated as NOOPs.
1124
1125 Cleaned up a handful of warnings during 64-bit generation.
1126
1127 Fixed a reported error where and incorrect GPE number was passed
1128 to the GPE dispatch handler.  This value is only used for error
1129 output, however.  Used this opportunity to clean up and
1130 streamline
1131 the GPE dispatch code.
1132
1133 Code and Data Size: Current and previous core subsystem library
1134 sizes are shown below.  These are the code and data sizes for the
1135 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1136 these values do not include any ACPI driver or OSPM code.  The
1137 debug version of the code includes the debug output trace
1138 mechanism and has a much larger code and data size.  Note that
1139 these values will vary depending on the efficiency of the
1140 compiler
1141 and the compiler options used during generation.
1142
1143   Previous Release (20031002):
1144     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
1145     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
1146   Current Release:
1147     Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
1148     Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
1149
1150
1151 2) iASL Compiler/Disassembler:
1152
1153 Updated the iASL compiler to return an error if the operand to
1154 the
1155 Stall() operator is larger than 255.
1156
1157
1158 ----------------------------------------
1159 02 October 2003.  Summary of changes for version 20031002:
1160
1161
1162 1) ACPI CA Core Subsystem:
1163
1164 Fixed a problem with Index Fields where the index was not
1165 incremented for fields that require multiple writes to the
1166 index/data registers (Fields that are wider than the data
1167 register.)
1168
1169 Fixed a problem with all Field objects where a write could go
1170 beyond the end-of-field if the field was larger than the access
1171 granularity and therefore required multiple writes to complete
1172 the
1173 request.  An extra write beyond the end of the field could happen
1174 inadvertently.
1175
1176 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
1177 would incorrectly be returned if the width of the Data Register
1178 was larger than the specified field access width.
1179
1180 Completed fixes for LoadTable() and Unload() and verified their
1181 operation.  Implemented full support for the "DdbHandle" object
1182 throughout the ACPI CA subsystem.
1183
1184 Implemented full support for the MADT and ECDT tables in the ACPI
1185 CA header files.  Even though these tables are not directly
1186 consumed by ACPI CA, the header definitions are useful for ACPI
1187 device drivers.
1188
1189 Integrated resource descriptor fixes posted to the Linux ACPI
1190 list.  This included checks for minimum descriptor length, and
1191 support for trailing NULL strings within descriptors that have
1192 optional string elements.
1193
1194 Code and Data Size: Current and previous core subsystem library
1195 sizes are shown below.  These are the code and data sizes for the
1196 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1197 these values do not include any ACPI driver or OSPM code.  The
1198 debug version of the code includes the debug output trace
1199 mechanism and has a much larger code and data size.  Note that
1200 these values will vary depending on the efficiency of the
1201 compiler
1202 and the compiler options used during generation.
1203
1204   Previous Release (20030918):
1205     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
1206     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
1207   Current Release:
1208     Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
1209     Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
1210
1211
1212 2) iASL Compiler:
1213
1214 Implemented detection of non-ASCII characters within the input
1215 source ASL file.  This catches attempts to compile binary (AML)
1216 files early in the compile, with an informative error message.
1217
1218 Fixed a problem where the disassembler would fault if the output
1219 filename could not be generated or if the output file could not
1220 be
1221 opened.
1222
1223 ----------------------------------------
1224 18 September 2003.  Summary of changes for version 20030918:
1225
1226
1227 1) ACPI CA Core Subsystem:
1228
1229 Found and fixed a longstanding problem with the late execution of
1230 the various deferred AML opcodes (such as Operation Regions,
1231 Buffer Fields, Buffers, and Packages).  If the name string
1232 specified for the name of the new object placed the object in a
1233 scope other than the current scope, the initialization/execution
1234 of the opcode failed.  The solution to this problem was to
1235 implement a mechanism where the late execution of such opcodes
1236 does not attempt to lookup/create the name a second time in an
1237 incorrect scope.  This fixes the "region size computed
1238 incorrectly" problem.
1239
1240 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing
1241 a
1242 Global Lock AE_BAD_PARAMETER error.
1243
1244 Fixed several 64-bit issues with prototypes, casting and data
1245 types.
1246
1247 Removed duplicate prototype from acdisasm.h
1248
1249 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
1250
1251 Code and Data Size: Current and previous core subsystem library
1252 sizes are shown below.  These are the code and data sizes for the
1253 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1254 these values do not include any ACPI driver or OSPM code.  The
1255 debug version of the code includes the debug output trace
1256 mechanism and has a much larger code and data size.  Note that
1257 these values will vary depending on the efficiency of the
1258 compiler
1259 and the compiler options used during generation.
1260
1261   Previous Release:
1262     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
1263     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
1264   Current Release:
1265     Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
1266     Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
1267
1268
1269 2) Linux:
1270
1271 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
1272 correct sleep time in seconds.
1273
1274 ----------------------------------------
1275 14 July 2003.  Summary of changes for version 20030619:
1276
1277 1) ACPI CA Core Subsystem:
1278
1279 Parse SSDTs in order discovered, as opposed to reverse order
1280 (Hrvoje Habjanic)
1281
1282 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
1283 Klausner,
1284    Nate Lawson)
1285
1286
1287 2) Linux:
1288
1289 Dynamically allocate SDT list (suggested by Andi Kleen)
1290
1291 proc function return value cleanups (Andi Kleen)
1292
1293 Correctly handle NMI watchdog during long stalls (Andrew Morton)
1294
1295 Make it so acpismp=force works (reported by Andrew Morton)
1296
1297
1298 ----------------------------------------
1299 19 June 2003.  Summary of changes for version 20030619:
1300
1301 1) ACPI CA Core Subsystem:
1302
1303 Fix To/FromBCD, eliminating the need for an arch-specific
1304 #define.
1305
1306 Do not acquire a semaphore in the S5 shutdown path.
1307
1308 Fix ex_digits_needed for 0. (Takayoshi Kochi)
1309
1310 Fix sleep/stall code reversal. (Andi Kleen)
1311
1312 Revert a change having to do with control method calling
1313 semantics.
1314
1315 2) Linux:
1316
1317 acpiphp update (Takayoshi Kochi)
1318
1319 Export acpi_disabled for sonypi (Stelian Pop)
1320
1321 Mention acpismp=force in config help
1322
1323 Re-add acpitable.c and acpismp=force. This improves backwards
1324 compatibility and also cleans up the code to a significant
1325 degree.
1326
1327 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
1328
1329 ----------------------------------------
1330 22 May 2003.  Summary of changes for version 20030522:
1331
1332 1) ACPI CA Core Subsystem:
1333
1334 Found and fixed a reported problem where an AE_NOT_FOUND error
1335 occurred occasionally during _BST evaluation.  This turned out to
1336 be an Owner ID allocation issue where a called method did not get
1337 a new ID assigned to it.  Eventually, (after 64k calls), the
1338 Owner
1339 ID UINT16 would wraparound so that the ID would be the same as
1340 the
1341 caller's and the called method would delete the caller's
1342 namespace.
1343
1344 Implemented extended error reporting for control methods that are
1345 aborted due to a run-time exception.  Output includes the exact
1346 AML instruction that caused the method abort, a dump of the
1347 method
1348 locals and arguments at the time of the abort, and a trace of all
1349 nested control method calls.
1350
1351 Modified the interpreter to allow the creation of buffers of zero
1352 length from the AML code. Implemented new code to ensure that no
1353 attempt is made to actually allocate a memory buffer (of length
1354 zero) - instead, a simple buffer object with a NULL buffer
1355 pointer
1356 and length zero is created.  A warning is no longer issued when
1357 the AML attempts to create a zero-length buffer.
1358
1359 Implemented a workaround for the "leading asterisk issue" in
1360 _HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
1361 asterisk is automatically removed if present in any HID, UID, or
1362 CID strings.  The iASL compiler will still flag this asterisk as
1363 an error, however.
1364
1365 Implemented full support for _CID methods that return a package
1366 of
1367 multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo()
1368 interface
1369 now additionally returns a device _CID list if present.  This
1370 required a change to the external interface in order to pass an
1371 ACPI_BUFFER object as a parameter since the _CID list is of
1372 variable length.
1373
1374 Fixed a problem with the new AE_SAME_HANDLER exception where
1375 handler initialization code did not know about this exception.
1376
1377 Code and Data Size: Current and previous core subsystem library
1378 sizes are shown below.  These are the code and data sizes for the
1379 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
1380 these values do not include any ACPI driver or OSPM code.  The
1381 debug version of the code includes the debug output trace
1382 mechanism and has a much larger code and data size.  Note that
1383 these values will vary depending on the efficiency of the
1384 compiler
1385 and the compiler options used during generation.
1386
1387   Previous Release (20030509):
1388     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
1389     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
1390   Current Release:
1391     Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
1392     Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
1393
1394
1395 2) Linux:
1396
1397 Fixed a bug in which we would reinitialize the ACPI interrupt
1398 after it was already working, thus disabling all ACPI and the
1399 IRQs
1400 for any other device sharing the interrupt. (Thanks to Stian
1401 Jordet)
1402
1403 Toshiba driver update (John Belmonte)
1404
1405 Return only 0 or 1 for our interrupt handler status (Andrew
1406 Morton)
1407
1408
1409 3) iASL Compiler:
1410
1411 Fixed a reported problem where multiple (nested) ElseIf()
1412 statements were not handled correctly by the compiler, resulting
1413 in incorrect warnings and incorrect AML code.  This was a problem
1414 in both the ASL parser and the code generator.
1415
1416
1417 4) Documentation:
1418
1419 Added changes to existing interfaces, new exception codes, and
1420 new
1421 text concerning reference count object management versus garbage
1422 collection.
1423
1424 ----------------------------------------
1425 09 May 2003.  Summary of changes for version 20030509.
1426
1427
1428 1) ACPI CA Core Subsystem:
1429
1430 Changed the subsystem initialization sequence to hold off
1431 installation of address space handlers until the hardware has
1432 been
1433 initialized and the system has entered ACPI mode.  This is
1434 because
1435 the installation of space handlers can cause _REG methods to be
1436 run.  Previously, the _REG methods could potentially be run
1437 before
1438 ACPI mode was enabled.
1439
1440 Fixed some memory leak issues related to address space handler
1441 and
1442 notify handler installation.  There were some problems with the
1443 reference count mechanism caused by the fact that the handler
1444 objects are shared across several namespace objects.
1445
1446 Fixed a reported problem where reference counts within the
1447 namespace were not properly updated when named objects created by
1448 method execution were deleted.
1449
1450 Fixed a reported problem where multiple SSDTs caused a deletion
1451 issue during subsystem termination.  Restructured the table data
1452 structures to simplify the linked lists and the related code.
1453
1454 Fixed a problem where the table ID associated with secondary
1455 tables (SSDTs) was not being propagated into the namespace
1456 objects
1457 created by those tables.  This would only present a problem for
1458 tables that are unloaded at run-time, however.
1459
1460 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
1461 type as the length parameter (instead of UINT32).
1462
1463 Solved a long-standing problem where an ALREADY_EXISTS error
1464 appears on various systems.  This problem could happen when there
1465 are multiple PCI_Config operation regions under a single PCI root
1466 bus.  This doesn't happen very frequently, but there are some
1467 systems that do this in the ASL.
1468
1469 Fixed a reported problem where the internal DeleteNode function
1470 was incorrectly handling the case where a namespace node was the
1471 first in the parent's child list, and had additional peers (not
1472 the only child, but first in the list of children.)
1473
1474 Code and Data Size: Current core subsystem library sizes are
1475 shown
1476 below.  These are the code and data sizes for the acpica.lib
1477 produced by the Microsoft Visual C++ 6.0 compiler, and these
1478 values do not include any ACPI driver or OSPM code.  The debug
1479 version of the code includes the debug output trace mechanism and
1480 has a much larger code and data size.  Note that these values
1481 will
1482 vary depending on the efficiency of the compiler and the compiler
1483 options used during generation.
1484
1485   Previous Release
1486     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
1487     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
1488   Current Release:
1489     Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
1490     Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
1491
1492
1493 2) Linux:
1494
1495 Allow ":" in OS override string (Ducrot Bruno)
1496
1497 Kobject fix (Greg KH)
1498
1499
1500 3 iASL Compiler/Disassembler:
1501
1502 Fixed a problem in the generation of the C source code files (AML
1503 is emitted in C source statements for BIOS inclusion) where the
1504 Ascii dump that appears within a C comment at the end of each
1505 line
1506 could cause a compile time error if the AML sequence happens to
1507 have an open comment or close comment sequence embedded.
1508
1509
1510 ----------------------------------------
1511 24 April 2003.  Summary of changes for version 20030424.
1512
1513
1514 1) ACPI CA Core Subsystem:
1515
1516 Support for big-endian systems has been implemented.  Most of the
1517 support has been invisibly added behind big-endian versions of
1518 the
1519 ACPI_MOVE_* macros.
1520
1521 Fixed a problem in AcpiHwDisableGpeBlock() and
1522 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
1523 low level hardware write routine.  The offset parameter was
1524 actually eliminated from the low level read/write routines
1525 because
1526 they had become obsolete.
1527
1528 Fixed a problem where a handler object was deleted twice during
1529 the removal of a fixed event handler.
1530
1531
1532 2) Linux:
1533
1534 A fix for SMP systems with link devices was contributed by
1535 Compaq's Dan Zink.
1536
1537 (2.5) Return whether we handled the interrupt in our IRQ handler.
1538 (Linux ISRs no longer return void, so we can propagate the
1539 handler
1540 return value from the ACPI CA core back to the OS.)
1541
1542
1543 3) Documentation:
1544
1545 The ACPI CA Programmer Reference has been updated to reflect new
1546 interfaces and changes to existing interfaces.
1547
1548 ----------------------------------------
1549 28 March 2003.  Summary of changes for version 20030328.
1550
1551 1) ACPI CA Core Subsystem:
1552
1553 The GPE Block Device support has been completed.  New interfaces
1554 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
1555 interfaces (enable, disable, clear, getstatus) have been split
1556 into separate interfaces for Fixed Events and General Purpose
1557 Events (GPEs) in order to support GPE Block Devices properly.
1558
1559 Fixed a problem where the error message "Failed to acquire
1560 semaphore" would appear during operations on the embedded
1561 controller (EC).
1562
1563 Code and Data Size: Current core subsystem library sizes are
1564 shown
1565 below.  These are the code and data sizes for the acpica.lib
1566 produced by the Microsoft Visual C++ 6.0 compiler, and these
1567 values do not include any ACPI driver or OSPM code.  The debug
1568 version of the code includes the debug output trace mechanism and
1569 has a much larger code and data size.  Note that these values
1570 will
1571 vary depending on the efficiency of the compiler and the compiler
1572 options used during generation.
1573
1574   Previous Release
1575     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
1576     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
1577   Current Release:
1578     Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
1579     Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
1580
1581
1582 ----------------------------------------
1583 28 February 2003.  Summary of changes for version 20030228.
1584
1585
1586 1) ACPI CA Core Subsystem:
1587
1588 The GPE handling and dispatch code has been completely overhauled
1589 in preparation for support of GPE Block Devices (ID ACPI0006).
1590 This affects internal data structures and code only; there should
1591 be no differences visible externally.  One new file has been
1592 added, evgpeblk.c
1593
1594 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
1595 fields that are used to determine the GPE block lengths.  The
1596 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
1597 structures are ignored.  This is per the ACPI specification but
1598 it
1599 isn't very clear.  The full 256 Block 0/1 GPEs are now supported
1600 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to
1601 128).
1602
1603 In the SCI interrupt handler, removed the read of the PM1_CONTROL
1604 register to look at the SCI_EN bit.  On some machines, this read
1605 causes an SMI event and greatly slows down SCI events.  (This may
1606 in fact be the cause of slow battery status response on some
1607 systems.)
1608
1609 Fixed a problem where a store of a NULL string to a package
1610 object
1611 could cause the premature deletion of the object.  This was seen
1612 during execution of the battery _BIF method on some systems,
1613 resulting in no battery data being returned.
1614
1615 Added AcpiWalkResources interface to simplify parsing of resource
1616 lists.
1617
1618 Code and Data Size: Current core subsystem library sizes are
1619 shown
1620 below.  These are the code and data sizes for the acpica.lib
1621 produced by the Microsoft Visual C++ 6.0 compiler, and these
1622 values do not include any ACPI driver or OSPM code.  The debug
1623 version of the code includes the debug output trace mechanism and
1624 has a much larger code and data size.  Note that these values
1625 will
1626 vary depending on the efficiency of the compiler and the compiler
1627 options used during generation.
1628
1629   Previous Release
1630     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1631     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1632   Current Release:
1633     Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
1634     Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
1635
1636
1637 2) Linux
1638
1639 S3 fixes (Ole Rohne)
1640
1641 Update ACPI PHP driver with to use new acpi_walk_resource API
1642 (Bjorn Helgaas)
1643
1644 Add S4BIOS support (Pavel Machek)
1645
1646 Map in entire table before performing checksum (John Stultz)
1647
1648 Expand the mem= cmdline to allow the specification of reserved
1649 and
1650 ACPI DATA blocks (Pavel Machek)
1651
1652 Never use ACPI on VISWS
1653
1654 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
1655
1656 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
1657 causing us to think that some systems support C2 when they really
1658 don't.
1659
1660 Do not count processor objects for non-present CPUs (Thanks to
1661 Dominik Brodowski)
1662
1663
1664 3) iASL Compiler:
1665
1666 Fixed a problem where ASL include files could not be found and
1667 opened.
1668
1669 Added support for the _PDC reserved name.
1670
1671
1672 ----------------------------------------
1673 22 January 2003.  Summary of changes for version 20030122.
1674
1675
1676 1) ACPI CA Core Subsystem:
1677
1678 Added a check for constructs of the form:  Store (Local0, Local0)
1679 where Local0 is not initialized.  Apparently, some BIOS
1680 programmers believe that this is a NOOP.  Since this store
1681 doesn't
1682 do anything anyway, the new prototype behavior will ignore this
1683 error.  This is a case where we can relax the strict checking in
1684 the interpreter in the name of compatibility.
1685
1686
1687 2) Linux
1688
1689 The AcpiSrc Source Conversion Utility has been released with the
1690 Linux package for the first time.  This is the utility that is
1691 used to convert the ACPI CA base source code to the Linux
1692 version.
1693
1694 (Both) Handle P_BLK lengths shorter than 6 more gracefully
1695
1696 (Both) Move more headers to include/acpi, and delete an unused
1697 header.
1698
1699 (Both) Move drivers/acpi/include directory to include/acpi
1700
1701 (Both) Boot functions don't use cmdline, so don't pass it around
1702
1703 (Both) Remove include of unused header (Adrian Bunk)
1704
1705 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
1706 the
1707 former now also includes the latter, acpiphp.h only needs the
1708 one,
1709 now.
1710
1711 (2.5) Make it possible to select method of bios restoring after
1712 S3
1713 resume. [=> no more ugly ifdefs] (Pavel Machek)
1714
1715 (2.5) Make proc write interfaces work (Pavel Machek)
1716
1717 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
1718
1719 (2.5) Break out ACPI Perf code into its own module, under cpufreq
1720 (Dominik Brodowski)
1721
1722 (2.4) S4BIOS support (Ducrot Bruno)
1723
1724 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
1725 Visinoni)
1726
1727
1728 3) iASL Compiler:
1729
1730 Added support to disassemble SSDT and PSDTs.
1731
1732 Implemented support to obtain SSDTs from the Windows registry if
1733 available.
1734
1735
1736 ----------------------------------------
1737 09 January 2003.  Summary of changes for version 20030109.
1738
1739 1) ACPI CA Core Subsystem:
1740
1741 Changed the behavior of the internal Buffer-to-String conversion
1742 function.  The current ACPI specification states that the
1743 contents
1744 of the buffer are "converted to a string of two-character
1745 hexadecimal numbers, each separated by a space".  Unfortunately,
1746 this definition is not backwards compatible with existing ACPI
1747 1.0
1748 implementations (although the behavior was not defined in the
1749 ACPI
1750 1.0 specification).  The new behavior simply copies data from the
1751 buffer to the string until a null character is found or the end
1752 of
1753 the buffer is reached.  The new String object is always null
1754 terminated.  This problem was seen during the generation of _BIF
1755 battery data where incorrect strings were returned for battery
1756 type, etc.  This will also require an errata to the ACPI
1757 specification.
1758
1759 Renamed all instances of NATIVE_UINT and NATIVE_INT to
1760 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
1761
1762 Copyright in all module headers (both Linux and non-Linux) has be
1763 updated to 2003.
1764
1765 Code and Data Size: Current core subsystem library sizes are
1766 shown
1767 below.  These are the code and data sizes for the acpica.lib
1768 produced by the Microsoft Visual C++ 6.0 compiler, and these
1769 values do not include any ACPI driver or OSPM code.  The debug
1770 version of the code includes the debug output trace mechanism and
1771 has a much larger code and data size.  Note that these values
1772 will
1773 vary depending on the efficiency of the compiler and the compiler
1774 options used during generation.
1775
1776   Previous Release
1777     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1778     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1779   Current Release:
1780     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1781     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1782
1783
1784 2) Linux
1785
1786 Fixed an oops on module insertion/removal (Matthew Tippett)
1787
1788 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
1789
1790 (2.5) Replace pr_debug (Randy Dunlap)
1791
1792 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
1793
1794 (Both) Eliminate spawning of thread from timer callback, in favor
1795 of schedule_work()
1796
1797 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
1798
1799 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
1800
1801 (Both) Add missing statics to button.c (Pavel Machek)
1802
1803 Several changes have been made to the source code translation
1804 utility that generates the Linux Code in order to make the code
1805 more "Linux-like":
1806
1807 All typedefs on structs and unions have been removed in keeping
1808 with the Linux coding style.
1809
1810 Removed the non-Linux SourceSafe module revision number from each
1811 module header.
1812
1813 Completed major overhaul of symbols to be lowercased for linux.
1814 Doubled the number of symbols that are lowercased.
1815
1816 Fixed a problem where identifiers within procedure headers and
1817 within quotes were not fully lower cased (they were left with a
1818 starting capital.)
1819
1820 Some C macros whose only purpose is to allow the generation of 16-
1821 bit code are now completely removed in the Linux code, increasing
1822 readability and maintainability.
1823
1824 ----------------------------------------
1825
1826 12 December 2002.  Summary of changes for version 20021212.
1827
1828
1829 1) ACPI CA Core Subsystem:
1830
1831 Fixed a problem where the creation of a zero-length AML Buffer
1832 would cause a fault.
1833
1834 Fixed a problem where a Buffer object that pointed to a static
1835 AML
1836 buffer (in an ACPI table) could inadvertently be deleted, causing
1837 memory corruption.
1838
1839 Fixed a problem where a user buffer (passed in to the external
1840 ACPI CA interfaces) could be overwritten if the buffer was too
1841 small to complete the operation, causing memory corruption.
1842
1843 Fixed a problem in the Buffer-to-String conversion code where a
1844 string of length one was always returned, regardless of the size
1845 of the input Buffer object.
1846
1847 Removed the NATIVE_CHAR data type across the entire source due to
1848 lack of need and lack of consistent use.
1849
1850 Code and Data Size: Current core subsystem library sizes are
1851 shown
1852 below.  These are the code and data sizes for the acpica.lib
1853 produced by the Microsoft Visual C++ 6.0 compiler, and these
1854 values do not include any ACPI driver or OSPM code.  The debug
1855 version of the code includes the debug output trace mechanism and
1856 has a much larger code and data size.  Note that these values
1857 will
1858 vary depending on the efficiency of the compiler and the compiler
1859 options used during generation.
1860
1861   Previous Release
1862     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
1863     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
1864   Current Release:
1865     Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
1866     Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
1867
1868
1869 ----------------------------------------
1870 05 December 2002.  Summary of changes for version 20021205.
1871
1872 1) ACPI CA Core Subsystem:
1873
1874 Fixed a problem where a store to a String or Buffer object could
1875 cause corruption of the DSDT if the object type being stored was
1876 the same as the target object type and the length of the object
1877 being stored was equal to or smaller than the original (existing)
1878 target object.  This was seen to cause corruption of battery _BIF
1879 buffers if the _BIF method modified the buffer on the fly.
1880
1881 Fixed a problem where an internal error was generated if a
1882 control
1883 method invocation was used in an OperationRegion, Buffer, or
1884 Package declaration.  This was caused by the deferred parsing of
1885 the control method and thus the deferred creation of the internal
1886 method object.  The solution to this problem was to create the
1887 internal method object at the moment the method is encountered in
1888 the first pass - so that subsequent references to the method will
1889 able to obtain the required parameter count and thus properly
1890 parse the method invocation.  This problem presented itself as an
1891 AE_AML_INTERNAL during the pass 1 parse phase during table load.
1892
1893 Fixed a problem where the internal String object copy routine did
1894 not always allocate sufficient memory for the target String
1895 object
1896 and caused memory corruption.  This problem was seen to cause
1897 "Allocation already present in list!" errors as memory allocation
1898 became corrupted.
1899
1900 Implemented a new function for the evaluation of namespace
1901 objects
1902 that allows the specification of the allowable return object
1903 types.  This simplifies a lot of code that checks for a return
1904 object of one or more specific objects returned from the
1905 evaluation (such as _STA, etc.)  This may become and external
1906 function if it would be useful to ACPI-related drivers.
1907
1908 Completed another round of prefixing #defines with "ACPI_" for
1909 clarity.
1910
1911 Completed additional code restructuring to allow more modular
1912 linking for iASL compiler and AcpiExec.  Several files were split
1913 creating new files.  New files:  nsparse.c dsinit.c evgpe.c
1914
1915 Implemented an abort mechanism to terminate an executing control
1916 method via the AML debugger.  This feature is useful for
1917 debugging
1918 control methods that depend (wait) for specific hardware
1919 responses.
1920
1921 Code and Data Size: Current core subsystem library sizes are
1922 shown
1923 below.  These are the code and data sizes for the acpica.lib
1924 produced by the Microsoft Visual C++ 6.0 compiler, and these
1925 values do not include any ACPI driver or OSPM code.  The debug
1926 version of the code includes the debug output trace mechanism and
1927 has a much larger code and data size.  Note that these values
1928 will
1929 vary depending on the efficiency of the compiler and the compiler
1930 options used during generation.
1931
1932   Previous Release
1933     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
1934     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
1935   Current Release:
1936     Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
1937     Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
1938
1939
1940 2) iASL Compiler/Disassembler
1941
1942 Fixed a compiler code generation problem for "Interrupt" Resource
1943 Descriptors.  If specified in the ASL, the optional "Resource
1944 Source Index" and "Resource Source" fields were not inserted into
1945 the correct location within the AML resource descriptor, creating
1946 an invalid descriptor.
1947
1948 Fixed a disassembler problem for "Interrupt" resource
1949 descriptors.
1950 The optional "Resource Source Index" and "Resource Source" fields
1951 were ignored.
1952
1953
1954 ----------------------------------------
1955 22 November 2002.  Summary of changes for version 20021122.
1956
1957
1958 1) ACPI CA Core Subsystem:
1959
1960 Fixed a reported problem where an object stored to a Method Local
1961 or Arg was not copied to a new object during the store - the
1962 object pointer was simply copied to the Local/Arg.  This caused
1963 all subsequent operations on the Local/Arg to also affect the
1964 original source of the store operation.
1965
1966 Fixed a problem where a store operation to a Method Local or Arg
1967 was not completed properly if the Local/Arg contained a reference
1968 (from RefOf) to a named field.  The general-purpose store-to-
1969 namespace-node code is now used so that this case is handled
1970 automatically.
1971
1972 Fixed a problem where the internal object copy routine would
1973 cause
1974 a protection fault if the object being copied was a Package and
1975 contained either 1) a NULL package element or 2) a nested sub-
1976 package.
1977
1978 Fixed a problem with the GPE initialization that resulted from an
1979 ambiguity in the ACPI specification.  One section of the
1980 specification states that both the address and length of the GPE
1981 block must be zero if the block is not supported.  Another
1982 section
1983 implies that only the address need be zero if the block is not
1984 supported.  The code has been changed so that both the address
1985 and
1986 the length must be non-zero to indicate a valid GPE block (i.e.,
1987 if either the address or the length is zero, the GPE block is
1988 invalid.)
1989
1990 Code and Data Size: Current core subsystem library sizes are
1991 shown
1992 below.  These are the code and data sizes for the acpica.lib
1993 produced by the Microsoft Visual C++ 6.0 compiler, and these
1994 values do not include any ACPI driver or OSPM code.  The debug
1995 version of the code includes the debug output trace mechanism and
1996 has a much larger code and data size.  Note that these values
1997 will
1998 vary depending on the efficiency of the compiler and the compiler
1999 options used during generation.
2000
2001   Previous Release
2002     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
2003     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
2004   Current Release:
2005     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
2006     Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
2007
2008
2009 2) Linux
2010
2011 Cleaned up EC driver. Exported an external EC read/write
2012 interface. By going through this, other drivers (most notably
2013 sonypi) will be able to serialize access to the EC.
2014
2015
2016 3) iASL Compiler/Disassembler
2017
2018 Implemented support to optionally generate include files for both
2019 ASM and C (the -i switch).  This simplifies BIOS development by
2020 automatically creating include files that contain external
2021 declarations for the symbols that are created within the
2022 (optionally generated) ASM and C AML source files.
2023
2024
2025 ----------------------------------------
2026 15 November 2002.  Summary of changes for version 20021115.
2027
2028 1) ACPI CA Core Subsystem:
2029
2030 Fixed a memory leak problem where an error during resolution of
2031 method arguments during a method invocation from another method
2032 failed to cleanup properly by deleting all successfully resolved
2033 argument objects.
2034
2035 Fixed a problem where the target of the Index() operator was not
2036 correctly constructed if the source object was a package.  This
2037 problem has not been detected because the use of a target operand
2038 with Index() is very rare.
2039
2040 Fixed a problem with the Index() operator where an attempt was
2041 made to delete the operand objects twice.
2042
2043 Fixed a problem where an attempt was made to delete an operand
2044 twice during execution of the CondRefOf() operator if the target
2045 did not exist.
2046
2047 Implemented the first of perhaps several internal create object
2048 functions that create and initialize a specific object type.
2049 This
2050 consolidates duplicated code wherever the object is created, thus
2051 shrinking the size of the subsystem.
2052
2053 Implemented improved debug/error messages for errors that occur
2054 during nested method invocations.  All executing method pathnames
2055 are displayed (with the error) as the call stack is unwound -
2056 thus
2057 simplifying debug.
2058
2059 Fixed a problem introduced in the 10/02 release that caused
2060 premature deletion of a buffer object if a buffer was used as an
2061 ASL operand where an integer operand is required (Thus causing an
2062 implicit object conversion from Buffer to Integer.)  The change
2063 in
2064 the 10/02 release was attempting to fix a memory leak (albeit
2065 incorrectly.)
2066
2067 Code and Data Size: Current core subsystem library sizes are
2068 shown
2069 below.  These are the code and data sizes for the acpica.lib
2070 produced by the Microsoft Visual C++ 6.0 compiler, and these
2071 values do not include any ACPI driver or OSPM code.  The debug
2072 version of the code includes the debug output trace mechanism and
2073 has a much larger code and data size.  Note that these values
2074 will
2075 vary depending on the efficiency of the compiler and the compiler
2076 options used during generation.
2077
2078   Previous Release
2079     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
2080     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
2081   Current Release:
2082     Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
2083     Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
2084
2085
2086 2) Linux
2087
2088 Changed the implementation of the ACPI semaphores to use down()
2089 instead of down_interruptable().  It is important that the
2090 execution of ACPI control methods not be interrupted by signals.
2091 Methods must run to completion, or the system may be left in an
2092 unknown/unstable state.
2093
2094 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not
2095 set.
2096 (Shawn Starr)
2097
2098
2099 3) iASL Compiler/Disassembler
2100
2101
2102 Changed the default location of output files.  All output files
2103 are now placed in the current directory by default instead of in
2104 the directory of the source file.  This change may affect some
2105 existing makefiles, but it brings the behavior of the compiler in
2106 line with other similar tools.  The location of the output files
2107 can be overridden with the -p command line switch.
2108
2109
2110 ----------------------------------------
2111 11 November 2002.  Summary of changes for version 20021111.
2112
2113
2114 0) ACPI Specification 2.0B is released and is now available at:
2115 http://www.acpi.info/index.html
2116
2117
2118 1) ACPI CA Core Subsystem:
2119
2120 Implemented support for the ACPI 2.0 SMBus Operation Regions.
2121 This includes the early detection and handoff of the request to
2122 the SMBus region handler (avoiding all of the complex field
2123 support code), and support for the bidirectional return packet
2124 from an SMBus write operation.  This paves the way for the
2125 development of SMBus drivers in each host operating system.
2126
2127 Fixed a problem where the semaphore WAIT_FOREVER constant was
2128 defined as 32 bits, but must be 16 bits according to the ACPI
2129 specification.  This had the side effect of causing ASL
2130 Mutex/Event timeouts even though the ASL code requested a wait
2131 forever.  Changed all internal references to the ACPI timeout
2132 parameter to 16 bits to prevent future problems.  Changed the
2133 name
2134 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
2135
2136 Code and Data Size: Current core subsystem library sizes are
2137 shown
2138 below.  These are the code and data sizes for the acpica.lib
2139 produced by the Microsoft Visual C++ 6.0 compiler, and these
2140 values do not include any ACPI driver or OSPM code.  The debug
2141 version of the code includes the debug output trace mechanism and
2142 has a much larger code and data size.  Note that these values
2143 will
2144 vary depending on the efficiency of the compiler and the compiler
2145 options used during generation.
2146
2147   Previous Release
2148     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
2149     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
2150   Current Release:
2151     Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
2152     Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
2153
2154
2155 2) Linux
2156
2157 Module loading/unloading fixes (John Cagle)
2158
2159
2160 3) iASL Compiler/Disassembler
2161
2162 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
2163
2164 Implemented support for the disassembly of all SMBus protocol
2165 keywords (SMBQuick, SMBWord, etc.)
2166
2167 ----------------------------------------
2168 01 November 2002.  Summary of changes for version 20021101.
2169
2170
2171 1) ACPI CA Core Subsystem:
2172
2173 Fixed a problem where platforms that have a GPE1 block but no
2174 GPE0
2175 block were not handled correctly.  This resulted in a "GPE
2176 overlap" error message.  GPE0 is no longer required.
2177
2178 Removed code added in the previous release that inserted nodes
2179 into the namespace in alphabetical order.  This caused some side-
2180 effects on various machines.  The root cause of the problem is
2181 still under investigation since in theory, the internal ordering
2182 of the namespace nodes should not matter.
2183
2184
2185 Enhanced error reporting for the case where a named object is not
2186 found during control method execution.  The full ACPI namepath
2187 (name reference) of the object that was not found is displayed in
2188 this case.
2189
2190 Note: as a result of the overhaul of the namespace object types
2191 in
2192 the previous release, the namespace nodes for the predefined
2193 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
2194 instead of ACPI_TYPE_ANY.  This simplifies the namespace
2195 management code but may affect code that walks the namespace tree
2196 looking for specific object types.
2197
2198 Code and Data Size: Current core subsystem library sizes are
2199 shown
2200 below.  These are the code and data sizes for the acpica.lib
2201 produced by the Microsoft Visual C++ 6.0 compiler, and these
2202 values do not include any ACPI driver or OSPM code.  The debug
2203 version of the code includes the debug output trace mechanism and
2204 has a much larger code and data size.  Note that these values
2205 will
2206 vary depending on the efficiency of the compiler and the compiler
2207 options used during generation.
2208
2209   Previous Release
2210     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
2211     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
2212   Current Release:
2213     Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
2214     Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
2215
2216
2217 2) Linux
2218
2219 Fixed a problem introduced in the previous release where the
2220 Processor and Thermal objects were not recognized and installed
2221 in
2222 /proc.  This was related to the scope type change described
2223 above.
2224
2225
2226 3) iASL Compiler/Disassembler
2227
2228 Implemented the -g option to get all of the required ACPI tables
2229 from the registry and save them to files (Windows version of the
2230 compiler only.)  The required tables are the FADT, FACS, and
2231 DSDT.
2232
2233 Added ACPI table checksum validation during table disassembly in
2234 order to catch corrupted tables.
2235
2236
2237 ----------------------------------------
2238 22 October 2002.  Summary of changes for version 20021022.
2239
2240 1) ACPI CA Core Subsystem:
2241
2242 Implemented a restriction on the Scope operator that the target
2243 must already exist in the namespace at the time the operator is
2244 encountered (during table load or method execution).  In other
2245 words, forward references are not allowed and Scope() cannot
2246 create a new object. This changes the previous behavior where the
2247 interpreter would create the name if not found.  This new
2248 behavior
2249 correctly enables the search-to-root algorithm during namespace
2250 lookup of the target name.  Because of this upsearch, this fixes
2251 the known Compaq _SB_.OKEC problem and makes both the AML
2252 interpreter and iASL compiler compatible with other ACPI
2253 implementations.
2254
2255 Completed a major overhaul of the internal ACPI object types for
2256 the ACPI Namespace and the associated operand objects.  Many of
2257 these types had become obsolete with the introduction of the two-
2258 pass namespace load.  This cleanup simplifies the code and makes
2259 the entire namespace load mechanism much clearer and easier to
2260 understand.
2261
2262 Improved debug output for tracking scope opening/closing to help
2263 diagnose scoping issues.  The old scope name as well as the new
2264 scope name are displayed.  Also improved error messages for
2265 problems with ASL Mutex objects and error messages for GPE
2266 problems.
2267
2268 Cleaned up the namespace dump code, removed obsolete code.
2269
2270 All string output (for all namespace/object dumps) now uses the
2271 common ACPI string output procedure which handles escapes
2272 properly
2273 and does not emit non-printable characters.
2274
2275 Fixed some issues with constants in the 64-bit version of the
2276 local C library (utclib.c)
2277
2278
2279 2) Linux
2280
2281 EC Driver:  No longer attempts to acquire the Global Lock at
2282 interrupt level.
2283
2284
2285 3) iASL Compiler/Disassembler
2286
2287 Implemented ACPI 2.0B grammar change that disallows all Type 1
2288 and
2289 2 opcodes outside of a control method.  This means that the
2290 "executable" operators (versus the "namespace" operators) cannot
2291 be used at the table level; they can only be used within a
2292 control
2293 method.
2294
2295 Implemented the restriction on the Scope() operator where the
2296 target must already exist in the namespace at the time the
2297 operator is encountered (during ASL compilation). In other words,
2298 forward references are not allowed and Scope() cannot create a
2299 new
2300 object.  This makes the iASL compiler compatible with other ACPI
2301 implementations and makes the Scope() implementation adhere to
2302 the
2303 ACPI specification.
2304
2305 Fixed a problem where namepath optimization for the Alias
2306 operator
2307 was optimizing the wrong path (of the two namepaths.)  This
2308 caused
2309 a "Missing alias link" error message.
2310
2311 Fixed a problem where an "unknown reserved name" warning could be
2312 incorrectly generated for names like "_SB" when the trailing
2313 underscore is not used in the original ASL.
2314
2315 Fixed a problem where the reserved name check did not handle
2316 NamePaths with multiple NameSegs correctly.  The first nameseg of
2317 the NamePath was examined instead of the last NameSeg.
2318
2319
2320 ----------------------------------------
2321
2322 02 October 2002.  Summary of changes for this release.
2323
2324
2325 1) ACPI CA Core Subsystem version 20021002:
2326
2327 Fixed a problem where a store/copy of a string to an existing
2328 string did not always set the string length properly in the
2329 String
2330 object.
2331
2332 Fixed a reported problem with the ToString operator where the
2333 behavior was identical to the ToHexString operator instead of
2334 just
2335 simply converting a raw buffer to a string data type.
2336
2337 Fixed a problem where CopyObject and the other "explicit"
2338 conversion operators were not updating the internal namespace
2339 node
2340 type as part of the store operation.
2341
2342 Fixed a memory leak during implicit source operand conversion
2343 where the original object was not deleted if it was converted to
2344 a
2345 new object of a different type.
2346
2347 Enhanced error messages for all problems associated with
2348 namespace
2349 lookups.  Common procedure generates and prints the lookup name
2350 as
2351 well as the formatted status.
2352
2353 Completed implementation of a new design for the Alias support
2354 within the namespace.  The existing design did not handle the
2355 case
2356 where a new object was assigned to one of the two names due to
2357 the
2358 use of an explicit conversion operator, resulting in the two
2359 names
2360 pointing to two different objects.  The new design simply points
2361 the Alias name to the original name node - not to the object.
2362 This results in a level of indirection that must be handled in
2363 the
2364 name resolution mechanism.
2365
2366 Code and Data Size: Current core subsystem library sizes are
2367 shown
2368 below.  These are the code and data sizes for the acpica.lib
2369 produced by the Microsoft Visual C++ 6.0 compiler, and these
2370 values do not include any ACPI driver or OSPM code.  The debug
2371 version of the code includes the debug output trace mechanism and
2372 has a larger code and data size.  Note that these values will
2373 vary
2374 depending on the efficiency of the compiler and the compiler
2375 options used during generation.
2376
2377   Previous Release
2378     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
2379     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
2380   Current Release:
2381     Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
2382     Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
2383
2384
2385 2) Linux
2386
2387 Initialize thermal driver's timer before it is used. (Knut
2388 Neumann)
2389
2390 Allow handling negative celsius values. (Kochi Takayoshi)
2391
2392 Fix thermal management and make trip points. R/W (Pavel Machek)
2393
2394 Fix /proc/acpi/sleep. (P. Christeas)
2395
2396 IA64 fixes. (David Mosberger)
2397
2398 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
2399
2400 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
2401 Brodowski)
2402
2403
2404 3) iASL Compiler/Disassembler
2405
2406 Clarified some warning/error messages.
2407
2408
2409 ----------------------------------------
2410 18 September 2002.  Summary of changes for this release.
2411
2412
2413 1) ACPI CA Core Subsystem version 20020918:
2414
2415 Fixed a reported problem with reference chaining (via the Index()
2416 and RefOf() operators) in the ObjectType() and SizeOf()
2417 operators.
2418 The definition of these operators includes the dereferencing of
2419 all chained references to return information on the base object.
2420
2421 Fixed a problem with stores to indexed package elements - the
2422 existing code would not complete the store if an "implicit
2423 conversion" was not performed.  In other words, if the existing
2424 object (package element) was to be replaced completely, the code
2425 didn't handle this case.
2426
2427 Relaxed typechecking on the ASL "Scope" operator to allow the
2428 target name to refer to an object of type Integer, String, or
2429 Buffer, in addition to the scoping object types (Device,
2430 predefined Scopes, Processor, PowerResource, and ThermalZone.)
2431 This allows existing AML code that has workarounds for a bug in
2432 Windows to function properly.  A warning is issued, however.
2433 This
2434 affects both the AML interpreter and the iASL compiler. Below is
2435 an example of this type of ASL code:
2436
2437       Name(DEB,0x00)
2438       Scope(DEB)
2439       {
2440
2441 Fixed some reported problems with 64-bit integer support in the
2442 local implementation of C library functions (clib.c)
2443
2444
2445 2) Linux
2446
2447 Use ACPI fix map region instead of IOAPIC region, since it is
2448 undefined in non-SMP.
2449
2450 Ensure that the SCI has the proper polarity and trigger, even on
2451 systems that do not have an interrupt override entry in the MADT.
2452
2453 2.5 big driver reorganization (Pat Mochel)
2454
2455 Use early table mapping code from acpitable.c (Andi Kleen)
2456
2457 New blacklist entries (Andi Kleen)
2458
2459 Blacklist improvements. Split blacklist code out into a separate
2460 file. Move checking the blacklist to very early. Previously, we
2461 would use ACPI tables, and then halfway through init, check the
2462 blacklist -- too late. Now, it's early enough to completely fall-
2463 back to non-ACPI.
2464
2465
2466 3) iASL Compiler/Disassembler version 20020918:
2467
2468 Fixed a problem where the typechecking code didn't know that an
2469 alias could point to a method.  In other words, aliases were not
2470 being dereferenced during typechecking.
2471
2472
2473 ----------------------------------------
2474 29 August 2002.  Summary of changes for this release.
2475
2476 1) ACPI CA Core Subsystem Version 20020829:
2477
2478 If the target of a Scope() operator already exists, it must be an
2479 object type that actually opens a scope -- such as a Device,
2480 Method, Scope, etc.  This is a fatal runtime error.  Similar
2481 error
2482 check has been added to the iASL compiler also.
2483
2484 Tightened up the namespace load to disallow multiple names in the
2485 same scope.  This previously was allowed if both objects were of
2486 the same type.  (i.e., a lookup was the same as entering a new
2487 name).
2488
2489
2490 2) Linux
2491
2492 Ensure that the ACPI interrupt has the proper trigger and
2493 polarity.
2494
2495 local_irq_disable is extraneous. (Matthew Wilcox)
2496
2497 Make "acpi=off" actually do what it says, and not use the ACPI
2498 interpreter *or* the tables.
2499
2500 Added arch-neutral support for parsing SLIT and SRAT tables
2501 (Kochi
2502 Takayoshi)
2503
2504
2505 3) iASL Compiler/Disassembler  Version 20020829:
2506
2507 Implemented namepath optimization for name declarations.  For
2508 example, a declaration like "Method (\_SB_.ABCD)" would get
2509 optimized to "Method (ABCD)" if the declaration is within the
2510 \_SB_ scope.  This optimization is in addition to the named
2511 reference path optimization first released in the previous
2512 version. This would seem to complete all possible optimizations
2513 for namepaths within the ASL/AML.
2514
2515 If the target of a Scope() operator already exists, it must be an
2516 object type that actually opens a scope -- such as a Device,
2517 Method, Scope, etc.
2518
2519 Implemented a check and warning for unreachable code in the same
2520 block below a Return() statement.
2521
2522 Fixed a problem where the listing file was not generated if the
2523 compiler aborted if the maximum error count was exceeded (200).
2524
2525 Fixed a problem where the typechecking of method return values
2526 was
2527 broken.  This includes the check for a return value when the
2528 method is invoked as a TermArg (a return value is expected.)
2529
2530 Fixed a reported problem where EOF conditions during a quoted
2531 string or comment caused a fault.
2532
2533
2534 ----------------------------------------
2535 15 August 2002.  Summary of changes for this release.
2536
2537 1) ACPI CA Core Subsystem Version 20020815:
2538
2539 Fixed a reported problem where a Store to a method argument that
2540 contains a reference did not perform the indirect store
2541 correctly.
2542 This problem was created during the conversion to the new
2543 reference object model - the indirect store to a method argument
2544 code was not updated to reflect the new model.
2545
2546 Reworked the ACPI mode change code to better conform to ACPI 2.0,
2547 handle corner cases, and improve code legibility (Kochi
2548 Takayoshi)
2549
2550 Fixed a problem with the pathname parsing for the carat (^)
2551 prefix.  The heavy use of the carat operator by the new namepath
2552 optimization in the iASL compiler uncovered a problem with the
2553 AML
2554 interpreter handling of this prefix.  In the case where one or
2555 more carats precede a single nameseg, the nameseg was treated as
2556 standalone and the search rule (to root) was inadvertently
2557 applied.  This could cause both the iASL compiler and the
2558 interpreter to find the wrong object or to miss the error that
2559 should occur if the object does not exist at that exact pathname.
2560
2561 Found and fixed the problem where the HP Pavilion DSDT would not
2562 load.  This was a relatively minor tweak to the table loading
2563 code
2564 (a problem caused by the unexpected encounter with a method
2565 invocation not within a control method), but it does not solve
2566 the
2567 overall issue of the execution of AML code at the table level.
2568 This investigation is still ongoing.
2569
2570 Code and Data Size: Current core subsystem library sizes are
2571 shown
2572 below.  These are the code and data sizes for the acpica.lib
2573 produced by the Microsoft Visual C++ 6.0 compiler, and these
2574 values do not include any ACPI driver or OSPM code.  The debug
2575 version of the code includes the debug output trace mechanism and
2576 has a larger code and data size.  Note that these values will
2577 vary
2578 depending on the efficiency of the compiler and the compiler
2579 options used during generation.
2580
2581   Previous Release
2582     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
2583     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
2584   Current Release:
2585     Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
2586     Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
2587
2588
2589 2) Linux
2590
2591 Remove redundant slab.h include (Brad Hards)
2592
2593 Fix several bugs in thermal.c (Herbert Nachtnebel)
2594
2595 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
2596
2597 Change acpi_system_suspend to use updated irq functions (Pavel
2598 Machek)
2599
2600 Export acpi_get_firmware_table (Matthew Wilcox)
2601
2602 Use proper root proc entry for ACPI (Kochi Takayoshi)
2603
2604 Fix early-boot table parsing (Bjorn Helgaas)
2605
2606
2607 3) iASL Compiler/Disassembler
2608
2609 Reworked the compiler options to make them more consistent and to
2610 use two-letter options where appropriate.  We were running out of
2611 sensible letters.   This may break some makefiles, so check the
2612 current options list by invoking the compiler with no parameters.
2613
2614 Completed the design and implementation of the ASL namepath
2615 optimization option for the compiler.  This option optimizes all
2616 references to named objects to the shortest possible path.  The
2617 first attempt tries to utilize a single nameseg (4 characters)
2618 and
2619 the "search-to-root" algorithm used by the interpreter.  If that
2620 cannot be used (because either the name is not in the search path
2621 or there is a conflict with another object with the same name),
2622 the pathname is optimized using the carat prefix (usually a
2623 shorter string than specifying the entire path from the root.)
2624
2625 Implemented support to obtain the DSDT from the Windows registry
2626 (when the disassembly option is specified with no input file).
2627 Added this code as the implementation for AcpiOsTableOverride in
2628 the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
2629 utility) to scan memory for the DSDT to the AcpiOsTableOverride
2630 function in the DOS OSL to make the disassembler truly OS
2631 independent.
2632
2633 Implemented a new option to disassemble and compile in one step.
2634 When used without an input filename, this option will grab the
2635 DSDT from the local machine, disassemble it, and compile it in
2636 one
2637 step.
2638
2639 Added a warning message for invalid escapes (a backslash followed
2640 by any character other than the allowable escapes).  This catches
2641 the quoted string error "\_SB_" (which should be "\\_SB_" ).
2642 Also, there are numerous instances in the ACPI specification
2643 where
2644 this error occurs.
2645
2646 Added a compiler option to disable all optimizations.  This is
2647 basically the "compatibility mode" because by using this option,
2648 the AML code will come out exactly the same as other ASL
2649 compilers.
2650
2651 Added error messages for incorrectly ordered dependent resource
2652 functions.  This includes: missing EndDependentFn macro at end of
2653 dependent resource list, nested dependent function macros (both
2654 start and end), and missing StartDependentFn macro.  These are
2655 common errors that should be caught at compile time.
2656
2657 Implemented _OSI support for the disassembler and compiler.  _OSI
2658 must be included in the namespace for proper disassembly (because
2659 the disassembler must know the number of arguments.)
2660
2661 Added an "optimization" message type that is optional (off by
2662 default).  This message is used for all optimizations - including
2663 constant folding, integer optimization, and namepath
2664 optimization.
2665
2666 ----------------------------------------
2667 25 July 2002.  Summary of changes for this release.
2668
2669
2670 1) ACPI CA Core Subsystem Version 20020725:
2671
2672 The AML Disassembler has been enhanced to produce compilable ASL
2673 code and has been integrated into the iASL compiler (see below)
2674 as
2675 well as the single-step disassembly for the AML debugger and the
2676 disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
2677 resource templates and macros are fully supported.  The
2678 disassembler has been tested on over 30 different AML files,
2679 producing identical AML when the resulting disassembled ASL file
2680 is recompiled with the same ASL compiler.
2681
2682 Modified the Resource Manager to allow zero interrupts and zero
2683 dma channels during the GetCurrentResources call.  This was
2684 causing problems on some platforms.
2685
2686 Added the AcpiOsRedirectOutput interface to the OSL to simplify
2687 output redirection for the AcpiOsPrintf and AcpiOsVprintf
2688 interfaces.
2689
2690 Code and Data Size: Current core subsystem library sizes are
2691 shown
2692 below.  These are the code and data sizes for the acpica.lib
2693 produced by the Microsoft Visual C++ 6.0 compiler, and these
2694 values do not include any ACPI driver or OSPM code.  The debug
2695 version of the code includes the debug output trace mechanism and
2696 has a larger code and data size.  Note that these values will
2697 vary
2698 depending on the efficiency of the compiler and the compiler
2699 options used during generation.
2700
2701   Previous Release
2702     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
2703     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
2704   Current Release:
2705     Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
2706     Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
2707
2708
2709 2) Linux
2710
2711 Fixed a panic in the EC driver (Dominik Brodowski)
2712
2713 Implemented checksum of the R/XSDT itself during Linux table scan
2714 (Richard Schaal)
2715
2716
2717 3) iASL compiler
2718
2719 The AML disassembler is integrated into the compiler.  The "-d"
2720 option invokes the disassembler  to completely disassemble an
2721 input AML file, producing as output a text ASL file with the
2722 extension ".dsl" (to avoid name collisions with existing .asl
2723 source files.)  A future enhancement will allow the disassembler
2724 to obtain the BIOS DSDT from the registry under Windows.
2725
2726 Fixed a problem with the VendorShort and VendorLong resource
2727 descriptors where an invalid AML sequence was created.
2728
2729 Implemented a fix for BufferData term in the ASL parser.  It was
2730 inadvertently defined twice, allowing invalid syntax to pass and
2731 causing reduction conflicts.
2732
2733 Fixed a problem where the Ones opcode could get converted to a
2734 value of zero if "Ones" was used where a byte, word or dword
2735 value
2736 was expected.  The 64-bit value is now truncated to the correct
2737 size with the correct value.
2738
2739
2740 ----------------------------------------
2741 02 July 2002.  Summary of changes for this release.
2742
2743
2744 1) ACPI CA Core Subsystem Version 20020702:
2745
2746 The Table Manager code has been restructured to add several new
2747 features.  Tables that are not required by the core subsystem
2748 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
2749 validated in any way and are returned from AcpiGetFirmwareTable
2750 if
2751 requested.  The AcpiOsTableOverride interface is now called for
2752 each table that is loaded by the subsystem in order to allow the
2753 host to override any table it chooses.  Previously, only the DSDT
2754 could be overridden.  Added one new files, tbrsdt.c and
2755 tbgetall.c.
2756
2757 Fixed a problem with the conversion of internal package objects
2758 to
2759 external objects (when a package is returned from a control
2760 method.)  The return buffer length was set to zero instead of the
2761 proper length of the package object.
2762
2763 Fixed a reported problem with the use of the RefOf and DeRefOf
2764 operators when passing reference arguments to control methods.  A
2765 new type of Reference object is used internally for references
2766 produced by the RefOf operator.
2767
2768 Added additional error messages in the Resource Manager to
2769 explain
2770 AE_BAD_DATA errors when they occur during resource parsing.
2771
2772 Split the AcpiEnableSubsystem into two primitives to enable a
2773 finer granularity initialization sequence.  These two calls
2774 should
2775 be called in this order: AcpiEnableSubsystem (flags),
2776 AcpiInitializeObjects (flags).  The flags parameter remains the
2777 same.
2778
2779
2780 2) Linux
2781
2782 Updated the ACPI utilities module to understand the new style of
2783 fully resolved package objects that are now returned from the
2784 core
2785 subsystem.  This eliminates errors of the form:
2786
2787     ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
2788     acpi_utils-0430 [145] acpi_evaluate_reference:
2789         Invalid element in package (not a device reference)
2790
2791 The method evaluation utility uses the new buffer allocation
2792 scheme instead of calling AcpiEvaluate Object twice.
2793
2794 Added support for ECDT. This allows the use of the Embedded
2795 Controller before the namespace has been fully initialized, which
2796 is necessary for ACPI 2.0 support, and for some laptops to
2797 initialize properly. (Laptops using ECDT are still rare, so only
2798 limited testing was performed of the added functionality.)
2799
2800 Fixed memory leaks in the EC driver.
2801
2802 Eliminated a brittle code structure in acpi_bus_init().
2803
2804 Eliminated the acpi_evaluate() helper function in utils.c. It is
2805 no longer needed since acpi_evaluate_object can optionally
2806 allocate memory for the return object.
2807
2808 Implemented fix for keyboard hang when getting battery readings
2809 on
2810 some systems (Stephen White)
2811
2812 PCI IRQ routing update (Dominik Brodowski)
2813
2814 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
2815 support
2816
2817 ----------------------------------------
2818 11 June 2002.  Summary of changes for this release.
2819
2820
2821 1) ACPI CA Core Subsystem Version 20020611:
2822
2823 Fixed a reported problem where constants such as Zero and One
2824 appearing within _PRT packages were not handled correctly within
2825 the resource manager code.  Originally reported against the ASL
2826 compiler because the code generator now optimizes integers to
2827 their minimal AML representation (i.e. AML constants if
2828 possible.)
2829 The _PRT code now handles all AML constant opcodes correctly
2830 (Zero, One, Ones, Revision).
2831
2832 Fixed a problem with the Concatenate operator in the AML
2833 interpreter where a buffer result object was incorrectly marked
2834 as
2835 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
2836
2837 All package sub-objects are now fully resolved before they are
2838 returned from the external ACPI interfaces.  This means that name
2839 strings are resolved to object handles, and constant operators
2840 (Zero, One, Ones, Revision) are resolved to Integers.
2841
2842 Implemented immediate resolution of the AML Constant opcodes
2843 (Zero, One, Ones, Revision) to Integer objects upon detection
2844 within the AML stream. This has simplified and reduced the
2845 generated code size of the subsystem by eliminating about 10
2846 switch statements for these constants (which previously were
2847 contained in Reference objects.)  The complicating issues are
2848 that
2849 the Zero opcode is used as a "placeholder" for unspecified
2850 optional target operands and stores to constants are defined to
2851 be
2852 no-ops.
2853
2854 Code and Data Size: Current core subsystem library sizes are
2855 shown
2856 below. These are the code and data sizes for the acpica.lib
2857 produced by the Microsoft Visual C++ 6.0 compiler, and these
2858 values do not include any ACPI driver or OSPM code.  The debug
2859 version of the code includes the debug output trace mechanism and
2860 has a larger code and data size.  Note that these values will
2861 vary
2862 depending on the efficiency of the compiler and the compiler
2863 options used during generation.
2864
2865   Previous Release
2866     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
2867     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
2868   Current Release:
2869     Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
2870     Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
2871
2872
2873 2) Linux
2874
2875 Added preliminary support for obtaining _TRA data for PCI root
2876 bridges (Bjorn Helgaas).
2877
2878
2879 3) iASL Compiler Version X2046:
2880
2881 Fixed a problem where the "_DDN" reserved name was defined to be
2882 a
2883 control method with one argument.  There are no arguments, and
2884 _DDN does not have to be a control method.
2885
2886 Fixed a problem with the Linux version of the compiler where the
2887 source lines printed with error messages were the wrong lines.
2888 This turned out to be the "LF versus CR/LF" difference between
2889 Windows and Unix.  This appears to be the longstanding issue
2890 concerning listing output and error messages.
2891
2892 Fixed a problem with the Linux version of compiler where opcode
2893 names within error messages were wrong.  This was caused by a
2894 slight difference in the output of the Flex tool on Linux versus
2895 Windows.
2896
2897 Fixed a problem with the Linux compiler where the hex output
2898 files
2899 contained some garbage data caused by an internal buffer overrun.
2900
2901
2902 ----------------------------------------
2903 17 May 2002.  Summary of changes for this release.
2904
2905
2906 1) ACPI CA Core Subsystem Version 20020517:
2907
2908 Implemented a workaround to an BIOS bug discovered on the HP
2909 OmniBook where the FADT revision number and the table size are
2910 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The
2911 new
2912 behavior is to fallback to using only the ACPI 1.0 fields of the
2913 FADT if the table is too small to be a ACPI 2.0 table as claimed
2914 by the revision number.  Although this is a BIOS bug, this is a
2915 case where the workaround is simple enough and with no side
2916 effects, so it seemed prudent to add it.  A warning message is
2917 issued, however.
2918
2919 Implemented minimum size checks for the fixed-length ACPI tables
2920 -
2921 - the FADT and FACS, as well as consistency checks between the
2922 revision number and the table size.
2923
2924 Fixed a reported problem in the table override support where the
2925 new table pointer was incorrectly treated as a physical address
2926 instead of a logical address.
2927
2928 Eliminated the use of the AE_AML_ERROR exception and replaced it
2929 with more descriptive codes.
2930
2931 Fixed a problem where an exception would occur if an ASL Field
2932 was
2933 defined with no named Field Units underneath it (used by some
2934 index fields).
2935
2936 Code and Data Size: Current core subsystem library sizes are
2937 shown
2938 below.  These are the code and data sizes for the acpica.lib
2939 produced by the Microsoft Visual C++ 6.0 compiler, and these
2940 values do not include any ACPI driver or OSPM code.  The debug
2941 version of the code includes the debug output trace mechanism and
2942 has a larger code and data size.  Note that these values will
2943 vary
2944 depending on the efficiency of the compiler and the compiler
2945 options used during generation.
2946
2947   Previous Release
2948     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
2949     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
2950   Current Release:
2951     Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
2952     Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
2953
2954
2955
2956 2) Linux
2957
2958 Much work done on ACPI init (MADT and PCI IRQ routing support).
2959 (Paul D. and Dominik Brodowski)
2960
2961 Fix PCI IRQ-related panic on boot (Sam Revitch)
2962
2963 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
2964
2965 Fix "MHz" typo (Dominik Brodowski)
2966
2967 Fix RTC year 2000 issue (Dominik Brodowski)
2968
2969 Preclude multiple button proc entries (Eric Brunet)
2970
2971 Moved arch-specific code out of include/platform/aclinux.h
2972
2973 3) iASL Compiler Version X2044:
2974
2975 Implemented error checking for the string used in the EISAID
2976 macro
2977 (Usually used in the definition of the _HID object.)  The code
2978 now
2979 strictly enforces the PnP format - exactly 7 characters, 3
2980 uppercase letters and 4 hex digits.
2981
2982 If a raw string is used in the definition of the _HID object
2983 (instead of the EISAID macro), the string must contain all
2984 alphanumeric characters (e.g., "*PNP0011" is not allowed because
2985 of the asterisk.)
2986
2987 Implemented checking for invalid use of ACPI reserved names for
2988 most of the name creation operators (Name, Device, Event, Mutex,
2989 OperationRegion, PowerResource, Processor, and ThermalZone.)
2990 Previously, this check was only performed for control methods.
2991
2992 Implemented an additional check on the Name operator to emit an
2993 error if a reserved name that must be implemented in ASL as a
2994 control method is used.  We know that a reserved name must be a
2995 method if it is defined with input arguments.
2996
2997 The warning emitted when a namespace object reference is not
2998 found
2999 during the cross reference phase has been changed into an error.
3000 The "External" directive should be used for names defined in
3001 other
3002 modules.
3003
3004
3005 4) Tools and Utilities
3006
3007 The 16-bit tools (adump16 and aexec16) have been regenerated and
3008 tested.
3009
3010 Fixed a problem with the output of both acpidump and adump16
3011 where
3012 the indentation of closing parentheses and brackets was not
3013 aligned properly with the parent block.
3014
3015
3016 ----------------------------------------
3017 03 May 2002.  Summary of changes for this release.
3018
3019
3020 1) ACPI CA Core Subsystem Version 20020503:
3021
3022 Added support a new OSL interface that allows the host operating
3023 system software to override the DSDT found in the firmware -
3024 AcpiOsTableOverride.  With this interface, the OSL can examine
3025 the
3026 version of the firmware DSDT and replace it with a different one
3027 if desired.
3028
3029 Added new external interfaces for accessing ACPI registers from
3030 device drivers and other system software - AcpiGetRegister and
3031 AcpiSetRegister.  This was simply an externalization of the
3032 existing AcpiHwBitRegister interfaces.
3033
3034 Fixed a regression introduced in the previous build where the
3035 ASL/AML CreateField operator always returned an error,
3036 "destination must be a NS Node".
3037
3038 Extended the maximum time (before failure) to successfully enable
3039 ACPI mode to 3 seconds.
3040
3041 Code and Data Size: Current core subsystem library sizes are
3042 shown
3043 below.  These are the code and data sizes for the acpica.lib
3044 produced by the Microsoft Visual C++ 6.0 compiler, and these
3045 values do not include any ACPI driver or OSPM code.  The debug
3046 version of the code includes the debug output trace mechanism and
3047 has a larger code and data size.  Note that these values will
3048 vary
3049 depending on the efficiency of the compiler and the compiler
3050 options used during generation.
3051
3052   Previous Release
3053     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
3054     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
3055   Current Release:
3056     Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
3057     Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
3058
3059
3060 2) Linux
3061
3062 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
3063 free. While 3 out of 4 of our in-house systems work fine, the
3064 last
3065 one still hangs when testing the LAPIC timer.
3066
3067 Renamed many files in 2.5 kernel release to omit "acpi_" from the
3068 name.
3069
3070 Added warning on boot for Presario 711FR.
3071
3072 Sleep improvements (Pavel Machek)
3073
3074 ACPI can now be built without CONFIG_PCI enabled.
3075
3076 IA64: Fixed memory map functions (JI Lee)
3077
3078
3079 3) iASL Compiler Version X2043:
3080
3081 Added support to allow the compiler to be integrated into the MS
3082 VC++ development environment for one-button compilation of single
3083 files or entire projects -- with error-to-source-line mapping.
3084
3085 Implemented support for compile-time constant folding for the
3086 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
3087 specification.  This allows the ASL writer to use expressions
3088 instead of Integer/Buffer/String constants in terms that must
3089 evaluate to constants at compile time and will also simplify the
3090 emitted AML in any such sub-expressions that can be folded
3091 (evaluated at compile-time.)  This increases the size of the
3092 compiler significantly because a portion of the ACPI CA AML
3093 interpreter is included within the compiler in order to pre-
3094 evaluate constant expressions.
3095
3096
3097 Fixed a problem with the "Unicode" ASL macro that caused the
3098 compiler to fault.  (This macro is used in conjunction with the
3099 _STR reserved name.)
3100
3101 Implemented an AML opcode optimization to use the Zero, One, and
3102 Ones opcodes where possible to further reduce the size of integer
3103 constants and thus reduce the overall size of the generated AML
3104 code.
3105
3106 Implemented error checking for new reserved terms for ACPI
3107 version
3108 2.0A.
3109
3110 Implemented the -qr option to display the current list of ACPI
3111 reserved names known to the compiler.
3112
3113 Implemented the -qc option to display the current list of ASL
3114 operators that are allowed within constant expressions and can
3115 therefore be folded at compile time if the operands are
3116 constants.
3117
3118
3119 4) Documentation
3120
3121 Updated the Programmer's Reference for new interfaces, data
3122 types,
3123 and memory allocation model options.
3124
3125 Updated the iASL Compiler User Reference to apply new format and
3126 add information about new features and options.
3127
3128 ----------------------------------------
3129 19 April 2002.  Summary of changes for this release.
3130
3131 1) ACPI CA Core Subsystem Version 20020419:
3132
3133 The source code base for the Core Subsystem has been completely
3134 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
3135 versions.  The Lint option files used are included in the
3136 /acpi/generate/lint directory.
3137
3138 Implemented enhanced status/error checking across the entire
3139 Hardware manager subsystem.  Any hardware errors (reported from
3140 the OSL) are now bubbled up and will abort a running control
3141 method.
3142
3143 Fixed a problem where the per-ACPI-table integer width (32 or 64)
3144 was stored only with control method nodes, causing a fault when
3145 non-control method code was executed during table loading.  The
3146 solution implemented uses a global variable to indicate table
3147 width across the entire ACPI subsystem.  Therefore, ACPI CA does
3148 not support mixed integer widths across different ACPI tables
3149 (DSDT, SSDT).
3150
3151 Fixed a problem where NULL extended fields (X fields) in an ACPI
3152 2.0 ACPI FADT caused the table load to fail.  Although the
3153 existing ACPI specification is a bit fuzzy on this topic, the new
3154 behavior is to fall back on a ACPI 1.0 field if the corresponding
3155 ACPI 2.0 X field is zero (even though the table revision
3156 indicates
3157 a full ACPI 2.0 table.)  The ACPI specification will be updated
3158 to
3159 clarify this issue.
3160
3161 Fixed a problem with the SystemMemory operation region handler
3162 where memory was always accessed byte-wise even if the AML-
3163 specified access width was larger than a byte.  This caused
3164 problems on systems with memory-mapped I/O.  Memory is now
3165 accessed with the width specified.  On systems that do not
3166 support
3167 non-aligned transfers, a check is made to guarantee proper
3168 address
3169 alignment before proceeding in order to avoid an AML-caused
3170 alignment fault within the kernel.
3171
3172
3173 Fixed a problem with the ExtendedIrq resource where only one byte
3174 of the 4-byte Irq field was extracted.
3175
3176 Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
3177 function was out of date and required a rewrite.
3178
3179 Code and Data Size: Current core subsystem library sizes are
3180 shown
3181 below.  These are the code and data sizes for the acpica.lib
3182 produced by the Microsoft Visual C++ 6.0 compiler, and these
3183 values do not include any ACPI driver or OSPM code.  The debug
3184 version of the code includes the debug output trace mechanism and
3185 has a larger code and data size.  Note that these values will
3186 vary
3187 depending on the efficiency of the compiler and the compiler
3188 options used during generation.
3189
3190   Previous Release
3191     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
3192     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
3193   Current Release:
3194     Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
3195     Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
3196
3197
3198 2) Linux
3199
3200 PCI IRQ routing fixes (Dominik Brodowski)
3201
3202
3203 3) iASL Compiler Version X2042:
3204
3205 Implemented an additional compile-time error check for a field
3206 unit whose size + minimum access width would cause a run-time
3207 access beyond the end-of-region.  Previously, only the field size
3208 itself was checked.
3209
3210 The Core subsystem and iASL compiler now share a common parse
3211 object in preparation for compile-time evaluation of the type
3212 3/4/5 ASL operators.
3213
3214
3215 ----------------------------------------
3216 Summary of changes for this release: 03_29_02
3217
3218 1) ACPI CA Core Subsystem Version 20020329:
3219
3220 Implemented support for late evaluation of TermArg operands to
3221 Buffer and Package objects.  This allows complex expressions to
3222 be
3223 used in the declarations of these object types.
3224
3225 Fixed an ACPI 1.0 compatibility issue when reading Fields. In
3226 ACPI
3227 1.0, if the field was larger than 32 bits, it was returned as a
3228 buffer - otherwise it was returned as an integer.  In ACPI 2.0,
3229 the field is returned as a buffer only if the field is larger
3230 than
3231 64 bits.  The TableRevision is now considered when making this
3232 conversion to avoid incompatibility with existing ASL code.
3233
3234 Implemented logical addressing for AcpiOsGetRootPointer.  This
3235 allows an RSDP with either a logical or physical address.  With
3236 this support, the host OS can now override all ACPI tables with
3237 one logical RSDP.  Includes implementation of  "typed" pointer
3238 support to allow a common data type for both physical and logical
3239 pointers internally.  This required a change to the
3240 AcpiOsGetRootPointer interface.
3241
3242 Implemented the use of ACPI 2.0 Generic Address Structures for
3243 all
3244 GPE, Fixed Event, and PM Timer I/O.  This allows the use of
3245 memory
3246 mapped I/O for these ACPI features.
3247
3248 Initialization now ignores not only non-required tables (All
3249 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
3250 not validate the table headers of unrecognized tables.
3251
3252 Fixed a problem where a notify handler could only be
3253 installed/removed on an object of type Device.  All "notify"
3254 objects are now supported -- Devices, Processor, Power, and
3255 Thermal.
3256
3257 Removed most verbosity from the ACPI_DB_INFO debug level.  Only
3258 critical information is returned when this debug level is
3259 enabled.
3260
3261 Code and Data Size: Current core subsystem library sizes are
3262 shown
3263 below.  These are the code and data sizes for the acpica.lib
3264 produced by the Microsoft Visual C++ 6.0 compiler, and these
3265 values do not include any ACPI driver or OSPM code.  The debug
3266 version of the code includes the debug output trace mechanism and
3267 has a larger code and data size.  Note that these values will
3268 vary
3269 depending on the efficiency of the compiler and the compiler
3270 options used during generation.
3271
3272   Previous Release
3273     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
3274     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
3275   Current Release:
3276     Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
3277     Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
3278
3279
3280 2) Linux:
3281
3282 The processor driver (acpi_processor.c) now fully supports ACPI
3283 2.0-based processor performance control (e.g. Intel(R)
3284 SpeedStep(TM) technology) Note that older laptops that only have
3285 the Intel "applet" interface are not supported through this.  The
3286 'limit' and 'performance' interface (/proc) are fully functional.
3287 [Note that basic policy for controlling performance state
3288 transitions will be included in the next version of ospmd.]  The
3289 idle handler was modified to more aggressively use C2, and PIIX4
3290 errata handling underwent a complete overhaul (big thanks to
3291 Dominik Brodowski).
3292
3293 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
3294 based devices in the ACPI namespace are now dynamically bound
3295 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
3296 This allows, among other things, ACPI to resolve bus numbers for
3297 subordinate PCI bridges.
3298
3299 Enhanced PCI IRQ routing to get the proper bus number for _PRT
3300 entries defined underneath PCI bridges.
3301
3302 Added IBM 600E to bad bios list due to invalid _ADR value for
3303 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
3304
3305 In the process of adding full MADT support (e.g. IOAPIC) for IA32
3306 (acpi.c, mpparse.c) -- stay tuned.
3307
3308 Added back visual differentiation between fixed-feature and
3309 control-method buttons in dmesg.  Buttons are also subtyped (e.g.
3310 button/power/PWRF) to simplify button identification.
3311
3312 We no longer use -Wno-unused when compiling debug. Please ignore
3313 any "_THIS_MODULE defined but not used" messages.
3314
3315 Can now shut down the system using "magic sysrq" key.
3316
3317
3318 3) iASL Compiler version 2041:
3319
3320 Fixed a problem where conversion errors for hex/octal/decimal
3321 constants were not reported.
3322
3323 Implemented a fix for the General Register template Address
3324 field.
3325 This field was 8 bits when it should be 64.
3326
3327 Fixed a problem where errors/warnings were no longer being
3328 emitted
3329 within the listing output file.
3330
3331 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
3332 exactly 4 characters, alphanumeric only.
3333
3334
3335
3336
3337 ----------------------------------------
3338 Summary of changes for this release: 03_08_02
3339
3340
3341 1) ACPI CA Core Subsystem Version 20020308:
3342
3343 Fixed a problem with AML Fields where the use of the "AccessAny"
3344 keyword could cause an interpreter error due to attempting to
3345 read
3346 or write beyond the end of the parent Operation Region.
3347
3348 Fixed a problem in the SystemMemory Operation Region handler
3349 where
3350 an attempt was made to map memory beyond the end of the region.
3351 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
3352 errors on some Linux systems.
3353
3354 Fixed a problem where the interpreter/namespace "search to root"
3355 algorithm was not functioning for some object types.  Relaxed the
3356 internal restriction on the search to allow upsearches for all
3357 external object types as well as most internal types.
3358
3359
3360 2) Linux:
3361
3362 We now use safe_halt() macro versus individual calls to sti |
3363 hlt.
3364
3365 Writing to the processor limit interface should now work. "echo
3366 1"
3367 will increase the limit, 2 will decrease, and 0 will reset to the
3368 default.
3369
3370
3371 3) ASL compiler:
3372
3373 Fixed segfault on Linux version.
3374
3375
3376 ----------------------------------------
3377 Summary of changes for this release: 02_25_02
3378
3379 1) ACPI CA Core Subsystem:
3380
3381
3382 Fixed a problem where the GPE bit masks were not initialized
3383 properly, causing erratic GPE behavior.
3384
3385 Implemented limited support for multiple calling conventions.
3386 The
3387 code can be generated with either the VPL (variable parameter
3388 list, or "C") convention, or the FPL (fixed parameter list, or
3389 "Pascal") convention.  The core subsystem is about 3.4% smaller
3390 when generated with FPL.
3391
3392
3393 2) Linux
3394
3395 Re-add some /proc/acpi/event functionality that was lost during
3396 the rewrite
3397
3398 Resolved issue with /proc events for fixed-feature buttons
3399 showing
3400 up as the system device.
3401
3402 Fixed checks on C2/C3 latencies to be inclusive of maximum
3403 values.
3404
3405 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
3406
3407 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
3408
3409 Fixed limit interface & usage to fix bugs with passive cooling
3410 hysterisis.
3411
3412 Restructured PRT support.
3413
3414
3415 ----------------------------------------
3416 Summary of changes for this label: 02_14_02
3417
3418
3419 1) ACPI CA Core Subsystem:
3420
3421 Implemented support in AcpiLoadTable to allow loading of FACS and
3422 FADT tables.
3423
3424 Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
3425 been removed.  All 64-bit platforms should be migrated to the
3426 ACPI
3427 2.0 tables.  The actbl71.h header has been removed from the
3428 source
3429 tree.
3430
3431 All C macros defined within the subsystem have been prefixed with
3432 "ACPI_" to avoid collision with other system include files.
3433
3434 Removed the return value for the two AcpiOsPrint interfaces,
3435 since
3436 it is never used and causes lint warnings for ignoring the return
3437 value.
3438
3439 Added error checking to all internal mutex acquire and release
3440 calls.  Although a failure from one of these interfaces is
3441 probably a fatal system error, these checks will cause the
3442 immediate abort of the currently executing method or interface.
3443
3444 Fixed a problem where the AcpiSetCurrentResources interface could
3445 fault.  This was a side effect of the deployment of the new
3446 memory
3447 allocation model.
3448
3449 Fixed a couple of problems with the Global Lock support
3450 introduced
3451 in the last major build.  The "common" (1.0/2.0) internal FACS
3452 was
3453 being overwritten with the FACS signature and clobbering the
3454 Global Lock pointer.  Also, the actual firmware FACS was being
3455 unmapped after construction of the "common" FACS, preventing
3456 access to the actual Global Lock field within it.  The "common"
3457 internal FACS is no longer installed as an actual ACPI table; it
3458 is used simply as a global.
3459
3460 Code and Data Size: Current core subsystem library sizes are
3461 shown
3462 below.  These are the code and data sizes for the acpica.lib
3463 produced by the Microsoft Visual C++ 6.0 compiler, and these
3464 values do not include any ACPI driver or OSPM code.  The debug
3465 version of the code includes the debug output trace mechanism and
3466 has a larger code and data size.  Note that these values will
3467 vary
3468 depending on the efficiency of the compiler and the compiler
3469 options used during generation.
3470
3471   Previous Release (02_07_01)
3472     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
3473     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
3474   Current Release:
3475     Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
3476     Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
3477
3478
3479 2) Linux
3480
3481 Updated Linux-specific code for core macro and OSL interface
3482 changes described above.
3483
3484 Improved /proc/acpi/event. It now can be opened only once and has
3485 proper poll functionality.
3486
3487 Fixed and restructured power management (acpi_bus).
3488
3489 Only create /proc "view by type" when devices of that class
3490 exist.
3491
3492 Fixed "charging/discharging" bug (and others) in acpi_battery.
3493
3494 Improved thermal zone code.
3495
3496
3497 3) ASL Compiler, version X2039:
3498
3499
3500 Implemented the new compiler restriction on ASL String hex/octal
3501 escapes to non-null, ASCII values.  An error results if an
3502 invalid
3503 value is used.  (This will require an ACPI 2.0 specification
3504 change.)
3505
3506 AML object labels that are output to the optional C and ASM
3507 source
3508 are now prefixed with both the ACPI table signature and table ID
3509 to help guarantee uniqueness within a large BIOS project.
3510
3511
3512 ----------------------------------------
3513 Summary of changes for this label: 02_01_02
3514
3515 1) ACPI CA Core Subsystem:
3516
3517 ACPI 2.0 support is complete in the entire Core Subsystem and the
3518 ASL compiler. All new ACPI 2.0 operators are implemented and all
3519 other changes for ACPI 2.0 support are complete.  With
3520 simultaneous code and data optimizations throughout the
3521 subsystem,
3522 ACPI 2.0 support has been implemented with almost no additional
3523 cost in terms of code and data size.
3524
3525 Implemented a new mechanism for allocation of return buffers.  If
3526 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
3527 be allocated on behalf of the caller.  Consolidated all return
3528 buffer validation and allocation to a common procedure.  Return
3529 buffers will be allocated via the primary OSL allocation
3530 interface
3531 since it appears that a separate pool is not needed by most
3532 users.
3533 If a separate pool is required for these buffers, the caller can
3534 still use the original mechanism and pre-allocate the buffer(s).
3535
3536 Implemented support for string operands within the DerefOf
3537 operator.
3538
3539 Restructured the Hardware and Event managers to be table driven,
3540 simplifying the source code and reducing the amount of generated
3541 code.
3542
3543 Split the common read/write low-level ACPI register bitfield
3544 procedure into a separate read and write, simplifying the code
3545 considerably.
3546
3547 Obsoleted the AcpiOsCallocate OSL interface.  This interface was
3548 used only a handful of times and didn't have enough critical mass
3549 for a separate interface.  Replaced with a common calloc
3550 procedure
3551 in the core.
3552
3553 Fixed a reported problem with the GPE number mapping mechanism
3554 that allows GPE1 numbers to be non-contiguous with GPE0.
3555 Reorganized the GPE information and shrunk a large array that was
3556 originally large enough to hold info for all possible GPEs (256)
3557 to simply large enough to hold all GPEs up to the largest GPE
3558 number on the machine.
3559
3560 Fixed a reported problem with resource structure alignment on 64-
3561 bit platforms.
3562
3563 Changed the AcpiEnableEvent and AcpiDisableEvent external
3564 interfaces to not require any flags for the common case of
3565 enabling/disabling a GPE.
3566
3567 Implemented support to allow a "Notify" on a Processor object.
3568
3569 Most TBDs in comments within the source code have been resolved
3570 and eliminated.
3571
3572 Fixed a problem in the interpreter where a standalone parent
3573 prefix (^) was not handled correctly in the interpreter and
3574 debugger.
3575
3576 Removed obsolete and unnecessary GPE save/restore code.
3577
3578 Implemented Field support in the ASL Load operator.  This allows
3579 a
3580 table to be loaded from a named field, in addition to loading a
3581 table directly from an Operation Region.
3582
3583 Implemented timeout and handle support in the external Global
3584 Lock
3585 interfaces.
3586
3587 Fixed a problem in the AcpiDump utility where pathnames were no
3588 longer being generated correctly during the dump of named
3589 objects.
3590
3591 Modified the AML debugger to give a full display of if/while
3592 predicates instead of just one AML opcode at a time.  (The
3593 predicate can have several nested ASL statements.)  The old
3594 method
3595 was confusing during single stepping.
3596
3597 Code and Data Size: Current core subsystem library sizes are
3598 shown
3599 below. These are the code and data sizes for the acpica.lib
3600 produced by the Microsoft Visual C++ 6.0 compiler, and these
3601 values do not include any ACPI driver or OSPM code.  The debug
3602 version of the code includes the debug output trace mechanism and
3603 has a larger code and data size.  Note that these values will
3604 vary
3605 depending on the efficiency of the compiler and the compiler
3606 options used during generation.
3607
3608   Previous Release (12_18_01)
3609      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
3610      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
3611    Current Release:
3612      Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
3613      Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
3614
3615 2) Linux
3616
3617  Implemented fix for PIIX reverse throttling errata (Processor
3618 driver)
3619
3620 Added new Limit interface (Processor and Thermal drivers)
3621
3622 New thermal policy (Thermal driver)
3623
3624 Many updates to /proc
3625
3626 Battery "low" event support (Battery driver)
3627
3628 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
3629
3630 IA32 - IA64 initialization unification, no longer experimental
3631
3632 Menuconfig options redesigned
3633
3634 3) ASL Compiler, version X2037:
3635
3636 Implemented several new output features to simplify integration
3637 of
3638 AML code into  firmware: 1) Output the AML in C source code with
3639 labels for each named ASL object.  The    original ASL source
3640 code
3641 is interleaved as C comments. 2) Output the AML in ASM source
3642 code
3643 with labels and interleaved ASL    source. 3) Output the AML in
3644 raw hex table form, in either C or ASM.
3645
3646 Implemented support for optional string parameters to the
3647 LoadTable operator.
3648
3649 Completed support for embedded escape sequences within string
3650 literals.  The compiler now supports all single character escapes
3651 as well as the Octal and Hex escapes.  Note: the insertion of a
3652 null byte into a string literal (via the hex/octal escape) causes
3653 the string to be immediately terminated.  A warning is issued.
3654
3655 Fixed a problem where incorrect AML was generated for the case
3656 where an ASL namepath consists of a single parent prefix (
3657
3658 ) with no trailing name segments.
3659
3660 The compiler has been successfully generated with a 64-bit C
3661 compiler.
3662
3663
3664
3665
3666 ----------------------------------------
3667 Summary of changes for this label: 12_18_01
3668
3669 1) Linux
3670
3671 Enhanced blacklist with reason and severity fields. Any table's
3672 signature may now be used to identify a blacklisted system.
3673
3674 Call _PIC control method to inform the firmware which interrupt
3675 model the OS is using. Turn on any disabled link devices.
3676
3677 Cleaned up busmgr /proc error handling (Andreas Dilger)
3678
3679  2) ACPI CA Core Subsystem:
3680
3681 Implemented ACPI 2.0 semantics for the "Break" operator (Exit
3682 from
3683 while loop)
3684
3685 Completed implementation of the ACPI 2.0 "Continue",
3686 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
3687 operators.  All new ACPI 2.0 operators are now implemented in
3688 both
3689 the ASL compiler and the AML interpreter.  The only remaining
3690 ACPI
3691 2.0 task is support for the String data type in the DerefOf
3692 operator.  Fixed a problem with AcquireMutex where the status
3693 code
3694 was lost if the caller had to actually wait for the mutex.
3695
3696 Increased the maximum ASL Field size from 64K bits to 4G bits.
3697
3698 Completed implementation of the external Global Lock interfaces -
3699 -
3700 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
3701 Handler parameters were added.
3702
3703 Completed another pass at removing warnings and issues when
3704 compiling with 64-bit compilers.  The code now compiles cleanly
3705 with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
3706 add and subtract (diff) macros have changed considerably.
3707
3708 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
3709 64-bit platforms, 32-bits on all others.  This type is used
3710 wherever memory allocation and/or the C sizeof() operator is
3711 used,
3712 and affects the OSL memory allocation interfaces AcpiOsAllocate
3713 and AcpiOsCallocate.
3714
3715 Implemented sticky user breakpoints in the AML debugger.
3716
3717 Code and Data Size: Current core subsystem library sizes are
3718 shown
3719 below. These are the code and data sizes for the acpica.lib
3720 produced by the Microsoft Visual C++ 6.0 compiler, and these
3721 values do not include any ACPI driver or OSPM code.  The debug
3722 version of the code includes the debug output trace mechanism and
3723 has a larger code and data size. Note that these values will vary
3724 depending on the efficiency of the compiler and the compiler
3725 options used during generation.
3726
3727   Previous Release (12_05_01)
3728      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
3729      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
3730    Current Release:
3731      Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
3732      Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
3733
3734  3) ASL Compiler, version X2034:
3735
3736 Now checks for (and generates an error if detected) the use of a
3737 Break or Continue statement without an enclosing While statement.
3738
3739 Successfully generated the compiler with the Intel 64-bit C
3740 compiler.
3741
3742  ----------------------------------------
3743 Summary of changes for this label: 12_05_01
3744
3745  1) ACPI CA Core Subsystem:
3746
3747 The ACPI 2.0 CopyObject operator is fully implemented.  This
3748 operator creates a new copy of an object (and is also used to
3749 bypass the "implicit conversion" mechanism of the Store
3750 operator.)
3751
3752 The ACPI 2.0 semantics for the SizeOf operator are fully
3753 implemented.  The change is that performing a SizeOf on a
3754 reference object causes an automatic dereference of the object to
3755 tha actual value before the size is evaluated. This behavior was
3756 undefined in ACPI 1.0.
3757
3758 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
3759 have been implemented.  The interrupt polarity and mode are now
3760 independently set.
3761
3762 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
3763 appearing in Package objects were not properly converted to
3764 integers when the internal Package was converted to an external
3765 object (via the AcpiEvaluateObject interface.)
3766
3767 Fixed a problem with the namespace object deletion mechanism for
3768 objects created by control methods.  There were two parts to this
3769 problem: 1) Objects created during the initialization phase
3770 method
3771 parse were not being deleted, and 2) The object owner ID
3772 mechanism
3773 to track objects was broken.
3774
3775 Fixed a problem where the use of the ASL Scope operator within a
3776 control method would result in an invalid opcode exception.
3777
3778 Fixed a problem introduced in the previous label where the buffer
3779 length required for the _PRT structure was not being returned
3780 correctly.
3781
3782 Code and Data Size: Current core subsystem library sizes are
3783 shown
3784 below. These are the code and data sizes for the acpica.lib
3785 produced by the Microsoft Visual C++ 6.0 compiler, and these
3786 values do not include any ACPI driver or OSPM code.  The debug
3787 version of the code includes the debug output trace mechanism and
3788 has a larger code and data size.  Note that these values will
3789 vary
3790 depending on the efficiency of the compiler and the compiler
3791 options used during generation.
3792
3793   Previous Release (11_20_01)
3794      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
3795      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
3796
3797   Current Release:
3798      Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
3799      Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
3800
3801  2) Linux:
3802
3803 Updated all files to apply cleanly against 2.4.16.
3804
3805 Added basic PCI Interrupt Routing Table (PRT) support for IA32
3806 (acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
3807 version supports both static and dyanmic PRT entries, but dynamic
3808 entries are treated as if they were static (not yet
3809 reconfigurable).  Architecture- specific code to use this data is
3810 absent on IA32 but should be available shortly.
3811
3812 Changed the initialization sequence to start the ACPI interpreter
3813 (acpi_init) prior to initialization of the PCI driver (pci_init)
3814 in init/main.c.  This ordering is required to support PRT and
3815 facilitate other (future) enhancement.  A side effect is that the
3816 ACPI bus driver and certain device drivers can no longer be
3817 loaded
3818 as modules.
3819
3820 Modified the 'make menuconfig' options to allow PCI Interrupt
3821 Routing support to be included without the ACPI Bus and other
3822 device drivers.
3823
3824  3) ASL Compiler, version X2033:
3825
3826 Fixed some issues with the use of the new CopyObject and
3827 DataTableRegion operators.  Both are fully functional.
3828
3829  ----------------------------------------
3830 Summary of changes for this label: 11_20_01
3831
3832  20 November 2001.  Summary of changes for this release.
3833
3834  1) ACPI CA Core Subsystem:
3835
3836 Updated Index support to match ACPI 2.0 semantics.  Storing a
3837 Integer, String, or Buffer to an Index of a Buffer will store
3838 only
3839 the least-significant byte of the source to the Indexed buffer
3840 byte.  Multiple writes are not performed.
3841
3842 Fixed a problem where the access type used in an AccessAs ASL
3843 operator was not recorded correctly into the field object.
3844
3845 Fixed a problem where ASL Event objects were created in a
3846 signalled state. Events are now created in an unsignalled state.
3847
3848 The internal object cache is now purged after table loading and
3849 initialization to reduce the use of dynamic kernel memory -- on
3850 the assumption that object use is greatest during the parse phase
3851 of the entire table (versus the run-time use of individual
3852 control
3853 methods.)
3854
3855 ACPI 2.0 variable-length packages are now fully operational.
3856
3857 Code and Data Size: Code and Data optimizations have permitted
3858 new
3859 feature development with an actual reduction in the library size.
3860 Current core subsystem library sizes are shown below.  These are
3861 the code and data sizes for the acpica.lib produced by the
3862 Microsoft Visual C++ 6.0 compiler, and these values do not
3863 include
3864 any ACPI driver or OSPM code.  The debug version of the code
3865 includes the debug output trace mechanism and has a larger code
3866 and data size.  Note that these values will vary depending on the
3867 efficiency of the compiler and the compiler options used during
3868 generation.
3869
3870   Previous Release (11_09_01):
3871      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
3872      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
3873
3874   Current Release:
3875      Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
3876      Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
3877
3878  2) Linux:
3879
3880 Enhanced the ACPI boot-time initialization code to allow the use
3881 of Local APIC tables for processor enumeration on IA-32, and to
3882 pave the way for a fully MPS-free boot (on SMP systems) in the
3883 near future.  This functionality replaces
3884 arch/i386/kernel/acpitables.c, which was introduced in an earlier
3885 2.4.15-preX release.  To enable this feature you must add
3886 "acpi_boot=on" to the kernel command line -- see the help entry
3887 for CONFIG_ACPI_BOOT for more information.  An IA-64 release is
3888 in
3889 the works...
3890
3891 Restructured the configuration options to allow boot-time table
3892 parsing support without inclusion of the ACPI Interpreter (and
3893 other) code.
3894
3895 NOTE: This release does not include fixes for the reported
3896 events,
3897 power-down, and thermal passive cooling issues (coming soon).
3898
3899  3) ASL Compiler:
3900
3901 Added additional typechecking for Fields within restricted access
3902 Operation Regions.  All fields within EC and CMOS regions must be
3903 declared with ByteAcc. All fields withing SMBus regions must be
3904 declared with the BufferAcc access type.
3905
3906 Fixed a problem where the listing file output of control methods
3907 no longer interleaved the actual AML code with the ASL source
3908 code.
3909
3910
3911
3912 ----------------------------------------
3913 Summary of changes for this label: 11_09_01
3914
3915 1) ACPI CA Core Subsystem:
3916
3917 Implemented ACPI 2.0-defined support for writes to fields with a
3918 Buffer, String, or Integer source operand that is smaller than
3919 the
3920 target field. In these cases, the source operand is zero-extended
3921 to fill the target field.
3922
3923 Fixed a problem where a Field starting bit offset (within the
3924 parent operation region) was calculated incorrectly if the
3925 alignment of the field differed from the access width.  This
3926 affected CreateWordField, CreateDwordField, CreateQwordField, and
3927 possibly other fields that use the "AccessAny" keyword.
3928
3929 Fixed a problem introduced in the 11_02_01 release where indirect
3930 stores through method arguments did not operate correctly.
3931
3932 2) Linux:
3933
3934 Implemented boot-time ACPI table parsing support
3935 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
3936 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
3937 legacy BIOS interfaces (e.g. MPS) for the configuration of system
3938 processors, memory, and interrupts during setup_arch().  Note
3939 that
3940 this patch does not include the required architecture-specific
3941 changes required to apply this information -- subsequent patches
3942 will be posted for both IA32 and IA64 to achieve this.
3943
3944 Added low-level sleep support for IA32 platforms, courtesy of Pat
3945 Mochel. This allows IA32 systems to transition to/from various
3946 sleeping states (e.g. S1, S3), although the lack of a centralized
3947 driver model and power-manageable drivers will prevent its
3948 (successful) use on most systems.
3949
3950 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
3951 submenu, unified IA32 and IA64 options, added new "Boot using
3952 ACPI
3953 tables" option, etc.
3954
3955 Increased the default timeout for the EC driver from 1ms to 10ms
3956 (1000 cycles of 10us) to try to address AE_TIME errors during EC
3957 transactions.
3958
3959  ----------------------------------------
3960 Summary of changes for this label: 11_02_01
3961
3962 1) ACPI CA Core Subsystem:
3963
3964 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
3965 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
3966 implemented.
3967
3968 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
3969 changes to support ACPI 2.0 Qword field access.  Read/Write
3970 PciConfiguration(), Read/Write Memory(), and Read/Write Port()
3971 now
3972 accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
3973 the value parameter for the address space handler interface is
3974 now
3975 an ACPI_INTEGER.  OSL implementations of these interfaces must
3976 now
3977 handle the case where the Width parameter is 64.
3978
3979 Index Fields: Fixed a problem where unaligned bit assembly and
3980 disassembly for IndexFields was not supported correctly.
3981
3982 Index and Bank Fields:  Nested Index and Bank Fields are now
3983 supported. During field access, a check is performed to ensure
3984 that the value written to an Index or Bank register is not out of
3985 the range of the register.  The Index (or Bank) register is
3986 written before each access to the field data. Future support will
3987 include allowing individual IndexFields to be wider than the
3988 DataRegister width.
3989
3990 Fields: Fixed a problem where the AML interpreter was incorrectly
3991 attempting to write beyond the end of a Field/OpRegion.  This was
3992 a boundary case that occurred when a DWORD field was written to a
3993 BYTE access OpRegion, forcing multiple writes and causing the
3994 interpreter to write one datum too many.
3995
3996 Fields: Fixed a problem with Field/OpRegion access where the
3997 starting bit address of a field was incorrectly calculated if the
3998 current access type was wider than a byte (WordAcc, DwordAcc, or
3999 QwordAcc).
4000
4001 Fields: Fixed a problem where forward references to individual
4002 FieldUnits (individual Field names within a Field definition)
4003 were
4004 not resolved during the AML table load.
4005
4006 Fields: Fixed a problem where forward references from a Field
4007 definition to the parent Operation Region definition were not
4008 resolved during the AML table load.
4009
4010 Fields: Duplicate FieldUnit names within a scope are now detected
4011 during AML table load.
4012
4013 Acpi Interfaces: Fixed a problem where the AcpiGetName()
4014 interface
4015 returned an incorrect name for the root node.
4016
4017 Code and Data Size: Code and Data optimizations have permitted
4018 new
4019 feature development with an actual reduction in the library size.
4020 Current core subsystem library sizes are shown below.  These are
4021 the code and data sizes for the acpica.lib produced by the
4022 Microsoft Visual C++ 6.0 compiler, and these values do not
4023 include
4024 any ACPI driver or OSPM code.  The debug version of the code
4025 includes the debug output trace mechanism and has a larger code
4026 and data size.  Note that these values will vary depending on the
4027 efficiency of the compiler and the compiler options used during
4028 generation.
4029
4030   Previous Release (10_18_01):
4031      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
4032      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
4033
4034   Current Release:
4035      Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
4036      Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
4037
4038  2) Linux:
4039
4040 Improved /proc processor output (Pavel Machek) Re-added
4041 MODULE_LICENSE("GPL") to all modules.
4042
4043  3) ASL Compiler version X2030:
4044
4045 Duplicate FieldUnit names within a scope are now detected and
4046 flagged as errors.
4047
4048  4) Documentation:
4049
4050 Programmer Reference updated to reflect OSL and address space
4051 handler interface changes described above.
4052
4053 ----------------------------------------
4054 Summary of changes for this label: 10_18_01
4055
4056 ACPI CA Core Subsystem:
4057
4058 Fixed a problem with the internal object reference count
4059 mechanism
4060 that occasionally caused premature object deletion. This resolves
4061 all of the outstanding problem reports where an object is deleted
4062 in the middle of an interpreter evaluation.  Although this
4063 problem
4064 only showed up in rather obscure cases, the solution to the
4065 problem involved an adjustment of all reference counts involving
4066 objects attached to namespace nodes.
4067
4068 Fixed a problem with Field support in the interpreter where
4069 writing to an aligned field whose length is an exact multiple (2
4070 or greater) of the field access granularity would cause an
4071 attempt
4072 to write beyond the end of the field.
4073
4074 The top level AML opcode execution functions within the
4075 interpreter have been renamed with a more meaningful and
4076 consistent naming convention.  The modules exmonad.c and
4077 exdyadic.c were eliminated.  New modules are exoparg1.c,
4078 exoparg2.c, exoparg3.c, and exoparg6.c.
4079
4080 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
4081
4082 Fixed a problem where the AML debugger was causing some internal
4083 objects to not be deleted during subsystem termination.
4084
4085 Fixed a problem with the external AcpiEvaluateObject interface
4086 where the subsystem would fault if the named object to be
4087 evaluated refered to a constant such as Zero, Ones, etc.
4088
4089 Fixed a problem with IndexFields and BankFields where the
4090 subsystem would fault if the index, data, or bank registers were
4091 not defined in the same scope as the field itself.
4092
4093 Added printf format string checking for compilers that support
4094 this feature.  Corrected more than 50 instances of issues with
4095 format specifiers within invocations of ACPI_DEBUG_PRINT
4096 throughout the core subsystem code.
4097
4098 The ASL "Revision" operator now returns the ACPI support level
4099 implemented in the core - the value "2" since the ACPI 2.0
4100 support
4101 is more than 50% implemented.
4102
4103 Enhanced the output of the AML debugger "dump namespace" command
4104 to output in a more human-readable form.
4105
4106 Current core subsystem library code sizes are shown below.  These
4107 are the code and data sizes for the acpica.lib produced by the
4108 Microsoft Visual C++ 6.0 compiler, and these values do not
4109 include
4110 any ACPI driver or OSPM code.  The debug version of the code
4111 includes the full debug trace mechanism -- leading to a much
4112 larger code and data size.  Note that these values will vary
4113 depending on the efficiency of the compiler and the compiler
4114 options used during generation.
4115
4116      Previous Label (09_20_01):
4117      Non-Debug Version:    65K Code,     5K Data,     70K Total
4118      Debug Version:       138K Code,    58K Data,    196K Total
4119
4120      This Label:
4121
4122      Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
4123      Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
4124
4125 Linux:
4126
4127 Implemented a "Bad BIOS Blacklist" to track machines that have
4128 known ASL/AML problems.
4129
4130 Enhanced the /proc interface for the thermal zone driver and
4131 added
4132 support for _HOT (the critical suspend trip point).  The 'info'
4133 file now includes threshold/policy information, and allows
4134 setting
4135 of _SCP (cooling preference) and _TZP (polling frequency) values
4136 to the 'info' file. Examples: "echo tzp=5 > info" sets the
4137 polling
4138 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
4139 preference to the passive/quiet mode (if supported by the ASL).
4140
4141 Implemented a workaround for a gcc bug that resuted in an OOPs
4142 when loading the control method battery driver.
4143
4144  ----------------------------------------
4145 Summary of changes for this label: 09_20_01
4146
4147  ACPI CA Core Subsystem:
4148
4149 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
4150 modified to allow individual GPE levels to be flagged as wake-
4151 enabled (i.e., these GPEs are to remain enabled when the platform
4152 sleeps.)
4153
4154 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
4155 support wake-enabled GPEs.  This means that upon entering the
4156 sleep state, all GPEs that are not wake-enabled are disabled.
4157 When leaving the sleep state, these GPEs are reenabled.
4158
4159 A local double-precision divide/modulo module has been added to
4160 enhance portability to OS kernels where a 64-bit math library is
4161 not available.  The new module is "utmath.c".
4162
4163 Several optimizations have been made to reduce the use of CPU
4164 stack.  Originally over 2K, the maximum stack usage is now below
4165 2K at 1860  bytes (1.82k)
4166
4167 Fixed a problem with the AcpiGetFirmwareTable interface where the
4168 root table pointer was not mapped into a logical address
4169 properly.
4170
4171 Fixed a problem where a NULL pointer was being dereferenced in
4172 the
4173 interpreter code for the ASL Notify operator.
4174
4175 Fixed a problem where the use of the ASL Revision operator
4176 returned an error. This operator now returns the current version
4177 of the ACPI CA core subsystem.
4178
4179 Fixed a problem where objects passed as control method parameters
4180 to AcpiEvaluateObject were always deleted at method termination.
4181 However, these objects may end up being stored into the namespace
4182 by the called method.  The object reference count mechanism was
4183 applied to these objects instead of a force delete.
4184
4185 Fixed a problem where static strings or buffers (contained in the
4186 AML code) that are declared as package elements within the ASL
4187 code could cause a fault because the interpreter would attempt to
4188 delete them.  These objects are now marked with the "static
4189 object" flag to prevent any attempt to delete them.
4190
4191 Implemented an interpreter optimization to use operands directly
4192 from the state object instead of extracting the operands to local
4193 variables.  This reduces stack use and code size, and improves
4194 performance.
4195
4196 The module exxface.c was eliminated as it was an unnecessary
4197 extra
4198 layer of code.
4199
4200 Current core subsystem library code sizes are shown below.  These
4201 are the code and data sizes for the acpica.lib produced by the
4202 Microsoft Visual C++ 6.0 compiler, and these values do not
4203 include
4204 any ACPI driver or OSPM code.  The debug version of the code
4205 includes the full debug trace mechanism -- leading to a much
4206 larger code and data size.  Note that these values will vary
4207 depending on the efficiency of the compiler and the compiler
4208 options used during generation.
4209
4210   Non-Debug Version:  65K Code,   5K Data,   70K Total
4211 (Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
4212 Total  (Previously 195K)
4213
4214 Linux:
4215
4216 Support for ACPI 2.0 64-bit integers has been added.   All ACPI
4217 Integer objects are now 64 bits wide
4218
4219 All Acpi data types and structures are now in lower case.  Only
4220 Acpi macros are upper case for differentiation.
4221
4222  Documentation:
4223
4224 Changes to the external interfaces as described above.
4225
4226  ----------------------------------------
4227 Summary of changes for this label: 08_31_01
4228
4229  ACPI CA Core Subsystem:
4230
4231 A bug with interpreter implementation of the ASL Divide operator
4232 was found and fixed.  The implicit function return value (not the
4233 explicit store operands) was returning the remainder instead of
4234 the quotient.  This was a longstanding bug and it fixes several
4235 known outstanding issues on various platforms.
4236
4237 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
4238 been further optimized for size.  There are 700 invocations of
4239 the
4240 DEBUG_PRINT macro alone, so each optimization reduces the size of
4241 the debug version of the subsystem significantly.
4242
4243 A stack trace mechanism has been implemented.  The maximum stack
4244 usage is about 2K on 32-bit platforms.  The debugger command
4245 "stat
4246 stack" will display the current maximum stack usage.
4247
4248 All public symbols and global variables within the subsystem are
4249 now prefixed with the string "Acpi".  This keeps all of the
4250 symbols grouped together in a kernel map, and avoids conflicts
4251 with other kernel subsystems.
4252
4253 Most of the internal fixed lookup tables have been moved into the
4254 code segment via the const operator.
4255
4256 Several enhancements have been made to the interpreter to both
4257 reduce the code size and improve performance.
4258
4259 Current core subsystem library code sizes are shown below.  These
4260 are the code and data sizes for the acpica.lib produced by the
4261 Microsoft Visual C++ 6.0 compiler, and these values do not
4262 include
4263 any ACPI driver or OSPM code.  The debug version of the code
4264 includes the full debug trace mechanism which contains over 700
4265 invocations of the DEBUG_PRINT macro, 500 function entry macro
4266 invocations, and over 900 function exit macro invocations --
4267 leading to a much larger code and data size.  Note that these
4268 values will vary depending on the efficiency of the compiler and
4269 the compiler options used during generation.
4270
4271         Non-Debug Version:  64K Code,   5K Data,   69K Total
4272 Debug Version:     137K Code,  58K Data,  195K Total
4273
4274  Linux:
4275
4276 Implemented wbinvd() macro, pending a kernel-wide definition.
4277
4278 Fixed /proc/acpi/event to handle poll() and short reads.
4279
4280  ASL Compiler, version X2026:
4281
4282 Fixed a problem introduced in the previous label where the AML
4283 code emitted for package objects produced packages with zero
4284 length.
4285
4286  ----------------------------------------
4287 Summary of changes for this label: 08_16_01
4288
4289 ACPI CA Core Subsystem:
4290
4291 The following ACPI 2.0 ASL operators have been implemented in the
4292 AML interpreter (These are already supported by the Intel ASL
4293 compiler):  ToDecimalString, ToHexString, ToString, ToInteger,
4294 and
4295 ToBuffer.  Support for 64-bit AML constants is implemented in the
4296 AML parser, debugger, and disassembler.
4297
4298 The internal memory tracking mechanism (leak detection code) has
4299 been upgraded to reduce the memory overhead (a separate tracking
4300 block is no longer allocated for each memory allocation), and now
4301 supports all of the internal object caches.
4302
4303 The data structures and code for the internal object caches have
4304 been coelesced and optimized so that there is a single cache and
4305 memory list data structure and a single group of functions that
4306 implement generic cache management.  This has reduced the code
4307 size in both the debug and release versions of the subsystem.
4308
4309 The DEBUG_PRINT macro(s) have been optimized for size and
4310 replaced
4311 by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
4312 different, because it generates a single call to an internal
4313 function.  This results in a savings of about 90 bytes per
4314 invocation, resulting in an overall code and data savings of
4315 about
4316 16% in the debug version of the subsystem.
4317
4318  Linux:
4319
4320 Fixed C3 disk corruption problems and re-enabled C3 on supporting
4321 machines.
4322
4323 Integrated low-level sleep code by Patrick Mochel.
4324
4325 Further tweaked source code Linuxization.
4326
4327 Other minor fixes.
4328
4329  ASL Compiler:
4330
4331 Support for ACPI 2.0 variable length packages is fixed/completed.
4332
4333 Fixed a problem where the optional length parameter for the ACPI
4334 2.0 ToString operator.
4335
4336 Fixed multiple extraneous error messages when a syntax error is
4337 detected within the declaration line of a control method.
4338
4339  ----------------------------------------
4340 Summary of changes for this label: 07_17_01
4341
4342 ACPI CA Core Subsystem:
4343
4344 Added a new interface named AcpiGetFirmwareTable to obtain any
4345 ACPI table via the ACPI signature.  The interface can be called
4346 at
4347 any time during kernel initialization, even before the kernel
4348 virtual memory manager is initialized and paging is enabled.
4349 This
4350 allows kernel subsystems to obtain ACPI tables very early, even
4351 before the ACPI CA subsystem is initialized.
4352
4353 Fixed a problem where Fields defined with the AnyAcc attribute
4354 could be resolved to the incorrect address under the following
4355 conditions: 1) the field width is larger than 8 bits and 2) the
4356 parent operation region is not defined on a DWORD boundary.
4357
4358 Fixed a problem where the interpreter is not being locked during
4359 namespace initialization (during execution of the _INI control
4360 methods), causing an error when an attempt is made to release it
4361 later.
4362
4363 ACPI 2.0 support in the AML Interpreter has begun and will be
4364 ongoing throughout the rest of this year.  In this label, The Mod
4365 operator is implemented.
4366
4367 Added a new data type to contain full PCI addresses named
4368 ACPI_PCI_ID. This structure contains the PCI Segment, Bus,
4369 Device,
4370 and Function values.
4371
4372  Linux:
4373
4374 Enhanced the Linux version of the source code to change most
4375 capitalized ACPI type names to lowercase. For example, all
4376 instances of ACPI_STATUS are changed to acpi_status.  This will
4377 result in a large diff, but the change is strictly cosmetic and
4378 aligns the CA code closer to the Linux coding standard.
4379
4380 OSL Interfaces:
4381
4382 The interfaces to the PCI configuration space have been changed
4383 to
4384 add the PCI Segment number and to split the single 32-bit
4385 combined
4386 DeviceFunction field into two 16-bit fields.  This was
4387 accomplished by moving the four values that define an address in
4388 PCI configuration space (segment, bus, device, and function) to
4389 the new ACPI_PCI_ID structure.
4390
4391 The changes to the PCI configuration space interfaces led to a
4392 reexamination of the complete set of address space access
4393 interfaces for PCI, I/O, and Memory.  The previously existing 18
4394 interfaces have proven difficult to maintain (any small change
4395 must be propagated across at least 6 interfaces) and do not
4396 easily
4397 allow for future expansion to 64 bits if necessary.  Also, on
4398 some
4399 systems, it would not be appropriate to demultiplex the access
4400 width (8, 16, 32,or 64) before calling the OSL if the
4401 corresponding native OS interfaces contain a similar access width
4402 parameter.  For these reasons, the 18 address space interfaces
4403 have been replaced by these 6 new ones:
4404
4405 AcpiOsReadPciConfiguration
4406 AcpiOsWritePciConfiguration
4407 AcpiOsReadMemory
4408 AcpiOsWriteMemory
4409 AcpiOsReadPort
4410 AcpiOsWritePort
4411
4412 Added a new interface named AcpiOsGetRootPointer to allow the OSL
4413 to perform the platform and/or OS-specific actions necessary to
4414 obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
4415 interface will simply call down to the CA core to perform the low-
4416 memory search for the table.  On IA-64, the RSDP is obtained from
4417 EFI.  Migrating this interface to the OSL allows the CA core to
4418 remain OS and platform independent.
4419
4420 Added a new interface named AcpiOsSignal to provide a generic
4421 "function code and pointer" interface for various miscellaneous
4422 signals and notifications that must be made to the host OS.   The
4423 first such signals are intended to support the ASL Fatal and
4424 Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
4425 interface has been obsoleted.
4426
4427 The definition of the AcpiFormatException interface has been
4428 changed to simplify its use.  The caller no longer must supply a
4429 buffer to the call; A pointer to a const string is now returned
4430 directly.  This allows the call to be easily used in printf
4431 statements, etc. since the caller does not have to manage a local
4432 buffer.
4433
4434
4435  ASL Compiler, Version X2025:
4436
4437 The ACPI 2.0 Switch/Case/Default operators have been implemented
4438 and are fully functional.  They will work with all ACPI 1.0
4439 interpreters, since the operators are simply translated to
4440 If/Else
4441 pairs.
4442
4443 The ACPI 2.0 ElseIf operator is implemented and will also work
4444 with 1.0 interpreters, for the same reason.
4445
4446 Implemented support for ACPI 2.0 variable-length packages.  These
4447 packages have a separate opcode, and their size is determined by
4448 the interpreter at run-time.
4449
4450 Documentation The ACPI CA Programmer Reference has been updated
4451 to
4452 reflect the new interfaces and changes to existing interfaces.
4453
4454  ------------------------------------------
4455 Summary of changes for this label: 06_15_01
4456
4457  ACPI CA Core Subsystem:
4458
4459 Fixed a problem where a DWORD-accessed field within a Buffer
4460 object would get its byte address inadvertently rounded down to
4461 the nearest DWORD.  Buffers are always Byte-accessible.
4462
4463  ASL Compiler, version X2024:
4464
4465 Fixed a problem where the Switch() operator would either fault or
4466 hang the compiler.  Note however, that the AML code for this ACPI
4467 2.0 operator is not yet implemented.
4468
4469 Compiler uses the new AcpiOsGetTimer interface to obtain compile
4470 timings.
4471
4472 Implementation of the CreateField operator automatically converts
4473 a reference to a named field within a resource descriptor from a
4474 byte offset to a bit offset if required.
4475
4476 Added some missing named fields from the resource descriptor
4477 support. These are the names that are automatically created by
4478 the
4479 compiler to reference fields within a descriptor.  They are only
4480 valid at compile time and are not passed through to the AML
4481 interpreter.
4482
4483 Resource descriptor named fields are now typed as Integers and
4484 subject to compile-time typechecking when used in expressions.
4485
4486  ------------------------------------------
4487 Summary of changes for this label: 05_18_01
4488
4489  ACPI CA Core Subsystem:
4490
4491 Fixed a couple of problems in the Field support code where bits
4492 from adjacent fields could be returned along with the proper
4493 field
4494 bits. Restructured the field support code to improve performance,
4495 readability and maintainability.
4496
4497 New DEBUG_PRINTP macro automatically inserts the procedure name
4498 into the output, saving hundreds of copies of procedure name
4499 strings within the source, shrinking the memory footprint of the
4500 debug version of the core subsystem.
4501
4502  Source Code Structure:
4503
4504 The source code directory tree was restructured to reflect the
4505 current organization of the component architecture.  Some files
4506 and directories have been moved and/or renamed.
4507
4508  Linux:
4509
4510 Fixed leaking kacpidpc processes.
4511
4512 Fixed queueing event data even when /proc/acpi/event is not
4513 opened.
4514
4515  ASL Compiler, version X2020:
4516
4517 Memory allocation performance enhancement - over 24X compile time
4518 improvement on large ASL files.  Parse nodes and namestring
4519 buffers are now allocated from a large internal compiler buffer.
4520
4521 The temporary .SRC file is deleted unless the "-s" option is
4522 specified
4523
4524 The "-d" debug output option now sends all output to the .DBG
4525 file
4526 instead of the console.
4527
4528 "External" second parameter is now optional
4529
4530 "ElseIf" syntax now properly allows the predicate
4531
4532 Last operand to "Load" now recognized as a Target operand
4533
4534 Debug object can now be used anywhere as a normal object.
4535
4536 ResourceTemplate now returns an object of type BUFFER
4537
4538 EISAID now returns an object of type INTEGER
4539
4540 "Index" now works with a STRING operand
4541
4542 "LoadTable" now accepts optional parameters
4543
4544 "ToString" length parameter is now optional
4545
4546 "Interrupt (ResourceType," parse error fixed.
4547
4548 "Register" with a user-defined region space parse error fixed
4549
4550 Escaped backslash at the end of a string ("\\") scan/parse error
4551 fixed
4552
4553 "Revision" is now an object of type INTEGER.
4554
4555
4556
4557 ------------------------------------------
4558 Summary of changes for this label: 05_02_01
4559
4560 Linux:
4561
4562 /proc/acpi/event now blocks properly.
4563
4564 Removed /proc/sys/acpi. You can still dump your DSDT from
4565 /proc/acpi/dsdt.
4566
4567  ACPI CA Core Subsystem:
4568
4569 Fixed a problem introduced in the previous label where some of
4570 the
4571 "small" resource descriptor types were not recognized.
4572
4573 Improved error messages for the case where an ASL Field is
4574 outside
4575 the range of the parent operation region.
4576
4577  ASL Compiler, version X2018:
4578
4579 Added error detection for ASL Fields that extend beyond the
4580 length
4581 of the parent operation region (only if the length of the region
4582 is known at compile time.)  This includes fields that have a
4583 minimum access width that is smaller than the parent region, and
4584 individual field units that are partially or entirely beyond the
4585 extent of the parent.
4586
4587
4588
4589 ------------------------------------------
4590 Summary of changes for this label: 04_27_01
4591
4592  ACPI CA Core Subsystem:
4593
4594 Fixed a problem where the namespace mutex could be released at
4595 the
4596 wrong time during execution of AcpiRemoveAddressSpaceHandler.
4597
4598 Added optional thread ID output for debug traces, to simplify
4599 debugging of multiple threads.  Added context switch notification
4600 when the debug code realizes that a different thread is now
4601 executing ACPI code.
4602
4603 Some additional external data types have been prefixed with the
4604 string "ACPI_" for consistency.  This may effect existing code.
4605 The data types affected are the external callback typedefs -
4606 e.g.,
4607 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
4608
4609  Linux:
4610
4611 Fixed an issue with the OSL semaphore implementation where a
4612 thread was waking up with an error from receiving a SIGCHLD
4613 signal.
4614
4615 Linux version of ACPI CA now uses the system C library for string
4616 manipulation routines instead of a local implementation.
4617
4618 Cleaned up comments and removed TBDs.
4619
4620  ASL Compiler, version X2017:
4621
4622 Enhanced error detection and reporting for all file I/O
4623 operations.
4624
4625  Documentation:
4626
4627 Programmer Reference updated to version 1.06.
4628
4629
4630
4631 ------------------------------------------
4632 Summary of changes for this label: 04_13_01
4633
4634  ACPI CA Core Subsystem:
4635
4636 Restructured support for BufferFields and RegionFields.
4637 BankFields support is now fully operational.  All known 32-bit
4638 limitations on field sizes have been removed.  Both BufferFields
4639 and (Operation) RegionFields are now supported by the same field
4640 management code.
4641
4642 Resource support now supports QWORD address and IO resources. The
4643 16/32/64 bit address structures and the Extended IRQ structure
4644 have been changed to properly handle Source Resource strings.
4645
4646 A ThreadId of -1 is now used to indicate a "mutex not acquired"
4647 condition internally and must never be returned by
4648 AcpiOsThreadId.
4649 This reserved value was changed from 0 since Unix systems allow a
4650 thread ID of 0.
4651
4652 Linux:
4653
4654 Driver code reorganized to enhance portability
4655
4656 Added a kernel configuration option to control ACPI_DEBUG
4657
4658 Fixed the EC driver to honor _GLK.
4659
4660 ASL Compiler, version X2016:
4661
4662 Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
4663 address space was set to 0, not 0x7f as it should be.
4664
4665  ------------------------------------------
4666 Summary of changes for this label: 03_13_01
4667
4668  ACPI CA Core Subsystem:
4669
4670 During ACPI initialization, the _SB_._INI method is now run if
4671 present.
4672
4673 Notify handler fix - notifies are deferred until the parent
4674 method
4675 completes execution.  This fixes the "mutex already acquired"
4676 issue seen occasionally.
4677
4678 Part of the "implicit conversion" rules in ACPI 2.0 have been
4679 found to cause compatibility problems with existing ASL/AML.  The
4680 convert "result-to-target-type" implementation has been removed
4681 for stores to method Args and Locals.  Source operand conversion
4682 is still fully implemented.  Possible changes to ACPI 2.0
4683 specification pending.
4684
4685 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
4686 length.
4687
4688 Fix for compiler warnings for 64-bit compiles.
4689
4690  Linux:
4691
4692 /proc output aligned for easier parsing.
4693
4694 Release-version compile problem fixed.
4695
4696 New kernel configuration options documented in Configure.help.
4697
4698 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
4699 context" message.
4700
4701  OSPM:
4702
4703 Power resource driver integrated with bus manager.
4704
4705 Fixed kernel fault during active cooling for thermal zones.
4706
4707 Source Code:
4708
4709 The source code tree has been restructured.
4710
4711
4712
4713 ------------------------------------------
4714 Summary of changes for this label: 03_02_01
4715
4716  Linux OS Services Layer (OSL):
4717
4718 Major revision of all Linux-specific code.
4719
4720 Modularized all ACPI-specific drivers.
4721
4722 Added new thermal zone and power resource drivers.
4723
4724 Revamped /proc interface (new functionality is under /proc/acpi).
4725
4726 New kernel configuration options.
4727
4728  Linux known issues:
4729
4730 New kernel configuration options not documented in Configure.help
4731 yet.
4732
4733
4734 Module dependencies not currently implemented. If used, they
4735 should be loaded in this order: busmgr, power, ec, system,
4736 processor, battery, ac_adapter, button, thermal.
4737
4738 Modules will not load if CONFIG_MODVERSION is set.
4739
4740 IBM 600E - entering S5 may reboot instead of shutting down.
4741
4742 IBM 600E - Sleep button may generate "Invalid <NULL> context"
4743 message.
4744
4745 Some systems may fail with "execution mutex already acquired"
4746 message.
4747
4748  ACPI CA Core Subsystem:
4749
4750 Added a new OSL Interface, AcpiOsGetThreadId.  This was required
4751 for the  deadlock detection code. Defined to return a non-zero,
4752 32-
4753 bit thread ID for the currently executing thread.  May be a non-
4754 zero constant integer on single-thread systems.
4755
4756 Implemented deadlock detection for internal subsystem mutexes.
4757 We
4758 may add conditional compilation for this code (debug only) later.
4759
4760 ASL/AML Mutex object semantics are now fully supported.  This
4761 includes multiple acquires/releases by owner and support for the
4762 Mutex SyncLevel parameter.
4763
4764 A new "Force Release" mechanism automatically frees all ASL
4765 Mutexes that have been acquired but not released when a thread
4766 exits the interpreter.  This forces conformance to the ACPI spec
4767 ("All mutexes must be released when an invocation exits") and
4768 prevents deadlocked ASL threads.  This mechanism can be expanded
4769 (later) to monitor other resource acquisitions if OEM ASL code
4770 continues to misbehave (which it will).
4771
4772 Several new ACPI exception codes have been added for the Mutex
4773 support.
4774
4775 Recursive method calls are now allowed and supported (the ACPI
4776 spec does in fact allow recursive method calls.)  The number of
4777 recursive calls is subject to the restrictions imposed by the
4778 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
4779 parameter.
4780
4781 Implemented support for the SyncLevel parameter for control
4782 methods (ACPI 2.0 feature)
4783
4784 Fixed a deadlock problem when multiple threads attempted to use
4785 the interpreter.
4786
4787 Fixed a problem where the string length of a String package
4788 element was not always set in a package returned from
4789 AcpiEvaluateObject.
4790
4791 Fixed a problem where the length of a String package element was
4792 not always included in the length of the overall package returned
4793 from AcpiEvaluateObject.
4794
4795 Added external interfaces (Acpi*) to the ACPI debug memory
4796 manager.  This manager keeps a list of all outstanding
4797 allocations, and can therefore detect memory leaks and attempts
4798 to
4799 free memory blocks more than once. Useful for code such as the
4800 power manager, etc.  May not be appropriate for device drivers.
4801 Performance with the debug code enabled is slow.
4802
4803 The ACPI Global Lock is now an optional hardware element.
4804
4805  ASL Compiler Version X2015:
4806
4807 Integrated changes to allow the compiler to be generated on
4808 multiple platforms.
4809
4810 Linux makefile added to generate the compiler on Linux
4811
4812  Source Code:
4813
4814 All platform-specific headers have been moved to their own
4815 subdirectory, Include/Platform.
4816
4817 New source file added, Interpreter/ammutex.c
4818
4819 New header file, Include/acstruct.h
4820
4821  Documentation:
4822
4823 The programmer reference has been updated for the following new
4824 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
4825
4826  ------------------------------------------
4827 Summary of changes for this label: 02_08_01
4828
4829 Core ACPI CA Subsystem: Fixed a problem where an error was
4830 incorrectly returned if the return resource buffer was larger
4831 than
4832 the actual data (in the resource interfaces).
4833
4834 References to named objects within packages are resolved to the
4835 full pathname string before packages are returned directly (via
4836 the AcpiEvaluateObject interface) or indirectly via the resource
4837 interfaces.
4838
4839 Linux OS Services Layer (OSL):
4840
4841 Improved /proc battery interface.
4842
4843
4844 Added C-state debugging output and other miscellaneous fixes.
4845
4846 ASL Compiler Version X2014:
4847
4848 All defined method arguments can now be used as local variables,
4849 including the ones that are not actually passed in as parameters.
4850 The compiler tracks initialization of the arguments and issues an
4851 exception if they are used without prior assignment (just like
4852 locals).
4853
4854 The -o option now specifies a filename prefix that is used for
4855 all
4856 output files, including the AML output file.  Otherwise, the
4857 default behavior is as follows:  1) the AML goes to the file
4858 specified in the DSDT.  2) all other output files use the input
4859 source filename as the base.
4860
4861  ------------------------------------------
4862 Summary of changes for this label: 01_25_01
4863
4864 Core ACPI CA Subsystem: Restructured the implementation of object
4865 store support within the  interpreter.  This includes support for
4866 the Store operator as well  as any ASL operators that include a
4867 target operand.
4868
4869 Partially implemented support for Implicit Result-to-Target
4870 conversion. This is when a result object is converted on the fly
4871 to the type of  an existing target object.  Completion of this
4872 support is pending  further analysis of the ACPI specification
4873 concerning this matter.
4874
4875 CPU-specific code has been removed from the subsystem (hardware
4876 directory).
4877
4878 New Power Management Timer functions added
4879
4880 Linux OS Services Layer (OSL): Moved system state transition code
4881 to the core, fixed it, and modified  Linux OSL accordingly.
4882
4883 Fixed C2 and C3 latency calculations.
4884
4885
4886 We no longer use the compilation date for the version message on
4887 initialization, but retrieve the version from
4888 AcpiGetSystemInfo().
4889
4890 Incorporated for fix Sony VAIO machines.
4891
4892 Documentation:  The Programmer Reference has been updated and
4893 reformatted.
4894
4895
4896 ASL Compiler:  Version X2013: Fixed a problem where the line
4897 numbering and error reporting could get out  of sync in the
4898 presence of multiple include files.
4899
4900  ------------------------------------------
4901 Summary of changes for this label: 01_15_01
4902
4903 Core ACPI CA Subsystem:
4904
4905 Implemented support for type conversions in the execution of the
4906 ASL  Concatenate operator (The second operand is converted to
4907 match the type  of the first operand before concatenation.)
4908
4909 Support for implicit source operand conversion is partially
4910 implemented.   The ASL source operand types Integer, Buffer, and
4911 String are freely  interchangeable for most ASL operators and are
4912 converted by the interpreter  on the fly as required.  Implicit
4913 Target operand conversion (where the  result is converted to the
4914 target type before storing) is not yet implemented.
4915
4916 Support for 32-bit and 64-bit BCD integers is implemented.
4917
4918 Problem fixed where a field read on an aligned field could cause
4919 a
4920 read  past the end of the field.
4921
4922 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
4923 does not return a value, but the caller expects one.  (The ASL
4924 compiler flags this as a warning.)
4925
4926 ASL Compiler:
4927
4928 Version X2011:
4929 1. Static typechecking of all operands is implemented. This
4930 prevents the use of invalid objects (such as using a Package
4931 where
4932 an Integer is required) at compile time instead of at interpreter
4933 run-time.
4934 2. The ASL source line is printed with ALL errors and warnings.
4935 3. Bug fix for source EOF without final linefeed.
4936 4. Debug option is split into a parse trace and a namespace
4937 trace.
4938 5. Namespace output option (-n) includes initial values for
4939 integers and strings.
4940 6. Parse-only option added for quick syntax checking.
4941 7. Compiler checks for duplicate ACPI name declarations
4942
4943 Version X2012:
4944 1. Relaxed typechecking to allow interchangeability between
4945 strings, integers, and buffers.  These types are now converted by
4946 the interpreter at runtime.
4947 2. Compiler reports time taken by each internal subsystem in the
4948 debug         output file.
4949
4950
4951  ------------------------------------------
4952 Summary of changes for this label: 12_14_00
4953
4954 ASL Compiler:
4955
4956 This is the first official release of the compiler. Since the
4957 compiler requires elements of the Core Subsystem, this label
4958 synchronizes everything.
4959
4960 ------------------------------------------
4961 Summary of changes for this label: 12_08_00
4962
4963
4964 Fixed a problem where named references within the ASL definition
4965 of both OperationRegions and CreateXXXFields did not work
4966 properly.  The symptom was an AE_AML_OPERAND_TYPE during
4967 initialization of the region/field. This is similar (but not
4968 related internally) to the problem that was fixed in the last
4969 label.
4970
4971 Implemented both 32-bit and 64-bit support for the BCD ASL
4972 functions ToBCD and FromBCD.
4973
4974 Updated all legal headers to include "2000" in the copyright
4975 years.
4976
4977  ------------------------------------------
4978 Summary of changes for this label: 12_01_00
4979
4980 Fixed a problem where method invocations within the ASL
4981 definition
4982 of both OperationRegions and CreateXXXFields did not work
4983 properly.  The symptom was an AE_AML_OPERAND_TYPE during
4984 initialization of the region/field:
4985
4986   nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
4987 [DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
4988 (0x3005)
4989
4990 Fixed a problem where operators with more than one nested
4991 subexpression would fail.  The symptoms were varied, by mostly
4992 AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
4993 problem that has gone unnoticed until now.
4994
4995   Subtract (Add (1,2), Multiply (3,4))
4996
4997 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
4998 previous build (The prefix part of a relative path was handled
4999 incorrectly).
5000
5001 Fixed a problem where Operation Region initialization failed if
5002 the operation region name was a "namepath" instead of a simple
5003 "nameseg". Symptom was an AE_NO_OPERAND error.
5004
5005 Fixed a problem where an assignment to a local variable via the
5006 indirect RefOf mechanism only worked for the first such
5007 assignment.  Subsequent assignments were ignored.
5008
5009  ------------------------------------------
5010 Summary of changes for this label: 11_15_00
5011
5012 ACPI 2.0 table support with backwards support for ACPI 1.0 and
5013 the
5014 0.71 extensions.  Note: although we can read ACPI 2.0 BIOS
5015 tables,
5016 the AML  interpreter does NOT have support for the new 2.0 ASL
5017 grammar terms at this time.
5018
5019 All ACPI hardware access is via the GAS structures in the ACPI
5020 2.0
5021 FADT.
5022
5023 All physical memory addresses across all platforms are now 64
5024 bits
5025 wide. Logical address width remains dependent on the platform
5026 (i.e., "void *").
5027
5028 AcpiOsMapMemory interface changed to a 64-bit physical address.
5029
5030 The AML interpreter integer size is now 64 bits, as per the ACPI
5031 2.0 specification.
5032
5033 For backwards compatibility with ACPI 1.0, ACPI tables with a
5034 revision number less than 2 use 32-bit integers only.
5035
5036 Fixed a problem where the evaluation of OpRegion operands did not
5037 always resolve them to numbers properly.
5038
5039 ------------------------------------------
5040 Summary of changes for this label: 10_20_00
5041
5042 Fix for CBN_._STA issue.  This fix will allow correct access to
5043 CBN_ OpRegions when the _STA returns 0x8.
5044
5045 Support to convert ACPI constants (Ones, Zeros, One) to actual
5046 values before a package object is returned
5047
5048 Fix for method call as predicate to if/while construct causing
5049 incorrect if/while behavior
5050
5051 Fix for Else block package lengths sometimes calculated wrong (if
5052 block > 63 bytes)
5053
5054 Fix for Processor object length field, was always zero
5055
5056 Table load abort if FACP sanity check fails
5057
5058 Fix for problem with Scope(name) if name already exists
5059
5060 Warning emitted if a named object referenced cannot be found
5061 (resolved) during method execution.
5062
5063
5064
5065
5066
5067 ------------------------------------------
5068 Summary of changes for this label: 9_29_00
5069
5070 New table initialization interfaces: AcpiInitializeSubsystem no
5071 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
5072 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
5073 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
5074 AcpiLoadTables
5075
5076 Note: These interface changes require changes to all existing
5077 OSDs
5078
5079 The PCI_Config default address space handler is always installed
5080 at the root namespace object.
5081
5082 -------------------------------------------
5083 Summary of changes for this label: 09_15_00
5084
5085 The new initialization architecture is implemented.  New
5086 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
5087 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
5088 (Namespace is automatically loaded when a table is loaded)
5089
5090 The ACPI_OPERAND_OBJECT has been optimized to shrink its size
5091 from
5092 52 bytes to 32 bytes.  There is usually one of these for every
5093 namespace object, so the memory savings is significant.
5094
5095 Implemented just-in-time evaluation of the CreateField operators.
5096
5097 Bug fixes for IA-64 support have been integrated.
5098
5099 Additional code review comments have been implemented
5100
5101 The so-called "third pass parse" has been replaced by a final
5102 walk
5103 through the namespace to initialize all operation regions
5104 (address
5105 spaces) and fields that have not yet been initialized during the
5106 execution of the various _INI and REG methods.
5107
5108 New file - namespace/nsinit.c
5109
5110 -------------------------------------------
5111 Summary of changes for this label: 09_01_00
5112
5113 Namespace manager data structures have been reworked to change
5114 the
5115 primary  object from a table to a single object.  This has
5116 resulted in dynamic memory  savings of 3X within the namespace
5117 and
5118 2X overall in the ACPI CA subsystem.
5119
5120 Fixed problem where the call to AcpiEvFindPciRootBuses was
5121 inadvertently left  commented out.
5122
5123 Reduced the warning count when generating the source with the GCC
5124 compiler.
5125
5126 Revision numbers added to each module header showing the
5127 SourceSafe version of the file.  Please refer to this version
5128 number when giving us feedback or comments on individual modules.
5129
5130 The main object types within the subsystem have been renamed to
5131 clarify their  purpose:
5132
5133 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
5134 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
5135 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
5136
5137 NOTE: no changes to the initialization sequence are included in
5138 this label.
5139
5140 -------------------------------------------
5141 Summary of changes for this label: 08_23_00
5142
5143 Fixed problem where TerminateControlMethod was being called
5144 multiple times per  method
5145
5146 Fixed debugger problem where single stepping caused a semaphore
5147 to
5148 be  oversignalled
5149
5150 Improved performance through additional parse object caching -
5151 added  ACPI_EXTENDED_OP type
5152
5153 -------------------------------------------
5154 Summary of changes for this label: 08_10_00
5155
5156 Parser/Interpreter integration:  Eliminated the creation of
5157 complete parse trees  for ACPI tables and control methods.
5158 Instead, parse subtrees are created and  then deleted as soon as
5159 they are processed (Either entered into the namespace or
5160 executed
5161 by the interpreter).  This reduces the use of dynamic kernel
5162 memory  significantly. (about 10X)
5163
5164 Exception codes broken into classes and renumbered.  Be sure to
5165 recompile all  code that includes acexcep.h.  Hopefully we won't
5166 have to renumber the codes  again now that they are split into
5167 classes (environment, programmer, AML code,  ACPI table, and
5168 internal).
5169
5170 Fixed some additional alignment issues in the Resource Manager
5171 subcomponent
5172
5173 Implemented semaphore tracking in the AcpiExec utility, and fixed
5174 several places  where mutexes/semaphores were being unlocked
5175 without a corresponding lock  operation.  There are no known
5176 semaphore or mutex "leaks" at this time.
5177
5178 Fixed the case where an ASL Return operator is used to return an
5179 unnamed  package.
5180
5181 -------------------------------------------
5182 Summary of changes for this label: 07_28_00
5183
5184 Fixed a problem with the way addresses were calculated in
5185 AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
5186 manifested itself when a Field was  created with WordAccess or
5187 DwordAccess, but the field unit defined within the  Field was
5188 less
5189 than a Word or Dword.
5190
5191 Fixed a problem in AmlDumpOperands() module's loop to pull
5192 operands off of the  operand stack to display information. The
5193 problem manifested itself as a TLB  error on 64-bit systems when
5194 accessing an operand stack with two or more  operands.
5195
5196 Fixed a problem with the PCI configuration space handlers where
5197 context was  getting confused between accesses. This required a
5198 change to the generic address  space handler and address space
5199 setup definitions. Handlers now get both a  global handler
5200 context
5201 (this is the one passed in by the user when executing
5202 AcpiInstallAddressSpaceHandler() and a specific region context
5203 that is unique to  each region (For example, the _ADR, _SEG and
5204 _BBN values associated with a  specific region). The generic
5205 function definitions have changed to the  following:
5206
5207 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
5208 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
5209 *HandlerContext, // This used to be void *Context void
5210 *RegionContext); // This is an additional parameter
5211
5212 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
5213 RegionHandle, UINT32 Function, void *HandlerContext,  void
5214 **RegionContext); // This used to be **ReturnContext
5215
5216 -------------------------------------------
5217 Summary of changes for this label: 07_21_00
5218
5219 Major file consolidation and rename.  All files within the
5220 interpreter have been  renamed as well as most header files.
5221 This
5222 was done to prevent collisions with  existing files in the host
5223 OSs -- filenames such as "config.h" and "global.h"  seem to be
5224 quite common.  The VC project files have been updated.  All
5225 makefiles  will require modification.
5226
5227 The parser/interpreter integration continues in Phase 5 with the
5228 implementation  of a complete 2-pass parse (the AML is parsed
5229 twice) for each table;  This  avoids the construction of a huge
5230 parse tree and therefore reduces the amount of  dynamic memory
5231 required by the subsystem.  Greater use of the parse object cache
5232 means that performance is unaffected.
5233
5234 Many comments from the two code reviews have been rolled in.
5235
5236 The 64-bit alignment support is complete.
5237
5238 -------------------------------------------
5239 Summary of changes for this label: 06_30_00
5240
5241 With a nod and a tip of the hat to the technology of yesteryear,
5242 we've added  support in the source code for 80 column output
5243 devices.  The code is now mostly  constrained to 80 columns or
5244 less to support environments and editors that 1)  cannot display
5245 or print more than 80 characters on a single line, and 2) cannot
5246 disable line wrapping.
5247
5248 A major restructuring of the namespace data structure has been
5249 completed.  The  result is 1) cleaner and more
5250 understandable/maintainable code, and 2) a  significant reduction
5251 in the dynamic memory requirement for each named ACPI  object
5252 (almost half).
5253
5254 -------------------------------------------
5255 Summary of changes for this label: 06_23_00
5256
5257 Linux support has been added.  In order to obtain approval to get
5258 the ACPI CA  subsystem into the Linux kernel, we've had to make
5259 quite a few changes to the  base subsystem that will affect all
5260 users (all the changes are generic and OS- independent).  The
5261 effects of these global changes have been somewhat far  reaching.
5262 Files have been merged and/or renamed and interfaces have been
5263 renamed.   The major changes are described below.
5264
5265 Osd* interfaces renamed to AcpiOs* to eliminate namespace
5266 pollution/confusion  within our target kernels.  All OSD
5267 interfaces must be modified to match the new  naming convention.
5268
5269 Files merged across the subsystem.  A number of the smaller
5270 source
5271 and header  files have been merged to reduce the file count and
5272 increase the density of the  existing files.  There are too many
5273 to list here.  In general, makefiles that  call out individual
5274 files will require rebuilding.
5275
5276 Interpreter files renamed.  All interpreter files now have the
5277 prefix am*  instead of ie* and is*.
5278
5279 Header files renamed:  The acapi.h file is now acpixf.h.  The
5280 acpiosd.h file is  now acpiosxf.h.  We are removing references to
5281 the acronym "API" since it is  somewhat windowsy. The new name is
5282 "external interface" or xface or xf in the  filenames.j
5283
5284
5285 All manifest constants have been forced to upper case (some were
5286 mixed case.)   Also, the string "ACPI_" has been prepended to
5287 many
5288 (not all) of the constants,  typedefs, and structs.
5289
5290 The globals "DebugLevel" and "DebugLayer" have been renamed
5291 "AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
5292
5293 All other globals within the subsystem are now prefixed with
5294 "AcpiGbl_" Internal procedures within the subsystem are now
5295 prefixed with "Acpi" (with only  a few exceptions).  The original
5296 two-letter abbreviation for the subcomponent  remains after
5297 "Acpi"
5298 - for example, CmCallocate became AcpiCmCallocate.
5299
5300 Added a source code translation/conversion utility.  Used to
5301 generate the Linux  source code, it can be modified to generate
5302 other types of source as well. Can  also be used to cleanup
5303 existing source by removing extraneous spaces and blank  lines.
5304 Found in tools/acpisrc/*
5305
5306 OsdUnMapMemory was renamed to OsdUnmapMemory and then
5307 AcpiOsUnmapMemory.  (UnMap  became Unmap).
5308
5309 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
5310 When set to  one, this indicates that the caller wants to use the
5311 semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
5312 both types.  However, implementers of this  call may want to use
5313 different OS primitives depending on the type of semaphore
5314 requested.  For example, some operating systems provide separate
5315 "mutex" and  "semaphore" interfaces - where the mutex interface
5316 is
5317 much faster because it  doesn't have all the overhead of a full
5318 semaphore implementation.
5319
5320 Fixed a deadlock problem where a method that accesses the PCI
5321 address space can  block forever if it is the first access to the
5322 space.
5323
5324 -------------------------------------------
5325 Summary of changes for this label: 06_02_00
5326
5327 Support for environments that cannot handle unaligned data
5328 accesses (e.g.  firmware and OS environments devoid of alignment
5329 handler technology namely  SAL/EFI and the IA-64 Linux kernel)
5330 has
5331 been added (via configurable macros) in  these three areas: -
5332 Transfer of data from the raw AML byte stream is done via byte
5333 moves instead of    word/dword/qword moves. - External objects
5334 are
5335 aligned within the user buffer, including package   elements (sub-
5336 objects). - Conversion of name strings to UINT32 Acpi Names is
5337 now
5338 done byte-wise.
5339
5340 The Store operator was modified to mimic Microsoft's
5341 implementation when storing  to a Buffer Field.
5342
5343 Added a check of the BM_STS bit before entering C3.
5344
5345 The methods subdirectory has been obsoleted and removed.  A new
5346 file, cmeval.c  subsumes the functionality.
5347
5348 A 16-bit (DOS) version of AcpiExec has been developed.  The
5349 makefile is under  the acpiexec directory.