Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1498 serge 1
----------------------------------------
2
28 May 2010. Summary of changes for version 20100528:
3
 
4
This release is available at www.acpica.org/downloads
5
 
6
Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7
available at www.acpi.info. This is primarily an errata release.
8
 
9
1) ACPI CA Core Subsystem:
10
 
11
Undefined ACPI tables: We are looking for the definitions for the following
12
ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
13
 
14
Implemented support to enable multi-byte transfers for Embedded Controller
15
(EC) operation regions. Previously, the maximum data size passed to the EC
16
operation region handler was a single byte. There are often EC Fields larger
17
than one byte that need to be transferred, and it is useful for the EC driver
18
to lock these as a single transaction. This change enables single transfers
19
larger than 8 bits. This effectively changes the access to the EC space from
20
ByteAcc to AnyAcc, and will probably require changes to the host OS Embedded
21
Controller driver to enable 16/32/64/256-bit transfers in addition to 8-bit
22
transfers. Alexey Starikovskiy, Lin Ming
23
 
24
Implemented a performance enhancement for namespace search and access. This
25
change enhances the performance of namespace searches and walks by adding a
26
backpointer to the parent in each namespace node. On large namespaces, this
27
change can improve overall ACPI performance by up to 9X. Adding a pointer to
28
each namespace node increases the overall size of the internal namespace by
29
about 5%, since each namespace entry usually consists of both a namespace
30
node and an ACPI operand object. However, this is the first growth of the
31
namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
32
 
33
Implemented a performance optimization that reduces the number of namespace
34
walks. On control method exit, only walk the namespace if the method is known
35
to have created namespace objects outside of its local scope. Previously, the
36
entire namespace was traversed on each control method exit. This change can
37
improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob Moore.
38
 
39
Added support to truncate I/O addresses to 16 bits for Windows compatibility.
40
Some ASL code has been seen in the field that inadvertently has bits set
41
above bit 15. This feature is optional and is enabled if the BIOS requests
42
any Windows OSI strings. It can also be enabled by the host OS. Matthew
43
Garrett, Bob Moore.
44
 
45
Added support to limit the maximum time for the ASL Sleep() operator. To
46
prevent accidental deep sleeps, limit the maximum time that Sleep() will
47
actually sleep. Configurable, the default maximum is two seconds. ACPICA
48
bugzilla 854.
49
 
50
Added run-time validation support for the _WDG and_WED Microsoft predefined
51
methods. These objects are defined by "Windows Instrumentation", and are not
52
part of the ACPI spec. ACPICA BZ 860.
53
 
54
Expanded all statistic counters used during namespace and device
55
initialization from 16 to 32 bits in order to support very large namespaces.
56
 
57
Replaced all instances of %d in printf format specifiers with %u since nearly
58
all integers in ACPICA are unsigned.
59
 
60
Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly returned
61
as AE_NO_HANDLER.
62
 
63
Example Code and Data Size: These are the sizes for the OS-independent
64
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
65
debug version of the code includes the debug output trace mechanism and has a
66
much larger code and data size.
67
 
68
  Previous Release:
69
    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
70
    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
71
  Current Release:
72
    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
73
    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
74
 
75
2) iASL Compiler/Disassembler and Tools:
76
 
77
iASL: Added compiler support for the _WDG and_WED Microsoft predefined
78
methods. These objects are defined by "Windows Instrumentation", and are not
79
part of the ACPI spec. ACPICA BZ 860.
80
 
81
AcpiExec: added option to disable the memory tracking mechanism. The -dt
82
option will disable the tracking mechanism, which improves performance
83
considerably.
84
 
85
AcpiExec: Restructured the command line options into -d (disable) and -e
86
(enable) options.
87
 
88
----------------------------------------
89
28 April 2010. Summary of changes for version 20100428:
90
 
91
1) ACPI CA Core Subsystem:
92
 
93
Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
94
including FADT-based and GPE Block Devices, execute any _PRW methods in the
95
new table, and process any _Lxx/_Exx GPE methods in the new table. Any
96
runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
97
immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
98
Devices. Provides compatibility with other ACPI implementations. Two new
99
files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob Moore.
100
 
101
Fixed a regression introduced in version 20100331 within the table manager
102
where initial table loading could fail. This was introduced in the fix for
103
AcpiReallocateRootTable. Also, renamed some of fields in the table manager
104
data structures to clarify their meaning and use.
105
 
106
Fixed a possible allocation overrun during internal object copy in
107
AcpiUtCopySimpleObject. The original code did not correctly handle the case
108
where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 847.
109
 
110
Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
111
possible access beyond end-of-allocation. Also, now fully validate descriptor
112
(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
113
 
114
Example Code and Data Size: These are the sizes for the OS-independent
115
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
116
debug version of the code includes the debug output trace mechanism and has a
117
much larger code and data size.
118
 
119
  Previous Release:
120
    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
121
    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
122
  Current Release:
123
    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
124
    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
125
 
126
2) iASL Compiler/Disassembler and Tools:
127
 
128
iASL: Implemented Min/Max/Len/Gran validation for address resource
129
descriptors. This change implements validation for the address fields that
130
are common to all address-type resource descriptors. These checks are
131
implemented: Checks for valid Min/Max, length within the Min/Max window,
132
valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per
133
table 6-40 in the ACPI 4.0a specification. Also split the large aslrestype1.c
134
and aslrestype2.c files into five new files. ACPICA BZ 840.
135
 
136
iASL: Added support for the _Wxx predefined names. This support was missing
137
and these names were not recognized by the compiler as valid predefined
138
names. ACPICA BZ 851.
139
 
140
iASL: Added an error for all predefined names that are defined to return no
141
value and thus must be implemented as Control Methods. These include all of
142
the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
143
names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
144
 
145
iASL: Implemented the -ts option to emit hex AML data in ASL format, as an
146
ASL Buffer. Allows ACPI tables to be easily included within ASL files, to be
147
dynamically loaded via the Load() operator. Also cleaned up output for the -
148
ta and -tc options. ACPICA BZ 853.
149
 
150
Tests: Added a new file with examples of extended iASL error checking.
151
Demonstrates the advanced error checking ability of the iASL compiler.
152
Available at tests/misc/badcode.asl.
153
 
154
----------------------------------------
155
31 March 2010. Summary of changes for version 20100331:
156
 
157
1) ACPI CA Core Subsystem:
158
 
159
Completed a major update for the GPE support in order to improve support for
160
shared GPEs and to simplify both host OS and ACPICA code. Added a reference
161
count mechanism to support shared GPEs that require multiple device drivers.
162
Several external interfaces have changed. One external interface has been
163
removed. One new external interface was added. Most of the GPE external
164
interfaces now use the GPE spinlock instead of the events mutex (and the
165
Flags parameter for many GPE interfaces has been removed.) See the updated
166
ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, Rafael
167
Wysocki. ACPICA BZ 831.
168
 
169
Changed:
170
    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
171
Removed:
172
    AcpiSetGpeType
173
New:
174
    AcpiSetGpe
175
 
176
Implemented write support for DataTable operation regions. These regions are
177
defined via the DataTableRegion() operator. Previously, only read support was
178
implemented. The ACPI specification allows DataTableRegions to be read/write,
179
however.
180
 
181
Implemented a new subsystem option to force a copy of the DSDT to local
182
memory. Optionally copy the entire DSDT to local memory (instead of simply
183
mapping it.) There are some (albeit very rare) BIOSs that corrupt or replace
184
the original DSDT, creating the need for this option. Default is FALSE, do
185
not copy the DSDT.
186
 
187
Implemented detection of a corrupted or replaced DSDT. This change adds
188
support to detect a DSDT that has been corrupted and/or replaced from outside
189
the OS (by firmware). This is typically catastrophic for the system, but has
190
been seen on some machines. Once this problem has been detected, the DSDT
191
copy option can be enabled via system configuration. Lin Ming, Bob Moore.
192
 
193
Fixed two problems with AcpiReallocateRootTable during the root table copy.
194
When copying the root table to the new allocation, the length used was
195
incorrect. The new size was used instead of the current table size, meaning
196
too much data was copied. Also, the count of available slots for ACPI tables
197
was not set correctly. Alexey Starikovskiy, Bob Moore.
198
 
199
Example Code and Data Size: These are the sizes for the OS-independent
200
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
201
debug version of the code includes the debug output trace mechanism and has a
202
much larger code and data size.
203
 
204
  Previous Release:
205
    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
206
    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
207
  Current Release:
208
    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
209
    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
210
 
211
2) iASL Compiler/Disassembler and Tools:
212
 
213
iASL: Implement limited typechecking for values returned from predefined
214
control methods. The type of any returned static (unnamed) object is now
215
validated. For example, Return(1). ACPICA BZ 786.
216
 
217
iASL: Fixed a predefined name object verification regression. Fixes a problem
218
introduced in version 20100304. An error is incorrectly generated if a
219
predefined name is declared as a static named object with a value defined
220
using the keywords "Zero", "One", or "Ones". Lin Ming.
221
 
222
iASL: Added Windows 7 support for the -g option (get local ACPI tables) by
223
reducing the requested registry access rights. ACPICA BZ 842.
224
 
225
Disassembler: fixed a possible fault when generating External() statements.
226
Introduced in commit ae7d6fd: Properly handle externals with parent-prefix
227
(carat). Fixes a string length allocation calculation. Lin Ming.
228
 
229
----------------------------------------
230
04 March 2010. Summary of changes for version 20100304:
231
 
232
1) ACPI CA Core Subsystem:
233
 
234
Fixed a possible problem with the AML Mutex handling function
235
AcpiExReleaseMutex where the function could fault under the very rare
236
condition when the interpreter has blocked, the interpreter lock is released,
237
the interpreter is then reentered via the same thread, and attempts to
238
acquire an AML mutex that was previously acquired. FreeBSD report 140979. Lin
239
Ming.
240
 
241
Implemented additional configuration support for the AML "Debug Object".
242
Output from the debug object can now be enabled via a global variable,
243
AcpiGbl_EnableAmlDebugObject. This will assist with remote machine debugging.
244
This debug output is now available in the release version of ACPICA instead
245
of just the debug version. Also, the entire debug output module can now be
246
configured out of the ACPICA build if desired. One new file added,
247
executer/exdebug.c. Lin Ming, Bob Moore.
248
 
249
Added header support for the ACPI MCHI table (Management Controller Host
250
Interface Table). This table was added in ACPI 4.0, but the defining document
251
has only recently become available.
252
 
253
Standardized output of integer values for ACPICA warnings/errors. Always use
254
0x prefix for hex output, always use %u for unsigned integer decimal output.
255
Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400
256
invocations.) These invocations were converted from the original
257
ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
258
 
259
Example Code and Data Size: These are the sizes for the OS-independent
260
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
261
debug version of the code includes the debug output trace mechanism and has a
262
much larger code and data size.
263
 
264
  Previous Release:
265
    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
266
    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
267
  Current Release:
268
    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
269
    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
270
 
271
2) iASL Compiler/Disassembler and Tools:
272
 
273
iASL: Implemented typechecking support for static (non-control method)
274
predefined named objects that are declared with the Name() operator. For
275
example, the type of this object is now validated to be of type Integer:
276
Name(_BBN, 1). This change migrates the compiler to using the core predefined
277
name table instead of maintaining a local version. Added a new file,
278
aslpredef.c. ACPICA BZ 832.
279
 
280
Disassembler: Added support for the ACPI 4.0 MCHI table.
281
 
282
----------------------------------------
283
21 January 2010. Summary of changes for version 20100121:
284
 
285
1) ACPI CA Core Subsystem:
286
 
287
Added the 2010 copyright to all module headers and signons. This affects
288
virtually every file in the ACPICA core subsystem, the iASL compiler, the
289
tools/utilities, and the test suites.
290
 
291
Implemented a change to the AcpiGetDevices interface to eliminate unnecessary
292
invocations of the _STA method. In the case where a specific _HID is
293
requested, do not run _STA until a _HID match is found. This eliminates
294
potentially dozens of _STA calls during a search for a particular device/HID,
295
which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
296
 
297
Implemented an additional repair for predefined method return values. Attempt
298
to repair unexpected NULL elements within returned Package objects. Create an
299
Integer of value zero, a NULL String, or a zero-length Buffer as appropriate.
300
ACPICA BZ 818. Lin Ming, Bob Moore.
301
 
302
Removed the obsolete ACPI_INTEGER data type. This type was introduced as the
303
code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 (with
304
64-bit AML integers). It is now obsolete and this change removes it from the
305
ACPICA code base, replaced by UINT64. The original typedef has been retained
306
for now for compatibility with existing device driver code. ACPICA BZ 824.
307
 
308
Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in
309
the parse tree object.
310
 
311
Added additional warning options for the gcc-4 generation. Updated the source
312
accordingly. This includes some code restructuring to eliminate unreachable
313
code, elimination of some gotos, elimination of unused return values, some
314
additional casting, and removal of redundant declarations.
315
 
316
Example Code and Data Size: These are the sizes for the OS-independent
317
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
318
debug version of the code includes the debug output trace mechanism and has a
319
much larger code and data size.
320
 
321
  Previous Release:
322
    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
323
    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
324
  Current Release:
325
    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
326
    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
327
 
328
2) iASL Compiler/Disassembler and Tools:
329
 
330
No functional changes for this release.
331
 
332
----------------------------------------
333
14 December 2009. Summary of changes for version 20091214:
334
 
335
1) ACPI CA Core Subsystem:
336
 
337
Enhanced automatic data type conversions for predefined name repairs. This
338
change expands the automatic repairs/conversions for predefined name return
339
values to make Integers, Strings, and Buffers fully interchangeable. Also, a
340
Buffer can be converted to a Package of Integers if necessary. The nsrepair.c
341
module was completely restructured. Lin Ming, Bob Moore.
342
 
343
Implemented automatic removal of null package elements during predefined name
344
repairs. This change will automatically remove embedded and trailing NULL
345
package elements from returned package objects that are defined to contain a
346
variable number of sub-packages. The driver is then presented with a package
347
with no null elements to deal with. ACPICA BZ 819.
348
 
349
Implemented a repair for the predefined _FDE and _GTM names. The expected
350
return value for both names is a Buffer of 5 DWORDs. This repair fixes two
351
possible problems (both seen in the field), where a package of integers is
352
returned, or a buffer of BYTEs is returned. With assistance from Jung-uk Kim.
353
 
354
Implemented additional module-level code support. This change will properly
355
execute module-level code that is not at the root of the namespace (under a
356
Device object, etc.). Now executes the code within the current scope instead
357
of the root. ACPICA BZ 762. Lin Ming.
358
 
359
Fixed possible mutex acquisition errors when running _REG methods. Fixes a
360
problem where mutex errors can occur when running a _REG method that is in
361
the same scope as a method-defined operation region or an operation region
362
under a module-level IF block. This type of code is rare, so the problem has
363
not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
364
 
365
Fixed a possible memory leak during module-level code execution. An object
366
could be leaked for each block of executed module-level code if the
367
interpreter slack mode is enabled This change deletes any implicitly returned
368
object from the module-level code block. Lin Ming.
369
 
370
Removed messages for successful predefined repair(s). The repair mechanism
371
was considered too wordy. Now, messages are only unconditionally emitted if
372
the return object cannot be repaired. Existing messages for successful
373
repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 827.
374
 
375
Example Code and Data Size: These are the sizes for the OS-independent
376
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
377
debug version of the code includes the debug output trace mechanism and has a
378
much larger code and data size.
379
 
380
  Previous Release:
381
    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
382
    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
383
  Current Release:
384
    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
385
    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
386
 
387
2) iASL Compiler/Disassembler and Tools:
388
 
389
iASL: Fixed a regression introduced in 20091112 where intermediate .SRC files
390
were no longer automatically removed at the termination of the compile.
391
 
392
acpiexec: Implemented the -f option to specify default region fill value.
393
This option specifies the value used to initialize buffers that simulate
394
operation regions. Default value is zero. Useful for debugging problems that
395
depend on a specific initial value for a region or field.
396
 
397
----------------------------------------
398
12 November 2009. Summary of changes for version 20091112:
399
 
400
1) ACPI CA Core Subsystem:
401
 
402
Implemented a post-order callback to AcpiWalkNamespace. The existing
403
interface only has a pre-order callback. This change adds an additional
404
parameter for a post-order callback which will be more useful for bus scans.
405
ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
406
 
407
Modified the behavior of the operation region memory mapping cache for
408
SystemMemory. Ensure that the memory mappings created for operation regions
409
do not cross 4K page boundaries. Crossing a page boundary while mapping
410
regions can cause kernel warnings on some hosts if the pages have different
411
attributes. Such regions are probably BIOS bugs, and this is the workaround.
412
Linux BZ 14445. Lin Ming.
413
 
414
Implemented an automatic repair for predefined methods that must return
415
sorted lists. This change will repair (by sorting) packages returned by _ALR,
416
_PSS, and _TSS. Drivers can now assume that the packages are correctly sorted
417
and do not contain NULL package elements. Adds one new file,
418
namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
419
 
420
Fixed a possible fault during predefined name validation if a return Package
421
object contains NULL elements. Also adds a warning if a NULL element is
422
followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement may
423
include repair or removal of all such NULL elements where possible.
424
 
425
Implemented additional module-level executable AML code support. This change
426
will execute module-level code that is not at the root of the namespace
427
(under a Device object, etc.) at table load time. Module-level executable AML
428
code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
429
 
430
Implemented a new internal function to create Integer objects. This function
431
simplifies miscellaneous object creation code. ACPICA BZ 823.
432
 
433
Reduced the severity of predefined repair messages, Warning to Info. Since
434
the object was successfully repaired, a warning is too severe. Reduced to an
435
info message for now. These messages may eventually be changed to debug-only.
436
ACPICA BZ 812.
437
 
438
Example Code and Data Size: These are the sizes for the OS-independent
439
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
440
debug version of the code includes the debug output trace mechanism and has a
441
much larger code and data size.
442
 
443
  Previous Release:
444
    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
445
    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
446
  Current Release:
447
    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
448
    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
449
 
450
2) iASL Compiler/Disassembler and Tools:
451
 
452
iASL: Implemented Switch() with While(1) so that Break works correctly. This
453
change correctly implements the Switch operator with a surrounding While(1)
454
so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
455
 
456
iASL: Added a message if a package initializer list is shorter than package
457
length. Adds a new remark for a Package() declaration if an initializer list
458
exists, but is shorter than the declared length of the package. Although
459
technically legal, this is probably a coding error and it is seen in the
460
field. ACPICA BZ 815. Lin Ming, Bob Moore.
461
 
462
iASL: Fixed a problem where the compiler could fault after the maximum number
463
of errors was reached (200).
464
 
465
acpixtract: Fixed a possible warning for pointer cast if the compiler warning
466
level set very high.
467
 
468
----------------------------------------
469
13 October 2009. Summary of changes for version 20091013:
470
 
471
1) ACPI CA Core Subsystem:
472
 
473
Fixed a problem where an Operation Region _REG method could be executed more
474
than once. If a custom address space handler is installed by the host before
475
the "initialize operation regions" phase of the ACPICA initialization, any
476
_REG methods for that address space could be executed twice. This change
477
fixes the problem. ACPICA BZ 427. Lin Ming.
478
 
479
Fixed a possible memory leak for the Scope() ASL operator. When the exact
480
invocation of "Scope(\)" is executed (change scope to root), one internal
481
operand object was leaked. Lin Ming.
482
 
483
Implemented a run-time repair for the _MAT predefined method. If the _MAT
484
return value is defined as a Field object in the AML, and the field
485
size is less than or equal to the default width of an integer (32 or 64),_MAT
486
can incorrectly return an Integer instead of a Buffer. ACPICA now
487
automatically repairs this problem. ACPICA BZ 810.
488
 
489
Implemented a run-time repair for the _BIF and _BIX predefined methods. The
490
"OEM Information" field is often incorrectly returned as an Integer with
491
value zero if the field is not supported by the platform. This is due to an
492
ambiguity in the ACPI specification. The field should always be a string.
493
ACPICA now automatically repairs this problem by returning a NULL string
494
within the returned Package. ACPICA BZ 807.
495
 
496
Example Code and Data Size: These are the sizes for the OS-independent
497
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
498
debug version of the code includes the debug output trace mechanism and has a
499
much larger code and data size.
500
 
501
  Previous Release:
502
    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
503
    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
504
  Current Release:
505
    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
506
    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
507
 
508
2) iASL Compiler/Disassembler and Tools:
509
 
510
Disassembler: Fixed a problem where references to external symbols that
511
contained one or more parent-prefixes (carats) were not handled correctly,
512
possibly causing a fault. ACPICA BZ 806. Lin Ming.
513
 
514
Disassembler: Restructured the code so that all functions that handle
515
external symbols are in a single module. One new file is added,
516
common/dmextern.c.
517
 
518
AML Debugger: Added a max count argument for the Batch command (which
519
executes multiple predefined methods within the namespace.)
520
 
521
iASL: Updated the compiler documentation (User Reference.) Available at
522
http://www.acpica.org/documentation/. ACPICA BZ 750.
523
 
524
AcpiXtract: Updated for Lint and other formatting changes. Close all open
525
files.
526
 
527
----------------------------------------
528
03 September 2009. Summary of changes for version 20090903:
529
 
530
1) ACPI CA Core Subsystem:
531
 
532
For Windows Vista compatibility, added the automatic execution of an _INI
533
method located at the namespace root (\_INI). This method is executed at
534
table load time. This support is in addition to the automatic execution of
535
\_SB._INI. Lin Ming.
536
 
537
Fixed a possible memory leak in the interpreter for AML package objects if
538
the package initializer list is longer than the defined size of the package.
539
This apparently can only happen if the BIOS changes the package size on the
540
fly (seen in a _PSS object), as ASL compilers do not allow this. The
541
interpreter will truncate the package to the defined size (and issue an error
542
message), but previously could leave the extra objects undeleted if they were
543
pre-created during the argument processing (such is the case if the package
544
consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
545
 
546
Fixed a problem seen when a Buffer or String is stored to itself via ASL.
547
This has been reported in the field. Previously, ACPICA would zero out the
548
buffer/string. Now, the operation is treated as a noop. Provides Windows
549
compatibility. ACPICA BZ 803. Lin Ming.
550
 
551
Removed an extraneous error message for ASL constructs of the form
552
Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements
553
are seen in many BIOSs and are once again treated as NOOPs and no error is
554
emitted when they are encountered. ACPICA BZ 785.
555
 
556
Fixed an extraneous warning message if a _DSM reserved method returns a
557
Package object. _DSM can return any type of object, so validation on the
558
return type cannot be performed. ACPICA BZ 802.
559
 
560
Example Code and Data Size: These are the sizes for the OS-independent
561
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
562
debug version of the code includes the debug output trace mechanism and has a
563
much larger code and data size.
564
 
565
  Previous Release:
566
    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
567
    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
568
  Current Release:
569
    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
570
    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
571
 
572
2) iASL Compiler/Disassembler and Tools:
573
 
574
iASL: Fixed a problem with the use of the Alias operator and Resource
575
Templates. The correct alias is now constructed and no error is emitted.
576
ACPICA BZ 738.
577
 
578
iASL: Implemented the -I option to specify additional search directories for
579
include files. Allows multiple additional search paths for include files.
580
Directories are searched in the order specified on the command line (after
581
the local directory is searched.) ACPICA BZ 800.
582
 
583
iASL: Fixed a problem where the full pathname for include files was not
584
emitted for warnings/errors. This caused the IDE support to not work
585
properly. ACPICA BZ 765.
586
 
587
iASL: Implemented the -@ option to specify a Windows-style response file
588
containing additional command line options. ACPICA BZ 801.
589
 
590
AcpiExec: Added support to load multiple AML files simultaneously (such as a
591
DSDT and multiple SSDTs). Also added support for wildcards within the AML
592
pathname. These features allow all machine tables to be easily loaded and
593
debugged together. ACPICA BZ 804.
594
 
595
Disassembler: Added missing support for disassembly of HEST table Error Bank
596
subtables.
597
 
598
----------------------------------------
599
30 July 2009. Summary of changes for version 20090730:
600
 
601
The ACPI 4.0 implementation for ACPICA is complete with this release.
602
 
603
1) ACPI CA Core Subsystem:
604
 
605
ACPI 4.0: Added header file support for all new and changed ACPI tables.
606
Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new
607
for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT,
608
EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There
609
have been some ACPI 4.0 changes to other existing tables. Split the large
610
actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
611
 
612
ACPI 4.0: Implemented predefined name validation for all new names. There are
613
31 new names in ACPI 4.0. The predefined validation module was split into two
614
files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
615
 
616
Implemented support for so-called "module-level executable code". This is
617
executable AML code that exists outside of any control method and is intended
618
to be executed at table load time. Although illegal since ACPI 2.0, this type
619
of code still exists and is apparently still being created. Blocks of this
620
code are now detected and executed as intended. Currently, the code blocks
621
must exist under either an If, Else, or While construct; these are the
622
typical cases seen in the field. ACPICA BZ 762. Lin Ming.
623
 
624
Implemented an automatic dynamic repair for predefined names that return
625
nested Package objects. This applies to predefined names that are defined to
626
return a variable-length Package of sub-packages. If the number of sub-
627
packages is one, BIOS code is occasionally seen that creates a simple single
628
package with no sub-packages. This code attempts to fix the problem by
629
wrapping a new package object around the existing package. These methods can
630
be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ
631
790.
632
 
633
Fixed a regression introduced in 20090625 for the AcpiGetDevices interface.
634
The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA
635
BZ 793.
636
 
637
Fixed a problem with AcpiReset where the reset would silently fail if the
638
register was one of the protected I/O ports. AcpiReset now bypasses the port
639
validation mechanism. This may eventually be driven into the AcpiRead/Write
640
interfaces.
641
 
642
Fixed a regression related to the recent update of the AcpiRead/Write
643
interfaces. A sleep/suspend could fail if the optional PM2 Control register
644
does not exist during an attempt to write the Bus Master Arbitration bit.
645
(However, some hosts already delete the code that writes this bit, and the
646
code may in fact be obsolete at this date.) ACPICA BZ 799.
647
 
648
Fixed a problem where AcpiTerminate could fault if inadvertently called twice
649
in succession. ACPICA BZ 795.
650
 
651
Example Code and Data Size: These are the sizes for the OS-independent
652
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
653
debug version of the code includes the debug output trace mechanism and has a
654
much larger code and data size.
655
 
656
  Previous Release:
657
    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
658
    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
659
  Current Release:
660
    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
661
    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
662
 
663
2) iASL Compiler/Disassembler and Tools:
664
 
665
ACPI 4.0: Implemented disassembler support for all new ACPI tables and
666
changes to existing tables. ACPICA BZ 775.
667
 
668
----------------------------------------
669
25 June 2009. Summary of changes for version 20090625:
670
 
671
The ACPI 4.0 Specification was released on June 16 and is available at
672
www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
673
continue for the next few releases.
674
 
675
1) ACPI CA Core Subsystem:
676
 
677
ACPI 4.0: Implemented interpreter support for the IPMI operation region
678
address space. Includes support for bi-directional data buffers and an IPMI
679
address space handler (to be installed by an IPMI device driver.) ACPICA BZ
680
773. Lin Ming.
681
 
682
ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes
683
support in both the header files and the disassembler.
684
 
685
Completed a major update for the AcpiGetObjectInfo external interface.
686
Changes include:
687
 - Support for variable, unlimited length HID, UID, and CID strings.
688
 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
689
 - Call the _SxW power methods on behalf of a device object.
690
 - Determine if a device is a PCI root bridge.
691
 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
692
These changes will require an update to all callers of this interface. See
693
the updated ACPICA Programmer Reference for details. One new source file has
694
been added - utilities/utids.c. ACPICA BZ 368, 780.
695
 
696
Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
697
transfers. The Value parameter has been extended from 32 bits to 64 bits in
698
order to support new ACPI 4.0 tables. These changes will require an update to
699
all callers of these interfaces. See the ACPICA Programmer Reference for
700
details. ACPICA BZ 768.
701
 
702
Fixed several problems with AcpiAttachData. The handler was not invoked when
703
the host node was deleted. The data sub-object was not automatically deleted
704
when the host node was deleted. The interface to the handler had an unused
705
parameter, this was removed. ACPICA BZ 778.
706
 
707
Enhanced the function that dumps ACPI table headers. All non-printable
708
characters in the string fields are now replaced with '?' (Signature, OemId,
709
OemTableId, and CompilerId.) ACPI tables with non-printable characters in
710
these fields are occasionally seen in the field. ACPICA BZ 788.
711
 
712
Fixed a problem with predefined method repair code where the code that
713
attempts to repair/convert an object of incorrect type is only executed on
714
the first time the predefined method is called. The mechanism that disables
715
warnings on subsequent calls was interfering with the repair mechanism.
716
ACPICA BZ 781.
717
 
718
Fixed a possible memory leak in the predefined validation/repair code when a
719
buffer is automatically converted to an expected string object.
720
 
721
Removed obsolete 16-bit files from the distribution and from the current git
722
tree head. ACPICA BZ 776.
723
 
724
Example Code and Data Size: These are the sizes for the OS-independent
725
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
726
debug version of the code includes the debug output trace mechanism and has a
727
much larger code and data size.
728
 
729
  Previous Release:
730
    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
731
    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
732
  Current Release:
733
    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
734
    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
735
 
736
2) iASL Compiler/Disassembler and Tools:
737
 
738
ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
739
operation region keyword. ACPICA BZ 771, 772. Lin Ming.
740
 
741
ACPI 4.0: iASL - implemented compile-time validation support for all new
742
predefined names and control methods (31 total). ACPICA BZ 769.
743
 
744
----------------------------------------
745
21 May 2009. Summary of changes for version 20090521:
746
 
747
1) ACPI CA Core Subsystem:
748
 
749
Disabled the preservation of the SCI enable bit in the PM1 control register.
750
The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be
751
a "preserved" bit - "OSPM always preserves this bit position", section
752
4.7.3.2.1. However, some machines fail if this bit is in fact preserved
753
because the bit needs to be explicitly set by the OS as a workaround. No
754
machines fail if the bit is not preserved. Therefore, ACPICA no longer
755
attempts to preserve this bit.
756
 
757
Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
758
incorrectly formed _PRT package could cause a fault. Added validation to
759
ensure that each package element is actually a sub-package.
760
 
761
Implemented a new interface to install or override a single control method,
762
AcpiInstallMethod. This interface is useful when debugging in order to repair
763
an existing method or to install a missing method without having to override
764
the entire ACPI table. See the ACPICA Programmer Reference for use and
765
examples. Lin Ming, Bob Moore.
766
 
767
Fixed several reference count issues with the DdbHandle object that is
768
created from a Load or LoadTable operator. Prevent premature deletion of the
769
object. Also, mark the object as invalid once the table has been unloaded.
770
This is needed because the handle itself may not be deleted after the table
771
unload, depending on whether it has been stored in a named object by the
772
caller. Lin Ming.
773
 
774
Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
775
mutexes of the same sync level are acquired but then not released in strict
776
opposite order, the internally maintained Current Sync Level becomes confused
777
and can cause subsequent execution errors. ACPICA BZ 471.
778
 
779
Changed the allowable release order for ASL mutex objects. The ACPI 4.0
780
specification has been changed to make the SyncLevel for mutex objects more
781
useful. When releasing a mutex, the SyncLevel of the mutex must now be the
782
same as the current sync level. This makes more sense than the previous rule
783
(SyncLevel less than or equal). This change updates the code to match the
784
specification.
785
 
786
Fixed a problem with the local version of the AcpiOsPurgeCache function. The
787
(local) cache must be locked during all cache object deletions. Andrew
788
Baumann.
789
 
790
Updated the Load operator to use operation region interfaces. This replaces
791
direct memory mapping with region access calls. Now, all region accesses go
792
through the installed region handler as they should.
793
 
794
Simplified and optimized the NsGetNextNode function. Reduced parameter count
795
and reduced code for this frequently used function.
796
 
797
Example Code and Data Size: These are the sizes for the OS-independent
798
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
799
debug version of the code includes the debug output trace mechanism and has a
800
much larger code and data size.
801
 
802
  Previous Release:
803
    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
804
    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
805
  Current Release:
806
    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
807
    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
808
 
809
2) iASL Compiler/Disassembler and Tools:
810
 
811
Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems
812
with sub-table disassembly and handling invalid sub-tables. Attempt recovery
813
after an invalid sub-table ID.
814
 
815
----------------------------------------
816
22 April 2009. Summary of changes for version 20090422:
817
 
818
1) ACPI CA Core Subsystem:
819
 
820
Fixed a compatibility issue with the recently released I/O port protection
821
mechanism. For windows compatibility, 1) On a port protection violation,
822
simply ignore the request and do not return an exception (allow the control
823
method to continue execution.) 2) If only part of the request overlaps a
824
protected port, read/write the individual ports that are not protected. Linux
825
BZ 13036. Lin Ming
826
 
827
Enhanced the execution of the ASL/AML BreakPoint operator so that it actually
828
breaks into the AML debugger if the debugger is present. This matches the
829
ACPI-defined behavior.
830
 
831
Fixed several possible warnings related to the use of the configurable
832
ACPI_THREAD_ID. This type can now be configured as either an integer or a
833
pointer with no warnings. Also fixes several warnings in printf-like
834
statements for the 64-bit build when the type is configured as a pointer.
835
ACPICA BZ 766, 767.
836
 
837
Fixed a number of possible warnings when compiling with gcc 4+ (depending on
838
warning options.) Examples include printf formats, aliasing, unused globals,
839
missing prototypes, missing switch default statements, use of non-ANSI
840
library functions, use of non-ANSI constructs. See generate/unix/Makefile for
841
a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
842
 
843
Example Code and Data Size: These are the sizes for the OS-independent
844
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
845
debug version of the code includes the debug output trace mechanism and has a
846
much larger code and data size.
847
 
848
  Previous Release:
849
    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
850
    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
851
  Current Release:
852
    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
853
    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
854
 
855
2) iASL Compiler/Disassembler and Tools:
856
 
857
iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on
858
the 64-bit build.
859
 
860
iASL: Fixed a problem where the Unix/Linux versions of the compiler could not
861
correctly digest Windows/DOS formatted files (with CR/LF).
862
 
863
iASL: Added a new option for "quiet mode" (-va) that produces only the
864
compilation summary, not individual errors and warnings. Useful for large
865
batch compilations.
866
 
867
AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex
868
timeout that can be used to detect hang conditions during execution of AML
869
code (includes both internal semaphores and AML-defined mutexes and events.)
870
 
871
Added new makefiles for the generation of acpica in a generic unix-like
872
environment. These makefiles are intended to generate the acpica tools and
873
utilities from the original acpica git source tree structure.
874
 
875
Test Suites: Updated and cleaned up the documentation files. Updated the
876
copyrights to 2009, affecting all source files. Use the new version of iASL
877
with quiet mode. Increased the number of available semaphores in the Windows
878
OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added
879
an alternate implementation of the semaphore timeout to allow aslts to
880
execute fully on Cygwin.
881
 
882
----------------------------------------
883
20 March 2009. Summary of changes for version 20090320:
884
 
885
1) ACPI CA Core Subsystem:
886
 
887
Fixed a possible race condition between AcpiWalkNamespace and dynamic table
888
unloads. Added a reader/writer locking mechanism to allow multiple concurrent
889
namespace walks (readers), but block a dynamic table unload until it can gain
890
exclusive write access to the namespace. This fixes a problem where a table
891
unload could (possibly catastrophically) delete the portion of the namespace
892
that is currently being examined by a walk. Adds a new file, utlock.c, that
893
implements the reader/writer lock mechanism. ACPICA BZ 749.
894
 
895
Fixed a regression introduced in version 20090220 where a change to the FADT
896
handling could cause the ACPICA subsystem to access non-existent I/O ports.
897
 
898
Modified the handling of FADT register and table (FACS/DSDT) addresses. The
899
FADT can contain both 32-bit and 64-bit versions of these addresses.
900
Previously, the 64-bit versions were favored, meaning that if both 32 and 64
901
versions were valid, but not equal, the 64-bit version was used. This was
902
found to cause some machines to fail. Now, in this case, the 32-bit version
903
is used instead. This now matches the Windows behavior.
904
 
905
Implemented a new mechanism to protect certain I/O ports. Provides Microsoft
906
compatibility and protects the standard PC I/O ports from access via AML
907
code. Adds a new file, hwvalid.c
908
 
909
Fixed a possible extraneous warning message from the FADT support. The
910
message warns of a 32/64 length mismatch between the legacy and GAS
911
definitions for a register.
912
 
913
Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is
914
made obsolete by the port protection mechanism above. It was previously used
915
to validate the entire address range of an operation region, which could be
916
incorrect if the range included illegal ports, but fields within the
917
operation region did not actually access those ports. Validation is now
918
performed on a per-field basis instead of the entire region.
919
 
920
Modified the handling of the PM1 Status Register ignored bit (bit 11.)
921
Ignored bits must be "preserved" according to the ACPI spec. Usually, this
922
means a read/modify/write when writing to the register. However, for status
923
registers, writing a one means clear the event. Writing a zero means preserve
924
the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec,
925
and the ACPICA code now simply always writes a zero to the ignored bit.
926
 
927
Modified the handling of ignored bits for the PM1 A/B Control Registers. As
928
per the ACPI specification, for the control registers, preserve
929
(read/modify/write) all bits that are defined as either reserved or ignored.
930
 
931
Updated the handling of write-only bits in the PM1 A/B Control Registers.
932
When reading the register, zero the write-only bits as per the ACPI spec.
933
ACPICA BZ 443. Lin Ming.
934
 
935
Removed "Linux" from the list of supported _OSI strings. Linux no longer
936
wants to reply true to this request. The Windows strings are the only paths
937
through the AML that are tested and known to work properly.
938
 
939
  Previous Release:
940
    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
941
    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
942
  Current Release:
943
    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
944
    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
945
 
946
2) iASL Compiler/Disassembler and Tools:
947
 
948
Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and
949
aetables.c
950
 
951
----------------------------------------
952
20 February 2009. Summary of changes for version 20090220:
953
 
954
1) ACPI CA Core Subsystem:
955
 
956
Optimized the ACPI register locking. Removed locking for reads from the ACPI
957
bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is
958
not required when reading the single-bit registers. The
959
AcpiGetRegisterUnlocked function is no longer needed and has been removed.
960
This will improve performance for reads on these registers. ACPICA BZ 760.
961
 
962
Fixed the parameter validation for AcpiRead/Write. Now return
963
AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if
964
the register has an address of zero. Previously, these cases simply returned
965
AE_OK. For optional registers such as PM1B status/enable/control, the caller
966
should check for a valid register address before calling. ACPICA BZ 748.
967
 
968
Renamed the external ACPI bit register access functions. Renamed
969
AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
970
functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister.
971
Also, restructured the code for these functions by simplifying the code path
972
and condensing duplicate code to reduce code size.
973
 
974
Added new functions to transparently handle the possibly split PM1 A/B
975
registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions
976
now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ
977
746.
978
 
979
Added a function to handle the PM1 control registers, AcpiHwWritePm1Control.
980
This function writes both of the PM1 control registers (A/B). These registers
981
are different than the PM1 A/B status and enable registers in that different
982
values can be written to the A/B registers. Most notably, the SLP_TYP bits
983
can be different, as per the values returned from the _Sx predefined methods.
984
 
985
Removed an extra register write within AcpiHwClearAcpiStatus. This function
986
was writing an optional PM1B status register twice. The existing call to the
987
low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B
988
register. ACPICA BZ 751.
989
 
990
Split out the PM1 Status registers from the FADT. Added new globals for these
991
registers (A/B), similar to the way the PM1 Enable registers are handled.
992
Instead of overloading the FADT Event Register blocks. This makes the code
993
clearer and less prone to error.
994
 
995
Fixed the warning message for when the platform contains too many ACPI tables
996
for the default size of the global root table data structure. The calculation
997
for the truncation value was incorrect.
998
 
999
Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
1000
obsolete macro, since it is now a simple reference to ->common.type. There
1001
were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
1002
 
1003
Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
1004
TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
1005
simply SLEEP_TYPE. ACPICA BZ 754.
1006
 
1007
Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
1008
function is only needed on 64-bit host operating systems and is thus not
1009
included for 32-bit hosts.
1010
 
1011
Debug output: print the input and result for invocations of the _OSI reserved
1012
control method via the ACPI_LV_INFO debug level. Also, reduced some of the
1013
verbosity of this debug level. Len Brown.
1014
 
1015
Example Code and Data Size: These are the sizes for the OS-independent
1016
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1017
debug version of the code includes the debug output trace mechanism and has a
1018
much larger code and data size.
1019
 
1020
  Previous Release:
1021
    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
1022
    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
1023
  Current Release:
1024
    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
1025
    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
1026
 
1027
2) iASL Compiler/Disassembler and Tools:
1028
 
1029
Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
1030
various legal performance profiles.
1031
 
1032
----------------------------------------
1033
23 January 2009. Summary of changes for version 20090123:
1034
 
1035
1) ACPI CA Core Subsystem:
1036
 
1037
Added the 2009 copyright to all module headers and signons. This affects
1038
virtually every file in the ACPICA core subsystem, the iASL compiler, and
1039
the tools/utilities.
1040
 
1041
Implemented a change to allow the host to override any ACPI table, including
1042
dynamically loaded tables. Previously, only the DSDT could be replaced by the
1043
host. With this change, the AcpiOsTableOverride interface is called for each
1044
table found in the RSDT/XSDT during ACPICA initialization, and also whenever
1045
a table is dynamically loaded via the AML Load operator.
1046
 
1047
Updated FADT flag definitions, especially the Boot Architecture flags.
1048
 
1049
Debugger: For the Find command, automatically pad the input ACPI name with
1050
underscores if the name is shorter than 4 characters. This enables a match
1051
with the actual namespace entry which is itself padded with underscores.
1052
 
1053
Example Code and Data Size: These are the sizes for the OS-independent
1054
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1055
debug version of the code includes the debug output trace mechanism and has a
1056
much larger code and data size.
1057
 
1058
  Previous Release:
1059
    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
1060
    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
1061
  Current Release:
1062
    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
1063
    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
1064
 
1065
2) iASL Compiler/Disassembler and Tools:
1066
 
1067
Fix build error under Bison-2.4.
1068
 
1069
Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture
1070
flags. Now decode all flags, regardless of the FADT version. Flag output
1071
includes the FADT version which first defined each flag.
1072
 
1073
The iASL -g option now dumps the RSDT to a file (in addition to the FADT and
1074
DSDT). Windows only.
1075
 
1076
----------------------------------------
1077
04 December 2008. Summary of changes for version 20081204:
1078
 
1079
1) ACPI CA Core Subsystem:
1080
 
1081
The ACPICA Programmer Reference has been completely updated and revamped for
1082
this release. This includes updates to the external interfaces, OSL
1083
interfaces, the overview sections, and the debugger reference.
1084
 
1085
Several new ACPICA interfaces have been implemented and documented in the
1086
programmer reference:
1087
AcpiReset - Writes the reset value to the FADT-defined reset register.
1088
AcpiDisableAllGpes - Disable all available GPEs.
1089
AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
1090
AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
1091
AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
1092
AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
1093
AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
1094
 
1095
Most of the public ACPI hardware-related interfaces have been moved to a new
1096
file, components/hardware/hwxface.c
1097
 
1098
Enhanced the FADT parsing and low-level ACPI register access: The ACPI
1099
register lengths within the FADT are now used, and the low level ACPI
1100
register access no longer hardcodes the ACPI register lengths. Given that
1101
there may be some risk in actually trusting the FADT register lengths, a run-
1102
time option was added to fall back to the default hardcoded lengths if the
1103
FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
1104
option is set to true for now, and a warning is issued if a suspicious FADT
1105
register length is overridden with the default value.
1106
 
1107
Fixed a reference count issue in NsRepairObject. This problem was introduced
1108
in version 20081031 as part of a fix to repair Buffer objects within
1109
Packages. Lin Ming.
1110
 
1111
Added semaphore support to the Linux/Unix application OS-services layer
1112
(OSL). ACPICA BZ 448. Lin Ming.
1113
 
1114
Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will
1115
be implemented in the OSL, or will binary semaphores be used instead.
1116
 
1117
Example Code and Data Size: These are the sizes for the OS-independent
1118
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1119
debug version of the code includes the debug output trace mechanism and has a
1120
much larger code and data size.
1121
 
1122
  Previous Release:
1123
    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
1124
    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
1125
  Current Release:
1126
    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
1127
    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
1128
 
1129
2) iASL Compiler/Disassembler and Tools:
1130
 
1131
iASL: Completed the '-e' option to include additional ACPI tables in order to
1132
aid with disassembly and External statement generation. ACPICA BZ 742. Lin
1133
Ming.
1134
 
1135
iASL: Removed the "named object in while loop" error. The compiler cannot
1136
determine how many times a loop will execute. ACPICA BZ 730.
1137
 
1138
Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA
1139
BZ 743.
1140
 
1141
Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
1142
 
1143
----------------------------------------
1144
31 October 2008. Summary of changes for version 20081031:
1145
 
1146
1) ACPI CA Core Subsystem:
1147
 
1148
Restructured the ACPICA header files into public/private. acpi.h now includes
1149
only the "public" acpica headers. All other acpica headers are "private" and
1150
should not be included by acpica users. One new file, accommon.h is used to
1151
include the commonly used private headers for acpica code generation. Future
1152
plans include moving all private headers to a new subdirectory.
1153
 
1154
Implemented an automatic Buffer->String return value conversion for
1155
predefined ACPI methods. For these methods (such as _BIF), added automatic
1156
conversion for return objects that are required to be a String, but a Buffer
1157
was found instead. This can happen when reading string battery data from an
1158
operation region, because it used to be difficult to convert the data from
1159
buffer to string from within the ASL. Ensures that the host OS is provided
1160
with a valid null-terminated string. Linux BZ 11822.
1161
 
1162
Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector
1163
into two: one for the 32-bit vector, another for the 64-bit vector. This is
1164
required because the host OS must setup the wake much differently for each
1165
vector (real vs. protected mode, etc.) and the interface itself should not be
1166
deciding which vector to use. Also, eliminated the GetFirmwareWakingVector
1167
interface, as it served no purpose (only the firmware reads the vector, OS
1168
only writes the vector.) ACPICA BZ 731.
1169
 
1170
Implemented a mechanism to escape infinite AML While() loops. Added a loop
1171
counter to force exit from AML While loops if the count becomes too large.
1172
This can occur in poorly written AML when the hardware does not respond
1173
within a while loop and the loop does not implement a timeout. The maximum
1174
loop count is configurable. A new exception code is returned when a loop is
1175
broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
1176
 
1177
Optimized the execution of AML While loops. Previously, a control state
1178
object was allocated and freed for each execution of the loop. The
1179
optimization is to simply reuse the control state for each iteration. This
1180
speeds up the raw loop execution time by about 5%.
1181
 
1182
Enhanced the implicit return mechanism. For Windows compatibility, return an
1183
implicit integer of value zero for methods that contain no executable code.
1184
Such methods are seen in the field as stubs (presumably), and can cause
1185
drivers to fail if they expect a return value. Lin Ming.
1186
 
1187
Allow multiple backslashes as root prefixes in namepaths. In a fully
1188
qualified namepath, allow multiple backslash prefixes. This can happen (and
1189
is seen in the field) because of the use of a double-backslash in strings
1190
(since backslash is the escape character) causing confusion. ACPICA BZ 739
1191
Lin Ming.
1192
 
1193
Emit a warning if two different FACS or DSDT tables are discovered in the
1194
FADT. Checks if there are two valid but different addresses for the FACS and
1195
DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
1196
 
1197
Consolidated the method argument count validation code. Merged the code that
1198
validates control method argument counts into the predefined validation
1199
module. Eliminates possible multiple warnings for incorrect argument counts.
1200
 
1201
Implemented ACPICA example code. Includes code for ACPICA initialization,
1202
handler installation, and calling a control method. Available at
1203
source/tools/examples.
1204
 
1205
Added a global pointer for FACS table to simplify internal FACS access. Use
1206
the global pointer instead of using AcpiGetTableByIndex for each FACS access.
1207
This simplifies the code for the Global Lock and the Firmware Waking
1208
Vector(s).
1209
 
1210
Example Code and Data Size: These are the sizes for the OS-independent
1211
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1212
debug version of the code includes the debug output trace mechanism and has a
1213
much larger code and data size.
1214
 
1215
  Previous Release:
1216
    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
1217
    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
1218
  Current Release:
1219
    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
1220
    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
1221
 
1222
2) iASL Compiler/Disassembler and Tools:
1223
 
1224
iASL: Improved disassembly of external method calls. Added the -e option to
1225
allow the inclusion of additional ACPI tables to help with the disassembly of
1226
method invocations and the generation of external declarations during the
1227
disassembly. Certain external method invocations cannot be disassembled
1228
properly without the actual declaration of the method. Use the -e option to
1229
include the table where the external method(s) are actually declared. Most
1230
useful for disassembling SSDTs that make method calls back to the master
1231
DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl -d
1232
-e dsdt.aml ssdt1.aml
1233
 
1234
iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
1235
problem where the use of an alias within a namepath would result in a not
1236
found error or cause the compiler to fault. Also now allows forward
1237
references from the Alias operator itself. ACPICA BZ 738.
1238
 
1239
----------------------------------------
1240
26 September 2008. Summary of changes for version 20080926:
1241
 
1242
1) ACPI CA Core Subsystem:
1243
 
1244
Designed and implemented a mechanism to validate predefined ACPI methods and
1245
objects. This code validates the predefined ACPI objects (objects whose names
1246
start with underscore) that appear in the namespace, at the time they are
1247
evaluated. The argument count and the type of the returned object are
1248
validated against the ACPI specification. The purpose of this validation is
1249
to detect problems with the BIOS-implemented predefined ACPI objects before
1250
the results are returned to the ACPI-related drivers. Future enhancements may
1251
include actual repair of incorrect return objects where possible. Two new
1252
files are nspredef.c and acpredef.h.
1253
 
1254
Fixed a fault in the AML parser if a memory allocation fails during the Op
1255
completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
1256
 
1257
Fixed an issue with implicit return compatibility. This change improves the
1258
implicit return mechanism to be more compatible with the MS interpreter. Lin
1259
Ming, ACPICA BZ 349.
1260
 
1261
Implemented support for zero-length buffer-to-string conversions. Allow zero
1262
length strings during interpreter buffer-to-string conversions. For example,
1263
during the ToDecimalString and ToHexString operators, as well as implicit
1264
conversions. Fiodor Suietov, ACPICA BZ 585.
1265
 
1266
Fixed two possible memory leaks in the error exit paths of
1267
AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are
1268
similar in that they use a stack of state objects in order to eliminate
1269
recursion. The stack must be fully unwound and deallocated if an error
1270
occurs. Lin Ming. ACPICA BZ 383.
1271
 
1272
Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global
1273
ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
1274
Moore ACPICA BZ 442.
1275
 
1276
Removed the obsolete version number in module headers. Removed the
1277
"$Revision" number that appeared in each module header. This version number
1278
was useful under SourceSafe and CVS, but has no meaning under git. It is not
1279
only incorrect, it could also be misleading.
1280
 
1281
Example Code and Data Size: These are the sizes for the OS-independent
1282
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1283
debug version of the code includes the debug output trace mechanism and has a
1284
much larger code and data size.
1285
 
1286
  Previous Release:
1287
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
1288
    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
1289
  Current Release:
1290
    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
1291
    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
1292
 
1293
----------------------------------------
1294
29 August 2008. Summary of changes for version 20080829:
1295
 
1296
1) ACPI CA Core Subsystem:
1297
 
1298
Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
1299
Reference. Changes include the elimination of cheating on the Object field
1300
for the DdbHandle subtype, addition of a reference class field to
1301
differentiate the various reference types (instead of an AML opcode), and the
1302
cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
1303
 
1304
Reduce an error to a warning for an incorrect method argument count.
1305
Previously aborted with an error if too few arguments were passed to a
1306
control method via the external ACPICA interface. Now issue a warning instead
1307
and continue. Handles the case where the method inadvertently declares too
1308
many arguments, but does not actually use the extra ones. Applies mainly to
1309
the predefined methods. Lin Ming. Linux BZ 11032.
1310
 
1311
Disallow the evaluation of named object types with no intrinsic value. Return
1312
AE_TYPE for objects that have no value and therefore evaluation is undefined:
1313
Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of
1314
these types were allowed, but an exception would be generated at some point
1315
during the evaluation. Now, the error is generated up front.
1316
 
1317
Fixed a possible memory leak in the AcpiNsGetExternalPathname function
1318
(nsnames.c). Fixes a leak in the error exit path.
1319
 
1320
Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug
1321
levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION
1322
interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
1323
ACPI_LV_EVENTS.
1324
 
1325
Removed obsolete and/or unused exception codes from the acexcep.h header.
1326
There is the possibility that certain device drivers may be affected if they
1327
use any of these exceptions.
1328
 
1329
The ACPICA documentation has been added to the public git source tree, under
1330
acpica/documents. Included are the ACPICA programmer reference, the iASL
1331
compiler reference, and the changes.txt release logfile.
1332
 
1333
Example Code and Data Size: These are the sizes for the OS-independent
1334
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1335
debug version of the code includes the debug output trace mechanism and has a
1336
much larger code and data size.
1337
 
1338
  Previous Release:
1339
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
1340
    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
1341
  Current Release:
1342
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
1343
    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
1344
 
1345
2) iASL Compiler/Disassembler and Tools:
1346
 
1347
Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
1348
defines _SCP with 3 arguments. Previous versions defined it with only 1
1349
argument. iASL now allows both definitions.
1350
 
1351
iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
1352
length subtables when disassembling ACPI tables. Also fixed a couple of
1353
errors where a full 16-bit table type field was not extracted from the input
1354
properly.
1355
 
1356
acpisrc: Improve comment counting mechanism for generating source code
1357
statistics. Count first and last lines of multi-line comments as whitespace,
1358
not comment lines. Handle Linux legal header in addition to standard acpica
1359
header.
1360
 
1361
----------------------------------------
1362
 
1363
29 July 2008. Summary of changes for version 20080729:
1364
 
1365
1) ACPI CA Core Subsystem:
1366
 
1367
Fix a possible deadlock in the GPE dispatch. Remove call to
1368
AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt
1369
to acquire the GPE lock but can deadlock since the GPE lock is already held
1370
at dispatch time. This code was introduced in version 20060831 as a response
1371
to Linux BZ 6881 and has since been removed from Linux.
1372
 
1373
Add a function to dereference returned reference objects. Examines the return
1374
object from a call to AcpiEvaluateObject. Any Index or RefOf references are
1375
automatically dereferenced in an attempt to return something useful (these
1376
reference types cannot be converted into an external ACPI_OBJECT.) Provides
1377
MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
1378
 
1379
x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
1380
subtables for the MADT and one new subtable for the SRAT. Includes
1381
disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC
1382
Specification, June 2008.
1383
 
1384
Additional error checking for pathname utilities. Add error check after all
1385
calls to AcpiNsGetPathnameLength. Add status return from
1386
AcpiNsBuildExternalPath and check after all calls. Add parameter validation
1387
to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
1388
 
1389
Return status from the global init function AcpiUtGlobalInitialize. This is
1390
used by both the kernel subsystem and the utilities such as iASL compiler.
1391
The function could possibly fail when the caches are initialized. Yang Yi.
1392
 
1393
Add a function to decode reference object types to strings. Created for
1394
improved error messages.
1395
 
1396
Improve object conversion error messages. Better error messages during object
1397
conversion from internal to the external ACPI_OBJECT. Used for external calls
1398
to AcpiEvaluateObject.
1399
 
1400
Example Code and Data Size: These are the sizes for the OS-independent
1401
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1402
debug version of the code includes the debug output trace mechanism and has a
1403
much larger code and data size.
1404
 
1405
  Previous Release:
1406
    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
1407
    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
1408
  Current Release:
1409
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
1410
    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
1411
 
1412
2) iASL Compiler/Disassembler and Tools:
1413
 
1414
Debugger: fix a possible hang when evaluating non-methods. Fixes a problem
1415
introduced in version 20080701. If the object being evaluated (via execute
1416
command) is not a method, the debugger can hang while trying to obtain non-
1417
existent parameters.
1418
 
1419
iASL: relax error for using reserved "_T_x" identifiers. These names can
1420
appear in a disassembled ASL file if they were emitted by the original
1421
compiler. Instead of issuing an error or warning and forcing the user to
1422
manually change these names, issue a remark instead.
1423
 
1424
iASL: error if named object created in while loop. Emit an error if any named
1425
object is created within a While loop. If allowed, this code will generate a
1426
run-time error on the second iteration of the loop when an attempt is made to
1427
create the same named object twice. ACPICA bugzilla 730.
1428
 
1429
iASL: Support absolute pathnames for include files. Add support for absolute
1430
pathnames within the Include operator. previously, only relative pathnames
1431
were supported.
1432
 
1433
iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor.
1434
The ACPI spec requires one interrupt minimum. BZ 423
1435
 
1436
iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
1437
Handles the case for the Interrupt Resource Descriptor where
1438
the ResourceSource argument is omitted but ResourceSourceIndex
1439
is present. Now leave room for the Index. BZ 426
1440
 
1441
iASL: Prevent error message if CondRefOf target does not exist. Fixes cases
1442
where an error message is emitted if the target does not exist. BZ 516
1443
 
1444
iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
1445
(get ACPI tables on Windows). This was apparently broken in version 20070919.
1446
 
1447
AcpiXtract: Handle EOF while extracting data. Correctly handle the case where
1448
the EOF happens immediately after the last table in the input file. Print
1449
completion message. Previously, no message was displayed in this case.
1450
 
1451
----------------------------------------
1452
01 July 2008. Summary of changes for version 20080701:
1453
 
1454
0) Git source tree / acpica.org
1455
 
1456
Fixed a problem where a git-clone from http would not transfer the entire
1457
source tree.
1458
 
1459
1) ACPI CA Core Subsystem:
1460
 
1461
Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
1462
enable bit. Now performs a read-change-write of the enable register instead
1463
of simply writing out the cached enable mask. This will prevent inadvertent
1464
enabling of GPEs if a rogue GPE is received during initialization (before GPE
1465
handlers are installed.)
1466
 
1467
Implemented a copy for dynamically loaded tables. Previously, dynamically
1468
loaded tables were simply mapped - but on some machines this memory is
1469
corrupted after suspend. Now copy the table to a local buffer. For the
1470
OpRegion case, added checksum verify. Use the table length from the table
1471
header, not the region length. For the Buffer case, use the table length
1472
also. Dennis Noordsij, Bob Moore. BZ 10734
1473
 
1474
Fixed a problem where the same ACPI table could not be dynamically loaded and
1475
unloaded more than once. Without this change, a table cannot be loaded again
1476
once it has been loaded/unloaded one time. The current mechanism does not
1477
unregister a table upon an unload. During a load, if the same table is found,
1478
this no longer returns an exception. BZ 722
1479
 
1480
Fixed a problem where the wrong descriptor length was calculated for the
1481
EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag
1482
are calculated as 12 bytes long, but the actual length in the internal
1483
descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported
1484
by Linn Crosetto. BZ 728
1485
 
1486
Fixed a possible memory leak in the Unload operator. The DdbHandle returned
1487
by Load() did not have its reference count decremented during unload, leading
1488
to a memory leak. Lin Ming. BZ 727
1489
 
1490
Fixed a possible memory leak when deleting thermal/processor objects. Any
1491
associated notify handlers (and objects) were not being deleted. Fiodor
1492
Suietov. BZ 506
1493
 
1494
Fixed the ordering of the ASCII names in the global mutex table to match the
1495
actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only.
1496
Vegard Nossum. BZ 726
1497
 
1498
Enhanced the AcpiGetObjectInfo interface to return the number of required
1499
arguments if the object is a control method. Added this call to the debugger
1500
so the proper number of default arguments are passed to a method. This
1501
prevents a warning when executing methods from AcpiExec.
1502
 
1503
Added a check for an invalid handle in AcpiGetObjectInfo. Return
1504
AE_BAD_PARAMETER if input handle is invalid. BZ 474
1505
 
1506
Fixed an extraneous warning from exconfig.c on the 64-bit build.
1507
 
1508
Example Code and Data Size: These are the sizes for the OS-independent
1509
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1510
debug version of the code includes the debug output trace mechanism and has a
1511
much larger code and data size.
1512
 
1513
  Previous Release:
1514
    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
1515
    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
1516
  Current Release:
1517
    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
1518
    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
1519
 
1520
2) iASL Compiler/Disassembler and Tools:
1521
 
1522
iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
1523
resource descriptor names.
1524
 
1525
iASL: Detect invalid ASCII characters in input (windows version). Removed the
1526
"-CF" flag from the flex compile, enables correct detection of non-ASCII
1527
characters in the input. BZ 441
1528
 
1529
iASL: Eliminate warning when result of LoadTable is not used. Eliminate the
1530
"result of operation not used" warning when the DDB handle returned from
1531
LoadTable is not used. The warning is not needed. BZ 590
1532
 
1533
AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to
1534
pass address of table to the AML. Added option to disable OpRegion simulation
1535
to allow creation of an OpRegion with a real address that was passed to _CFG.
1536
All of this allows testing of the Load and Unload operators from AcpiExec.
1537
 
1538
Debugger: update tables command for unloaded tables. Handle unloaded tables
1539
and use the standard table header output routine.
1540
 
1541
----------------------------------------
1542
09 June 2008. Summary of changes for version 20080609:
1543
 
1544
1) ACPI CA Core Subsystem:
1545
 
1546
Implemented a workaround for reversed _PRT entries. A significant number of
1547
BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
1548
change dynamically detects and repairs this problem. Provides compatibility
1549
with MS ACPI. BZ 6859
1550
 
1551
Simplified the internal ACPI hardware interfaces to eliminate the locking
1552
flag parameter from Register Read/Write. Added a new external interface,
1553
AcpiGetRegisterUnlocked.
1554
 
1555
Fixed a problem where the invocation of a GPE control method could hang. This
1556
was a regression introduced in 20080514. The new method argument count
1557
validation mechanism can enter an infinite loop when a GPE method is
1558
dispatched. Problem fixed by removing the obsolete code that passed GPE block
1559
information to the notify handler via the control method parameter pointer.
1560
 
1561
Fixed a problem where the _SST execution status was incorrectly returned to
1562
the caller of AcpiEnterSleepStatePrep. This was a regression introduced in
1563
20080514. _SST is optional and a NOT_FOUND exception should never be
1564
returned. BZ 716
1565
 
1566
Fixed a problem where a deleted object could be accessed from within the AML
1567
parser. This was a regression introduced in version 20080123 as a fix for the
1568
Unload operator. Lin Ming. BZ 10669
1569
 
1570
Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands
1571
and eliminated the use of a negative index in a loop. Operands are now
1572
displayed in the correct order, not backwards. This also fixes a regression
1573
introduced in 20080514 on 64-bit systems where the elimination of
1574
ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
1575
 
1576
Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit
1577
path did not delete a locally allocated structure.
1578
 
1579
Updated definitions for the DMAR and SRAT tables to synchronize with the
1580
current specifications. Includes disassembler support.
1581
 
1582
Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
1583
loop termination value was used. Loop terminated on iteration early, missing
1584
one mutex. Linn Crosetto
1585
 
1586
Example Code and Data Size: These are the sizes for the OS-independent
1587
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1588
debug version of the code includes the debug output trace mechanism and has a
1589
much larger code and data size.
1590
 
1591
  Previous Release:
1592
    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
1593
    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
1594
  Current Release:
1595
    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
1596
    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
1597
 
1598
2) iASL Compiler/Disassembler and Tools:
1599
 
1600
Disassembler: Implemented support for EisaId() within _CID objects. Now
1601
disassemble integer _CID objects back to EisaId invocations, including
1602
multiple integers within _CID packages. Includes single-step support for
1603
debugger also.
1604
 
1605
Disassembler: Added support for DMAR and SRAT table definition changes.
1606
 
1607
----------------------------------------
1608
14 May 2008. Summary of changes for version 20080514:
1609
 
1610
1) ACPI CA Core Subsystem:
1611
 
1612
Fixed a problem where GPEs were enabled too early during the ACPICA
1613
initialization. This could lead to "handler not installed" errors on some
1614
machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This
1615
ensures that all operation regions and devices throughout the namespace have
1616
been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
1617
 
1618
Implemented a change to the enter sleep code. Moved execution of the _GTS
1619
method to just before setting sleep enable bit. The execution was moved from
1620
AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
1621
immediately before the SLP_EN bit is set, as per the ACPI specification.
1622
Luming Yu, BZ 1653.
1623
 
1624
Implemented a fix to disable unknown GPEs (2nd version). Now always disable
1625
the GPE, even if ACPICA thinks that that it is already disabled. It is
1626
possible that the AML or some other code has enabled the GPE unbeknownst to
1627
the ACPICA code.
1628
 
1629
Fixed a problem with the Field operator where zero-length fields would return
1630
an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL
1631
field declarations in Field(), BankField(), and IndexField(). BZ 10606.
1632
 
1633
Implemented a fix for the Load operator, now load the table at the namespace
1634
root. This reverts a change introduced in version 20071019. The table is now
1635
loaded at the namespace root even though this goes against the ACPI
1636
specification. This provides compatibility with other ACPI implementations.
1637
The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
1638
 
1639
Fixed a problem where ACPICA would not Load() tables with unusual signatures.
1640
Now ignore ACPI table signature for Load() operator. Only "SSDT" is
1641
acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
1642
Therefore, signature validation is worthless. Apparently MS ACPI accepts such
1643
signatures, ACPICA must be compatible. BZ 10454.
1644
 
1645
Fixed a possible negative array index in AcpiUtValidateException. Added NULL
1646
fields to the exception string arrays to eliminate a -1 subtraction on the
1647
SubStatus field.
1648
 
1649
Updated the debug tracking macros to reduce overall code and data size.
1650
Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
1651
instead of pointers to static strings. Jan Beulich and Bob Moore.
1652
 
1653
Implemented argument count checking in control method invocation via
1654
AcpiEvaluateObject. Now emit an error if too few arguments, warning if too
1655
many. This applies only to extern programmatic control method execution, not
1656
method-to-method calls within the AML. Lin Ming.
1657
 
1658
Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no
1659
longer needed, especially with the removal of 16-bit support. It was replaced
1660
mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on
1661
32/64-bit platforms is required.
1662
 
1663
Added the C const qualifier for appropriate string constants -- mostly
1664
MODULE_NAME and printf format strings. Jan Beulich.
1665
 
1666
Example Code and Data Size: These are the sizes for the OS-independent
1667
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1668
debug version of the code includes the debug output trace mechanism and has a
1669
much larger code and data size.
1670
 
1671
  Previous Release:
1672
    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
1673
    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
1674
  Current Release:
1675
    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
1676
    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
1677
 
1678
2) iASL Compiler/Disassembler and Tools:
1679
 
1680
Implemented ACPI table revision ID validation in the disassembler. Zero is
1681
always invalid. For DSDTs, the ID controls the interpreter integer width. 1
1682
means 32-bit and this is unusual. 2 or greater is 64-bit.
1683
 
1684
----------------------------------------
1685
21 March 2008. Summary of changes for version 20080321:
1686
 
1687
1) ACPI CA Core Subsystem:
1688
 
1689
Implemented an additional change to the GPE support in order to suppress
1690
spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently
1691
disable incoming GPEs that are neither enabled nor disabled -- meaning that
1692
the GPE is unknown to the system. This should prevent future interrupt floods
1693
from that GPE. BZ 6217 (Zhang Rui)
1694
 
1695
Fixed a problem where NULL package elements were not returned to the
1696
AcpiEvaluateObject interface correctly. The element was simply ignored
1697
instead of returning a NULL ACPI_OBJECT package element, potentially causing
1698
a buffer overflow and/or confusing the caller who expected a fixed number of
1699
elements. BZ 10132 (Lin Ming, Bob Moore)
1700
 
1701
Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword,
1702
Qword), Field, BankField, and IndexField operators when invoked from inside
1703
an executing control method. In this case, these operators created namespace
1704
nodes that were incorrectly left marked as permanent nodes instead of
1705
temporary nodes. This could cause a problem if there is race condition
1706
between an exiting control method and a running namespace walk. (Reported by
1707
Linn Crosetto)
1708
 
1709
Fixed a problem where the CreateField and CreateXXXField operators would
1710
incorrectly allow duplicate names (the name of the field) with no exception
1711
generated.
1712
 
1713
Implemented several changes for Notify handling. Added support for new Notify
1714
values (ACPI 2.0+) and improved the Notify debug output. Notify on
1715
PowerResource objects is no longer allowed, as per the ACPI specification.
1716
(Bob Moore, Zhang Rui)
1717
 
1718
All Reference Objects returned via the AcpiEvaluateObject interface are now
1719
marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for
1720
NULL objects - either NULL package elements or unresolved named references.
1721
 
1722
Fixed a problem where an extraneous debug message was produced for package
1723
objects (when debugging enabled). The message "Package List length larger
1724
than NumElements count" is now produced in the correct case, and is now an
1725
error message rather than a debug message. Added a debug message for the
1726
opposite case, where NumElements is larger than the Package List (the package
1727
will be padded out with NULL elements as per the ACPI spec.)
1728
 
1729
Implemented several improvements for the output of the ASL "Debug" object to
1730
clarify and keep all data for a given object on one output line.
1731
 
1732
Fixed two size calculation issues with the variable-length Start Dependent
1733
resource descriptor.
1734
 
1735
Example Code and Data Size: These are the sizes for the OS-independent
1736
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1737
debug version of the code includes the debug output trace mechanism and has
1738
a much larger code and data size.
1739
 
1740
  Previous Release:
1741
    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
1742
    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
1743
  Current Release:
1744
    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
1745
    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
1746
 
1747
2) iASL Compiler/Disassembler and Tools:
1748
 
1749
Fixed a problem with the use of the Switch operator where execution of the
1750
containing method by multiple concurrent threads could cause an
1751
AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
1752
actual Switch opcode, it must be simulated with local named temporary
1753
variables and if/else pairs. The solution chosen was to mark any method that
1754
uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
1755
 
1756
----------------------------------------
1757
13 February 2008. Summary of changes for version 20080213:
1758
 
1759
1) ACPI CA Core Subsystem:
1760
 
1761
Implemented another MS compatibility design change for GPE/Notify handling.
1762
GPEs are now cleared/enabled asynchronously to allow all pending notifies to
1763
complete first. It is expected that the OSL will queue the enable request
1764
behind all pending notify requests (may require changes to the local host OSL
1765
in AcpiOsExecute). Alexey Starikovskiy.
1766
 
1767
Fixed a problem where buffer and package objects passed as arguments to a
1768
control method via the external AcpiEvaluateObject interface could cause an
1769
AE_AML_INTERNAL exception depending on the order and type of operators
1770
executed by the target control method.
1771
 
1772
Fixed a problem where resource descriptor size optimization could cause a
1773
problem when a _CRS resource template is passed to a _SRS method. The _SRS
1774
resource template must use the same descriptors (with the same size) as
1775
returned from _CRS. This change affects the following resource descriptors:
1776
IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
1777
 
1778
Fixed a problem where a CopyObject to RegionField, BankField, and IndexField
1779
objects did not perform an implicit conversion as it should. These types must
1780
retain their initial type permanently as per the ACPI specification. However,
1781
a CopyObject to all other object types should not perform an implicit
1782
conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
1783
 
1784
Fixed a problem with the AcpiGetDevices interface where the mechanism to
1785
match device CIDs did not examine the entire list of available CIDs, but
1786
instead aborted on the first non-matching CID. Andrew Patterson.
1787
 
1788
Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was
1789
inadvertently changed to return a 16-bit value instead of a 32-bit value,
1790
truncating the upper dword of a 64-bit value. This macro is only used to
1791
display debug output, so no incorrect calculations were made. Also,
1792
reimplemented the macro so that a 64-bit shift is not performed by
1793
inefficient compilers.
1794
 
1795
Added missing va_end statements that should correspond with each va_start
1796
statement.
1797
 
1798
Example Code and Data Size: These are the sizes for the OS-independent
1799
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1800
debug version of the code includes the debug output trace mechanism and has
1801
a much larger code and data size.
1802
 
1803
  Previous Release:
1804
    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
1805
    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
1806
  Current Release:
1807
    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
1808
    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
1809
 
1810
2) iASL Compiler/Disassembler and Tools:
1811
 
1812
Implemented full disassembler support for the following new ACPI tables:
1813
BERT, EINJ, and ERST. Implemented partial disassembler support for the
1814
complicated HEST table. These tables support the Windows Hardware Error
1815
Architecture (WHEA).
1816
 
1817
----------------------------------------
1818
23 January 2008. Summary of changes for version 20080123:
1819
 
1820
1) ACPI CA Core Subsystem:
1821
 
1822
Added the 2008 copyright to all module headers and signons. This affects
1823
virtually every file in the ACPICA core subsystem, the iASL compiler, and
1824
the tools/utilities.
1825
 
1826
Fixed a problem with the SizeOf operator when used with Package and Buffer
1827
objects. These objects have deferred execution for some arguments, and the
1828
execution is now completed before the SizeOf is executed. This problem caused
1829
unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ
1830
9558
1831
 
1832
Implemented an enhancement to the interpreter "slack mode". In the absence of
1833
an explicit return or an implicitly returned object from the last executed
1834
opcode, a control method will now implicitly return an integer of value 0 for
1835
Microsoft compatibility. (Lin Ming) BZ 392
1836
 
1837
Fixed a problem with the Load operator where an exception was not returned in
1838
the case where the table is already loaded. (Lin Ming) BZ 463
1839
 
1840
Implemented support for the use of DDBHandles as an Indexed Reference, as per
1841
the ACPI spec. (Lin Ming) BZ 486
1842
 
1843
Implemented support for UserTerm (Method invocation) for the Unload operator
1844
as per the ACPI spec. (Lin Ming) BZ 580
1845
 
1846
Fixed a problem with the LoadTable operator where the OemId and OemTableId
1847
input strings could cause unexpected failures if they were shorter than the
1848
maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
1849
 
1850
Implemented support for UserTerm (Method invocation) for the Unload operator
1851
as per the ACPI spec. (Lin Ming) BZ 580
1852
 
1853
Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST,
1854
IBFT, UEFI, WDAT. Disassembler support is forthcoming.
1855
 
1856
Example Code and Data Size: These are the sizes for the OS-independent
1857
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1858
debug version of the code includes the debug output trace mechanism and has
1859
a much larger code and data size.
1860
 
1861
  Previous Release:
1862
    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
1863
    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
1864
  Current Release:
1865
    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
1866
    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
1867
 
1868
2) iASL Compiler/Disassembler and Tools:
1869
 
1870
Implemented support in the disassembler for checksum validation on incoming
1871
binary DSDTs and SSDTs. If incorrect, a message is displayed within the table
1872
header dump at the start of the disassembly.
1873
 
1874
Implemented additional debugging information in the namespace listing file
1875
created during compilation. In addition to the namespace hierarchy, the full
1876
pathname to each namespace object is displayed.
1877
 
1878
Fixed a problem with the disassembler where invalid ACPI tables could cause
1879
faults or infinite loops.
1880
 
1881
Fixed an unexpected parse error when using the optional "parameter types"
1882
list in a control method declaration. (Lin Ming) BZ 397
1883
 
1884
Fixed a problem where two External declarations with the same name did not
1885
cause an error (Lin Ming) BZ 509
1886
 
1887
Implemented support for full TermArgs (adding Argx, Localx and method
1888
invocation) for the ParameterData parameter to the LoadTable operator. (Lin
1889
Ming) BZ 583,587
1890
 
1891
----------------------------------------
1892
19 December 2007. Summary of changes for version 20071219:
1893
 
1894
1) ACPI CA Core Subsystem:
1895
 
1896
Implemented full support for deferred execution for the TermArg string
1897
arguments for DataTableRegion. This enables forward references and full
1898
operand resolution for the three string arguments. Similar to OperationRegion
1899
deferred argument execution.) Lin Ming. BZ 430
1900
 
1901
Implemented full argument resolution support for the BankValue argument to
1902
BankField. Previously, only constants were supported, now any TermArg may be
1903
used. Lin Ming BZ 387, 393
1904
 
1905
Fixed a problem with AcpiGetDevices where the search of a branch of the
1906
device tree could be terminated prematurely. In accordance with the ACPI
1907
specification, the search down the current branch is terminated if a device
1908
is both not present and not functional (instead of just not present.) Yakui
1909
Zhao.
1910
 
1911
Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if
1912
the underlying AML code changed the GPE enable registers. Now, any unknown
1913
incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled
1914
instead of simply ignored. Rui Zhang.
1915
 
1916
Fixed a problem with Index Fields where the Index register was incorrectly
1917
limited to a maximum of 32 bits. Now any size may be used.
1918
 
1919
Fixed a couple memory leaks associated with "implicit return" objects when
1920
the AML Interpreter slack mode is enabled. Lin Ming BZ 349
1921
 
1922
Example Code and Data Size: These are the sizes for the OS-independent
1923
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1924
debug version of the code includes the debug output trace mechanism and has
1925
a much larger code and data size.
1926
 
1927
  Previous Release:
1928
    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
1929
    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
1930
  Current Release:
1931
    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
1932
    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
1933
 
1934
----------------------------------------
1935
14 November 2007. Summary of changes for version 20071114:
1936
 
1937
1) ACPI CA Core Subsystem:
1938
 
1939
Implemented event counters for each of the Fixed Events, the ACPI SCI
1940
(interrupt) itself, and control methods executed. Named
1941
AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These
1942
should be useful for debugging and statistics.
1943
 
1944
Implemented a new external interface, AcpiGetStatistics, to retrieve the
1945
contents of the various event counters. Returns the current values for
1946
AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
1947
AcpiMethodCount. The interface can be expanded in the future if new counters
1948
are added. Device drivers should use this interface rather than access the
1949
counters directly.
1950
 
1951
Fixed a problem with the FromBCD and ToBCD operators. With some compilers,
1952
the ShortDivide function worked incorrectly, causing problems with the BCD
1953
functions with large input values. A truncation from 64-bit to 32-bit
1954
inadvertently occurred. Internal BZ 435. Lin Ming
1955
 
1956
Fixed a problem with Index references passed as method arguments. References
1957
passed as arguments to control methods were dereferenced immediately (before
1958
control was passed to the called method). The references are now correctly
1959
passed directly to the called method. BZ 5389. Lin Ming
1960
 
1961
Fixed a problem with CopyObject used in conjunction with the Index operator.
1962
The reference was incorrectly dereferenced before the copy. The reference is
1963
now correctly copied. BZ 5391. Lin Ming
1964
 
1965
Fixed a problem with Control Method references within Package objects. These
1966
references are now correctly generated. This completes the package
1967
construction overhaul that began in version 20071019.
1968
 
1969
Example Code and Data Size: These are the sizes for the OS-independent
1970
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1971
debug version of the code includes the debug output trace mechanism and has
1972
a much larger code and data size.
1973
 
1974
  Previous Release:
1975
    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
1976
    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
1977
  Current Release:
1978
    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
1979
    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
1980
 
1981
 
1982
2) iASL Compiler/Disassembler and Tools:
1983
 
1984
The AcpiExec utility now installs handlers for all of the predefined
1985
Operation Region types. New types supported are: PCI_Config, CMOS, and
1986
PCIBARTarget.
1987
 
1988
Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
1989
bit) address fields for the DSDT and FACS within the FADT were not being
1990
used, causing truncation of the upper 32-bits of these addresses. Lin Ming
1991
and Bob Moore
1992
 
1993
----------------------------------------
1994
19 October 2007. Summary of changes for version 20071019:
1995
 
1996
1) ACPI CA Core Subsystem:
1997
 
1998
Fixed a problem with the Alias operator when the target of the alias is a
1999
named ASL operator that opens a new scope -- Scope, Device, PowerResource,
2000
Processor, and ThermalZone. In these cases, any children of the original
2001
operator could not be accessed via the alias, potentially causing unexpected
2002
AE_NOT_FOUND exceptions. (BZ 9067)
2003
 
2004
Fixed a problem with the Package operator where all named references were
2005
created as object references and left otherwise unresolved. According to the
2006
ACPI specification, a Package can only contain Data Objects or references to
2007
control methods. The implication is that named references to Data Objects
2008
(Integer, Buffer, String, Package, BufferField, Field) should be resolved
2009
immediately upon package creation. This is the approach taken with this
2010
change. References to all other named objects (Methods, Devices, Scopes,
2011
etc.) are all now properly created as reference objects. (BZ 5328)
2012
 
2013
Reverted a change to Notify handling that was introduced in version
2014
20070508. This version changed the Notify handling from asynchronous to
2015
fully synchronous (Device driver Notify handling with respect to the Notify
2016
ASL operator). It was found that this change caused more problems than it
2017
solved and was removed by most users.
2018
 
2019
Fixed a problem with the Increment and Decrement operators where the type of
2020
the target object could be unexpectedly and incorrectly changed. (BZ 353)
2021
Lin Ming.
2022
 
2023
Fixed a problem with the Load and LoadTable operators where the table
2024
location within the namespace was ignored. Instead, the table was always
2025
loaded into the root or current scope. Lin Ming.
2026
 
2027
Fixed a problem with the Load operator when loading a table from a buffer
2028
object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
2029
 
2030
Fixed a problem with the Debug object where a store of a DdbHandle reference
2031
object to the Debug object could cause a fault.
2032
 
2033
Added a table checksum verification for the Load operator, in the case where
2034
the load is from a buffer. (BZ 578).
2035
 
2036
Implemented additional parameter validation for the LoadTable operator. The
2037
length of the input strings SignatureString, OemIdString, and OemTableId are
2038
now checked for maximum lengths. (BZ 582) Lin Ming.
2039
 
2040
Example Code and Data Size: These are the sizes for the OS-independent
2041
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2042
debug version of the code includes the debug output trace mechanism and has
2043
a much larger code and data size.
2044
 
2045
  Previous Release:
2046
    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
2047
    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
2048
  Current Release:
2049
    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
2050
    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
2051
 
2052
 
2053
2) iASL Compiler/Disassembler:
2054
 
2055
Fixed a problem where if a single file was specified and the file did not
2056
exist, no error message was emitted. (Introduced with wildcard support in
2057
version 20070917.)
2058
 
2059
----------------------------------------
2060
19 September 2007. Summary of changes for version 20070919:
2061
 
2062
1) ACPI CA Core Subsystem:
2063
 
2064
Designed and implemented new external interfaces to install and remove
2065
handlers for ACPI table-related events. Current events that are defined are
2066
LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
2067
they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
2068
AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
2069
 
2070
Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
2071
(acpi_serialized option on Linux) could cause some systems to hang during
2072
initialization. (Bob Moore) BZ 8171
2073
 
2074
Fixed a problem where objects of certain types (Device, ThermalZone,
2075
Processor, PowerResource) can be not found if they are declared and
2076
referenced from within the same control method (Lin Ming) BZ 341
2077
 
2078
Example Code and Data Size: These are the sizes for the OS-independent
2079
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2080
debug version of the code includes the debug output trace mechanism and has
2081
a much larger code and data size.
2082
 
2083
  Previous Release:
2084
    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
2085
    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
2086
  Current Release:
2087
    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
2088
    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
2089
 
2090
 
2091
2) iASL Compiler/Disassembler:
2092
 
2093
Implemented support to allow multiple files to be compiled/disassembled in a
2094
single invocation. This includes command line wildcard support for both the
2095
Windows and Unix versions of the compiler. This feature simplifies the
2096
disassembly and compilation of multiple ACPI tables in a single directory.
2097
 
2098
----------------------------------------
2099
08 May 2007. Summary of changes for version 20070508:
2100
 
2101
1) ACPI CA Core Subsystem:
2102
 
2103
Implemented a Microsoft compatibility design change for the handling of the
2104
Notify AML operator. Previously, notify handlers were dispatched and
2105
executed completely asynchronously in a deferred thread. The new design
2106
still executes the notify handlers in a different thread, but the original
2107
thread that executed the Notify() now waits at a synchronization point for
2108
the notify handler to complete. Some machines depend on a synchronous Notify
2109
operator in order to operate correctly.
2110
 
2111
Implemented support to allow Package objects to be passed as method
2112
arguments to the external AcpiEvaluateObject interface. Previously, this
2113
would return the AE_NOT_IMPLEMENTED exception. This feature had not been
2114
implemented since there were no reserved control methods that required it
2115
until recently.
2116
 
2117
Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that
2118
contained invalid non-zero values in reserved fields could cause later
2119
failures because these fields have meaning in later revisions of the FADT.
2120
For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields
2121
are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
2122
 
2123
Fixed a problem where the Global Lock handle was not properly updated if a
2124
thread that acquired the Global Lock via executing AML code then attempted
2125
to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe
2126
Liu.
2127
 
2128
Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
2129
could be corrupted if the interrupt being removed was at the head of the
2130
list. Reported by Linn Crosetto.
2131
 
2132
Example Code and Data Size: These are the sizes for the OS-independent
2133
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2134
debug version of the code includes the debug output trace mechanism and has
2135
a much larger code and data size.
2136
 
2137
  Previous Release:
2138
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2139
    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
2140
  Current Release:
2141
    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
2142
    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
2143
 
2144
----------------------------------------
2145
20 March 2007. Summary of changes for version 20070320:
2146
 
2147
1) ACPI CA Core Subsystem:
2148
 
2149
Implemented a change to the order of interpretation and evaluation of AML
2150
operand objects within the AML interpreter. The interpreter now evaluates
2151
operands in the order that they appear in the AML stream (and the
2152
corresponding ASL code), instead of in the reverse order (after the entire
2153
operand list has been parsed). The previous behavior caused several subtle
2154
incompatibilities with the Microsoft AML interpreter as well as being
2155
somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
2156
 
2157
Implemented a change to the ACPI Global Lock support. All interfaces to the
2158
global lock now allow the same thread to acquire the lock multiple times.
2159
This affects the AcpiAcquireGlobalLock external interface to the global lock
2160
as well as the internal use of the global lock to support AML fields -- a
2161
control method that is holding the global lock can now simultaneously access
2162
AML fields that require global lock protection. Previously, in both cases,
2163
this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to
2164
AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
2165
Controller. There is no change to the behavior of the AML Acquire operator,
2166
as this can already be used to acquire a mutex multiple times by the same
2167
thread. BZ 8066. With assistance from Alexey Starikovskiy.
2168
 
2169
Fixed a problem where invalid objects could be referenced in the AML
2170
Interpreter after error conditions. During operand evaluation, ensure that
2171
the internal "Return Object" field is cleared on error and only valid
2172
pointers are stored there. Caused occasional access to deleted objects that
2173
resulted in "large reference count" warning messages. Valery Podrezov.
2174
 
2175
Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on
2176
deeply nested control method invocations. BZ 7873, local BZ 487. Valery
2177
Podrezov.
2178
 
2179
Fixed an internal problem with the handling of result objects on the
2180
interpreter result stack. BZ 7872. Valery Podrezov.
2181
 
2182
Removed obsolete code that handled the case where AML_NAME_OP is the target
2183
of a reference (Reference.Opcode). This code was no longer necessary. BZ
2184
7874. Valery Podrezov.
2185
 
2186
Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a
2187
remnant from the previously discontinued 16-bit support.
2188
 
2189
Example Code and Data Size: These are the sizes for the OS-independent
2190
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2191
debug version of the code includes the debug output trace mechanism and has
2192
a much larger code and data size.
2193
 
2194
  Previous Release:
2195
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2196
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2197
  Current Release:
2198
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2199
    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
2200
 
2201
----------------------------------------
2202
26 January 2007. Summary of changes for version 20070126:
2203
 
2204
1) ACPI CA Core Subsystem:
2205
 
2206
Added the 2007 copyright to all module headers and signons. This affects
2207
virtually every file in the ACPICA core subsystem, the iASL compiler, and
2208
the utilities.
2209
 
2210
Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
2211
during a table load. A bad pointer was passed in the case where the DSDT is
2212
overridden, causing a fault in this case.
2213
 
2214
Example Code and Data Size: These are the sizes for the OS-independent
2215
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2216
debug version of the code includes the debug output trace mechanism and has
2217
a much larger code and data size.
2218
 
2219
  Previous Release:
2220
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2221
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2222
  Current Release:
2223
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2224
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2225
 
2226
----------------------------------------
2227
15 December 2006. Summary of changes for version 20061215:
2228
 
2229
1) ACPI CA Core Subsystem:
2230
 
2231
Support for 16-bit ACPICA has been completely removed since it is no longer
2232
necessary and it clutters the code. All 16-bit macros, types, and
2233
conditional compiles have been removed, cleaning up and simplifying the code
2234
across the entire subsystem. DOS support is no longer needed since the
2235
bootable Linux firmware kit is now available.
2236
 
2237
The handler for the Global Lock is now removed during AcpiTerminate to
2238
enable a clean subsystem restart, via the implementation of the
2239
AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
2240
HP)
2241
 
2242
Implemented enhancements to the multithreading support within the debugger
2243
to enable improved multithreading debugging and evaluation of the subsystem.
2244
(Valery Podrezov)
2245
 
2246
Debugger: Enhanced the Statistics/Memory command to emit the total (maximum)
2247
memory used during the execution, as well as the maximum memory consumed by
2248
each of the various object types. (Valery Podrezov)
2249
 
2250
Example Code and Data Size: These are the sizes for the OS-independent
2251
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2252
debug version of the code includes the debug output trace mechanism and has
2253
a much larger code and data size.
2254
 
2255
  Previous Release:
2256
    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
2257
    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
2258
  Current Release:
2259
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2260
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2261
 
2262
 
2263
2) iASL Compiler/Disassembler and Tools:
2264
 
2265
AcpiExec: Implemented a new option (-m) to display full memory use
2266
statistics upon subsystem/program termination. (Valery Podrezov)
2267
 
2268
----------------------------------------
2269
09 November 2006. Summary of changes for version 20061109:
2270
 
2271
1) ACPI CA Core Subsystem:
2272
 
2273
Optimized the Load ASL operator in the case where the source operand is an
2274
operation region. Simply map the operation region memory, instead of
2275
performing a bytewise read. (Region must be of type SystemMemory, see
2276
below.)
2277
 
2278
Fixed the Load ASL operator for the case where the source operand is a
2279
region field. A buffer object is also allowed as the source operand. BZ 480
2280
 
2281
Fixed a problem where the Load ASL operator allowed the source operand to be
2282
an operation region of any type. It is now restricted to regions of type
2283
SystemMemory, as per the ACPI specification. BZ 481
2284
 
2285
Additional cleanup and optimizations for the new Table Manager code.
2286
 
2287
AcpiEnable will now fail if all of the required ACPI tables are not loaded
2288
(FADT, FACS, DSDT). BZ 477
2289
 
2290
Added #pragma pack(8/4) to acobject.h to ensure that the structures in this
2291
header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
2292
manually optimized to be aligned and will not work if it is byte-packed.
2293
 
2294
Example Code and Data Size: These are the sizes for the OS-independent
2295
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2296
debug version of the code includes the debug output trace mechanism and has
2297
a much larger code and data size.
2298
 
2299
  Previous Release:
2300
    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
2301
    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
2302
  Current Release:
2303
    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
2304
    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
2305
 
2306
 
2307
2) iASL Compiler/Disassembler and Tools:
2308
 
2309
Fixed a problem where the presence of the _OSI predefined control method
2310
within complex expressions could cause an internal compiler error.
2311
 
2312
AcpiExec: Implemented full region support for multiple address spaces.
2313
SpaceId is now part of the REGION object. BZ 429
2314
 
2315
----------------------------------------
2316
11 October 2006. Summary of changes for version 20061011:
2317
 
2318
1) ACPI CA Core Subsystem:
2319
 
2320
Completed an AML interpreter performance enhancement for control method
2321
execution. Previously a 2-pass parse/execution, control methods are now
2322
completely parsed and executed in a single pass. This improves overall
2323
interpreter performance by ~25%, reduces code size, and reduces CPU stack
2324
use. (Valery Podrezov + interpreter changes in version 20051202 that
2325
eliminated namespace loading during the pass one parse.)
2326
 
2327
Implemented _CID support for PCI Root Bridge detection. If the _HID does not
2328
match the predefined PCI Root Bridge IDs, the _CID list (if present) is now
2329
obtained and also checked for an ID match.
2330
 
2331
Implemented additional support for the PCI _ADR execution: upsearch until a
2332
device scope is found before executing _ADR. This allows PCI_Config
2333
operation regions to be declared locally within control methods underneath
2334
PCI device objects.
2335
 
2336
Fixed a problem with a possible race condition between threads executing
2337
AcpiWalkNamespace and the AML interpreter. This condition was removed by
2338
modifying AcpiWalkNamespace to (by default) ignore all temporary namespace
2339
entries created during any concurrent control method execution. An
2340
additional namespace race condition is known to exist between
2341
AcpiWalkNamespace and the Load/Unload ASL operators and is still under
2342
investigation.
2343
 
2344
Restructured the AML ParseLoop function, breaking it into several
2345
subfunctions in order to reduce CPU stack use and improve maintainability.
2346
(Mikhail Kouzmich)
2347
 
2348
AcpiGetHandle: Fix for parameter validation to detect invalid combinations
2349
of prefix handle and pathname. BZ 478
2350
 
2351
Example Code and Data Size: These are the sizes for the OS-independent
2352
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2353
debug version of the code includes the debug output trace mechanism and has
2354
a much larger code and data size.
2355
 
2356
  Previous Release:
2357
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2358
    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
2359
  Current Release:
2360
    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
2361
    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
2362
 
2363
2) iASL Compiler/Disassembler and Tools:
2364
 
2365
Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager
2366
to restore original behavior.
2367
 
2368
----------------------------------------
2369
27 September 2006. Summary of changes for version 20060927:
2370
 
2371
1) ACPI CA Core Subsystem:
2372
 
2373
Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
2374
These functions now use a spinlock for mutual exclusion and the interrupt
2375
level indication flag is not needed.
2376
 
2377
Fixed a problem with the Global Lock where the lock could appear to be
2378
obtained before it is actually obtained. The global lock semaphore was
2379
inadvertently created with one unit instead of zero units. (BZ 464) Fiodor
2380
Suietov.
2381
 
2382
Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during
2383
a read from a buffer or region field. (BZ 458) Fiodor Suietov.
2384
 
2385
Example Code and Data Size: These are the sizes for the OS-independent
2386
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2387
debug version of the code includes the debug output trace mechanism and has
2388
a much larger code and data size.
2389
 
2390
  Previous Release:
2391
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2392
    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
2393
  Current Release:
2394
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2395
    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
2396
 
2397
 
2398
2) iASL Compiler/Disassembler and Tools:
2399
 
2400
Fixed a compilation problem with the pre-defined Resource Descriptor field
2401
names where an "object does not exist" error could be incorrectly generated
2402
if the parent ResourceTemplate pathname places the template within a
2403
different namespace scope than the current scope. (BZ 7212)
2404
 
2405
Fixed a problem where the compiler could hang after syntax errors detected
2406
in an ElseIf construct. (BZ 453)
2407
 
2408
Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
2409
operator. An incorrect output filename was produced when this parameter was
2410
a null string (""). Now, the original input filename is used as the AML
2411
output filename, with an ".aml" extension.
2412
 
2413
Implemented a generic batch command mode for the AcpiExec utility (execute
2414
any AML debugger command) (Valery Podrezov).
2415
 
2416
----------------------------------------
2417
12 September 2006. Summary of changes for version 20060912:
2418
 
2419
1) ACPI CA Core Subsystem:
2420
 
2421
Enhanced the implementation of the "serialized mode" of the interpreter
2422
(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
2423
specified, instead of creating a serialization semaphore per control method,
2424
the interpreter lock is simply no longer released before a blocking
2425
operation during control method execution. This effectively makes the AML
2426
Interpreter single-threaded. The overhead of a semaphore per-method is
2427
eliminated.
2428
 
2429
Fixed a regression where an error was no longer emitted if a control method
2430
attempts to create 2 objects of the same name. This once again returns
2431
AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that
2432
will dynamically serialize the control method to possible prevent future
2433
errors. (BZ 440)
2434
 
2435
Integrated a fix for a problem with PCI Express HID detection in the PCI
2436
Config Space setup procedure. (BZ 7145)
2437
 
2438
Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
2439
AcpiHwInitialize function - the FADT registers are now validated when the
2440
table is loaded.
2441
 
2442
Added two new warnings during FADT verification - 1) if the FADT is larger
2443
than the largest known FADT version, and 2) if there is a mismatch between a
2444
32-bit block address and the 64-bit X counterpart (when both are non-zero.)
2445
 
2446
Example Code and Data Size: These are the sizes for the OS-independent
2447
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2448
debug version of the code includes the debug output trace mechanism and has
2449
a much larger code and data size.
2450
 
2451
  Previous Release:
2452
    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
2453
    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
2454
  Current Release:
2455
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
2456
    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
2457
 
2458
 
2459
2) iASL Compiler/Disassembler and Tools:
2460
 
2461
Fixed a problem with the implementation of the Switch() operator where the
2462
temporary variable was declared too close to the actual Switch, instead of
2463
at method level. This could cause a problem if the Switch() operator is
2464
within a while loop, causing an error on the second iteration. (BZ 460)
2465
 
2466
Disassembler - fix for error emitted for unknown type for target of scope
2467
operator. Now, ignore it and continue.
2468
 
2469
Disassembly of an FADT now verifies the input FADT and reports any errors
2470
found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
2471
 
2472
Disassembly of raw data buffers with byte initialization data now prefixes
2473
each output line with the current buffer offset.
2474
 
2475
Disassembly of ASF! table now includes all variable-length data fields at
2476
the end of some of the subtables.
2477
 
2478
The disassembler now emits a comment if a buffer appears to be a
2479
ResourceTemplate, but cannot be disassembled as such because the EndTag does
2480
not appear at the very end of the buffer.
2481
 
2482
AcpiExec - Added the "-t" command line option to enable the serialized mode
2483
of the AML interpreter.
2484
 
2485
----------------------------------------
2486
31 August 2006. Summary of changes for version 20060831:
2487
 
2488
1) ACPI CA Core Subsystem:
2489
 
2490
Miscellaneous fixes for the Table Manager:
2491
- Correctly initialize internal common FADT for all 64-bit "X" fields
2492
- Fixed a couple table mapping issues during table load
2493
- Fixed a couple alignment issues for IA64
2494
- Initialize input array to zero in AcpiInitializeTables
2495
- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
2496
AcpiGetTableByIndex
2497
 
2498
Change for GPE support: when a "wake" GPE is received, all wake GPEs are now
2499
immediately disabled to prevent the waking GPE from firing again and to
2500
prevent other wake GPEs from interrupting the wake process.
2501
 
2502
Added the AcpiGpeCount global that tracks the number of processed GPEs, to
2503
be used for debugging systems with a large number of ACPI interrupts.
2504
 
2505
Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
2506
both the ACPICA headers and the disassembler.
2507
 
2508
Example Code and Data Size: These are the sizes for the OS-independent
2509
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2510
debug version of the code includes the debug output trace mechanism and has
2511
a much larger code and data size.
2512
 
2513
  Previous Release:
2514
    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
2515
    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
2516
  Current Release:
2517
    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
2518
    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
2519
 
2520
 
2521
2) iASL Compiler/Disassembler and Tools:
2522
 
2523
Disassembler support for the DMAR ACPI table.
2524
 
2525
----------------------------------------
2526
23 August 2006. Summary of changes for version 20060823:
2527
 
2528
1) ACPI CA Core Subsystem:
2529
 
2530
The Table Manager component has been completely redesigned and
2531
reimplemented. The new design is much simpler, and reduces the overall code
2532
and data size of the kernel-resident ACPICA by approximately 5%. Also, it is
2533
now possible to obtain the ACPI tables very early during kernel
2534
initialization, even before dynamic memory management is initialized.
2535
(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
2536
 
2537
Obsolete ACPICA interfaces:
2538
 
2539
- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init
2540
time).
2541
- AcpiLoadTable: Not needed.
2542
- AcpiUnloadTable: Not needed.
2543
 
2544
New ACPICA interfaces:
2545
 
2546
- AcpiInitializeTables: Must be called before the table manager can be used.
2547
- AcpiReallocateRootTable: Used to transfer the root table to dynamically
2548
allocated memory after it becomes available.
2549
- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables
2550
in the RSDT/XSDT.
2551
 
2552
Other ACPICA changes:
2553
 
2554
- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use
2555
AcpiOsUnmapMemory to free this mapping.
2556
- AcpiGetTable returns the actual mapped table. The mapping is managed
2557
internally and must not be deleted by the caller. Use of this interface
2558
causes no additional dynamic memory allocation.
2559
- AcpiFindRootPointer: Support for physical addressing has been eliminated,
2560
it appeared to be unused.
2561
- The interface to AcpiOsMapMemory has changed to be consistent with the
2562
other allocation interfaces.
2563
- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary
2564
parameters.
2565
- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
2566
bit platforms. Was previously 64 bits on all platforms.
2567
- The interface to the ACPI Global Lock acquire/release macros have changed
2568
slightly since ACPICA no longer keeps a local copy of the FACS with a
2569
constructed pointer to the actual global lock.
2570
 
2571
Porting to the new table manager:
2572
 
2573
- AcpiInitializeTables: Must be called once, and can be called anytime
2574
during the OS initialization process. It allows the host to specify an area
2575
of memory to be used to store the internal version of the RSDT/XSDT (root
2576
table). This allows the host to access ACPI tables before memory management
2577
is initialized and running.
2578
- AcpiReallocateRootTable: Can be called after memory management is running
2579
to copy the root table to a dynamically allocated array, freeing up the
2580
scratch memory specified in the call to AcpiInitializeTables.
2581
- AcpiSubsystemInitialize: This existing interface is independent of the
2582
Table Manager, and does not have to be called before the Table Manager can
2583
be used, it only must be called before the rest of ACPICA can be used.
2584
- ACPI Tables: Some changes have been made to the names and structure of the
2585
actbl.h and actbl1.h header files and may require changes to existing code.
2586
For example, bitfields have been completely removed because of their lack of
2587
portability across C compilers.
2588
- Update interfaces to the Global Lock acquire/release macros if local
2589
versions are used. (see acwin.h)
2590
 
2591
Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
2592
 
2593
New files: tbfind.c
2594
 
2595
Example Code and Data Size: These are the sizes for the OS-independent
2596
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2597
debug version of the code includes the debug output trace mechanism and has
2598
a much larger code and data size.
2599
 
2600
  Previous Release:
2601
    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2602
    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2603
  Current Release:
2604
    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
2605
    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
2606
 
2607
 
2608
2) iASL Compiler/Disassembler and Tools:
2609
 
2610
No changes for this release.
2611
 
2612
----------------------------------------
2613
21 July 2006. Summary of changes for version 20060721:
2614
 
2615
1) ACPI CA Core Subsystem:
2616
 
2617
The full source code for the ASL test suite used to validate the iASL
2618
compiler and the ACPICA core subsystem is being released with the ACPICA
2619
source for the first time. The source is contained in a separate package and
2620
consists of over 1100 files that exercise all ASL/AML operators. The package
2621
should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
2622
Suietov)
2623
 
2624
Completed a new design and implementation for support of the ACPI Global
2625
Lock. On the OS side, the global lock is now treated as a standard AML
2626
mutex. Previously, multiple OS threads could "acquire" the global lock
2627
simultaneously. However, this could cause the BIOS to be starved out of the
2628
lock - especially in cases such as the Embedded Controller driver where
2629
there is a tight coupling between the OS and the BIOS.
2630
 
2631
Implemented an optimization for the ACPI Global Lock interrupt mechanism.
2632
The Global Lock interrupt handler no longer queues the execution of a
2633
separate thread to signal the global lock semaphore. Instead, the semaphore
2634
is signaled directly from the interrupt handler.
2635
 
2636
Implemented support within the AML interpreter for package objects that
2637
contain a larger AML length (package list length) than the package element
2638
count. In this case, the length of the package is truncated to match the
2639
package element count. Some BIOS code apparently modifies the package length
2640
on the fly, and this change supports this behavior. Provides compatibility
2641
with the MS AML interpreter. (With assistance from Fiodor Suietov)
2642
 
2643
Implemented a temporary fix for the BankValue parameter of a Bank Field to
2644
support all constant values, now including the Zero and One opcodes.
2645
Evaluation of this parameter must eventually be converted to a full TermArg
2646
evaluation. A not-implemented error is now returned (temporarily) for non-
2647
constant values for this parameter.
2648
 
2649
Fixed problem reports (Fiodor Suietov) integrated:
2650
- Fix for premature object deletion after CopyObject on Operation Region (BZ
2651
350)
2652
 
2653
Example Code and Data Size: These are the sizes for the OS-independent
2654
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2655
debug version of the code includes the debug output trace mechanism and has
2656
a much larger code and data size.
2657
 
2658
  Previous Release:
2659
    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
2660
    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
2661
  Current Release:
2662
    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2663
    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2664
 
2665
 
2666
2) iASL Compiler/Disassembler and Tools:
2667
 
2668
No changes for this release.
2669
 
2670
----------------------------------------
2671
07 July 2006. Summary of changes for version 20060707:
2672
 
2673
1) ACPI CA Core Subsystem:
2674
 
2675
Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
2676
that do not allow the initialization of address pointers within packed
2677
structures - even though the hardware itself may support misaligned
2678
transfers. Some of the debug data structures are packed by default to
2679
minimize size.
2680
 
2681
Added an error message for the case where AcpiOsGetThreadId() returns zero.
2682
A non-zero value is required by the core ACPICA code to ensure the proper
2683
operation of AML mutexes and recursive control methods.
2684
 
2685
The DSDT is now the only ACPI table that determines whether the AML
2686
interpreter is in 32-bit or 64-bit mode. Not really a functional change, but
2687
the hooks for per-table 32/64 switching have been removed from the code. A
2688
clarification to the ACPI specification is forthcoming in ACPI 3.0B.
2689
 
2690
Fixed a possible leak of an OwnerID in the error path of
2691
AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
2692
deletion to a single place in AcpiTbUninstallTable to correct possible leaks
2693
when using the AcpiTbDeleteTablesByType interface (with assistance from
2694
Lance Ortiz.)
2695
 
2696
Fixed a problem with Serialized control methods where the semaphore
2697
associated with the method could be over-signaled after multiple method
2698
invocations.
2699
 
2700
Fixed two issues with the locking of the internal namespace data structure.
2701
Both the Unload() operator and AcpiUnloadTable interface now lock the
2702
namespace during the namespace deletion associated with the table unload
2703
(with assistance from Linn Crosetto.)
2704
 
2705
Fixed problem reports (Valery Podrezov) integrated:
2706
- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
2707
 
2708
Fixed problem reports (Fiodor Suietov) integrated:
2709
- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
2710
- On Address Space handler deletion, needless deactivation call (BZ 374)
2711
- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
2712
- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone
2713
(BZ 376)
2714
- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
2715
- Minimum Length of RSDT should be validated (BZ 379)
2716
- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
2717
Handler (BZ (380)
2718
- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded
2719
(BZ 381)
2720
 
2721
Example Code and Data Size: These are the sizes for the OS-independent
2722
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2723
debug version of the code includes the debug output trace mechanism and has
2724
a much larger code and data size.
2725
 
2726
  Previous Release:
2727
    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
2728
    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
2729
  Current Release:
2730
    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
2731
    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
2732
 
2733
 
2734
2) iASL Compiler/Disassembler and Tools:
2735
 
2736
Fixed problem reports:
2737
Compiler segfault when ASL contains a long (>1024) String declaration (BZ
2738
436)
2739
 
2740
----------------------------------------
2741
23 June 2006. Summary of changes for version 20060623:
2742
 
2743
1) ACPI CA Core Subsystem:
2744
 
2745
Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
2746
allows the type to be customized to the host OS for improved efficiency
2747
(since a spinlock is usually a very small object.)
2748
 
2749
Implemented support for "ignored" bits in the ACPI registers. According to
2750
the ACPI specification, these bits should be preserved when writing the
2751
registers via a read/modify/write cycle. There are 3 bits preserved in this
2752
manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
2753
 
2754
Implemented the initial deployment of new OSL mutex interfaces. Since some
2755
host operating systems have separate mutex and semaphore objects, this
2756
feature was requested. The base code now uses mutexes (and the new mutex
2757
interfaces) wherever a binary semaphore was used previously. However, for
2758
the current release, the mutex interfaces are defined as macros to map them
2759
to the existing semaphore interfaces. Therefore, no OSL changes are required
2760
at this time. (See acpiosxf.h)
2761
 
2762
Fixed several problems with the support for the control method SyncLevel
2763
parameter. The SyncLevel now works according to the ACPI specification and
2764
in concert with the Mutex SyncLevel parameter, since the current SyncLevel
2765
is a property of the executing thread. Mutual exclusion for control methods
2766
is now implemented with a mutex instead of a semaphore.
2767
 
2768
Fixed three instances of the use of the C shift operator in the bitfield
2769
support code (exfldio.c) to avoid the use of a shift value larger than the
2770
target data width. The behavior of C compilers is undefined in this case and
2771
can cause unpredictable results, and therefore the case must be detected and
2772
avoided. (Fiodor Suietov)
2773
 
2774
Added an info message whenever an SSDT or OEM table is loaded dynamically
2775
via the Load() or LoadTable() ASL operators. This should improve debugging
2776
capability since it will show exactly what tables have been loaded (beyond
2777
the tables present in the RSDT/XSDT.)
2778
 
2779
Example Code and Data Size: These are the sizes for the OS-independent
2780
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2781
debug version of the code includes the debug output trace mechanism and has
2782
a much larger code and data size.
2783
 
2784
  Previous Release:
2785
    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
2786
    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
2787
  Current Release:
2788
    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
2789
    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
2790
 
2791
 
2792
2) iASL Compiler/Disassembler and Tools:
2793
 
2794
No changes for this release.
2795
 
2796
----------------------------------------
2797
08 June 2006. Summary of changes for version 20060608:
2798
 
2799
1) ACPI CA Core Subsystem:
2800
 
2801
Converted the locking mutex used for the ACPI hardware to a spinlock. This
2802
change should eliminate all problems caused by attempting to acquire a
2803
semaphore at interrupt level, and it means that all ACPICA external
2804
interfaces that directly access the ACPI hardware can be safely called from
2805
interrupt level. OSL code that implements the semaphore interfaces should be
2806
able to eliminate any workarounds for being called at interrupt level.
2807
 
2808
Fixed a regression introduced in 20060526 where the ACPI device
2809
initialization could be prematurely aborted with an AE_NOT_FOUND if a device
2810
did not have an optional _INI method.
2811
 
2812
Fixed an IndexField issue where a write to the Data Register should be
2813
limited in size to the AccessSize (width) of the IndexField itself. (BZ 433,
2814
Fiodor Suietov)
2815
 
2816
Fixed problem reports (Valery Podrezov) integrated:
2817
- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
2818
 
2819
Fixed problem reports (Fiodor Suietov) integrated:
2820
- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
2821
 
2822
Removed four global mutexes that were obsolete and were no longer being
2823
used.
2824
 
2825
Example Code and Data Size: These are the sizes for the OS-independent
2826
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2827
debug version of the code includes the debug output trace mechanism and has
2828
a much larger code and data size.
2829
 
2830
  Previous Release:
2831
    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
2832
    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
2833
  Current Release:
2834
    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
2835
    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
2836
 
2837
 
2838
2) iASL Compiler/Disassembler and Tools:
2839
 
2840
Fixed a fault when using -g option (get tables from registry) on Windows
2841
machines.
2842
 
2843
Fixed problem reports integrated:
2844
- Generate error if CreateField NumBits parameter is zero. (BZ 405)
2845
- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
2846
Suietov)
2847
- Global table revision override (-r) is ignored (BZ 413)
2848
 
2849
----------------------------------------
2850
26 May 2006. Summary of changes for version 20060526:
2851
 
2852
1) ACPI CA Core Subsystem:
2853
 
2854
Restructured, flattened, and simplified the internal interfaces for
2855
namespace object evaluation - resulting in smaller code, less CPU stack use,
2856
and fewer interfaces. (With assistance from Mikhail Kouzmich)
2857
 
2858
Fixed a problem with the CopyObject operator where the first parameter was
2859
not typed correctly for the parser, interpreter, compiler, and disassembler.
2860
Caused various errors and unexpected behavior.
2861
 
2862
Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
2863
produced incorrect results with some C compilers. Since the behavior of C
2864
compilers when the shift value is larger than the datatype width is
2865
apparently not well defined, the interpreter now detects this condition and
2866
simply returns zero as expected in all such cases. (BZ 395)
2867
 
2868
Fixed problem reports (Valery Podrezov) integrated:
2869
- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
2870
- Allow interpreter to handle nested method declarations (BZ 5361)
2871
 
2872
Fixed problem reports (Fiodor Suietov) integrated:
2873
- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
2874
- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
2875
- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
2876
- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
2877
- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
2878
- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
2879
- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
2880
- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
2881
- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
2882
- Status of the Global Initialization Handler call not used (BZ 366)
2883
- Incorrect object parameter to Global Initialization Handler (BZ 367)
2884
 
2885
Example Code and Data Size: These are the sizes for the OS-independent
2886
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2887
debug version of the code includes the debug output trace mechanism and has
2888
a much larger code and data size.
2889
 
2890
  Previous Release:
2891
    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
2892
    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
2893
  Current Release:
2894
    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
2895
    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
2896
 
2897
 
2898
2) iASL Compiler/Disassembler and Tools:
2899
 
2900
Modified the parser to allow the names IO, DMA, and IRQ to be used as
2901
namespace identifiers with no collision with existing resource descriptor
2902
macro names. This provides compatibility with other ASL compilers and is
2903
most useful for disassembly/recompilation of existing tables without parse
2904
errors. (With assistance from Thomas Renninger)
2905
 
2906
Disassembler: fixed an incorrect disassembly problem with the
2907
DataTableRegion and CopyObject operators. Fixed a possible fault during
2908
disassembly of some Alias operators.
2909
 
2910
----------------------------------------
2911
12 May 2006. Summary of changes for version 20060512:
2912
 
2913
1) ACPI CA Core Subsystem:
2914
 
2915
Replaced the AcpiOsQueueForExecution interface with a new interface named
2916
AcpiOsExecute. The major difference is that the new interface does not have
2917
a Priority parameter, this appeared to be useless and has been replaced by a
2918
Type parameter. The Type tells the host what type of execution is being
2919
requested, such as global lock handler, notify handler, GPE handler, etc.
2920
This allows the host to queue and execute the request as appropriate for the
2921
request type, possibly using different work queues and different priorities
2922
for the various request types. This enables fixes for multithreading
2923
deadlock problems such as BZ #5534, and will require changes to all existing
2924
OS interface layers. (Alexey Starikovskiy and Bob Moore)
2925
 
2926
Fixed a possible memory leak associated with the support for the so-called
2927
"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
2928
Suietov)
2929
 
2930
Fixed a problem with the Load() operator where a table load from an
2931
operation region could overwrite an internal table buffer by up to 7 bytes
2932
and cause alignment faults on IPF systems. (With assistance from Luming Yu)
2933
 
2934
Example Code and Data Size: These are the sizes for the OS-independent
2935
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2936
debug version of the code includes the debug output trace mechanism and has
2937
a much larger code and data size.
2938
 
2939
  Previous Release:
2940
    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
2941
    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
2942
  Current Release:
2943
    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
2944
    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
2945
 
2946
 
2947
 
2948
2) iASL Compiler/Disassembler and Tools:
2949
 
2950
Disassembler: Implemented support to cross reference the internal namespace
2951
and automatically generate ASL External() statements for symbols not defined
2952
within the current table being disassembled. This will simplify the
2953
disassembly and recompilation of interdependent tables such as SSDTs since
2954
these statements will no longer have to be added manually.
2955
 
2956
Disassembler: Implemented experimental support to automatically detect
2957
invocations of external control methods and generate appropriate External()
2958
statements. This is problematic because the AML cannot be correctly parsed
2959
until the number of arguments for each control method is known. Currently,
2960
standalone method invocations and invocations as the source operand of a
2961
Store() statement are supported.
2962
 
2963
Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
2964
LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
2965
LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
2966
more readable and likely closer to the original ASL source.
2967
 
2968
----------------------------------------
2969
21 April 2006. Summary of changes for version 20060421:
2970
 
2971
1) ACPI CA Core Subsystem:
2972
 
2973
Removed a device initialization optimization introduced in 20051216 where
2974
the _STA method was not run unless an _INI was also present for the same
2975
device. This optimization could cause problems because it could allow _INI
2976
methods to be run within a not-present device subtree. (If a not-present
2977
device had no _INI, _STA would not be run, the not-present status would not
2978
be discovered, and the children of the device would be incorrectly
2979
traversed.)
2980
 
2981
Implemented a new _STA optimization where namespace subtrees that do not
2982
contain _INI are identified and ignored during device initialization.
2983
Selectively running _STA can significantly improve boot time on large
2984
machines (with assistance from Len Brown.)
2985
 
2986
Implemented support for the device initialization case where the returned
2987
_STA flags indicate a device not-present but functioning. In this case, _INI
2988
is not run, but the device children are examined for presence, as per the
2989
ACPI specification.
2990
 
2991
Implemented an additional change to the IndexField support in order to
2992
conform to MS behavior. The value written to the Index Register is not
2993
simply a byte offset, it is a byte offset in units of the access width of
2994
the parent Index Field. (Fiodor Suietov)
2995
 
2996
Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
2997
interface is called during the creation of all AML operation regions, and
2998
allows the host OS to exert control over what addresses it will allow the
2999
AML code to access. Operation Regions whose addresses are disallowed will
3000
cause a runtime exception when they are actually accessed (will not affect
3001
or abort table loading.) See oswinxf or osunixxf for an example
3002
implementation.
3003
 
3004
Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
3005
interface allows the host OS to match the various "optional"
3006
interface/behavior strings for the _OSI predefined control method as
3007
appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
3008
for an example implementation.
3009
 
3010
Restructured and corrected various problems in the exception handling code
3011
paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
3012
(with assistance from Takayoshi Kochi.)
3013
 
3014
Modified the Linux source converter to ignore quoted string literals while
3015
converting identifiers from mixed to lower case. This will correct problems
3016
with the disassembler and other areas where such strings must not be
3017
modified.
3018
 
3019
The ACPI_FUNCTION_* macros no longer require quotes around the function
3020
name. This allows the Linux source converter to convert the names, now that
3021
the converter ignores quoted strings.
3022
 
3023
Example Code and Data Size: These are the sizes for the OS-independent
3024
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3025
debug version of the code includes the debug output trace mechanism and has
3026
a much larger code and data size.
3027
 
3028
  Previous Release:
3029
 
3030
    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
3031
    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
3032
  Current Release:
3033
    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
3034
    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
3035
 
3036
 
3037
2) iASL Compiler/Disassembler and Tools:
3038
 
3039
Implemented 3 new warnings for iASL, and implemented multiple warning levels
3040
(w2 flag).
3041
 
3042
1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not
3043
WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
3044
check for the possible timeout, a warning is issued.
3045
 
3046
2) Useless operators: If an ASL operator does not specify an optional target
3047
operand and it also does not use the function return value from the
3048
operator, a warning is issued since the operator effectively does nothing.
3049
 
3050
3) Unreferenced objects: If a namespace object is created, but never
3051
referenced, a warning is issued. This is a warning level 2 since there are
3052
cases where this is ok, such as when a secondary table is loaded that uses
3053
the unreferenced objects. Even so, care is taken to only flag objects that
3054
don't look like they will ever be used. For example, the reserved methods
3055
(starting with an underscore) are usually not referenced because it is
3056
expected that the OS will invoke them.
3057
 
3058
----------------------------------------
3059
31 March 2006. Summary of changes for version 20060331:
3060
 
3061
1) ACPI CA Core Subsystem:
3062
 
3063
Implemented header file support for the following additional ACPI tables:
3064
ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support,
3065
all current and known ACPI tables are now defined in the ACPICA headers and
3066
are available for use by device drivers and other software.
3067
 
3068
Implemented support to allow tables that contain ACPI names with invalid
3069
characters to be loaded. Previously, this would cause the table load to
3070
fail, but since there are several known cases of such tables on existing
3071
machines, this change was made to enable ACPI support for them. Also, this
3072
matches the behavior of the Microsoft ACPI implementation.
3073
 
3074
Fixed a couple regressions introduced during the memory optimization in the
3075
20060317 release. The namespace node definition required additional
3076
reorganization and an internal datatype that had been changed to 8-bit was
3077
restored to 32-bit. (Valery Podrezov)
3078
 
3079
Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
3080
could be passed through to AcpiOsReleaseObject which is unexpected. Such
3081
null pointers are now trapped and ignored, matching the behavior of the
3082
previous implementation before the deployment of AcpiOsReleaseObject.
3083
(Valery Podrezov, Fiodor Suietov)
3084
 
3085
Fixed a memory mapping leak during the deletion of a SystemMemory operation
3086
region where a cached memory mapping was not deleted. This became a
3087
noticeable problem for operation regions that are defined within frequently
3088
used control methods. (Dana Meyers)
3089
 
3090
Reorganized the ACPI table header files into two main files: one for the
3091
ACPI tables consumed by the ACPICA core, and another for the miscellaneous
3092
ACPI tables that are consumed by the drivers and other software. The various
3093
FADT definitions were merged into one common section and three different
3094
tables (ACPI 1.0, 1.0+, and 2.0)
3095
 
3096
Example Code and Data Size: These are the sizes for the OS-independent
3097
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3098
debug version of the code includes the debug output trace mechanism and has
3099
a much larger code and data size.
3100
 
3101
  Previous Release:
3102
    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
3103
    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
3104
  Current Release:
3105
    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
3106
    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
3107
 
3108
 
3109
2) iASL Compiler/Disassembler and Tools:
3110
 
3111
Disassembler: Implemented support to decode and format all non-AML ACPI
3112
tables (tables other than DSDTs and SSDTs.) This includes the new tables
3113
added to the ACPICA headers, therefore all current and known ACPI tables are
3114
supported.
3115
 
3116
Disassembler: The change to allow ACPI names with invalid characters also
3117
enables the disassembly of such tables. Invalid characters within names are
3118
changed to '*' to make the name printable; the iASL compiler will still
3119
generate an error for such names, however, since this is an invalid ACPI
3120
character.
3121
 
3122
Implemented an option for AcpiXtract (-a) to extract all tables found in the
3123
input file. The default invocation extracts only the DSDTs and SSDTs.
3124
 
3125
Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
3126
makefile for the AcpiXtract utility.
3127
 
3128
----------------------------------------
3129
17 March 2006. Summary of changes for version 20060317:
3130
 
3131
1) ACPI CA Core Subsystem:
3132
 
3133
Implemented the use of a cache object for all internal namespace nodes.
3134
Since there are about 1000 static nodes in a typical system, this will
3135
decrease memory use for cache implementations that minimize per-allocation
3136
overhead (such as a slab allocator.)
3137
 
3138
Removed the reference count mechanism for internal namespace nodes, since it
3139
was deemed unnecessary. This reduces the size of each namespace node by
3140
about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case,
3141
and 32 bytes for the 64-bit case.
3142
 
3143
Optimized several internal data structures to reduce object size on 64-bit
3144
platforms by packing data within the 64-bit alignment. This includes the
3145
frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
3146
instances corresponding to the namespace objects.
3147
 
3148
Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1"
3149
and "Windows 2006".
3150
 
3151
Split the allocation tracking mechanism out to a separate file, from
3152
utalloc.c to uttrack.c. This mechanism appears to be only useful for
3153
application-level code. Kernels may wish to not include uttrack.c in
3154
distributions.
3155
 
3156
Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated
3157
code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
3158
macros.)
3159
 
3160
Code and Data Size: These are the sizes for the acpica.lib produced by the
3161
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3162
driver or OSPM code. The debug version of the code includes the debug output
3163
trace mechanism and has a much larger code and data size. Note that these
3164
values will vary depending on the efficiency of the compiler and the
3165
compiler options used during generation.
3166
 
3167
  Previous Release:
3168
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3169
    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
3170
  Current Release:
3171
    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
3172
    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
3173
 
3174
 
3175
2) iASL Compiler/Disassembler and Tools:
3176
 
3177
Implemented an ANSI C version of the acpixtract utility. This version will
3178
automatically extract the DSDT and all SSDTs from the input acpidump text
3179
file and dump the binary output to separate files. It can also display a
3180
summary of the input file including the headers for each table found and
3181
will extract any single ACPI table, with any signature. (See
3182
source/tools/acpixtract)
3183
 
3184
----------------------------------------
3185
10 March 2006. Summary of changes for version 20060310:
3186
 
3187
1) ACPI CA Core Subsystem:
3188
 
3189
Tagged all external interfaces to the subsystem with the new
3190
ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist
3191
kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
3192
macro. The default definition is NULL.
3193
 
3194
Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId.
3195
This allows the host to define this as necessary to simplify kernel
3196
integration. The default definition is ACPI_NATIVE_UINT.
3197
 
3198
Fixed two interpreter problems related to error processing, the deletion of
3199
objects, and placing invalid pointers onto the internal operator result
3200
stack. BZ 6028, 6151 (Valery Podrezov)
3201
 
3202
Increased the reference count threshold where a warning is emitted for large
3203
reference counts in order to eliminate unnecessary warnings on systems with
3204
large namespaces (especially 64-bit.) Increased the value from 0x400 to
3205
0x800.
3206
 
3207
Due to universal disagreement as to the meaning of the 'c' in the calloc()
3208
function, the ACPI_MEM_CALLOCATE macro has been renamed to
3209
ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
3210
ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
3211
ACPI_FREE.
3212
 
3213
Code and Data Size: These are the sizes for the acpica.lib produced by the
3214
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3215
driver or OSPM code. The debug version of the code includes the debug output
3216
trace mechanism and has a much larger code and data size. Note that these
3217
values will vary depending on the efficiency of the compiler and the
3218
compiler options used during generation.
3219
 
3220
  Previous Release:
3221
    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
3222
    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
3223
  Current Release:
3224
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3225
    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
3226
 
3227
 
3228
2) iASL Compiler/Disassembler:
3229
 
3230
Disassembler: implemented support for symbolic resource descriptor
3231
references. If a CreateXxxxField operator references a fixed offset within a
3232
resource descriptor, a name is assigned to the descriptor and the offset is
3233
translated to the appropriate resource tag and pathname. The addition of
3234
this support brings the disassembled code very close to the original ASL
3235
source code and helps eliminate run-time errors when the disassembled code
3236
is modified (and recompiled) in such a way as to invalidate the original
3237
fixed offsets.
3238
 
3239
Implemented support for a Descriptor Name as the last parameter to the ASL
3240
Register() macro. This parameter was inadvertently left out of the ACPI
3241
specification, and will be added for ACPI 3.0b.
3242
 
3243
Fixed a problem where the use of the "_OSI" string (versus the full path
3244
"\_OSI") caused an internal compiler error. ("No back ptr to op")
3245
 
3246
Fixed a problem with the error message that occurs when an invalid string is
3247
used for a _HID object (such as one with an embedded asterisk: "*PNP010A".)
3248
The correct message is now displayed.
3249
 
3250
----------------------------------------
3251
17 February 2006. Summary of changes for version 20060217:
3252
 
3253
1) ACPI CA Core Subsystem:
3254
 
3255
Implemented a change to the IndexField support to match the behavior of the
3256
Microsoft AML interpreter. The value written to the Index register is now a
3257
byte offset, no longer an index based upon the width of the Data register.
3258
This should fix IndexField problems seen on some machines where the Data
3259
register is not exactly one byte wide. The ACPI specification will be
3260
clarified on this point.
3261
 
3262
Fixed a problem where several resource descriptor types could overrun the
3263
internal descriptor buffer due to size miscalculation: VendorShort,
3264
VendorLong, and Interrupt. This was noticed on IA64 machines, but could
3265
affect all platforms.
3266
 
3267
Fixed a problem where individual resource descriptors were misaligned within
3268
the internal buffer, causing alignment faults on IA64 platforms.
3269
 
3270
Code and Data Size: These are the sizes for the acpica.lib produced by the
3271
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3272
driver or OSPM code. The debug version of the code includes the debug output
3273
trace mechanism and has a much larger code and data size. Note that these
3274
values will vary depending on the efficiency of the compiler and the
3275
compiler options used during generation.
3276
 
3277
  Previous Release:
3278
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3279
    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
3280
  Current Release:
3281
    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
3282
    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
3283
 
3284
 
3285
2) iASL Compiler/Disassembler:
3286
 
3287
Implemented support for new reserved names: _WDG and _WED are Microsoft
3288
extensions for Windows Instrumentation Management, _TDL is a new ACPI-
3289
defined method (Throttling Depth Limit.)
3290
 
3291
Fixed a problem where a zero-length VendorShort or VendorLong resource
3292
descriptor was incorrectly emitted as a descriptor of length one.
3293
 
3294
----------------------------------------
3295
10 February 2006. Summary of changes for version 20060210:
3296
 
3297
1) ACPI CA Core Subsystem:
3298
 
3299
Removed a couple of extraneous ACPI_ERROR messages that appeared during
3300
normal execution. These became apparent after the conversion from
3301
ACPI_DEBUG_PRINT.
3302
 
3303
Fixed a problem where the CreateField operator could hang if the BitIndex or
3304
NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
3305
 
3306
Fixed a problem where a DeRefOf operation on a buffer object incorrectly
3307
failed with an exception. This also fixes a couple of related RefOf and
3308
DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
3309
 
3310
Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of
3311
AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ
3312
5480)
3313
 
3314
Implemented a memory cleanup at the end of the execution of each iteration
3315
of an AML While() loop, preventing the accumulation of outstanding objects.
3316
(Valery Podrezov, BZ 5427)
3317
 
3318
Eliminated a chunk of duplicate code in the object resolution code. (Valery
3319
Podrezov, BZ 5336)
3320
 
3321
Fixed several warnings during the 64-bit code generation.
3322
 
3323
The AcpiSrc source code conversion tool now inserts one line of whitespace
3324
after an if() statement that is followed immediately by a comment, improving
3325
readability of the Linux code.
3326
 
3327
Code and Data Size: The current and previous library sizes for the core
3328
subsystem are shown below. These are the code and data sizes for the
3329
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3330
values do not include any ACPI driver or OSPM code. The debug version of the
3331
code includes the debug output trace mechanism and has a much larger code
3332
and data size. Note that these values will vary depending on the efficiency
3333
of the compiler and the compiler options used during generation.
3334
 
3335
  Previous Release:
3336
    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
3337
    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
3338
  Current Release:
3339
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3340
    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
3341
 
3342
 
3343
2) iASL Compiler/Disassembler:
3344
 
3345
Fixed a problem with the disassembly of a BankField operator with a complex
3346
expression for the BankValue parameter.
3347
 
3348
----------------------------------------
3349
27 January 2006. Summary of changes for version 20060127:
3350
 
3351
1) ACPI CA Core Subsystem:
3352
 
3353
Implemented support in the Resource Manager to allow unresolved namestring
3354
references within resource package objects for the _PRT method. This support
3355
is in addition to the previously implemented unresolved reference support
3356
within the AML parser. If the interpreter slack mode is enabled, these
3357
unresolved references will be passed through to the caller as a NULL package
3358
entry.
3359
 
3360
Implemented and deployed new macros and functions for error and warning
3361
messages across the subsystem. These macros are simpler and generate less
3362
code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
3363
ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
3364
macros remain defined to allow ACPI drivers time to migrate to the new
3365
macros.
3366
 
3367
Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the
3368
Acquire/Release Lock OSL interfaces.
3369
 
3370
Fixed a problem where Alias ASL operators are sometimes not correctly
3371
resolved, in both the interpreter and the iASL compiler.
3372
 
3373
Fixed several problems with the implementation of the ConcatenateResTemplate
3374
ASL operator. As per the ACPI specification, zero length buffers are now
3375
treated as a single EndTag. One-length buffers always cause a fatal
3376
exception. Non-zero length buffers that do not end with a full 2-byte EndTag
3377
cause a fatal exception.
3378
 
3379
Fixed a possible structure overwrite in the AcpiGetObjectInfo external
3380
interface. (With assistance from Thomas Renninger)
3381
 
3382
Code and Data Size: The current and previous library sizes for the core
3383
subsystem are shown below. These are the code and data sizes for the
3384
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3385
values do not include any ACPI driver or OSPM code. The debug version of the
3386
code includes the debug output trace mechanism and has a much larger code
3387
and data size. Note that these values will vary depending on the efficiency
3388
of the compiler and the compiler options used during generation.
3389
 
3390
  Previous Release:
3391
    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
3392
    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
3393
  Current Release:
3394
    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
3395
    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
3396
 
3397
 
3398
2) iASL Compiler/Disassembler:
3399
 
3400
Fixed an internal error that was generated for any forward references to ASL
3401
Alias objects.
3402
 
3403
----------------------------------------
3404
13 January 2006. Summary of changes for version 20060113:
3405
 
3406
1) ACPI CA Core Subsystem:
3407
 
3408
Added 2006 copyright to all module headers and signons. This affects
3409
virtually every file in the ACPICA core subsystem, iASL compiler, and the
3410
utilities.
3411
 
3412
Enhanced the ACPICA error reporting in order to simplify user migration to
3413
the non-debug version of ACPICA. Replaced all instances of the
3414
ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug
3415
levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
3416
respectively. This preserves all error and warning messages in the non-debug
3417
version of the ACPICA code (this has been referred to as the "debug lite"
3418
option.) Over 200 cases were converted to create a total of over 380
3419
error/warning messages across the ACPICA code. This increases the code and
3420
data size of the default non-debug version of the code somewhat (about 13K),
3421
but all error/warning reporting may be disabled if desired (and code
3422
eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
3423
configuration option. The size of the debug version of ACPICA remains about
3424
the same.
3425
 
3426
Fixed a memory leak within the AML Debugger "Set" command. One object was
3427
not properly deleted for every successful invocation of the command.
3428
 
3429
Code and Data Size: The current and previous library sizes for the core
3430
subsystem are shown below. These are the code and data sizes for the
3431
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3432
values do not include any ACPI driver or OSPM code. The debug version of the
3433
code includes the debug output trace mechanism and has a much larger code
3434
and data size. Note that these values will vary depending on the efficiency
3435
of the compiler and the compiler options used during generation.
3436
 
3437
  Previous Release:
3438
    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
3439
    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
3440
  Current Release:
3441
    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
3442
    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
3443
 
3444
 
3445
2) iASL Compiler/Disassembler:
3446
 
3447
The compiler now officially supports the ACPI 3.0a specification that was
3448
released on December 30, 2005. (Specification is available at www.acpi.info)
3449
 
3450
----------------------------------------
3451
16 December 2005. Summary of changes for version 20051216:
3452
 
3453
1) ACPI CA Core Subsystem:
3454
 
3455
Implemented optional support to allow unresolved names within ASL Package
3456
objects. A null object is inserted in the package when a named reference
3457
cannot be located in the current namespace. Enabled via the interpreter
3458
slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines
3459
that contain such code.
3460
 
3461
Implemented an optimization to the initialization sequence that can improve
3462
boot time. During ACPI device initialization, the _STA method is now run if
3463
and only if the _INI method exists. The _STA method is used to determine if
3464
the device is present; An _INI can only be run if _STA returns present, but
3465
it is a waste of time to run the _STA method if the _INI does not exist.
3466
(Prototype and assistance from Dong Wei)
3467
 
3468
Implemented use of the C99 uintptr_t for the pointer casting macros if it is
3469
available in the current compiler. Otherwise, the default (void *) cast is
3470
used as before.
3471
 
3472
Fixed some possible memory leaks found within the execution path of the
3473
Break, Continue, If, and CreateField operators. (Valery Podrezov)
3474
 
3475
Fixed a problem introduced in the 20051202 release where an exception is
3476
generated during method execution if a control method attempts to declare
3477
another method.
3478
 
3479
Moved resource descriptor string constants that are used by both the AML
3480
disassembler and AML debugger to the common utilities directory so that
3481
these components are independent.
3482
 
3483
Implemented support in the AcpiExec utility (-e switch) to globally ignore
3484
exceptions during control method execution (method is not aborted.)
3485
 
3486
Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
3487
generation.
3488
 
3489
Code and Data Size: The current and previous library sizes for the core
3490
subsystem are shown below. These are the code and data sizes for the
3491
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3492
values do not include any ACPI driver or OSPM code. The debug version of the
3493
code includes the debug output trace mechanism and has a much larger code
3494
and data size. Note that these values will vary depending on the efficiency
3495
of the compiler and the compiler options used during generation.
3496
 
3497
  Previous Release:
3498
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3499
    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
3500
  Current Release:
3501
    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
3502
    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
3503
 
3504
 
3505
2) iASL Compiler/Disassembler:
3506
 
3507
Fixed a problem where a CPU stack overflow fault could occur if a recursive
3508
method call was made from within a Return statement.
3509
 
3510
----------------------------------------
3511
02 December 2005. Summary of changes for version 20051202:
3512
 
3513
1) ACPI CA Core Subsystem:
3514
 
3515
Modified the parsing of control methods to no longer create namespace
3516
objects during the first pass of the parse. Objects are now created only
3517
during the execute phase, at the moment the namespace creation operator is
3518
encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This
3519
should eliminate ALREADY_EXISTS exceptions seen on some machines where
3520
reentrant control methods are protected by an AML mutex. The mutex will now
3521
correctly block multiple threads from attempting to create the same object
3522
more than once.
3523
 
3524
Increased the number of available Owner Ids for namespace object tracking
3525
from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on
3526
some machines with a large number of ACPI tables (either static or dynamic).
3527
 
3528
Fixed a problem with the AcpiExec utility where a fault could occur when the
3529
-b switch (batch mode) is used.
3530
 
3531
Enhanced the namespace dump routine to output the owner ID for each
3532
namespace object.
3533
 
3534
Code and Data Size: The current and previous library sizes for the core
3535
subsystem are shown below. These are the code and data sizes for the
3536
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3537
values do not include any ACPI driver or OSPM code. The debug version of the
3538
code includes the debug output trace mechanism and has a much larger code
3539
and data size. Note that these values will vary depending on the efficiency
3540
of the compiler and the compiler options used during generation.
3541
 
3542
  Previous Release:
3543
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3544
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3545
  Current Release:
3546
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3547
    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
3548
 
3549
 
3550
2) iASL Compiler/Disassembler:
3551
 
3552
Fixed a parse error during compilation of certain Switch/Case constructs. To
3553
simplify the parse, the grammar now allows for multiple Default statements
3554
and this error is now detected and flagged during the analysis phase.
3555
 
3556
Disassembler: The disassembly now includes the contents of the original
3557
table header within a comment at the start of the file. This includes the
3558
name and version of the original ASL compiler.
3559
 
3560
----------------------------------------
3561
17 November 2005. Summary of changes for version 20051117:
3562
 
3563
1) ACPI CA Core Subsystem:
3564
 
3565
Fixed a problem in the AML parser where the method thread count could be
3566
decremented below zero if any errors occurred during the method parse phase.
3567
This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines.
3568
This also fixed a related regression with the mechanism that detects and
3569
corrects methods that cannot properly handle reentrancy (related to the
3570
deployment of the new OwnerId mechanism.)
3571
 
3572
Eliminated the pre-parsing of control methods (to detect errors) during
3573
table load. Related to the problem above, this was causing unwind issues if
3574
any errors occurred during the parse, and it seemed to be overkill. A table
3575
load should not be aborted if there are problems with any single control
3576
method, thus rendering this feature rather pointless.
3577
 
3578
Fixed a problem with the new table-driven resource manager where an internal
3579
buffer overflow could occur for small resource templates.
3580
 
3581
Implemented a new external interface, AcpiGetVendorResource. This interface
3582
will find and return a vendor-defined resource descriptor within a _CRS or
3583
_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
3584
 
3585
Removed the length limit (200) on string objects as per the upcoming ACPI
3586
3.0A specification. This affects the following areas of the interpreter: 1)
3587
any implicit conversion of a Buffer to a String, 2) a String object result
3588
of the ASL Concatentate operator, 3) the String object result of the ASL
3589
ToString operator.
3590
 
3591
Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER
3592
on a semaphore object would incorrectly timeout. This allows the
3593
multithreading features of the AcpiExec utility to work properly under
3594
Windows.
3595
 
3596
Updated the Linux makefiles for the iASL compiler and AcpiExec to include
3597
the recently added file named "utresrc.c".
3598
 
3599
Code and Data Size: The current and previous library sizes for the core
3600
subsystem are shown below. These are the code and data sizes for the
3601
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3602
values do not include any ACPI driver or OSPM code. The debug version of the
3603
code includes the debug output trace mechanism and has a much larger code
3604
and data size. Note that these values will vary depending on the efficiency
3605
of the compiler and the compiler options used during generation.
3606
 
3607
  Previous Release:
3608
    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
3609
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3610
  Current Release:
3611
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
3612
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3613
 
3614
 
3615
2) iASL Compiler/Disassembler:
3616
 
3617
Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
3618
specification. For the iASL compiler, this means that string literals within
3619
the source ASL can be of any length.
3620
 
3621
Enhanced the listing output to dump the AML code for resource descriptors
3622
immediately after the ASL code for each descriptor, instead of in a block at
3623
the end of the entire resource template.
3624
 
3625
Enhanced the compiler debug output to dump the entire original parse tree
3626
constructed during the parse phase, before any transforms are applied to the
3627
tree. The transformed tree is dumped also.
3628
 
3629
----------------------------------------
3630
02 November 2005. Summary of changes for version 20051102:
3631
 
3632
1) ACPI CA Core Subsystem:
3633
 
3634
Modified the subsystem initialization sequence to improve GPE support. The
3635
GPE initialization has been split into two parts in order to defer execution
3636
of the _PRW methods (Power Resources for Wake) until after the hardware is
3637
fully initialized and the SCI handler is installed. This allows the _PRW
3638
methods to access fields protected by the Global Lock. This will fix systems
3639
where a NO_GLOBAL_LOCK exception has been seen during initialization.
3640
 
3641
Converted the ACPI internal object disassemble and display code within the
3642
AML debugger to fully table-driven operation, reducing code size and
3643
increasing maintainability.
3644
 
3645
Fixed a regression with the ConcatenateResTemplate() ASL operator introduced
3646
in the 20051021 release.
3647
 
3648
Implemented support for "local" internal ACPI object types within the
3649
debugger "Object" command and the AcpiWalkNamespace external interfaces.
3650
These local types include RegionFields, BankFields, IndexFields, Alias, and
3651
reference objects.
3652
 
3653
Moved common AML resource handling code into a new file, "utresrc.c". This
3654
code is shared by both the Resource Manager and the AML Debugger.
3655
 
3656
Code and Data Size: The current and previous library sizes for the core
3657
subsystem are shown below. These are the code and data sizes for the
3658
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3659
values do not include any ACPI driver or OSPM code. The debug version of the
3660
code includes the debug output trace mechanism and has a much larger code
3661
and data size. Note that these values will vary depending on the efficiency
3662
of the compiler and the compiler options used during generation.
3663
 
3664
  Previous Release:
3665
    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
3666
    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
3667
  Current Release:
3668
    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
3669
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
3670
 
3671
 
3672
2) iASL Compiler/Disassembler:
3673
 
3674
Fixed a problem with very large initializer lists (more than 4000 elements)
3675
for both Buffer and Package objects where the parse stack could overflow.
3676
 
3677
Enhanced the pre-compile source code scan for non-ASCII characters to ignore
3678
characters within comment fields. The scan is now always performed and is no
3679
longer optional, detecting invalid characters within a source file
3680
immediately rather than during the parse phase or later.
3681
 
3682
Enhanced the ASL grammar definition to force early reductions on all list-
3683
style grammar elements so that the overall parse stack usage is greatly
3684
reduced. This should improve performance and reduce the possibility of parse
3685
stack overflow.
3686
 
3687
Eliminated all reduce/reduce conflicts in the iASL parser generation. Also,
3688
with the addition of a %expected statement, the compiler generates from
3689
source with no warnings.
3690
 
3691
Fixed a possible segment fault in the disassembler if the input filename
3692
does not contain a "dot" extension (Thomas Renninger).
3693
 
3694
----------------------------------------
3695
21 October 2005. Summary of changes for version 20051021:
3696
 
3697
1) ACPI CA Core Subsystem:
3698
 
3699
Implemented support for the EM64T and other x86-64 processors. This
3700
essentially entails recognizing that these processors support non-aligned
3701
memory transfers. Previously, all 64-bit processors were assumed to lack
3702
hardware support for non-aligned transfers.
3703
 
3704
Completed conversion of the Resource Manager to nearly full table-driven
3705
operation. Specifically, the resource conversion code (convert AML to
3706
internal format and the reverse) and the debug code to dump internal
3707
resource descriptors are fully table-driven, reducing code and data size and
3708
improving maintainability.
3709
 
3710
The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word
3711
on 64-bit processors instead of a fixed 32-bit word. (With assistance from
3712
Alexey Starikovskiy)
3713
 
3714
Implemented support within the resource conversion code for the Type-
3715
Specific byte within the various ACPI 3.0 *WordSpace macros.
3716
 
3717
Fixed some issues within the resource conversion code for the type-specific
3718
flags for both Memory and I/O address resource descriptors. For Memory,
3719
implemented support for the MTP and TTP flags. For I/O, split the TRS and
3720
TTP flags into two separate fields.
3721
 
3722
Code and Data Size: The current and previous library sizes for the core
3723
subsystem are shown below. These are the code and data sizes for the
3724
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3725
values do not include any ACPI driver or OSPM code. The debug version of the
3726
code includes the debug output trace mechanism and has a much larger code
3727
and data size. Note that these values will vary depending on the efficiency
3728
of the compiler and the compiler options used during generation.
3729
 
3730
  Previous Release:
3731
    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
3732
    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
3733
  Current Release:
3734
    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
3735
    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
3736
 
3737
 
3738
 
3739
2) iASL Compiler/Disassembler:
3740
 
3741
Relaxed a compiler restriction that disallowed a ResourceIndex byte if the
3742
corresponding ResourceSource string was not also present in a resource
3743
descriptor declaration. This restriction caused problems with existing
3744
AML/ASL code that includes the Index byte without the string. When such AML
3745
was disassembled, it could not be compiled without modification. Further,
3746
the modified code created a resource template with a different size than the
3747
original, breaking code that used fixed offsets into the resource template
3748
buffer.
3749
 
3750
Removed a recent feature of the disassembler to ignore a lone ResourceIndex
3751
byte. This byte is now emitted if present so that the exact AML can be
3752
reproduced when the disassembled code is recompiled.
3753
 
3754
Improved comments and text alignment for the resource descriptor code
3755
emitted by the disassembler.
3756
 
3757
Implemented disassembler support for the ACPI 3.0 AccessSize field within a
3758
Register() resource descriptor.
3759
 
3760
----------------------------------------
3761
30 September 2005. Summary of changes for version 20050930:
3762
 
3763
1) ACPI CA Core Subsystem:
3764
 
3765
Completed a major overhaul of the Resource Manager code - specifically,
3766
optimizations in the area of the AML/internal resource conversion code. The
3767
code has been optimized to simplify and eliminate duplicated code, CPU stack
3768
use has been decreased by optimizing function parameters and local
3769
variables, and naming conventions across the manager have been standardized
3770
for clarity and ease of maintenance (this includes function, parameter,
3771
variable, and struct/typedef names.) The update may force changes in some
3772
driver code, depending on how resources are handled by the host OS.
3773
 
3774
All Resource Manager dispatch and information tables have been moved to a
3775
single location for clarity and ease of maintenance. One new file was
3776
created, named "rsinfo.c".
3777
 
3778
The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
3779
guarantee that the argument is not evaluated twice, making them less prone
3780
to macro side-effects. However, since there exists the possibility of
3781
additional stack use if a particular compiler cannot optimize them (such as
3782
in the debug generation case), the original macros are optionally available.
3783
Note that some invocations of the return_VALUE macro may now cause size
3784
mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to
3785
eliminate these. (From Randy Dunlap)
3786
 
3787
Implemented a new mechanism to enable debug tracing for individual control
3788
methods. A new external interface, AcpiDebugTrace, is provided to enable
3789
this mechanism. The intent is to allow the host OS to easily enable and
3790
disable tracing for problematic control methods. This interface can be
3791
easily exposed to a user or debugger interface if desired. See the file
3792
psxface.c for details.
3793
 
3794
AcpiUtCallocate will now return a valid pointer if a length of zero is
3795
specified - a length of one is used and a warning is issued. This matches
3796
the behavior of AcpiUtAllocate.
3797
 
3798
Code and Data Size: The current and previous library sizes for the core
3799
subsystem are shown below. These are the code and data sizes for the
3800
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3801
values do not include any ACPI driver or OSPM code. The debug version of the
3802
code includes the debug output trace mechanism and has a much larger code
3803
and data size. Note that these values will vary depending on the efficiency
3804
of the compiler and the compiler options used during generation.
3805
 
3806
  Previous Release:
3807
    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
3808
    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
3809
  Current Release:
3810
    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
3811
    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
3812
 
3813
 
3814
2) iASL Compiler/Disassembler:
3815
 
3816
A remark is issued if the effective compile-time length of a package or
3817
buffer is zero. Previously, this was a warning.
3818
 
3819
----------------------------------------
3820
16 September 2005. Summary of changes for version 20050916:
3821
 
3822
1) ACPI CA Core Subsystem:
3823
 
3824
Fixed a problem within the Resource Manager where support for the Generic
3825
Register descriptor was not fully implemented. This descriptor is now fully
3826
recognized, parsed, disassembled, and displayed.
3827
 
3828
Completely restructured the Resource Manager code to utilize table-driven
3829
dispatch and lookup, eliminating many of the large switch() statements. This
3830
reduces overall subsystem code size and code complexity. Affects the
3831
resource parsing and construction, disassembly, and debug dump output.
3832
 
3833
Cleaned up and restructured the debug dump output for all resource
3834
descriptors. Improved readability of the output and reduced code size.
3835
 
3836
Fixed a problem where changes to internal data structures caused the
3837
optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
3838
 
3839
Code and Data Size: The current and previous library sizes for the core
3840
subsystem are shown below. These are the code and data sizes for the
3841
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
3842
values do not include any ACPI driver or OSPM code. The debug version of the
3843
code includes the debug output trace mechanism and has a much larger code
3844
and data size. Note that these values will vary depending on the efficiency
3845
of the compiler and the compiler options used during generation.
3846
 
3847
  Previous Release:
3848
    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
3849
    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
3850
  Current Release:
3851
    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
3852
    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
3853
 
3854
 
3855
2) iASL Compiler/Disassembler:
3856
 
3857
Updated the disassembler to automatically insert an EndDependentFn() macro
3858
into the ASL stream if this macro is missing in the original AML code,
3859
simplifying compilation of the resulting ASL module.
3860
 
3861
Fixed a problem in the disassembler where a disassembled ResourceSource
3862
string (within a large resource descriptor) was not surrounded by quotes and
3863
not followed by a comma, causing errors when the resulting ASL module was
3864
compiled. Also, escape sequences within a ResourceSource string are now
3865
handled correctly (especially "\\")
3866
 
3867
----------------------------------------
3868
02 September 2005. Summary of changes for version 20050902:
3869
 
3870
1) ACPI CA Core Subsystem:
3871
 
3872
Fixed a problem with the internal Owner ID allocation and deallocation
3873
mechanisms for control method execution and recursive method invocation.
3874
This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
3875
messages seen on some systems. Recursive method invocation depth is
3876
currently limited to 255. (Alexey Starikovskiy)
3877
 
3878
Completely eliminated all vestiges of support for the "module-level
3879
executable code" until this support is fully implemented and debugged. This
3880
should eliminate the NO_RETURN_VALUE exceptions seen during table load on
3881
some systems that invoke this support.
3882
 
3883
Fixed a problem within the resource manager code where the transaction flags
3884
for a 64-bit address descriptor were handled incorrectly in the type-
3885
specific flag byte.
3886
 
3887
Consolidated duplicate code within the address descriptor resource manager
3888
code, reducing overall subsystem code size.
3889
 
3890
Fixed a fault when using the AML debugger "disassemble" command to
3891
disassemble individual control methods.
3892
 
3893
Removed references to the "release_current" directory within the Unix
3894
release package.
3895
 
3896
Code and Data Size: The current and previous core subsystem library sizes
3897
are shown below. These are the code and data sizes for the acpica.lib
3898
produced by the Microsoft Visual C++ 6.0 compiler. These values do not
3899
include any ACPI driver or OSPM code. The debug version of the code includes
3900
the debug output trace mechanism and has a much larger code and data size.
3901
Note that these values will vary depending on the efficiency of the compiler
3902
and the compiler options used during generation.
3903
 
3904
  Previous Release:
3905
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3906
    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
3907
  Current Release:
3908
    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
3909
    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
3910
 
3911
 
3912
2) iASL Compiler/Disassembler:
3913
 
3914
Implemented an error check for illegal duplicate values in the interrupt and
3915
dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
3916
Interrupt().
3917
 
3918
Implemented error checking for the Irq() and IrqNoFlags() macros to detect
3919
too many values in the interrupt list (16 max) and invalid values in the
3920
list (range 0 - 15)
3921
 
3922
The maximum length string literal within an ASL file is now restricted to
3923
200 characters as per the ACPI specification.
3924
 
3925
Fixed a fault when using the -ln option (generate namespace listing).
3926
 
3927
Implemented an error check to determine if a DescriptorName within a
3928
resource descriptor has already been used within the current scope.
3929
 
3930
----------------------------------------
3931
15 August 2005.  Summary of changes for version 20050815:
3932
 
3933
1) ACPI CA Core Subsystem:
3934
 
3935
Implemented a full bytewise compare to determine if a table load request is
3936
attempting to load a duplicate table. The compare is performed if the table
3937
signatures and table lengths match. This will allow different tables with
3938
the same OEM Table ID and revision to be loaded - probably against the ACPI
3939
specification, but discovered in the field nonetheless.
3940
 
3941
Added the changes.txt logfile to each of the zipped release packages.
3942
 
3943
Code and Data Size: Current and previous core subsystem library sizes are
3944
shown below. These are the code and data sizes for the acpica.lib produced
3945
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3946
any ACPI driver or OSPM code. The debug version of the code includes the
3947
debug output trace mechanism and has a much larger code and data size. Note
3948
that these values will vary depending on the efficiency of the compiler and
3949
the compiler options used during generation.
3950
 
3951
  Previous Release:
3952
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3953
    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
3954
  Current Release:
3955
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
3956
    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
3957
 
3958
 
3959
2) iASL Compiler/Disassembler:
3960
 
3961
Fixed a problem where incorrect AML code could be generated for Package
3962
objects if optimization is disabled (via the -oa switch).
3963
 
3964
Fixed a problem with where incorrect AML code is generated for variable-
3965
length packages when the package length is not specified and the number of
3966
initializer values is greater than 255.
3967
 
3968
 
3969
----------------------------------------
3970
29 July 2005.  Summary of changes for version 20050729:
3971
 
3972
1) ACPI CA Core Subsystem:
3973
 
3974
Implemented support to ignore an attempt to install/load a particular ACPI
3975
table more than once. Apparently there exists BIOS code that repeatedly
3976
attempts to load the same SSDT upon certain events. With assistance from
3977
Venkatesh Pallipadi.
3978
 
3979
Restructured the main interface to the AML parser in order to correctly
3980
handle all exceptional conditions. This will prevent leakage of the OwnerId
3981
resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some
3982
machines. With assistance from Alexey Starikovskiy.
3983
 
3984
Support for "module level code" has been disabled in this version due to a
3985
number of issues that have appeared on various machines. The support can be
3986
enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
3987
compilation. When the issues are fully resolved, the code will be enabled by
3988
default again.
3989
 
3990
Modified the internal functions for debug print support to define the
3991
FunctionName parameter as a (const char *) for compatibility with compiler
3992
built-in macros such as __FUNCTION__, etc.
3993
 
3994
Linted the entire ACPICA source tree for both 32-bit and 64-bit.
3995
 
3996
Implemented support to display an object count summary for the AML Debugger
3997
commands Object and Methods.
3998
 
3999
Code and Data Size: Current and previous core subsystem library sizes are
4000
shown below. These are the code and data sizes for the acpica.lib produced
4001
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4002
any ACPI driver or OSPM code. The debug version of the code includes the
4003
debug output trace mechanism and has a much larger code and data size. Note
4004
that these values will vary depending on the efficiency of the compiler and
4005
the compiler options used during generation.
4006
 
4007
  Previous Release:
4008
    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
4009
    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
4010
  Current Release:
4011
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4012
    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
4013
 
4014
 
4015
2) iASL Compiler/Disassembler:
4016
 
4017
Fixed a regression that appeared in the 20050708 version of the compiler
4018
where an error message was inadvertently emitted for invocations of the _OSI
4019
reserved control method.
4020
 
4021
----------------------------------------
4022
08 July 2005.  Summary of changes for version 20050708:
4023
 
4024
1) ACPI CA Core Subsystem:
4025
 
4026
The use of the CPU stack in the debug version of the subsystem has been
4027
considerably reduced. Previously, a debug structure was declared in every
4028
function that used the debug macros. This structure has been removed in
4029
favor of declaring the individual elements as parameters to the debug
4030
functions. This reduces the cumulative stack use during nested execution of
4031
ACPI function calls at the cost of a small increase in the code size of the
4032
debug version of the subsystem. With assistance from Alexey Starikovskiy and
4033
Len Brown.
4034
 
4035
Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
4036
headers to define a macro that will return the current function name at
4037
runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by
4038
the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
4039
compiler-dependent header, the function name is saved on the CPU stack (one
4040
pointer per function.) This mechanism is used because apparently there
4041
exists no standard ANSI-C defined macro that that returns the function name.
4042
 
4043
Redesigned and reimplemented the "Owner ID" mechanism used to track
4044
namespace objects created/deleted by ACPI tables and control method
4045
execution. A bitmap is now used to allocate and free the IDs, thus solving
4046
the wraparound problem present in the previous implementation. The size of
4047
the namespace node descriptor was reduced by 2 bytes as a result (Alexey
4048
Starikovskiy).
4049
 
4050
Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield
4051
flag definitions within the headers for the predefined ACPI tables. These
4052
have been replaced by UINT8_BIT in order to increase the code portability of
4053
the subsystem. If the use of UINT8 remains a problem, we may be forced to
4054
eliminate bitfields entirely because of a lack of portability.
4055
 
4056
Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This
4057
is a frequently used function and this improvement increases the performance
4058
of the entire subsystem (Alexey Starikovskiy).
4059
 
4060
Fixed several possible memory leaks and the inverse - premature object
4061
deletion (Alexey Starikovskiy).
4062
 
4063
Code and Data Size: Current and previous core subsystem library sizes are
4064
shown below. These are the code and data sizes for the acpica.lib produced
4065
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4066
any ACPI driver or OSPM code. The debug version of the code includes the
4067
debug output trace mechanism and has a much larger code and data size. Note
4068
that these values will vary depending on the efficiency of the compiler and
4069
the compiler options used during generation.
4070
 
4071
  Previous Release:
4072
    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
4073
    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
4074
  Current Release:
4075
    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
4076
    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
4077
 
4078
----------------------------------------
4079
24 June 2005.  Summary of changes for version 20050624:
4080
 
4081
1) ACPI CA Core Subsystem:
4082
 
4083
Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
4084
the host-defined cache object. This allows the OSL implementation to define
4085
and type this object in any manner desired, simplifying the OSL
4086
implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
4087
Linux, and should be defined in the OS-specific header file for other
4088
operating systems as required.
4089
 
4090
Changed the interface to AcpiOsAcquireObject to directly return the
4091
requested object as the function return (instead of ACPI_STATUS.) This
4092
change was made for performance reasons, since this is the purpose of the
4093
interface in the first place. AcpiOsAcquireObject is now similar to the
4094
AcpiOsAllocate interface.
4095
 
4096
Implemented a new AML debugger command named Businfo. This command displays
4097
information about all devices that have an associate _PRT object. The _ADR,
4098
_HID, _UID, and _CID are displayed for these devices.
4099
 
4100
Modified the initialization sequence in AcpiInitializeSubsystem to call the
4101
OSL interface AcpiOslInitialize first, before any local initialization. This
4102
change was required because the global initialization now calls OSL
4103
interfaces.
4104
 
4105
Enhanced the Dump command to display the entire contents of Package objects
4106
(including all sub-objects and their values.)
4107
 
4108
Restructured the code base to split some files because of size and/or
4109
because the code logically belonged in a separate file. New files are listed
4110
below. All makefiles and project files included in the ACPI CA release have
4111
been updated.
4112
    utilities/utcache.c           /* Local cache interfaces */
4113
    utilities/utmutex.c           /* Local mutex support */
4114
    utilities/utstate.c           /* State object support */
4115
    interpreter/parser/psloop.c   /* Main AML parse loop */
4116
 
4117
Code and Data Size: Current and previous core subsystem library sizes are
4118
shown below. These are the code and data sizes for the acpica.lib produced
4119
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4120
any ACPI driver or OSPM code. The debug version of the code includes the
4121
debug output trace mechanism and has a much larger code and data size. Note
4122
that these values will vary depending on the efficiency of the compiler and
4123
the compiler options used during generation.
4124
 
4125
  Previous Release:
4126
    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
4127
    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
4128
  Current Release:
4129
    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
4130
    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
4131
 
4132
 
4133
2) iASL Compiler/Disassembler:
4134
 
4135
Fixed a regression introduced in version 20050513 where the use of a Package
4136
object within a Case() statement caused a compile time exception. The
4137
original behavior has been restored (a Match() operator is emitted.)
4138
 
4139
----------------------------------------
4140
17 June 2005.  Summary of changes for version 20050617:
4141
 
4142
1) ACPI CA Core Subsystem:
4143
 
4144
Moved the object cache operations into the OS interface layer (OSL) to allow
4145
the host OS to handle these operations if desired (for example, the Linux
4146
OSL will invoke the slab allocator). This support is optional; the compile
4147
time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache
4148
code in the ACPI CA core. The new OSL interfaces are shown below. See
4149
utalloc.c for an example implementation, and acpiosxf.h for the exact
4150
interface definitions. With assistance from Alexey Starikovskiy.
4151
    AcpiOsCreateCache
4152
    AcpiOsDeleteCache
4153
    AcpiOsPurgeCache
4154
    AcpiOsAcquireObject
4155
    AcpiOsReleaseObject
4156
 
4157
Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return
4158
and restore a flags parameter. This fits better with many OS lock models.
4159
Note: the current execution state (interrupt handler or not) is no longer
4160
passed to these interfaces. If necessary, the OSL must determine this state
4161
by itself, a simple and fast operation. With assistance from Alexey
4162
Starikovskiy.
4163
 
4164
Fixed a problem in the ACPI table handling where a valid XSDT was assumed
4165
present if the revision of the RSDP was 2 or greater. According to the ACPI
4166
specification, the XSDT is optional in all cases, and the table manager
4167
therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
4168
Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain
4169
only the RSDT.
4170
 
4171
Fixed an interpreter problem with the Mid() operator in the case of an input
4172
string where the resulting output string is of zero length. It now correctly
4173
returns a valid, null terminated string object instead of a string object
4174
with a null pointer.
4175
 
4176
Fixed a problem with the control method argument handling to allow a store
4177
to an Arg object that already contains an object of type Device. The Device
4178
object is now correctly overwritten. Previously, an error was returned.
4179
 
4180
 
4181
Enhanced the debugger Find command to emit object values in addition to the
4182
found object pathnames. The output format is the same as the dump namespace
4183
command.
4184
 
4185
Enhanced the debugger Set command. It now has the ability to set the value
4186
of any Named integer object in the namespace (Previously, only method locals
4187
and args could be set.)
4188
 
4189
Code and Data Size: Current and previous core subsystem library sizes are
4190
shown below. These are the code and data sizes for the acpica.lib produced
4191
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4192
any ACPI driver or OSPM code. The debug version of the code includes the
4193
debug output trace mechanism and has a much larger code and data size. Note
4194
that these values will vary depending on the efficiency of the compiler and
4195
the compiler options used during generation.
4196
 
4197
  Previous Release:
4198
    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
4199
    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
4200
  Current Release:
4201
    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
4202
    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
4203
 
4204
 
4205
2) iASL Compiler/Disassembler:
4206
 
4207
Fixed a regression in the disassembler where if/else/while constructs were
4208
output incorrectly. This problem was introduced in the previous release
4209
(20050526). This problem also affected the single-step disassembly in the
4210
debugger.
4211
 
4212
Fixed a problem where compiling the reserved _OSI method would randomly (but
4213
rarely) produce compile errors.
4214
 
4215
Enhanced the disassembler to emit compilable code in the face of incorrect
4216
AML resource descriptors. If the optional ResourceSourceIndex is present,
4217
but the ResourceSource is not, do not emit the ResourceSourceIndex in the
4218
disassembly. Otherwise, the resulting code cannot be compiled without
4219
errors.
4220
 
4221
----------------------------------------
4222
26 May 2005.  Summary of changes for version 20050526:
4223
 
4224
1) ACPI CA Core Subsystem:
4225
 
4226
Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
4227
the module level (not within a control method.) These opcodes are executed
4228
exactly once at the time the table is loaded. This type of code was legal up
4229
until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in
4230
order to provide backwards compatibility with earlier BIOS implementations.
4231
This eliminates the "Encountered executable code at module level" warning
4232
that was previously generated upon detection of such code.
4233
 
4234
Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
4235
inadvertently be generated during the lookup of namespace objects in the
4236
second pass parse of ACPI tables and control methods. It appears that this
4237
problem could occur during the resolution of forward references to namespace
4238
objects.
4239
 
4240
Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
4241
corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
4242
allows the deadlock detection debug code to be compiled out in the normal
4243
case, improving mutex performance (and overall subsystem performance)
4244
considerably.
4245
 
4246
Implemented a handful of miscellaneous fixes for possible memory leaks on
4247
error conditions and error handling control paths. These fixes were
4248
suggested by FreeBSD and the Coverity Prevent source code analysis tool.
4249
 
4250
Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c)
4251
to prevent a fault in this error case.
4252
 
4253
Code and Data Size: Current and previous core subsystem library sizes are
4254
shown below. These are the code and data sizes for the acpica.lib produced
4255
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4256
any ACPI driver or OSPM code. The debug version of the code includes the
4257
debug output trace mechanism and has a much larger code and data size. Note
4258
that these values will vary depending on the efficiency of the compiler and
4259
the compiler options used during generation.
4260
 
4261
  Previous Release:
4262
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
4263
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
4264
  Current Release:
4265
    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
4266
    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
4267
 
4268
 
4269
2) iASL Compiler/Disassembler:
4270
 
4271
Implemented support to allow Type 1 and Type 2 ASL operators to appear at
4272
the module level (not within a control method.) These operators will be
4273
executed once at the time the table is loaded. This type of code was legal
4274
up until the release of ACPI 2.0B (2002) and is now supported by the iASL
4275
compiler in order to provide backwards compatibility with earlier BIOS ASL
4276
code.
4277
 
4278
The ACPI integer width (specified via the table revision ID or the -r
4279
override, 32 or 64 bits) is now used internally during compile-time constant
4280
folding to ensure that constants are truncated to 32 bits if necessary.
4281
Previously, the revision ID value was only emitted in the AML table header.
4282
 
4283
An error message is now generated for the Mutex and Method operators if the
4284
SyncLevel parameter is outside the legal range of 0 through 15.
4285
 
4286
Fixed a problem with the Method operator ParameterTypes list handling (ACPI
4287
3.0). Previously, more than 2 types or 2 arguments generated a syntax error.
4288
The actual underlying implementation of method argument typechecking is
4289
still under development, however.
4290
 
4291
----------------------------------------
4292
13 May 2005.  Summary of changes for version 20050513:
4293
 
4294
1) ACPI CA Core Subsystem:
4295
 
4296
Implemented support for PCI Express root bridges -- added support for device
4297
PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
4298
 
4299
The interpreter now automatically truncates incoming 64-bit constants to 32
4300
bits if currently executing out of a 32-bit ACPI table (Revision < 2). This
4301
also affects the iASL compiler constant folding. (Note: as per below, the
4302
iASL compiler no longer allows 64-bit constants within 32-bit tables.)
4303
 
4304
Fixed a problem where string and buffer objects with "static" pointers
4305
(pointers to initialization data within an ACPI table) were not handled
4306
consistently. The internal object copy operation now always copies the data
4307
to a newly allocated buffer, regardless of whether the source object is
4308
static or not.
4309
 
4310
Fixed a problem with the FromBCD operator where an implicit result
4311
conversion was improperly performed while storing the result to the target
4312
operand. Since this is an "explicit conversion" operator, the implicit
4313
conversion should never be performed on the output.
4314
 
4315
Fixed a problem with the CopyObject operator where a copy to an existing
4316
named object did not always completely overwrite the existing object stored
4317
at name. Specifically, a buffer-to-buffer copy did not delete the existing
4318
buffer.
4319
 
4320
Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and
4321
structs for consistency.
4322
 
4323
Code and Data Size: Current and previous core subsystem library sizes are
4324
shown below. These are the code and data sizes for the acpica.lib produced
4325
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4326
any ACPI driver or OSPM code. The debug version of the code includes the
4327
debug output trace mechanism and has a much larger code and data size. Note
4328
that these values will vary depending on the efficiency of the compiler and
4329
the compiler options used during generation.
4330
 
4331
  Previous Release:
4332
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
4333
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
4334
  Current Release: (Same sizes)
4335
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
4336
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
4337
 
4338
 
4339
2) iASL Compiler/Disassembler:
4340
 
4341
The compiler now emits a warning if an attempt is made to generate a 64-bit
4342
integer constant from within a 32-bit ACPI table (Revision < 2). The integer
4343
is truncated to 32 bits.
4344
 
4345
Fixed a problem with large package objects: if the static length of the
4346
package is greater than 255, the "variable length package" opcode is
4347
emitted. Previously, this caused an error. This requires an update to the
4348
ACPI spec, since it currently (incorrectly) states that packages larger than
4349
255 elements are not allowed.
4350
 
4351
The disassembler now correctly handles variable length packages and packages
4352
larger than 255 elements.
4353
 
4354
----------------------------------------
4355
08 April 2005.  Summary of changes for version 20050408:
4356
 
4357
1) ACPI CA Core Subsystem:
4358
 
4359
Fixed three cases in the interpreter where an "index" argument to an ASL
4360
function was still (internally) 32 bits instead of the required 64 bits.
4361
This was the Index argument to the Index, Mid, and Match operators.
4362
 
4363
The "strupr" function is now permanently local (AcpiUtStrupr), since this is
4364
not a POSIX-defined function and not present in most kernel-level C
4365
libraries. All references to the C library strupr function have been removed
4366
from the headers.
4367
 
4368
Completed the deployment of static functions/prototypes. All prototypes with
4369
the static attribute have been moved from the headers to the owning C file.
4370
 
4371
Implemented an extract option (-e) for the AcpiBin utility (AML binary
4372
utility). This option allows the utility to extract individual ACPI tables
4373
from the output of AcpiDmp. It provides the same functionality of the
4374
acpixtract.pl perl script without the worry of setting the correct perl
4375
options. AcpiBin runs on Windows and has not yet been generated/validated in
4376
the Linux/Unix environment (but should be soon).
4377
 
4378
Updated and fixed the table dump option for AcpiBin (-d). This option
4379
converts a single ACPI table to a hex/ascii file, similar to the output of
4380
AcpiDmp.
4381
 
4382
Code and Data Size: Current and previous core subsystem library sizes are
4383
shown below. These are the code and data sizes for the acpica.lib produced
4384
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4385
any ACPI driver or OSPM code. The debug version of the code includes the
4386
debug output trace mechanism and has a much larger code and data size. Note
4387
that these values will vary depending on the efficiency of the compiler and
4388
the compiler options used during generation.
4389
 
4390
  Previous Release:
4391
    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
4392
    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
4393
  Current Release:
4394
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
4395
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
4396
 
4397
 
4398
2) iASL Compiler/Disassembler:
4399
 
4400
Disassembler fix: Added a check to ensure that the table length found in the
4401
ACPI table header within the input file is not longer than the actual input
4402
file size. This indicates some kind of file or table corruption.
4403
 
4404
----------------------------------------
4405
29 March 2005.  Summary of changes for version 20050329:
4406
 
4407
1) ACPI CA Core Subsystem:
4408
 
4409
An error is now generated if an attempt is made to create a Buffer Field of
4410
length zero (A CreateField with a length operand of zero.)
4411
 
4412
The interpreter now issues a warning whenever executable code at the module
4413
level is detected during ACPI table load. This will give some idea of the
4414
prevalence of this type of code.
4415
 
4416
Implemented support for references to named objects (other than control
4417
methods) within package objects.
4418
 
4419
Enhanced package object output for the debug object. Package objects are now
4420
completely dumped, showing all elements.
4421
 
4422
Enhanced miscellaneous object output for the debug object. Any object can
4423
now be written to the debug object (for example, a device object can be
4424
written, and the type of the object will be displayed.)
4425
 
4426
The "static" qualifier has been added to all local functions across both the
4427
core subsystem and the iASL compiler.
4428
 
4429
The number of "long" lines (> 80 chars) within the source has been
4430
significantly reduced, by about 1/3.
4431
 
4432
Cleaned up all header files to ensure that all CA/iASL functions are
4433
prototyped (even static functions) and the formatting is consistent.
4434
 
4435
Two new header files have been added, acopcode.h and acnames.h.
4436
 
4437
Removed several obsolete functions that were no longer used.
4438
 
4439
Code and Data Size: Current and previous core subsystem library sizes are
4440
shown below. These are the code and data sizes for the acpica.lib produced
4441
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4442
any ACPI driver or OSPM code. The debug version of the code includes the
4443
debug output trace mechanism and has a much larger code and data size. Note
4444
that these values will vary depending on the efficiency of the compiler and
4445
the compiler options used during generation.
4446
 
4447
  Previous Release:
4448
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4449
    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
4450
  Current Release:
4451
    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
4452
    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
4453
 
4454
 
4455
 
4456
2) iASL Compiler/Disassembler:
4457
 
4458
Fixed a problem with the resource descriptor generation/support. For the
4459
ResourceSourceIndex and the ResourceSource fields, both must be present, or
4460
both must be not present - can't have one without the other.
4461
 
4462
The compiler now returns non-zero from the main procedure if any errors have
4463
occurred during the compilation.
4464
 
4465
 
4466
----------------------------------------
4467
09 March 2005.  Summary of changes for version 20050309:
4468
 
4469
1) ACPI CA Core Subsystem:
4470
 
4471
The string-to-buffer implicit conversion code has been modified again after
4472
a change to the ACPI specification.  In order to match the behavior of the
4473
other major ACPI implementation, the target buffer is no longer truncated if
4474
the source string is smaller than an existing target buffer. This change
4475
requires an update to the ACPI spec, and should eliminate the recent
4476
AE_AML_BUFFER_LIMIT issues.
4477
 
4478
The "implicit return" support was rewritten to a new algorithm that solves
4479
the general case. Rather than attempt to determine when a method is about to
4480
exit, the result of every ASL operator is saved momentarily until the very
4481
next ASL operator is executed. Therefore, no matter how the method exits,
4482
there will always be a saved implicit return value. This feature is only
4483
enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate
4484
AE_AML_NO_RETURN_VALUE errors when enabled.
4485
 
4486
Implemented implicit conversion support for the predicate (operand) of the
4487
If, Else, and While operators. String and Buffer arguments are automatically
4488
converted to Integers.
4489
 
4490
Changed the string-to-integer conversion behavior to match the new ACPI
4491
errata: "If no integer object exists, a new integer is created. The ASCII
4492
string is interpreted as a hexadecimal constant. Each string character is
4493
interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
4494
with the first character as the most significant digit, and ending with the
4495
first non-hexadecimal character or end-of-string." This means that the first
4496
non-hex character terminates the conversion and this is the code that was
4497
changed.
4498
 
4499
Fixed a problem where the ObjectType operator would fail (fault) when used
4500
on an Index of a Package which pointed to a null package element. The
4501
operator now properly returns zero (Uninitialized) in this case.
4502
 
4503
Fixed a problem where the While operator used excessive memory by not
4504
properly popping the result stack during execution. There was no memory leak
4505
after execution, however. (Code provided by Valery Podrezov.)
4506
 
4507
Fixed a problem where references to control methods within Package objects
4508
caused the method to be invoked, instead of producing a reference object
4509
pointing to the method.
4510
 
4511
Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to
4512
improve performance and reduce code size. (Code provided by Alexey
4513
Starikovskiy.)
4514
 
4515
Code and Data Size: Current and previous core subsystem library sizes are
4516
shown below. These are the code and data sizes for the acpica.lib produced
4517
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4518
any ACPI driver or OSPM code. The debug version of the code includes the
4519
debug output trace mechanism and has a much larger code and data size. Note
4520
that these values will vary depending on the efficiency of the compiler and
4521
the compiler options used during generation.
4522
 
4523
  Previous Release:
4524
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4525
    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
4526
  Current Release:
4527
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4528
    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
4529
 
4530
 
4531
2) iASL Compiler/Disassembler:
4532
 
4533
Fixed a problem with the Return operator with no arguments. Since the AML
4534
grammar for the byte encoding requires an operand for the Return opcode, the
4535
compiler now emits a Return(Zero) for this case.  An ACPI specification
4536
update has been written for this case.
4537
 
4538
For tables other than the DSDT, namepath optimization is automatically
4539
disabled. This is because SSDTs can be loaded anywhere in the namespace, the
4540
compiler has no knowledge of where, and thus cannot optimize namepaths.
4541
 
4542
Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
4543
inadvertently omitted from the ACPI specification, and will require an
4544
update to the spec.
4545
 
4546
The source file scan for ASCII characters is now optional (-a). This change
4547
was made because some vendors place non-ascii characters within comments.
4548
However, the scan is simply a brute-force byte compare to ensure all
4549
characters in the file are in the range 0x00 to 0x7F.
4550
 
4551
Fixed a problem with the CondRefOf operator where the compiler was
4552
inappropriately checking for the existence of the target. Since the point of
4553
the operator is to check for the existence of the target at run-time, the
4554
compiler no longer checks for the target existence.
4555
 
4556
Fixed a problem where errors generated from the internal AML interpreter
4557
during constant folding were not handled properly, causing a fault.
4558
 
4559
Fixed a problem with overly aggressive range checking for the Stall
4560
operator. The valid range (max 255) is now only checked if the operand is of
4561
type Integer. All other operand types cannot be statically checked.
4562
 
4563
Fixed a problem where control method references within the RefOf, DeRefOf,
4564
and ObjectType operators were not treated properly. They are now treated as
4565
actual references, not method invocations.
4566
 
4567
Fixed and enhanced the "list namespace" option (-ln). This option was broken
4568
a number of releases ago.
4569
 
4570
Improved error handling for the Field, IndexField, and BankField operators.
4571
The compiler now cleanly reports and recovers from errors in the field
4572
component (FieldUnit) list.
4573
 
4574
Fixed a disassembler problem where the optional ResourceDescriptor fields
4575
TRS and TTP were not always handled correctly.
4576
 
4577
Disassembler - Comments in output now use "//" instead of "/*"
4578
 
4579
----------------------------------------
4580
28 February 2005.  Summary of changes for version 20050228:
4581
 
4582
1) ACPI CA Core Subsystem:
4583
 
4584
Fixed a problem where the result of an Index() operator (an object
4585
reference) must increment the reference count on the target object for the
4586
life of the object reference.
4587
 
4588
Implemented AML Interpreter and Debugger support for the new ACPI 3.0
4589
Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace
4590
resource descriptors.
4591
 
4592
Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
4593
Space Descriptor" string, indicating interpreter support for the descriptors
4594
above.
4595
 
4596
Implemented header support for the new ACPI 3.0 FADT flag bits.
4597
 
4598
Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1
4599
status/enable registers.
4600
 
4601
Updated header support for the MADT processor local Apic struct and MADT
4602
platform interrupt source struct for new ACPI 3.0 fields.
4603
 
4604
Implemented header support for the SRAT and SLIT ACPI tables.
4605
 
4606
Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag
4607
at runtime.
4608
 
4609
Code and Data Size: Current and previous core subsystem library sizes are
4610
shown below. These are the code and data sizes for the acpica.lib produced
4611
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4612
any ACPI driver or OSPM code. The debug version of the code includes the
4613
debug output trace mechanism and has a much larger code and data size. Note
4614
that these values will vary depending on the efficiency of the compiler and
4615
the compiler options used during generation.
4616
 
4617
  Previous Release:
4618
    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
4619
    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
4620
  Current Release:
4621
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
4622
    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
4623
 
4624
 
4625
2) iASL Compiler/Disassembler:
4626
 
4627
Fixed a problem with the internal 64-bit String-to-integer conversion with
4628
strings less than two characters long.
4629
 
4630
Fixed a problem with constant folding where the result of the Index()
4631
operator can not be considered a constant. This means that Index() cannot be
4632
a type3 opcode and this will require an update to the ACPI specification.
4633
 
4634
Disassembler: Implemented support for the TTP, MTP, and TRS resource
4635
descriptor fields. These fields were inadvertently ignored and not output in
4636
the disassembly of the resource descriptor.
4637
 
4638
 
4639
 ----------------------------------------
4640
11 February 2005.  Summary of changes for version 20050211:
4641
 
4642
1) ACPI CA Core Subsystem:
4643
 
4644
Implemented ACPI 3.0 support for implicit conversion within the Match()
4645
operator. MatchObjects can now be of type integer, buffer, or string instead
4646
of just type integer.  Package elements are implicitly converted to the type
4647
of the MatchObject. This change aligns the behavior of Match() with the
4648
behavior of the other logical operators (LLess(), etc.) It also requires an
4649
errata change to the ACPI specification as this support was intended for
4650
ACPI 3.0, but was inadvertently omitted.
4651
 
4652
Fixed a problem with the internal implicit "to buffer" conversion. Strings
4653
that are converted to buffers will cause buffer truncation if the string is
4654
smaller than the target buffer. Integers that are converted to buffers will
4655
not cause buffer truncation, only zero extension (both as per the ACPI
4656
spec.) The problem was introduced when code was added to truncate the
4657
buffer, but this should not be performed in all cases, only the string case.
4658
 
4659
Fixed a problem with the Buffer and Package operators where the interpreter
4660
would get confused if two such operators were used as operands to an ASL
4661
operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
4662
stack was not being popped after the execution of these operators, resulting
4663
in an AE_NO_RETURN_VALUE exception.
4664
 
4665
Fixed a problem with constructs of the form Store(Index(...),...). The
4666
reference object returned from Index was inadvertently resolved to an actual
4667
value. This problem was introduced in version 20050114 when the behavior of
4668
Store() was modified to restrict the object types that can be used as the
4669
source operand (to match the ACPI specification.)
4670
 
4671
Reduced excessive stack use within the AcpiGetObjectInfo procedure.
4672
 
4673
Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
4674
 
4675
Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
4676
 
4677
Code and Data Size: Current and previous core subsystem library sizes are
4678
shown below. These are the code and data sizes for the acpica.lib produced
4679
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4680
any ACPI driver or OSPM code. The debug version of the code includes the
4681
debug output trace mechanism and has a much larger code and data size. Note
4682
that these values will vary depending on the efficiency of the compiler and
4683
the compiler options used during generation.
4684
 
4685
  Previous Release:
4686
    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
4687
    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
4688
  Current Release:
4689
    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
4690
    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
4691
 
4692
 
4693
2) iASL Compiler/Disassembler:
4694
 
4695
Fixed a code generation problem in the constant folding optimization code
4696
where incorrect code was generated if a constant was reduced to a buffer
4697
object (i.e., a reduced type 5 opcode.)
4698
 
4699
Fixed a typechecking problem for the ToBuffer operator. Caused by an
4700
incorrect return type in the internal opcode information table.
4701
 
4702
----------------------------------------
4703
25 January 2005.  Summary of changes for version 20050125:
4704
 
4705
1) ACPI CA Core Subsystem:
4706
 
4707
Fixed a recently introduced problem with the Global Lock where the
4708
underlying semaphore was not created.  This problem was introduced in
4709
version 20050114, and caused an AE_AML_NO_OPERAND exception during an
4710
Acquire() operation on _GL.
4711
 
4712
The local object cache is now optional, and is disabled by default. Both
4713
AcpiExec and the iASL compiler enable the cache because they run in user
4714
mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE
4715
to enable the local cache.
4716
 
4717
Fixed an issue in the internal function AcpiUtEvaluateObject concerning the
4718
optional "implicit return" support where an error was returned if no return
4719
object was expected, but one was implicitly returned. AE_OK is now returned
4720
in this case and the implicitly returned object is deleted.
4721
AcpiUtEvaluateObject is only occasionally used, and only to execute reserved
4722
methods such as _STA and _INI where the return type is known up front.
4723
 
4724
Fixed a few issues with the internal convert-to-integer code. It now returns
4725
an error if an attempt is made to convert a null string, a string of only
4726
blanks/tabs, or a zero-length buffer. This affects both implicit conversion
4727
and explicit conversion via the ToInteger() operator.
4728
 
4729
The internal debug code in AcpiUtAcquireMutex has been commented out. It is
4730
not needed for normal operation and should increase the performance of the
4731
entire subsystem. The code remains in case it is needed for debug purposes
4732
again.
4733
 
4734
The AcpiExec source and makefile are included in the Unix/Linux package for
4735
the first time.
4736
 
4737
Code and Data Size: Current and previous core subsystem library sizes are
4738
shown below. These are the code and data sizes for the acpica.lib produced
4739
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4740
any ACPI driver or OSPM code. The debug version of the code includes the
4741
debug output trace mechanism and has a much larger code and data size. Note
4742
that these values will vary depending on the efficiency of the compiler and
4743
the compiler options used during generation.
4744
 
4745
  Previous Release:
4746
    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
4747
    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
4748
  Current Release:
4749
    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
4750
    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
4751
 
4752
2) iASL Compiler/Disassembler:
4753
 
4754
Switch/Case support: A warning is now issued if the type of the Switch value
4755
cannot be determined at compile time. For example, Switch(Arg0) will
4756
generate the warning, and the type is assumed to be an integer. As per the
4757
ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the
4758
warning.
4759
 
4760
Switch/Case support: Implemented support for buffer and string objects as
4761
the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
4762
buffers and strings.
4763
 
4764
Switch/Case support: The emitted code for the LEqual() comparisons now uses
4765
the switch value as the first operand, not the second. The case value is now
4766
the second operand, and this allows the case value to be implicitly
4767
converted to the type of the switch value, not the other way around.
4768
 
4769
Switch/Case support: Temporary variables are now emitted immediately within
4770
the control method, not at the global level. This means that there are now
4771
36 temps available per-method, not 36 temps per-module as was the case with
4772
the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
4773
 
4774
----------------------------------------
4775
14 January 2005.  Summary of changes for version 20050114:
4776
 
4777
Added 2005 copyright to all module headers.  This affects every module in
4778
the core subsystem, iASL compiler, and the utilities.
4779
 
4780
1) ACPI CA Core Subsystem:
4781
 
4782
Fixed an issue with the String-to-Buffer conversion code where the string
4783
null terminator was not included in the buffer after conversion, but there
4784
is existing ASL that assumes the string null terminator is included. This is
4785
the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
4786
introduced in the previous version when the code was updated to correctly
4787
set the converted buffer size as per the ACPI specification. The ACPI spec
4788
is ambiguous and will be updated to specify that the null terminator must be
4789
included in the converted buffer. This also affects the ToBuffer() ASL
4790
operator.
4791
 
4792
Fixed a problem with the Mid() ASL/AML operator where it did not work
4793
correctly on Buffer objects. Newly created sub-buffers were not being marked
4794
as initialized.
4795
 
4796
 
4797
Fixed a problem in AcpiTbFindTable where incorrect string compares were
4798
performed on the OemId and OemTableId table header fields.  These fields are
4799
not null terminated, so strncmp is now used instead of strcmp.
4800
 
4801
Implemented a restriction on the Store() ASL/AML operator to align the
4802
behavior with the ACPI specification.  Previously, any object could be used
4803
as the source operand.  Now, the only objects that may be used are Integers,
4804
Buffers, Strings, Packages, Object References, and DDB Handles.  If
4805
necessary, the original behavior can be restored by enabling the
4806
EnableInterpreterSlack flag.
4807
 
4808
Enhanced the optional "implicit return" support to allow an implicit return
4809
value from methods that are invoked externally via the AcpiEvaluateObject
4810
interface.  This enables implicit returns from the _STA and _INI methods,
4811
for example.
4812
 
4813
Changed the Revision() ASL/AML operator to return the current version of the
4814
AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned
4815
the supported ACPI version (This is the function of the _REV method).
4816
 
4817
Updated the _REV predefined method to return the currently supported version
4818
of ACPI, now 3.
4819
 
4820
Implemented batch mode option for the AcpiExec utility (-b).
4821
 
4822
Code and Data Size: Current and previous core subsystem library sizes are
4823
shown below. These are the code and data sizes for the acpica.lib produced
4824
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4825
any ACPI driver or OSPM code. The debug version of the code includes the
4826
debug output trace mechanism and has a much larger code and data size. Note
4827
that these values will vary depending on the efficiency of the compiler and
4828
the compiler options used during generation.
4829
 
4830
  Previous Release:
4831
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4832
    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
4833
  Current Release:
4834
    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
4835
    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
4836
 
4837
----------------------------------------
4838
10 December 2004.  Summary of changes for version 20041210:
4839
 
4840
ACPI 3.0 support is nearing completion in both the iASL compiler and the
4841
ACPI CA core subsystem.
4842
 
4843
1) ACPI CA Core Subsystem:
4844
 
4845
Fixed a problem in the ToDecimalString operator where the resulting string
4846
length was incorrectly calculated. The length is now calculated exactly,
4847
eliminating incorrect AE_STRING_LIMIT exceptions.
4848
 
4849
Fixed a problem in the ToHexString operator to allow a maximum 200 character
4850
string to be produced.
4851
 
4852
Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy
4853
routine where the length of the resulting buffer was not truncated to the
4854
new size (if the target buffer already existed).
4855
 
4856
Code and Data Size: Current and previous core subsystem library sizes are
4857
shown below. These are the code and data sizes for the acpica.lib produced
4858
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4859
any ACPI driver or OSPM code. The debug version of the code includes the
4860
debug output trace mechanism and has a much larger code and data size. Note
4861
that these values will vary depending on the efficiency of the compiler and
4862
the compiler options used during generation.
4863
 
4864
  Previous Release:
4865
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4866
    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
4867
  Current Release:
4868
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4869
    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
4870
 
4871
 
4872
2) iASL Compiler/Disassembler:
4873
 
4874
Implemented the new ACPI 3.0 resource template macros - DWordSpace,
4875
ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
4876
Includes support in the disassembler.
4877
 
4878
Implemented support for the new (ACPI 3.0) parameter to the Register macro,
4879
AccessSize.
4880
 
4881
Fixed a problem where the _HE resource name for the Interrupt macro was
4882
referencing bit 0 instead of bit 1.
4883
 
4884
Implemented check for maximum 255 interrupts in the Interrupt macro.
4885
 
4886
Fixed a problem with the predefined resource descriptor names where
4887
incorrect AML code was generated if the offset within the resource buffer
4888
was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
4889
but did not update the surrounding package lengths.
4890
 
4891
Changes to the Dma macro:  All channels within the channel list must be in
4892
the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
4893
optional (default is BusMaster).
4894
 
4895
Implemented check for maximum 7 data bytes for the VendorShort macro.
4896
 
4897
The ReadWrite parameter is now optional for the Memory32 and similar macros.
4898
 
4899
----------------------------------------
4900
03 December 2004.  Summary of changes for version 20041203:
4901
 
4902
1) ACPI CA Core Subsystem:
4903
 
4904
The low-level field insertion/extraction code (exfldio) has been completely
4905
rewritten to eliminate unnecessary complexity, bugs, and boundary
4906
conditions.
4907
 
4908
Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString
4909
operators where the input operand could be inadvertently deleted if no
4910
conversion was necessary (e.g., if the input to ToInteger was an Integer
4911
object.)
4912
 
4913
Fixed a problem with the ToDecimalString and ToHexString where an incorrect
4914
exception code was returned if the resulting string would be > 200 chars.
4915
AE_STRING_LIMIT is now returned.
4916
 
4917
Fixed a problem with the Concatenate operator where AE_OK was always
4918
returned, even if the operation failed.
4919
 
4920
Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
4921
semaphores to be allocated.
4922
 
4923
Code and Data Size: Current and previous core subsystem library sizes are
4924
shown below. These are the code and data sizes for the acpica.lib produced
4925
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4926
any ACPI driver or OSPM code. The debug version of the code includes the
4927
debug output trace mechanism and has a much larger code and data size. Note
4928
that these values will vary depending on the efficiency of the compiler and
4929
the compiler options used during generation.
4930
 
4931
  Previous Release:
4932
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4933
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4934
  Current Release:
4935
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
4936
    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
4937
 
4938
 
4939
2) iASL Compiler/Disassembler:
4940
 
4941
Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
4942
recently introduced in 20041119.
4943
 
4944
Fixed a problem with the ToUUID macro where the upper nybble of each buffer
4945
byte was inadvertently set to zero.
4946
 
4947
----------------------------------------
4948
19 November 2004.  Summary of changes for version 20041119:
4949
 
4950
1) ACPI CA Core Subsystem:
4951
 
4952
Fixed a problem in the internal ConvertToInteger routine where new integers
4953
were not truncated to 32 bits for 32-bit ACPI tables. This routine converts
4954
buffers and strings to integers.
4955
 
4956
Implemented support to store a value to an Index() on a String object. This
4957
is an ACPI 2.0 feature that had not yet been implemented.
4958
 
4959
Implemented new behavior for storing objects to individual package elements
4960
(via the Index() operator). The previous behavior was to invoke the implicit
4961
conversion rules if an object was already present at the index.  The new
4962
behavior is to simply delete any existing object and directly store the new
4963
object. Although the ACPI specification seems unclear on this subject, other
4964
ACPI implementations behave in this manner.  (This is the root of the
4965
AE_BAD_HEX_CONSTANT issue.)
4966
 
4967
Modified the RSDP memory scan mechanism to support the extended checksum for
4968
ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
4969
RSDP signature is found with a valid checksum.
4970
 
4971
Code and Data Size: Current and previous core subsystem library sizes are
4972
shown below. These are the code and data sizes for the acpica.lib produced
4973
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4974
any ACPI driver or OSPM code. The debug version of the code includes the
4975
debug output trace mechanism and has a much larger code and data size. Note
4976
that these values will vary depending on the efficiency of the compiler and
4977
the compiler options used during generation.
4978
 
4979
  Previous Release:
4980
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4981
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4982
  Current Release:
4983
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
4984
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
4985
 
4986
 
4987
2) iASL Compiler/Disassembler:
4988
 
4989
Fixed a missing semicolon in the aslcompiler.y file.
4990
 
4991
----------------------------------------
4992
05 November 2004.  Summary of changes for version 20041105:
4993
 
4994
1) ACPI CA Core Subsystem:
4995
 
4996
Implemented support for FADT revision 2.  This was an interim table (between
4997
ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
4998
 
4999
Implemented optional support to allow uninitialized LocalX and ArgX
5000
variables in a control method.  The variables are initialized to an Integer
5001
object with a value of zero.  This support is enabled by setting the
5002
AcpiGbl_EnableInterpreterSlack flag to TRUE.
5003
 
5004
Implemented support for Integer objects for the SizeOf operator.  Either 4
5005
or 8 is returned, depending on the current integer size (32-bit or 64-bit,
5006
depending on the parent table revision).
5007
 
5008
Fixed a problem in the implementation of the SizeOf and ObjectType operators
5009
where the operand was resolved to a value too early, causing incorrect
5010
return values for some objects.
5011
 
5012
Fixed some possible memory leaks during exceptional conditions.
5013
 
5014
Code and Data Size: Current and previous core subsystem library sizes are
5015
shown below. These are the code and data sizes for the acpica.lib produced
5016
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5017
any ACPI driver or OSPM code. The debug version of the code includes the
5018
debug output trace mechanism and has a much larger code and data size. Note
5019
that these values will vary depending on the efficiency of the compiler and
5020
the compiler options used during generation.
5021
 
5022
  Previous Release:
5023
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5024
    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
5025
  Current Release:
5026
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5027
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5028
 
5029
 
5030
2) iASL Compiler/Disassembler:
5031
 
5032
Implemented support for all ACPI 3.0 reserved names and methods.
5033
 
5034
Implemented all ACPI 3.0 grammar elements in the front-end, including
5035
support for semicolons.
5036
 
5037
Implemented the ACPI 3.0 Function() and ToUUID() macros
5038
 
5039
Fixed a problem in the disassembler where a Scope() operator would not be
5040
emitted properly if the target of the scope was in another table.
5041
 
5042
----------------------------------------
5043
15 October 2004.  Summary of changes for version 20041015:
5044
 
5045
Note:  ACPI CA is currently undergoing an in-depth and complete formal
5046
evaluation to test/verify the following areas. Other suggestions are
5047
welcome. This will result in an increase in the frequency of releases and
5048
the number of bug fixes in the next few months.
5049
  - Functional tests for all ASL/AML operators
5050
  - All implicit/explicit type conversions
5051
  - Bit fields and operation regions
5052
  - 64-bit math support and 32-bit-only "truncated" math support
5053
  - Exceptional conditions, both compiler and interpreter
5054
  - Dynamic object deletion and memory leaks
5055
  - ACPI 3.0 support when implemented
5056
  - External interfaces to the ACPI subsystem
5057
 
5058
 
5059
1) ACPI CA Core Subsystem:
5060
 
5061
Fixed two alignment issues on 64-bit platforms - within debug statements in
5062
AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address
5063
field within the non-aligned ACPI generic address structure.
5064
 
5065
Fixed a problem in the Increment and Decrement operators where incorrect
5066
operand resolution could result in the inadvertent modification of the
5067
original integer when the integer is passed into another method as an
5068
argument and the arg is then incremented/decremented.
5069
 
5070
Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit
5071
BCD number were truncated during conversion.
5072
 
5073
Fixed a problem in the ToDecimal operator where the length of the resulting
5074
string could be set incorrectly too long if the input operand was a Buffer
5075
object.
5076
 
5077
Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0)
5078
within a buffer would prematurely terminate a compare between buffer
5079
objects.
5080
 
5081
Added a check for string overflow (>200 characters as per the ACPI
5082
specification) during the Concatenate operator with two string operands.
5083
 
5084
Code and Data Size: Current and previous core subsystem library sizes are
5085
shown below. These are the code and data sizes for the acpica.lib produced
5086
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5087
any ACPI driver or OSPM code. The debug version of the code includes the
5088
debug output trace mechanism and has a much larger code and data size. Note
5089
that these values will vary depending on the efficiency of the compiler and
5090
the compiler options used during generation.
5091
 
5092
  Previous Release:
5093
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5094
    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
5095
  Current Release:
5096
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5097
    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
5098
 
5099
 
5100
 
5101
2) iASL Compiler/Disassembler:
5102
 
5103
Allow the use of the ObjectType operator on uninitialized Locals and Args
5104
(returns 0 as per the ACPI specification).
5105
 
5106
Fixed a problem where the compiler would fault if there was a syntax error
5107
in the FieldName of all of the various CreateXXXField operators.
5108
 
5109
Disallow the use of lower case letters within the EISAID macro, as per the
5110
ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where
5111
U is an uppercase letter and N is a hex digit.
5112
 
5113
 
5114
----------------------------------------
5115
06 October 2004.  Summary of changes for version 20041006:
5116
 
5117
1) ACPI CA Core Subsystem:
5118
 
5119
Implemented support for the ACPI 3.0 Timer operator. This ASL function
5120
implements a 64-bit timer with 100 nanosecond granularity.
5121
 
5122
Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
5123
implement the ACPI 3.0 Timer operator.  This allows the host OS to implement
5124
the timer with the best clock available. Also, it keeps the core subsystem
5125
out of the clock handling business, since the host OS (usually) performs
5126
this function.
5127
 
5128
Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
5129
functions use a 64-bit address which is part of the packed ACPI Generic
5130
Address Structure. Since the structure is non-aligned, the alignment macros
5131
are now used to extract the address to a local variable before use.
5132
 
5133
Fixed a problem where the ToInteger operator assumed all input strings were
5134
hexadecimal. The operator now handles both decimal strings and hex strings
5135
(prefixed with "0x").
5136
 
5137
Fixed a problem where the string length in the string object created as a
5138
result of the internal ConvertToString procedure could be incorrect. This
5139
potentially affected all implicit conversions and also the ToDecimalString
5140
and ToHexString operators.
5141
 
5142
Fixed two problems in the ToString operator. If the length parameter was
5143
zero, an incorrect string object was created and the value of the input
5144
length parameter was inadvertently changed from zero to Ones.
5145
 
5146
Fixed a problem where the optional ResourceSource string in the ExtendedIRQ
5147
resource macro was ignored.
5148
 
5149
Simplified the interfaces to the internal division functions, reducing code
5150
size and complexity.
5151
 
5152
Code and Data Size: Current and previous core subsystem library sizes are
5153
shown below. These are the code and data sizes for the acpica.lib produced
5154
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5155
any ACPI driver or OSPM code. The debug version of the code includes the
5156
debug output trace mechanism and has a much larger code and data size. Note
5157
that these values will vary depending on the efficiency of the compiler and
5158
the compiler options used during generation.
5159
 
5160
  Previous Release:
5161
    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
5162
    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
5163
  Current Release:
5164
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5165
    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
5166
 
5167
 
5168
2) iASL Compiler/Disassembler:
5169
 
5170
Implemented support for the ACPI 3.0 Timer operator.
5171
 
5172
Fixed a problem where the Default() operator was inadvertently ignored in a
5173
Switch/Case block.  This was a problem in the translation of the Switch
5174
statement to If...Else pairs.
5175
 
5176
Added support to allow a standalone Return operator, with no parentheses (or
5177
operands).
5178
 
5179
Fixed a problem with code generation for the ElseIf operator where the
5180
translated Else...If parse tree was improperly constructed leading to the
5181
loss of some code.
5182
 
5183
----------------------------------------
5184
22 September 2004.  Summary of changes for version 20040922:
5185
 
5186
1) ACPI CA Core Subsystem:
5187
 
5188
Fixed a problem with the implementation of the LNot() operator where "Ones"
5189
was not returned for the TRUE case. Changed the code to return Ones instead
5190
of (!Arg) which was usually 1. This change affects iASL constant folding for
5191
this operator also.
5192
 
5193
Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not
5194
initialized properly -- Now zero the entire buffer in this case where the
5195
buffer already exists.
5196
 
5197
Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
5198
Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
5199
related code considerably. This will require changes/updates to all OS
5200
interface layers (OSLs.)
5201
 
5202
Implemented a new external interface, AcpiInstallExceptionHandler, to allow
5203
a system exception handler to be installed. This handler is invoked upon any
5204
run-time exception that occurs during control method execution.
5205
 
5206
Added support for the DSDT in AcpiTbFindTable. This allows the
5207
DataTableRegion() operator to access the local copy of the DSDT.
5208
 
5209
Code and Data Size: Current and previous core subsystem library sizes are
5210
shown below. These are the code and data sizes for the acpica.lib produced
5211
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5212
any ACPI driver or OSPM code. The debug version of the code includes the
5213
debug output trace mechanism and has a much larger code and data size. Note
5214
that these values will vary depending on the efficiency of the compiler and
5215
the compiler options used during generation.
5216
 
5217
  Previous Release:
5218
    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
5219
    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
5220
  Current Release:
5221
    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
5222
    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
5223
 
5224
 
5225
2) iASL Compiler/Disassembler:
5226
 
5227
Fixed a problem with constant folding and the LNot operator. LNot was
5228
returning 1 in the TRUE case, not Ones as per the ACPI specification. This
5229
could result in the generation of an incorrect folded/reduced constant.
5230
 
5231
End-Of-File is now allowed within a "//"-style comment.  A parse error no
5232
longer occurs if such a comment is at the very end of the input ASL source
5233
file.
5234
 
5235
Implemented the "-r" option to override the Revision in the table header.
5236
The initial use of this option will be to simplify the evaluation of the AML
5237
interpreter by allowing a single ASL source module to be compiled for either
5238
32-bit or 64-bit integers.
5239
 
5240
 
5241
----------------------------------------
5242
27 August 2004.  Summary of changes for version 20040827:
5243
 
5244
1) ACPI CA Core Subsystem:
5245
 
5246
- Implemented support for implicit object conversion in the non-numeric
5247
logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and
5248
LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
5249
the second operand is implicitly converted on the fly to match the type of
5250
the first operand.  For example:
5251
 
5252
    LEqual (Source1, Source2)
5253
 
5254
Source1 and Source2 must each evaluate to an integer, a string, or a buffer.
5255
The data type of Source1 dictates the required type of Source2. Source2 is
5256
implicitly converted if necessary to match the type of Source1.
5257
 
5258
- Updated and corrected the behavior of the string conversion support.  The
5259
rules concerning conversion of buffers to strings (according to the ACPI
5260
specification) are as follows:
5261
 
5262
ToDecimalString - explicit byte-wise conversion of buffer to string of
5263
decimal values (0-255) separated by commas. ToHexString - explicit byte-wise
5264
conversion of buffer to string of hex values (0-FF) separated by commas.
5265
ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte
5266
copy with no transform except NULL terminated. Any other implicit buffer-to-
5267
string conversion - byte-wise conversion of buffer to string of hex values
5268
(0-FF) separated by spaces.
5269
 
5270
- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
5271
 
5272
- Fixed a problem in AcpiNsGetPathnameLength where the returned length was
5273
one byte too short in the case of a node in the root scope.  This could
5274
cause a fault during debug output.
5275
 
5276
- Code and Data Size: Current and previous core subsystem library sizes are
5277
shown below.  These are the code and data sizes for the acpica.lib produced
5278
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5279
any ACPI driver or OSPM code.  The debug version of the code includes the
5280
debug output trace mechanism and has a much larger code and data size.  Note
5281
that these values will vary depending on the efficiency of the compiler and
5282
the compiler options used during generation.
5283
 
5284
  Previous Release:
5285
    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
5286
    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
5287
  Current Release:
5288
    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
5289
    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
5290
 
5291
 
5292
2) iASL Compiler/Disassembler:
5293
 
5294
- Fixed a Linux generation error.
5295
 
5296
 
5297
----------------------------------------
5298
16 August 2004.  Summary of changes for version 20040816:
5299
 
5300
1) ACPI CA Core Subsystem:
5301
 
5302
Designed and implemented support within the AML interpreter for the so-
5303
called "implicit return".  This support returns the result of the last ASL
5304
operation within a control method, in the absence of an explicit Return()
5305
operator.  A few machines depend on this behavior, even though it is not
5306
explicitly supported by the ASL language.  It is optional support that can
5307
be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
5308
 
5309
Removed support for the PCI_Config address space from the internal low level
5310
hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
5311
support was not used internally, and would not work correctly anyway because
5312
the PCI bus number and segment number were not supported.  There are
5313
separate interfaces for PCI configuration space access because of the unique
5314
interface.
5315
 
5316
Code and Data Size: Current and previous core subsystem library sizes are
5317
shown below.  These are the code and data sizes for the acpica.lib produced
5318
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5319
any ACPI driver or OSPM code.  The debug version of the code includes the
5320
debug output trace mechanism and has a much larger code and data size.  Note
5321
that these values will vary depending on the efficiency of the compiler and
5322
the compiler options used during generation.
5323
 
5324
  Previous Release:
5325
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5326
    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
5327
  Current Release:
5328
    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
5329
    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
5330
 
5331
 
5332
2) iASL Compiler/Disassembler:
5333
 
5334
Fixed a problem where constants in ASL expressions at the root level (not
5335
within a control method) could be inadvertently truncated during code
5336
generation.  This problem was introduced in the 20040715 release.
5337
 
5338
 
5339
----------------------------------------
5340
15 July 2004.  Summary of changes for version 20040715:
5341
 
5342
1) ACPI CA Core Subsystem:
5343
 
5344
Restructured the internal HW GPE interfaces to pass/track the current state
5345
of interrupts (enabled/disabled) in order to avoid possible deadlock and
5346
increase flexibility of the interfaces.
5347
 
5348
Implemented a "lexicographical compare" for String and Buffer objects within
5349
the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual --
5350
as per further clarification to the ACPI specification.  Behavior is similar
5351
to C library "strcmp".
5352
 
5353
Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
5354
external function.  In the 32-bit non-debug case, the stack use has been
5355
reduced from 168 bytes to 32 bytes.
5356
 
5357
Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack,
5358
whose purpose is to allow the AML interpreter to forgive certain bad AML
5359
constructs.  Default setting is FALSE.
5360
 
5361
Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO
5362
support code.  If enabled, it allows field access to go beyond the end of a
5363
region definition if the field is within the region length rounded up to the
5364
next access width boundary (a common coding error.)
5365
 
5366
Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
5367
ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these
5368
symbols are lowercased by the latest version of the AcpiSrc tool.
5369
 
5370
The prototypes for the PCI interfaces in acpiosxf.h have been updated to
5371
rename "Register" to simply "Reg" to prevent certain compilers from
5372
complaining.
5373
 
5374
Code and Data Size: Current and previous core subsystem library sizes are
5375
shown below.  These are the code and data sizes for the acpica.lib produced
5376
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5377
any ACPI driver or OSPM code.  The debug version of the code includes the
5378
debug output trace mechanism and has a much larger code and data size.  Note
5379
that these values will vary depending on the efficiency of the compiler and
5380
the compiler options used during generation.
5381
 
5382
  Previous Release:
5383
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5384
    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
5385
  Current Release:
5386
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5387
    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
5388
 
5389
 
5390
2) iASL Compiler/Disassembler:
5391
 
5392
Implemented full support for Package objects within the Case() operator.
5393
Note: The Break() operator is currently not supported within Case blocks
5394
(TermLists) as there is some question about backward compatibility with ACPI
5395
1.0 interpreters.
5396
 
5397
 
5398
Fixed a problem where complex terms were not supported properly within the
5399
Switch() operator.
5400
 
5401
Eliminated extraneous warning for compiler-emitted reserved names of the
5402
form "_T_x".  (Used in Switch/Case operators.)
5403
 
5404
Eliminated optimization messages for "_T_x" objects and small constants
5405
within the DefinitionBlock operator.
5406
 
5407
 
5408
----------------------------------------
5409
15 June 2004.  Summary of changes for version 20040615:
5410
 
5411
1) ACPI CA Core Subsystem:
5412
 
5413
Implemented support for Buffer and String objects (as per ACPI 2.0) for the
5414
following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
5415
LLessEqual.
5416
 
5417
All directory names in the entire source package are lower case, as they
5418
were in earlier releases.
5419
 
5420
Implemented "Disassemble" command in the AML debugger that will disassemble
5421
a single control method.
5422
 
5423
Code and Data Size: Current and previous core subsystem library sizes are
5424
shown below.  These are the code and data sizes for the acpica.lib produced
5425
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5426
any ACPI driver or OSPM code.  The debug version of the code includes the
5427
debug output trace mechanism and has a much larger code and data size.  Note
5428
that these values will vary depending on the efficiency of the compiler and
5429
the compiler options used during generation.
5430
 
5431
  Previous Release:
5432
    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
5433
    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
5434
 
5435
  Current Release:
5436
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5437
    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
5438
 
5439
 
5440
2) iASL Compiler/Disassembler:
5441
 
5442
Implemented support for Buffer and String objects (as per ACPI 2.0) for the
5443
following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
5444
LLessEqual.
5445
 
5446
All directory names in the entire source package are lower case, as they
5447
were in earlier releases.
5448
 
5449
Fixed a fault when using the -g or -d options if the FADT was
5450
not found.
5451
 
5452
Fixed an issue with the Windows version of the compiler where later versions
5453
of Windows place the FADT in the registry under the name "FADT" and not
5454
"FACP" as earlier versions did.  This applies when using the -g or -
5455
d options.  The compiler now looks for both strings as
5456
necessary.
5457
 
5458
Fixed a problem with compiler namepath optimization where a namepath within
5459
the Scope() operator could not be optimized if the namepath was a subpath of
5460
the current scope path.
5461
 
5462
----------------------------------------
5463
27 May 2004.  Summary of changes for version 20040527:
5464
 
5465
1) ACPI CA Core Subsystem:
5466
 
5467
Completed a new design and implementation for EBDA (Extended BIOS Data Area)
5468
support in the RSDP scan code.  The original code improperly scanned for the
5469
EBDA by simply scanning from memory location 0 to 0x400.  The correct method
5470
is to first obtain the EBDA pointer from within the BIOS data area, then
5471
scan 1K of memory starting at the EBDA pointer.  There appear to be few if
5472
any machines that place the RSDP in the EBDA, however.
5473
 
5474
Integrated a fix for a possible fault during evaluation of BufferField
5475
arguments.  Obsolete code that was causing the problem was removed.
5476
 
5477
Found and fixed a problem in the Field Support Code where data could be
5478
corrupted on a bit field read that starts on an aligned boundary but does
5479
not end on an aligned boundary.  Merged the read/write "datum length"
5480
calculation code into a common procedure.
5481
 
5482
Rolled in a couple of changes to the FreeBSD-specific header.
5483
 
5484
 
5485
Code and Data Size: Current and previous core subsystem library sizes are
5486
shown below.  These are the code and data sizes for the acpica.lib produced
5487
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5488
any ACPI driver or OSPM code.  The debug version of the code includes the
5489
debug output trace mechanism and has a much larger code and data size.  Note
5490
that these values will vary depending on the efficiency of the compiler and
5491
the compiler options used during generation.
5492
 
5493
  Previous Release:
5494
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5495
    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
5496
  Current Release:
5497
    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
5498
    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
5499
 
5500
 
5501
2) iASL Compiler/Disassembler:
5502
 
5503
Fixed a generation warning produced by some overly-verbose compilers for a
5504
64-bit constant.
5505
 
5506
----------------------------------------
5507
14 May 2004.  Summary of changes for version 20040514:
5508
 
5509
1) ACPI CA Core Subsystem:
5510
 
5511
Fixed a problem where hardware GPE enable bits sometimes not set properly
5512
during and after GPE method execution.  Result of 04/27 changes.
5513
 
5514
Removed extra "clear all GPEs" when sleeping/waking.
5515
 
5516
Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
5517
AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to
5518
the new AcpiEv* calls as appropriate.
5519
 
5520
ACPI_OS_NAME was removed from the OS-specific headers.  The default name is
5521
now "Microsoft Windows NT" for maximum compatibility.  However this can be
5522
changed by modifying the acconfig.h file.
5523
 
5524
Allow a single invocation of AcpiInstallNotifyHandler for a handler that
5525
traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
5526
 
5527
Run _INI methods on ThermalZone objects.  This is against the ACPI
5528
specification, but there is apparently ASL code in the field that has these
5529
_INI methods, and apparently "other" AML interpreters execute them.
5530
 
5531
Performed a full 16/32/64 bit lint that resulted in some small changes.
5532
 
5533
Added a sleep simulation command to the AML debugger to test sleep code.
5534
 
5535
Code and Data Size: Current and previous core subsystem library sizes are
5536
shown below.  These are the code and data sizes for the acpica.lib produced
5537
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5538
any ACPI driver or OSPM code.  The debug version of the code includes the
5539
debug output trace mechanism and has a much larger code and data size.  Note
5540
that these values will vary depending on the efficiency of the compiler and
5541
the compiler options used during generation.
5542
 
5543
  Previous Release:
5544
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5545
    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
5546
  Current Release:
5547
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5548
    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
5549
 
5550
----------------------------------------
5551
27 April 2004.  Summary of changes for version 20040427:
5552
 
5553
1) ACPI CA Core Subsystem:
5554
 
5555
Completed a major overhaul of the GPE handling within ACPI CA.  There are
5556
now three types of GPEs:  wake-only, runtime-only, and combination wake/run.
5557
The only GPEs allowed to be combination wake/run are for button-style
5558
devices such as a control-method power button, control-method sleep button,
5559
or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not
5560
referenced by any _PRW methods are marked for "runtime" and hardware
5561
enabled.  Any GPE that is referenced by a _PRW method is marked for "wake"
5562
(and disabled at runtime).  However, at sleep time, only those GPEs that
5563
have been specifically enabled for wake via the AcpiEnableGpe interface will
5564
actually be hardware enabled.
5565
 
5566
A new external interface has been added, AcpiSetGpeType(), that is meant to
5567
be used by device drivers to force a GPE to a particular type.  It will be
5568
especially useful for the drivers for the button devices mentioned above.
5569
 
5570
Completed restructuring of the ACPI CA initialization sequence so that
5571
default operation region handlers are installed before GPEs are initialized
5572
and the _PRW methods are executed.  This will prevent errors when the _PRW
5573
methods attempt to access system memory or I/O space.
5574
 
5575
GPE enable/disable no longer reads the GPE enable register.  We now keep the
5576
enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
5577
thus no longer depend on the hardware to maintain these bits.
5578
 
5579
Always clear the wake status and fixed/GPE status bits before sleep, even
5580
for state S5.
5581
 
5582
Improved the AML debugger output for displaying the GPE blocks and their
5583
current status.
5584
 
5585
Added new strings for the _OSI method, of the form "Windows 2001 SPx" where
5586
x = 0,1,2,3,4.
5587
 
5588
Fixed a problem where the physical address was incorrectly calculated when
5589
the Load() operator was used to directly load from an Operation Region (vs.
5590
loading from a Field object.)  Also added check for minimum table length for
5591
this case.
5592
 
5593
Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
5594
mutex release.
5595
 
5596
Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
5597
consistency with the other fields returned.
5598
 
5599
Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
5600
structure for each GPE in the system, so the size of this structure is
5601
important.
5602
 
5603
CPU stack requirement reduction:  Cleaned up the method execution and object
5604
evaluation paths so that now a parameter structure is passed, instead of
5605
copying the various method parameters over and over again.
5606
 
5607
In evregion.c:  Correctly exit and reenter the interpreter region if and
5608
only if dispatching an operation region request to a user-installed handler.
5609
Do not exit/reenter when dispatching to a default handler (e.g., default
5610
system memory or I/O handlers)
5611
 
5612
 
5613
Notes for updating drivers for the new GPE support.  The following changes
5614
must be made to ACPI-related device drivers that are attached to one or more
5615
GPEs: (This information will be added to the ACPI CA Programmer Reference.)
5616
 
5617
1) AcpiInstallGpeHandler no longer automatically enables the GPE, you must
5618
explicitly call AcpiEnableGpe.
5619
2) There is a new interface called AcpiSetGpeType. This should be called
5620
before enabling the GPE.  Also, this interface will automatically disable
5621
the GPE if it is currently enabled.
5622
3) AcpiEnableGpe no longer supports a GPE type flag.
5623
 
5624
Specific drivers that must be changed:
5625
1) EC driver:
5626
    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
5627
AeGpeHandler, NULL);
5628
    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
5629
    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
5630
 
5631
2) Button Drivers (Power, Lid, Sleep):
5632
Run _PRW method under parent device
5633
If _PRW exists: /* This is a control-method button */
5634
    Extract GPE number and possibly GpeDevice
5635
    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
5636
    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
5637
 
5638
For all other devices that have _PRWs, we automatically set the GPE type to
5639
ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This
5640
must be done on a selective basis, usually requiring some kind of user app
5641
to allow the user to pick the wake devices.
5642
 
5643
 
5644
Code and Data Size: Current and previous core subsystem library sizes are
5645
shown below.  These are the code and data sizes for the acpica.lib produced
5646
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5647
any ACPI driver or OSPM code.  The debug version of the code includes the
5648
debug output trace mechanism and has a much larger code and data size.  Note
5649
that these values will vary depending on the efficiency of the compiler and
5650
the compiler options used during generation.
5651
 
5652
  Previous Release:
5653
    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
5654
    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
5655
  Current Release:
5656
 
5657
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
5658
    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
5659
 
5660
 
5661
 
5662
----------------------------------------
5663
02 April 2004.  Summary of changes for version 20040402:
5664
 
5665
1) ACPI CA Core Subsystem:
5666
 
5667
Fixed an interpreter problem where an indirect store through an ArgX
5668
parameter was incorrectly applying the "implicit conversion rules" during
5669
the store.  From the ACPI specification: "If the target is a method local or
5670
argument (LocalX or ArgX), no conversion is performed and the result is
5671
stored directly to the target".  The new behavior is to disable implicit
5672
conversion during ALL stores to an ArgX.
5673
 
5674
Changed the behavior of the _PRW method scan to ignore any and all errors
5675
returned by a given _PRW.  This prevents the scan from aborting from the
5676
failure of any single _PRW.
5677
 
5678
Moved the runtime configuration parameters from the global init procedure to
5679
static variables in acglobal.h.  This will allow the host to override the
5680
default values easily.
5681
 
5682
Code and Data Size: Current and previous core subsystem library sizes are
5683
shown below.  These are the code and data sizes for the acpica.lib produced
5684
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5685
any ACPI driver or OSPM code.  The debug version of the code includes the
5686
debug output trace mechanism and has a much larger code and data size.  Note
5687
that these values will vary depending on the efficiency of the compiler and
5688
the compiler options used during generation.
5689
 
5690
  Previous Release:
5691
    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
5692
    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
5693
  Current Release:
5694
    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
5695
    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
5696
 
5697
 
5698
2) iASL Compiler/Disassembler:
5699
 
5700
iASL now fully disassembles SSDTs.  However, External() statements are not
5701
generated automatically for unresolved symbols at this time.  This is a
5702
planned feature for future implementation.
5703
 
5704
Fixed a scoping problem in the disassembler that occurs when the type of the
5705
target of a Scope() operator is overridden.  This problem caused an
5706
incorrectly nested internal namespace to be constructed.
5707
 
5708
Any warnings or errors that are emitted during disassembly are now commented
5709
out automatically so that the resulting file can be recompiled without any
5710
hand editing.
5711
 
5712
----------------------------------------
5713
26 March 2004.  Summary of changes for version 20040326:
5714
 
5715
1) ACPI CA Core Subsystem:
5716
 
5717
Implemented support for "wake" GPEs via interaction between GPEs and the
5718
_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
5719
identified as a WAKE GPE and by default will no longer be enabled at
5720
runtime.  Previously, we were blindly enabling all GPEs with a corresponding
5721
_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We
5722
believe this has been the cause of thousands of "spurious" GPEs on some
5723
systems.
5724
 
5725
This new GPE behavior is can be reverted to the original behavior (enable
5726
ALL GPEs at runtime) via a runtime flag.
5727
 
5728
Fixed a problem where aliased control methods could not access objects
5729
properly.  The proper scope within the namespace was not initialized
5730
(transferred to the target of the aliased method) before executing the
5731
target method.
5732
 
5733
Fixed a potential race condition on internal object deletion on the return
5734
object in AcpiEvaluateObject.
5735
 
5736
Integrated a fix for resource descriptors where both _MEM and _MTP were
5737
being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
5738
wide, 0x0F instead of 0x03.)
5739
 
5740
Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a
5741
fault in some cases.
5742
 
5743
Updated Notify() values for debug statements in evmisc.c
5744
 
5745
Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
5746
 
5747
Code and Data Size: Current and previous core subsystem library sizes are
5748
shown below.  These are the code and data sizes for the acpica.lib produced
5749
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5750
any ACPI driver or OSPM code.  The debug version of the code includes the
5751
debug output trace mechanism and has a much larger code and data size.  Note
5752
that these values will vary depending on the efficiency of the compiler and
5753
the compiler options used during generation.
5754
 
5755
  Previous Release:
5756
 
5757
    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
5758
    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
5759
  Current Release:
5760
    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
5761
    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
5762
 
5763
----------------------------------------
5764
11 March 2004.  Summary of changes for version 20040311:
5765
 
5766
1) ACPI CA Core Subsystem:
5767
 
5768
Fixed a problem where errors occurring during the parse phase of control
5769
method execution did not abort cleanly.  For example, objects created and
5770
installed in the namespace were not deleted.  This caused all subsequent
5771
invocations of the method to return the AE_ALREADY_EXISTS exception.
5772
 
5773
Implemented a mechanism to force a control method to "Serialized" execution
5774
if the method attempts to create namespace objects. (The root of the
5775
AE_ALREADY_EXISTS problem.)
5776
 
5777
Implemented support for the predefined _OSI "internal" control method.
5778
Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and
5779
"Windows 2001.1", and can be easily upgraded for new strings as necessary.
5780
This feature will allow "other" operating systems to execute the fully
5781
tested, "Windows" code path through the ASL code
5782
 
5783
Global Lock Support:  Now allows multiple acquires and releases with any
5784
internal thread.  Removed concept of "owning thread" for this special mutex.
5785
 
5786
Fixed two functions that were inappropriately declaring large objects on the
5787
CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during
5788
method execution considerably.
5789
 
5790
Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
5791
S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
5792
 
5793
Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
5794
defined on the machine.
5795
 
5796
Implemented two runtime options:  One to force all control method execution
5797
to "Serialized" to mimic Windows behavior, another to disable _OSI support
5798
if it causes problems on a given machine.
5799
 
5800
Code and Data Size: Current and previous core subsystem library sizes are
5801
shown below.  These are the code and data sizes for the acpica.lib produced
5802
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5803
any ACPI driver or OSPM code.  The debug version of the code includes the
5804
debug output trace mechanism and has a much larger code and data size.  Note
5805
that these values will vary depending on the efficiency of the compiler and
5806
the compiler options used during generation.
5807
 
5808
  Previous Release:
5809
    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
5810
    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
5811
  Current Release:
5812
    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
5813
    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
5814
 
5815
2) iASL Compiler/Disassembler:
5816
 
5817
Fixed an array size problem for FreeBSD that would cause the compiler to
5818
fault.
5819
 
5820
----------------------------------------
5821
20 February 2004.  Summary of changes for version 20040220:
5822
 
5823
 
5824
1) ACPI CA Core Subsystem:
5825
 
5826
Implemented execution of _SxD methods for Device objects in the
5827
GetObjectInfo interface.
5828
 
5829
Fixed calls to _SST method to pass the correct arguments.
5830
 
5831
Added a call to _SST on wake to restore to "working" state.
5832
 
5833
Check for End-Of-Buffer failure case in the WalkResources interface.
5834
 
5835
Integrated fix for 64-bit alignment issue in acglobal.h by moving two
5836
structures to the beginning of the file.
5837
 
5838
After wake, clear GPE status register(s) before enabling GPEs.
5839
 
5840
After wake, clear/enable power button.  (Perhaps we should clear/enable all
5841
fixed events upon wake.)
5842
 
5843
Fixed a couple of possible memory leaks in the Namespace manager.
5844
 
5845
Integrated latest acnetbsd.h file.
5846
 
5847
----------------------------------------
5848
11 February 2004.  Summary of changes for version 20040211:
5849
 
5850
 
5851
1) ACPI CA Core Subsystem:
5852
 
5853
Completed investigation and implementation of the call-by-reference
5854
mechanism for control method arguments.
5855
 
5856
Fixed a problem where a store of an object into an indexed package could
5857
fail if the store occurs within a different method than the method that
5858
created the package.
5859
 
5860
Fixed a problem where the ToDecimal operator could return incorrect results.
5861
 
5862
Fixed a problem where the CopyObject operator could fail on some of the more
5863
obscure objects (e.g., Reference objects.)
5864
 
5865
Improved the output of the Debug object to display buffer, package, and
5866
index objects.
5867
 
5868
Fixed a problem where constructs of the form "RefOf (ArgX)" did not return
5869
the expected result.
5870
 
5871
Added permanent ACPI_REPORT_ERROR macros for all instances of the
5872
ACPI_AML_INTERNAL exception.
5873
 
5874
Integrated latest version of acfreebsd.h
5875
 
5876
----------------------------------------
5877
16 January 2004.  Summary of changes for version 20040116:
5878
 
5879
The purpose of this release is primarily to update the copyright years in
5880
each module, thus causing a huge number of diffs.  There are a few small
5881
functional changes, however.
5882
 
5883
1) ACPI CA Core Subsystem:
5884
 
5885
Improved error messages when there is a problem finding one or more of the
5886
required base ACPI tables
5887
 
5888
Reintroduced the definition of APIC_HEADER in actbl.h
5889
 
5890
Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
5891
 
5892
Removed extraneous reference to NewObj in dsmthdat.c
5893
 
5894
2) iASL compiler
5895
 
5896
Fixed a problem introduced in December that disabled the correct disassembly
5897
of Resource Templates
5898
 
5899
 
5900
----------------------------------------
5901
03 December 2003.  Summary of changes for version 20031203:
5902
 
5903
1) ACPI CA Core Subsystem:
5904
 
5905
Changed the initialization of Operation Regions during subsystem
5906
init to perform two entire walks of the ACPI namespace; The first
5907
to initialize the regions themselves, the second to execute the
5908
_REG methods.  This fixed some interdependencies across _REG
5909
methods found on some machines.
5910
 
5911
Fixed a problem where a Store(Local0, Local1) could simply update
5912
the object reference count, and not create a new copy of the
5913
object if the Local1 is uninitialized.
5914
 
5915
Implemented support for the _SST reserved method during sleep
5916
transitions.
5917
 
5918
Implemented support to clear the SLP_TYP and SLP_EN bits when
5919
waking up, this is apparently required by some machines.
5920
 
5921
When sleeping, clear the wake status only if SleepState is not S5.
5922
 
5923
Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
5924
pointer arithmetic advanced a string pointer too far.
5925
 
5926
Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
5927
could be returned if the requested table has not been loaded.
5928
 
5929
Within the support for IRQ resources, restructured the handling of
5930
the active and edge/level bits.
5931
 
5932
Fixed a few problems in AcpiPsxExecute() where memory could be
5933
leaked under certain error conditions.
5934
 
5935
Improved error messages for the cases where the ACPI mode could
5936
not be entered.
5937
 
5938
Code and Data Size: Current and previous core subsystem library
5939
sizes are shown below.  These are the code and data sizes for the
5940
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
5941
these values do not include any ACPI driver or OSPM code.  The
5942
debug version of the code includes the debug output trace
5943
mechanism and has a much larger code and data size.  Note that
5944
these values will vary depending on the efficiency of the compiler
5945
and the compiler options used during generation.
5946
 
5947
  Previous Release (20031029):
5948
    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
5949
    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
5950
  Current Release:
5951
    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
5952
    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
5953
 
5954
2) iASL Compiler/Disassembler:
5955
 
5956
Implemented a fix for the iASL disassembler where a bad index was
5957
generated.  This was most noticeable on 64-bit platforms
5958
 
5959
 
5960
----------------------------------------
5961
29 October 2003.  Summary of changes for version 20031029:
5962
 
5963
1) ACPI CA Core Subsystem:
5964
 
5965
 
5966
Fixed a problem where a level-triggered GPE with an associated
5967
_Lxx control method was incorrectly cleared twice.
5968
 
5969
Fixed a problem with the Field support code where an access can
5970
occur beyond the end-of-region if the field is non-aligned but
5971
extends to the very end of the parent region (resulted in an
5972
AE_AML_REGION_LIMIT exception.)
5973
 
5974
Fixed a problem with ACPI Fixed Events where an RT Clock handler
5975
would not get invoked on an RTC event.  The RTC event bitmasks for
5976
the PM1 registers were not being initialized properly.
5977
 
5978
Implemented support for executing _STA and _INI methods for
5979
Processor objects.  Although this is currently not part of the
5980
ACPI specification, there is existing ASL code that depends on the
5981
init-time execution of these methods.
5982
 
5983
Implemented and deployed a GetDescriptorName function to decode
5984
the various types of internal descriptors.  Guards against null
5985
descriptors during debug output also.
5986
 
5987
Implemented and deployed a GetNodeName function to extract the 4-
5988
character namespace node name.  This function simplifies the debug
5989
and error output, as well as guarding against null pointers during
5990
output.
5991
 
5992
Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
5993
simplify the debug and error output of 64-bit integers.  This
5994
macro replaces the HIDWORD and LODWORD macros for dumping these
5995
integers.
5996
 
5997
Updated the implementation of the Stall() operator to only call
5998
AcpiOsStall(), and also return an error if the operand is larger
5999
than 255.  This preserves the required behavior of not
6000
relinquishing the processor, as would happen if AcpiOsSleep() was
6001
called for "long stalls".
6002
 
6003
Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
6004
initialized are now treated as NOOPs.
6005
 
6006
Cleaned up a handful of warnings during 64-bit generation.
6007
 
6008
Fixed a reported error where and incorrect GPE number was passed
6009
to the GPE dispatch handler.  This value is only used for error
6010
output, however.  Used this opportunity to clean up and streamline
6011
the GPE dispatch code.
6012
 
6013
Code and Data Size: Current and previous core subsystem library
6014
sizes are shown below.  These are the code and data sizes for the
6015
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6016
these values do not include any ACPI driver or OSPM code.  The
6017
 
6018
debug version of the code includes the debug output trace
6019
mechanism and has a much larger code and data size.  Note that
6020
these values will vary depending on the efficiency of the compiler
6021
and the compiler options used during generation.
6022
 
6023
  Previous Release (20031002):
6024
    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
6025
    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
6026
  Current Release:
6027
    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
6028
    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
6029
 
6030
 
6031
2) iASL Compiler/Disassembler:
6032
 
6033
Updated the iASL compiler to return an error if the operand to the
6034
Stall() operator is larger than 255.
6035
 
6036
 
6037
----------------------------------------
6038
02 October 2003.  Summary of changes for version 20031002:
6039
 
6040
 
6041
1) ACPI CA Core Subsystem:
6042
 
6043
Fixed a problem with Index Fields where the index was not
6044
incremented for fields that require multiple writes to the
6045
index/data registers (Fields that are wider than the data
6046
register.)
6047
 
6048
Fixed a problem with all Field objects where a write could go
6049
beyond the end-of-field if the field was larger than the access
6050
granularity and therefore required multiple writes to complete the
6051
request.  An extra write beyond the end of the field could happen
6052
inadvertently.
6053
 
6054
Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
6055
would incorrectly be returned if the width of the Data Register
6056
was larger than the specified field access width.
6057
 
6058
Completed fixes for LoadTable() and Unload() and verified their
6059
operation.  Implemented full support for the "DdbHandle" object
6060
throughout the ACPI CA subsystem.
6061
 
6062
Implemented full support for the MADT and ECDT tables in the ACPI
6063
CA header files.  Even though these tables are not directly
6064
consumed by ACPI CA, the header definitions are useful for ACPI
6065
device drivers.
6066
 
6067
Integrated resource descriptor fixes posted to the Linux ACPI
6068
list.  This included checks for minimum descriptor length, and
6069
support for trailing NULL strings within descriptors that have
6070
optional string elements.
6071
 
6072
Code and Data Size: Current and previous core subsystem library
6073
sizes are shown below.  These are the code and data sizes for the
6074
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6075
these values do not include any ACPI driver or OSPM code.  The
6076
debug version of the code includes the debug output trace
6077
mechanism and has a much larger code and data size.  Note that
6078
these values will vary depending on the efficiency of the compiler
6079
and the compiler options used during generation.
6080
 
6081
  Previous Release (20030918):
6082
    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
6083
    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
6084
  Current Release:
6085
    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
6086
    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
6087
 
6088
 
6089
2) iASL Compiler:
6090
 
6091
Implemented detection of non-ASCII characters within the input
6092
source ASL file.  This catches attempts to compile binary (AML)
6093
files early in the compile, with an informative error message.
6094
 
6095
Fixed a problem where the disassembler would fault if the output
6096
filename could not be generated or if the output file could not be
6097
opened.
6098
 
6099
----------------------------------------
6100
18 September 2003.  Summary of changes for version 20030918:
6101
 
6102
 
6103
1) ACPI CA Core Subsystem:
6104
 
6105
Found and fixed a longstanding problem with the late execution of
6106
the various deferred AML opcodes (such as Operation Regions,
6107
Buffer Fields, Buffers, and Packages).  If the name string
6108
specified for the name of the new object placed the object in a
6109
scope other than the current scope, the initialization/execution
6110
of the opcode failed.  The solution to this problem was to
6111
implement a mechanism where the late execution of such opcodes
6112
does not attempt to lookup/create the name a second time in an
6113
incorrect scope.  This fixes the "region size computed
6114
incorrectly" problem.
6115
 
6116
Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
6117
Global Lock AE_BAD_PARAMETER error.
6118
 
6119
Fixed several 64-bit issues with prototypes, casting and data
6120
types.
6121
 
6122
Removed duplicate prototype from acdisasm.h
6123
 
6124
Fixed an issue involving EC Operation Region Detach (Shaohua Li)
6125
 
6126
Code and Data Size: Current and previous core subsystem library
6127
sizes are shown below.  These are the code and data sizes for the
6128
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6129
these values do not include any ACPI driver or OSPM code.  The
6130
debug version of the code includes the debug output trace
6131
mechanism and has a much larger code and data size.  Note that
6132
these values will vary depending on the efficiency of the compiler
6133
and the compiler options used during generation.
6134
 
6135
  Previous Release:
6136
 
6137
    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
6138
    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
6139
  Current Release:
6140
    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
6141
    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
6142
 
6143
 
6144
2) Linux:
6145
 
6146
Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
6147
correct sleep time in seconds.
6148
 
6149
----------------------------------------
6150
14 July 2003.  Summary of changes for version 20030619:
6151
 
6152
1) ACPI CA Core Subsystem:
6153
 
6154
Parse SSDTs in order discovered, as opposed to reverse order
6155
(Hrvoje Habjanic)
6156
 
6157
Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
6158
Klausner,
6159
   Nate Lawson)
6160
 
6161
 
6162
2) Linux:
6163
 
6164
Dynamically allocate SDT list (suggested by Andi Kleen)
6165
 
6166
proc function return value cleanups (Andi Kleen)
6167
 
6168
Correctly handle NMI watchdog during long stalls (Andrew Morton)
6169
 
6170
Make it so acpismp=force works (reported by Andrew Morton)
6171
 
6172
 
6173
----------------------------------------
6174
19 June 2003.  Summary of changes for version 20030619:
6175
 
6176
1) ACPI CA Core Subsystem:
6177
 
6178
Fix To/FromBCD, eliminating the need for an arch-specific #define.
6179
 
6180
Do not acquire a semaphore in the S5 shutdown path.
6181
 
6182
Fix ex_digits_needed for 0. (Takayoshi Kochi)
6183
 
6184
Fix sleep/stall code reversal. (Andi Kleen)
6185
 
6186
Revert a change having to do with control method calling
6187
semantics.
6188
 
6189
2) Linux:
6190
 
6191
acpiphp update (Takayoshi Kochi)
6192
 
6193
Export acpi_disabled for sonypi (Stelian Pop)
6194
 
6195
Mention acpismp=force in config help
6196
 
6197
Re-add acpitable.c and acpismp=force. This improves backwards
6198
 
6199
compatibility and also cleans up the code to a significant degree.
6200
 
6201
Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
6202
 
6203
----------------------------------------
6204
22 May 2003.  Summary of changes for version 20030522:
6205
 
6206
1) ACPI CA Core Subsystem:
6207
 
6208
Found and fixed a reported problem where an AE_NOT_FOUND error
6209
occurred occasionally during _BST evaluation.  This turned out to
6210
be an Owner ID allocation issue where a called method did not get
6211
a new ID assigned to it.  Eventually, (after 64k calls), the Owner
6212
ID UINT16 would wraparound so that the ID would be the same as the
6213
caller's and the called method would delete the caller's
6214
namespace.
6215
 
6216
Implemented extended error reporting for control methods that are
6217
aborted due to a run-time exception.  Output includes the exact
6218
AML instruction that caused the method abort, a dump of the method
6219
locals and arguments at the time of the abort, and a trace of all
6220
nested control method calls.
6221
 
6222
Modified the interpreter to allow the creation of buffers of zero
6223
length from the AML code. Implemented new code to ensure that no
6224
attempt is made to actually allocate a memory buffer (of length
6225
zero) - instead, a simple buffer object with a NULL buffer pointer
6226
and length zero is created.  A warning is no longer issued when
6227
the AML attempts to create a zero-length buffer.
6228
 
6229
Implemented a workaround for the "leading asterisk issue" in
6230
_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
6231
asterisk is automatically removed if present in any HID, UID, or
6232
CID strings.  The iASL compiler will still flag this asterisk as
6233
an error, however.
6234
 
6235
Implemented full support for _CID methods that return a package of
6236
multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
6237
now additionally returns a device _CID list if present.  This
6238
required a change to the external interface in order to pass an
6239
ACPI_BUFFER object as a parameter since the _CID list is of
6240
variable length.
6241
 
6242
Fixed a problem with the new AE_SAME_HANDLER exception where
6243
handler initialization code did not know about this exception.
6244
 
6245
Code and Data Size: Current and previous core subsystem library
6246
sizes are shown below.  These are the code and data sizes for the
6247
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6248
these values do not include any ACPI driver or OSPM code.  The
6249
debug version of the code includes the debug output trace
6250
mechanism and has a much larger code and data size.  Note that
6251
these values will vary depending on the efficiency of the compiler
6252
and the compiler options used during generation.
6253
 
6254
  Previous Release (20030509):
6255
    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
6256
    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
6257
  Current Release:
6258
    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
6259
    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
6260
 
6261
 
6262
2) Linux:
6263
 
6264
Fixed a bug in which we would reinitialize the ACPI interrupt
6265
after it was already working, thus disabling all ACPI and the IRQs
6266
for any other device sharing the interrupt. (Thanks to Stian
6267
Jordet)
6268
 
6269
Toshiba driver update (John Belmonte)
6270
 
6271
Return only 0 or 1 for our interrupt handler status (Andrew
6272
Morton)
6273
 
6274
 
6275
3) iASL Compiler:
6276
 
6277
Fixed a reported problem where multiple (nested) ElseIf()
6278
statements were not handled correctly by the compiler, resulting
6279
in incorrect warnings and incorrect AML code.  This was a problem
6280
in both the ASL parser and the code generator.
6281
 
6282
 
6283
4) Documentation:
6284
 
6285
Added changes to existing interfaces, new exception codes, and new
6286
text concerning reference count object management versus garbage
6287
collection.
6288
 
6289
----------------------------------------
6290
09 May 2003.  Summary of changes for version 20030509.
6291
 
6292
 
6293
1) ACPI CA Core Subsystem:
6294
 
6295
Changed the subsystem initialization sequence to hold off
6296
installation of address space handlers until the hardware has been
6297
initialized and the system has entered ACPI mode.  This is because
6298
the installation of space handlers can cause _REG methods to be
6299
run.  Previously, the _REG methods could potentially be run before
6300
ACPI mode was enabled.
6301
 
6302
Fixed some memory leak issues related to address space handler and
6303
notify handler installation.  There were some problems with the
6304
reference count mechanism caused by the fact that the handler
6305
objects are shared across several namespace objects.
6306
 
6307
Fixed a reported problem where reference counts within the
6308
namespace were not properly updated when named objects created by
6309
method execution were deleted.
6310
 
6311
Fixed a reported problem where multiple SSDTs caused a deletion
6312
issue during subsystem termination.  Restructured the table data
6313
structures to simplify the linked lists and the related code.
6314
 
6315
Fixed a problem where the table ID associated with secondary
6316
tables (SSDTs) was not being propagated into the namespace objects
6317
created by those tables.  This would only present a problem for
6318
tables that are unloaded at run-time, however.
6319
 
6320
Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
6321
type as the length parameter (instead of UINT32).
6322
 
6323
Solved a long-standing problem where an ALREADY_EXISTS error
6324
appears on various systems.  This problem could happen when there
6325
are multiple PCI_Config operation regions under a single PCI root
6326
bus.  This doesn't happen very frequently, but there are some
6327
systems that do this in the ASL.
6328
 
6329
Fixed a reported problem where the internal DeleteNode function
6330
was incorrectly handling the case where a namespace node was the
6331
first in the parent's child list, and had additional peers (not
6332
the only child, but first in the list of children.)
6333
 
6334
Code and Data Size: Current core subsystem library sizes are shown
6335
below.  These are the code and data sizes for the acpica.lib
6336
produced by the Microsoft Visual C++ 6.0 compiler, and these
6337
values do not include any ACPI driver or OSPM code.  The debug
6338
version of the code includes the debug output trace mechanism and
6339
has a much larger code and data size.  Note that these values will
6340
vary depending on the efficiency of the compiler and the compiler
6341
options used during generation.
6342
 
6343
  Previous Release
6344
    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
6345
    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
6346
  Current Release:
6347
    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
6348
    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
6349
 
6350
 
6351
2) Linux:
6352
 
6353
Allow ":" in OS override string (Ducrot Bruno)
6354
 
6355
Kobject fix (Greg KH)
6356
 
6357
 
6358
3 iASL Compiler/Disassembler:
6359
 
6360
Fixed a problem in the generation of the C source code files (AML
6361
is emitted in C source statements for BIOS inclusion) where the
6362
Ascii dump that appears within a C comment at the end of each line
6363
could cause a compile time error if the AML sequence happens to
6364
have an open comment or close comment sequence embedded.
6365
 
6366
 
6367
----------------------------------------
6368
24 April 2003.  Summary of changes for version 20030424.
6369
 
6370
 
6371
1) ACPI CA Core Subsystem:
6372
 
6373
Support for big-endian systems has been implemented.  Most of the
6374
support has been invisibly added behind big-endian versions of the
6375
ACPI_MOVE_* macros.
6376
 
6377
Fixed a problem in AcpiHwDisableGpeBlock() and
6378
AcpiHwClearGpeBlock() where an incorrect offset was passed to the
6379
low level hardware write routine.  The offset parameter was
6380
actually eliminated from the low level read/write routines because
6381
they had become obsolete.
6382
 
6383
Fixed a problem where a handler object was deleted twice during
6384
the removal of a fixed event handler.
6385
 
6386
 
6387
2) Linux:
6388
 
6389
A fix for SMP systems with link devices was contributed by
6390
 
6391
Compaq's Dan Zink.
6392
 
6393
(2.5) Return whether we handled the interrupt in our IRQ handler.
6394
(Linux ISRs no longer return void, so we can propagate the handler
6395
return value from the ACPI CA core back to the OS.)
6396
 
6397
 
6398
 
6399
3) Documentation:
6400
 
6401
The ACPI CA Programmer Reference has been updated to reflect new
6402
interfaces and changes to existing interfaces.
6403
 
6404
----------------------------------------
6405
28 March 2003.  Summary of changes for version 20030328.
6406
 
6407
1) ACPI CA Core Subsystem:
6408
 
6409
The GPE Block Device support has been completed.  New interfaces
6410
are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
6411
interfaces (enable, disable, clear, getstatus) have been split
6412
into separate interfaces for Fixed Events and General Purpose
6413
Events (GPEs) in order to support GPE Block Devices properly.
6414
 
6415
Fixed a problem where the error message "Failed to acquire
6416
semaphore" would appear during operations on the embedded
6417
controller (EC).
6418
 
6419
Code and Data Size: Current core subsystem library sizes are shown
6420
below.  These are the code and data sizes for the acpica.lib
6421
produced by the Microsoft Visual C++ 6.0 compiler, and these
6422
values do not include any ACPI driver or OSPM code.  The debug
6423
version of the code includes the debug output trace mechanism and
6424
has a much larger code and data size.  Note that these values will
6425
vary depending on the efficiency of the compiler and the compiler
6426
options used during generation.
6427
 
6428
  Previous Release
6429
    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
6430
    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
6431
  Current Release:
6432
    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
6433
    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
6434
 
6435
 
6436
----------------------------------------
6437
28 February 2003.  Summary of changes for version 20030228.
6438
 
6439
 
6440
1) ACPI CA Core Subsystem:
6441
 
6442
The GPE handling and dispatch code has been completely overhauled
6443
in preparation for support of GPE Block Devices (ID ACPI0006).
6444
This affects internal data structures and code only; there should
6445
be no differences visible externally.  One new file has been
6446
added, evgpeblk.c
6447
 
6448
The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
6449
fields that are used to determine the GPE block lengths.  The
6450
REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
6451
structures are ignored.  This is per the ACPI specification but it
6452
isn't very clear.  The full 256 Block 0/1 GPEs are now supported
6453
(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
6454
 
6455
In the SCI interrupt handler, removed the read of the PM1_CONTROL
6456
register to look at the SCI_EN bit.  On some machines, this read
6457
causes an SMI event and greatly slows down SCI events.  (This may
6458
in fact be the cause of slow battery status response on some
6459
systems.)
6460
 
6461
Fixed a problem where a store of a NULL string to a package object
6462
could cause the premature deletion of the object.  This was seen
6463
during execution of the battery _BIF method on some systems,
6464
resulting in no battery data being returned.
6465
 
6466
Added AcpiWalkResources interface to simplify parsing of resource
6467
lists.
6468
 
6469
Code and Data Size: Current core subsystem library sizes are shown
6470
below.  These are the code and data sizes for the acpica.lib
6471
produced by the Microsoft Visual C++ 6.0 compiler, and these
6472
values do not include any ACPI driver or OSPM code.  The debug
6473
version of the code includes the debug output trace mechanism and
6474
has a much larger code and data size.  Note that these values will
6475
vary depending on the efficiency of the compiler and the compiler
6476
options used during generation.
6477
 
6478
  Previous Release
6479
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6480
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6481
  Current Release:
6482
    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
6483
    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
6484
 
6485
 
6486
2) Linux
6487
 
6488
S3 fixes (Ole Rohne)
6489
 
6490
Update ACPI PHP driver with to use new acpi_walk_resource API
6491
(Bjorn Helgaas)
6492
 
6493
Add S4BIOS support (Pavel Machek)
6494
 
6495
Map in entire table before performing checksum (John Stultz)
6496
 
6497
Expand the mem= cmdline to allow the specification of reserved and
6498
ACPI DATA blocks (Pavel Machek)
6499
 
6500
Never use ACPI on VISWS
6501
 
6502
Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
6503
 
6504
Revert a change that allowed P_BLK lengths to be 4 or 5. This is
6505
causing us to think that some systems support C2 when they really
6506
don't.
6507
 
6508
Do not count processor objects for non-present CPUs (Thanks to
6509
Dominik Brodowski)
6510
 
6511
 
6512
3) iASL Compiler:
6513
 
6514
Fixed a problem where ASL include files could not be found and
6515
opened.
6516
 
6517
Added support for the _PDC reserved name.
6518
 
6519
 
6520
----------------------------------------
6521
22 January 2003.  Summary of changes for version 20030122.
6522
 
6523
 
6524
1) ACPI CA Core Subsystem:
6525
 
6526
Added a check for constructs of the form:  Store (Local0, Local0)
6527
where Local0 is not initialized.  Apparently, some BIOS
6528
programmers believe that this is a NOOP.  Since this store doesn't
6529
do anything anyway, the new prototype behavior will ignore this
6530
error.  This is a case where we can relax the strict checking in
6531
the interpreter in the name of compatibility.
6532
 
6533
 
6534
2) Linux
6535
 
6536
The AcpiSrc Source Conversion Utility has been released with the
6537
Linux package for the first time.  This is the utility that is
6538
used to convert the ACPI CA base source code to the Linux version.
6539
 
6540
(Both) Handle P_BLK lengths shorter than 6 more gracefully
6541
 
6542
(Both) Move more headers to include/acpi, and delete an unused
6543
header.
6544
 
6545
(Both) Move drivers/acpi/include directory to include/acpi
6546
 
6547
(Both) Boot functions don't use cmdline, so don't pass it around
6548
 
6549
(Both) Remove include of unused header (Adrian Bunk)
6550
 
6551
(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
6552
the
6553
former now also includes the latter, acpiphp.h only needs the one,
6554
now.
6555
 
6556
(2.5) Make it possible to select method of bios restoring after S3
6557
resume. [=> no more ugly ifdefs] (Pavel Machek)
6558
 
6559
(2.5) Make proc write interfaces work (Pavel Machek)
6560
 
6561
(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
6562
 
6563
(2.5) Break out ACPI Perf code into its own module, under cpufreq
6564
(Dominik Brodowski)
6565
 
6566
(2.4) S4BIOS support (Ducrot Bruno)
6567
 
6568
(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
6569
Visinoni)
6570
 
6571
 
6572
3) iASL Compiler:
6573
 
6574
Added support to disassemble SSDT and PSDTs.
6575
 
6576
Implemented support to obtain SSDTs from the Windows registry if
6577
available.
6578
 
6579
 
6580
----------------------------------------
6581
09 January 2003.  Summary of changes for version 20030109.
6582
 
6583
1) ACPI CA Core Subsystem:
6584
 
6585
Changed the behavior of the internal Buffer-to-String conversion
6586
function.  The current ACPI specification states that the contents
6587
of the buffer are "converted to a string of two-character
6588
hexadecimal numbers, each separated by a space".  Unfortunately,
6589
this definition is not backwards compatible with existing ACPI 1.0
6590
implementations (although the behavior was not defined in the ACPI
6591
1.0 specification).  The new behavior simply copies data from the
6592
buffer to the string until a null character is found or the end of
6593
the buffer is reached.  The new String object is always null
6594
terminated.  This problem was seen during the generation of _BIF
6595
battery data where incorrect strings were returned for battery
6596
type, etc.  This will also require an errata to the ACPI
6597
specification.
6598
 
6599
Renamed all instances of NATIVE_UINT and NATIVE_INT to
6600
ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
6601
 
6602
Copyright in all module headers (both Linux and non-Linux) has be
6603
updated to 2003.
6604
 
6605
Code and Data Size: Current core subsystem library sizes are shown
6606
below.  These are the code and data sizes for the acpica.lib
6607
produced by the Microsoft Visual C++ 6.0 compiler, and these
6608
values do not include any ACPI driver or OSPM code.  The debug
6609
version of the code includes the debug output trace mechanism and
6610
has a much larger code and data size.  Note that these values will
6611
vary depending on the efficiency of the compiler and the compiler
6612
options used during generation.
6613
 
6614
  Previous Release
6615
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6616
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6617
  Current Release:
6618
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6619
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6620
 
6621
 
6622
2) Linux
6623
 
6624
Fixed an oops on module insertion/removal (Matthew Tippett)
6625
 
6626
(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
6627
 
6628
(2.5) Replace pr_debug (Randy Dunlap)
6629
 
6630
(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
6631
 
6632
(Both) Eliminate spawning of thread from timer callback, in favor
6633
of schedule_work()
6634
 
6635
(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
6636
 
6637
(Both) Added define for Fixed Function HW region (Matthew Wilcox)
6638
 
6639
(Both) Add missing statics to button.c (Pavel Machek)
6640
 
6641
Several changes have been made to the source code translation
6642
utility that generates the Linux Code in order to make the code
6643
more "Linux-like":
6644
 
6645
All typedefs on structs and unions have been removed in keeping
6646
with the Linux coding style.
6647
 
6648
Removed the non-Linux SourceSafe module revision number from each
6649
module header.
6650
 
6651
Completed major overhaul of symbols to be lowercased for linux.
6652
Doubled the number of symbols that are lowercased.
6653
 
6654
Fixed a problem where identifiers within procedure headers and
6655
within quotes were not fully lower cased (they were left with a
6656
starting capital.)
6657
 
6658
Some C macros whose only purpose is to allow the generation of 16-
6659
bit code are now completely removed in the Linux code, increasing
6660
readability and maintainability.
6661
 
6662
----------------------------------------
6663
 
6664
12 December 2002.  Summary of changes for version 20021212.
6665
 
6666
 
6667
1) ACPI CA Core Subsystem:
6668
 
6669
Fixed a problem where the creation of a zero-length AML Buffer
6670
would cause a fault.
6671
 
6672
Fixed a problem where a Buffer object that pointed to a static AML
6673
buffer (in an ACPI table) could inadvertently be deleted, causing
6674
memory corruption.
6675
 
6676
Fixed a problem where a user buffer (passed in to the external
6677
ACPI CA interfaces) could be overwritten if the buffer was too
6678
small to complete the operation, causing memory corruption.
6679
 
6680
Fixed a problem in the Buffer-to-String conversion code where a
6681
string of length one was always returned, regardless of the size
6682
of the input Buffer object.
6683
 
6684
Removed the NATIVE_CHAR data type across the entire source due to
6685
lack of need and lack of consistent use.
6686
 
6687
Code and Data Size: Current core subsystem library sizes are shown
6688
below.  These are the code and data sizes for the acpica.lib
6689
produced by the Microsoft Visual C++ 6.0 compiler, and these
6690
values do not include any ACPI driver or OSPM code.  The debug
6691
version of the code includes the debug output trace mechanism and
6692
has a much larger code and data size.  Note that these values will
6693
vary depending on the efficiency of the compiler and the compiler
6694
options used during generation.
6695
 
6696
  Previous Release
6697
    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
6698
    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
6699
  Current Release:
6700
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
6701
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
6702
 
6703
 
6704
----------------------------------------
6705
05 December 2002.  Summary of changes for version 20021205.
6706
 
6707
1) ACPI CA Core Subsystem:
6708
 
6709
Fixed a problem where a store to a String or Buffer object could
6710
cause corruption of the DSDT if the object type being stored was
6711
the same as the target object type and the length of the object
6712
being stored was equal to or smaller than the original (existing)
6713
target object.  This was seen to cause corruption of battery _BIF
6714
buffers if the _BIF method modified the buffer on the fly.
6715
 
6716
Fixed a problem where an internal error was generated if a control
6717
method invocation was used in an OperationRegion, Buffer, or
6718
Package declaration.  This was caused by the deferred parsing of
6719
the control method and thus the deferred creation of the internal
6720
method object.  The solution to this problem was to create the
6721
internal method object at the moment the method is encountered in
6722
the first pass - so that subsequent references to the method will
6723
able to obtain the required parameter count and thus properly
6724
parse the method invocation.  This problem presented itself as an
6725
AE_AML_INTERNAL during the pass 1 parse phase during table load.
6726
 
6727
Fixed a problem where the internal String object copy routine did
6728
not always allocate sufficient memory for the target String object
6729
and caused memory corruption.  This problem was seen to cause
6730
"Allocation already present in list!" errors as memory allocation
6731
became corrupted.
6732
 
6733
Implemented a new function for the evaluation of namespace objects
6734
that allows the specification of the allowable return object
6735
types.  This simplifies a lot of code that checks for a return
6736
object of one or more specific objects returned from the
6737
evaluation (such as _STA, etc.)  This may become and external
6738
function if it would be useful to ACPI-related drivers.
6739
 
6740
Completed another round of prefixing #defines with "ACPI_" for
6741
clarity.
6742
 
6743
Completed additional code restructuring to allow more modular
6744
linking for iASL compiler and AcpiExec.  Several files were split
6745
creating new files.  New files:  nsparse.c dsinit.c evgpe.c
6746
 
6747
Implemented an abort mechanism to terminate an executing control
6748
method via the AML debugger.  This feature is useful for debugging
6749
control methods that depend (wait) for specific hardware
6750
responses.
6751
 
6752
Code and Data Size: Current core subsystem library sizes are shown
6753
below.  These are the code and data sizes for the acpica.lib
6754
produced by the Microsoft Visual C++ 6.0 compiler, and these
6755
values do not include any ACPI driver or OSPM code.  The debug
6756
version of the code includes the debug output trace mechanism and
6757
has a much larger code and data size.  Note that these values will
6758
vary depending on the efficiency of the compiler and the compiler
6759
options used during generation.
6760
 
6761
  Previous Release
6762
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6763
    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
6764
  Current Release:
6765
    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
6766
    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
6767
 
6768
 
6769
2) iASL Compiler/Disassembler
6770
 
6771
Fixed a compiler code generation problem for "Interrupt" Resource
6772
Descriptors.  If specified in the ASL, the optional "Resource
6773
Source Index" and "Resource Source" fields were not inserted into
6774
the correct location within the AML resource descriptor, creating
6775
an invalid descriptor.
6776
 
6777
Fixed a disassembler problem for "Interrupt" resource descriptors.
6778
The optional "Resource Source Index" and "Resource Source" fields
6779
were ignored.
6780
 
6781
 
6782
----------------------------------------
6783
22 November 2002.  Summary of changes for version 20021122.
6784
 
6785
 
6786
1) ACPI CA Core Subsystem:
6787
 
6788
Fixed a reported problem where an object stored to a Method Local
6789
or Arg was not copied to a new object during the store - the
6790
object pointer was simply copied to the Local/Arg.  This caused
6791
all subsequent operations on the Local/Arg to also affect the
6792
original source of the store operation.
6793
 
6794
Fixed a problem where a store operation to a Method Local or Arg
6795
was not completed properly if the Local/Arg contained a reference
6796
(from RefOf) to a named field.  The general-purpose store-to-
6797
namespace-node code is now used so that this case is handled
6798
automatically.
6799
 
6800
Fixed a problem where the internal object copy routine would cause
6801
a protection fault if the object being copied was a Package and
6802
contained either 1) a NULL package element or 2) a nested sub-
6803
package.
6804
 
6805
Fixed a problem with the GPE initialization that resulted from an
6806
ambiguity in the ACPI specification.  One section of the
6807
specification states that both the address and length of the GPE
6808
block must be zero if the block is not supported.  Another section
6809
implies that only the address need be zero if the block is not
6810
supported.  The code has been changed so that both the address and
6811
the length must be non-zero to indicate a valid GPE block (i.e.,
6812
if either the address or the length is zero, the GPE block is
6813
invalid.)
6814
 
6815
Code and Data Size: Current core subsystem library sizes are shown
6816
below.  These are the code and data sizes for the acpica.lib
6817
produced by the Microsoft Visual C++ 6.0 compiler, and these
6818
values do not include any ACPI driver or OSPM code.  The debug
6819
version of the code includes the debug output trace mechanism and
6820
has a much larger code and data size.  Note that these values will
6821
vary depending on the efficiency of the compiler and the compiler
6822
options used during generation.
6823
 
6824
  Previous Release
6825
    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
6826
    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
6827
  Current Release:
6828
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6829
    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
6830
 
6831
 
6832
2) Linux
6833
 
6834
Cleaned up EC driver. Exported an external EC read/write
6835
interface. By going through this, other drivers (most notably
6836
sonypi) will be able to serialize access to the EC.
6837
 
6838
 
6839
3) iASL Compiler/Disassembler
6840
 
6841
Implemented support to optionally generate include files for both
6842
ASM and C (the -i switch).  This simplifies BIOS development by
6843
automatically creating include files that contain external
6844
declarations for the symbols that are created within the
6845
 
6846
(optionally generated) ASM and C AML source files.
6847
 
6848
 
6849
----------------------------------------
6850
15 November 2002.  Summary of changes for version 20021115.
6851
 
6852
1) ACPI CA Core Subsystem:
6853
 
6854
Fixed a memory leak problem where an error during resolution of
6855
 
6856
method arguments during a method invocation from another method
6857
failed to cleanup properly by deleting all successfully resolved
6858
argument objects.
6859
 
6860
Fixed a problem where the target of the Index() operator was not
6861
correctly constructed if the source object was a package.  This
6862
problem has not been detected because the use of a target operand
6863
with Index() is very rare.
6864
 
6865
Fixed a problem with the Index() operator where an attempt was
6866
made to delete the operand objects twice.
6867
 
6868
Fixed a problem where an attempt was made to delete an operand
6869
twice during execution of the CondRefOf() operator if the target
6870
did not exist.
6871
 
6872
Implemented the first of perhaps several internal create object
6873
functions that create and initialize a specific object type.  This
6874
consolidates duplicated code wherever the object is created, thus
6875
shrinking the size of the subsystem.
6876
 
6877
Implemented improved debug/error messages for errors that occur
6878
during nested method invocations.  All executing method pathnames
6879
are displayed (with the error) as the call stack is unwound - thus
6880
simplifying debug.
6881
 
6882
Fixed a problem introduced in the 10/02 release that caused
6883
premature deletion of a buffer object if a buffer was used as an
6884
ASL operand where an integer operand is required (Thus causing an
6885
implicit object conversion from Buffer to Integer.)  The change in
6886
the 10/02 release was attempting to fix a memory leak (albeit
6887
incorrectly.)
6888
 
6889
Code and Data Size: Current core subsystem library sizes are shown
6890
below.  These are the code and data sizes for the acpica.lib
6891
produced by the Microsoft Visual C++ 6.0 compiler, and these
6892
values do not include any ACPI driver or OSPM code.  The debug
6893
version of the code includes the debug output trace mechanism and
6894
has a much larger code and data size.  Note that these values will
6895
vary depending on the efficiency of the compiler and the compiler
6896
options used during generation.
6897
 
6898
  Previous Release
6899
    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
6900
    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
6901
  Current Release:
6902
    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
6903
    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
6904
 
6905
 
6906
2) Linux
6907
 
6908
Changed the implementation of the ACPI semaphores to use down()
6909
instead of down_interruptable().  It is important that the
6910
execution of ACPI control methods not be interrupted by signals.
6911
Methods must run to completion, or the system may be left in an
6912
unknown/unstable state.
6913
 
6914
Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
6915
(Shawn Starr)
6916
 
6917
 
6918
3) iASL Compiler/Disassembler
6919
 
6920
 
6921
Changed the default location of output files.  All output files
6922
are now placed in the current directory by default instead of in
6923
the directory of the source file.  This change may affect some
6924
existing makefiles, but it brings the behavior of the compiler in
6925
line with other similar tools.  The location of the output files
6926
can be overridden with the -p command line switch.
6927
 
6928
 
6929
----------------------------------------
6930
11 November 2002.  Summary of changes for version 20021111.
6931
 
6932
 
6933
0) ACPI Specification 2.0B is released and is now available at:
6934
http://www.acpi.info/index.html
6935
 
6936
 
6937
1) ACPI CA Core Subsystem:
6938
 
6939
Implemented support for the ACPI 2.0 SMBus Operation Regions.
6940
This includes the early detection and handoff of the request to
6941
the SMBus region handler (avoiding all of the complex field
6942
support code), and support for the bidirectional return packet
6943
from an SMBus write operation.  This paves the way for the
6944
development of SMBus drivers in each host operating system.
6945
 
6946
Fixed a problem where the semaphore WAIT_FOREVER constant was
6947
defined as 32 bits, but must be 16 bits according to the ACPI
6948
specification.  This had the side effect of causing ASL
6949
Mutex/Event timeouts even though the ASL code requested a wait
6950
forever.  Changed all internal references to the ACPI timeout
6951
parameter to 16 bits to prevent future problems.  Changed the name
6952
of WAIT_FOREVER to ACPI_WAIT_FOREVER.
6953
 
6954
Code and Data Size: Current core subsystem library sizes are shown
6955
below.  These are the code and data sizes for the acpica.lib
6956
produced by the Microsoft Visual C++ 6.0 compiler, and these
6957
values do not include any ACPI driver or OSPM code.  The debug
6958
version of the code includes the debug output trace mechanism and
6959
has a much larger code and data size.  Note that these values will
6960
vary depending on the efficiency of the compiler and the compiler
6961
options used during generation.
6962
 
6963
  Previous Release
6964
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
6965
    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
6966
  Current Release:
6967
    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
6968
    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
6969
 
6970
 
6971
2) Linux
6972
 
6973
Module loading/unloading fixes (John Cagle)
6974
 
6975
 
6976
3) iASL Compiler/Disassembler
6977
 
6978
Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
6979
 
6980
Implemented support for the disassembly of all SMBus protocol
6981
keywords (SMBQuick, SMBWord, etc.)
6982
 
6983
----------------------------------------
6984
01 November 2002.  Summary of changes for version 20021101.
6985
 
6986
 
6987
1) ACPI CA Core Subsystem:
6988
 
6989
Fixed a problem where platforms that have a GPE1 block but no GPE0
6990
block were not handled correctly.  This resulted in a "GPE
6991
overlap" error message.  GPE0 is no longer required.
6992
 
6993
Removed code added in the previous release that inserted nodes
6994
into the namespace in alphabetical order.  This caused some side-
6995
effects on various machines.  The root cause of the problem is
6996
still under investigation since in theory, the internal ordering
6997
of the namespace nodes should not matter.
6998
 
6999
 
7000
Enhanced error reporting for the case where a named object is not
7001
found during control method execution.  The full ACPI namepath
7002
(name reference) of the object that was not found is displayed in
7003
this case.
7004
 
7005
Note: as a result of the overhaul of the namespace object types in
7006
the previous release, the namespace nodes for the predefined
7007
scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
7008
instead of ACPI_TYPE_ANY.  This simplifies the namespace
7009
management code but may affect code that walks the namespace tree
7010
looking for specific object types.
7011
 
7012
Code and Data Size: Current core subsystem library sizes are shown
7013
below.  These are the code and data sizes for the acpica.lib
7014
produced by the Microsoft Visual C++ 6.0 compiler, and these
7015
values do not include any ACPI driver or OSPM code.  The debug
7016
version of the code includes the debug output trace mechanism and
7017
has a much larger code and data size.  Note that these values will
7018
vary depending on the efficiency of the compiler and the compiler
7019
options used during generation.
7020
 
7021
  Previous Release
7022
    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
7023
    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
7024
  Current Release:
7025
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7026
    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
7027
 
7028
 
7029
2) Linux
7030
 
7031
Fixed a problem introduced in the previous release where the
7032
Processor and Thermal objects were not recognized and installed in
7033
/proc.  This was related to the scope type change described above.
7034
 
7035
 
7036
3) iASL Compiler/Disassembler
7037
 
7038
Implemented the -g option to get all of the required ACPI tables
7039
from the registry and save them to files (Windows version of the
7040
compiler only.)  The required tables are the FADT, FACS, and DSDT.
7041
 
7042
Added ACPI table checksum validation during table disassembly in
7043
order to catch corrupted tables.
7044
 
7045
 
7046
----------------------------------------
7047
22 October 2002.  Summary of changes for version 20021022.
7048
 
7049
1) ACPI CA Core Subsystem:
7050
 
7051
Implemented a restriction on the Scope operator that the target
7052
must already exist in the namespace at the time the operator is
7053
encountered (during table load or method execution).  In other
7054
words, forward references are not allowed and Scope() cannot
7055
create a new object. This changes the previous behavior where the
7056
interpreter would create the name if not found.  This new behavior
7057
correctly enables the search-to-root algorithm during namespace
7058
lookup of the target name.  Because of this upsearch, this fixes
7059
the known Compaq _SB_.OKEC problem and makes both the AML
7060
interpreter and iASL compiler compatible with other ACPI
7061
implementations.
7062
 
7063
Completed a major overhaul of the internal ACPI object types for
7064
the ACPI Namespace and the associated operand objects.  Many of
7065
these types had become obsolete with the introduction of the two-
7066
pass namespace load.  This cleanup simplifies the code and makes
7067
the entire namespace load mechanism much clearer and easier to
7068
understand.
7069
 
7070
Improved debug output for tracking scope opening/closing to help
7071
diagnose scoping issues.  The old scope name as well as the new
7072
scope name are displayed.  Also improved error messages for
7073
problems with ASL Mutex objects and error messages for GPE
7074
problems.
7075
 
7076
Cleaned up the namespace dump code, removed obsolete code.
7077
 
7078
All string output (for all namespace/object dumps) now uses the
7079
common ACPI string output procedure which handles escapes properly
7080
and does not emit non-printable characters.
7081
 
7082
Fixed some issues with constants in the 64-bit version of the
7083
local C library (utclib.c)
7084
 
7085
 
7086
2) Linux
7087
 
7088
EC Driver:  No longer attempts to acquire the Global Lock at
7089
interrupt level.
7090
 
7091
 
7092
3) iASL Compiler/Disassembler
7093
 
7094
Implemented ACPI 2.0B grammar change that disallows all Type 1 and
7095
2 opcodes outside of a control method.  This means that the
7096
"executable" operators (versus the "namespace" operators) cannot
7097
be used at the table level; they can only be used within a control
7098
method.
7099
 
7100
Implemented the restriction on the Scope() operator where the
7101
target must already exist in the namespace at the time the
7102
operator is encountered (during ASL compilation). In other words,
7103
forward references are not allowed and Scope() cannot create a new
7104
object.  This makes the iASL compiler compatible with other ACPI
7105
implementations and makes the Scope() implementation adhere to the
7106
ACPI specification.
7107
 
7108
Fixed a problem where namepath optimization for the Alias operator
7109
was optimizing the wrong path (of the two namepaths.)  This caused
7110
a "Missing alias link" error message.
7111
 
7112
Fixed a problem where an "unknown reserved name" warning could be
7113
incorrectly generated for names like "_SB" when the trailing
7114
underscore is not used in the original ASL.
7115
 
7116
Fixed a problem where the reserved name check did not handle
7117
NamePaths with multiple NameSegs correctly.  The first nameseg of
7118
the NamePath was examined instead of the last NameSeg.
7119
 
7120
 
7121
----------------------------------------
7122
 
7123
02 October 2002.  Summary of changes for this release.
7124
 
7125
 
7126
1) ACPI CA Core Subsystem version 20021002:
7127
 
7128
Fixed a problem where a store/copy of a string to an existing
7129
string did not always set the string length properly in the String
7130
object.
7131
 
7132
Fixed a reported problem with the ToString operator where the
7133
behavior was identical to the ToHexString operator instead of just
7134
simply converting a raw buffer to a string data type.
7135
 
7136
Fixed a problem where CopyObject and the other "explicit"
7137
conversion operators were not updating the internal namespace node
7138
type as part of the store operation.
7139
 
7140
Fixed a memory leak during implicit source operand conversion
7141
where the original object was not deleted if it was converted to a
7142
new object of a different type.
7143
 
7144
Enhanced error messages for all problems associated with namespace
7145
lookups.  Common procedure generates and prints the lookup name as
7146
well as the formatted status.
7147
 
7148
Completed implementation of a new design for the Alias support
7149
within the namespace.  The existing design did not handle the case
7150
where a new object was assigned to one of the two names due to the
7151
use of an explicit conversion operator, resulting in the two names
7152
pointing to two different objects.  The new design simply points
7153
the Alias name to the original name node - not to the object.
7154
This results in a level of indirection that must be handled in the
7155
name resolution mechanism.
7156
 
7157
Code and Data Size: Current core subsystem library sizes are shown
7158
below.  These are the code and data sizes for the acpica.lib
7159
produced by the Microsoft Visual C++ 6.0 compiler, and these
7160
values do not include any ACPI driver or OSPM code.  The debug
7161
version of the code includes the debug output trace mechanism and
7162
has a larger code and data size.  Note that these values will vary
7163
depending on the efficiency of the compiler and the compiler
7164
options used during generation.
7165
 
7166
  Previous Release
7167
    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
7168
    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
7169
  Current Release:
7170
    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
7171
    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
7172
 
7173
 
7174
2) Linux
7175
 
7176
Initialize thermal driver's timer before it is used. (Knut
7177
Neumann)
7178
 
7179
Allow handling negative celsius values. (Kochi Takayoshi)
7180
 
7181
Fix thermal management and make trip points. R/W (Pavel Machek)
7182
 
7183
Fix /proc/acpi/sleep. (P. Christeas)
7184
 
7185
IA64 fixes. (David Mosberger)
7186
 
7187
Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
7188
 
7189
Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
7190
Brodowski)
7191
 
7192
 
7193
3) iASL Compiler/Disassembler
7194
 
7195
Clarified some warning/error messages.
7196
 
7197
 
7198
----------------------------------------
7199
18 September 2002.  Summary of changes for this release.
7200
 
7201
 
7202
1) ACPI CA Core Subsystem version 20020918:
7203
 
7204
Fixed a reported problem with reference chaining (via the Index()
7205
and RefOf() operators) in the ObjectType() and SizeOf() operators.
7206
The definition of these operators includes the dereferencing of
7207
all chained references to return information on the base object.
7208
 
7209
Fixed a problem with stores to indexed package elements - the
7210
existing code would not complete the store if an "implicit
7211
conversion" was not performed.  In other words, if the existing
7212
object (package element) was to be replaced completely, the code
7213
didn't handle this case.
7214
 
7215
Relaxed typechecking on the ASL "Scope" operator to allow the
7216
target name to refer to an object of type Integer, String, or
7217
Buffer, in addition to the scoping object types (Device,
7218
predefined Scopes, Processor, PowerResource, and ThermalZone.)
7219
This allows existing AML code that has workarounds for a bug in
7220
Windows to function properly.  A warning is issued, however.  This
7221
affects both the AML interpreter and the iASL compiler. Below is
7222
an example of this type of ASL code:
7223
 
7224
      Name(DEB,0x00)
7225
      Scope(DEB)
7226
      {
7227
 
7228
Fixed some reported problems with 64-bit integer support in the
7229
local implementation of C library functions (clib.c)
7230
 
7231
 
7232
2) Linux
7233
 
7234
Use ACPI fix map region instead of IOAPIC region, since it is
7235
undefined in non-SMP.
7236
 
7237
Ensure that the SCI has the proper polarity and trigger, even on
7238
systems that do not have an interrupt override entry in the MADT.
7239
 
7240
2.5 big driver reorganization (Pat Mochel)
7241
 
7242
Use early table mapping code from acpitable.c (Andi Kleen)
7243
 
7244
New blacklist entries (Andi Kleen)
7245
 
7246
Blacklist improvements. Split blacklist code out into a separate
7247
file. Move checking the blacklist to very early. Previously, we
7248
would use ACPI tables, and then halfway through init, check the
7249
blacklist -- too late. Now, it's early enough to completely fall-
7250
back to non-ACPI.
7251
 
7252
 
7253
3) iASL Compiler/Disassembler version 20020918:
7254
 
7255
Fixed a problem where the typechecking code didn't know that an
7256
alias could point to a method.  In other words, aliases were not
7257
being dereferenced during typechecking.
7258
 
7259
 
7260
----------------------------------------
7261
29 August 2002.  Summary of changes for this release.
7262
 
7263
1) ACPI CA Core Subsystem Version 20020829:
7264
 
7265
If the target of a Scope() operator already exists, it must be an
7266
object type that actually opens a scope -- such as a Device,
7267
Method, Scope, etc.  This is a fatal runtime error.  Similar error
7268
check has been added to the iASL compiler also.
7269
 
7270
Tightened up the namespace load to disallow multiple names in the
7271
same scope.  This previously was allowed if both objects were of
7272
the same type.  (i.e., a lookup was the same as entering a new
7273
name).
7274
 
7275
 
7276
2) Linux
7277
 
7278
Ensure that the ACPI interrupt has the proper trigger and
7279
polarity.
7280
 
7281
local_irq_disable is extraneous. (Matthew Wilcox)
7282
 
7283
Make "acpi=off" actually do what it says, and not use the ACPI
7284
interpreter *or* the tables.
7285
 
7286
Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
7287
Takayoshi)
7288
 
7289
 
7290
3) iASL Compiler/Disassembler  Version 20020829:
7291
 
7292
Implemented namepath optimization for name declarations.  For
7293
example, a declaration like "Method (\_SB_.ABCD)" would get
7294
optimized to "Method (ABCD)" if the declaration is within the
7295
\_SB_ scope.  This optimization is in addition to the named
7296
reference path optimization first released in the previous
7297
version. This would seem to complete all possible optimizations
7298
for namepaths within the ASL/AML.
7299
 
7300
If the target of a Scope() operator already exists, it must be an
7301
object type that actually opens a scope -- such as a Device,
7302
Method, Scope, etc.
7303
 
7304
Implemented a check and warning for unreachable code in the same
7305
block below a Return() statement.
7306
 
7307
Fixed a problem where the listing file was not generated if the
7308
compiler aborted if the maximum error count was exceeded (200).
7309
 
7310
Fixed a problem where the typechecking of method return values was
7311
broken.  This includes the check for a return value when the
7312
method is invoked as a TermArg (a return value is expected.)
7313
 
7314
Fixed a reported problem where EOF conditions during a quoted
7315
string or comment caused a fault.
7316
 
7317
 
7318
----------------------------------------
7319
15 August 2002.  Summary of changes for this release.
7320
 
7321
1) ACPI CA Core Subsystem Version 20020815:
7322
 
7323
Fixed a reported problem where a Store to a method argument that
7324
contains a reference did not perform the indirect store correctly.
7325
This problem was created during the conversion to the new
7326
reference object model - the indirect store to a method argument
7327
code was not updated to reflect the new model.
7328
 
7329
Reworked the ACPI mode change code to better conform to ACPI 2.0,
7330
handle corner cases, and improve code legibility (Kochi Takayoshi)
7331
 
7332
Fixed a problem with the pathname parsing for the carat (^)
7333
prefix.  The heavy use of the carat operator by the new namepath
7334
optimization in the iASL compiler uncovered a problem with the AML
7335
interpreter handling of this prefix.  In the case where one or
7336
more carats precede a single nameseg, the nameseg was treated as
7337
standalone and the search rule (to root) was inadvertently
7338
applied.  This could cause both the iASL compiler and the
7339
interpreter to find the wrong object or to miss the error that
7340
should occur if the object does not exist at that exact pathname.
7341
 
7342
Found and fixed the problem where the HP Pavilion DSDT would not
7343
load.  This was a relatively minor tweak to the table loading code
7344
(a problem caused by the unexpected encounter with a method
7345
invocation not within a control method), but it does not solve the
7346
overall issue of the execution of AML code at the table level.
7347
This investigation is still ongoing.
7348
 
7349
Code and Data Size: Current core subsystem library sizes are shown
7350
below.  These are the code and data sizes for the acpica.lib
7351
produced by the Microsoft Visual C++ 6.0 compiler, and these
7352
values do not include any ACPI driver or OSPM code.  The debug
7353
version of the code includes the debug output trace mechanism and
7354
has a larger code and data size.  Note that these values will vary
7355
depending on the efficiency of the compiler and the compiler
7356
options used during generation.
7357
 
7358
  Previous Release
7359
    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
7360
    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
7361
  Current Release:
7362
    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
7363
    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
7364
 
7365
 
7366
2) Linux
7367
 
7368
Remove redundant slab.h include (Brad Hards)
7369
 
7370
Fix several bugs in thermal.c (Herbert Nachtnebel)
7371
 
7372
Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
7373
 
7374
Change acpi_system_suspend to use updated irq functions (Pavel
7375
Machek)
7376
 
7377
Export acpi_get_firmware_table (Matthew Wilcox)
7378
 
7379
Use proper root proc entry for ACPI (Kochi Takayoshi)
7380
 
7381
Fix early-boot table parsing (Bjorn Helgaas)
7382
 
7383
 
7384
3) iASL Compiler/Disassembler
7385
 
7386
Reworked the compiler options to make them more consistent and to
7387
use two-letter options where appropriate.  We were running out of
7388
sensible letters.   This may break some makefiles, so check the
7389
current options list by invoking the compiler with no parameters.
7390
 
7391
Completed the design and implementation of the ASL namepath
7392
optimization option for the compiler.  This option optimizes all
7393
references to named objects to the shortest possible path.  The
7394
first attempt tries to utilize a single nameseg (4 characters) and
7395
the "search-to-root" algorithm used by the interpreter.  If that
7396
cannot be used (because either the name is not in the search path
7397
or there is a conflict with another object with the same name),
7398
the pathname is optimized using the carat prefix (usually a
7399
shorter string than specifying the entire path from the root.)
7400
 
7401
Implemented support to obtain the DSDT from the Windows registry
7402
(when the disassembly option is specified with no input file).
7403
Added this code as the implementation for AcpiOsTableOverride in
7404
the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
7405
utility) to scan memory for the DSDT to the AcpiOsTableOverride
7406
function in the DOS OSL to make the disassembler truly OS
7407
independent.
7408
 
7409
Implemented a new option to disassemble and compile in one step.
7410
When used without an input filename, this option will grab the
7411
DSDT from the local machine, disassemble it, and compile it in one
7412
step.
7413
 
7414
Added a warning message for invalid escapes (a backslash followed
7415
by any character other than the allowable escapes).  This catches
7416
the quoted string error "\_SB_" (which should be "\\_SB_" ).
7417
 
7418
Also, there are numerous instances in the ACPI specification where
7419
this error occurs.
7420
 
7421
Added a compiler option to disable all optimizations.  This is
7422
basically the "compatibility mode" because by using this option,
7423
the AML code will come out exactly the same as other ASL
7424
compilers.
7425
 
7426
Added error messages for incorrectly ordered dependent resource
7427
functions.  This includes: missing EndDependentFn macro at end of
7428
dependent resource list, nested dependent function macros (both
7429
start and end), and missing StartDependentFn macro.  These are
7430
common errors that should be caught at compile time.
7431
 
7432
Implemented _OSI support for the disassembler and compiler.  _OSI
7433
must be included in the namespace for proper disassembly (because
7434
the disassembler must know the number of arguments.)
7435
 
7436
Added an "optimization" message type that is optional (off by
7437
default).  This message is used for all optimizations - including
7438
constant folding, integer optimization, and namepath optimization.
7439
 
7440
----------------------------------------
7441
25 July 2002.  Summary of changes for this release.
7442
 
7443
 
7444
1) ACPI CA Core Subsystem Version 20020725:
7445
 
7446
The AML Disassembler has been enhanced to produce compilable ASL
7447
code and has been integrated into the iASL compiler (see below) as
7448
well as the single-step disassembly for the AML debugger and the
7449
disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
7450
resource templates and macros are fully supported.  The
7451
disassembler has been tested on over 30 different AML files,
7452
producing identical AML when the resulting disassembled ASL file
7453
is recompiled with the same ASL compiler.
7454
 
7455
Modified the Resource Manager to allow zero interrupts and zero
7456
dma channels during the GetCurrentResources call.  This was
7457
causing problems on some platforms.
7458
 
7459
Added the AcpiOsRedirectOutput interface to the OSL to simplify
7460
output redirection for the AcpiOsPrintf and AcpiOsVprintf
7461
interfaces.
7462
 
7463
Code and Data Size: Current core subsystem library sizes are shown
7464
below.  These are the code and data sizes for the acpica.lib
7465
produced by the Microsoft Visual C++ 6.0 compiler, and these
7466
values do not include any ACPI driver or OSPM code.  The debug
7467
version of the code includes the debug output trace mechanism and
7468
has a larger code and data size.  Note that these values will vary
7469
depending on the efficiency of the compiler and the compiler
7470
options used during generation.
7471
 
7472
  Previous Release
7473
    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
7474
    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
7475
  Current Release:
7476
    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
7477
    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
7478
 
7479
 
7480
2) Linux
7481
 
7482
Fixed a panic in the EC driver (Dominik Brodowski)
7483
 
7484
Implemented checksum of the R/XSDT itself during Linux table scan
7485
(Richard Schaal)
7486
 
7487
 
7488
3) iASL compiler
7489
 
7490
The AML disassembler is integrated into the compiler.  The "-d"
7491
option invokes the disassembler  to completely disassemble an
7492
input AML file, producing as output a text ASL file with the
7493
extension ".dsl" (to avoid name collisions with existing .asl
7494
source files.)  A future enhancement will allow the disassembler
7495
to obtain the BIOS DSDT from the registry under Windows.
7496
 
7497
Fixed a problem with the VendorShort and VendorLong resource
7498
descriptors where an invalid AML sequence was created.
7499
 
7500
Implemented a fix for BufferData term in the ASL parser.  It was
7501
inadvertently defined twice, allowing invalid syntax to pass and
7502
causing reduction conflicts.
7503
 
7504
Fixed a problem where the Ones opcode could get converted to a
7505
value of zero if "Ones" was used where a byte, word or dword value
7506
was expected.  The 64-bit value is now truncated to the correct
7507
size with the correct value.
7508
 
7509
 
7510
 
7511
----------------------------------------
7512
02 July 2002.  Summary of changes for this release.
7513
 
7514
 
7515
1) ACPI CA Core Subsystem Version 20020702:
7516
 
7517
The Table Manager code has been restructured to add several new
7518
features.  Tables that are not required by the core subsystem
7519
(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
7520
validated in any way and are returned from AcpiGetFirmwareTable if
7521
requested.  The AcpiOsTableOverride interface is now called for
7522
each table that is loaded by the subsystem in order to allow the
7523
host to override any table it chooses.  Previously, only the DSDT
7524
could be overridden.  Added one new files, tbrsdt.c and
7525
tbgetall.c.
7526
 
7527
Fixed a problem with the conversion of internal package objects to
7528
external objects (when a package is returned from a control
7529
method.)  The return buffer length was set to zero instead of the
7530
proper length of the package object.
7531
 
7532
Fixed a reported problem with the use of the RefOf and DeRefOf
7533
operators when passing reference arguments to control methods.  A
7534
new type of Reference object is used internally for references
7535
produced by the RefOf operator.
7536
 
7537
Added additional error messages in the Resource Manager to explain
7538
AE_BAD_DATA errors when they occur during resource parsing.
7539
 
7540
Split the AcpiEnableSubsystem into two primitives to enable a
7541
finer granularity initialization sequence.  These two calls should
7542
be called in this order: AcpiEnableSubsystem (flags),
7543
AcpiInitializeObjects (flags).  The flags parameter remains the
7544
same.
7545
 
7546
 
7547
2) Linux
7548
 
7549
Updated the ACPI utilities module to understand the new style of
7550
fully resolved package objects that are now returned from the core
7551
subsystem.  This eliminates errors of the form:
7552
 
7553
    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
7554
    acpi_utils-0430 [145] acpi_evaluate_reference:
7555
        Invalid element in package (not a device reference)
7556
 
7557
The method evaluation utility uses the new buffer allocation
7558
scheme instead of calling AcpiEvaluate Object twice.
7559
 
7560
Added support for ECDT. This allows the use of the Embedded
7561
 
7562
Controller before the namespace has been fully initialized, which
7563
is necessary for ACPI 2.0 support, and for some laptops to
7564
initialize properly. (Laptops using ECDT are still rare, so only
7565
limited testing was performed of the added functionality.)
7566
 
7567
Fixed memory leaks in the EC driver.
7568
 
7569
Eliminated a brittle code structure in acpi_bus_init().
7570
 
7571
Eliminated the acpi_evaluate() helper function in utils.c. It is
7572
no longer needed since acpi_evaluate_object can optionally
7573
allocate memory for the return object.
7574
 
7575
Implemented fix for keyboard hang when getting battery readings on
7576
some systems (Stephen White)
7577
 
7578
PCI IRQ routing update (Dominik Brodowski)
7579
 
7580
Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
7581
support
7582
 
7583
----------------------------------------
7584
11 June 2002.  Summary of changes for this release.
7585
 
7586
 
7587
1) ACPI CA Core Subsystem Version 20020611:
7588
 
7589
Fixed a reported problem where constants such as Zero and One
7590
appearing within _PRT packages were not handled correctly within
7591
the resource manager code.  Originally reported against the ASL
7592
compiler because the code generator now optimizes integers to
7593
their minimal AML representation (i.e. AML constants if possible.)
7594
The _PRT code now handles all AML constant opcodes correctly
7595
(Zero, One, Ones, Revision).
7596
 
7597
Fixed a problem with the Concatenate operator in the AML
7598
interpreter where a buffer result object was incorrectly marked as
7599
not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
7600
 
7601
All package sub-objects are now fully resolved before they are
7602
returned from the external ACPI interfaces.  This means that name
7603
strings are resolved to object handles, and constant operators
7604
(Zero, One, Ones, Revision) are resolved to Integers.
7605
 
7606
Implemented immediate resolution of the AML Constant opcodes
7607
(Zero, One, Ones, Revision) to Integer objects upon detection
7608
within the AML stream. This has simplified and reduced the
7609
generated code size of the subsystem by eliminating about 10
7610
switch statements for these constants (which previously were
7611
contained in Reference objects.)  The complicating issues are that
7612
the Zero opcode is used as a "placeholder" for unspecified
7613
optional target operands and stores to constants are defined to be
7614
no-ops.
7615
 
7616
Code and Data Size: Current core subsystem library sizes are shown
7617
below. These are the code and data sizes for the acpica.lib
7618
produced by the Microsoft Visual C++ 6.0 compiler, and these
7619
values do not include any ACPI driver or OSPM code.  The debug
7620
version of the code includes the debug output trace mechanism and
7621
has a larger code and data size.  Note that these values will vary
7622
depending on the efficiency of the compiler and the compiler
7623
options used during generation.
7624
 
7625
  Previous Release
7626
    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
7627
    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
7628
  Current Release:
7629
    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
7630
    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
7631
 
7632
 
7633
2) Linux
7634
 
7635
 
7636
Added preliminary support for obtaining _TRA data for PCI root
7637
bridges (Bjorn Helgaas).
7638
 
7639
 
7640
3) iASL Compiler Version X2046:
7641
 
7642
Fixed a problem where the "_DDN" reserved name was defined to be a
7643
control method with one argument.  There are no arguments, and
7644
_DDN does not have to be a control method.
7645
 
7646
Fixed a problem with the Linux version of the compiler where the
7647
source lines printed with error messages were the wrong lines.
7648
This turned out to be the "LF versus CR/LF" difference between
7649
Windows and Unix.  This appears to be the longstanding issue
7650
concerning listing output and error messages.
7651
 
7652
Fixed a problem with the Linux version of compiler where opcode
7653
names within error messages were wrong.  This was caused by a
7654
slight difference in the output of the Flex tool on Linux versus
7655
Windows.
7656
 
7657
Fixed a problem with the Linux compiler where the hex output files
7658
contained some garbage data caused by an internal buffer overrun.
7659
 
7660
 
7661
----------------------------------------
7662
17 May 2002.  Summary of changes for this release.
7663
 
7664
 
7665
1) ACPI CA Core Subsystem Version 20020517:
7666
 
7667
Implemented a workaround to an BIOS bug discovered on the HP
7668
OmniBook where the FADT revision number and the table size are
7669
inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
7670
behavior is to fallback to using only the ACPI 1.0 fields of the
7671
FADT if the table is too small to be a ACPI 2.0 table as claimed
7672
by the revision number.  Although this is a BIOS bug, this is a
7673
case where the workaround is simple enough and with no side
7674
effects, so it seemed prudent to add it.  A warning message is
7675
issued, however.
7676
 
7677
Implemented minimum size checks for the fixed-length ACPI tables -
7678
- the FADT and FACS, as well as consistency checks between the
7679
revision number and the table size.
7680
 
7681
Fixed a reported problem in the table override support where the
7682
new table pointer was incorrectly treated as a physical address
7683
instead of a logical address.
7684
 
7685
Eliminated the use of the AE_AML_ERROR exception and replaced it
7686
with more descriptive codes.
7687
 
7688
Fixed a problem where an exception would occur if an ASL Field was
7689
defined with no named Field Units underneath it (used by some
7690
index fields).
7691
 
7692
Code and Data Size: Current core subsystem library sizes are shown
7693
below.  These are the code and data sizes for the acpica.lib
7694
produced by the Microsoft Visual C++ 6.0 compiler, and these
7695
values do not include any ACPI driver or OSPM code.  The debug
7696
version of the code includes the debug output trace mechanism and
7697
has a larger code and data size.  Note that these values will vary
7698
depending on the efficiency of the compiler and the compiler
7699
options used during generation.
7700
 
7701
  Previous Release
7702
    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
7703
    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
7704
  Current Release:
7705
    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
7706
    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
7707
 
7708
 
7709
 
7710
2) Linux
7711
 
7712
Much work done on ACPI init (MADT and PCI IRQ routing support).
7713
(Paul D. and Dominik Brodowski)
7714
 
7715
Fix PCI IRQ-related panic on boot (Sam Revitch)
7716
 
7717
Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
7718
 
7719
Fix "MHz" typo (Dominik Brodowski)
7720
 
7721
Fix RTC year 2000 issue (Dominik Brodowski)
7722
 
7723
Preclude multiple button proc entries (Eric Brunet)
7724
 
7725
Moved arch-specific code out of include/platform/aclinux.h
7726
 
7727
3) iASL Compiler Version X2044:
7728
 
7729
Implemented error checking for the string used in the EISAID macro
7730
(Usually used in the definition of the _HID object.)  The code now
7731
strictly enforces the PnP format - exactly 7 characters, 3
7732
uppercase letters and 4 hex digits.
7733
 
7734
If a raw string is used in the definition of the _HID object
7735
(instead of the EISAID macro), the string must contain all
7736
alphanumeric characters (e.g., "*PNP0011" is not allowed because
7737
of the asterisk.)
7738
 
7739
Implemented checking for invalid use of ACPI reserved names for
7740
most of the name creation operators (Name, Device, Event, Mutex,
7741
OperationRegion, PowerResource, Processor, and ThermalZone.)
7742
Previously, this check was only performed for control methods.
7743
 
7744
Implemented an additional check on the Name operator to emit an
7745
error if a reserved name that must be implemented in ASL as a
7746
control method is used.  We know that a reserved name must be a
7747
method if it is defined with input arguments.
7748
 
7749
The warning emitted when a namespace object reference is not found
7750
during the cross reference phase has been changed into an error.
7751
The "External" directive should be used for names defined in other
7752
modules.
7753
 
7754
 
7755
4) Tools and Utilities
7756
 
7757
The 16-bit tools (adump16 and aexec16) have been regenerated and
7758
tested.
7759
 
7760
Fixed a problem with the output of both acpidump and adump16 where
7761
the indentation of closing parentheses and brackets was not
7762
 
7763
aligned properly with the parent block.
7764
 
7765
 
7766
----------------------------------------
7767
03 May 2002.  Summary of changes for this release.
7768
 
7769
 
7770
1) ACPI CA Core Subsystem Version 20020503:
7771
 
7772
Added support a new OSL interface that allows the host operating
7773
 
7774
system software to override the DSDT found in the firmware -
7775
AcpiOsTableOverride.  With this interface, the OSL can examine the
7776
version of the firmware DSDT and replace it with a different one
7777
if desired.
7778
 
7779
Added new external interfaces for accessing ACPI registers from
7780
device drivers and other system software - AcpiGetRegister and
7781
AcpiSetRegister.  This was simply an externalization of the
7782
existing AcpiHwBitRegister interfaces.
7783
 
7784
Fixed a regression introduced in the previous build where the
7785
ASL/AML CreateField operator always returned an error,
7786
"destination must be a NS Node".
7787
 
7788
Extended the maximum time (before failure) to successfully enable
7789
ACPI mode to 3 seconds.
7790
 
7791
Code and Data Size: Current core subsystem library sizes are shown
7792
below.  These are the code and data sizes for the acpica.lib
7793
produced by the Microsoft Visual C++ 6.0 compiler, and these
7794
values do not include any ACPI driver or OSPM code.  The debug
7795
version of the code includes the debug output trace mechanism and
7796
has a larger code and data size.  Note that these values will vary
7797
depending on the efficiency of the compiler and the compiler
7798
options used during generation.
7799
 
7800
  Previous Release
7801
    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
7802
    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
7803
  Current Release:
7804
    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
7805
    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
7806
 
7807
 
7808
2) Linux
7809
 
7810
Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
7811
free. While 3 out of 4 of our in-house systems work fine, the last
7812
one still hangs when testing the LAPIC timer.
7813
 
7814
Renamed many files in 2.5 kernel release to omit "acpi_" from the
7815
name.
7816
 
7817
Added warning on boot for Presario 711FR.
7818
 
7819
Sleep improvements (Pavel Machek)
7820
 
7821
ACPI can now be built without CONFIG_PCI enabled.
7822
 
7823
IA64: Fixed memory map functions (JI Lee)
7824
 
7825
 
7826
3) iASL Compiler Version X2043:
7827
 
7828
Added support to allow the compiler to be integrated into the MS
7829
VC++ development environment for one-button compilation of single
7830
files or entire projects -- with error-to-source-line mapping.
7831
 
7832
Implemented support for compile-time constant folding for the
7833
Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
7834
specification.  This allows the ASL writer to use expressions
7835
instead of Integer/Buffer/String constants in terms that must
7836
evaluate to constants at compile time and will also simplify the
7837
emitted AML in any such sub-expressions that can be folded
7838
(evaluated at compile-time.)  This increases the size of the
7839
compiler significantly because a portion of the ACPI CA AML
7840
interpreter is included within the compiler in order to pre-
7841
evaluate constant expressions.
7842
 
7843
 
7844
Fixed a problem with the "Unicode" ASL macro that caused the
7845
compiler to fault.  (This macro is used in conjunction with the
7846
_STR reserved name.)
7847
 
7848
Implemented an AML opcode optimization to use the Zero, One, and
7849
Ones opcodes where possible to further reduce the size of integer
7850
constants and thus reduce the overall size of the generated AML
7851
code.
7852
 
7853
Implemented error checking for new reserved terms for ACPI version
7854
2.0A.
7855
 
7856
Implemented the -qr option to display the current list of ACPI
7857
reserved names known to the compiler.
7858
 
7859
Implemented the -qc option to display the current list of ASL
7860
operators that are allowed within constant expressions and can
7861
therefore be folded at compile time if the operands are constants.
7862
 
7863
 
7864
4) Documentation
7865
 
7866
Updated the Programmer's Reference for new interfaces, data types,
7867
and memory allocation model options.
7868
 
7869
Updated the iASL Compiler User Reference to apply new format and
7870
add information about new features and options.
7871
 
7872
----------------------------------------
7873
19 April 2002.  Summary of changes for this release.
7874
 
7875
1) ACPI CA Core Subsystem Version 20020419:
7876
 
7877
The source code base for the Core Subsystem has been completely
7878
cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
7879
versions.  The Lint option files used are included in the
7880
/acpi/generate/lint directory.
7881
 
7882
Implemented enhanced status/error checking across the entire
7883
Hardware manager subsystem.  Any hardware errors (reported from
7884
the OSL) are now bubbled up and will abort a running control
7885
method.
7886
 
7887
 
7888
Fixed a problem where the per-ACPI-table integer width (32 or 64)
7889
was stored only with control method nodes, causing a fault when
7890
non-control method code was executed during table loading.  The
7891
solution implemented uses a global variable to indicate table
7892
width across the entire ACPI subsystem.  Therefore, ACPI CA does
7893
not support mixed integer widths across different ACPI tables
7894
(DSDT, SSDT).
7895
 
7896
Fixed a problem where NULL extended fields (X fields) in an ACPI
7897
2.0 ACPI FADT caused the table load to fail.  Although the
7898
existing ACPI specification is a bit fuzzy on this topic, the new
7899
behavior is to fall back on a ACPI 1.0 field if the corresponding
7900
ACPI 2.0 X field is zero (even though the table revision indicates
7901
a full ACPI 2.0 table.)  The ACPI specification will be updated to
7902
clarify this issue.
7903
 
7904
Fixed a problem with the SystemMemory operation region handler
7905
where memory was always accessed byte-wise even if the AML-
7906
specified access width was larger than a byte.  This caused
7907
problems on systems with memory-mapped I/O.  Memory is now
7908
accessed with the width specified.  On systems that do not support
7909
non-aligned transfers, a check is made to guarantee proper address
7910
alignment before proceeding in order to avoid an AML-caused
7911
alignment fault within the kernel.
7912
 
7913
 
7914
Fixed a problem with the ExtendedIrq resource where only one byte
7915
of the 4-byte Irq field was extracted.
7916
 
7917
Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
7918
function was out of date and required a rewrite.
7919
 
7920
Code and Data Size: Current core subsystem library sizes are shown
7921
below.  These are the code and data sizes for the acpica.lib
7922
produced by the Microsoft Visual C++ 6.0 compiler, and these
7923
values do not include any ACPI driver or OSPM code.  The debug
7924
version of the code includes the debug output trace mechanism and
7925
has a larger code and data size.  Note that these values will vary
7926
depending on the efficiency of the compiler and the compiler
7927
options used during generation.
7928
 
7929
  Previous Release
7930
    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
7931
    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
7932
  Current Release:
7933
    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
7934
    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
7935
 
7936
 
7937
2) Linux
7938
 
7939
PCI IRQ routing fixes (Dominik Brodowski)
7940
 
7941
 
7942
3) iASL Compiler Version X2042:
7943
 
7944
Implemented an additional compile-time error check for a field
7945
unit whose size + minimum access width would cause a run-time
7946
access beyond the end-of-region.  Previously, only the field size
7947
itself was checked.
7948
 
7949
The Core subsystem and iASL compiler now share a common parse
7950
object in preparation for compile-time evaluation of the type
7951
3/4/5 ASL operators.
7952
 
7953
 
7954
----------------------------------------
7955
Summary of changes for this release: 03_29_02
7956
 
7957
1) ACPI CA Core Subsystem Version 20020329:
7958
 
7959
Implemented support for late evaluation of TermArg operands to
7960
Buffer and Package objects.  This allows complex expressions to be
7961
used in the declarations of these object types.
7962
 
7963
Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
7964
1.0, if the field was larger than 32 bits, it was returned as a
7965
buffer - otherwise it was returned as an integer.  In ACPI 2.0,
7966
the field is returned as a buffer only if the field is larger than
7967
64 bits.  The TableRevision is now considered when making this
7968
conversion to avoid incompatibility with existing ASL code.
7969
 
7970
Implemented logical addressing for AcpiOsGetRootPointer.  This
7971
allows an RSDP with either a logical or physical address.  With
7972
this support, the host OS can now override all ACPI tables with
7973
one logical RSDP.  Includes implementation of  "typed" pointer
7974
support to allow a common data type for both physical and logical
7975
pointers internally.  This required a change to the
7976
AcpiOsGetRootPointer interface.
7977
 
7978
Implemented the use of ACPI 2.0 Generic Address Structures for all
7979
GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
7980
mapped I/O for these ACPI features.
7981
 
7982
Initialization now ignores not only non-required tables (All
7983
tables other than the FADT, FACS, DSDT, and SSDTs), but also does
7984
not validate the table headers of unrecognized tables.
7985
 
7986
Fixed a problem where a notify handler could only be
7987
installed/removed on an object of type Device.  All "notify"
7988
 
7989
objects are now supported -- Devices, Processor, Power, and
7990
Thermal.
7991
 
7992
Removed most verbosity from the ACPI_DB_INFO debug level.  Only
7993
critical information is returned when this debug level is enabled.
7994
 
7995
Code and Data Size: Current core subsystem library sizes are shown
7996
below.  These are the code and data sizes for the acpica.lib
7997
produced by the Microsoft Visual C++ 6.0 compiler, and these
7998
values do not include any ACPI driver or OSPM code.  The debug
7999
version of the code includes the debug output trace mechanism and
8000
has a larger code and data size.  Note that these values will vary
8001
depending on the efficiency of the compiler and the compiler
8002
options used during generation.
8003
 
8004
  Previous Release
8005
    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
8006
    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
8007
  Current Release:
8008
    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
8009
    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
8010
 
8011
 
8012
2) Linux:
8013
 
8014
The processor driver (acpi_processor.c) now fully supports ACPI
8015
2.0-based processor performance control (e.g. Intel(R)
8016
SpeedStep(TM) technology) Note that older laptops that only have
8017
the Intel "applet" interface are not supported through this.  The
8018
'limit' and 'performance' interface (/proc) are fully functional.
8019
[Note that basic policy for controlling performance state
8020
transitions will be included in the next version of ospmd.]  The
8021
idle handler was modified to more aggressively use C2, and PIIX4
8022
errata handling underwent a complete overhaul (big thanks to
8023
Dominik Brodowski).
8024
 
8025
Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
8026
based devices in the ACPI namespace are now dynamically bound
8027
(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
8028
This allows, among other things, ACPI to resolve bus numbers for
8029
subordinate PCI bridges.
8030
 
8031
Enhanced PCI IRQ routing to get the proper bus number for _PRT
8032
entries defined underneath PCI bridges.
8033
 
8034
Added IBM 600E to bad bios list due to invalid _ADR value for
8035
PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
8036
 
8037
In the process of adding full MADT support (e.g. IOAPIC) for IA32
8038
(acpi.c, mpparse.c) -- stay tuned.
8039
 
8040
Added back visual differentiation between fixed-feature and
8041
control-method buttons in dmesg.  Buttons are also subtyped (e.g.
8042
button/power/PWRF) to simplify button identification.
8043
 
8044
We no longer use -Wno-unused when compiling debug. Please ignore
8045
any "_THIS_MODULE defined but not used" messages.
8046
 
8047
Can now shut down the system using "magic sysrq" key.
8048
 
8049
 
8050
3) iASL Compiler version 2041:
8051
 
8052
Fixed a problem where conversion errors for hex/octal/decimal
8053
constants were not reported.
8054
 
8055
Implemented a fix for the General Register template Address field.
8056
This field was 8 bits when it should be 64.
8057
 
8058
Fixed a problem where errors/warnings were no longer being emitted
8059
within the listing output file.
8060
 
8061
Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
8062
exactly 4 characters, alphanumeric only.
8063
 
8064
 
8065
 
8066
 
8067
----------------------------------------
8068
Summary of changes for this release: 03_08_02
8069
 
8070
 
8071
1) ACPI CA Core Subsystem Version 20020308:
8072
 
8073
Fixed a problem with AML Fields where the use of the "AccessAny"
8074
keyword could cause an interpreter error due to attempting to read
8075
or write beyond the end of the parent Operation Region.
8076
 
8077
Fixed a problem in the SystemMemory Operation Region handler where
8078
an attempt was made to map memory beyond the end of the region.
8079
This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
8080
errors on some Linux systems.
8081
 
8082
Fixed a problem where the interpreter/namespace "search to root"
8083
algorithm was not functioning for some object types.  Relaxed the
8084
internal restriction on the search to allow upsearches for all
8085
external object types as well as most internal types.
8086
 
8087
 
8088
2) Linux:
8089
 
8090
We now use safe_halt() macro versus individual calls to sti | hlt.
8091
 
8092
Writing to the processor limit interface should now work. "echo 1"
8093
will increase the limit, 2 will decrease, and 0 will reset to the
8094
 
8095
default.
8096
 
8097
 
8098
3) ASL compiler:
8099
 
8100
Fixed segfault on Linux version.
8101
 
8102
 
8103
----------------------------------------
8104
Summary of changes for this release: 02_25_02
8105
 
8106
1) ACPI CA Core Subsystem:
8107
 
8108
 
8109
Fixed a problem where the GPE bit masks were not initialized
8110
properly, causing erratic GPE behavior.
8111
 
8112
Implemented limited support for multiple calling conventions.  The
8113
code can be generated with either the VPL (variable parameter
8114
list, or "C") convention, or the FPL (fixed parameter list, or
8115
"Pascal") convention.  The core subsystem is about 3.4% smaller
8116
when generated with FPL.
8117
 
8118
 
8119
2) Linux
8120
 
8121
Re-add some /proc/acpi/event functionality that was lost during
8122
the rewrite
8123
 
8124
Resolved issue with /proc events for fixed-feature buttons showing
8125
up as the system device.
8126
 
8127
Fixed checks on C2/C3 latencies to be inclusive of maximum values.
8128
 
8129
Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
8130
 
8131
Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
8132
 
8133
Fixed limit interface & usage to fix bugs with passive cooling
8134
hysterisis.
8135
 
8136
Restructured PRT support.
8137
 
8138
 
8139
----------------------------------------
8140
Summary of changes for this label: 02_14_02
8141
 
8142
 
8143
1) ACPI CA Core Subsystem:
8144
 
8145
Implemented support in AcpiLoadTable to allow loading of FACS and
8146
FADT tables.
8147
 
8148
Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
8149
been removed.  All 64-bit platforms should be migrated to the ACPI
8150
2.0 tables.  The actbl71.h header has been removed from the source
8151
tree.
8152
 
8153
All C macros defined within the subsystem have been prefixed with
8154
"ACPI_" to avoid collision with other system include files.
8155
 
8156
Removed the return value for the two AcpiOsPrint interfaces, since
8157
it is never used and causes lint warnings for ignoring the return
8158
value.
8159
 
8160
Added error checking to all internal mutex acquire and release
8161
calls.  Although a failure from one of these interfaces is
8162
probably a fatal system error, these checks will cause the
8163
immediate abort of the currently executing method or interface.
8164
 
8165
Fixed a problem where the AcpiSetCurrentResources interface could
8166
fault.  This was a side effect of the deployment of the new memory
8167
allocation model.
8168
 
8169
Fixed a couple of problems with the Global Lock support introduced
8170
in the last major build.  The "common" (1.0/2.0) internal FACS was
8171
being overwritten with the FACS signature and clobbering the
8172
Global Lock pointer.  Also, the actual firmware FACS was being
8173
unmapped after construction of the "common" FACS, preventing
8174
access to the actual Global Lock field within it.  The "common"
8175
internal FACS is no longer installed as an actual ACPI table; it
8176
is used simply as a global.
8177
 
8178
Code and Data Size: Current core subsystem library sizes are shown
8179
below.  These are the code and data sizes for the acpica.lib
8180
produced by the Microsoft Visual C++ 6.0 compiler, and these
8181
values do not include any ACPI driver or OSPM code.  The debug
8182
version of the code includes the debug output trace mechanism and
8183
has a larger code and data size.  Note that these values will vary
8184
depending on the efficiency of the compiler and the compiler
8185
options used during generation.
8186
 
8187
  Previous Release (02_07_01)
8188
    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
8189
    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
8190
  Current Release:
8191
    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
8192
    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
8193
 
8194
 
8195
2) Linux
8196
 
8197
Updated Linux-specific code for core macro and OSL interface
8198
changes described above.
8199
 
8200
Improved /proc/acpi/event. It now can be opened only once and has
8201
proper poll functionality.
8202
 
8203
Fixed and restructured power management (acpi_bus).
8204
 
8205
Only create /proc "view by type" when devices of that class exist.
8206
 
8207
Fixed "charging/discharging" bug (and others) in acpi_battery.
8208
 
8209
Improved thermal zone code.
8210
 
8211
 
8212
3) ASL Compiler, version X2039:
8213
 
8214
 
8215
Implemented the new compiler restriction on ASL String hex/octal
8216
escapes to non-null, ASCII values.  An error results if an invalid
8217
value is used.  (This will require an ACPI 2.0 specification
8218
change.)
8219
 
8220
AML object labels that are output to the optional C and ASM source
8221
are now prefixed with both the ACPI table signature and table ID
8222
to help guarantee uniqueness within a large BIOS project.
8223
 
8224
 
8225
----------------------------------------
8226
Summary of changes for this label: 02_01_02
8227
 
8228
1) ACPI CA Core Subsystem:
8229
 
8230
ACPI 2.0 support is complete in the entire Core Subsystem and the
8231
ASL compiler. All new ACPI 2.0 operators are implemented and all
8232
other changes for ACPI 2.0 support are complete.  With
8233
simultaneous code and data optimizations throughout the subsystem,
8234
ACPI 2.0 support has been implemented with almost no additional
8235
cost in terms of code and data size.
8236
 
8237
Implemented a new mechanism for allocation of return buffers.  If
8238
the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
8239
be allocated on behalf of the caller.  Consolidated all return
8240
buffer validation and allocation to a common procedure.  Return
8241
buffers will be allocated via the primary OSL allocation interface
8242
since it appears that a separate pool is not needed by most users.
8243
If a separate pool is required for these buffers, the caller can
8244
still use the original mechanism and pre-allocate the buffer(s).
8245
 
8246
Implemented support for string operands within the DerefOf
8247
operator.
8248
 
8249
Restructured the Hardware and Event managers to be table driven,
8250
simplifying the source code and reducing the amount of generated
8251
code.
8252
 
8253
Split the common read/write low-level ACPI register bitfield
8254
procedure into a separate read and write, simplifying the code
8255
considerably.
8256
 
8257
Obsoleted the AcpiOsCallocate OSL interface.  This interface was
8258
used only a handful of times and didn't have enough critical mass
8259
for a separate interface.  Replaced with a common calloc procedure
8260
in the core.
8261
 
8262
Fixed a reported problem with the GPE number mapping mechanism
8263
that allows GPE1 numbers to be non-contiguous with GPE0.
8264
Reorganized the GPE information and shrunk a large array that was
8265
originally large enough to hold info for all possible GPEs (256)
8266
to simply large enough to hold all GPEs up to the largest GPE
8267
number on the machine.
8268
 
8269
Fixed a reported problem with resource structure alignment on 64-
8270
bit platforms.
8271
 
8272
Changed the AcpiEnableEvent and AcpiDisableEvent external
8273
interfaces to not require any flags for the common case of
8274
enabling/disabling a GPE.
8275
 
8276
Implemented support to allow a "Notify" on a Processor object.
8277
 
8278
Most TBDs in comments within the source code have been resolved
8279
and eliminated.
8280
 
8281
 
8282
Fixed a problem in the interpreter where a standalone parent
8283
prefix (^) was not handled correctly in the interpreter and
8284
debugger.
8285
 
8286
Removed obsolete and unnecessary GPE save/restore code.
8287
 
8288
Implemented Field support in the ASL Load operator.  This allows a
8289
table to be loaded from a named field, in addition to loading a
8290
table directly from an Operation Region.
8291
 
8292
Implemented timeout and handle support in the external Global Lock
8293
interfaces.
8294
 
8295
Fixed a problem in the AcpiDump utility where pathnames were no
8296
longer being generated correctly during the dump of named objects.
8297
 
8298
Modified the AML debugger to give a full display of if/while
8299
predicates instead of just one AML opcode at a time.  (The
8300
predicate can have several nested ASL statements.)  The old method
8301
was confusing during single stepping.
8302
 
8303
Code and Data Size: Current core subsystem library sizes are shown
8304
below. These are the code and data sizes for the acpica.lib
8305
produced by the Microsoft Visual C++ 6.0 compiler, and these
8306
values do not include any ACPI driver or OSPM code.  The debug
8307
version of the code includes the debug output trace mechanism and
8308
has a larger code and data size.  Note that these values will vary
8309
depending on the efficiency of the compiler and the compiler
8310
options used during generation.
8311
 
8312
  Previous Release (12_18_01)
8313
     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
8314
     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
8315
   Current Release:
8316
     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
8317
     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
8318
 
8319
2) Linux
8320
 
8321
 Implemented fix for PIIX reverse throttling errata (Processor
8322
driver)
8323
 
8324
Added new Limit interface (Processor and Thermal drivers)
8325
 
8326
New thermal policy (Thermal driver)
8327
 
8328
Many updates to /proc
8329
 
8330
Battery "low" event support (Battery driver)
8331
 
8332
Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
8333
 
8334
IA32 - IA64 initialization unification, no longer experimental
8335
 
8336
Menuconfig options redesigned
8337
 
8338
3) ASL Compiler, version X2037:
8339
 
8340
Implemented several new output features to simplify integration of
8341
AML code into  firmware: 1) Output the AML in C source code with
8342
labels for each named ASL object.  The    original ASL source code
8343
is interleaved as C comments. 2) Output the AML in ASM source code
8344
with labels and interleaved ASL    source. 3) Output the AML in
8345
raw hex table form, in either C or ASM.
8346
 
8347
Implemented support for optional string parameters to the
8348
LoadTable operator.
8349
 
8350
Completed support for embedded escape sequences within string
8351
literals.  The compiler now supports all single character escapes
8352
as well as the Octal and Hex escapes.  Note: the insertion of a
8353
null byte into a string literal (via the hex/octal escape) causes
8354
the string to be immediately terminated.  A warning is issued.
8355
 
8356
Fixed a problem where incorrect AML was generated for the case
8357
where an ASL namepath consists of a single parent prefix (
8358
 
8359
) with no trailing name segments.
8360
 
8361
The compiler has been successfully generated with a 64-bit C
8362
compiler.
8363
 
8364
 
8365
 
8366
 
8367
----------------------------------------
8368
Summary of changes for this label: 12_18_01
8369
 
8370
1) Linux
8371
 
8372
Enhanced blacklist with reason and severity fields. Any table's
8373
signature may now be used to identify a blacklisted system.
8374
 
8375
Call _PIC control method to inform the firmware which interrupt
8376
model the OS is using. Turn on any disabled link devices.
8377
 
8378
Cleaned up busmgr /proc error handling (Andreas Dilger)
8379
 
8380
 2) ACPI CA Core Subsystem:
8381
 
8382
Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
8383
while loop)
8384
 
8385
Completed implementation of the ACPI 2.0 "Continue",
8386
"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
8387
operators.  All new ACPI 2.0 operators are now implemented in both
8388
the ASL compiler and the AML interpreter.  The only remaining ACPI
8389
2.0 task is support for the String data type in the DerefOf
8390
operator.  Fixed a problem with AcquireMutex where the status code
8391
was lost if the caller had to actually wait for the mutex.
8392
 
8393
Increased the maximum ASL Field size from 64K bits to 4G bits.
8394
 
8395
Completed implementation of the external Global Lock interfaces --
8396
AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
8397
Handler parameters were added.
8398
 
8399
Completed another pass at removing warnings and issues when
8400
compiling with 64-bit compilers.  The code now compiles cleanly
8401
with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
8402
add and subtract (diff) macros have changed considerably.
8403
 
8404
 
8405
Created and deployed a new ACPI_SIZE type that is 64-bits wide on
8406
64-bit platforms, 32-bits on all others.  This type is used
8407
wherever memory allocation and/or the C sizeof() operator is used,
8408
and affects the OSL memory allocation interfaces AcpiOsAllocate
8409
and AcpiOsCallocate.
8410
 
8411
Implemented sticky user breakpoints in the AML debugger.
8412
 
8413
Code and Data Size: Current core subsystem library sizes are shown
8414
below. These are the code and data sizes for the acpica.lib
8415
produced by the Microsoft Visual C++ 6.0 compiler, and these
8416
values do not include any ACPI driver or OSPM code.  The debug
8417
version of the code includes the debug output trace mechanism and
8418
has a larger code and data size. Note that these values will vary
8419
depending on the efficiency of the compiler and the compiler
8420
options used during generation.
8421
 
8422
  Previous Release (12_05_01)
8423
     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
8424
     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
8425
   Current Release:
8426
     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
8427
     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
8428
 
8429
 3) ASL Compiler, version X2034:
8430
 
8431
Now checks for (and generates an error if detected) the use of a
8432
Break or Continue statement without an enclosing While statement.
8433
 
8434
 
8435
Successfully generated the compiler with the Intel 64-bit C
8436
compiler.
8437
 
8438
 ----------------------------------------
8439
Summary of changes for this label: 12_05_01
8440
 
8441
 1) ACPI CA Core Subsystem:
8442
 
8443
The ACPI 2.0 CopyObject operator is fully implemented.  This
8444
operator creates a new copy of an object (and is also used to
8445
bypass the "implicit conversion" mechanism of the Store operator.)
8446
 
8447
The ACPI 2.0 semantics for the SizeOf operator are fully
8448
implemented.  The change is that performing a SizeOf on a
8449
reference object causes an automatic dereference of the object to
8450
tha actual value before the size is evaluated. This behavior was
8451
undefined in ACPI 1.0.
8452
 
8453
The ACPI 2.0 semantics for the Extended IRQ resource descriptor
8454
have been implemented.  The interrupt polarity and mode are now
8455
independently set.
8456
 
8457
Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
8458
appearing in Package objects were not properly converted to
8459
integers when the internal Package was converted to an external
8460
object (via the AcpiEvaluateObject interface.)
8461
 
8462
Fixed a problem with the namespace object deletion mechanism for
8463
objects created by control methods.  There were two parts to this
8464
problem: 1) Objects created during the initialization phase method
8465
parse were not being deleted, and 2) The object owner ID mechanism
8466
to track objects was broken.
8467
 
8468
Fixed a problem where the use of the ASL Scope operator within a
8469
control method would result in an invalid opcode exception.
8470
 
8471
Fixed a problem introduced in the previous label where the buffer
8472
length required for the _PRT structure was not being returned
8473
correctly.
8474
 
8475
Code and Data Size: Current core subsystem library sizes are shown
8476
below. These are the code and data sizes for the acpica.lib
8477
produced by the Microsoft Visual C++ 6.0 compiler, and these
8478
values do not include any ACPI driver or OSPM code.  The debug
8479
version of the code includes the debug output trace mechanism and
8480
has a larger code and data size.  Note that these values will vary
8481
depending on the efficiency of the compiler and the compiler
8482
options used during generation.
8483
 
8484
  Previous Release (11_20_01)
8485
     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
8486
     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
8487
 
8488
  Current Release:
8489
     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
8490
     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
8491
 
8492
 2) Linux:
8493
 
8494
Updated all files to apply cleanly against 2.4.16.
8495
 
8496
Added basic PCI Interrupt Routing Table (PRT) support for IA32
8497
(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
8498
version supports both static and dyanmic PRT entries, but dynamic
8499
entries are treated as if they were static (not yet
8500
reconfigurable).  Architecture- specific code to use this data is
8501
absent on IA32 but should be available shortly.
8502
 
8503
Changed the initialization sequence to start the ACPI interpreter
8504
(acpi_init) prior to initialization of the PCI driver (pci_init)
8505
in init/main.c.  This ordering is required to support PRT and
8506
facilitate other (future) enhancement.  A side effect is that the
8507
ACPI bus driver and certain device drivers can no longer be loaded
8508
as modules.
8509
 
8510
Modified the 'make menuconfig' options to allow PCI Interrupt
8511
Routing support to be included without the ACPI Bus and other
8512
device drivers.
8513
 
8514
 3) ASL Compiler, version X2033:
8515
 
8516
Fixed some issues with the use of the new CopyObject and
8517
DataTableRegion operators.  Both are fully functional.
8518
 
8519
 ----------------------------------------
8520
Summary of changes for this label: 11_20_01
8521
 
8522
 20 November 2001.  Summary of changes for this release.
8523
 
8524
 1) ACPI CA Core Subsystem:
8525
 
8526
Updated Index support to match ACPI 2.0 semantics.  Storing a
8527
Integer, String, or Buffer to an Index of a Buffer will store only
8528
the least-significant byte of the source to the Indexed buffer
8529
byte.  Multiple writes are not performed.
8530
 
8531
Fixed a problem where the access type used in an AccessAs ASL
8532
operator was not recorded correctly into the field object.
8533
 
8534
Fixed a problem where ASL Event objects were created in a
8535
signalled state. Events are now created in an unsignalled state.
8536
 
8537
The internal object cache is now purged after table loading and
8538
initialization to reduce the use of dynamic kernel memory -- on
8539
the assumption that object use is greatest during the parse phase
8540
of the entire table (versus the run-time use of individual control
8541
methods.)
8542
 
8543
ACPI 2.0 variable-length packages are now fully operational.
8544
 
8545
Code and Data Size: Code and Data optimizations have permitted new
8546
feature development with an actual reduction in the library size.
8547
Current core subsystem library sizes are shown below.  These are
8548
the code and data sizes for the acpica.lib produced by the
8549
Microsoft Visual C++ 6.0 compiler, and these values do not include
8550
any ACPI driver or OSPM code.  The debug version of the code
8551
includes the debug output trace mechanism and has a larger code
8552
and data size.  Note that these values will vary depending on the
8553
efficiency of the compiler and the compiler options used during
8554
generation.
8555
 
8556
  Previous Release (11_09_01):
8557
     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
8558
     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
8559
 
8560
  Current Release:
8561
     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
8562
     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
8563
 
8564
 2) Linux:
8565
 
8566
Enhanced the ACPI boot-time initialization code to allow the use
8567
of Local APIC tables for processor enumeration on IA-32, and to
8568
pave the way for a fully MPS-free boot (on SMP systems) in the
8569
near future.  This functionality replaces
8570
arch/i386/kernel/acpitables.c, which was introduced in an earlier
8571
2.4.15-preX release.  To enable this feature you must add
8572
"acpi_boot=on" to the kernel command line -- see the help entry
8573
for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
8574
the works...
8575
 
8576
Restructured the configuration options to allow boot-time table
8577
parsing support without inclusion of the ACPI Interpreter (and
8578
other) code.
8579
 
8580
NOTE: This release does not include fixes for the reported events,
8581
power-down, and thermal passive cooling issues (coming soon).
8582
 
8583
 3) ASL Compiler:
8584
 
8585
Added additional typechecking for Fields within restricted access
8586
Operation Regions.  All fields within EC and CMOS regions must be
8587
declared with ByteAcc. All fields withing SMBus regions must be
8588
declared with the BufferAcc access type.
8589
 
8590
Fixed a problem where the listing file output of control methods
8591
no longer interleaved the actual AML code with the ASL source
8592
code.
8593
 
8594
 
8595
 
8596
 
8597
----------------------------------------
8598
Summary of changes for this label: 11_09_01
8599
 
8600
1) ACPI CA Core Subsystem:
8601
 
8602
Implemented ACPI 2.0-defined support for writes to fields with a
8603
Buffer, String, or Integer source operand that is smaller than the
8604
target field. In these cases, the source operand is zero-extended
8605
to fill the target field.
8606
 
8607
Fixed a problem where a Field starting bit offset (within the
8608
parent operation region) was calculated incorrectly if the
8609
 
8610
alignment of the field differed from the access width.  This
8611
affected CreateWordField, CreateDwordField, CreateQwordField, and
8612
possibly other fields that use the "AccessAny" keyword.
8613
 
8614
Fixed a problem introduced in the 11_02_01 release where indirect
8615
stores through method arguments did not operate correctly.
8616
 
8617
2) Linux:
8618
 
8619
Implemented boot-time ACPI table parsing support
8620
(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
8621
facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
8622
legacy BIOS interfaces (e.g. MPS) for the configuration of system
8623
processors, memory, and interrupts during setup_arch().  Note that
8624
this patch does not include the required architecture-specific
8625
changes required to apply this information -- subsequent patches
8626
will be posted for both IA32 and IA64 to achieve this.
8627
 
8628
Added low-level sleep support for IA32 platforms, courtesy of Pat
8629
Mochel. This allows IA32 systems to transition to/from various
8630
sleeping states (e.g. S1, S3), although the lack of a centralized
8631
driver model and power-manageable drivers will prevent its
8632
(successful) use on most systems.
8633
 
8634
Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
8635
submenu, unified IA32 and IA64 options, added new "Boot using ACPI
8636
tables" option, etc.
8637
 
8638
Increased the default timeout for the EC driver from 1ms to 10ms
8639
(1000 cycles of 10us) to try to address AE_TIME errors during EC
8640
transactions.
8641
 
8642
 ----------------------------------------
8643
Summary of changes for this label: 11_02_01
8644
 
8645
1) ACPI CA Core Subsystem:
8646
 
8647
ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
8648
(QWordAcc keyword). All ACPI 2.0 64-bit support is now
8649
implemented.
8650
 
8651
OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
8652
changes to support ACPI 2.0 Qword field access.  Read/Write
8653
PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
8654
accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
8655
the value parameter for the address space handler interface is now
8656
an ACPI_INTEGER.  OSL implementations of these interfaces must now
8657
handle the case where the Width parameter is 64.
8658
 
8659
Index Fields: Fixed a problem where unaligned bit assembly and
8660
disassembly for IndexFields was not supported correctly.
8661
 
8662
Index and Bank Fields:  Nested Index and Bank Fields are now
8663
supported. During field access, a check is performed to ensure
8664
that the value written to an Index or Bank register is not out of
8665
the range of the register.  The Index (or Bank) register is
8666
written before each access to the field data. Future support will
8667
include allowing individual IndexFields to be wider than the
8668
DataRegister width.
8669
 
8670
Fields: Fixed a problem where the AML interpreter was incorrectly
8671
attempting to write beyond the end of a Field/OpRegion.  This was
8672
a boundary case that occurred when a DWORD field was written to a
8673
BYTE access OpRegion, forcing multiple writes and causing the
8674
interpreter to write one datum too many.
8675
 
8676
Fields: Fixed a problem with Field/OpRegion access where the
8677
starting bit address of a field was incorrectly calculated if the
8678
current access type was wider than a byte (WordAcc, DwordAcc, or
8679
QwordAcc).
8680
 
8681
Fields: Fixed a problem where forward references to individual
8682
FieldUnits (individual Field names within a Field definition) were
8683
not resolved during the AML table load.
8684
 
8685
Fields: Fixed a problem where forward references from a Field
8686
definition to the parent Operation Region definition were not
8687
resolved during the AML table load.
8688
 
8689
Fields: Duplicate FieldUnit names within a scope are now detected
8690
during AML table load.
8691
 
8692
Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
8693
returned an incorrect name for the root node.
8694
 
8695
Code and Data Size: Code and Data optimizations have permitted new
8696
feature development with an actual reduction in the library size.
8697
Current core subsystem library sizes are shown below.  These are
8698
the code and data sizes for the acpica.lib produced by the
8699
Microsoft Visual C++ 6.0 compiler, and these values do not include
8700
any ACPI driver or OSPM code.  The debug version of the code
8701
includes the debug output trace mechanism and has a larger code
8702
and data size.  Note that these values will vary depending on the
8703
efficiency of the compiler and the compiler options used during
8704
generation.
8705
 
8706
  Previous Release (10_18_01):
8707
     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
8708
     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
8709
 
8710
  Current Release:
8711
     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
8712
     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
8713
 
8714
 2) Linux:
8715
 
8716
Improved /proc processor output (Pavel Machek) Re-added
8717
MODULE_LICENSE("GPL") to all modules.
8718
 
8719
 3) ASL Compiler version X2030:
8720
 
8721
Duplicate FieldUnit names within a scope are now detected and
8722
flagged as errors.
8723
 
8724
 4) Documentation:
8725
 
8726
Programmer Reference updated to reflect OSL and address space
8727
handler interface changes described above.
8728
 
8729
----------------------------------------
8730
Summary of changes for this label: 10_18_01
8731
 
8732
ACPI CA Core Subsystem:
8733
 
8734
Fixed a problem with the internal object reference count mechanism
8735
that occasionally caused premature object deletion. This resolves
8736
all of the outstanding problem reports where an object is deleted
8737
in the middle of an interpreter evaluation.  Although this problem
8738
only showed up in rather obscure cases, the solution to the
8739
problem involved an adjustment of all reference counts involving
8740
objects attached to namespace nodes.
8741
 
8742
Fixed a problem with Field support in the interpreter where
8743
writing to an aligned field whose length is an exact multiple (2
8744
or greater) of the field access granularity would cause an attempt
8745
to write beyond the end of the field.
8746
 
8747
The top level AML opcode execution functions within the
8748
interpreter have been renamed with a more meaningful and
8749
consistent naming convention.  The modules exmonad.c and
8750
exdyadic.c were eliminated.  New modules are exoparg1.c,
8751
exoparg2.c, exoparg3.c, and exoparg6.c.
8752
 
8753
Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
8754
 
8755
Fixed a problem where the AML debugger was causing some internal
8756
objects to not be deleted during subsystem termination.
8757
 
8758
Fixed a problem with the external AcpiEvaluateObject interface
8759
where the subsystem would fault if the named object to be
8760
evaluated refered to a constant such as Zero, Ones, etc.
8761
 
8762
Fixed a problem with IndexFields and BankFields where the
8763
subsystem would fault if the index, data, or bank registers were
8764
not defined in the same scope as the field itself.
8765
 
8766
Added printf format string checking for compilers that support
8767
this feature.  Corrected more than 50 instances of issues with
8768
format specifiers within invocations of ACPI_DEBUG_PRINT
8769
throughout the core subsystem code.
8770
 
8771
The ASL "Revision" operator now returns the ACPI support level
8772
implemented in the core - the value "2" since the ACPI 2.0 support
8773
is more than 50% implemented.
8774
 
8775
Enhanced the output of the AML debugger "dump namespace" command
8776
to output in a more human-readable form.
8777
 
8778
Current core subsystem library code sizes are shown below.  These
8779
 
8780
are the code and data sizes for the acpica.lib produced by the
8781
Microsoft Visual C++ 6.0 compiler, and these values do not include
8782
any ACPI driver or OSPM code.  The debug version of the code
8783
includes the full debug trace mechanism -- leading to a much
8784
 
8785
larger code and data size.  Note that these values will vary
8786
depending on the efficiency of the compiler and the compiler
8787
options used during generation.
8788
 
8789
     Previous Label (09_20_01):
8790
     Non-Debug Version:    65K Code,     5K Data,     70K Total
8791
     Debug Version:       138K Code,    58K Data,    196K Total
8792
 
8793
     This Label:
8794
 
8795
     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
8796
     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
8797
 
8798
Linux:
8799
 
8800
Implemented a "Bad BIOS Blacklist" to track machines that have
8801
known ASL/AML problems.
8802
 
8803
Enhanced the /proc interface for the thermal zone driver and added
8804
support for _HOT (the critical suspend trip point).  The 'info'
8805
file now includes threshold/policy information, and allows setting
8806
of _SCP (cooling preference) and _TZP (polling frequency) values
8807
to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
8808
frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
8809
preference to the passive/quiet mode (if supported by the ASL).
8810
 
8811
Implemented a workaround for a gcc bug that resuted in an OOPs
8812
when loading the control method battery driver.
8813
 
8814
 ----------------------------------------
8815
Summary of changes for this label: 09_20_01
8816
 
8817
 ACPI CA Core Subsystem:
8818
 
8819
The AcpiEnableEvent and AcpiDisableEvent interfaces have been
8820
modified to allow individual GPE levels to be flagged as wake-
8821
enabled (i.e., these GPEs are to remain enabled when the platform
8822
sleeps.)
8823
 
8824
The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
8825
support wake-enabled GPEs.  This means that upon entering the
8826
sleep state, all GPEs that are not wake-enabled are disabled.
8827
When leaving the sleep state, these GPEs are reenabled.
8828
 
8829
A local double-precision divide/modulo module has been added to
8830
enhance portability to OS kernels where a 64-bit math library is
8831
not available.  The new module is "utmath.c".
8832
 
8833
Several optimizations have been made to reduce the use of CPU
8834
stack.  Originally over 2K, the maximum stack usage is now below
8835
2K at 1860  bytes (1.82k)
8836
 
8837
Fixed a problem with the AcpiGetFirmwareTable interface where the
8838
root table pointer was not mapped into a logical address properly.
8839
 
8840
Fixed a problem where a NULL pointer was being dereferenced in the
8841
interpreter code for the ASL Notify operator.
8842
 
8843
Fixed a problem where the use of the ASL Revision operator
8844
returned an error. This operator now returns the current version
8845
of the ACPI CA core subsystem.
8846
 
8847
Fixed a problem where objects passed as control method parameters
8848
to AcpiEvaluateObject were always deleted at method termination.
8849
However, these objects may end up being stored into the namespace
8850
by the called method.  The object reference count mechanism was
8851
applied to these objects instead of a force delete.
8852
 
8853
Fixed a problem where static strings or buffers (contained in the
8854
AML code) that are declared as package elements within the ASL
8855
code could cause a fault because the interpreter would attempt to
8856
delete them.  These objects are now marked with the "static
8857
object" flag to prevent any attempt to delete them.
8858
 
8859
Implemented an interpreter optimization to use operands directly
8860
from the state object instead of extracting the operands to local
8861
variables.  This reduces stack use and code size, and improves
8862
performance.
8863
 
8864
The module exxface.c was eliminated as it was an unnecessary extra
8865
layer of code.
8866
 
8867
Current core subsystem library code sizes are shown below.  These
8868
are the code and data sizes for the acpica.lib produced by the
8869
Microsoft Visual C++ 6.0 compiler, and these values do not include
8870
any ACPI driver or OSPM code.  The debug version of the code
8871
includes the full debug trace mechanism -- leading to a much
8872
larger code and data size.  Note that these values will vary
8873
depending on the efficiency of the compiler and the compiler
8874
options used during generation.
8875
 
8876
  Non-Debug Version:  65K Code,   5K Data,   70K Total
8877
(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
8878
Total  (Previously 195K)
8879
 
8880
Linux:
8881
 
8882
Support for ACPI 2.0 64-bit integers has been added.   All ACPI
8883
Integer objects are now 64 bits wide
8884
 
8885
All Acpi data types and structures are now in lower case.  Only
8886
Acpi macros are upper case for differentiation.
8887
 
8888
 Documentation:
8889
 
8890
Changes to the external interfaces as described above.
8891
 
8892
 ----------------------------------------
8893
Summary of changes for this label: 08_31_01
8894
 
8895
 ACPI CA Core Subsystem:
8896
 
8897
A bug with interpreter implementation of the ASL Divide operator
8898
was found and fixed.  The implicit function return value (not the
8899
explicit store operands) was returning the remainder instead of
8900
the quotient.  This was a longstanding bug and it fixes several
8901
known outstanding issues on various platforms.
8902
 
8903
The ACPI_DEBUG_PRINT and function trace entry/exit macros have
8904
been further optimized for size.  There are 700 invocations of the
8905
DEBUG_PRINT macro alone, so each optimization reduces the size of
8906
the debug version of the subsystem significantly.
8907
 
8908
A stack trace mechanism has been implemented.  The maximum stack
8909
usage is about 2K on 32-bit platforms.  The debugger command "stat
8910
stack" will display the current maximum stack usage.
8911
 
8912
All public symbols and global variables within the subsystem are
8913
now prefixed with the string "Acpi".  This keeps all of the
8914
symbols grouped together in a kernel map, and avoids conflicts
8915
with other kernel subsystems.
8916
 
8917
Most of the internal fixed lookup tables have been moved into the
8918
code segment via the const operator.
8919
 
8920
Several enhancements have been made to the interpreter to both
8921
reduce the code size and improve performance.
8922
 
8923
Current core subsystem library code sizes are shown below.  These
8924
are the code and data sizes for the acpica.lib produced by the
8925
Microsoft Visual C++ 6.0 compiler, and these values do not include
8926
any ACPI driver or OSPM code.  The debug version of the code
8927
includes the full debug trace mechanism which contains over 700
8928
invocations of the DEBUG_PRINT macro, 500 function entry macro
8929
invocations, and over 900 function exit macro invocations --
8930
leading to a much larger code and data size.  Note that these
8931
values will vary depending on the efficiency of the compiler and
8932
the compiler options used during generation.
8933
 
8934
        Non-Debug Version:  64K Code,   5K Data,   69K Total
8935
Debug Version:     137K Code,  58K Data,  195K Total
8936
 
8937
 Linux:
8938
 
8939
Implemented wbinvd() macro, pending a kernel-wide definition.
8940
 
8941
Fixed /proc/acpi/event to handle poll() and short reads.
8942
 
8943
 ASL Compiler, version X2026:
8944
 
8945
Fixed a problem introduced in the previous label where the AML
8946
 
8947
code emitted for package objects produced packages with zero
8948
length.
8949
 
8950
 ----------------------------------------
8951
Summary of changes for this label: 08_16_01
8952
 
8953
ACPI CA Core Subsystem:
8954
 
8955
The following ACPI 2.0 ASL operators have been implemented in the
8956
AML interpreter (These are already supported by the Intel ASL
8957
compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
8958
ToBuffer.  Support for 64-bit AML constants is implemented in the
8959
AML parser, debugger, and disassembler.
8960
 
8961
The internal memory tracking mechanism (leak detection code) has
8962
been upgraded to reduce the memory overhead (a separate tracking
8963
block is no longer allocated for each memory allocation), and now
8964
supports all of the internal object caches.
8965
 
8966
The data structures and code for the internal object caches have
8967
been coelesced and optimized so that there is a single cache and
8968
memory list data structure and a single group of functions that
8969
implement generic cache management.  This has reduced the code
8970
size in both the debug and release versions of the subsystem.
8971
 
8972
The DEBUG_PRINT macro(s) have been optimized for size and replaced
8973
by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
8974
different, because it generates a single call to an internal
8975
function.  This results in a savings of about 90 bytes per
8976
invocation, resulting in an overall code and data savings of about
8977
16% in the debug version of the subsystem.
8978
 
8979
 Linux:
8980
 
8981
Fixed C3 disk corruption problems and re-enabled C3 on supporting
8982
machines.
8983
 
8984
Integrated low-level sleep code by Patrick Mochel.
8985
 
8986
Further tweaked source code Linuxization.
8987
 
8988
Other minor fixes.
8989
 
8990
 ASL Compiler:
8991
 
8992
Support for ACPI 2.0 variable length packages is fixed/completed.
8993
 
8994
Fixed a problem where the optional length parameter for the ACPI
8995
2.0 ToString operator.
8996
 
8997
Fixed multiple extraneous error messages when a syntax error is
8998
detected within the declaration line of a control method.
8999
 
9000
 ----------------------------------------
9001
Summary of changes for this label: 07_17_01
9002
 
9003
ACPI CA Core Subsystem:
9004
 
9005
Added a new interface named AcpiGetFirmwareTable to obtain any
9006
ACPI table via the ACPI signature.  The interface can be called at
9007
any time during kernel initialization, even before the kernel
9008
virtual memory manager is initialized and paging is enabled.  This
9009
allows kernel subsystems to obtain ACPI tables very early, even
9010
before the ACPI CA subsystem is initialized.
9011
 
9012
Fixed a problem where Fields defined with the AnyAcc attribute
9013
could be resolved to the incorrect address under the following
9014
conditions: 1) the field width is larger than 8 bits and 2) the
9015
parent operation region is not defined on a DWORD boundary.
9016
 
9017
Fixed a problem where the interpreter is not being locked during
9018
namespace initialization (during execution of the _INI control
9019
methods), causing an error when an attempt is made to release it
9020
later.
9021
 
9022
ACPI 2.0 support in the AML Interpreter has begun and will be
9023
ongoing throughout the rest of this year.  In this label, The Mod
9024
operator is implemented.
9025
 
9026
Added a new data type to contain full PCI addresses named
9027
ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
9028
and Function values.
9029
 
9030
 Linux:
9031
 
9032
Enhanced the Linux version of the source code to change most
9033
capitalized ACPI type names to lowercase. For example, all
9034
instances of ACPI_STATUS are changed to acpi_status.  This will
9035
result in a large diff, but the change is strictly cosmetic and
9036
aligns the CA code closer to the Linux coding standard.
9037
 
9038
OSL Interfaces:
9039
 
9040
The interfaces to the PCI configuration space have been changed to
9041
add the PCI Segment number and to split the single 32-bit combined
9042
DeviceFunction field into two 16-bit fields.  This was
9043
accomplished by moving the four values that define an address in
9044
PCI configuration space (segment, bus, device, and function) to
9045
the new ACPI_PCI_ID structure.
9046
 
9047
The changes to the PCI configuration space interfaces led to a
9048
reexamination of the complete set of address space access
9049
interfaces for PCI, I/O, and Memory.  The previously existing 18
9050
interfaces have proven difficult to maintain (any small change
9051
must be propagated across at least 6 interfaces) and do not easily
9052
allow for future expansion to 64 bits if necessary.  Also, on some
9053
systems, it would not be appropriate to demultiplex the access
9054
width (8, 16, 32,or 64) before calling the OSL if the
9055
corresponding native OS interfaces contain a similar access width
9056
parameter.  For these reasons, the 18 address space interfaces
9057
have been replaced by these 6 new ones:
9058
 
9059
AcpiOsReadPciConfiguration
9060
AcpiOsWritePciConfiguration
9061
AcpiOsReadMemory
9062
AcpiOsWriteMemory
9063
AcpiOsReadPort
9064
AcpiOsWritePort
9065
 
9066
Added a new interface named AcpiOsGetRootPointer to allow the OSL
9067
to perform the platform and/or OS-specific actions necessary to
9068
obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
9069
interface will simply call down to the CA core to perform the low-
9070
memory search for the table.  On IA-64, the RSDP is obtained from
9071
EFI.  Migrating this interface to the OSL allows the CA core to
9072
 
9073
remain OS and platform independent.
9074
 
9075
Added a new interface named AcpiOsSignal to provide a generic
9076
"function code and pointer" interface for various miscellaneous
9077
signals and notifications that must be made to the host OS.   The
9078
first such signals are intended to support the ASL Fatal and
9079
Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
9080
interface has been obsoleted.
9081
 
9082
The definition of the AcpiFormatException interface has been
9083
changed to simplify its use.  The caller no longer must supply a
9084
buffer to the call; A pointer to a const string is now returned
9085
directly.  This allows the call to be easily used in printf
9086
statements, etc. since the caller does not have to manage a local
9087
buffer.
9088
 
9089
 
9090
 ASL Compiler, Version X2025:
9091
 
9092
The ACPI 2.0 Switch/Case/Default operators have been implemented
9093
and are fully functional.  They will work with all ACPI 1.0
9094
interpreters, since the operators are simply translated to If/Else
9095
pairs.
9096
 
9097
The ACPI 2.0 ElseIf operator is implemented and will also work
9098
with 1.0 interpreters, for the same reason.
9099
 
9100
Implemented support for ACPI 2.0 variable-length packages.  These
9101
packages have a separate opcode, and their size is determined by
9102
the interpreter at run-time.
9103
 
9104
Documentation The ACPI CA Programmer Reference has been updated to
9105
reflect the new interfaces and changes to existing interfaces.
9106
 
9107
 ------------------------------------------
9108
Summary of changes for this label: 06_15_01
9109
 
9110
 ACPI CA Core Subsystem:
9111
 
9112
Fixed a problem where a DWORD-accessed field within a Buffer
9113
object would get its byte address inadvertently rounded down to
9114
the nearest DWORD.  Buffers are always Byte-accessible.
9115
 
9116
 ASL Compiler, version X2024:
9117
 
9118
Fixed a problem where the Switch() operator would either fault or
9119
hang the compiler.  Note however, that the AML code for this ACPI
9120
2.0 operator is not yet implemented.
9121
 
9122
Compiler uses the new AcpiOsGetTimer interface to obtain compile
9123
timings.
9124
 
9125
Implementation of the CreateField operator automatically converts
9126
a reference to a named field within a resource descriptor from a
9127
byte offset to a bit offset if required.
9128
 
9129
Added some missing named fields from the resource descriptor
9130
support. These are the names that are automatically created by the
9131
compiler to reference fields within a descriptor.  They are only
9132
valid at compile time and are not passed through to the AML
9133
interpreter.
9134
 
9135
Resource descriptor named fields are now typed as Integers and
9136
subject to compile-time typechecking when used in expressions.
9137
 
9138
 ------------------------------------------
9139
Summary of changes for this label: 05_18_01
9140
 
9141
 ACPI CA Core Subsystem:
9142
 
9143
Fixed a couple of problems in the Field support code where bits
9144
from adjacent fields could be returned along with the proper field
9145
bits. Restructured the field support code to improve performance,
9146
readability and maintainability.
9147
 
9148
New DEBUG_PRINTP macro automatically inserts the procedure name
9149
into the output, saving hundreds of copies of procedure name
9150
strings within the source, shrinking the memory footprint of the
9151
debug version of the core subsystem.
9152
 
9153
 Source Code Structure:
9154
 
9155
The source code directory tree was restructured to reflect the
9156
current organization of the component architecture.  Some files
9157
and directories have been moved and/or renamed.
9158
 
9159
 Linux:
9160
 
9161
Fixed leaking kacpidpc processes.
9162
 
9163
Fixed queueing event data even when /proc/acpi/event is not
9164
opened.
9165
 
9166
 ASL Compiler, version X2020:
9167
 
9168
Memory allocation performance enhancement - over 24X compile time
9169
improvement on large ASL files.  Parse nodes and namestring
9170
buffers are now allocated from a large internal compiler buffer.
9171
 
9172
The temporary .SRC file is deleted unless the "-s" option is
9173
specified
9174
 
9175
The "-d" debug output option now sends all output to the .DBG file
9176
instead of the console.
9177
 
9178
"External" second parameter is now optional
9179
 
9180
"ElseIf" syntax now properly allows the predicate
9181
 
9182
Last operand to "Load" now recognized as a Target operand
9183
 
9184
Debug object can now be used anywhere as a normal object.
9185
 
9186
ResourceTemplate now returns an object of type BUFFER
9187
 
9188
EISAID now returns an object of type INTEGER
9189
 
9190
"Index" now works with a STRING operand
9191
 
9192
"LoadTable" now accepts optional parameters
9193
 
9194
"ToString" length parameter is now optional
9195
 
9196
"Interrupt (ResourceType," parse error fixed.
9197
 
9198
"Register" with a user-defined region space parse error fixed
9199
 
9200
Escaped backslash at the end of a string ("\\") scan/parse error
9201
fixed
9202
 
9203
"Revision" is now an object of type INTEGER.
9204
 
9205
 
9206
 
9207
------------------------------------------
9208
Summary of changes for this label: 05_02_01
9209
 
9210
Linux:
9211
 
9212
/proc/acpi/event now blocks properly.
9213
 
9214
Removed /proc/sys/acpi. You can still dump your DSDT from
9215
/proc/acpi/dsdt.
9216
 
9217
 ACPI CA Core Subsystem:
9218
 
9219
Fixed a problem introduced in the previous label where some of the
9220
"small" resource descriptor types were not recognized.
9221
 
9222
Improved error messages for the case where an ASL Field is outside
9223
the range of the parent operation region.
9224
 
9225
 ASL Compiler, version X2018:
9226
 
9227
 
9228
Added error detection for ASL Fields that extend beyond the length
9229
of the parent operation region (only if the length of the region
9230
is known at compile time.)  This includes fields that have a
9231
minimum access width that is smaller than the parent region, and
9232
individual field units that are partially or entirely beyond the
9233
extent of the parent.
9234
 
9235
 
9236
 
9237
------------------------------------------
9238
Summary of changes for this label: 04_27_01
9239
 
9240
 ACPI CA Core Subsystem:
9241
 
9242
Fixed a problem where the namespace mutex could be released at the
9243
wrong time during execution of AcpiRemoveAddressSpaceHandler.
9244
 
9245
Added optional thread ID output for debug traces, to simplify
9246
debugging of multiple threads.  Added context switch notification
9247
when the debug code realizes that a different thread is now
9248
executing ACPI code.
9249
 
9250
Some additional external data types have been prefixed with the
9251
string "ACPI_" for consistency.  This may effect existing code.
9252
The data types affected are the external callback typedefs - e.g.,
9253
 
9254
WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
9255
 
9256
 Linux:
9257
 
9258
Fixed an issue with the OSL semaphore implementation where a
9259
thread was waking up with an error from receiving a SIGCHLD
9260
signal.
9261
 
9262
Linux version of ACPI CA now uses the system C library for string
9263
manipulation routines instead of a local implementation.
9264
 
9265
Cleaned up comments and removed TBDs.
9266
 
9267
 ASL Compiler, version X2017:
9268
 
9269
Enhanced error detection and reporting for all file I/O
9270
operations.
9271
 
9272
 Documentation:
9273
 
9274
Programmer Reference updated to version 1.06.
9275
 
9276
 
9277
 
9278
------------------------------------------
9279
Summary of changes for this label: 04_13_01
9280
 
9281
 ACPI CA Core Subsystem:
9282
 
9283
Restructured support for BufferFields and RegionFields.
9284
BankFields support is now fully operational.  All known 32-bit
9285
limitations on field sizes have been removed.  Both BufferFields
9286
and (Operation) RegionFields are now supported by the same field
9287
management code.
9288
 
9289
Resource support now supports QWORD address and IO resources. The
9290
16/32/64 bit address structures and the Extended IRQ structure
9291
have been changed to properly handle Source Resource strings.
9292
 
9293
A ThreadId of -1 is now used to indicate a "mutex not acquired"
9294
condition internally and must never be returned by AcpiOsThreadId.
9295
This reserved value was changed from 0 since Unix systems allow a
9296
thread ID of 0.
9297
 
9298
Linux:
9299
 
9300
Driver code reorganized to enhance portability
9301
 
9302
Added a kernel configuration option to control ACPI_DEBUG
9303
 
9304
Fixed the EC driver to honor _GLK.
9305
 
9306
ASL Compiler, version X2016:
9307
 
9308
Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
9309
address space was set to 0, not 0x7f as it should be.
9310
 
9311
 ------------------------------------------
9312
Summary of changes for this label: 03_13_01
9313
 
9314
 ACPI CA Core Subsystem:
9315
 
9316
During ACPI initialization, the _SB_._INI method is now run if
9317
present.
9318
 
9319
Notify handler fix - notifies are deferred until the parent method
9320
completes execution.  This fixes the "mutex already acquired"
9321
issue seen occasionally.
9322
 
9323
Part of the "implicit conversion" rules in ACPI 2.0 have been
9324
found to cause compatibility problems with existing ASL/AML.  The
9325
convert "result-to-target-type" implementation has been removed
9326
for stores to method Args and Locals.  Source operand conversion
9327
is still fully implemented.  Possible changes to ACPI 2.0
9328
specification pending.
9329
 
9330
Fix to AcpiRsCalculatePciRoutingTableLength to return correct
9331
length.
9332
 
9333
Fix for compiler warnings for 64-bit compiles.
9334
 
9335
 Linux:
9336
 
9337
/proc output aligned for easier parsing.
9338
 
9339
Release-version compile problem fixed.
9340
 
9341
New kernel configuration options documented in Configure.help.
9342
 
9343
IBM 600E - Fixed Sleep button may generate "Invalid 
9344
context" message.
9345
 
9346
 OSPM:
9347
 
9348
Power resource driver integrated with bus manager.
9349
 
9350
Fixed kernel fault during active cooling for thermal zones.
9351
 
9352
Source Code:
9353
 
9354
The source code tree has been restructured.
9355
 
9356
 
9357
 
9358
------------------------------------------
9359
Summary of changes for this label: 03_02_01
9360
 
9361
 Linux OS Services Layer (OSL):
9362
 
9363
Major revision of all Linux-specific code.
9364
 
9365
Modularized all ACPI-specific drivers.
9366
 
9367
Added new thermal zone and power resource drivers.
9368
 
9369
Revamped /proc interface (new functionality is under /proc/acpi).
9370
 
9371
New kernel configuration options.
9372
 
9373
 Linux known issues:
9374
 
9375
New kernel configuration options not documented in Configure.help
9376
yet.
9377
 
9378
 
9379
Module dependencies not currently implemented. If used, they
9380
should be loaded in this order: busmgr, power, ec, system,
9381
processor, battery, ac_adapter, button, thermal.
9382
 
9383
Modules will not load if CONFIG_MODVERSION is set.
9384
 
9385
IBM 600E - entering S5 may reboot instead of shutting down.
9386
 
9387
IBM 600E - Sleep button may generate "Invalid  context"
9388
message.
9389
 
9390
Some systems may fail with "execution mutex already acquired"
9391
message.
9392
 
9393
 ACPI CA Core Subsystem:
9394
 
9395
Added a new OSL Interface, AcpiOsGetThreadId.  This was required
9396
for the  deadlock detection code. Defined to return a non-zero, 32-
9397
bit thread ID for the currently executing thread.  May be a non-
9398
zero constant integer on single-thread systems.
9399
 
9400
Implemented deadlock detection for internal subsystem mutexes.  We
9401
may add conditional compilation for this code (debug only) later.
9402
 
9403
ASL/AML Mutex object semantics are now fully supported.  This
9404
includes multiple acquires/releases by owner and support for the
9405
 
9406
Mutex SyncLevel parameter.
9407
 
9408
A new "Force Release" mechanism automatically frees all ASL
9409
Mutexes that have been acquired but not released when a thread
9410
exits the interpreter.  This forces conformance to the ACPI spec
9411
("All mutexes must be released when an invocation exits") and
9412
prevents deadlocked ASL threads.  This mechanism can be expanded
9413
(later) to monitor other resource acquisitions if OEM ASL code
9414
continues to misbehave (which it will).
9415
 
9416
Several new ACPI exception codes have been added for the Mutex
9417
support.
9418
 
9419
Recursive method calls are now allowed and supported (the ACPI
9420
spec does in fact allow recursive method calls.)  The number of
9421
recursive calls is subject to the restrictions imposed by the
9422
SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
9423
parameter.
9424
 
9425
Implemented support for the SyncLevel parameter for control
9426
methods (ACPI 2.0 feature)
9427
 
9428
Fixed a deadlock problem when multiple threads attempted to use
9429
the interpreter.
9430
 
9431
Fixed a problem where the string length of a String package
9432
element was not always set in a package returned from
9433
AcpiEvaluateObject.
9434
 
9435
Fixed a problem where the length of a String package element was
9436
not always included in the length of the overall package returned
9437
from AcpiEvaluateObject.
9438
 
9439
Added external interfaces (Acpi*) to the ACPI debug memory
9440
manager.  This manager keeps a list of all outstanding
9441
allocations, and can therefore detect memory leaks and attempts to
9442
free memory blocks more than once. Useful for code such as the
9443
power manager, etc.  May not be appropriate for device drivers.
9444
Performance with the debug code enabled is slow.
9445
 
9446
The ACPI Global Lock is now an optional hardware element.
9447
 
9448
 ASL Compiler Version X2015:
9449
 
9450
Integrated changes to allow the compiler to be generated on
9451
multiple platforms.
9452
 
9453
Linux makefile added to generate the compiler on Linux
9454
 
9455
 Source Code:
9456
 
9457
All platform-specific headers have been moved to their own
9458
subdirectory, Include/Platform.
9459
 
9460
New source file added, Interpreter/ammutex.c
9461
 
9462
New header file, Include/acstruct.h
9463
 
9464
 Documentation:
9465
 
9466
The programmer reference has been updated for the following new
9467
interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
9468
 
9469
 ------------------------------------------
9470
Summary of changes for this label: 02_08_01
9471
 
9472
Core ACPI CA Subsystem: Fixed a problem where an error was
9473
incorrectly returned if the return resource buffer was larger than
9474
the actual data (in the resource interfaces).
9475
 
9476
References to named objects within packages are resolved to the
9477
 
9478
full pathname string before packages are returned directly (via
9479
the AcpiEvaluateObject interface) or indirectly via the resource
9480
interfaces.
9481
 
9482
Linux OS Services Layer (OSL):
9483
 
9484
Improved /proc battery interface.
9485
 
9486
 
9487
Added C-state debugging output and other miscellaneous fixes.
9488
 
9489
ASL Compiler Version X2014:
9490
 
9491
All defined method arguments can now be used as local variables,
9492
including the ones that are not actually passed in as parameters.
9493
The compiler tracks initialization of the arguments and issues an
9494
exception if they are used without prior assignment (just like
9495
locals).
9496
 
9497
The -o option now specifies a filename prefix that is used for all
9498
output files, including the AML output file.  Otherwise, the
9499
default behavior is as follows:  1) the AML goes to the file
9500
specified in the DSDT.  2) all other output files use the input
9501
source filename as the base.
9502
 
9503
 ------------------------------------------
9504
Summary of changes for this label: 01_25_01
9505
 
9506
Core ACPI CA Subsystem: Restructured the implementation of object
9507
store support within the  interpreter.  This includes support for
9508
the Store operator as well  as any ASL operators that include a
9509
target operand.
9510
 
9511
Partially implemented support for Implicit Result-to-Target
9512
conversion. This is when a result object is converted on the fly
9513
to the type of  an existing target object.  Completion of this
9514
support is pending  further analysis of the ACPI specification
9515
concerning this matter.
9516
 
9517
CPU-specific code has been removed from the subsystem (hardware
9518
directory).
9519
 
9520
New Power Management Timer functions added
9521
 
9522
Linux OS Services Layer (OSL): Moved system state transition code
9523
to the core, fixed it, and modified  Linux OSL accordingly.
9524
 
9525
Fixed C2 and C3 latency calculations.
9526
 
9527
 
9528
We no longer use the compilation date for the version message on
9529
initialization, but retrieve the version from AcpiGetSystemInfo().
9530
 
9531
Incorporated for fix Sony VAIO machines.
9532
 
9533
Documentation:  The Programmer Reference has been updated and
9534
reformatted.
9535
 
9536
 
9537
ASL Compiler:  Version X2013: Fixed a problem where the line
9538
numbering and error reporting could get out  of sync in the
9539
presence of multiple include files.
9540
 
9541
 ------------------------------------------
9542
Summary of changes for this label: 01_15_01
9543
 
9544
Core ACPI CA Subsystem:
9545
 
9546
Implemented support for type conversions in the execution of the
9547
ASL  Concatenate operator (The second operand is converted to
9548
match the type  of the first operand before concatenation.)
9549
 
9550
Support for implicit source operand conversion is partially
9551
implemented.   The ASL source operand types Integer, Buffer, and
9552
String are freely  interchangeable for most ASL operators and are
9553
converted by the interpreter  on the fly as required.  Implicit
9554
Target operand conversion (where the  result is converted to the
9555
target type before storing) is not yet implemented.
9556
 
9557
Support for 32-bit and 64-bit BCD integers is implemented.
9558
 
9559
Problem fixed where a field read on an aligned field could cause a
9560
read  past the end of the field.
9561
 
9562
New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
9563
does not return a value, but the caller expects one.  (The ASL
9564
compiler flags this as a warning.)
9565
 
9566
ASL Compiler:
9567
 
9568
Version X2011:
9569
1. Static typechecking of all operands is implemented. This
9570
prevents the use of invalid objects (such as using a Package where
9571
an Integer is required) at compile time instead of at interpreter
9572
run-time.
9573
2. The ASL source line is printed with ALL errors and warnings.
9574
3. Bug fix for source EOF without final linefeed.
9575
4. Debug option is split into a parse trace and a namespace trace.
9576
5. Namespace output option (-n) includes initial values for
9577
integers and strings.
9578
6. Parse-only option added for quick syntax checking.
9579
7. Compiler checks for duplicate ACPI name declarations
9580
 
9581
Version X2012:
9582
1. Relaxed typechecking to allow interchangeability between
9583
strings, integers, and buffers.  These types are now converted by
9584
the interpreter at runtime.
9585
2. Compiler reports time taken by each internal subsystem in the
9586
debug         output file.
9587
 
9588
 
9589
 ------------------------------------------
9590
Summary of changes for this label: 12_14_00
9591
 
9592
ASL Compiler:
9593
 
9594
This is the first official release of the compiler. Since the
9595
compiler requires elements of the Core Subsystem, this label
9596
synchronizes everything.
9597
 
9598
------------------------------------------
9599
Summary of changes for this label: 12_08_00
9600
 
9601
 
9602
Fixed a problem where named references within the ASL definition
9603
of both OperationRegions and CreateXXXFields did not work
9604
properly.  The symptom was an AE_AML_OPERAND_TYPE during
9605
initialization of the region/field. This is similar (but not
9606
related internally) to the problem that was fixed in the last
9607
label.
9608
 
9609
Implemented both 32-bit and 64-bit support for the BCD ASL
9610
functions ToBCD and FromBCD.
9611
 
9612
Updated all legal headers to include "2000" in the copyright
9613
years.
9614
 
9615
 ------------------------------------------
9616
Summary of changes for this label: 12_01_00
9617
 
9618
Fixed a problem where method invocations within the ASL definition
9619
of both OperationRegions and CreateXXXFields did not work
9620
properly.  The symptom was an AE_AML_OPERAND_TYPE during
9621
initialization of the region/field:
9622
 
9623
  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
9624
[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
9625
(0x3005)
9626
 
9627
Fixed a problem where operators with more than one nested
9628
subexpression would fail.  The symptoms were varied, by mostly
9629
AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
9630
problem that has gone unnoticed until now.
9631
 
9632
  Subtract (Add (1,2), Multiply (3,4))
9633
 
9634
Fixed a problem where AcpiGetHandle didn't quite get fixed in the
9635
previous build (The prefix part of a relative path was handled
9636
incorrectly).
9637
 
9638
Fixed a problem where Operation Region initialization failed if
9639
the operation region name was a "namepath" instead of a simple
9640
"nameseg". Symptom was an AE_NO_OPERAND error.
9641
 
9642
Fixed a problem where an assignment to a local variable via the
9643
indirect RefOf mechanism only worked for the first such
9644
assignment.  Subsequent assignments were ignored.
9645
 
9646
 ------------------------------------------
9647
Summary of changes for this label: 11_15_00
9648
 
9649
ACPI 2.0 table support with backwards support for ACPI 1.0 and the
9650
0.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
9651
the AML  interpreter does NOT have support for the new 2.0 ASL
9652
grammar terms at this time.
9653
 
9654
All ACPI hardware access is via the GAS structures in the ACPI 2.0
9655
FADT.
9656
 
9657
All physical memory addresses across all platforms are now 64 bits
9658
wide. Logical address width remains dependent on the platform
9659
(i.e., "void *").
9660
 
9661
AcpiOsMapMemory interface changed to a 64-bit physical address.
9662
 
9663
The AML interpreter integer size is now 64 bits, as per the ACPI
9664
2.0 specification.
9665
 
9666
For backwards compatibility with ACPI 1.0, ACPI tables with a
9667
revision number less than 2 use 32-bit integers only.
9668
 
9669
Fixed a problem where the evaluation of OpRegion operands did not
9670
always resolve them to numbers properly.
9671
 
9672
------------------------------------------
9673
Summary of changes for this label: 10_20_00
9674
 
9675
Fix for CBN_._STA issue.  This fix will allow correct access to
9676
CBN_ OpRegions when the _STA returns 0x8.
9677
 
9678
Support to convert ACPI constants (Ones, Zeros, One) to actual
9679
values before a package object is returned
9680
 
9681
Fix for method call as predicate to if/while construct causing
9682
incorrect if/while behavior
9683
 
9684
Fix for Else block package lengths sometimes calculated wrong (if
9685
block > 63 bytes)
9686
 
9687
Fix for Processor object length field, was always zero
9688
 
9689
Table load abort if FACP sanity check fails
9690
 
9691
Fix for problem with Scope(name) if name already exists
9692
 
9693
Warning emitted if a named object referenced cannot be found
9694
(resolved) during method execution.
9695
 
9696
 
9697
 
9698
 
9699
 
9700
------------------------------------------
9701
Summary of changes for this label: 9_29_00
9702
 
9703
New table initialization interfaces: AcpiInitializeSubsystem no
9704
longer has any parameters AcpiFindRootPointer - Find the RSDP (if
9705
necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
9706
>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
9707
AcpiLoadTables
9708
 
9709
Note: These interface changes require changes to all existing OSDs
9710
 
9711
The PCI_Config default address space handler is always installed
9712
at the root namespace object.
9713
 
9714
-------------------------------------------
9715
Summary of changes for this label: 09_15_00
9716
 
9717
The new initialization architecture is implemented.  New
9718
interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
9719
AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
9720
 
9721
(Namespace is automatically loaded when a table is loaded)
9722
 
9723
The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
9724
52 bytes to 32 bytes.  There is usually one of these for every
9725
namespace object, so the memory savings is significant.
9726
 
9727
Implemented just-in-time evaluation of the CreateField operators.
9728
 
9729
Bug fixes for IA-64 support have been integrated.
9730
 
9731
Additional code review comments have been implemented
9732
 
9733
The so-called "third pass parse" has been replaced by a final walk
9734
through the namespace to initialize all operation regions (address
9735
spaces) and fields that have not yet been initialized during the
9736
execution of the various _INI and REG methods.
9737
 
9738
New file - namespace/nsinit.c
9739
 
9740
-------------------------------------------
9741
Summary of changes for this label: 09_01_00
9742
 
9743
Namespace manager data structures have been reworked to change the
9744
primary  object from a table to a single object.  This has
9745
resulted in dynamic memory  savings of 3X within the namespace and
9746
2X overall in the ACPI CA subsystem.
9747
 
9748
Fixed problem where the call to AcpiEvFindPciRootBuses was
9749
inadvertently left  commented out.
9750
 
9751
Reduced the warning count when generating the source with the GCC
9752
compiler.
9753
 
9754
Revision numbers added to each module header showing the
9755
SourceSafe version of the file.  Please refer to this version
9756
number when giving us feedback or comments on individual modules.
9757
 
9758
The main object types within the subsystem have been renamed to
9759
clarify their  purpose:
9760
 
9761
ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
9762
ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
9763
ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
9764
 
9765
NOTE: no changes to the initialization sequence are included in
9766
this label.
9767
 
9768
-------------------------------------------
9769
Summary of changes for this label: 08_23_00
9770
 
9771
Fixed problem where TerminateControlMethod was being called
9772
multiple times per  method
9773
 
9774
Fixed debugger problem where single stepping caused a semaphore to
9775
be  oversignalled
9776
 
9777
Improved performance through additional parse object caching -
9778
added  ACPI_EXTENDED_OP type
9779
 
9780
-------------------------------------------
9781
Summary of changes for this label: 08_10_00
9782
 
9783
Parser/Interpreter integration:  Eliminated the creation of
9784
complete parse trees  for ACPI tables and control methods.
9785
Instead, parse subtrees are created and  then deleted as soon as
9786
they are processed (Either entered into the namespace or  executed
9787
by the interpreter).  This reduces the use of dynamic kernel
9788
memory  significantly. (about 10X)
9789
 
9790
Exception codes broken into classes and renumbered.  Be sure to
9791
recompile all  code that includes acexcep.h.  Hopefully we won't
9792
have to renumber the codes  again now that they are split into
9793
classes (environment, programmer, AML code,  ACPI table, and
9794
internal).
9795
 
9796
Fixed some additional alignment issues in the Resource Manager
9797
subcomponent
9798
 
9799
Implemented semaphore tracking in the AcpiExec utility, and fixed
9800
several places  where mutexes/semaphores were being unlocked
9801
without a corresponding lock  operation.  There are no known
9802
semaphore or mutex "leaks" at this time.
9803
 
9804
Fixed the case where an ASL Return operator is used to return an
9805
unnamed  package.
9806
 
9807
-------------------------------------------
9808
Summary of changes for this label: 07_28_00
9809
 
9810
Fixed a problem with the way addresses were calculated in
9811
AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
9812
manifested itself when a Field was  created with WordAccess or
9813
DwordAccess, but the field unit defined within the  Field was less
9814
 
9815
than a Word or Dword.
9816
 
9817
Fixed a problem in AmlDumpOperands() module's loop to pull
9818
operands off of the  operand stack to display information. The
9819
problem manifested itself as a TLB  error on 64-bit systems when
9820
accessing an operand stack with two or more  operands.
9821
 
9822
Fixed a problem with the PCI configuration space handlers where
9823
context was  getting confused between accesses. This required a
9824
change to the generic address  space handler and address space
9825
setup definitions. Handlers now get both a  global handler context
9826
(this is the one passed in by the user when executing
9827
AcpiInstallAddressSpaceHandler() and a specific region context
9828
that is unique to  each region (For example, the _ADR, _SEG and
9829
_BBN values associated with a  specific region). The generic
9830
function definitions have changed to the  following:
9831
 
9832
typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
9833
UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
9834
*HandlerContext, // This used to be void *Context void
9835
*RegionContext); // This is an additional parameter
9836
 
9837
typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
9838
RegionHandle, UINT32 Function, void *HandlerContext,  void
9839
**RegionContext); // This used to be **ReturnContext
9840
 
9841
-------------------------------------------
9842
Summary of changes for this label: 07_21_00
9843
 
9844
Major file consolidation and rename.  All files within the
9845
interpreter have been  renamed as well as most header files.  This
9846
was done to prevent collisions with  existing files in the host
9847
OSs -- filenames such as "config.h" and "global.h"  seem to be
9848
quite common.  The VC project files have been updated.  All
9849
makefiles  will require modification.
9850
 
9851
The parser/interpreter integration continues in Phase 5 with the
9852
implementation  of a complete 2-pass parse (the AML is parsed
9853
twice) for each table;  This  avoids the construction of a huge
9854
parse tree and therefore reduces the amount of  dynamic memory
9855
required by the subsystem.  Greater use of the parse object cache
9856
means that performance is unaffected.
9857
 
9858
Many comments from the two code reviews have been rolled in.
9859
 
9860
The 64-bit alignment support is complete.
9861
 
9862
-------------------------------------------
9863
Summary of changes for this label: 06_30_00
9864
 
9865
With a nod and a tip of the hat to the technology of yesteryear,
9866
we've added  support in the source code for 80 column output
9867
devices.  The code is now mostly  constrained to 80 columns or
9868
less to support environments and editors that 1)  cannot display
9869
or print more than 80 characters on a single line, and 2) cannot
9870
disable line wrapping.
9871
 
9872
A major restructuring of the namespace data structure has been
9873
completed.  The  result is 1) cleaner and more
9874
understandable/maintainable code, and 2) a  significant reduction
9875
in the dynamic memory requirement for each named ACPI  object
9876
(almost half).
9877
 
9878
-------------------------------------------
9879
Summary of changes for this label: 06_23_00
9880
 
9881
Linux support has been added.  In order to obtain approval to get
9882
the ACPI CA  subsystem into the Linux kernel, we've had to make
9883
quite a few changes to the  base subsystem that will affect all
9884
users (all the changes are generic and OS- independent).  The
9885
effects of these global changes have been somewhat far  reaching.
9886
Files have been merged and/or renamed and interfaces have been
9887
renamed.   The major changes are described below.
9888
 
9889
Osd* interfaces renamed to AcpiOs* to eliminate namespace
9890
pollution/confusion  within our target kernels.  All OSD
9891
interfaces must be modified to match the new  naming convention.
9892
 
9893
Files merged across the subsystem.  A number of the smaller source
9894
and header  files have been merged to reduce the file count and
9895
increase the density of the  existing files.  There are too many
9896
to list here.  In general, makefiles that  call out individual
9897
files will require rebuilding.
9898
 
9899
Interpreter files renamed.  All interpreter files now have the
9900
prefix am*  instead of ie* and is*.
9901
 
9902
Header files renamed:  The acapi.h file is now acpixf.h.  The
9903
acpiosd.h file is  now acpiosxf.h.  We are removing references to
9904
the acronym "API" since it is  somewhat windowsy. The new name is
9905
"external interface" or xface or xf in the  filenames.j
9906
 
9907
 
9908
All manifest constants have been forced to upper case (some were
9909
mixed case.)   Also, the string "ACPI_" has been prepended to many
9910
(not all) of the constants,  typedefs, and structs.
9911
 
9912
The globals "DebugLevel" and "DebugLayer" have been renamed
9913
"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
9914
 
9915
All other globals within the subsystem are now prefixed with
9916
"AcpiGbl_" Internal procedures within the subsystem are now
9917
prefixed with "Acpi" (with only  a few exceptions).  The original
9918
two-letter abbreviation for the subcomponent  remains after "Acpi"
9919
- for example, CmCallocate became AcpiCmCallocate.
9920
 
9921
Added a source code translation/conversion utility.  Used to
9922
generate the Linux  source code, it can be modified to generate
9923
other types of source as well. Can  also be used to cleanup
9924
existing source by removing extraneous spaces and blank  lines.
9925
Found in tools/acpisrc/*
9926
 
9927
OsdUnMapMemory was renamed to OsdUnmapMemory and then
9928
AcpiOsUnmapMemory.  (UnMap  became Unmap).
9929
 
9930
A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
9931
When set to  one, this indicates that the caller wants to use the
9932
 
9933
semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
9934
both types.  However, implementers of this  call may want to use
9935
different OS primitives depending on the type of semaphore
9936
requested.  For example, some operating systems provide separate
9937
 
9938
"mutex" and  "semaphore" interfaces - where the mutex interface is
9939
much faster because it  doesn't have all the overhead of a full
9940
semaphore implementation.
9941
 
9942
Fixed a deadlock problem where a method that accesses the PCI
9943
address space can  block forever if it is the first access to the
9944
space.
9945
 
9946
-------------------------------------------
9947
Summary of changes for this label: 06_02_00
9948
 
9949
Support for environments that cannot handle unaligned data
9950
accesses (e.g.  firmware and OS environments devoid of alignment
9951
handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
9952
been added (via configurable macros) in  these three areas: -
9953
Transfer of data from the raw AML byte stream is done via byte
9954
moves instead of    word/dword/qword moves. - External objects are
9955
aligned within the user buffer, including package   elements (sub-
9956
objects). - Conversion of name strings to UINT32 Acpi Names is now
9957
done byte-wise.
9958
 
9959
The Store operator was modified to mimic Microsoft's
9960
implementation when storing  to a Buffer Field.
9961
 
9962
Added a check of the BM_STS bit before entering C3.
9963
 
9964
The methods subdirectory has been obsoleted and removed.  A new
9965
file, cmeval.c  subsumes the functionality.
9966
 
9967
A 16-bit (DOS) version of AcpiExec has been developed.  The
9968
makefile is under  the acpiexec directory.