Subversion Repositories Kolibri OS

Rev

Rev 1498 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1498 serge 1
----------------------------------------
2216 Serge 2
23 June 2011. Summary of changes for version 20110623:
3
 
4
1) ACPI CA Core Subsystem:
5
 
6
Updated the predefined name repair mechanism to not attempt repair of a _TSS
7
return object if a _PSS object is present. We can only sort the _TSS return
8
package if there is no _PSS within the same scope. This is because if _PSS is
9
present, the ACPI specification dictates that the _TSS Power Dissipation field
10
is to be ignored, and therefore some BIOSs leave garbage values in the _TSS
11
Power field(s). In this case, it is best to just return the _TSS package as-
12
is. Reported by, and fixed with assistance from Fenghua Yu.
13
 
14
Added an option to globally disable the control method return value validation
15
and repair. This runtime option can be used to disable return value repair if
16
this is causing a problem on a particular machine. Also added an option to
17
AcpiExec (-dr) to set this disable flag.
18
 
19
All makefiles and project files: Major changes to improve generation of ACPICA
20
tools. ACPICA BZ 912:
21
    Reduce default optimization levels to improve compatibility
22
    For Linux, add strict-aliasing=0 for gcc 4
23
    Cleanup and simplify use of command line defines
24
    Cleanup multithread library support
25
    Improve usage messages
26
 
27
Linux-specific header: update handling of THREAD_ID and pthread. For the 32-
28
bit case, improve casting to eliminate possible warnings, especially with the
29
acpica tools.
30
 
31
Example Code and Data Size: These are the sizes for the OS-independent
32
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
33
version of the code includes the debug output trace mechanism and has a much
34
larger code and data size.
35
 
36
  Previous Release (VC 9.0):
37
    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
38
    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
39
  Current Release (VC 9.0):
40
    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
41
    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
42
 
43
2) iASL Compiler/Disassembler and Tools:
44
 
45
With this release, a new utility named "acpihelp" has been added to the ACPICA
46
package. This utility summarizes the ACPI specification chapters for the ASL
47
and AML languages. It generates under Linux/Unix as well as Windows, and
48
provides the following functionality:
49
    Find/display ASL operator(s) -- with description and syntax.
50
    Find/display ASL keyword(s) -- with exact spelling and descriptions.
51
    Find/display ACPI predefined name(s) -- with description, number
52
        of arguments, and the return value data type.
53
    Find/display AML opcode name(s) -- with opcode, arguments, and grammar.
54
    Decode/display AML opcode -- with opcode name, arguments, and grammar.
55
 
56
Service Layers: Make multi-thread support configurable. Conditionally compile
57
the multi-thread support so that threading libraries will not be linked if not
58
necessary. The only tool that requires multi-thread support is AcpiExec.
59
 
60
iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions of
61
Bison appear to want the interface to yyerror to be a const char * (or at
62
least this is a problem when generating iASL on some systems.) ACPICA BZ 923
63
Pierre Lejeune.
64
 
65
Tools: Fix for systems where O_BINARY is not defined. Only used for Windows
66
versions of the tools.
67
 
68
----------------------------------------
69
27 May 2011. Summary of changes for version 20110527:
70
 
71
1) ACPI CA Core Subsystem:
72
 
73
ASL Load() operator: Reinstate most restrictions on the incoming ACPI table
74
signature. Now, only allow SSDT, OEMx, and a null signature. History:
75
    1) Originally, we checked the table signature for "SSDT" or "PSDT".
76
       (PSDT is now obsolete.)
77
    2) We added support for OEMx tables, signature "OEM" plus a fourth
78
       "don't care" character.
79
    3) Valid tables were encountered with a null signature, so we just
80
       gave up on validating the signature, (05/2008).
81
    4) We encountered non-AML tables such as the MADT, which caused
82
       interpreter errors and kernel faults. So now, we once again allow
83
       only SSDT, OEMx, and now, also a null signature. (05/2011).
84
 
85
Added the missing _TDL predefined name to the global name list in order to
86
enable validation. Affects both the core ACPICA code and the iASL compiler.
87
 
88
Example Code and Data Size: These are the sizes for the OS-independent
89
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
90
version of the code includes the debug output trace mechanism and has a much
91
larger code and data size.
92
 
93
  Previous Release (VC 9.0):
94
    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
95
    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
96
  Current Release (VC 9.0):
97
    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
98
    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
99
 
100
2) iASL Compiler/Disassembler and Tools:
101
 
102
Debugger/AcpiExec: Implemented support for "complex" method arguments on the
103
debugger command line. This adds support beyond simple integers -- including
104
Strings, Buffers, and Packages. Includes support for nested packages.
105
Increased the default command line buffer size to accommodate these arguments.
106
See the ACPICA reference for details and syntax. ACPICA BZ 917.
107
 
108
Debugger/AcpiExec: Implemented support for "default" method arguments for the
109
Execute/Debug command. Now, the debugger will always invoke a control method
110
with the required number of arguments -- even if the command line specifies
111
none or insufficient arguments. It uses default integer values for any missing
112
arguments. Also fixes a bug where only six method arguments maximum were
113
supported instead of the required seven.
114
 
115
Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine and
116
also return status in order to prevent buffer overruns. See the ACPICA
117
reference for details and syntax. ACPICA BZ 921
118
 
119
iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
120
makefiles to simplify support for the two different but similar parser
121
generators, bison and yacc.
122
 
123
Updated the generic unix makefile for gcc 4. The default gcc version is now
124
expected to be 4 or greater, since options specific to gcc 4 are used.
125
 
126
----------------------------------------
127
13 April 2011. Summary of changes for version 20110413:
128
 
129
1) ACPI CA Core Subsystem:
130
 
131
Implemented support to execute a so-called "orphan" _REG method under the EC
132
device. This change will force the execution of a _REG method underneath the
133
EC
134
device even if there is no corresponding operation region of type
135
EmbeddedControl. Fixes a problem seen on some machines and apparently is
136
compatible with Windows behavior. ACPICA BZ 875.
137
 
138
Added more predefined methods that are eligible for automatic NULL package
139
element removal. This change adds another group of predefined names to the
140
list
141
of names that can be repaired by having NULL package elements dynamically
142
removed. This group are those methods that return a single variable-length
143
package containing simple data types such as integers, buffers, strings. This
144
includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, _PSL,
145
_Sx,
146
and _TZD. ACPICA BZ 914.
147
 
148
Split and segregated all internal global lock functions to a new file,
149
evglock.c.
150
 
151
Updated internal address SpaceID for DataTable regions. Moved this internal
152
space
153
id in preparation for ACPI 5.0 changes that will include some new space IDs.
154
This
155
change should not affect user/host code.
156
 
157
Example Code and Data Size: These are the sizes for the OS-independent
158
acpica.lib
159
produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of
160
the code includes the debug output trace mechanism and has a much larger code
161
and
162
data size.
163
 
164
  Previous Release (VC 9.0):
165
    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
166
    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
167
  Current Release (VC 9.0):
168
    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
169
    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
170
 
171
2) iASL Compiler/Disassembler and Tools:
172
 
173
iASL/DTC: Major update for new grammar features. Allow generic data types in
174
custom ACPI tables. Field names are now optional. Any line can be split to
175
multiple lines using the continuation char (\). Large buffers now use line-
176
continuation character(s) and no colon on the continuation lines. See the
177
grammar
178
update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob Moore.
179
 
180
iASL: Mark ASL "Return()" and the simple "Return" as "Null" return statements.
181
Since the parser stuffs a "zero" as the return value for these statements (due
182
to
183
the underlying AML grammar), they were seen as "return with value" by the iASL
184
semantic checking. They are now seen correctly as "null" return statements.
185
 
186
iASL: Check if a_REG declaration has a corresponding Operation Region. Adds a
187
check for each _REG to ensure that there is in fact a corresponding operation
188
region declaration in the same scope. If not, the _REG method is not very
189
useful
190
since it probably won't be executed. ACPICA BZ 915.
191
 
192
iASL/DTC: Finish support for expression evaluation. Added a new expression
193
parser
194
that implements c-style operator precedence and parenthesization. ACPICA
195
bugzilla
196
908.
197
 
198
Disassembler/DTC: Remove support for () and <> style comments in data tables.
199
Now
200
that DTC has full expression support, we don't want to have comment strings
201
that
202
start with a parentheses or a less-than symbol. Now, only the standard /* and
203
//
204
comments are supported, as well as the bracket [] comments.
205
 
206
AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
207
"unusual"
208
headers in the acpidump file. Update the header validation to support these
209
tables. Problem introduced in previous AcpiXtract version in the change to
210
support "wrong checksum" error messages emitted by acpidump utility.
211
 
212
iASL: Add a * option to generate all template files (as a synonym for ALL) as
213
in
214
"iasl -T *" or "iasl -T ALL".
215
 
216
iASL/DTC: Do not abort compiler on fatal errors. We do not want to completely
217
abort the compiler on "fatal" errors, simply should abort the current compile.
218
This allows multiple compiles with a single (possibly wildcard) compiler
219
invocation.
220
 
221
----------------------------------------
222
16 March 2011. Summary of changes for version 20110316:
223
 
224
1) ACPI CA Core Subsystem:
225
 
226
Fixed a problem caused by a _PRW method appearing at the namespace root scope
227
during the setup of wake GPEs. A fault could occur if a _PRW directly under
228
the
229
root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
230
 
231
Implemented support for "spurious" Global Lock interrupts. On some systems, a
232
global lock interrupt can occur without the pending flag being set. Upon a GL
233
interrupt, we now ensure that a thread is actually waiting for the lock before
234
signaling GL availability. Rafael Wysocki, Bob Moore.
235
 
236
Example Code and Data Size: These are the sizes for the OS-independent
237
acpica.lib
238
produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of
239
the code includes the debug output trace mechanism and has a much larger code
240
and
241
data size.
242
 
243
  Previous Release (VC 9.0):
244
    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
245
    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
246
  Current Release (VC 9.0):
247
    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
248
    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
249
 
250
2) iASL Compiler/Disassembler and Tools:
251
 
252
Implemented full support for the "SLIC" ACPI table. Includes support in the
253
header files, disassembler, table compiler, and template generator. Bob Moore,
254
Lin Ming.
255
 
256
AcpiXtract: Correctly handle embedded comments and messages from AcpiDump.
257
Apparently some or all versions of acpidump will occasionally emit a comment
258
like
259
"Wrong checksum", etc., into the dump file. This was causing problems for
260
AcpiXtract. ACPICA BZ 905.
261
 
262
iASL: Fix the Linux makefile by removing an inadvertent double file inclusion.
263
ACPICA BZ 913.
264
 
265
AcpiExec: Update installation of operation region handlers. Install one
266
handler
267
for a user-defined address space. This is used by the ASL test suite (ASLTS).
268
 
269
----------------------------------------
270
11 February 2011. Summary of changes for version 20110211:
271
 
272
1) ACPI CA Core Subsystem:
273
 
274
Added a mechanism to defer _REG methods for some early-installed handlers.
275
Most user handlers should be installed before call to AcpiEnableSubsystem.
276
However, Event handlers and region handlers should be installed after
277
AcpiInitializeObjects. Override handlers for the "default" regions should be
278
installed early, however. This change executes all _REG methods for the
279
default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
280
chicken/egg issues between them. ACPICA BZ 848.
281
 
282
Implemented an optimization for GPE detection. This optimization will simply
283
ignore GPE registers that contain no enabled GPEs -- there is no need to
284
read the register since this information is available internally. This
285
becomes more important on machines with a large GPE space. ACPICA bugzilla
286
884. Lin Ming. Suggestion from Joe Liu.
287
 
288
Removed all use of the highly unreliable FADT revision field. The revision
289
number in the FADT has been found to be completely unreliable and cannot be
290
trusted. Only the actual table length can be used to infer the version. This
291
change updates the ACPICA core and the disassembler so that both no longer
292
even look at the FADT version and instead depend solely upon the FADT
293
length.
294
 
295
Fix an unresolved name issue for the no-debug and no-error-message source
296
generation cases. The _AcpiModuleName was left undefined in these cases, but
297
it is actually needed as a parameter to some interfaces. Define
298
_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
299
 
300
Split several large files (makefiles and project files updated)
301
  utglobal.c   -> utdecode.c
302
  dbcomds.c    -> dbmethod.c dbnames.c
303
  dsopcode.c   -> dsargs.c dscontrol.c
304
  dsload.c     -> dsload2.c
305
  aslanalyze.c -> aslbtypes.c aslwalks.c
306
 
307
Example Code and Data Size: These are the sizes for the OS-independent
308
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
309
debug version of the code includes the debug output trace mechanism and has
310
a much larger code and data size.
311
 
312
  Previous Release (VC 9.0):
313
    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
314
    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
315
  Current Release (VC 9.0):
316
    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
317
    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
318
 
319
2) iASL Compiler/Disassembler and Tools:
320
 
321
iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
322
These are useful C-style macros with the standard definitions. ACPICA
323
bugzilla 898.
324
 
325
iASL/DTC: Added support for integer expressions and labels. Support for full
326
expressions for all integer fields in all ACPI tables. Support for labels in
327
"generic" portions of tables such as UEFI. See the iASL reference manual.
328
 
329
Debugger: Added a command to display the status of global handlers. The
330
"handlers" command will display op region, fixed event, and miscellaneous
331
global handlers. installation status -- and for op regions, whether default
332
or user-installed handler will be used.
333
 
334
iASL: Warn if reserved method incorrectly returns a value. Many predefined
335
names are defined such that they do not return a value. If implemented as a
336
method, issue a warning if such a name explicitly returns a value. ACPICA
337
Bugzilla 855.
338
 
339
iASL: Added detection of GPE method name conflicts. Detects a conflict where
340
there are two GPE methods of the form _Lxy and _Exy in the same scope. (For
341
example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
342
 
343
iASL/DTC: Fixed a couple input scanner issues with comments and line
344
numbers. Comment remover could get confused and miss a comment ending. Fixed
345
a problem with line counter maintenance.
346
 
347
iASL/DTC: Reduced the severity of some errors from fatal to error. There is
348
no need to abort on simple errors within a field definition.
349
 
350
Debugger: Simplified the output of the help command. All help output now in
351
a single screen, instead of help subcommands. ACPICA Bugzilla 897.
352
 
353
----------------------------------------
354
12 January 2011. Summary of changes for version 20110112:
355
 
356
1) ACPI CA Core Subsystem:
357
 
358
Fixed a race condition between method execution and namespace walks that can
359
possibly cause a fault. The problem was apparently introduced in version
360
20100528 as a result of a performance optimization that reduces the number of
361
namespace walks upon method exit by using the delete_namespace_subtree
362
function instead of the delete_namespace_by_owner function used previously.
363
Bug is a missing namespace lock in the delete_namespace_subtree function.
364
dana.myers@oracle.com
365
 
366
Fixed several issues and a possible fault with the automatic "serialized"
367
method support. History: This support changes a method to "serialized" on the
368
fly if the method generates an AE_ALREADY_EXISTS error, indicating the
369
possibility that it cannot handle reentrancy. This fix repairs a couple of
370
issues seen in the field, especially on machines with many cores:
371
 
372
    1) Delete method children only upon the exit of the last thread,
373
       so as to not delete objects out from under other running threads
374
      (and possibly causing a fault.)
375
    2) Set the "serialized" bit for the method only upon the exit of the
376
       Last thread, so as to not cause deadlock when running threads
377
       attempt to exit.
378
    3) Cleanup the use of the AML "MethodFlags" and internal method flags
379
       so that there is no longer any confusion between the two.
380
 
381
    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
382
 
383
Debugger: Now lock the namespace for duration of a namespace dump. Prevents
384
issues if the namespace is changing dynamically underneath the debugger.
385
Especially affects temporary namespace nodes, since the debugger displays
386
these also.
387
 
388
Updated the ordering of include files. The ACPICA headers should appear
389
before any compiler-specific headers (stdio.h, etc.) so that acenv.h can set
390
any necessary compiler-specific defines, etc. Affects the ACPI-related tools
391
and utilities.
392
 
393
Updated all ACPICA copyrights and signons to 2011. Added the 2011 copyright
394
to all module headers and signons, including the Linux header. This affects
395
virtually every file in the ACPICA core subsystem, iASL compiler, and all
396
utilities.
397
 
398
Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
399
project files for VC++ 6.0 are now obsolete. New project files can be found
400
under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
401
details.
402
 
403
Example Code and Data Size: These are the sizes for the OS-independent
404
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
405
debug version of the code includes the debug output trace mechanism and has a
406
much larger code and data size.
407
 
408
  Previous Release (VC 6.0):
409
    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
410
    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
411
  Current Release (VC 9.0):
412
    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
413
    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
414
 
415
2) iASL Compiler/Disassembler and Tools:
416
 
417
iASL: Added generic data types to the Data Table compiler. Add "generic" data
418
types such as UINT32, String, Unicode, etc., to simplify the generation of
419
platform-defined tables such as UEFI. Lin Ming.
420
 
421
iASL: Added listing support for the Data Table Compiler. Adds listing support
422
(-l) to display actual binary output for each line of input code.
423
 
424
----------------------------------------
425
09 December 2010. Summary of changes for version 20101209:
426
 
427
1) ACPI CA Core Subsystem:
428
 
429
Completed the major overhaul of the GPE support code that was begun in July
430
2010. Major features include: removal of _PRW execution in ACPICA (host
431
executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
432
changes to existing interfaces, simplification of GPE handler operation, and
433
a handful of new interfaces:
434
 
435
    AcpiUpdateAllGpes
436
    AcpiFinishGpe
437
    AcpiSetupGpeForWake
438
    AcpiSetGpeWakeMask
439
    One new file, evxfgpe.c to consolidate all external GPE interfaces.
440
 
441
See the ACPICA Programmer Reference for full details and programming
442
information. See the new section 4.4 "General Purpose Event (GPE) Support"
443
for a full overview, and section 8.7 "ACPI General Purpose Event Management"
444
for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin Ming,
445
Bob Moore, Rafael Wysocki.
446
 
447
Implemented a new GPE feature for Windows compatibility, the "Implicit Wake
448
GPE Notify". This feature will automatically issue a Notify(2) on a device
449
when a Wake GPE is received if there is no corresponding GPE method or
450
handler. ACPICA BZ 870.
451
 
452
Fixed a problem with the Scope() operator during table parse and load phase.
453
During load phase (table load or method execution), the scope operator should
454
not enter the target into the namespace. Instead, it should open a new scope
455
at the target location. Linux BZ 19462, ACPICA BZ 882.
456
 
457
Example Code and Data Size: These are the sizes for the OS-independent
458
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
459
debug version of the code includes the debug output trace mechanism and has a
460
much larger code and data size.
461
 
462
  Previous Release:
463
    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
464
    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
465
  Current Release:
466
    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
467
    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
468
 
469
2) iASL Compiler/Disassembler and Tools:
470
 
471
iASL: Relax the alphanumeric restriction on _CID strings. These strings are
472
"bus-specific" per the ACPI specification, and therefore any characters are
473
acceptable. The only checks that can be performed are for a null string and
474
perhaps for a leading asterisk. ACPICA BZ 886.
475
 
476
iASL: Fixed a problem where a syntax error that caused a premature EOF
477
condition on the source file emitted a very confusing error message. The
478
premature EOF is now detected correctly. ACPICA BZ 891.
479
 
480
Disassembler: Decode the AccessSize within a Generic Address Structure (byte
481
access, word access, etc.) Note, this field does not allow arbitrary bit
482
access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
483
 
484
New: AcpiNames utility - Example namespace dump utility. Shows an example of
485
ACPICA configuration for a minimal namespace dump utility. Uses table and
486
namespace managers, but no AML interpreter. Does not add any functionality
487
over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
488
partition and configure ACPICA. ACPICA BZ 883.
489
 
490
AML Debugger: Increased the debugger buffer size for method return objects.
491
Was 4K, increased to 16K. Also enhanced error messages for debugger method
492
execution, including the buffer overflow case.
493
 
494
----------------------------------------
495
13 October 2010. Summary of changes for version 20101013:
496
 
497
1) ACPI CA Core Subsystem:
498
 
499
Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, now
500
clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
501
HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
502
 
503
Changed the type of the predefined namespace object _TZ from ThermalZone to
504
Device. This was found to be confusing to the host software that processes
505
the various thermal zones, since _TZ is not really a ThermalZone. However, a
506
Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
507
Zhang.
508
 
509
Added Windows Vista SP2 to the list of supported _OSI strings. The actual
510
string is "Windows 2006 SP2".
511
 
512
Eliminated duplicate code in AcpiUtExecute* functions. Now that the nsrepair
513
code automatically repairs _HID-related strings, this type of code is no
514
longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 878.
515
 
516
Example Code and Data Size: These are the sizes for the OS-independent
517
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
518
debug version of the code includes the debug output trace mechanism and has a
519
much larger code and data size.
520
 
521
  Previous Release:
522
    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
523
    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
524
  Current Release:
525
    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
526
    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
527
 
528
2) iASL Compiler/Disassembler and Tools:
529
 
530
iASL: Implemented additional compile-time validation for _HID strings. The
531
non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the length of
532
the string must be exactly seven or eight characters. For both _HID and _CID
533
strings, all characters must be alphanumeric. ACPICA BZ 874.
534
 
535
iASL: Allow certain "null" resource descriptors. Some BIOS code creates
536
descriptors that are mostly or all zeros, with the expectation that they will
537
be filled in at runtime. iASL now allows this as long as there is a "resource
538
tag" (name) associated with the descriptor, which gives the ASL a handle
539
needed to modify the descriptor. ACPICA BZ 873.
540
 
541
Added single-thread support to the generic Unix application OSL. Primarily
542
for iASL support, this change removes the use of semaphores in the single-
543
threaded ACPICA tools/applications - increasing performance. The
544
_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
545
option. ACPICA BZ 879.
546
 
547
AcpiExec: several fixes for the 64-bit version. Adds XSDT support and support
548
for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
549
 
550
iASL: Moved all compiler messages to a new file, aslmessages.h.
551
 
552
----------------------------------------
553
15 September 2010. Summary of changes for version 20100915:
554
 
555
1) ACPI CA Core Subsystem:
556
 
557
Removed the AcpiOsDerivePciId OSL interface. The various host implementations
558
of this function were not OS-dependent and are now obsolete and can be
559
removed from all host OSLs. This function has been replaced by
560
AcpiHwDerivePciId, which is now part of the ACPICA core code.
561
AcpiHwDerivePciId has been implemented without recursion. Adds one new
562
module, hwpci.c. ACPICA BZ 857.
563
 
564
Implemented a dynamic repair for _HID and _CID strings. The following
565
problems are now repaired at runtime: 1) Remove a leading asterisk in the
566
string, and 2) the entire string is uppercased. Both repairs are in
567
accordance with the ACPI specification and will simplify host driver code.
568
ACPICA BZ 871.
569
 
570
The ACPI_THREAD_ID type is no longer configurable, internally it is now
571
always UINT64. This simplifies the ACPICA code, especially any printf output.
572
UINT64 is the only common data type for all thread_id types across all
573
operating systems. It is now up to the host OSL to cast the native thread_id
574
type to UINT64 before returning the value to ACPICA (via AcpiOsGetThreadId).
575
Lin Ming, Bob Moore.
576
 
577
Added the ACPI_INLINE type to enhance the ACPICA configuration. The "inline"
578
keyword is not standard across compilers, and this type allows inline to be
579
configured on a per-compiler basis. Lin Ming.
580
 
581
Made the system global AcpiGbl_SystemAwakeAndRunning publically available.
582
Added an extern for this boolean in acpixf.h. Some hosts utilize this value
583
during suspend/restore operations. ACPICA BZ 869.
584
 
585
All code that implements error/warning messages with the "ACPI:" prefix has
586
been moved to a new module, utxferror.c.
587
 
588
The UINT64_OVERLAY was moved to utmath.c, which is the only module where it
589
is used. ACPICA BZ 829. Lin Ming, Bob Moore.
590
 
591
Example Code and Data Size: These are the sizes for the OS-independent
592
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
593
debug version of the code includes the debug output trace mechanism and has a
594
much larger code and data size.
595
 
596
  Previous Release:
597
    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
598
    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
599
  Current Release:
600
    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
601
    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
602
 
603
2) iASL Compiler/Disassembler and Tools:
604
 
605
iASL/Disassembler: Write ACPI errors to stderr instead of the output file.
606
This keeps the output files free of random error messages that may originate
607
from within the namespace/interpreter code. Used this opportunity to merge
608
all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
609
866. Lin Ming, Bob Moore.
610
 
611
Tools: update some printfs for ansi warnings on size_t. Handle width change
612
of size_t on 32-bit versus 64-bit generations. Lin Ming.
613
 
614
----------------------------------------
615
06 August 2010. Summary of changes for version 20100806:
616
 
617
1) ACPI CA Core Subsystem:
618
 
619
Designed and implemented a new host interface to the _OSI support code. This
620
will allow the host to dynamically add or remove multiple _OSI strings, as
621
well as install an optional handler that is called for each _OSI invocation.
622
Also added a new AML debugger command, 'osi' to display and modify the global
623
_OSI string table, and test support in the AcpiExec utility. See the ACPICA
624
reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
625
New Functions:
626
    AcpiInstallInterface - Add an _OSI string.
627
    AcpiRemoveInterface - Delete an _OSI string.
628
    AcpiInstallInterfaceHandler - Install optional _OSI handler.
629
Obsolete Functions:
630
    AcpiOsValidateInterface - no longer used.
631
New Files:
632
    source/components/utilities/utosi.c
633
 
634
Re-introduced the support to enable multi-byte transfers for Embedded
635
Controller (EC) operation regions. A reported problem was found to be a bug
636
in the host OS, not in the multi-byte support. Previously, the maximum data
637
size passed to the EC operation region handler was a single byte. There are
638
often EC Fields larger than one byte that need to be transferred, and it is
639
useful for the EC driver to lock these as a single transaction. This change
640
enables single transfers larger than 8 bits. This effectively changes the
641
access to the EC space from ByteAcc to AnyAcc, and will probably require
642
changes to the host OS Embedded Controller driver to enable 16/32/64/256-bit
643
transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
644
 
645
Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
646
prototype in acpiosxf.h had the output value pointer as a (void *).
647
It should be a (UINT64 *). This may affect some host OSL code.
648
 
649
Fixed a couple problems with the recently modified Linux makefiles for iASL
650
and AcpiExec. These new makefiles place the generated object files in the
651
local directory so that there can be no collisions between the files that are
652
shared between them that are compiled with different options.
653
 
654
Example Code and Data Size: These are the sizes for the OS-independent
655
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
656
debug version of the code includes the debug output trace mechanism and has a
657
much larger code and data size.
658
 
659
  Previous Release:
660
    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
661
    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
662
  Current Release:
663
    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
664
    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
665
 
666
2) iASL Compiler/Disassembler and Tools:
667
 
668
iASL/Disassembler: Added a new option (-da, "disassemble all") to load the
669
namespace from and disassemble an entire group of AML files. Useful for
670
loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) and
671
disassembling with one simple command. ACPICA BZ 865. Lin Ming.
672
 
673
iASL: Allow multiple invocations of -e option. This change allows multiple
674
uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 834.
675
Lin Ming.
676
 
677
----------------------------------------
678
02 July 2010. Summary of changes for version 20100702:
679
 
680
1) ACPI CA Core Subsystem:
681
 
682
Implemented several updates to the recently added GPE reference count
683
support. The model for "wake" GPEs is changing to give the host OS complete
684
control of these GPEs. Eventually, the ACPICA core will not execute any _PRW
685
methods, since the host already must execute them. Also, additional changes
686
were made to help ensure that the reference counts are kept in proper
687
synchronization with reality. Rafael J. Wysocki.
688
 
689
1) Ensure that GPEs are not enabled twice during initialization.
690
2) Ensure that GPE enable masks stay in sync with the reference count.
691
3) Do not inadvertently enable GPEs when writing GPE registers.
692
4) Remove the internal wake reference counter and add new AcpiGpeWakeup
693
interface. This interface will set or clear individual GPEs for wakeup.
694
5) Remove GpeType argument from AcpiEnable and AcpiDisable. These interfaces
695
are now used for "runtime" GPEs only.
696
 
697
Changed the behavior of the GPE install/remove handler interfaces. The GPE is
698
no longer disabled during this process, as it was found to cause problems on
699
some machines. Rafael J. Wysocki.
700
 
701
Reverted a change introduced in version 20100528 to enable Embedded
702
Controller multi-byte transfers. This change was found to cause problems with
703
Index Fields and possibly Bank Fields. It will be reintroduced when these
704
problems have been resolved.
705
 
706
Fixed a problem with references to Alias objects within Package Objects. A
707
reference to an Alias within the definition of a Package was not always
708
resolved properly. Aliases to objects like Processors, Thermal zones, etc.
709
were resolved to the actual object instead of a reference to the object as it
710
should be. Package objects are only allowed to contain integer, string,
711
buffer, package, and reference objects. Redhat bugzilla 608648.
712
 
713
Example Code and Data Size: These are the sizes for the OS-independent
714
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
715
debug version of the code includes the debug output trace mechanism and has a
716
much larger code and data size.
717
 
718
  Previous Release:
719
    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
720
    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
721
  Current Release:
722
    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
723
    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
724
 
725
2) iASL Compiler/Disassembler and Tools:
726
 
727
iASL: Implemented a new compiler subsystem to allow definition and
728
compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. These
729
are called "ACPI Data Tables", and the new compiler is the "Data Table
730
Compiler". This compiler is intended to simplify the existing error-prone
731
process of creating these tables for the BIOS, as well as allowing the
732
disassembly, modification, recompilation, and override of existing ACPI data
733
tables. See the iASL User Guide for detailed information.
734
 
735
iASL: Implemented a new Template Generator option in support of the new Data
736
Table Compiler. This option will create examples of all known ACPI tables
737
that can be used as the basis for table development. See the iASL
738
documentation and the -T option.
739
 
740
Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
741
Descriptor Table).
742
 
743
Updated the Linux makefiles for iASL and AcpiExec to place the generated
744
object files in the local directory so that there can be no collisions
745
between the shared files between them that are generated with different
746
options.
747
 
748
Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. Use
749
the #define __APPLE__ to enable this support.
750
 
751
----------------------------------------
1498 serge 752
28 May 2010. Summary of changes for version 20100528:
753
 
754
Note: The ACPI 4.0a specification was released on April 5, 2010 and is
755
available at www.acpi.info. This is primarily an errata release.
756
 
757
1) ACPI CA Core Subsystem:
758
 
759
Undefined ACPI tables: We are looking for the definitions for the following
760
ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
761
 
762
Implemented support to enable multi-byte transfers for Embedded Controller
763
(EC) operation regions. Previously, the maximum data size passed to the EC
764
operation region handler was a single byte. There are often EC Fields larger
765
than one byte that need to be transferred, and it is useful for the EC driver
766
to lock these as a single transaction. This change enables single transfers
767
larger than 8 bits. This effectively changes the access to the EC space from
768
ByteAcc to AnyAcc, and will probably require changes to the host OS Embedded
769
Controller driver to enable 16/32/64/256-bit transfers in addition to 8-bit
770
transfers. Alexey Starikovskiy, Lin Ming
771
 
772
Implemented a performance enhancement for namespace search and access. This
773
change enhances the performance of namespace searches and walks by adding a
774
backpointer to the parent in each namespace node. On large namespaces, this
775
change can improve overall ACPI performance by up to 9X. Adding a pointer to
776
each namespace node increases the overall size of the internal namespace by
777
about 5%, since each namespace entry usually consists of both a namespace
778
node and an ACPI operand object. However, this is the first growth of the
779
namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
780
 
781
Implemented a performance optimization that reduces the number of namespace
782
walks. On control method exit, only walk the namespace if the method is known
783
to have created namespace objects outside of its local scope. Previously, the
784
entire namespace was traversed on each control method exit. This change can
785
improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob Moore.
786
 
787
Added support to truncate I/O addresses to 16 bits for Windows compatibility.
788
Some ASL code has been seen in the field that inadvertently has bits set
789
above bit 15. This feature is optional and is enabled if the BIOS requests
790
any Windows OSI strings. It can also be enabled by the host OS. Matthew
791
Garrett, Bob Moore.
792
 
793
Added support to limit the maximum time for the ASL Sleep() operator. To
794
prevent accidental deep sleeps, limit the maximum time that Sleep() will
795
actually sleep. Configurable, the default maximum is two seconds. ACPICA
796
bugzilla 854.
797
 
798
Added run-time validation support for the _WDG and_WED Microsoft predefined
799
methods. These objects are defined by "Windows Instrumentation", and are not
800
part of the ACPI spec. ACPICA BZ 860.
801
 
802
Expanded all statistic counters used during namespace and device
803
initialization from 16 to 32 bits in order to support very large namespaces.
804
 
805
Replaced all instances of %d in printf format specifiers with %u since nearly
806
all integers in ACPICA are unsigned.
807
 
808
Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly returned
809
as AE_NO_HANDLER.
810
 
811
Example Code and Data Size: These are the sizes for the OS-independent
812
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
813
debug version of the code includes the debug output trace mechanism and has a
814
much larger code and data size.
815
 
816
  Previous Release:
817
    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
818
    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
819
  Current Release:
820
    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
821
    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
822
 
823
2) iASL Compiler/Disassembler and Tools:
824
 
825
iASL: Added compiler support for the _WDG and_WED Microsoft predefined
826
methods. These objects are defined by "Windows Instrumentation", and are not
827
part of the ACPI spec. ACPICA BZ 860.
828
 
829
AcpiExec: added option to disable the memory tracking mechanism. The -dt
830
option will disable the tracking mechanism, which improves performance
831
considerably.
832
 
833
AcpiExec: Restructured the command line options into -d (disable) and -e
834
(enable) options.
835
 
836
----------------------------------------
837
28 April 2010. Summary of changes for version 20100428:
838
 
839
1) ACPI CA Core Subsystem:
840
 
841
Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
842
including FADT-based and GPE Block Devices, execute any _PRW methods in the
843
new table, and process any _Lxx/_Exx GPE methods in the new table. Any
844
runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
845
immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
846
Devices. Provides compatibility with other ACPI implementations. Two new
847
files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob Moore.
848
 
849
Fixed a regression introduced in version 20100331 within the table manager
850
where initial table loading could fail. This was introduced in the fix for
851
AcpiReallocateRootTable. Also, renamed some of fields in the table manager
852
data structures to clarify their meaning and use.
853
 
854
Fixed a possible allocation overrun during internal object copy in
855
AcpiUtCopySimpleObject. The original code did not correctly handle the case
856
where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 847.
857
 
858
Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
859
possible access beyond end-of-allocation. Also, now fully validate descriptor
860
(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
861
 
862
Example Code and Data Size: These are the sizes for the OS-independent
863
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
864
debug version of the code includes the debug output trace mechanism and has a
865
much larger code and data size.
866
 
867
  Previous Release:
868
    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
869
    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
870
  Current Release:
871
    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
872
    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
873
 
874
2) iASL Compiler/Disassembler and Tools:
875
 
876
iASL: Implemented Min/Max/Len/Gran validation for address resource
877
descriptors. This change implements validation for the address fields that
878
are common to all address-type resource descriptors. These checks are
879
implemented: Checks for valid Min/Max, length within the Min/Max window,
880
valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as per
881
table 6-40 in the ACPI 4.0a specification. Also split the large aslrestype1.c
882
and aslrestype2.c files into five new files. ACPICA BZ 840.
883
 
884
iASL: Added support for the _Wxx predefined names. This support was missing
885
and these names were not recognized by the compiler as valid predefined
886
names. ACPICA BZ 851.
887
 
888
iASL: Added an error for all predefined names that are defined to return no
889
value and thus must be implemented as Control Methods. These include all of
890
the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
891
names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
892
 
893
iASL: Implemented the -ts option to emit hex AML data in ASL format, as an
894
ASL Buffer. Allows ACPI tables to be easily included within ASL files, to be
895
dynamically loaded via the Load() operator. Also cleaned up output for the -
896
ta and -tc options. ACPICA BZ 853.
897
 
898
Tests: Added a new file with examples of extended iASL error checking.
899
Demonstrates the advanced error checking ability of the iASL compiler.
900
Available at tests/misc/badcode.asl.
901
 
902
----------------------------------------
903
31 March 2010. Summary of changes for version 20100331:
904
 
905
1) ACPI CA Core Subsystem:
906
 
907
Completed a major update for the GPE support in order to improve support for
908
shared GPEs and to simplify both host OS and ACPICA code. Added a reference
909
count mechanism to support shared GPEs that require multiple device drivers.
910
Several external interfaces have changed. One external interface has been
911
removed. One new external interface was added. Most of the GPE external
912
interfaces now use the GPE spinlock instead of the events mutex (and the
913
Flags parameter for many GPE interfaces has been removed.) See the updated
914
ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, Rafael
915
Wysocki. ACPICA BZ 831.
916
 
917
Changed:
918
    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
919
Removed:
920
    AcpiSetGpeType
921
New:
922
    AcpiSetGpe
923
 
924
Implemented write support for DataTable operation regions. These regions are
925
defined via the DataTableRegion() operator. Previously, only read support was
926
implemented. The ACPI specification allows DataTableRegions to be read/write,
927
however.
928
 
929
Implemented a new subsystem option to force a copy of the DSDT to local
930
memory. Optionally copy the entire DSDT to local memory (instead of simply
931
mapping it.) There are some (albeit very rare) BIOSs that corrupt or replace
932
the original DSDT, creating the need for this option. Default is FALSE, do
933
not copy the DSDT.
934
 
935
Implemented detection of a corrupted or replaced DSDT. This change adds
936
support to detect a DSDT that has been corrupted and/or replaced from outside
937
the OS (by firmware). This is typically catastrophic for the system, but has
938
been seen on some machines. Once this problem has been detected, the DSDT
939
copy option can be enabled via system configuration. Lin Ming, Bob Moore.
940
 
941
Fixed two problems with AcpiReallocateRootTable during the root table copy.
942
When copying the root table to the new allocation, the length used was
943
incorrect. The new size was used instead of the current table size, meaning
944
too much data was copied. Also, the count of available slots for ACPI tables
945
was not set correctly. Alexey Starikovskiy, Bob Moore.
946
 
947
Example Code and Data Size: These are the sizes for the OS-independent
948
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
949
debug version of the code includes the debug output trace mechanism and has a
950
much larger code and data size.
951
 
952
  Previous Release:
953
    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
954
    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
955
  Current Release:
956
    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
957
    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
958
 
959
2) iASL Compiler/Disassembler and Tools:
960
 
961
iASL: Implement limited typechecking for values returned from predefined
962
control methods. The type of any returned static (unnamed) object is now
963
validated. For example, Return(1). ACPICA BZ 786.
964
 
965
iASL: Fixed a predefined name object verification regression. Fixes a problem
966
introduced in version 20100304. An error is incorrectly generated if a
967
predefined name is declared as a static named object with a value defined
968
using the keywords "Zero", "One", or "Ones". Lin Ming.
969
 
970
iASL: Added Windows 7 support for the -g option (get local ACPI tables) by
971
reducing the requested registry access rights. ACPICA BZ 842.
972
 
973
Disassembler: fixed a possible fault when generating External() statements.
974
Introduced in commit ae7d6fd: Properly handle externals with parent-prefix
975
(carat). Fixes a string length allocation calculation. Lin Ming.
976
 
977
----------------------------------------
978
04 March 2010. Summary of changes for version 20100304:
979
 
980
1) ACPI CA Core Subsystem:
981
 
982
Fixed a possible problem with the AML Mutex handling function
983
AcpiExReleaseMutex where the function could fault under the very rare
984
condition when the interpreter has blocked, the interpreter lock is released,
985
the interpreter is then reentered via the same thread, and attempts to
986
acquire an AML mutex that was previously acquired. FreeBSD report 140979. Lin
987
Ming.
988
 
989
Implemented additional configuration support for the AML "Debug Object".
990
Output from the debug object can now be enabled via a global variable,
991
AcpiGbl_EnableAmlDebugObject. This will assist with remote machine debugging.
992
This debug output is now available in the release version of ACPICA instead
993
of just the debug version. Also, the entire debug output module can now be
994
configured out of the ACPICA build if desired. One new file added,
995
executer/exdebug.c. Lin Ming, Bob Moore.
996
 
997
Added header support for the ACPI MCHI table (Management Controller Host
998
Interface Table). This table was added in ACPI 4.0, but the defining document
999
has only recently become available.
1000
 
1001
Standardized output of integer values for ACPICA warnings/errors. Always use
1002
0x prefix for hex output, always use %u for unsigned integer decimal output.
1003
Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 400
1004
invocations.) These invocations were converted from the original
1005
ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
1006
 
1007
Example Code and Data Size: These are the sizes for the OS-independent
1008
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1009
debug version of the code includes the debug output trace mechanism and has a
1010
much larger code and data size.
1011
 
1012
  Previous Release:
1013
    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
1014
    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
1015
  Current Release:
1016
    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
1017
    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
1018
 
1019
2) iASL Compiler/Disassembler and Tools:
1020
 
1021
iASL: Implemented typechecking support for static (non-control method)
1022
predefined named objects that are declared with the Name() operator. For
1023
example, the type of this object is now validated to be of type Integer:
1024
Name(_BBN, 1). This change migrates the compiler to using the core predefined
1025
name table instead of maintaining a local version. Added a new file,
1026
aslpredef.c. ACPICA BZ 832.
1027
 
1028
Disassembler: Added support for the ACPI 4.0 MCHI table.
1029
 
1030
----------------------------------------
1031
21 January 2010. Summary of changes for version 20100121:
1032
 
1033
1) ACPI CA Core Subsystem:
1034
 
1035
Added the 2010 copyright to all module headers and signons. This affects
1036
virtually every file in the ACPICA core subsystem, the iASL compiler, the
1037
tools/utilities, and the test suites.
1038
 
1039
Implemented a change to the AcpiGetDevices interface to eliminate unnecessary
1040
invocations of the _STA method. In the case where a specific _HID is
1041
requested, do not run _STA until a _HID match is found. This eliminates
1042
potentially dozens of _STA calls during a search for a particular device/HID,
1043
which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
1044
 
1045
Implemented an additional repair for predefined method return values. Attempt
1046
to repair unexpected NULL elements within returned Package objects. Create an
1047
Integer of value zero, a NULL String, or a zero-length Buffer as appropriate.
1048
ACPICA BZ 818. Lin Ming, Bob Moore.
1049
 
1050
Removed the obsolete ACPI_INTEGER data type. This type was introduced as the
1051
code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 (with
1052
64-bit AML integers). It is now obsolete and this change removes it from the
1053
ACPICA code base, replaced by UINT64. The original typedef has been retained
1054
for now for compatibility with existing device driver code. ACPICA BZ 824.
1055
 
1056
Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field in
1057
the parse tree object.
1058
 
1059
Added additional warning options for the gcc-4 generation. Updated the source
1060
accordingly. This includes some code restructuring to eliminate unreachable
1061
code, elimination of some gotos, elimination of unused return values, some
1062
additional casting, and removal of redundant declarations.
1063
 
1064
Example Code and Data Size: These are the sizes for the OS-independent
1065
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1066
debug version of the code includes the debug output trace mechanism and has a
1067
much larger code and data size.
1068
 
1069
  Previous Release:
1070
    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
1071
    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
1072
  Current Release:
1073
    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
1074
    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
1075
 
1076
2) iASL Compiler/Disassembler and Tools:
1077
 
1078
No functional changes for this release.
1079
 
1080
----------------------------------------
1081
14 December 2009. Summary of changes for version 20091214:
1082
 
1083
1) ACPI CA Core Subsystem:
1084
 
1085
Enhanced automatic data type conversions for predefined name repairs. This
1086
change expands the automatic repairs/conversions for predefined name return
1087
values to make Integers, Strings, and Buffers fully interchangeable. Also, a
1088
Buffer can be converted to a Package of Integers if necessary. The nsrepair.c
1089
module was completely restructured. Lin Ming, Bob Moore.
1090
 
1091
Implemented automatic removal of null package elements during predefined name
1092
repairs. This change will automatically remove embedded and trailing NULL
1093
package elements from returned package objects that are defined to contain a
1094
variable number of sub-packages. The driver is then presented with a package
1095
with no null elements to deal with. ACPICA BZ 819.
1096
 
1097
Implemented a repair for the predefined _FDE and _GTM names. The expected
1098
return value for both names is a Buffer of 5 DWORDs. This repair fixes two
1099
possible problems (both seen in the field), where a package of integers is
1100
returned, or a buffer of BYTEs is returned. With assistance from Jung-uk Kim.
1101
 
1102
Implemented additional module-level code support. This change will properly
1103
execute module-level code that is not at the root of the namespace (under a
1104
Device object, etc.). Now executes the code within the current scope instead
1105
of the root. ACPICA BZ 762. Lin Ming.
1106
 
1107
Fixed possible mutex acquisition errors when running _REG methods. Fixes a
1108
problem where mutex errors can occur when running a _REG method that is in
1109
the same scope as a method-defined operation region or an operation region
1110
under a module-level IF block. This type of code is rare, so the problem has
1111
not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
1112
 
1113
Fixed a possible memory leak during module-level code execution. An object
1114
could be leaked for each block of executed module-level code if the
1115
interpreter slack mode is enabled This change deletes any implicitly returned
1116
object from the module-level code block. Lin Ming.
1117
 
1118
Removed messages for successful predefined repair(s). The repair mechanism
1119
was considered too wordy. Now, messages are only unconditionally emitted if
1120
the return object cannot be repaired. Existing messages for successful
1121
repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 827.
1122
 
1123
Example Code and Data Size: These are the sizes for the OS-independent
1124
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1125
debug version of the code includes the debug output trace mechanism and has a
1126
much larger code and data size.
1127
 
1128
  Previous Release:
1129
    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
1130
    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
1131
  Current Release:
1132
    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
1133
    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
1134
 
1135
2) iASL Compiler/Disassembler and Tools:
1136
 
1137
iASL: Fixed a regression introduced in 20091112 where intermediate .SRC files
1138
were no longer automatically removed at the termination of the compile.
1139
 
1140
acpiexec: Implemented the -f option to specify default region fill value.
1141
This option specifies the value used to initialize buffers that simulate
1142
operation regions. Default value is zero. Useful for debugging problems that
1143
depend on a specific initial value for a region or field.
1144
 
1145
----------------------------------------
1146
12 November 2009. Summary of changes for version 20091112:
1147
 
1148
1) ACPI CA Core Subsystem:
1149
 
1150
Implemented a post-order callback to AcpiWalkNamespace. The existing
1151
interface only has a pre-order callback. This change adds an additional
1152
parameter for a post-order callback which will be more useful for bus scans.
1153
ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
1154
 
1155
Modified the behavior of the operation region memory mapping cache for
1156
SystemMemory. Ensure that the memory mappings created for operation regions
1157
do not cross 4K page boundaries. Crossing a page boundary while mapping
1158
regions can cause kernel warnings on some hosts if the pages have different
1159
attributes. Such regions are probably BIOS bugs, and this is the workaround.
1160
Linux BZ 14445. Lin Ming.
1161
 
1162
Implemented an automatic repair for predefined methods that must return
1163
sorted lists. This change will repair (by sorting) packages returned by _ALR,
1164
_PSS, and _TSS. Drivers can now assume that the packages are correctly sorted
1165
and do not contain NULL package elements. Adds one new file,
1166
namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
1167
 
1168
Fixed a possible fault during predefined name validation if a return Package
1169
object contains NULL elements. Also adds a warning if a NULL element is
1170
followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement may
1171
include repair or removal of all such NULL elements where possible.
1172
 
1173
Implemented additional module-level executable AML code support. This change
1174
will execute module-level code that is not at the root of the namespace
1175
(under a Device object, etc.) at table load time. Module-level executable AML
1176
code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
1177
 
1178
Implemented a new internal function to create Integer objects. This function
1179
simplifies miscellaneous object creation code. ACPICA BZ 823.
1180
 
1181
Reduced the severity of predefined repair messages, Warning to Info. Since
1182
the object was successfully repaired, a warning is too severe. Reduced to an
1183
info message for now. These messages may eventually be changed to debug-only.
1184
ACPICA BZ 812.
1185
 
1186
Example Code and Data Size: These are the sizes for the OS-independent
1187
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1188
debug version of the code includes the debug output trace mechanism and has a
1189
much larger code and data size.
1190
 
1191
  Previous Release:
1192
    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
1193
    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
1194
  Current Release:
1195
    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
1196
    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
1197
 
1198
2) iASL Compiler/Disassembler and Tools:
1199
 
1200
iASL: Implemented Switch() with While(1) so that Break works correctly. This
1201
change correctly implements the Switch operator with a surrounding While(1)
1202
so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
1203
 
1204
iASL: Added a message if a package initializer list is shorter than package
1205
length. Adds a new remark for a Package() declaration if an initializer list
1206
exists, but is shorter than the declared length of the package. Although
1207
technically legal, this is probably a coding error and it is seen in the
1208
field. ACPICA BZ 815. Lin Ming, Bob Moore.
1209
 
1210
iASL: Fixed a problem where the compiler could fault after the maximum number
1211
of errors was reached (200).
1212
 
1213
acpixtract: Fixed a possible warning for pointer cast if the compiler warning
1214
level set very high.
1215
 
1216
----------------------------------------
1217
13 October 2009. Summary of changes for version 20091013:
1218
 
1219
1) ACPI CA Core Subsystem:
1220
 
1221
Fixed a problem where an Operation Region _REG method could be executed more
1222
than once. If a custom address space handler is installed by the host before
1223
the "initialize operation regions" phase of the ACPICA initialization, any
1224
_REG methods for that address space could be executed twice. This change
1225
fixes the problem. ACPICA BZ 427. Lin Ming.
1226
 
1227
Fixed a possible memory leak for the Scope() ASL operator. When the exact
1228
invocation of "Scope(\)" is executed (change scope to root), one internal
1229
operand object was leaked. Lin Ming.
1230
 
1231
Implemented a run-time repair for the _MAT predefined method. If the _MAT
1232
return value is defined as a Field object in the AML, and the field
1233
size is less than or equal to the default width of an integer (32 or 64),_MAT
1234
can incorrectly return an Integer instead of a Buffer. ACPICA now
1235
automatically repairs this problem. ACPICA BZ 810.
1236
 
1237
Implemented a run-time repair for the _BIF and _BIX predefined methods. The
1238
"OEM Information" field is often incorrectly returned as an Integer with
1239
value zero if the field is not supported by the platform. This is due to an
1240
ambiguity in the ACPI specification. The field should always be a string.
1241
ACPICA now automatically repairs this problem by returning a NULL string
1242
within the returned Package. ACPICA BZ 807.
1243
 
1244
Example Code and Data Size: These are the sizes for the OS-independent
1245
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1246
debug version of the code includes the debug output trace mechanism and has a
1247
much larger code and data size.
1248
 
1249
  Previous Release:
1250
    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
1251
    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
1252
  Current Release:
1253
    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
1254
    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
1255
 
1256
2) iASL Compiler/Disassembler and Tools:
1257
 
1258
Disassembler: Fixed a problem where references to external symbols that
1259
contained one or more parent-prefixes (carats) were not handled correctly,
1260
possibly causing a fault. ACPICA BZ 806. Lin Ming.
1261
 
1262
Disassembler: Restructured the code so that all functions that handle
1263
external symbols are in a single module. One new file is added,
1264
common/dmextern.c.
1265
 
1266
AML Debugger: Added a max count argument for the Batch command (which
1267
executes multiple predefined methods within the namespace.)
1268
 
1269
iASL: Updated the compiler documentation (User Reference.) Available at
1270
http://www.acpica.org/documentation/. ACPICA BZ 750.
1271
 
1272
AcpiXtract: Updated for Lint and other formatting changes. Close all open
1273
files.
1274
 
1275
----------------------------------------
1276
03 September 2009. Summary of changes for version 20090903:
1277
 
1278
1) ACPI CA Core Subsystem:
1279
 
1280
For Windows Vista compatibility, added the automatic execution of an _INI
1281
method located at the namespace root (\_INI). This method is executed at
1282
table load time. This support is in addition to the automatic execution of
1283
\_SB._INI. Lin Ming.
1284
 
1285
Fixed a possible memory leak in the interpreter for AML package objects if
1286
the package initializer list is longer than the defined size of the package.
1287
This apparently can only happen if the BIOS changes the package size on the
1288
fly (seen in a _PSS object), as ASL compilers do not allow this. The
1289
interpreter will truncate the package to the defined size (and issue an error
1290
message), but previously could leave the extra objects undeleted if they were
1291
pre-created during the argument processing (such is the case if the package
1292
consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
1293
 
1294
Fixed a problem seen when a Buffer or String is stored to itself via ASL.
1295
This has been reported in the field. Previously, ACPICA would zero out the
1296
buffer/string. Now, the operation is treated as a noop. Provides Windows
1297
compatibility. ACPICA BZ 803. Lin Ming.
1298
 
1299
Removed an extraneous error message for ASL constructs of the form
1300
Store(LocalX,LocalX) when LocalX is uninitialized. These curious statements
1301
are seen in many BIOSs and are once again treated as NOOPs and no error is
1302
emitted when they are encountered. ACPICA BZ 785.
1303
 
1304
Fixed an extraneous warning message if a _DSM reserved method returns a
1305
Package object. _DSM can return any type of object, so validation on the
1306
return type cannot be performed. ACPICA BZ 802.
1307
 
1308
Example Code and Data Size: These are the sizes for the OS-independent
1309
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1310
debug version of the code includes the debug output trace mechanism and has a
1311
much larger code and data size.
1312
 
1313
  Previous Release:
1314
    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
1315
    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
1316
  Current Release:
1317
    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
1318
    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
1319
 
1320
2) iASL Compiler/Disassembler and Tools:
1321
 
1322
iASL: Fixed a problem with the use of the Alias operator and Resource
1323
Templates. The correct alias is now constructed and no error is emitted.
1324
ACPICA BZ 738.
1325
 
1326
iASL: Implemented the -I option to specify additional search directories for
1327
include files. Allows multiple additional search paths for include files.
1328
Directories are searched in the order specified on the command line (after
1329
the local directory is searched.) ACPICA BZ 800.
1330
 
1331
iASL: Fixed a problem where the full pathname for include files was not
1332
emitted for warnings/errors. This caused the IDE support to not work
1333
properly. ACPICA BZ 765.
1334
 
1335
iASL: Implemented the -@ option to specify a Windows-style response file
1336
containing additional command line options. ACPICA BZ 801.
1337
 
1338
AcpiExec: Added support to load multiple AML files simultaneously (such as a
1339
DSDT and multiple SSDTs). Also added support for wildcards within the AML
1340
pathname. These features allow all machine tables to be easily loaded and
1341
debugged together. ACPICA BZ 804.
1342
 
1343
Disassembler: Added missing support for disassembly of HEST table Error Bank
1344
subtables.
1345
 
1346
----------------------------------------
1347
30 July 2009. Summary of changes for version 20090730:
1348
 
1349
The ACPI 4.0 implementation for ACPICA is complete with this release.
1350
 
1351
1) ACPI CA Core Subsystem:
1352
 
1353
ACPI 4.0: Added header file support for all new and changed ACPI tables.
1354
Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are new
1355
for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, BERT,
1356
EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. There
1357
have been some ACPI 4.0 changes to other existing tables. Split the large
1358
actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
1359
 
1360
ACPI 4.0: Implemented predefined name validation for all new names. There are
1361
31 new names in ACPI 4.0. The predefined validation module was split into two
1362
files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
1363
 
1364
Implemented support for so-called "module-level executable code". This is
1365
executable AML code that exists outside of any control method and is intended
1366
to be executed at table load time. Although illegal since ACPI 2.0, this type
1367
of code still exists and is apparently still being created. Blocks of this
1368
code are now detected and executed as intended. Currently, the code blocks
1369
must exist under either an If, Else, or While construct; these are the
1370
typical cases seen in the field. ACPICA BZ 762. Lin Ming.
1371
 
1372
Implemented an automatic dynamic repair for predefined names that return
1373
nested Package objects. This applies to predefined names that are defined to
1374
return a variable-length Package of sub-packages. If the number of sub-
1375
packages is one, BIOS code is occasionally seen that creates a simple single
1376
package with no sub-packages. This code attempts to fix the problem by
1377
wrapping a new package object around the existing package. These methods can
1378
be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA BZ
1379
790.
1380
 
1381
Fixed a regression introduced in 20090625 for the AcpiGetDevices interface.
1382
The _HID/_CID matching was broken and no longer matched IDs correctly. ACPICA
1383
BZ 793.
1384
 
1385
Fixed a problem with AcpiReset where the reset would silently fail if the
1386
register was one of the protected I/O ports. AcpiReset now bypasses the port
1387
validation mechanism. This may eventually be driven into the AcpiRead/Write
1388
interfaces.
1389
 
1390
Fixed a regression related to the recent update of the AcpiRead/Write
1391
interfaces. A sleep/suspend could fail if the optional PM2 Control register
1392
does not exist during an attempt to write the Bus Master Arbitration bit.
1393
(However, some hosts already delete the code that writes this bit, and the
1394
code may in fact be obsolete at this date.) ACPICA BZ 799.
1395
 
1396
Fixed a problem where AcpiTerminate could fault if inadvertently called twice
1397
in succession. ACPICA BZ 795.
1398
 
1399
Example Code and Data Size: These are the sizes for the OS-independent
1400
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1401
debug version of the code includes the debug output trace mechanism and has a
1402
much larger code and data size.
1403
 
1404
  Previous Release:
1405
    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
1406
    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
1407
  Current Release:
1408
    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
1409
    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
1410
 
1411
2) iASL Compiler/Disassembler and Tools:
1412
 
1413
ACPI 4.0: Implemented disassembler support for all new ACPI tables and
1414
changes to existing tables. ACPICA BZ 775.
1415
 
1416
----------------------------------------
1417
25 June 2009. Summary of changes for version 20090625:
1418
 
1419
The ACPI 4.0 Specification was released on June 16 and is available at
1420
www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
1421
continue for the next few releases.
1422
 
1423
1) ACPI CA Core Subsystem:
1424
 
1425
ACPI 4.0: Implemented interpreter support for the IPMI operation region
1426
address space. Includes support for bi-directional data buffers and an IPMI
1427
address space handler (to be installed by an IPMI device driver.) ACPICA BZ
1428
773. Lin Ming.
1429
 
1430
ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. Includes
1431
support in both the header files and the disassembler.
1432
 
1433
Completed a major update for the AcpiGetObjectInfo external interface.
1434
Changes include:
1435
 - Support for variable, unlimited length HID, UID, and CID strings.
1436
 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, etc.)
1437
 - Call the _SxW power methods on behalf of a device object.
1438
 - Determine if a device is a PCI root bridge.
1439
 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
1440
These changes will require an update to all callers of this interface. See
1441
the updated ACPICA Programmer Reference for details. One new source file has
1442
been added - utilities/utids.c. ACPICA BZ 368, 780.
1443
 
1444
Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
1445
transfers. The Value parameter has been extended from 32 bits to 64 bits in
1446
order to support new ACPI 4.0 tables. These changes will require an update to
1447
all callers of these interfaces. See the ACPICA Programmer Reference for
1448
details. ACPICA BZ 768.
1449
 
1450
Fixed several problems with AcpiAttachData. The handler was not invoked when
1451
the host node was deleted. The data sub-object was not automatically deleted
1452
when the host node was deleted. The interface to the handler had an unused
1453
parameter, this was removed. ACPICA BZ 778.
1454
 
1455
Enhanced the function that dumps ACPI table headers. All non-printable
1456
characters in the string fields are now replaced with '?' (Signature, OemId,
1457
OemTableId, and CompilerId.) ACPI tables with non-printable characters in
1458
these fields are occasionally seen in the field. ACPICA BZ 788.
1459
 
1460
Fixed a problem with predefined method repair code where the code that
1461
attempts to repair/convert an object of incorrect type is only executed on
1462
the first time the predefined method is called. The mechanism that disables
1463
warnings on subsequent calls was interfering with the repair mechanism.
1464
ACPICA BZ 781.
1465
 
1466
Fixed a possible memory leak in the predefined validation/repair code when a
1467
buffer is automatically converted to an expected string object.
1468
 
1469
Removed obsolete 16-bit files from the distribution and from the current git
1470
tree head. ACPICA BZ 776.
1471
 
1472
Example Code and Data Size: These are the sizes for the OS-independent
1473
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1474
debug version of the code includes the debug output trace mechanism and has a
1475
much larger code and data size.
1476
 
1477
  Previous Release:
1478
    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
1479
    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
1480
  Current Release:
1481
    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
1482
    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
1483
 
1484
2) iASL Compiler/Disassembler and Tools:
1485
 
1486
ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
1487
operation region keyword. ACPICA BZ 771, 772. Lin Ming.
1488
 
1489
ACPI 4.0: iASL - implemented compile-time validation support for all new
1490
predefined names and control methods (31 total). ACPICA BZ 769.
1491
 
1492
----------------------------------------
1493
21 May 2009. Summary of changes for version 20090521:
1494
 
1495
1) ACPI CA Core Subsystem:
1496
 
1497
Disabled the preservation of the SCI enable bit in the PM1 control register.
1498
The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification to be
1499
a "preserved" bit - "OSPM always preserves this bit position", section
1500
4.7.3.2.1. However, some machines fail if this bit is in fact preserved
1501
because the bit needs to be explicitly set by the OS as a workaround. No
1502
machines fail if the bit is not preserved. Therefore, ACPICA no longer
1503
attempts to preserve this bit.
1504
 
1505
Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
1506
incorrectly formed _PRT package could cause a fault. Added validation to
1507
ensure that each package element is actually a sub-package.
1508
 
1509
Implemented a new interface to install or override a single control method,
1510
AcpiInstallMethod. This interface is useful when debugging in order to repair
1511
an existing method or to install a missing method without having to override
1512
the entire ACPI table. See the ACPICA Programmer Reference for use and
1513
examples. Lin Ming, Bob Moore.
1514
 
1515
Fixed several reference count issues with the DdbHandle object that is
1516
created from a Load or LoadTable operator. Prevent premature deletion of the
1517
object. Also, mark the object as invalid once the table has been unloaded.
1518
This is needed because the handle itself may not be deleted after the table
1519
unload, depending on whether it has been stored in a named object by the
1520
caller. Lin Ming.
1521
 
1522
Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
1523
mutexes of the same sync level are acquired but then not released in strict
1524
opposite order, the internally maintained Current Sync Level becomes confused
1525
and can cause subsequent execution errors. ACPICA BZ 471.
1526
 
1527
Changed the allowable release order for ASL mutex objects. The ACPI 4.0
1528
specification has been changed to make the SyncLevel for mutex objects more
1529
useful. When releasing a mutex, the SyncLevel of the mutex must now be the
1530
same as the current sync level. This makes more sense than the previous rule
1531
(SyncLevel less than or equal). This change updates the code to match the
1532
specification.
1533
 
1534
Fixed a problem with the local version of the AcpiOsPurgeCache function. The
1535
(local) cache must be locked during all cache object deletions. Andrew
1536
Baumann.
1537
 
1538
Updated the Load operator to use operation region interfaces. This replaces
1539
direct memory mapping with region access calls. Now, all region accesses go
1540
through the installed region handler as they should.
1541
 
1542
Simplified and optimized the NsGetNextNode function. Reduced parameter count
1543
and reduced code for this frequently used function.
1544
 
1545
Example Code and Data Size: These are the sizes for the OS-independent
1546
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1547
debug version of the code includes the debug output trace mechanism and has a
1548
much larger code and data size.
1549
 
1550
  Previous Release:
1551
    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
1552
    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
1553
  Current Release:
1554
    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
1555
    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
1556
 
1557
2) iASL Compiler/Disassembler and Tools:
1558
 
1559
Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some problems
1560
with sub-table disassembly and handling invalid sub-tables. Attempt recovery
1561
after an invalid sub-table ID.
1562
 
1563
----------------------------------------
1564
22 April 2009. Summary of changes for version 20090422:
1565
 
1566
1) ACPI CA Core Subsystem:
1567
 
1568
Fixed a compatibility issue with the recently released I/O port protection
1569
mechanism. For windows compatibility, 1) On a port protection violation,
1570
simply ignore the request and do not return an exception (allow the control
1571
method to continue execution.) 2) If only part of the request overlaps a
1572
protected port, read/write the individual ports that are not protected. Linux
1573
BZ 13036. Lin Ming
1574
 
1575
Enhanced the execution of the ASL/AML BreakPoint operator so that it actually
1576
breaks into the AML debugger if the debugger is present. This matches the
1577
ACPI-defined behavior.
1578
 
1579
Fixed several possible warnings related to the use of the configurable
1580
ACPI_THREAD_ID. This type can now be configured as either an integer or a
1581
pointer with no warnings. Also fixes several warnings in printf-like
1582
statements for the 64-bit build when the type is configured as a pointer.
1583
ACPICA BZ 766, 767.
1584
 
1585
Fixed a number of possible warnings when compiling with gcc 4+ (depending on
1586
warning options.) Examples include printf formats, aliasing, unused globals,
1587
missing prototypes, missing switch default statements, use of non-ANSI
1588
library functions, use of non-ANSI constructs. See generate/unix/Makefile for
1589
a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
1590
 
1591
Example Code and Data Size: These are the sizes for the OS-independent
1592
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1593
debug version of the code includes the debug output trace mechanism and has a
1594
much larger code and data size.
1595
 
1596
  Previous Release:
1597
    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
1598
    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
1599
  Current Release:
1600
    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
1601
    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
1602
 
1603
2) iASL Compiler/Disassembler and Tools:
1604
 
1605
iASL: Fixed a generation warning from Bison 2.3 and fixed several warnings on
1606
the 64-bit build.
1607
 
1608
iASL: Fixed a problem where the Unix/Linux versions of the compiler could not
1609
correctly digest Windows/DOS formatted files (with CR/LF).
1610
 
1611
iASL: Added a new option for "quiet mode" (-va) that produces only the
1612
compilation summary, not individual errors and warnings. Useful for large
1613
batch compilations.
1614
 
1615
AcpiExec: Implemented a new option (-z) to enable a forced semaphore/mutex
1616
timeout that can be used to detect hang conditions during execution of AML
1617
code (includes both internal semaphores and AML-defined mutexes and events.)
1618
 
1619
Added new makefiles for the generation of acpica in a generic unix-like
1620
environment. These makefiles are intended to generate the acpica tools and
1621
utilities from the original acpica git source tree structure.
1622
 
1623
Test Suites: Updated and cleaned up the documentation files. Updated the
1624
copyrights to 2009, affecting all source files. Use the new version of iASL
1625
with quiet mode. Increased the number of available semaphores in the Windows
1626
OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, added
1627
an alternate implementation of the semaphore timeout to allow aslts to
1628
execute fully on Cygwin.
1629
 
1630
----------------------------------------
1631
20 March 2009. Summary of changes for version 20090320:
1632
 
1633
1) ACPI CA Core Subsystem:
1634
 
1635
Fixed a possible race condition between AcpiWalkNamespace and dynamic table
1636
unloads. Added a reader/writer locking mechanism to allow multiple concurrent
1637
namespace walks (readers), but block a dynamic table unload until it can gain
1638
exclusive write access to the namespace. This fixes a problem where a table
1639
unload could (possibly catastrophically) delete the portion of the namespace
1640
that is currently being examined by a walk. Adds a new file, utlock.c, that
1641
implements the reader/writer lock mechanism. ACPICA BZ 749.
1642
 
1643
Fixed a regression introduced in version 20090220 where a change to the FADT
1644
handling could cause the ACPICA subsystem to access non-existent I/O ports.
1645
 
1646
Modified the handling of FADT register and table (FACS/DSDT) addresses. The
1647
FADT can contain both 32-bit and 64-bit versions of these addresses.
1648
Previously, the 64-bit versions were favored, meaning that if both 32 and 64
1649
versions were valid, but not equal, the 64-bit version was used. This was
1650
found to cause some machines to fail. Now, in this case, the 32-bit version
1651
is used instead. This now matches the Windows behavior.
1652
 
1653
Implemented a new mechanism to protect certain I/O ports. Provides Microsoft
1654
compatibility and protects the standard PC I/O ports from access via AML
1655
code. Adds a new file, hwvalid.c
1656
 
1657
Fixed a possible extraneous warning message from the FADT support. The
1658
message warns of a 32/64 length mismatch between the legacy and GAS
1659
definitions for a register.
1660
 
1661
Removed the obsolete AcpiOsValidateAddress OSL interface. This interface is
1662
made obsolete by the port protection mechanism above. It was previously used
1663
to validate the entire address range of an operation region, which could be
1664
incorrect if the range included illegal ports, but fields within the
1665
operation region did not actually access those ports. Validation is now
1666
performed on a per-field basis instead of the entire region.
1667
 
1668
Modified the handling of the PM1 Status Register ignored bit (bit 11.)
1669
Ignored bits must be "preserved" according to the ACPI spec. Usually, this
1670
means a read/modify/write when writing to the register. However, for status
1671
registers, writing a one means clear the event. Writing a zero means preserve
1672
the event (do not clear.) This behavior is clarified in the ACPI 4.0 spec,
1673
and the ACPICA code now simply always writes a zero to the ignored bit.
1674
 
1675
Modified the handling of ignored bits for the PM1 A/B Control Registers. As
1676
per the ACPI specification, for the control registers, preserve
1677
(read/modify/write) all bits that are defined as either reserved or ignored.
1678
 
1679
Updated the handling of write-only bits in the PM1 A/B Control Registers.
1680
When reading the register, zero the write-only bits as per the ACPI spec.
1681
ACPICA BZ 443. Lin Ming.
1682
 
1683
Removed "Linux" from the list of supported _OSI strings. Linux no longer
1684
wants to reply true to this request. The Windows strings are the only paths
1685
through the AML that are tested and known to work properly.
1686
 
1687
  Previous Release:
1688
    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
1689
    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
1690
  Current Release:
1691
    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
1692
    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
1693
 
1694
2) iASL Compiler/Disassembler and Tools:
1695
 
1696
Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c and
1697
aetables.c
1698
 
1699
----------------------------------------
1700
20 February 2009. Summary of changes for version 20090220:
1701
 
1702
1) ACPI CA Core Subsystem:
1703
 
1704
Optimized the ACPI register locking. Removed locking for reads from the ACPI
1705
bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock is
1706
not required when reading the single-bit registers. The
1707
AcpiGetRegisterUnlocked function is no longer needed and has been removed.
1708
This will improve performance for reads on these registers. ACPICA BZ 760.
1709
 
1710
Fixed the parameter validation for AcpiRead/Write. Now return
1711
AE_BAD_PARAMETER if the input register pointer is null, and AE_BAD_ADDRESS if
1712
the register has an address of zero. Previously, these cases simply returned
1713
AE_OK. For optional registers such as PM1B status/enable/control, the caller
1714
should check for a valid register address before calling. ACPICA BZ 748.
1715
 
1716
Renamed the external ACPI bit register access functions. Renamed
1717
AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
1718
functions. The new names are AcpiReadBitRegister and AcpiWriteBitRegister.
1719
Also, restructured the code for these functions by simplifying the code path
1720
and condensing duplicate code to reduce code size.
1721
 
1722
Added new functions to transparently handle the possibly split PM1 A/B
1723
registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two functions
1724
now handle the split registers for PM1 Status, Enable, and Control. ACPICA BZ
1725
746.
1726
 
1727
Added a function to handle the PM1 control registers, AcpiHwWritePm1Control.
1728
This function writes both of the PM1 control registers (A/B). These registers
1729
are different than the PM1 A/B status and enable registers in that different
1730
values can be written to the A/B registers. Most notably, the SLP_TYP bits
1731
can be different, as per the values returned from the _Sx predefined methods.
1732
 
1733
Removed an extra register write within AcpiHwClearAcpiStatus. This function
1734
was writing an optional PM1B status register twice. The existing call to the
1735
low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 A/B
1736
register. ACPICA BZ 751.
1737
 
1738
Split out the PM1 Status registers from the FADT. Added new globals for these
1739
registers (A/B), similar to the way the PM1 Enable registers are handled.
1740
Instead of overloading the FADT Event Register blocks. This makes the code
1741
clearer and less prone to error.
1742
 
1743
Fixed the warning message for when the platform contains too many ACPI tables
1744
for the default size of the global root table data structure. The calculation
1745
for the truncation value was incorrect.
1746
 
1747
Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
1748
obsolete macro, since it is now a simple reference to ->common.type. There
1749
were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
1750
 
1751
Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
1752
TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
1753
simply SLEEP_TYPE. ACPICA BZ 754.
1754
 
1755
Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
1756
function is only needed on 64-bit host operating systems and is thus not
1757
included for 32-bit hosts.
1758
 
1759
Debug output: print the input and result for invocations of the _OSI reserved
1760
control method via the ACPI_LV_INFO debug level. Also, reduced some of the
1761
verbosity of this debug level. Len Brown.
1762
 
1763
Example Code and Data Size: These are the sizes for the OS-independent
1764
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1765
debug version of the code includes the debug output trace mechanism and has a
1766
much larger code and data size.
1767
 
1768
  Previous Release:
1769
    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
1770
    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
1771
  Current Release:
1772
    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
1773
    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
1774
 
1775
2) iASL Compiler/Disassembler and Tools:
1776
 
1777
Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
1778
various legal performance profiles.
1779
 
1780
----------------------------------------
1781
23 January 2009. Summary of changes for version 20090123:
1782
 
1783
1) ACPI CA Core Subsystem:
1784
 
1785
Added the 2009 copyright to all module headers and signons. This affects
1786
virtually every file in the ACPICA core subsystem, the iASL compiler, and
1787
the tools/utilities.
1788
 
1789
Implemented a change to allow the host to override any ACPI table, including
1790
dynamically loaded tables. Previously, only the DSDT could be replaced by the
1791
host. With this change, the AcpiOsTableOverride interface is called for each
1792
table found in the RSDT/XSDT during ACPICA initialization, and also whenever
1793
a table is dynamically loaded via the AML Load operator.
1794
 
1795
Updated FADT flag definitions, especially the Boot Architecture flags.
1796
 
1797
Debugger: For the Find command, automatically pad the input ACPI name with
1798
underscores if the name is shorter than 4 characters. This enables a match
1799
with the actual namespace entry which is itself padded with underscores.
1800
 
1801
Example Code and Data Size: These are the sizes for the OS-independent
1802
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1803
debug version of the code includes the debug output trace mechanism and has a
1804
much larger code and data size.
1805
 
1806
  Previous Release:
1807
    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
1808
    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
1809
  Current Release:
1810
    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
1811
    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
1812
 
1813
2) iASL Compiler/Disassembler and Tools:
1814
 
1815
Fix build error under Bison-2.4.
1816
 
1817
Dissasembler: Enhanced FADT support. Added decoding of the Boot Architecture
1818
flags. Now decode all flags, regardless of the FADT version. Flag output
1819
includes the FADT version which first defined each flag.
1820
 
1821
The iASL -g option now dumps the RSDT to a file (in addition to the FADT and
1822
DSDT). Windows only.
1823
 
1824
----------------------------------------
1825
04 December 2008. Summary of changes for version 20081204:
1826
 
1827
1) ACPI CA Core Subsystem:
1828
 
1829
The ACPICA Programmer Reference has been completely updated and revamped for
1830
this release. This includes updates to the external interfaces, OSL
1831
interfaces, the overview sections, and the debugger reference.
1832
 
1833
Several new ACPICA interfaces have been implemented and documented in the
1834
programmer reference:
1835
AcpiReset - Writes the reset value to the FADT-defined reset register.
1836
AcpiDisableAllGpes - Disable all available GPEs.
1837
AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
1838
AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
1839
AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
1840
AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
1841
AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
1842
 
1843
Most of the public ACPI hardware-related interfaces have been moved to a new
1844
file, components/hardware/hwxface.c
1845
 
1846
Enhanced the FADT parsing and low-level ACPI register access: The ACPI
1847
register lengths within the FADT are now used, and the low level ACPI
1848
register access no longer hardcodes the ACPI register lengths. Given that
1849
there may be some risk in actually trusting the FADT register lengths, a run-
1850
time option was added to fall back to the default hardcoded lengths if the
1851
FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
1852
option is set to true for now, and a warning is issued if a suspicious FADT
1853
register length is overridden with the default value.
1854
 
1855
Fixed a reference count issue in NsRepairObject. This problem was introduced
1856
in version 20081031 as part of a fix to repair Buffer objects within
1857
Packages. Lin Ming.
1858
 
1859
Added semaphore support to the Linux/Unix application OS-services layer
1860
(OSL). ACPICA BZ 448. Lin Ming.
1861
 
1862
Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes will
1863
be implemented in the OSL, or will binary semaphores be used instead.
1864
 
1865
Example Code and Data Size: These are the sizes for the OS-independent
1866
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1867
debug version of the code includes the debug output trace mechanism and has a
1868
much larger code and data size.
1869
 
1870
  Previous Release:
1871
    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
1872
    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
1873
  Current Release:
1874
    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
1875
    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
1876
 
1877
2) iASL Compiler/Disassembler and Tools:
1878
 
1879
iASL: Completed the '-e' option to include additional ACPI tables in order to
1880
aid with disassembly and External statement generation. ACPICA BZ 742. Lin
1881
Ming.
1882
 
1883
iASL: Removed the "named object in while loop" error. The compiler cannot
1884
determine how many times a loop will execute. ACPICA BZ 730.
1885
 
1886
Disassembler: Implemented support for FADT revision 2 (MS extension). ACPICA
1887
BZ 743.
1888
 
1889
Disassembler: Updates for several ACPI data tables (HEST, EINJ, and MCFG).
1890
 
1891
----------------------------------------
1892
31 October 2008. Summary of changes for version 20081031:
1893
 
1894
1) ACPI CA Core Subsystem:
1895
 
1896
Restructured the ACPICA header files into public/private. acpi.h now includes
1897
only the "public" acpica headers. All other acpica headers are "private" and
1898
should not be included by acpica users. One new file, accommon.h is used to
1899
include the commonly used private headers for acpica code generation. Future
1900
plans include moving all private headers to a new subdirectory.
1901
 
1902
Implemented an automatic Buffer->String return value conversion for
1903
predefined ACPI methods. For these methods (such as _BIF), added automatic
1904
conversion for return objects that are required to be a String, but a Buffer
1905
was found instead. This can happen when reading string battery data from an
1906
operation region, because it used to be difficult to convert the data from
1907
buffer to string from within the ASL. Ensures that the host OS is provided
1908
with a valid null-terminated string. Linux BZ 11822.
1909
 
1910
Updated the FACS waking vector interfaces. Split AcpiSetFirmwareWakingVector
1911
into two: one for the 32-bit vector, another for the 64-bit vector. This is
1912
required because the host OS must setup the wake much differently for each
1913
vector (real vs. protected mode, etc.) and the interface itself should not be
1914
deciding which vector to use. Also, eliminated the GetFirmwareWakingVector
1915
interface, as it served no purpose (only the firmware reads the vector, OS
1916
only writes the vector.) ACPICA BZ 731.
1917
 
1918
Implemented a mechanism to escape infinite AML While() loops. Added a loop
1919
counter to force exit from AML While loops if the count becomes too large.
1920
This can occur in poorly written AML when the hardware does not respond
1921
within a while loop and the loop does not implement a timeout. The maximum
1922
loop count is configurable. A new exception code is returned when a loop is
1923
broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
1924
 
1925
Optimized the execution of AML While loops. Previously, a control state
1926
object was allocated and freed for each execution of the loop. The
1927
optimization is to simply reuse the control state for each iteration. This
1928
speeds up the raw loop execution time by about 5%.
1929
 
1930
Enhanced the implicit return mechanism. For Windows compatibility, return an
1931
implicit integer of value zero for methods that contain no executable code.
1932
Such methods are seen in the field as stubs (presumably), and can cause
1933
drivers to fail if they expect a return value. Lin Ming.
1934
 
1935
Allow multiple backslashes as root prefixes in namepaths. In a fully
1936
qualified namepath, allow multiple backslash prefixes. This can happen (and
1937
is seen in the field) because of the use of a double-backslash in strings
1938
(since backslash is the escape character) causing confusion. ACPICA BZ 739
1939
Lin Ming.
1940
 
1941
Emit a warning if two different FACS or DSDT tables are discovered in the
1942
FADT. Checks if there are two valid but different addresses for the FACS and
1943
DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
1944
 
1945
Consolidated the method argument count validation code. Merged the code that
1946
validates control method argument counts into the predefined validation
1947
module. Eliminates possible multiple warnings for incorrect argument counts.
1948
 
1949
Implemented ACPICA example code. Includes code for ACPICA initialization,
1950
handler installation, and calling a control method. Available at
1951
source/tools/examples.
1952
 
1953
Added a global pointer for FACS table to simplify internal FACS access. Use
1954
the global pointer instead of using AcpiGetTableByIndex for each FACS access.
1955
This simplifies the code for the Global Lock and the Firmware Waking
1956
Vector(s).
1957
 
1958
Example Code and Data Size: These are the sizes for the OS-independent
1959
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1960
debug version of the code includes the debug output trace mechanism and has a
1961
much larger code and data size.
1962
 
1963
  Previous Release:
1964
    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
1965
    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
1966
  Current Release:
1967
    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
1968
    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
1969
 
1970
2) iASL Compiler/Disassembler and Tools:
1971
 
1972
iASL: Improved disassembly of external method calls. Added the -e option to
1973
allow the inclusion of additional ACPI tables to help with the disassembly of
1974
method invocations and the generation of external declarations during the
1975
disassembly. Certain external method invocations cannot be disassembled
1976
properly without the actual declaration of the method. Use the -e option to
1977
include the table where the external method(s) are actually declared. Most
1978
useful for disassembling SSDTs that make method calls back to the master
1979
DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl -d
1980
-e dsdt.aml ssdt1.aml
1981
 
1982
iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
1983
problem where the use of an alias within a namepath would result in a not
1984
found error or cause the compiler to fault. Also now allows forward
1985
references from the Alias operator itself. ACPICA BZ 738.
1986
 
1987
----------------------------------------
1988
26 September 2008. Summary of changes for version 20080926:
1989
 
1990
1) ACPI CA Core Subsystem:
1991
 
1992
Designed and implemented a mechanism to validate predefined ACPI methods and
1993
objects. This code validates the predefined ACPI objects (objects whose names
1994
start with underscore) that appear in the namespace, at the time they are
1995
evaluated. The argument count and the type of the returned object are
1996
validated against the ACPI specification. The purpose of this validation is
1997
to detect problems with the BIOS-implemented predefined ACPI objects before
1998
the results are returned to the ACPI-related drivers. Future enhancements may
1999
include actual repair of incorrect return objects where possible. Two new
2000
files are nspredef.c and acpredef.h.
2001
 
2002
Fixed a fault in the AML parser if a memory allocation fails during the Op
2003
completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
2004
 
2005
Fixed an issue with implicit return compatibility. This change improves the
2006
implicit return mechanism to be more compatible with the MS interpreter. Lin
2007
Ming, ACPICA BZ 349.
2008
 
2009
Implemented support for zero-length buffer-to-string conversions. Allow zero
2010
length strings during interpreter buffer-to-string conversions. For example,
2011
during the ToDecimalString and ToHexString operators, as well as implicit
2012
conversions. Fiodor Suietov, ACPICA BZ 585.
2013
 
2014
Fixed two possible memory leaks in the error exit paths of
2015
AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions are
2016
similar in that they use a stack of state objects in order to eliminate
2017
recursion. The stack must be fully unwound and deallocated if an error
2018
occurs. Lin Ming. ACPICA BZ 383.
2019
 
2020
Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the global
2021
ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
2022
Moore ACPICA BZ 442.
2023
 
2024
Removed the obsolete version number in module headers. Removed the
2025
"$Revision" number that appeared in each module header. This version number
2026
was useful under SourceSafe and CVS, but has no meaning under git. It is not
2027
only incorrect, it could also be misleading.
2028
 
2029
Example Code and Data Size: These are the sizes for the OS-independent
2030
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2031
debug version of the code includes the debug output trace mechanism and has a
2032
much larger code and data size.
2033
 
2034
  Previous Release:
2035
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2036
    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
2037
  Current Release:
2038
    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
2039
    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
2040
 
2041
----------------------------------------
2042
29 August 2008. Summary of changes for version 20080829:
2043
 
2044
1) ACPI CA Core Subsystem:
2045
 
2046
Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
2047
Reference. Changes include the elimination of cheating on the Object field
2048
for the DdbHandle subtype, addition of a reference class field to
2049
differentiate the various reference types (instead of an AML opcode), and the
2050
cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
2051
 
2052
Reduce an error to a warning for an incorrect method argument count.
2053
Previously aborted with an error if too few arguments were passed to a
2054
control method via the external ACPICA interface. Now issue a warning instead
2055
and continue. Handles the case where the method inadvertently declares too
2056
many arguments, but does not actually use the extra ones. Applies mainly to
2057
the predefined methods. Lin Ming. Linux BZ 11032.
2058
 
2059
Disallow the evaluation of named object types with no intrinsic value. Return
2060
AE_TYPE for objects that have no value and therefore evaluation is undefined:
2061
Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of
2062
these types were allowed, but an exception would be generated at some point
2063
during the evaluation. Now, the error is generated up front.
2064
 
2065
Fixed a possible memory leak in the AcpiNsGetExternalPathname function
2066
(nsnames.c). Fixes a leak in the error exit path.
2067
 
2068
Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug
2069
levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION
2070
interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
2071
ACPI_LV_EVENTS.
2072
 
2073
Removed obsolete and/or unused exception codes from the acexcep.h header.
2074
There is the possibility that certain device drivers may be affected if they
2075
use any of these exceptions.
2076
 
2077
The ACPICA documentation has been added to the public git source tree, under
2078
acpica/documents. Included are the ACPICA programmer reference, the iASL
2079
compiler reference, and the changes.txt release logfile.
2080
 
2081
Example Code and Data Size: These are the sizes for the OS-independent
2082
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2083
debug version of the code includes the debug output trace mechanism and has a
2084
much larger code and data size.
2085
 
2086
  Previous Release:
2087
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2088
    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
2089
  Current Release:
2090
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2091
    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
2092
 
2093
2) iASL Compiler/Disassembler and Tools:
2094
 
2095
Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
2096
defines _SCP with 3 arguments. Previous versions defined it with only 1
2097
argument. iASL now allows both definitions.
2098
 
2099
iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
2100
length subtables when disassembling ACPI tables. Also fixed a couple of
2101
errors where a full 16-bit table type field was not extracted from the input
2102
properly.
2103
 
2104
acpisrc: Improve comment counting mechanism for generating source code
2105
statistics. Count first and last lines of multi-line comments as whitespace,
2106
not comment lines. Handle Linux legal header in addition to standard acpica
2107
header.
2108
 
2109
----------------------------------------
2110
 
2111
29 July 2008. Summary of changes for version 20080729:
2112
 
2113
1) ACPI CA Core Subsystem:
2114
 
2115
Fix a possible deadlock in the GPE dispatch. Remove call to
2116
AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt
2117
to acquire the GPE lock but can deadlock since the GPE lock is already held
2118
at dispatch time. This code was introduced in version 20060831 as a response
2119
to Linux BZ 6881 and has since been removed from Linux.
2120
 
2121
Add a function to dereference returned reference objects. Examines the return
2122
object from a call to AcpiEvaluateObject. Any Index or RefOf references are
2123
automatically dereferenced in an attempt to return something useful (these
2124
reference types cannot be converted into an external ACPI_OBJECT.) Provides
2125
MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
2126
 
2127
x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
2128
subtables for the MADT and one new subtable for the SRAT. Includes
2129
disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC
2130
Specification, June 2008.
2131
 
2132
Additional error checking for pathname utilities. Add error check after all
2133
calls to AcpiNsGetPathnameLength. Add status return from
2134
AcpiNsBuildExternalPath and check after all calls. Add parameter validation
2135
to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
2136
 
2137
Return status from the global init function AcpiUtGlobalInitialize. This is
2138
used by both the kernel subsystem and the utilities such as iASL compiler.
2139
The function could possibly fail when the caches are initialized. Yang Yi.
2140
 
2141
Add a function to decode reference object types to strings. Created for
2142
improved error messages.
2143
 
2144
Improve object conversion error messages. Better error messages during object
2145
conversion from internal to the external ACPI_OBJECT. Used for external calls
2146
to AcpiEvaluateObject.
2147
 
2148
Example Code and Data Size: These are the sizes for the OS-independent
2149
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2150
debug version of the code includes the debug output trace mechanism and has a
2151
much larger code and data size.
2152
 
2153
  Previous Release:
2154
    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
2155
    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
2156
  Current Release:
2157
    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
2158
    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
2159
 
2160
2) iASL Compiler/Disassembler and Tools:
2161
 
2162
Debugger: fix a possible hang when evaluating non-methods. Fixes a problem
2163
introduced in version 20080701. If the object being evaluated (via execute
2164
command) is not a method, the debugger can hang while trying to obtain non-
2165
existent parameters.
2166
 
2167
iASL: relax error for using reserved "_T_x" identifiers. These names can
2168
appear in a disassembled ASL file if they were emitted by the original
2169
compiler. Instead of issuing an error or warning and forcing the user to
2170
manually change these names, issue a remark instead.
2171
 
2172
iASL: error if named object created in while loop. Emit an error if any named
2173
object is created within a While loop. If allowed, this code will generate a
2174
run-time error on the second iteration of the loop when an attempt is made to
2175
create the same named object twice. ACPICA bugzilla 730.
2176
 
2177
iASL: Support absolute pathnames for include files. Add support for absolute
2178
pathnames within the Include operator. previously, only relative pathnames
2179
were supported.
2180
 
2181
iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor.
2182
The ACPI spec requires one interrupt minimum. BZ 423
2183
 
2184
iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
2185
Handles the case for the Interrupt Resource Descriptor where
2186
the ResourceSource argument is omitted but ResourceSourceIndex
2187
is present. Now leave room for the Index. BZ 426
2188
 
2189
iASL: Prevent error message if CondRefOf target does not exist. Fixes cases
2190
where an error message is emitted if the target does not exist. BZ 516
2191
 
2192
iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
2193
(get ACPI tables on Windows). This was apparently broken in version 20070919.
2194
 
2195
AcpiXtract: Handle EOF while extracting data. Correctly handle the case where
2196
the EOF happens immediately after the last table in the input file. Print
2197
completion message. Previously, no message was displayed in this case.
2198
 
2199
----------------------------------------
2200
01 July 2008. Summary of changes for version 20080701:
2201
 
2202
0) Git source tree / acpica.org
2203
 
2204
Fixed a problem where a git-clone from http would not transfer the entire
2205
source tree.
2206
 
2207
1) ACPI CA Core Subsystem:
2208
 
2209
Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
2210
enable bit. Now performs a read-change-write of the enable register instead
2211
of simply writing out the cached enable mask. This will prevent inadvertent
2212
enabling of GPEs if a rogue GPE is received during initialization (before GPE
2213
handlers are installed.)
2214
 
2215
Implemented a copy for dynamically loaded tables. Previously, dynamically
2216
loaded tables were simply mapped - but on some machines this memory is
2217
corrupted after suspend. Now copy the table to a local buffer. For the
2218
OpRegion case, added checksum verify. Use the table length from the table
2219
header, not the region length. For the Buffer case, use the table length
2220
also. Dennis Noordsij, Bob Moore. BZ 10734
2221
 
2222
Fixed a problem where the same ACPI table could not be dynamically loaded and
2223
unloaded more than once. Without this change, a table cannot be loaded again
2224
once it has been loaded/unloaded one time. The current mechanism does not
2225
unregister a table upon an unload. During a load, if the same table is found,
2226
this no longer returns an exception. BZ 722
2227
 
2228
Fixed a problem where the wrong descriptor length was calculated for the
2229
EndTag descriptor in 64-bit mode. The "minimal" descriptors such as EndTag
2230
are calculated as 12 bytes long, but the actual length in the internal
2231
descriptor is 16 because of the round-up to 8 on the 64-bit build. Reported
2232
by Linn Crosetto. BZ 728
2233
 
2234
Fixed a possible memory leak in the Unload operator. The DdbHandle returned
2235
by Load() did not have its reference count decremented during unload, leading
2236
to a memory leak. Lin Ming. BZ 727
2237
 
2238
Fixed a possible memory leak when deleting thermal/processor objects. Any
2239
associated notify handlers (and objects) were not being deleted. Fiodor
2240
Suietov. BZ 506
2241
 
2242
Fixed the ordering of the ASCII names in the global mutex table to match the
2243
actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only.
2244
Vegard Nossum. BZ 726
2245
 
2246
Enhanced the AcpiGetObjectInfo interface to return the number of required
2247
arguments if the object is a control method. Added this call to the debugger
2248
so the proper number of default arguments are passed to a method. This
2249
prevents a warning when executing methods from AcpiExec.
2250
 
2251
Added a check for an invalid handle in AcpiGetObjectInfo. Return
2252
AE_BAD_PARAMETER if input handle is invalid. BZ 474
2253
 
2254
Fixed an extraneous warning from exconfig.c on the 64-bit build.
2255
 
2256
Example Code and Data Size: These are the sizes for the OS-independent
2257
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2258
debug version of the code includes the debug output trace mechanism and has a
2259
much larger code and data size.
2260
 
2261
  Previous Release:
2262
    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
2263
    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
2264
  Current Release:
2265
    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
2266
    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
2267
 
2268
2) iASL Compiler/Disassembler and Tools:
2269
 
2270
iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
2271
resource descriptor names.
2272
 
2273
iASL: Detect invalid ASCII characters in input (windows version). Removed the
2274
"-CF" flag from the flex compile, enables correct detection of non-ASCII
2275
characters in the input. BZ 441
2276
 
2277
iASL: Eliminate warning when result of LoadTable is not used. Eliminate the
2278
"result of operation not used" warning when the DDB handle returned from
2279
LoadTable is not used. The warning is not needed. BZ 590
2280
 
2281
AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to
2282
pass address of table to the AML. Added option to disable OpRegion simulation
2283
to allow creation of an OpRegion with a real address that was passed to _CFG.
2284
All of this allows testing of the Load and Unload operators from AcpiExec.
2285
 
2286
Debugger: update tables command for unloaded tables. Handle unloaded tables
2287
and use the standard table header output routine.
2288
 
2289
----------------------------------------
2290
09 June 2008. Summary of changes for version 20080609:
2291
 
2292
1) ACPI CA Core Subsystem:
2293
 
2294
Implemented a workaround for reversed _PRT entries. A significant number of
2295
BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
2296
change dynamically detects and repairs this problem. Provides compatibility
2297
with MS ACPI. BZ 6859
2298
 
2299
Simplified the internal ACPI hardware interfaces to eliminate the locking
2300
flag parameter from Register Read/Write. Added a new external interface,
2301
AcpiGetRegisterUnlocked.
2302
 
2303
Fixed a problem where the invocation of a GPE control method could hang. This
2304
was a regression introduced in 20080514. The new method argument count
2305
validation mechanism can enter an infinite loop when a GPE method is
2306
dispatched. Problem fixed by removing the obsolete code that passed GPE block
2307
information to the notify handler via the control method parameter pointer.
2308
 
2309
Fixed a problem where the _SST execution status was incorrectly returned to
2310
the caller of AcpiEnterSleepStatePrep. This was a regression introduced in
2311
20080514. _SST is optional and a NOT_FOUND exception should never be
2312
returned. BZ 716
2313
 
2314
Fixed a problem where a deleted object could be accessed from within the AML
2315
parser. This was a regression introduced in version 20080123 as a fix for the
2316
Unload operator. Lin Ming. BZ 10669
2317
 
2318
Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands
2319
and eliminated the use of a negative index in a loop. Operands are now
2320
displayed in the correct order, not backwards. This also fixes a regression
2321
introduced in 20080514 on 64-bit systems where the elimination of
2322
ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
2323
 
2324
Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit
2325
path did not delete a locally allocated structure.
2326
 
2327
Updated definitions for the DMAR and SRAT tables to synchronize with the
2328
current specifications. Includes disassembler support.
2329
 
2330
Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
2331
loop termination value was used. Loop terminated on iteration early, missing
2332
one mutex. Linn Crosetto
2333
 
2334
Example Code and Data Size: These are the sizes for the OS-independent
2335
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2336
debug version of the code includes the debug output trace mechanism and has a
2337
much larger code and data size.
2338
 
2339
  Previous Release:
2340
    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
2341
    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
2342
  Current Release:
2343
    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
2344
    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
2345
 
2346
2) iASL Compiler/Disassembler and Tools:
2347
 
2348
Disassembler: Implemented support for EisaId() within _CID objects. Now
2349
disassemble integer _CID objects back to EisaId invocations, including
2350
multiple integers within _CID packages. Includes single-step support for
2351
debugger also.
2352
 
2353
Disassembler: Added support for DMAR and SRAT table definition changes.
2354
 
2355
----------------------------------------
2356
14 May 2008. Summary of changes for version 20080514:
2357
 
2358
1) ACPI CA Core Subsystem:
2359
 
2360
Fixed a problem where GPEs were enabled too early during the ACPICA
2361
initialization. This could lead to "handler not installed" errors on some
2362
machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This
2363
ensures that all operation regions and devices throughout the namespace have
2364
been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
2365
 
2366
Implemented a change to the enter sleep code. Moved execution of the _GTS
2367
method to just before setting sleep enable bit. The execution was moved from
2368
AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
2369
immediately before the SLP_EN bit is set, as per the ACPI specification.
2370
Luming Yu, BZ 1653.
2371
 
2372
Implemented a fix to disable unknown GPEs (2nd version). Now always disable
2373
the GPE, even if ACPICA thinks that that it is already disabled. It is
2374
possible that the AML or some other code has enabled the GPE unbeknownst to
2375
the ACPICA code.
2376
 
2377
Fixed a problem with the Field operator where zero-length fields would return
2378
an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL
2379
field declarations in Field(), BankField(), and IndexField(). BZ 10606.
2380
 
2381
Implemented a fix for the Load operator, now load the table at the namespace
2382
root. This reverts a change introduced in version 20071019. The table is now
2383
loaded at the namespace root even though this goes against the ACPI
2384
specification. This provides compatibility with other ACPI implementations.
2385
The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
2386
 
2387
Fixed a problem where ACPICA would not Load() tables with unusual signatures.
2388
Now ignore ACPI table signature for Load() operator. Only "SSDT" is
2389
acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
2390
Therefore, signature validation is worthless. Apparently MS ACPI accepts such
2391
signatures, ACPICA must be compatible. BZ 10454.
2392
 
2393
Fixed a possible negative array index in AcpiUtValidateException. Added NULL
2394
fields to the exception string arrays to eliminate a -1 subtraction on the
2395
SubStatus field.
2396
 
2397
Updated the debug tracking macros to reduce overall code and data size.
2398
Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
2399
instead of pointers to static strings. Jan Beulich and Bob Moore.
2400
 
2401
Implemented argument count checking in control method invocation via
2402
AcpiEvaluateObject. Now emit an error if too few arguments, warning if too
2403
many. This applies only to extern programmatic control method execution, not
2404
method-to-method calls within the AML. Lin Ming.
2405
 
2406
Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no
2407
longer needed, especially with the removal of 16-bit support. It was replaced
2408
mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on
2409
32/64-bit platforms is required.
2410
 
2411
Added the C const qualifier for appropriate string constants -- mostly
2412
MODULE_NAME and printf format strings. Jan Beulich.
2413
 
2414
Example Code and Data Size: These are the sizes for the OS-independent
2415
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2416
debug version of the code includes the debug output trace mechanism and has a
2417
much larger code and data size.
2418
 
2419
  Previous Release:
2420
    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
2421
    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
2422
  Current Release:
2423
    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
2424
    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
2425
 
2426
2) iASL Compiler/Disassembler and Tools:
2427
 
2428
Implemented ACPI table revision ID validation in the disassembler. Zero is
2429
always invalid. For DSDTs, the ID controls the interpreter integer width. 1
2430
means 32-bit and this is unusual. 2 or greater is 64-bit.
2431
 
2432
----------------------------------------
2433
21 March 2008. Summary of changes for version 20080321:
2434
 
2435
1) ACPI CA Core Subsystem:
2436
 
2437
Implemented an additional change to the GPE support in order to suppress
2438
spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently
2439
disable incoming GPEs that are neither enabled nor disabled -- meaning that
2440
the GPE is unknown to the system. This should prevent future interrupt floods
2441
from that GPE. BZ 6217 (Zhang Rui)
2442
 
2443
Fixed a problem where NULL package elements were not returned to the
2444
AcpiEvaluateObject interface correctly. The element was simply ignored
2445
instead of returning a NULL ACPI_OBJECT package element, potentially causing
2446
a buffer overflow and/or confusing the caller who expected a fixed number of
2447
elements. BZ 10132 (Lin Ming, Bob Moore)
2448
 
2449
Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword,
2450
Qword), Field, BankField, and IndexField operators when invoked from inside
2451
an executing control method. In this case, these operators created namespace
2452
nodes that were incorrectly left marked as permanent nodes instead of
2453
temporary nodes. This could cause a problem if there is race condition
2454
between an exiting control method and a running namespace walk. (Reported by
2455
Linn Crosetto)
2456
 
2457
Fixed a problem where the CreateField and CreateXXXField operators would
2458
incorrectly allow duplicate names (the name of the field) with no exception
2459
generated.
2460
 
2461
Implemented several changes for Notify handling. Added support for new Notify
2462
values (ACPI 2.0+) and improved the Notify debug output. Notify on
2463
PowerResource objects is no longer allowed, as per the ACPI specification.
2464
(Bob Moore, Zhang Rui)
2465
 
2466
All Reference Objects returned via the AcpiEvaluateObject interface are now
2467
marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for
2468
NULL objects - either NULL package elements or unresolved named references.
2469
 
2470
Fixed a problem where an extraneous debug message was produced for package
2471
objects (when debugging enabled). The message "Package List length larger
2472
than NumElements count" is now produced in the correct case, and is now an
2473
error message rather than a debug message. Added a debug message for the
2474
opposite case, where NumElements is larger than the Package List (the package
2475
will be padded out with NULL elements as per the ACPI spec.)
2476
 
2477
Implemented several improvements for the output of the ASL "Debug" object to
2478
clarify and keep all data for a given object on one output line.
2479
 
2480
Fixed two size calculation issues with the variable-length Start Dependent
2481
resource descriptor.
2482
 
2483
Example Code and Data Size: These are the sizes for the OS-independent
2484
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2485
debug version of the code includes the debug output trace mechanism and has
2486
a much larger code and data size.
2487
 
2488
  Previous Release:
2489
    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
2490
    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
2491
  Current Release:
2492
    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
2493
    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
2494
 
2495
2) iASL Compiler/Disassembler and Tools:
2496
 
2497
Fixed a problem with the use of the Switch operator where execution of the
2498
containing method by multiple concurrent threads could cause an
2499
AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
2500
actual Switch opcode, it must be simulated with local named temporary
2501
variables and if/else pairs. The solution chosen was to mark any method that
2502
uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
2503
 
2504
----------------------------------------
2505
13 February 2008. Summary of changes for version 20080213:
2506
 
2507
1) ACPI CA Core Subsystem:
2508
 
2509
Implemented another MS compatibility design change for GPE/Notify handling.
2510
GPEs are now cleared/enabled asynchronously to allow all pending notifies to
2511
complete first. It is expected that the OSL will queue the enable request
2512
behind all pending notify requests (may require changes to the local host OSL
2513
in AcpiOsExecute). Alexey Starikovskiy.
2514
 
2515
Fixed a problem where buffer and package objects passed as arguments to a
2516
control method via the external AcpiEvaluateObject interface could cause an
2517
AE_AML_INTERNAL exception depending on the order and type of operators
2518
executed by the target control method.
2519
 
2520
Fixed a problem where resource descriptor size optimization could cause a
2521
problem when a _CRS resource template is passed to a _SRS method. The _SRS
2522
resource template must use the same descriptors (with the same size) as
2523
returned from _CRS. This change affects the following resource descriptors:
2524
IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
2525
 
2526
Fixed a problem where a CopyObject to RegionField, BankField, and IndexField
2527
objects did not perform an implicit conversion as it should. These types must
2528
retain their initial type permanently as per the ACPI specification. However,
2529
a CopyObject to all other object types should not perform an implicit
2530
conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
2531
 
2532
Fixed a problem with the AcpiGetDevices interface where the mechanism to
2533
match device CIDs did not examine the entire list of available CIDs, but
2534
instead aborted on the first non-matching CID. Andrew Patterson.
2535
 
2536
Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was
2537
inadvertently changed to return a 16-bit value instead of a 32-bit value,
2538
truncating the upper dword of a 64-bit value. This macro is only used to
2539
display debug output, so no incorrect calculations were made. Also,
2540
reimplemented the macro so that a 64-bit shift is not performed by
2541
inefficient compilers.
2542
 
2543
Added missing va_end statements that should correspond with each va_start
2544
statement.
2545
 
2546
Example Code and Data Size: These are the sizes for the OS-independent
2547
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2548
debug version of the code includes the debug output trace mechanism and has
2549
a much larger code and data size.
2550
 
2551
  Previous Release:
2552
    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
2553
    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
2554
  Current Release:
2555
    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
2556
    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
2557
 
2558
2) iASL Compiler/Disassembler and Tools:
2559
 
2560
Implemented full disassembler support for the following new ACPI tables:
2561
BERT, EINJ, and ERST. Implemented partial disassembler support for the
2562
complicated HEST table. These tables support the Windows Hardware Error
2563
Architecture (WHEA).
2564
 
2565
----------------------------------------
2566
23 January 2008. Summary of changes for version 20080123:
2567
 
2568
1) ACPI CA Core Subsystem:
2569
 
2570
Added the 2008 copyright to all module headers and signons. This affects
2571
virtually every file in the ACPICA core subsystem, the iASL compiler, and
2572
the tools/utilities.
2573
 
2574
Fixed a problem with the SizeOf operator when used with Package and Buffer
2575
objects. These objects have deferred execution for some arguments, and the
2576
execution is now completed before the SizeOf is executed. This problem caused
2577
unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ
2578
9558
2579
 
2580
Implemented an enhancement to the interpreter "slack mode". In the absence of
2581
an explicit return or an implicitly returned object from the last executed
2582
opcode, a control method will now implicitly return an integer of value 0 for
2583
Microsoft compatibility. (Lin Ming) BZ 392
2584
 
2585
Fixed a problem with the Load operator where an exception was not returned in
2586
the case where the table is already loaded. (Lin Ming) BZ 463
2587
 
2588
Implemented support for the use of DDBHandles as an Indexed Reference, as per
2589
the ACPI spec. (Lin Ming) BZ 486
2590
 
2591
Implemented support for UserTerm (Method invocation) for the Unload operator
2592
as per the ACPI spec. (Lin Ming) BZ 580
2593
 
2594
Fixed a problem with the LoadTable operator where the OemId and OemTableId
2595
input strings could cause unexpected failures if they were shorter than the
2596
maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
2597
 
2598
Implemented support for UserTerm (Method invocation) for the Unload operator
2599
as per the ACPI spec. (Lin Ming) BZ 580
2600
 
2601
Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST,
2602
IBFT, UEFI, WDAT. Disassembler support is forthcoming.
2603
 
2604
Example Code and Data Size: These are the sizes for the OS-independent
2605
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2606
debug version of the code includes the debug output trace mechanism and has
2607
a much larger code and data size.
2608
 
2609
  Previous Release:
2610
    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
2611
    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
2612
  Current Release:
2613
    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
2614
    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
2615
 
2616
2) iASL Compiler/Disassembler and Tools:
2617
 
2618
Implemented support in the disassembler for checksum validation on incoming
2619
binary DSDTs and SSDTs. If incorrect, a message is displayed within the table
2620
header dump at the start of the disassembly.
2621
 
2622
Implemented additional debugging information in the namespace listing file
2623
created during compilation. In addition to the namespace hierarchy, the full
2624
pathname to each namespace object is displayed.
2625
 
2626
Fixed a problem with the disassembler where invalid ACPI tables could cause
2627
faults or infinite loops.
2628
 
2629
Fixed an unexpected parse error when using the optional "parameter types"
2630
list in a control method declaration. (Lin Ming) BZ 397
2631
 
2632
Fixed a problem where two External declarations with the same name did not
2633
cause an error (Lin Ming) BZ 509
2634
 
2635
Implemented support for full TermArgs (adding Argx, Localx and method
2636
invocation) for the ParameterData parameter to the LoadTable operator. (Lin
2637
Ming) BZ 583,587
2638
 
2639
----------------------------------------
2640
19 December 2007. Summary of changes for version 20071219:
2641
 
2642
1) ACPI CA Core Subsystem:
2643
 
2644
Implemented full support for deferred execution for the TermArg string
2645
arguments for DataTableRegion. This enables forward references and full
2646
operand resolution for the three string arguments. Similar to OperationRegion
2647
deferred argument execution.) Lin Ming. BZ 430
2648
 
2649
Implemented full argument resolution support for the BankValue argument to
2650
BankField. Previously, only constants were supported, now any TermArg may be
2651
used. Lin Ming BZ 387, 393
2652
 
2653
Fixed a problem with AcpiGetDevices where the search of a branch of the
2654
device tree could be terminated prematurely. In accordance with the ACPI
2655
specification, the search down the current branch is terminated if a device
2656
is both not present and not functional (instead of just not present.) Yakui
2657
Zhao.
2658
 
2659
Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if
2660
the underlying AML code changed the GPE enable registers. Now, any unknown
2661
incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled
2662
instead of simply ignored. Rui Zhang.
2663
 
2664
Fixed a problem with Index Fields where the Index register was incorrectly
2665
limited to a maximum of 32 bits. Now any size may be used.
2666
 
2667
Fixed a couple memory leaks associated with "implicit return" objects when
2668
the AML Interpreter slack mode is enabled. Lin Ming BZ 349
2669
 
2670
Example Code and Data Size: These are the sizes for the OS-independent
2671
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2672
debug version of the code includes the debug output trace mechanism and has
2673
a much larger code and data size.
2674
 
2675
  Previous Release:
2676
    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
2677
    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
2678
  Current Release:
2679
    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
2680
    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
2681
 
2682
----------------------------------------
2683
14 November 2007. Summary of changes for version 20071114:
2684
 
2685
1) ACPI CA Core Subsystem:
2686
 
2687
Implemented event counters for each of the Fixed Events, the ACPI SCI
2688
(interrupt) itself, and control methods executed. Named
2689
AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These
2690
should be useful for debugging and statistics.
2691
 
2692
Implemented a new external interface, AcpiGetStatistics, to retrieve the
2693
contents of the various event counters. Returns the current values for
2694
AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
2695
AcpiMethodCount. The interface can be expanded in the future if new counters
2696
are added. Device drivers should use this interface rather than access the
2697
counters directly.
2698
 
2699
Fixed a problem with the FromBCD and ToBCD operators. With some compilers,
2700
the ShortDivide function worked incorrectly, causing problems with the BCD
2701
functions with large input values. A truncation from 64-bit to 32-bit
2702
inadvertently occurred. Internal BZ 435. Lin Ming
2703
 
2704
Fixed a problem with Index references passed as method arguments. References
2705
passed as arguments to control methods were dereferenced immediately (before
2706
control was passed to the called method). The references are now correctly
2707
passed directly to the called method. BZ 5389. Lin Ming
2708
 
2709
Fixed a problem with CopyObject used in conjunction with the Index operator.
2710
The reference was incorrectly dereferenced before the copy. The reference is
2711
now correctly copied. BZ 5391. Lin Ming
2712
 
2713
Fixed a problem with Control Method references within Package objects. These
2714
references are now correctly generated. This completes the package
2715
construction overhaul that began in version 20071019.
2716
 
2717
Example Code and Data Size: These are the sizes for the OS-independent
2718
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2719
debug version of the code includes the debug output trace mechanism and has
2720
a much larger code and data size.
2721
 
2722
  Previous Release:
2723
    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
2724
    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
2725
  Current Release:
2726
    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
2727
    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
2728
 
2729
 
2730
2) iASL Compiler/Disassembler and Tools:
2731
 
2732
The AcpiExec utility now installs handlers for all of the predefined
2733
Operation Region types. New types supported are: PCI_Config, CMOS, and
2734
PCIBARTarget.
2735
 
2736
Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
2737
bit) address fields for the DSDT and FACS within the FADT were not being
2738
used, causing truncation of the upper 32-bits of these addresses. Lin Ming
2739
and Bob Moore
2740
 
2741
----------------------------------------
2742
19 October 2007. Summary of changes for version 20071019:
2743
 
2744
1) ACPI CA Core Subsystem:
2745
 
2746
Fixed a problem with the Alias operator when the target of the alias is a
2747
named ASL operator that opens a new scope -- Scope, Device, PowerResource,
2748
Processor, and ThermalZone. In these cases, any children of the original
2749
operator could not be accessed via the alias, potentially causing unexpected
2750
AE_NOT_FOUND exceptions. (BZ 9067)
2751
 
2752
Fixed a problem with the Package operator where all named references were
2753
created as object references and left otherwise unresolved. According to the
2754
ACPI specification, a Package can only contain Data Objects or references to
2755
control methods. The implication is that named references to Data Objects
2756
(Integer, Buffer, String, Package, BufferField, Field) should be resolved
2757
immediately upon package creation. This is the approach taken with this
2758
change. References to all other named objects (Methods, Devices, Scopes,
2759
etc.) are all now properly created as reference objects. (BZ 5328)
2760
 
2761
Reverted a change to Notify handling that was introduced in version
2762
20070508. This version changed the Notify handling from asynchronous to
2763
fully synchronous (Device driver Notify handling with respect to the Notify
2764
ASL operator). It was found that this change caused more problems than it
2765
solved and was removed by most users.
2766
 
2767
Fixed a problem with the Increment and Decrement operators where the type of
2768
the target object could be unexpectedly and incorrectly changed. (BZ 353)
2769
Lin Ming.
2770
 
2771
Fixed a problem with the Load and LoadTable operators where the table
2772
location within the namespace was ignored. Instead, the table was always
2773
loaded into the root or current scope. Lin Ming.
2774
 
2775
Fixed a problem with the Load operator when loading a table from a buffer
2776
object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
2777
 
2778
Fixed a problem with the Debug object where a store of a DdbHandle reference
2779
object to the Debug object could cause a fault.
2780
 
2781
Added a table checksum verification for the Load operator, in the case where
2782
the load is from a buffer. (BZ 578).
2783
 
2784
Implemented additional parameter validation for the LoadTable operator. The
2785
length of the input strings SignatureString, OemIdString, and OemTableId are
2786
now checked for maximum lengths. (BZ 582) Lin Ming.
2787
 
2788
Example Code and Data Size: These are the sizes for the OS-independent
2789
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2790
debug version of the code includes the debug output trace mechanism and has
2791
a much larger code and data size.
2792
 
2793
  Previous Release:
2794
    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
2795
    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
2796
  Current Release:
2797
    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
2798
    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
2799
 
2800
 
2801
2) iASL Compiler/Disassembler:
2802
 
2803
Fixed a problem where if a single file was specified and the file did not
2804
exist, no error message was emitted. (Introduced with wildcard support in
2805
version 20070917.)
2806
 
2807
----------------------------------------
2808
19 September 2007. Summary of changes for version 20070919:
2809
 
2810
1) ACPI CA Core Subsystem:
2811
 
2812
Designed and implemented new external interfaces to install and remove
2813
handlers for ACPI table-related events. Current events that are defined are
2814
LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
2815
they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
2816
AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
2817
 
2818
Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
2819
(acpi_serialized option on Linux) could cause some systems to hang during
2820
initialization. (Bob Moore) BZ 8171
2821
 
2822
Fixed a problem where objects of certain types (Device, ThermalZone,
2823
Processor, PowerResource) can be not found if they are declared and
2824
referenced from within the same control method (Lin Ming) BZ 341
2825
 
2826
Example Code and Data Size: These are the sizes for the OS-independent
2827
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2828
debug version of the code includes the debug output trace mechanism and has
2829
a much larger code and data size.
2830
 
2831
  Previous Release:
2832
    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
2833
    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
2834
  Current Release:
2835
    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
2836
    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
2837
 
2838
 
2839
2) iASL Compiler/Disassembler:
2840
 
2841
Implemented support to allow multiple files to be compiled/disassembled in a
2842
single invocation. This includes command line wildcard support for both the
2843
Windows and Unix versions of the compiler. This feature simplifies the
2844
disassembly and compilation of multiple ACPI tables in a single directory.
2845
 
2846
----------------------------------------
2847
08 May 2007. Summary of changes for version 20070508:
2848
 
2849
1) ACPI CA Core Subsystem:
2850
 
2851
Implemented a Microsoft compatibility design change for the handling of the
2852
Notify AML operator. Previously, notify handlers were dispatched and
2853
executed completely asynchronously in a deferred thread. The new design
2854
still executes the notify handlers in a different thread, but the original
2855
thread that executed the Notify() now waits at a synchronization point for
2856
the notify handler to complete. Some machines depend on a synchronous Notify
2857
operator in order to operate correctly.
2858
 
2859
Implemented support to allow Package objects to be passed as method
2860
arguments to the external AcpiEvaluateObject interface. Previously, this
2861
would return the AE_NOT_IMPLEMENTED exception. This feature had not been
2862
implemented since there were no reserved control methods that required it
2863
until recently.
2864
 
2865
Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that
2866
contained invalid non-zero values in reserved fields could cause later
2867
failures because these fields have meaning in later revisions of the FADT.
2868
For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields
2869
are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
2870
 
2871
Fixed a problem where the Global Lock handle was not properly updated if a
2872
thread that acquired the Global Lock via executing AML code then attempted
2873
to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe
2874
Liu.
2875
 
2876
Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
2877
could be corrupted if the interrupt being removed was at the head of the
2878
list. Reported by Linn Crosetto.
2879
 
2880
Example Code and Data Size: These are the sizes for the OS-independent
2881
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2882
debug version of the code includes the debug output trace mechanism and has
2883
a much larger code and data size.
2884
 
2885
  Previous Release:
2886
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2887
    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
2888
  Current Release:
2889
    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
2890
    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
2891
 
2892
----------------------------------------
2893
20 March 2007. Summary of changes for version 20070320:
2894
 
2895
1) ACPI CA Core Subsystem:
2896
 
2897
Implemented a change to the order of interpretation and evaluation of AML
2898
operand objects within the AML interpreter. The interpreter now evaluates
2899
operands in the order that they appear in the AML stream (and the
2900
corresponding ASL code), instead of in the reverse order (after the entire
2901
operand list has been parsed). The previous behavior caused several subtle
2902
incompatibilities with the Microsoft AML interpreter as well as being
2903
somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
2904
 
2905
Implemented a change to the ACPI Global Lock support. All interfaces to the
2906
global lock now allow the same thread to acquire the lock multiple times.
2907
This affects the AcpiAcquireGlobalLock external interface to the global lock
2908
as well as the internal use of the global lock to support AML fields -- a
2909
control method that is holding the global lock can now simultaneously access
2910
AML fields that require global lock protection. Previously, in both cases,
2911
this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to
2912
AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
2913
Controller. There is no change to the behavior of the AML Acquire operator,
2914
as this can already be used to acquire a mutex multiple times by the same
2915
thread. BZ 8066. With assistance from Alexey Starikovskiy.
2916
 
2917
Fixed a problem where invalid objects could be referenced in the AML
2918
Interpreter after error conditions. During operand evaluation, ensure that
2919
the internal "Return Object" field is cleared on error and only valid
2920
pointers are stored there. Caused occasional access to deleted objects that
2921
resulted in "large reference count" warning messages. Valery Podrezov.
2922
 
2923
Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on
2924
deeply nested control method invocations. BZ 7873, local BZ 487. Valery
2925
Podrezov.
2926
 
2927
Fixed an internal problem with the handling of result objects on the
2928
interpreter result stack. BZ 7872. Valery Podrezov.
2929
 
2930
Removed obsolete code that handled the case where AML_NAME_OP is the target
2931
of a reference (Reference.Opcode). This code was no longer necessary. BZ
2932
7874. Valery Podrezov.
2933
 
2934
Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a
2935
remnant from the previously discontinued 16-bit support.
2936
 
2937
Example Code and Data Size: These are the sizes for the OS-independent
2938
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2939
debug version of the code includes the debug output trace mechanism and has
2940
a much larger code and data size.
2941
 
2942
  Previous Release:
2943
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2944
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2945
  Current Release:
2946
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2947
    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
2948
 
2949
----------------------------------------
2950
26 January 2007. Summary of changes for version 20070126:
2951
 
2952
1) ACPI CA Core Subsystem:
2953
 
2954
Added the 2007 copyright to all module headers and signons. This affects
2955
virtually every file in the ACPICA core subsystem, the iASL compiler, and
2956
the utilities.
2957
 
2958
Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
2959
during a table load. A bad pointer was passed in the case where the DSDT is
2960
overridden, causing a fault in this case.
2961
 
2962
Example Code and Data Size: These are the sizes for the OS-independent
2963
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
2964
debug version of the code includes the debug output trace mechanism and has
2965
a much larger code and data size.
2966
 
2967
  Previous Release:
2968
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2969
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2970
  Current Release:
2971
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
2972
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
2973
 
2974
----------------------------------------
2975
15 December 2006. Summary of changes for version 20061215:
2976
 
2977
1) ACPI CA Core Subsystem:
2978
 
2979
Support for 16-bit ACPICA has been completely removed since it is no longer
2980
necessary and it clutters the code. All 16-bit macros, types, and
2981
conditional compiles have been removed, cleaning up and simplifying the code
2982
across the entire subsystem. DOS support is no longer needed since the
2983
bootable Linux firmware kit is now available.
2984
 
2985
The handler for the Global Lock is now removed during AcpiTerminate to
2986
enable a clean subsystem restart, via the implementation of the
2987
AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
2988
HP)
2989
 
2990
Implemented enhancements to the multithreading support within the debugger
2991
to enable improved multithreading debugging and evaluation of the subsystem.
2992
(Valery Podrezov)
2993
 
2994
Debugger: Enhanced the Statistics/Memory command to emit the total (maximum)
2995
memory used during the execution, as well as the maximum memory consumed by
2996
each of the various object types. (Valery Podrezov)
2997
 
2998
Example Code and Data Size: These are the sizes for the OS-independent
2999
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3000
debug version of the code includes the debug output trace mechanism and has
3001
a much larger code and data size.
3002
 
3003
  Previous Release:
3004
    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
3005
    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
3006
  Current Release:
3007
    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
3008
    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
3009
 
3010
 
3011
2) iASL Compiler/Disassembler and Tools:
3012
 
3013
AcpiExec: Implemented a new option (-m) to display full memory use
3014
statistics upon subsystem/program termination. (Valery Podrezov)
3015
 
3016
----------------------------------------
3017
09 November 2006. Summary of changes for version 20061109:
3018
 
3019
1) ACPI CA Core Subsystem:
3020
 
3021
Optimized the Load ASL operator in the case where the source operand is an
3022
operation region. Simply map the operation region memory, instead of
3023
performing a bytewise read. (Region must be of type SystemMemory, see
3024
below.)
3025
 
3026
Fixed the Load ASL operator for the case where the source operand is a
3027
region field. A buffer object is also allowed as the source operand. BZ 480
3028
 
3029
Fixed a problem where the Load ASL operator allowed the source operand to be
3030
an operation region of any type. It is now restricted to regions of type
3031
SystemMemory, as per the ACPI specification. BZ 481
3032
 
3033
Additional cleanup and optimizations for the new Table Manager code.
3034
 
3035
AcpiEnable will now fail if all of the required ACPI tables are not loaded
3036
(FADT, FACS, DSDT). BZ 477
3037
 
3038
Added #pragma pack(8/4) to acobject.h to ensure that the structures in this
3039
header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
3040
manually optimized to be aligned and will not work if it is byte-packed.
3041
 
3042
Example Code and Data Size: These are the sizes for the OS-independent
3043
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3044
debug version of the code includes the debug output trace mechanism and has
3045
a much larger code and data size.
3046
 
3047
  Previous Release:
3048
    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
3049
    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
3050
  Current Release:
3051
    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
3052
    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
3053
 
3054
 
3055
2) iASL Compiler/Disassembler and Tools:
3056
 
3057
Fixed a problem where the presence of the _OSI predefined control method
3058
within complex expressions could cause an internal compiler error.
3059
 
3060
AcpiExec: Implemented full region support for multiple address spaces.
3061
SpaceId is now part of the REGION object. BZ 429
3062
 
3063
----------------------------------------
3064
11 October 2006. Summary of changes for version 20061011:
3065
 
3066
1) ACPI CA Core Subsystem:
3067
 
3068
Completed an AML interpreter performance enhancement for control method
3069
execution. Previously a 2-pass parse/execution, control methods are now
3070
completely parsed and executed in a single pass. This improves overall
3071
interpreter performance by ~25%, reduces code size, and reduces CPU stack
3072
use. (Valery Podrezov + interpreter changes in version 20051202 that
3073
eliminated namespace loading during the pass one parse.)
3074
 
3075
Implemented _CID support for PCI Root Bridge detection. If the _HID does not
3076
match the predefined PCI Root Bridge IDs, the _CID list (if present) is now
3077
obtained and also checked for an ID match.
3078
 
3079
Implemented additional support for the PCI _ADR execution: upsearch until a
3080
device scope is found before executing _ADR. This allows PCI_Config
3081
operation regions to be declared locally within control methods underneath
3082
PCI device objects.
3083
 
3084
Fixed a problem with a possible race condition between threads executing
3085
AcpiWalkNamespace and the AML interpreter. This condition was removed by
3086
modifying AcpiWalkNamespace to (by default) ignore all temporary namespace
3087
entries created during any concurrent control method execution. An
3088
additional namespace race condition is known to exist between
3089
AcpiWalkNamespace and the Load/Unload ASL operators and is still under
3090
investigation.
3091
 
3092
Restructured the AML ParseLoop function, breaking it into several
3093
subfunctions in order to reduce CPU stack use and improve maintainability.
3094
(Mikhail Kouzmich)
3095
 
3096
AcpiGetHandle: Fix for parameter validation to detect invalid combinations
3097
of prefix handle and pathname. BZ 478
3098
 
3099
Example Code and Data Size: These are the sizes for the OS-independent
3100
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3101
debug version of the code includes the debug output trace mechanism and has
3102
a much larger code and data size.
3103
 
3104
  Previous Release:
3105
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3106
    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
3107
  Current Release:
3108
    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
3109
    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
3110
 
3111
2) iASL Compiler/Disassembler and Tools:
3112
 
3113
Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager
3114
to restore original behavior.
3115
 
3116
----------------------------------------
3117
27 September 2006. Summary of changes for version 20060927:
3118
 
3119
1) ACPI CA Core Subsystem:
3120
 
3121
Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
3122
These functions now use a spinlock for mutual exclusion and the interrupt
3123
level indication flag is not needed.
3124
 
3125
Fixed a problem with the Global Lock where the lock could appear to be
3126
obtained before it is actually obtained. The global lock semaphore was
3127
inadvertently created with one unit instead of zero units. (BZ 464) Fiodor
3128
Suietov.
3129
 
3130
Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during
3131
a read from a buffer or region field. (BZ 458) Fiodor Suietov.
3132
 
3133
Example Code and Data Size: These are the sizes for the OS-independent
3134
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3135
debug version of the code includes the debug output trace mechanism and has
3136
a much larger code and data size.
3137
 
3138
  Previous Release:
3139
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3140
    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
3141
  Current Release:
3142
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3143
    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
3144
 
3145
 
3146
2) iASL Compiler/Disassembler and Tools:
3147
 
3148
Fixed a compilation problem with the pre-defined Resource Descriptor field
3149
names where an "object does not exist" error could be incorrectly generated
3150
if the parent ResourceTemplate pathname places the template within a
3151
different namespace scope than the current scope. (BZ 7212)
3152
 
3153
Fixed a problem where the compiler could hang after syntax errors detected
3154
in an ElseIf construct. (BZ 453)
3155
 
3156
Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
3157
operator. An incorrect output filename was produced when this parameter was
3158
a null string (""). Now, the original input filename is used as the AML
3159
output filename, with an ".aml" extension.
3160
 
3161
Implemented a generic batch command mode for the AcpiExec utility (execute
3162
any AML debugger command) (Valery Podrezov).
3163
 
3164
----------------------------------------
3165
12 September 2006. Summary of changes for version 20060912:
3166
 
3167
1) ACPI CA Core Subsystem:
3168
 
3169
Enhanced the implementation of the "serialized mode" of the interpreter
3170
(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
3171
specified, instead of creating a serialization semaphore per control method,
3172
the interpreter lock is simply no longer released before a blocking
3173
operation during control method execution. This effectively makes the AML
3174
Interpreter single-threaded. The overhead of a semaphore per-method is
3175
eliminated.
3176
 
3177
Fixed a regression where an error was no longer emitted if a control method
3178
attempts to create 2 objects of the same name. This once again returns
3179
AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that
3180
will dynamically serialize the control method to possible prevent future
3181
errors. (BZ 440)
3182
 
3183
Integrated a fix for a problem with PCI Express HID detection in the PCI
3184
Config Space setup procedure. (BZ 7145)
3185
 
3186
Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
3187
AcpiHwInitialize function - the FADT registers are now validated when the
3188
table is loaded.
3189
 
3190
Added two new warnings during FADT verification - 1) if the FADT is larger
3191
than the largest known FADT version, and 2) if there is a mismatch between a
3192
32-bit block address and the 64-bit X counterpart (when both are non-zero.)
3193
 
3194
Example Code and Data Size: These are the sizes for the OS-independent
3195
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3196
debug version of the code includes the debug output trace mechanism and has
3197
a much larger code and data size.
3198
 
3199
  Previous Release:
3200
    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
3201
    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
3202
  Current Release:
3203
    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
3204
    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
3205
 
3206
 
3207
2) iASL Compiler/Disassembler and Tools:
3208
 
3209
Fixed a problem with the implementation of the Switch() operator where the
3210
temporary variable was declared too close to the actual Switch, instead of
3211
at method level. This could cause a problem if the Switch() operator is
3212
within a while loop, causing an error on the second iteration. (BZ 460)
3213
 
3214
Disassembler - fix for error emitted for unknown type for target of scope
3215
operator. Now, ignore it and continue.
3216
 
3217
Disassembly of an FADT now verifies the input FADT and reports any errors
3218
found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
3219
 
3220
Disassembly of raw data buffers with byte initialization data now prefixes
3221
each output line with the current buffer offset.
3222
 
3223
Disassembly of ASF! table now includes all variable-length data fields at
3224
the end of some of the subtables.
3225
 
3226
The disassembler now emits a comment if a buffer appears to be a
3227
ResourceTemplate, but cannot be disassembled as such because the EndTag does
3228
not appear at the very end of the buffer.
3229
 
3230
AcpiExec - Added the "-t" command line option to enable the serialized mode
3231
of the AML interpreter.
3232
 
3233
----------------------------------------
3234
31 August 2006. Summary of changes for version 20060831:
3235
 
3236
1) ACPI CA Core Subsystem:
3237
 
3238
Miscellaneous fixes for the Table Manager:
3239
- Correctly initialize internal common FADT for all 64-bit "X" fields
3240
- Fixed a couple table mapping issues during table load
3241
- Fixed a couple alignment issues for IA64
3242
- Initialize input array to zero in AcpiInitializeTables
3243
- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
3244
AcpiGetTableByIndex
3245
 
3246
Change for GPE support: when a "wake" GPE is received, all wake GPEs are now
3247
immediately disabled to prevent the waking GPE from firing again and to
3248
prevent other wake GPEs from interrupting the wake process.
3249
 
3250
Added the AcpiGpeCount global that tracks the number of processed GPEs, to
3251
be used for debugging systems with a large number of ACPI interrupts.
3252
 
3253
Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
3254
both the ACPICA headers and the disassembler.
3255
 
3256
Example Code and Data Size: These are the sizes for the OS-independent
3257
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3258
debug version of the code includes the debug output trace mechanism and has
3259
a much larger code and data size.
3260
 
3261
  Previous Release:
3262
    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
3263
    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
3264
  Current Release:
3265
    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
3266
    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
3267
 
3268
 
3269
2) iASL Compiler/Disassembler and Tools:
3270
 
3271
Disassembler support for the DMAR ACPI table.
3272
 
3273
----------------------------------------
3274
23 August 2006. Summary of changes for version 20060823:
3275
 
3276
1) ACPI CA Core Subsystem:
3277
 
3278
The Table Manager component has been completely redesigned and
3279
reimplemented. The new design is much simpler, and reduces the overall code
3280
and data size of the kernel-resident ACPICA by approximately 5%. Also, it is
3281
now possible to obtain the ACPI tables very early during kernel
3282
initialization, even before dynamic memory management is initialized.
3283
(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
3284
 
3285
Obsolete ACPICA interfaces:
3286
 
3287
- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init
3288
time).
3289
- AcpiLoadTable: Not needed.
3290
- AcpiUnloadTable: Not needed.
3291
 
3292
New ACPICA interfaces:
3293
 
3294
- AcpiInitializeTables: Must be called before the table manager can be used.
3295
- AcpiReallocateRootTable: Used to transfer the root table to dynamically
3296
allocated memory after it becomes available.
3297
- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables
3298
in the RSDT/XSDT.
3299
 
3300
Other ACPICA changes:
3301
 
3302
- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use
3303
AcpiOsUnmapMemory to free this mapping.
3304
- AcpiGetTable returns the actual mapped table. The mapping is managed
3305
internally and must not be deleted by the caller. Use of this interface
3306
causes no additional dynamic memory allocation.
3307
- AcpiFindRootPointer: Support for physical addressing has been eliminated,
3308
it appeared to be unused.
3309
- The interface to AcpiOsMapMemory has changed to be consistent with the
3310
other allocation interfaces.
3311
- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary
3312
parameters.
3313
- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
3314
bit platforms. Was previously 64 bits on all platforms.
3315
- The interface to the ACPI Global Lock acquire/release macros have changed
3316
slightly since ACPICA no longer keeps a local copy of the FACS with a
3317
constructed pointer to the actual global lock.
3318
 
3319
Porting to the new table manager:
3320
 
3321
- AcpiInitializeTables: Must be called once, and can be called anytime
3322
during the OS initialization process. It allows the host to specify an area
3323
of memory to be used to store the internal version of the RSDT/XSDT (root
3324
table). This allows the host to access ACPI tables before memory management
3325
is initialized and running.
3326
- AcpiReallocateRootTable: Can be called after memory management is running
3327
to copy the root table to a dynamically allocated array, freeing up the
3328
scratch memory specified in the call to AcpiInitializeTables.
3329
- AcpiSubsystemInitialize: This existing interface is independent of the
3330
Table Manager, and does not have to be called before the Table Manager can
3331
be used, it only must be called before the rest of ACPICA can be used.
3332
- ACPI Tables: Some changes have been made to the names and structure of the
3333
actbl.h and actbl1.h header files and may require changes to existing code.
3334
For example, bitfields have been completely removed because of their lack of
3335
portability across C compilers.
3336
- Update interfaces to the Global Lock acquire/release macros if local
3337
versions are used. (see acwin.h)
3338
 
3339
Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
3340
 
3341
New files: tbfind.c
3342
 
3343
Example Code and Data Size: These are the sizes for the OS-independent
3344
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3345
debug version of the code includes the debug output trace mechanism and has
3346
a much larger code and data size.
3347
 
3348
  Previous Release:
3349
    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
3350
    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
3351
  Current Release:
3352
    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
3353
    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
3354
 
3355
 
3356
2) iASL Compiler/Disassembler and Tools:
3357
 
3358
No changes for this release.
3359
 
3360
----------------------------------------
3361
21 July 2006. Summary of changes for version 20060721:
3362
 
3363
1) ACPI CA Core Subsystem:
3364
 
3365
The full source code for the ASL test suite used to validate the iASL
3366
compiler and the ACPICA core subsystem is being released with the ACPICA
3367
source for the first time. The source is contained in a separate package and
3368
consists of over 1100 files that exercise all ASL/AML operators. The package
3369
should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
3370
Suietov)
3371
 
3372
Completed a new design and implementation for support of the ACPI Global
3373
Lock. On the OS side, the global lock is now treated as a standard AML
3374
mutex. Previously, multiple OS threads could "acquire" the global lock
3375
simultaneously. However, this could cause the BIOS to be starved out of the
3376
lock - especially in cases such as the Embedded Controller driver where
3377
there is a tight coupling between the OS and the BIOS.
3378
 
3379
Implemented an optimization for the ACPI Global Lock interrupt mechanism.
3380
The Global Lock interrupt handler no longer queues the execution of a
3381
separate thread to signal the global lock semaphore. Instead, the semaphore
3382
is signaled directly from the interrupt handler.
3383
 
3384
Implemented support within the AML interpreter for package objects that
3385
contain a larger AML length (package list length) than the package element
3386
count. In this case, the length of the package is truncated to match the
3387
package element count. Some BIOS code apparently modifies the package length
3388
on the fly, and this change supports this behavior. Provides compatibility
3389
with the MS AML interpreter. (With assistance from Fiodor Suietov)
3390
 
3391
Implemented a temporary fix for the BankValue parameter of a Bank Field to
3392
support all constant values, now including the Zero and One opcodes.
3393
Evaluation of this parameter must eventually be converted to a full TermArg
3394
evaluation. A not-implemented error is now returned (temporarily) for non-
3395
constant values for this parameter.
3396
 
3397
Fixed problem reports (Fiodor Suietov) integrated:
3398
- Fix for premature object deletion after CopyObject on Operation Region (BZ
3399
350)
3400
 
3401
Example Code and Data Size: These are the sizes for the OS-independent
3402
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3403
debug version of the code includes the debug output trace mechanism and has
3404
a much larger code and data size.
3405
 
3406
  Previous Release:
3407
    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
3408
    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
3409
  Current Release:
3410
    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
3411
    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
3412
 
3413
 
3414
2) iASL Compiler/Disassembler and Tools:
3415
 
3416
No changes for this release.
3417
 
3418
----------------------------------------
3419
07 July 2006. Summary of changes for version 20060707:
3420
 
3421
1) ACPI CA Core Subsystem:
3422
 
3423
Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
3424
that do not allow the initialization of address pointers within packed
3425
structures - even though the hardware itself may support misaligned
3426
transfers. Some of the debug data structures are packed by default to
3427
minimize size.
3428
 
3429
Added an error message for the case where AcpiOsGetThreadId() returns zero.
3430
A non-zero value is required by the core ACPICA code to ensure the proper
3431
operation of AML mutexes and recursive control methods.
3432
 
3433
The DSDT is now the only ACPI table that determines whether the AML
3434
interpreter is in 32-bit or 64-bit mode. Not really a functional change, but
3435
the hooks for per-table 32/64 switching have been removed from the code. A
3436
clarification to the ACPI specification is forthcoming in ACPI 3.0B.
3437
 
3438
Fixed a possible leak of an OwnerID in the error path of
3439
AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
3440
deletion to a single place in AcpiTbUninstallTable to correct possible leaks
3441
when using the AcpiTbDeleteTablesByType interface (with assistance from
3442
Lance Ortiz.)
3443
 
3444
Fixed a problem with Serialized control methods where the semaphore
3445
associated with the method could be over-signaled after multiple method
3446
invocations.
3447
 
3448
Fixed two issues with the locking of the internal namespace data structure.
3449
Both the Unload() operator and AcpiUnloadTable interface now lock the
3450
namespace during the namespace deletion associated with the table unload
3451
(with assistance from Linn Crosetto.)
3452
 
3453
Fixed problem reports (Valery Podrezov) integrated:
3454
- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
3455
 
3456
Fixed problem reports (Fiodor Suietov) integrated:
3457
- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
3458
- On Address Space handler deletion, needless deactivation call (BZ 374)
3459
- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
3460
- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone
3461
(BZ 376)
3462
- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
3463
- Minimum Length of RSDT should be validated (BZ 379)
3464
- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
3465
Handler (BZ (380)
3466
- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded
3467
(BZ 381)
3468
 
3469
Example Code and Data Size: These are the sizes for the OS-independent
3470
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3471
debug version of the code includes the debug output trace mechanism and has
3472
a much larger code and data size.
3473
 
3474
  Previous Release:
3475
    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
3476
    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
3477
  Current Release:
3478
    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
3479
    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
3480
 
3481
 
3482
2) iASL Compiler/Disassembler and Tools:
3483
 
3484
Fixed problem reports:
3485
Compiler segfault when ASL contains a long (>1024) String declaration (BZ
3486
436)
3487
 
3488
----------------------------------------
3489
23 June 2006. Summary of changes for version 20060623:
3490
 
3491
1) ACPI CA Core Subsystem:
3492
 
3493
Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
3494
allows the type to be customized to the host OS for improved efficiency
3495
(since a spinlock is usually a very small object.)
3496
 
3497
Implemented support for "ignored" bits in the ACPI registers. According to
3498
the ACPI specification, these bits should be preserved when writing the
3499
registers via a read/modify/write cycle. There are 3 bits preserved in this
3500
manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
3501
 
3502
Implemented the initial deployment of new OSL mutex interfaces. Since some
3503
host operating systems have separate mutex and semaphore objects, this
3504
feature was requested. The base code now uses mutexes (and the new mutex
3505
interfaces) wherever a binary semaphore was used previously. However, for
3506
the current release, the mutex interfaces are defined as macros to map them
3507
to the existing semaphore interfaces. Therefore, no OSL changes are required
3508
at this time. (See acpiosxf.h)
3509
 
3510
Fixed several problems with the support for the control method SyncLevel
3511
parameter. The SyncLevel now works according to the ACPI specification and
3512
in concert with the Mutex SyncLevel parameter, since the current SyncLevel
3513
is a property of the executing thread. Mutual exclusion for control methods
3514
is now implemented with a mutex instead of a semaphore.
3515
 
3516
Fixed three instances of the use of the C shift operator in the bitfield
3517
support code (exfldio.c) to avoid the use of a shift value larger than the
3518
target data width. The behavior of C compilers is undefined in this case and
3519
can cause unpredictable results, and therefore the case must be detected and
3520
avoided. (Fiodor Suietov)
3521
 
3522
Added an info message whenever an SSDT or OEM table is loaded dynamically
3523
via the Load() or LoadTable() ASL operators. This should improve debugging
3524
capability since it will show exactly what tables have been loaded (beyond
3525
the tables present in the RSDT/XSDT.)
3526
 
3527
Example Code and Data Size: These are the sizes for the OS-independent
3528
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3529
debug version of the code includes the debug output trace mechanism and has
3530
a much larger code and data size.
3531
 
3532
  Previous Release:
3533
    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
3534
    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
3535
  Current Release:
3536
    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
3537
    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
3538
 
3539
 
3540
2) iASL Compiler/Disassembler and Tools:
3541
 
3542
No changes for this release.
3543
 
3544
----------------------------------------
3545
08 June 2006. Summary of changes for version 20060608:
3546
 
3547
1) ACPI CA Core Subsystem:
3548
 
3549
Converted the locking mutex used for the ACPI hardware to a spinlock. This
3550
change should eliminate all problems caused by attempting to acquire a
3551
semaphore at interrupt level, and it means that all ACPICA external
3552
interfaces that directly access the ACPI hardware can be safely called from
3553
interrupt level. OSL code that implements the semaphore interfaces should be
3554
able to eliminate any workarounds for being called at interrupt level.
3555
 
3556
Fixed a regression introduced in 20060526 where the ACPI device
3557
initialization could be prematurely aborted with an AE_NOT_FOUND if a device
3558
did not have an optional _INI method.
3559
 
3560
Fixed an IndexField issue where a write to the Data Register should be
3561
limited in size to the AccessSize (width) of the IndexField itself. (BZ 433,
3562
Fiodor Suietov)
3563
 
3564
Fixed problem reports (Valery Podrezov) integrated:
3565
- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
3566
 
3567
Fixed problem reports (Fiodor Suietov) integrated:
3568
- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
3569
 
3570
Removed four global mutexes that were obsolete and were no longer being
3571
used.
3572
 
3573
Example Code and Data Size: These are the sizes for the OS-independent
3574
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3575
debug version of the code includes the debug output trace mechanism and has
3576
a much larger code and data size.
3577
 
3578
  Previous Release:
3579
    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
3580
    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
3581
  Current Release:
3582
    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
3583
    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
3584
 
3585
 
3586
2) iASL Compiler/Disassembler and Tools:
3587
 
3588
Fixed a fault when using -g option (get tables from registry) on Windows
3589
machines.
3590
 
3591
Fixed problem reports integrated:
3592
- Generate error if CreateField NumBits parameter is zero. (BZ 405)
3593
- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
3594
Suietov)
3595
- Global table revision override (-r) is ignored (BZ 413)
3596
 
3597
----------------------------------------
3598
26 May 2006. Summary of changes for version 20060526:
3599
 
3600
1) ACPI CA Core Subsystem:
3601
 
3602
Restructured, flattened, and simplified the internal interfaces for
3603
namespace object evaluation - resulting in smaller code, less CPU stack use,
3604
and fewer interfaces. (With assistance from Mikhail Kouzmich)
3605
 
3606
Fixed a problem with the CopyObject operator where the first parameter was
3607
not typed correctly for the parser, interpreter, compiler, and disassembler.
3608
Caused various errors and unexpected behavior.
3609
 
3610
Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
3611
produced incorrect results with some C compilers. Since the behavior of C
3612
compilers when the shift value is larger than the datatype width is
3613
apparently not well defined, the interpreter now detects this condition and
3614
simply returns zero as expected in all such cases. (BZ 395)
3615
 
3616
Fixed problem reports (Valery Podrezov) integrated:
3617
- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
3618
- Allow interpreter to handle nested method declarations (BZ 5361)
3619
 
3620
Fixed problem reports (Fiodor Suietov) integrated:
3621
- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
3622
- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
3623
- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
3624
- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
3625
- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
3626
- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
3627
- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
3628
- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
3629
- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
3630
- Status of the Global Initialization Handler call not used (BZ 366)
3631
- Incorrect object parameter to Global Initialization Handler (BZ 367)
3632
 
3633
Example Code and Data Size: These are the sizes for the OS-independent
3634
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3635
debug version of the code includes the debug output trace mechanism and has
3636
a much larger code and data size.
3637
 
3638
  Previous Release:
3639
    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
3640
    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
3641
  Current Release:
3642
    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
3643
    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
3644
 
3645
 
3646
2) iASL Compiler/Disassembler and Tools:
3647
 
3648
Modified the parser to allow the names IO, DMA, and IRQ to be used as
3649
namespace identifiers with no collision with existing resource descriptor
3650
macro names. This provides compatibility with other ASL compilers and is
3651
most useful for disassembly/recompilation of existing tables without parse
3652
errors. (With assistance from Thomas Renninger)
3653
 
3654
Disassembler: fixed an incorrect disassembly problem with the
3655
DataTableRegion and CopyObject operators. Fixed a possible fault during
3656
disassembly of some Alias operators.
3657
 
3658
----------------------------------------
3659
12 May 2006. Summary of changes for version 20060512:
3660
 
3661
1) ACPI CA Core Subsystem:
3662
 
3663
Replaced the AcpiOsQueueForExecution interface with a new interface named
3664
AcpiOsExecute. The major difference is that the new interface does not have
3665
a Priority parameter, this appeared to be useless and has been replaced by a
3666
Type parameter. The Type tells the host what type of execution is being
3667
requested, such as global lock handler, notify handler, GPE handler, etc.
3668
This allows the host to queue and execute the request as appropriate for the
3669
request type, possibly using different work queues and different priorities
3670
for the various request types. This enables fixes for multithreading
3671
deadlock problems such as BZ #5534, and will require changes to all existing
3672
OS interface layers. (Alexey Starikovskiy and Bob Moore)
3673
 
3674
Fixed a possible memory leak associated with the support for the so-called
3675
"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
3676
Suietov)
3677
 
3678
Fixed a problem with the Load() operator where a table load from an
3679
operation region could overwrite an internal table buffer by up to 7 bytes
3680
and cause alignment faults on IPF systems. (With assistance from Luming Yu)
3681
 
3682
Example Code and Data Size: These are the sizes for the OS-independent
3683
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3684
debug version of the code includes the debug output trace mechanism and has
3685
a much larger code and data size.
3686
 
3687
  Previous Release:
3688
    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
3689
    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
3690
  Current Release:
3691
    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
3692
    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
3693
 
3694
 
3695
 
3696
2) iASL Compiler/Disassembler and Tools:
3697
 
3698
Disassembler: Implemented support to cross reference the internal namespace
3699
and automatically generate ASL External() statements for symbols not defined
3700
within the current table being disassembled. This will simplify the
3701
disassembly and recompilation of interdependent tables such as SSDTs since
3702
these statements will no longer have to be added manually.
3703
 
3704
Disassembler: Implemented experimental support to automatically detect
3705
invocations of external control methods and generate appropriate External()
3706
statements. This is problematic because the AML cannot be correctly parsed
3707
until the number of arguments for each control method is known. Currently,
3708
standalone method invocations and invocations as the source operand of a
3709
Store() statement are supported.
3710
 
3711
Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
3712
LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
3713
LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
3714
more readable and likely closer to the original ASL source.
3715
 
3716
----------------------------------------
3717
21 April 2006. Summary of changes for version 20060421:
3718
 
3719
1) ACPI CA Core Subsystem:
3720
 
3721
Removed a device initialization optimization introduced in 20051216 where
3722
the _STA method was not run unless an _INI was also present for the same
3723
device. This optimization could cause problems because it could allow _INI
3724
methods to be run within a not-present device subtree. (If a not-present
3725
device had no _INI, _STA would not be run, the not-present status would not
3726
be discovered, and the children of the device would be incorrectly
3727
traversed.)
3728
 
3729
Implemented a new _STA optimization where namespace subtrees that do not
3730
contain _INI are identified and ignored during device initialization.
3731
Selectively running _STA can significantly improve boot time on large
3732
machines (with assistance from Len Brown.)
3733
 
3734
Implemented support for the device initialization case where the returned
3735
_STA flags indicate a device not-present but functioning. In this case, _INI
3736
is not run, but the device children are examined for presence, as per the
3737
ACPI specification.
3738
 
3739
Implemented an additional change to the IndexField support in order to
3740
conform to MS behavior. The value written to the Index Register is not
3741
simply a byte offset, it is a byte offset in units of the access width of
3742
the parent Index Field. (Fiodor Suietov)
3743
 
3744
Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
3745
interface is called during the creation of all AML operation regions, and
3746
allows the host OS to exert control over what addresses it will allow the
3747
AML code to access. Operation Regions whose addresses are disallowed will
3748
cause a runtime exception when they are actually accessed (will not affect
3749
or abort table loading.) See oswinxf or osunixxf for an example
3750
implementation.
3751
 
3752
Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
3753
interface allows the host OS to match the various "optional"
3754
interface/behavior strings for the _OSI predefined control method as
3755
appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
3756
for an example implementation.
3757
 
3758
Restructured and corrected various problems in the exception handling code
3759
paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
3760
(with assistance from Takayoshi Kochi.)
3761
 
3762
Modified the Linux source converter to ignore quoted string literals while
3763
converting identifiers from mixed to lower case. This will correct problems
3764
with the disassembler and other areas where such strings must not be
3765
modified.
3766
 
3767
The ACPI_FUNCTION_* macros no longer require quotes around the function
3768
name. This allows the Linux source converter to convert the names, now that
3769
the converter ignores quoted strings.
3770
 
3771
Example Code and Data Size: These are the sizes for the OS-independent
3772
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3773
debug version of the code includes the debug output trace mechanism and has
3774
a much larger code and data size.
3775
 
3776
  Previous Release:
3777
 
3778
    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
3779
    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
3780
  Current Release:
3781
    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
3782
    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
3783
 
3784
 
3785
2) iASL Compiler/Disassembler and Tools:
3786
 
3787
Implemented 3 new warnings for iASL, and implemented multiple warning levels
3788
(w2 flag).
3789
 
3790
1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not
3791
WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
3792
check for the possible timeout, a warning is issued.
3793
 
3794
2) Useless operators: If an ASL operator does not specify an optional target
3795
operand and it also does not use the function return value from the
3796
operator, a warning is issued since the operator effectively does nothing.
3797
 
3798
3) Unreferenced objects: If a namespace object is created, but never
3799
referenced, a warning is issued. This is a warning level 2 since there are
3800
cases where this is ok, such as when a secondary table is loaded that uses
3801
the unreferenced objects. Even so, care is taken to only flag objects that
3802
don't look like they will ever be used. For example, the reserved methods
3803
(starting with an underscore) are usually not referenced because it is
3804
expected that the OS will invoke them.
3805
 
3806
----------------------------------------
3807
31 March 2006. Summary of changes for version 20060331:
3808
 
3809
1) ACPI CA Core Subsystem:
3810
 
3811
Implemented header file support for the following additional ACPI tables:
3812
ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support,
3813
all current and known ACPI tables are now defined in the ACPICA headers and
3814
are available for use by device drivers and other software.
3815
 
3816
Implemented support to allow tables that contain ACPI names with invalid
3817
characters to be loaded. Previously, this would cause the table load to
3818
fail, but since there are several known cases of such tables on existing
3819
machines, this change was made to enable ACPI support for them. Also, this
3820
matches the behavior of the Microsoft ACPI implementation.
3821
 
3822
Fixed a couple regressions introduced during the memory optimization in the
3823
20060317 release. The namespace node definition required additional
3824
reorganization and an internal datatype that had been changed to 8-bit was
3825
restored to 32-bit. (Valery Podrezov)
3826
 
3827
Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
3828
could be passed through to AcpiOsReleaseObject which is unexpected. Such
3829
null pointers are now trapped and ignored, matching the behavior of the
3830
previous implementation before the deployment of AcpiOsReleaseObject.
3831
(Valery Podrezov, Fiodor Suietov)
3832
 
3833
Fixed a memory mapping leak during the deletion of a SystemMemory operation
3834
region where a cached memory mapping was not deleted. This became a
3835
noticeable problem for operation regions that are defined within frequently
3836
used control methods. (Dana Meyers)
3837
 
3838
Reorganized the ACPI table header files into two main files: one for the
3839
ACPI tables consumed by the ACPICA core, and another for the miscellaneous
3840
ACPI tables that are consumed by the drivers and other software. The various
3841
FADT definitions were merged into one common section and three different
3842
tables (ACPI 1.0, 1.0+, and 2.0)
3843
 
3844
Example Code and Data Size: These are the sizes for the OS-independent
3845
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3846
debug version of the code includes the debug output trace mechanism and has
3847
a much larger code and data size.
3848
 
3849
  Previous Release:
3850
    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
3851
    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
3852
  Current Release:
3853
    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
3854
    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
3855
 
3856
 
3857
2) iASL Compiler/Disassembler and Tools:
3858
 
3859
Disassembler: Implemented support to decode and format all non-AML ACPI
3860
tables (tables other than DSDTs and SSDTs.) This includes the new tables
3861
added to the ACPICA headers, therefore all current and known ACPI tables are
3862
supported.
3863
 
3864
Disassembler: The change to allow ACPI names with invalid characters also
3865
enables the disassembly of such tables. Invalid characters within names are
3866
changed to '*' to make the name printable; the iASL compiler will still
3867
generate an error for such names, however, since this is an invalid ACPI
3868
character.
3869
 
3870
Implemented an option for AcpiXtract (-a) to extract all tables found in the
3871
input file. The default invocation extracts only the DSDTs and SSDTs.
3872
 
3873
Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
3874
makefile for the AcpiXtract utility.
3875
 
3876
----------------------------------------
3877
17 March 2006. Summary of changes for version 20060317:
3878
 
3879
1) ACPI CA Core Subsystem:
3880
 
3881
Implemented the use of a cache object for all internal namespace nodes.
3882
Since there are about 1000 static nodes in a typical system, this will
3883
decrease memory use for cache implementations that minimize per-allocation
3884
overhead (such as a slab allocator.)
3885
 
3886
Removed the reference count mechanism for internal namespace nodes, since it
3887
was deemed unnecessary. This reduces the size of each namespace node by
3888
about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case,
3889
and 32 bytes for the 64-bit case.
3890
 
3891
Optimized several internal data structures to reduce object size on 64-bit
3892
platforms by packing data within the 64-bit alignment. This includes the
3893
frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
3894
instances corresponding to the namespace objects.
3895
 
3896
Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1"
3897
and "Windows 2006".
3898
 
3899
Split the allocation tracking mechanism out to a separate file, from
3900
utalloc.c to uttrack.c. This mechanism appears to be only useful for
3901
application-level code. Kernels may wish to not include uttrack.c in
3902
distributions.
3903
 
3904
Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated
3905
code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
3906
macros.)
3907
 
3908
Code and Data Size: These are the sizes for the acpica.lib produced by the
3909
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3910
driver or OSPM code. The debug version of the code includes the debug output
3911
trace mechanism and has a much larger code and data size. Note that these
3912
values will vary depending on the efficiency of the compiler and the
3913
compiler options used during generation.
3914
 
3915
  Previous Release:
3916
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3917
    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
3918
  Current Release:
3919
    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
3920
    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
3921
 
3922
 
3923
2) iASL Compiler/Disassembler and Tools:
3924
 
3925
Implemented an ANSI C version of the acpixtract utility. This version will
3926
automatically extract the DSDT and all SSDTs from the input acpidump text
3927
file and dump the binary output to separate files. It can also display a
3928
summary of the input file including the headers for each table found and
3929
will extract any single ACPI table, with any signature. (See
3930
source/tools/acpixtract)
3931
 
3932
----------------------------------------
3933
10 March 2006. Summary of changes for version 20060310:
3934
 
3935
1) ACPI CA Core Subsystem:
3936
 
3937
Tagged all external interfaces to the subsystem with the new
3938
ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist
3939
kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
3940
macro. The default definition is NULL.
3941
 
3942
Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId.
3943
This allows the host to define this as necessary to simplify kernel
3944
integration. The default definition is ACPI_NATIVE_UINT.
3945
 
3946
Fixed two interpreter problems related to error processing, the deletion of
3947
objects, and placing invalid pointers onto the internal operator result
3948
stack. BZ 6028, 6151 (Valery Podrezov)
3949
 
3950
Increased the reference count threshold where a warning is emitted for large
3951
reference counts in order to eliminate unnecessary warnings on systems with
3952
large namespaces (especially 64-bit.) Increased the value from 0x400 to
3953
0x800.
3954
 
3955
Due to universal disagreement as to the meaning of the 'c' in the calloc()
3956
function, the ACPI_MEM_CALLOCATE macro has been renamed to
3957
ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
3958
ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
3959
ACPI_FREE.
3960
 
3961
Code and Data Size: These are the sizes for the acpica.lib produced by the
3962
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
3963
driver or OSPM code. The debug version of the code includes the debug output
3964
trace mechanism and has a much larger code and data size. Note that these
3965
values will vary depending on the efficiency of the compiler and the
3966
compiler options used during generation.
3967
 
3968
  Previous Release:
3969
    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
3970
    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
3971
  Current Release:
3972
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
3973
    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
3974
 
3975
 
3976
2) iASL Compiler/Disassembler:
3977
 
3978
Disassembler: implemented support for symbolic resource descriptor
3979
references. If a CreateXxxxField operator references a fixed offset within a
3980
resource descriptor, a name is assigned to the descriptor and the offset is
3981
translated to the appropriate resource tag and pathname. The addition of
3982
this support brings the disassembled code very close to the original ASL
3983
source code and helps eliminate run-time errors when the disassembled code
3984
is modified (and recompiled) in such a way as to invalidate the original
3985
fixed offsets.
3986
 
3987
Implemented support for a Descriptor Name as the last parameter to the ASL
3988
Register() macro. This parameter was inadvertently left out of the ACPI
3989
specification, and will be added for ACPI 3.0b.
3990
 
3991
Fixed a problem where the use of the "_OSI" string (versus the full path
3992
"\_OSI") caused an internal compiler error. ("No back ptr to op")
3993
 
3994
Fixed a problem with the error message that occurs when an invalid string is
3995
used for a _HID object (such as one with an embedded asterisk: "*PNP010A".)
3996
The correct message is now displayed.
3997
 
3998
----------------------------------------
3999
17 February 2006. Summary of changes for version 20060217:
4000
 
4001
1) ACPI CA Core Subsystem:
4002
 
4003
Implemented a change to the IndexField support to match the behavior of the
4004
Microsoft AML interpreter. The value written to the Index register is now a
4005
byte offset, no longer an index based upon the width of the Data register.
4006
This should fix IndexField problems seen on some machines where the Data
4007
register is not exactly one byte wide. The ACPI specification will be
4008
clarified on this point.
4009
 
4010
Fixed a problem where several resource descriptor types could overrun the
4011
internal descriptor buffer due to size miscalculation: VendorShort,
4012
VendorLong, and Interrupt. This was noticed on IA64 machines, but could
4013
affect all platforms.
4014
 
4015
Fixed a problem where individual resource descriptors were misaligned within
4016
the internal buffer, causing alignment faults on IA64 platforms.
4017
 
4018
Code and Data Size: These are the sizes for the acpica.lib produced by the
4019
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
4020
driver or OSPM code. The debug version of the code includes the debug output
4021
trace mechanism and has a much larger code and data size. Note that these
4022
values will vary depending on the efficiency of the compiler and the
4023
compiler options used during generation.
4024
 
4025
  Previous Release:
4026
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4027
    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
4028
  Current Release:
4029
    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
4030
    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
4031
 
4032
 
4033
2) iASL Compiler/Disassembler:
4034
 
4035
Implemented support for new reserved names: _WDG and _WED are Microsoft
4036
extensions for Windows Instrumentation Management, _TDL is a new ACPI-
4037
defined method (Throttling Depth Limit.)
4038
 
4039
Fixed a problem where a zero-length VendorShort or VendorLong resource
4040
descriptor was incorrectly emitted as a descriptor of length one.
4041
 
4042
----------------------------------------
4043
10 February 2006. Summary of changes for version 20060210:
4044
 
4045
1) ACPI CA Core Subsystem:
4046
 
4047
Removed a couple of extraneous ACPI_ERROR messages that appeared during
4048
normal execution. These became apparent after the conversion from
4049
ACPI_DEBUG_PRINT.
4050
 
4051
Fixed a problem where the CreateField operator could hang if the BitIndex or
4052
NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
4053
 
4054
Fixed a problem where a DeRefOf operation on a buffer object incorrectly
4055
failed with an exception. This also fixes a couple of related RefOf and
4056
DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
4057
 
4058
Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of
4059
AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ
4060
5480)
4061
 
4062
Implemented a memory cleanup at the end of the execution of each iteration
4063
of an AML While() loop, preventing the accumulation of outstanding objects.
4064
(Valery Podrezov, BZ 5427)
4065
 
4066
Eliminated a chunk of duplicate code in the object resolution code. (Valery
4067
Podrezov, BZ 5336)
4068
 
4069
Fixed several warnings during the 64-bit code generation.
4070
 
4071
The AcpiSrc source code conversion tool now inserts one line of whitespace
4072
after an if() statement that is followed immediately by a comment, improving
4073
readability of the Linux code.
4074
 
4075
Code and Data Size: The current and previous library sizes for the core
4076
subsystem are shown below. These are the code and data sizes for the
4077
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4078
values do not include any ACPI driver or OSPM code. The debug version of the
4079
code includes the debug output trace mechanism and has a much larger code
4080
and data size. Note that these values will vary depending on the efficiency
4081
of the compiler and the compiler options used during generation.
4082
 
4083
  Previous Release:
4084
    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
4085
    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
4086
  Current Release:
4087
    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
4088
    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
4089
 
4090
 
4091
2) iASL Compiler/Disassembler:
4092
 
4093
Fixed a problem with the disassembly of a BankField operator with a complex
4094
expression for the BankValue parameter.
4095
 
4096
----------------------------------------
4097
27 January 2006. Summary of changes for version 20060127:
4098
 
4099
1) ACPI CA Core Subsystem:
4100
 
4101
Implemented support in the Resource Manager to allow unresolved namestring
4102
references within resource package objects for the _PRT method. This support
4103
is in addition to the previously implemented unresolved reference support
4104
within the AML parser. If the interpreter slack mode is enabled, these
4105
unresolved references will be passed through to the caller as a NULL package
4106
entry.
4107
 
4108
Implemented and deployed new macros and functions for error and warning
4109
messages across the subsystem. These macros are simpler and generate less
4110
code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
4111
ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
4112
macros remain defined to allow ACPI drivers time to migrate to the new
4113
macros.
4114
 
4115
Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the
4116
Acquire/Release Lock OSL interfaces.
4117
 
4118
Fixed a problem where Alias ASL operators are sometimes not correctly
4119
resolved, in both the interpreter and the iASL compiler.
4120
 
4121
Fixed several problems with the implementation of the ConcatenateResTemplate
4122
ASL operator. As per the ACPI specification, zero length buffers are now
4123
treated as a single EndTag. One-length buffers always cause a fatal
4124
exception. Non-zero length buffers that do not end with a full 2-byte EndTag
4125
cause a fatal exception.
4126
 
4127
Fixed a possible structure overwrite in the AcpiGetObjectInfo external
4128
interface. (With assistance from Thomas Renninger)
4129
 
4130
Code and Data Size: The current and previous library sizes for the core
4131
subsystem are shown below. These are the code and data sizes for the
4132
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4133
values do not include any ACPI driver or OSPM code. The debug version of the
4134
code includes the debug output trace mechanism and has a much larger code
4135
and data size. Note that these values will vary depending on the efficiency
4136
of the compiler and the compiler options used during generation.
4137
 
4138
  Previous Release:
4139
    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
4140
    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
4141
  Current Release:
4142
    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
4143
    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
4144
 
4145
 
4146
2) iASL Compiler/Disassembler:
4147
 
4148
Fixed an internal error that was generated for any forward references to ASL
4149
Alias objects.
4150
 
4151
----------------------------------------
4152
13 January 2006. Summary of changes for version 20060113:
4153
 
4154
1) ACPI CA Core Subsystem:
4155
 
4156
Added 2006 copyright to all module headers and signons. This affects
4157
virtually every file in the ACPICA core subsystem, iASL compiler, and the
4158
utilities.
4159
 
4160
Enhanced the ACPICA error reporting in order to simplify user migration to
4161
the non-debug version of ACPICA. Replaced all instances of the
4162
ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug
4163
levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
4164
respectively. This preserves all error and warning messages in the non-debug
4165
version of the ACPICA code (this has been referred to as the "debug lite"
4166
option.) Over 200 cases were converted to create a total of over 380
4167
error/warning messages across the ACPICA code. This increases the code and
4168
data size of the default non-debug version of the code somewhat (about 13K),
4169
but all error/warning reporting may be disabled if desired (and code
4170
eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
4171
configuration option. The size of the debug version of ACPICA remains about
4172
the same.
4173
 
4174
Fixed a memory leak within the AML Debugger "Set" command. One object was
4175
not properly deleted for every successful invocation of the command.
4176
 
4177
Code and Data Size: The current and previous library sizes for the core
4178
subsystem are shown below. These are the code and data sizes for the
4179
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4180
values do not include any ACPI driver or OSPM code. The debug version of the
4181
code includes the debug output trace mechanism and has a much larger code
4182
and data size. Note that these values will vary depending on the efficiency
4183
of the compiler and the compiler options used during generation.
4184
 
4185
  Previous Release:
4186
    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
4187
    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
4188
  Current Release:
4189
    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
4190
    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
4191
 
4192
 
4193
2) iASL Compiler/Disassembler:
4194
 
4195
The compiler now officially supports the ACPI 3.0a specification that was
4196
released on December 30, 2005. (Specification is available at www.acpi.info)
4197
 
4198
----------------------------------------
4199
16 December 2005. Summary of changes for version 20051216:
4200
 
4201
1) ACPI CA Core Subsystem:
4202
 
4203
Implemented optional support to allow unresolved names within ASL Package
4204
objects. A null object is inserted in the package when a named reference
4205
cannot be located in the current namespace. Enabled via the interpreter
4206
slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines
4207
that contain such code.
4208
 
4209
Implemented an optimization to the initialization sequence that can improve
4210
boot time. During ACPI device initialization, the _STA method is now run if
4211
and only if the _INI method exists. The _STA method is used to determine if
4212
the device is present; An _INI can only be run if _STA returns present, but
4213
it is a waste of time to run the _STA method if the _INI does not exist.
4214
(Prototype and assistance from Dong Wei)
4215
 
4216
Implemented use of the C99 uintptr_t for the pointer casting macros if it is
4217
available in the current compiler. Otherwise, the default (void *) cast is
4218
used as before.
4219
 
4220
Fixed some possible memory leaks found within the execution path of the
4221
Break, Continue, If, and CreateField operators. (Valery Podrezov)
4222
 
4223
Fixed a problem introduced in the 20051202 release where an exception is
4224
generated during method execution if a control method attempts to declare
4225
another method.
4226
 
4227
Moved resource descriptor string constants that are used by both the AML
4228
disassembler and AML debugger to the common utilities directory so that
4229
these components are independent.
4230
 
4231
Implemented support in the AcpiExec utility (-e switch) to globally ignore
4232
exceptions during control method execution (method is not aborted.)
4233
 
4234
Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
4235
generation.
4236
 
4237
Code and Data Size: The current and previous library sizes for the core
4238
subsystem are shown below. These are the code and data sizes for the
4239
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4240
values do not include any ACPI driver or OSPM code. The debug version of the
4241
code includes the debug output trace mechanism and has a much larger code
4242
and data size. Note that these values will vary depending on the efficiency
4243
of the compiler and the compiler options used during generation.
4244
 
4245
  Previous Release:
4246
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4247
    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
4248
  Current Release:
4249
    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
4250
    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
4251
 
4252
 
4253
2) iASL Compiler/Disassembler:
4254
 
4255
Fixed a problem where a CPU stack overflow fault could occur if a recursive
4256
method call was made from within a Return statement.
4257
 
4258
----------------------------------------
4259
02 December 2005. Summary of changes for version 20051202:
4260
 
4261
1) ACPI CA Core Subsystem:
4262
 
4263
Modified the parsing of control methods to no longer create namespace
4264
objects during the first pass of the parse. Objects are now created only
4265
during the execute phase, at the moment the namespace creation operator is
4266
encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This
4267
should eliminate ALREADY_EXISTS exceptions seen on some machines where
4268
reentrant control methods are protected by an AML mutex. The mutex will now
4269
correctly block multiple threads from attempting to create the same object
4270
more than once.
4271
 
4272
Increased the number of available Owner Ids for namespace object tracking
4273
from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on
4274
some machines with a large number of ACPI tables (either static or dynamic).
4275
 
4276
Fixed a problem with the AcpiExec utility where a fault could occur when the
4277
-b switch (batch mode) is used.
4278
 
4279
Enhanced the namespace dump routine to output the owner ID for each
4280
namespace object.
4281
 
4282
Code and Data Size: The current and previous library sizes for the core
4283
subsystem are shown below. These are the code and data sizes for the
4284
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4285
values do not include any ACPI driver or OSPM code. The debug version of the
4286
code includes the debug output trace mechanism and has a much larger code
4287
and data size. Note that these values will vary depending on the efficiency
4288
of the compiler and the compiler options used during generation.
4289
 
4290
  Previous Release:
4291
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4292
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4293
  Current Release:
4294
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4295
    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
4296
 
4297
 
4298
2) iASL Compiler/Disassembler:
4299
 
4300
Fixed a parse error during compilation of certain Switch/Case constructs. To
4301
simplify the parse, the grammar now allows for multiple Default statements
4302
and this error is now detected and flagged during the analysis phase.
4303
 
4304
Disassembler: The disassembly now includes the contents of the original
4305
table header within a comment at the start of the file. This includes the
4306
name and version of the original ASL compiler.
4307
 
4308
----------------------------------------
4309
17 November 2005. Summary of changes for version 20051117:
4310
 
4311
1) ACPI CA Core Subsystem:
4312
 
4313
Fixed a problem in the AML parser where the method thread count could be
4314
decremented below zero if any errors occurred during the method parse phase.
4315
This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines.
4316
This also fixed a related regression with the mechanism that detects and
4317
corrects methods that cannot properly handle reentrancy (related to the
4318
deployment of the new OwnerId mechanism.)
4319
 
4320
Eliminated the pre-parsing of control methods (to detect errors) during
4321
table load. Related to the problem above, this was causing unwind issues if
4322
any errors occurred during the parse, and it seemed to be overkill. A table
4323
load should not be aborted if there are problems with any single control
4324
method, thus rendering this feature rather pointless.
4325
 
4326
Fixed a problem with the new table-driven resource manager where an internal
4327
buffer overflow could occur for small resource templates.
4328
 
4329
Implemented a new external interface, AcpiGetVendorResource. This interface
4330
will find and return a vendor-defined resource descriptor within a _CRS or
4331
_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
4332
 
4333
Removed the length limit (200) on string objects as per the upcoming ACPI
4334
3.0A specification. This affects the following areas of the interpreter: 1)
4335
any implicit conversion of a Buffer to a String, 2) a String object result
4336
of the ASL Concatentate operator, 3) the String object result of the ASL
4337
ToString operator.
4338
 
4339
Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER
4340
on a semaphore object would incorrectly timeout. This allows the
4341
multithreading features of the AcpiExec utility to work properly under
4342
Windows.
4343
 
4344
Updated the Linux makefiles for the iASL compiler and AcpiExec to include
4345
the recently added file named "utresrc.c".
4346
 
4347
Code and Data Size: The current and previous library sizes for the core
4348
subsystem are shown below. These are the code and data sizes for the
4349
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4350
values do not include any ACPI driver or OSPM code. The debug version of the
4351
code includes the debug output trace mechanism and has a much larger code
4352
and data size. Note that these values will vary depending on the efficiency
4353
of the compiler and the compiler options used during generation.
4354
 
4355
  Previous Release:
4356
    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
4357
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4358
  Current Release:
4359
    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
4360
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4361
 
4362
 
4363
2) iASL Compiler/Disassembler:
4364
 
4365
Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
4366
specification. For the iASL compiler, this means that string literals within
4367
the source ASL can be of any length.
4368
 
4369
Enhanced the listing output to dump the AML code for resource descriptors
4370
immediately after the ASL code for each descriptor, instead of in a block at
4371
the end of the entire resource template.
4372
 
4373
Enhanced the compiler debug output to dump the entire original parse tree
4374
constructed during the parse phase, before any transforms are applied to the
4375
tree. The transformed tree is dumped also.
4376
 
4377
----------------------------------------
4378
02 November 2005. Summary of changes for version 20051102:
4379
 
4380
1) ACPI CA Core Subsystem:
4381
 
4382
Modified the subsystem initialization sequence to improve GPE support. The
4383
GPE initialization has been split into two parts in order to defer execution
4384
of the _PRW methods (Power Resources for Wake) until after the hardware is
4385
fully initialized and the SCI handler is installed. This allows the _PRW
4386
methods to access fields protected by the Global Lock. This will fix systems
4387
where a NO_GLOBAL_LOCK exception has been seen during initialization.
4388
 
4389
Converted the ACPI internal object disassemble and display code within the
4390
AML debugger to fully table-driven operation, reducing code size and
4391
increasing maintainability.
4392
 
4393
Fixed a regression with the ConcatenateResTemplate() ASL operator introduced
4394
in the 20051021 release.
4395
 
4396
Implemented support for "local" internal ACPI object types within the
4397
debugger "Object" command and the AcpiWalkNamespace external interfaces.
4398
These local types include RegionFields, BankFields, IndexFields, Alias, and
4399
reference objects.
4400
 
4401
Moved common AML resource handling code into a new file, "utresrc.c". This
4402
code is shared by both the Resource Manager and the AML Debugger.
4403
 
4404
Code and Data Size: The current and previous library sizes for the core
4405
subsystem are shown below. These are the code and data sizes for the
4406
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4407
values do not include any ACPI driver or OSPM code. The debug version of the
4408
code includes the debug output trace mechanism and has a much larger code
4409
and data size. Note that these values will vary depending on the efficiency
4410
of the compiler and the compiler options used during generation.
4411
 
4412
  Previous Release:
4413
    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
4414
    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
4415
  Current Release:
4416
    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
4417
    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
4418
 
4419
 
4420
2) iASL Compiler/Disassembler:
4421
 
4422
Fixed a problem with very large initializer lists (more than 4000 elements)
4423
for both Buffer and Package objects where the parse stack could overflow.
4424
 
4425
Enhanced the pre-compile source code scan for non-ASCII characters to ignore
4426
characters within comment fields. The scan is now always performed and is no
4427
longer optional, detecting invalid characters within a source file
4428
immediately rather than during the parse phase or later.
4429
 
4430
Enhanced the ASL grammar definition to force early reductions on all list-
4431
style grammar elements so that the overall parse stack usage is greatly
4432
reduced. This should improve performance and reduce the possibility of parse
4433
stack overflow.
4434
 
4435
Eliminated all reduce/reduce conflicts in the iASL parser generation. Also,
4436
with the addition of a %expected statement, the compiler generates from
4437
source with no warnings.
4438
 
4439
Fixed a possible segment fault in the disassembler if the input filename
4440
does not contain a "dot" extension (Thomas Renninger).
4441
 
4442
----------------------------------------
4443
21 October 2005. Summary of changes for version 20051021:
4444
 
4445
1) ACPI CA Core Subsystem:
4446
 
4447
Implemented support for the EM64T and other x86-64 processors. This
4448
essentially entails recognizing that these processors support non-aligned
4449
memory transfers. Previously, all 64-bit processors were assumed to lack
4450
hardware support for non-aligned transfers.
4451
 
4452
Completed conversion of the Resource Manager to nearly full table-driven
4453
operation. Specifically, the resource conversion code (convert AML to
4454
internal format and the reverse) and the debug code to dump internal
4455
resource descriptors are fully table-driven, reducing code and data size and
4456
improving maintainability.
4457
 
4458
The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word
4459
on 64-bit processors instead of a fixed 32-bit word. (With assistance from
4460
Alexey Starikovskiy)
4461
 
4462
Implemented support within the resource conversion code for the Type-
4463
Specific byte within the various ACPI 3.0 *WordSpace macros.
4464
 
4465
Fixed some issues within the resource conversion code for the type-specific
4466
flags for both Memory and I/O address resource descriptors. For Memory,
4467
implemented support for the MTP and TTP flags. For I/O, split the TRS and
4468
TTP flags into two separate fields.
4469
 
4470
Code and Data Size: The current and previous library sizes for the core
4471
subsystem are shown below. These are the code and data sizes for the
4472
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4473
values do not include any ACPI driver or OSPM code. The debug version of the
4474
code includes the debug output trace mechanism and has a much larger code
4475
and data size. Note that these values will vary depending on the efficiency
4476
of the compiler and the compiler options used during generation.
4477
 
4478
  Previous Release:
4479
    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
4480
    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
4481
  Current Release:
4482
    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
4483
    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
4484
 
4485
 
4486
 
4487
2) iASL Compiler/Disassembler:
4488
 
4489
Relaxed a compiler restriction that disallowed a ResourceIndex byte if the
4490
corresponding ResourceSource string was not also present in a resource
4491
descriptor declaration. This restriction caused problems with existing
4492
AML/ASL code that includes the Index byte without the string. When such AML
4493
was disassembled, it could not be compiled without modification. Further,
4494
the modified code created a resource template with a different size than the
4495
original, breaking code that used fixed offsets into the resource template
4496
buffer.
4497
 
4498
Removed a recent feature of the disassembler to ignore a lone ResourceIndex
4499
byte. This byte is now emitted if present so that the exact AML can be
4500
reproduced when the disassembled code is recompiled.
4501
 
4502
Improved comments and text alignment for the resource descriptor code
4503
emitted by the disassembler.
4504
 
4505
Implemented disassembler support for the ACPI 3.0 AccessSize field within a
4506
Register() resource descriptor.
4507
 
4508
----------------------------------------
4509
30 September 2005. Summary of changes for version 20050930:
4510
 
4511
1) ACPI CA Core Subsystem:
4512
 
4513
Completed a major overhaul of the Resource Manager code - specifically,
4514
optimizations in the area of the AML/internal resource conversion code. The
4515
code has been optimized to simplify and eliminate duplicated code, CPU stack
4516
use has been decreased by optimizing function parameters and local
4517
variables, and naming conventions across the manager have been standardized
4518
for clarity and ease of maintenance (this includes function, parameter,
4519
variable, and struct/typedef names.) The update may force changes in some
4520
driver code, depending on how resources are handled by the host OS.
4521
 
4522
All Resource Manager dispatch and information tables have been moved to a
4523
single location for clarity and ease of maintenance. One new file was
4524
created, named "rsinfo.c".
4525
 
4526
The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
4527
guarantee that the argument is not evaluated twice, making them less prone
4528
to macro side-effects. However, since there exists the possibility of
4529
additional stack use if a particular compiler cannot optimize them (such as
4530
in the debug generation case), the original macros are optionally available.
4531
Note that some invocations of the return_VALUE macro may now cause size
4532
mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to
4533
eliminate these. (From Randy Dunlap)
4534
 
4535
Implemented a new mechanism to enable debug tracing for individual control
4536
methods. A new external interface, AcpiDebugTrace, is provided to enable
4537
this mechanism. The intent is to allow the host OS to easily enable and
4538
disable tracing for problematic control methods. This interface can be
4539
easily exposed to a user or debugger interface if desired. See the file
4540
psxface.c for details.
4541
 
4542
AcpiUtCallocate will now return a valid pointer if a length of zero is
4543
specified - a length of one is used and a warning is issued. This matches
4544
the behavior of AcpiUtAllocate.
4545
 
4546
Code and Data Size: The current and previous library sizes for the core
4547
subsystem are shown below. These are the code and data sizes for the
4548
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4549
values do not include any ACPI driver or OSPM code. The debug version of the
4550
code includes the debug output trace mechanism and has a much larger code
4551
and data size. Note that these values will vary depending on the efficiency
4552
of the compiler and the compiler options used during generation.
4553
 
4554
  Previous Release:
4555
    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
4556
    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
4557
  Current Release:
4558
    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
4559
    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
4560
 
4561
 
4562
2) iASL Compiler/Disassembler:
4563
 
4564
A remark is issued if the effective compile-time length of a package or
4565
buffer is zero. Previously, this was a warning.
4566
 
4567
----------------------------------------
4568
16 September 2005. Summary of changes for version 20050916:
4569
 
4570
1) ACPI CA Core Subsystem:
4571
 
4572
Fixed a problem within the Resource Manager where support for the Generic
4573
Register descriptor was not fully implemented. This descriptor is now fully
4574
recognized, parsed, disassembled, and displayed.
4575
 
4576
Completely restructured the Resource Manager code to utilize table-driven
4577
dispatch and lookup, eliminating many of the large switch() statements. This
4578
reduces overall subsystem code size and code complexity. Affects the
4579
resource parsing and construction, disassembly, and debug dump output.
4580
 
4581
Cleaned up and restructured the debug dump output for all resource
4582
descriptors. Improved readability of the output and reduced code size.
4583
 
4584
Fixed a problem where changes to internal data structures caused the
4585
optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
4586
 
4587
Code and Data Size: The current and previous library sizes for the core
4588
subsystem are shown below. These are the code and data sizes for the
4589
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
4590
values do not include any ACPI driver or OSPM code. The debug version of the
4591
code includes the debug output trace mechanism and has a much larger code
4592
and data size. Note that these values will vary depending on the efficiency
4593
of the compiler and the compiler options used during generation.
4594
 
4595
  Previous Release:
4596
    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
4597
    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
4598
  Current Release:
4599
    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
4600
    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
4601
 
4602
 
4603
2) iASL Compiler/Disassembler:
4604
 
4605
Updated the disassembler to automatically insert an EndDependentFn() macro
4606
into the ASL stream if this macro is missing in the original AML code,
4607
simplifying compilation of the resulting ASL module.
4608
 
4609
Fixed a problem in the disassembler where a disassembled ResourceSource
4610
string (within a large resource descriptor) was not surrounded by quotes and
4611
not followed by a comma, causing errors when the resulting ASL module was
4612
compiled. Also, escape sequences within a ResourceSource string are now
4613
handled correctly (especially "\\")
4614
 
4615
----------------------------------------
4616
02 September 2005. Summary of changes for version 20050902:
4617
 
4618
1) ACPI CA Core Subsystem:
4619
 
4620
Fixed a problem with the internal Owner ID allocation and deallocation
4621
mechanisms for control method execution and recursive method invocation.
4622
This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
4623
messages seen on some systems. Recursive method invocation depth is
4624
currently limited to 255. (Alexey Starikovskiy)
4625
 
4626
Completely eliminated all vestiges of support for the "module-level
4627
executable code" until this support is fully implemented and debugged. This
4628
should eliminate the NO_RETURN_VALUE exceptions seen during table load on
4629
some systems that invoke this support.
4630
 
4631
Fixed a problem within the resource manager code where the transaction flags
4632
for a 64-bit address descriptor were handled incorrectly in the type-
4633
specific flag byte.
4634
 
4635
Consolidated duplicate code within the address descriptor resource manager
4636
code, reducing overall subsystem code size.
4637
 
4638
Fixed a fault when using the AML debugger "disassemble" command to
4639
disassemble individual control methods.
4640
 
4641
Removed references to the "release_current" directory within the Unix
4642
release package.
4643
 
4644
Code and Data Size: The current and previous core subsystem library sizes
4645
are shown below. These are the code and data sizes for the acpica.lib
4646
produced by the Microsoft Visual C++ 6.0 compiler. These values do not
4647
include any ACPI driver or OSPM code. The debug version of the code includes
4648
the debug output trace mechanism and has a much larger code and data size.
4649
Note that these values will vary depending on the efficiency of the compiler
4650
and the compiler options used during generation.
4651
 
4652
  Previous Release:
4653
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4654
    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
4655
  Current Release:
4656
    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
4657
    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
4658
 
4659
 
4660
2) iASL Compiler/Disassembler:
4661
 
4662
Implemented an error check for illegal duplicate values in the interrupt and
4663
dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
4664
Interrupt().
4665
 
4666
Implemented error checking for the Irq() and IrqNoFlags() macros to detect
4667
too many values in the interrupt list (16 max) and invalid values in the
4668
list (range 0 - 15)
4669
 
4670
The maximum length string literal within an ASL file is now restricted to
4671
200 characters as per the ACPI specification.
4672
 
4673
Fixed a fault when using the -ln option (generate namespace listing).
4674
 
4675
Implemented an error check to determine if a DescriptorName within a
4676
resource descriptor has already been used within the current scope.
4677
 
4678
----------------------------------------
4679
15 August 2005.  Summary of changes for version 20050815:
4680
 
4681
1) ACPI CA Core Subsystem:
4682
 
4683
Implemented a full bytewise compare to determine if a table load request is
4684
attempting to load a duplicate table. The compare is performed if the table
4685
signatures and table lengths match. This will allow different tables with
4686
the same OEM Table ID and revision to be loaded - probably against the ACPI
4687
specification, but discovered in the field nonetheless.
4688
 
4689
Added the changes.txt logfile to each of the zipped release packages.
4690
 
4691
Code and Data Size: Current and previous core subsystem library sizes are
4692
shown below. These are the code and data sizes for the acpica.lib produced
4693
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4694
any ACPI driver or OSPM code. The debug version of the code includes the
4695
debug output trace mechanism and has a much larger code and data size. Note
4696
that these values will vary depending on the efficiency of the compiler and
4697
the compiler options used during generation.
4698
 
4699
  Previous Release:
4700
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4701
    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
4702
  Current Release:
4703
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4704
    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
4705
 
4706
 
4707
2) iASL Compiler/Disassembler:
4708
 
4709
Fixed a problem where incorrect AML code could be generated for Package
4710
objects if optimization is disabled (via the -oa switch).
4711
 
4712
Fixed a problem with where incorrect AML code is generated for variable-
4713
length packages when the package length is not specified and the number of
4714
initializer values is greater than 255.
4715
 
4716
 
4717
----------------------------------------
4718
29 July 2005.  Summary of changes for version 20050729:
4719
 
4720
1) ACPI CA Core Subsystem:
4721
 
4722
Implemented support to ignore an attempt to install/load a particular ACPI
4723
table more than once. Apparently there exists BIOS code that repeatedly
4724
attempts to load the same SSDT upon certain events. With assistance from
4725
Venkatesh Pallipadi.
4726
 
4727
Restructured the main interface to the AML parser in order to correctly
4728
handle all exceptional conditions. This will prevent leakage of the OwnerId
4729
resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some
4730
machines. With assistance from Alexey Starikovskiy.
4731
 
4732
Support for "module level code" has been disabled in this version due to a
4733
number of issues that have appeared on various machines. The support can be
4734
enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
4735
compilation. When the issues are fully resolved, the code will be enabled by
4736
default again.
4737
 
4738
Modified the internal functions for debug print support to define the
4739
FunctionName parameter as a (const char *) for compatibility with compiler
4740
built-in macros such as __FUNCTION__, etc.
4741
 
4742
Linted the entire ACPICA source tree for both 32-bit and 64-bit.
4743
 
4744
Implemented support to display an object count summary for the AML Debugger
4745
commands Object and Methods.
4746
 
4747
Code and Data Size: Current and previous core subsystem library sizes are
4748
shown below. These are the code and data sizes for the acpica.lib produced
4749
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4750
any ACPI driver or OSPM code. The debug version of the code includes the
4751
debug output trace mechanism and has a much larger code and data size. Note
4752
that these values will vary depending on the efficiency of the compiler and
4753
the compiler options used during generation.
4754
 
4755
  Previous Release:
4756
    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
4757
    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
4758
  Current Release:
4759
    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
4760
    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
4761
 
4762
 
4763
2) iASL Compiler/Disassembler:
4764
 
4765
Fixed a regression that appeared in the 20050708 version of the compiler
4766
where an error message was inadvertently emitted for invocations of the _OSI
4767
reserved control method.
4768
 
4769
----------------------------------------
4770
08 July 2005.  Summary of changes for version 20050708:
4771
 
4772
1) ACPI CA Core Subsystem:
4773
 
4774
The use of the CPU stack in the debug version of the subsystem has been
4775
considerably reduced. Previously, a debug structure was declared in every
4776
function that used the debug macros. This structure has been removed in
4777
favor of declaring the individual elements as parameters to the debug
4778
functions. This reduces the cumulative stack use during nested execution of
4779
ACPI function calls at the cost of a small increase in the code size of the
4780
debug version of the subsystem. With assistance from Alexey Starikovskiy and
4781
Len Brown.
4782
 
4783
Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
4784
headers to define a macro that will return the current function name at
4785
runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by
4786
the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
4787
compiler-dependent header, the function name is saved on the CPU stack (one
4788
pointer per function.) This mechanism is used because apparently there
4789
exists no standard ANSI-C defined macro that that returns the function name.
4790
 
4791
Redesigned and reimplemented the "Owner ID" mechanism used to track
4792
namespace objects created/deleted by ACPI tables and control method
4793
execution. A bitmap is now used to allocate and free the IDs, thus solving
4794
the wraparound problem present in the previous implementation. The size of
4795
the namespace node descriptor was reduced by 2 bytes as a result (Alexey
4796
Starikovskiy).
4797
 
4798
Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield
4799
flag definitions within the headers for the predefined ACPI tables. These
4800
have been replaced by UINT8_BIT in order to increase the code portability of
4801
the subsystem. If the use of UINT8 remains a problem, we may be forced to
4802
eliminate bitfields entirely because of a lack of portability.
4803
 
4804
Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This
4805
is a frequently used function and this improvement increases the performance
4806
of the entire subsystem (Alexey Starikovskiy).
4807
 
4808
Fixed several possible memory leaks and the inverse - premature object
4809
deletion (Alexey Starikovskiy).
4810
 
4811
Code and Data Size: Current and previous core subsystem library sizes are
4812
shown below. These are the code and data sizes for the acpica.lib produced
4813
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4814
any ACPI driver or OSPM code. The debug version of the code includes the
4815
debug output trace mechanism and has a much larger code and data size. Note
4816
that these values will vary depending on the efficiency of the compiler and
4817
the compiler options used during generation.
4818
 
4819
  Previous Release:
4820
    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
4821
    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
4822
  Current Release:
4823
    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
4824
    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
4825
 
4826
----------------------------------------
4827
24 June 2005.  Summary of changes for version 20050624:
4828
 
4829
1) ACPI CA Core Subsystem:
4830
 
4831
Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
4832
the host-defined cache object. This allows the OSL implementation to define
4833
and type this object in any manner desired, simplifying the OSL
4834
implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
4835
Linux, and should be defined in the OS-specific header file for other
4836
operating systems as required.
4837
 
4838
Changed the interface to AcpiOsAcquireObject to directly return the
4839
requested object as the function return (instead of ACPI_STATUS.) This
4840
change was made for performance reasons, since this is the purpose of the
4841
interface in the first place. AcpiOsAcquireObject is now similar to the
4842
AcpiOsAllocate interface.
4843
 
4844
Implemented a new AML debugger command named Businfo. This command displays
4845
information about all devices that have an associate _PRT object. The _ADR,
4846
_HID, _UID, and _CID are displayed for these devices.
4847
 
4848
Modified the initialization sequence in AcpiInitializeSubsystem to call the
4849
OSL interface AcpiOslInitialize first, before any local initialization. This
4850
change was required because the global initialization now calls OSL
4851
interfaces.
4852
 
4853
Enhanced the Dump command to display the entire contents of Package objects
4854
(including all sub-objects and their values.)
4855
 
4856
Restructured the code base to split some files because of size and/or
4857
because the code logically belonged in a separate file. New files are listed
4858
below. All makefiles and project files included in the ACPI CA release have
4859
been updated.
4860
    utilities/utcache.c           /* Local cache interfaces */
4861
    utilities/utmutex.c           /* Local mutex support */
4862
    utilities/utstate.c           /* State object support */
4863
    interpreter/parser/psloop.c   /* Main AML parse loop */
4864
 
4865
Code and Data Size: Current and previous core subsystem library sizes are
4866
shown below. These are the code and data sizes for the acpica.lib produced
4867
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4868
any ACPI driver or OSPM code. The debug version of the code includes the
4869
debug output trace mechanism and has a much larger code and data size. Note
4870
that these values will vary depending on the efficiency of the compiler and
4871
the compiler options used during generation.
4872
 
4873
  Previous Release:
4874
    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
4875
    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
4876
  Current Release:
4877
    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
4878
    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
4879
 
4880
 
4881
2) iASL Compiler/Disassembler:
4882
 
4883
Fixed a regression introduced in version 20050513 where the use of a Package
4884
object within a Case() statement caused a compile time exception. The
4885
original behavior has been restored (a Match() operator is emitted.)
4886
 
4887
----------------------------------------
4888
17 June 2005.  Summary of changes for version 20050617:
4889
 
4890
1) ACPI CA Core Subsystem:
4891
 
4892
Moved the object cache operations into the OS interface layer (OSL) to allow
4893
the host OS to handle these operations if desired (for example, the Linux
4894
OSL will invoke the slab allocator). This support is optional; the compile
4895
time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache
4896
code in the ACPI CA core. The new OSL interfaces are shown below. See
4897
utalloc.c for an example implementation, and acpiosxf.h for the exact
4898
interface definitions. With assistance from Alexey Starikovskiy.
4899
    AcpiOsCreateCache
4900
    AcpiOsDeleteCache
4901
    AcpiOsPurgeCache
4902
    AcpiOsAcquireObject
4903
    AcpiOsReleaseObject
4904
 
4905
Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return
4906
and restore a flags parameter. This fits better with many OS lock models.
4907
Note: the current execution state (interrupt handler or not) is no longer
4908
passed to these interfaces. If necessary, the OSL must determine this state
4909
by itself, a simple and fast operation. With assistance from Alexey
4910
Starikovskiy.
4911
 
4912
Fixed a problem in the ACPI table handling where a valid XSDT was assumed
4913
present if the revision of the RSDP was 2 or greater. According to the ACPI
4914
specification, the XSDT is optional in all cases, and the table manager
4915
therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
4916
Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain
4917
only the RSDT.
4918
 
4919
Fixed an interpreter problem with the Mid() operator in the case of an input
4920
string where the resulting output string is of zero length. It now correctly
4921
returns a valid, null terminated string object instead of a string object
4922
with a null pointer.
4923
 
4924
Fixed a problem with the control method argument handling to allow a store
4925
to an Arg object that already contains an object of type Device. The Device
4926
object is now correctly overwritten. Previously, an error was returned.
4927
 
4928
 
4929
Enhanced the debugger Find command to emit object values in addition to the
4930
found object pathnames. The output format is the same as the dump namespace
4931
command.
4932
 
4933
Enhanced the debugger Set command. It now has the ability to set the value
4934
of any Named integer object in the namespace (Previously, only method locals
4935
and args could be set.)
4936
 
4937
Code and Data Size: Current and previous core subsystem library sizes are
4938
shown below. These are the code and data sizes for the acpica.lib produced
4939
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4940
any ACPI driver or OSPM code. The debug version of the code includes the
4941
debug output trace mechanism and has a much larger code and data size. Note
4942
that these values will vary depending on the efficiency of the compiler and
4943
the compiler options used during generation.
4944
 
4945
  Previous Release:
4946
    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
4947
    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
4948
  Current Release:
4949
    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
4950
    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
4951
 
4952
 
4953
2) iASL Compiler/Disassembler:
4954
 
4955
Fixed a regression in the disassembler where if/else/while constructs were
4956
output incorrectly. This problem was introduced in the previous release
4957
(20050526). This problem also affected the single-step disassembly in the
4958
debugger.
4959
 
4960
Fixed a problem where compiling the reserved _OSI method would randomly (but
4961
rarely) produce compile errors.
4962
 
4963
Enhanced the disassembler to emit compilable code in the face of incorrect
4964
AML resource descriptors. If the optional ResourceSourceIndex is present,
4965
but the ResourceSource is not, do not emit the ResourceSourceIndex in the
4966
disassembly. Otherwise, the resulting code cannot be compiled without
4967
errors.
4968
 
4969
----------------------------------------
4970
26 May 2005.  Summary of changes for version 20050526:
4971
 
4972
1) ACPI CA Core Subsystem:
4973
 
4974
Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
4975
the module level (not within a control method.) These opcodes are executed
4976
exactly once at the time the table is loaded. This type of code was legal up
4977
until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in
4978
order to provide backwards compatibility with earlier BIOS implementations.
4979
This eliminates the "Encountered executable code at module level" warning
4980
that was previously generated upon detection of such code.
4981
 
4982
Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
4983
inadvertently be generated during the lookup of namespace objects in the
4984
second pass parse of ACPI tables and control methods. It appears that this
4985
problem could occur during the resolution of forward references to namespace
4986
objects.
4987
 
4988
Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
4989
corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
4990
allows the deadlock detection debug code to be compiled out in the normal
4991
case, improving mutex performance (and overall subsystem performance)
4992
considerably.
4993
 
4994
Implemented a handful of miscellaneous fixes for possible memory leaks on
4995
error conditions and error handling control paths. These fixes were
4996
suggested by FreeBSD and the Coverity Prevent source code analysis tool.
4997
 
4998
Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c)
4999
to prevent a fault in this error case.
5000
 
5001
Code and Data Size: Current and previous core subsystem library sizes are
5002
shown below. These are the code and data sizes for the acpica.lib produced
5003
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5004
any ACPI driver or OSPM code. The debug version of the code includes the
5005
debug output trace mechanism and has a much larger code and data size. Note
5006
that these values will vary depending on the efficiency of the compiler and
5007
the compiler options used during generation.
5008
 
5009
  Previous Release:
5010
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5011
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5012
  Current Release:
5013
    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
5014
    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
5015
 
5016
 
5017
2) iASL Compiler/Disassembler:
5018
 
5019
Implemented support to allow Type 1 and Type 2 ASL operators to appear at
5020
the module level (not within a control method.) These operators will be
5021
executed once at the time the table is loaded. This type of code was legal
5022
up until the release of ACPI 2.0B (2002) and is now supported by the iASL
5023
compiler in order to provide backwards compatibility with earlier BIOS ASL
5024
code.
5025
 
5026
The ACPI integer width (specified via the table revision ID or the -r
5027
override, 32 or 64 bits) is now used internally during compile-time constant
5028
folding to ensure that constants are truncated to 32 bits if necessary.
5029
Previously, the revision ID value was only emitted in the AML table header.
5030
 
5031
An error message is now generated for the Mutex and Method operators if the
5032
SyncLevel parameter is outside the legal range of 0 through 15.
5033
 
5034
Fixed a problem with the Method operator ParameterTypes list handling (ACPI
5035
3.0). Previously, more than 2 types or 2 arguments generated a syntax error.
5036
The actual underlying implementation of method argument typechecking is
5037
still under development, however.
5038
 
5039
----------------------------------------
5040
13 May 2005.  Summary of changes for version 20050513:
5041
 
5042
1) ACPI CA Core Subsystem:
5043
 
5044
Implemented support for PCI Express root bridges -- added support for device
5045
PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
5046
 
5047
The interpreter now automatically truncates incoming 64-bit constants to 32
5048
bits if currently executing out of a 32-bit ACPI table (Revision < 2). This
5049
also affects the iASL compiler constant folding. (Note: as per below, the
5050
iASL compiler no longer allows 64-bit constants within 32-bit tables.)
5051
 
5052
Fixed a problem where string and buffer objects with "static" pointers
5053
(pointers to initialization data within an ACPI table) were not handled
5054
consistently. The internal object copy operation now always copies the data
5055
to a newly allocated buffer, regardless of whether the source object is
5056
static or not.
5057
 
5058
Fixed a problem with the FromBCD operator where an implicit result
5059
conversion was improperly performed while storing the result to the target
5060
operand. Since this is an "explicit conversion" operator, the implicit
5061
conversion should never be performed on the output.
5062
 
5063
Fixed a problem with the CopyObject operator where a copy to an existing
5064
named object did not always completely overwrite the existing object stored
5065
at name. Specifically, a buffer-to-buffer copy did not delete the existing
5066
buffer.
5067
 
5068
Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and
5069
structs for consistency.
5070
 
5071
Code and Data Size: Current and previous core subsystem library sizes are
5072
shown below. These are the code and data sizes for the acpica.lib produced
5073
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5074
any ACPI driver or OSPM code. The debug version of the code includes the
5075
debug output trace mechanism and has a much larger code and data size. Note
5076
that these values will vary depending on the efficiency of the compiler and
5077
the compiler options used during generation.
5078
 
5079
  Previous Release:
5080
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5081
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5082
  Current Release: (Same sizes)
5083
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5084
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5085
 
5086
 
5087
2) iASL Compiler/Disassembler:
5088
 
5089
The compiler now emits a warning if an attempt is made to generate a 64-bit
5090
integer constant from within a 32-bit ACPI table (Revision < 2). The integer
5091
is truncated to 32 bits.
5092
 
5093
Fixed a problem with large package objects: if the static length of the
5094
package is greater than 255, the "variable length package" opcode is
5095
emitted. Previously, this caused an error. This requires an update to the
5096
ACPI spec, since it currently (incorrectly) states that packages larger than
5097
255 elements are not allowed.
5098
 
5099
The disassembler now correctly handles variable length packages and packages
5100
larger than 255 elements.
5101
 
5102
----------------------------------------
5103
08 April 2005.  Summary of changes for version 20050408:
5104
 
5105
1) ACPI CA Core Subsystem:
5106
 
5107
Fixed three cases in the interpreter where an "index" argument to an ASL
5108
function was still (internally) 32 bits instead of the required 64 bits.
5109
This was the Index argument to the Index, Mid, and Match operators.
5110
 
5111
The "strupr" function is now permanently local (AcpiUtStrupr), since this is
5112
not a POSIX-defined function and not present in most kernel-level C
5113
libraries. All references to the C library strupr function have been removed
5114
from the headers.
5115
 
5116
Completed the deployment of static functions/prototypes. All prototypes with
5117
the static attribute have been moved from the headers to the owning C file.
5118
 
5119
Implemented an extract option (-e) for the AcpiBin utility (AML binary
5120
utility). This option allows the utility to extract individual ACPI tables
5121
from the output of AcpiDmp. It provides the same functionality of the
5122
acpixtract.pl perl script without the worry of setting the correct perl
5123
options. AcpiBin runs on Windows and has not yet been generated/validated in
5124
the Linux/Unix environment (but should be soon).
5125
 
5126
Updated and fixed the table dump option for AcpiBin (-d). This option
5127
converts a single ACPI table to a hex/ascii file, similar to the output of
5128
AcpiDmp.
5129
 
5130
Code and Data Size: Current and previous core subsystem library sizes are
5131
shown below. These are the code and data sizes for the acpica.lib produced
5132
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5133
any ACPI driver or OSPM code. The debug version of the code includes the
5134
debug output trace mechanism and has a much larger code and data size. Note
5135
that these values will vary depending on the efficiency of the compiler and
5136
the compiler options used during generation.
5137
 
5138
  Previous Release:
5139
    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
5140
    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
5141
  Current Release:
5142
    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
5143
    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
5144
 
5145
 
5146
2) iASL Compiler/Disassembler:
5147
 
5148
Disassembler fix: Added a check to ensure that the table length found in the
5149
ACPI table header within the input file is not longer than the actual input
5150
file size. This indicates some kind of file or table corruption.
5151
 
5152
----------------------------------------
5153
29 March 2005.  Summary of changes for version 20050329:
5154
 
5155
1) ACPI CA Core Subsystem:
5156
 
5157
An error is now generated if an attempt is made to create a Buffer Field of
5158
length zero (A CreateField with a length operand of zero.)
5159
 
5160
The interpreter now issues a warning whenever executable code at the module
5161
level is detected during ACPI table load. This will give some idea of the
5162
prevalence of this type of code.
5163
 
5164
Implemented support for references to named objects (other than control
5165
methods) within package objects.
5166
 
5167
Enhanced package object output for the debug object. Package objects are now
5168
completely dumped, showing all elements.
5169
 
5170
Enhanced miscellaneous object output for the debug object. Any object can
5171
now be written to the debug object (for example, a device object can be
5172
written, and the type of the object will be displayed.)
5173
 
5174
The "static" qualifier has been added to all local functions across both the
5175
core subsystem and the iASL compiler.
5176
 
5177
The number of "long" lines (> 80 chars) within the source has been
5178
significantly reduced, by about 1/3.
5179
 
5180
Cleaned up all header files to ensure that all CA/iASL functions are
5181
prototyped (even static functions) and the formatting is consistent.
5182
 
5183
Two new header files have been added, acopcode.h and acnames.h.
5184
 
5185
Removed several obsolete functions that were no longer used.
5186
 
5187
Code and Data Size: Current and previous core subsystem library sizes are
5188
shown below. These are the code and data sizes for the acpica.lib produced
5189
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5190
any ACPI driver or OSPM code. The debug version of the code includes the
5191
debug output trace mechanism and has a much larger code and data size. Note
5192
that these values will vary depending on the efficiency of the compiler and
5193
the compiler options used during generation.
5194
 
5195
  Previous Release:
5196
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5197
    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
5198
  Current Release:
5199
    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
5200
    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
5201
 
5202
 
5203
 
5204
2) iASL Compiler/Disassembler:
5205
 
5206
Fixed a problem with the resource descriptor generation/support. For the
5207
ResourceSourceIndex and the ResourceSource fields, both must be present, or
5208
both must be not present - can't have one without the other.
5209
 
5210
The compiler now returns non-zero from the main procedure if any errors have
5211
occurred during the compilation.
5212
 
5213
 
5214
----------------------------------------
5215
09 March 2005.  Summary of changes for version 20050309:
5216
 
5217
1) ACPI CA Core Subsystem:
5218
 
5219
The string-to-buffer implicit conversion code has been modified again after
5220
a change to the ACPI specification.  In order to match the behavior of the
5221
other major ACPI implementation, the target buffer is no longer truncated if
5222
the source string is smaller than an existing target buffer. This change
5223
requires an update to the ACPI spec, and should eliminate the recent
5224
AE_AML_BUFFER_LIMIT issues.
5225
 
5226
The "implicit return" support was rewritten to a new algorithm that solves
5227
the general case. Rather than attempt to determine when a method is about to
5228
exit, the result of every ASL operator is saved momentarily until the very
5229
next ASL operator is executed. Therefore, no matter how the method exits,
5230
there will always be a saved implicit return value. This feature is only
5231
enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate
5232
AE_AML_NO_RETURN_VALUE errors when enabled.
5233
 
5234
Implemented implicit conversion support for the predicate (operand) of the
5235
If, Else, and While operators. String and Buffer arguments are automatically
5236
converted to Integers.
5237
 
5238
Changed the string-to-integer conversion behavior to match the new ACPI
5239
errata: "If no integer object exists, a new integer is created. The ASCII
5240
string is interpreted as a hexadecimal constant. Each string character is
5241
interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
5242
with the first character as the most significant digit, and ending with the
5243
first non-hexadecimal character or end-of-string." This means that the first
5244
non-hex character terminates the conversion and this is the code that was
5245
changed.
5246
 
5247
Fixed a problem where the ObjectType operator would fail (fault) when used
5248
on an Index of a Package which pointed to a null package element. The
5249
operator now properly returns zero (Uninitialized) in this case.
5250
 
5251
Fixed a problem where the While operator used excessive memory by not
5252
properly popping the result stack during execution. There was no memory leak
5253
after execution, however. (Code provided by Valery Podrezov.)
5254
 
5255
Fixed a problem where references to control methods within Package objects
5256
caused the method to be invoked, instead of producing a reference object
5257
pointing to the method.
5258
 
5259
Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to
5260
improve performance and reduce code size. (Code provided by Alexey
5261
Starikovskiy.)
5262
 
5263
Code and Data Size: Current and previous core subsystem library sizes are
5264
shown below. These are the code and data sizes for the acpica.lib produced
5265
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5266
any ACPI driver or OSPM code. The debug version of the code includes the
5267
debug output trace mechanism and has a much larger code and data size. Note
5268
that these values will vary depending on the efficiency of the compiler and
5269
the compiler options used during generation.
5270
 
5271
  Previous Release:
5272
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5273
    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
5274
  Current Release:
5275
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5276
    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
5277
 
5278
 
5279
2) iASL Compiler/Disassembler:
5280
 
5281
Fixed a problem with the Return operator with no arguments. Since the AML
5282
grammar for the byte encoding requires an operand for the Return opcode, the
5283
compiler now emits a Return(Zero) for this case.  An ACPI specification
5284
update has been written for this case.
5285
 
5286
For tables other than the DSDT, namepath optimization is automatically
5287
disabled. This is because SSDTs can be loaded anywhere in the namespace, the
5288
compiler has no knowledge of where, and thus cannot optimize namepaths.
5289
 
5290
Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
5291
inadvertently omitted from the ACPI specification, and will require an
5292
update to the spec.
5293
 
5294
The source file scan for ASCII characters is now optional (-a). This change
5295
was made because some vendors place non-ascii characters within comments.
5296
However, the scan is simply a brute-force byte compare to ensure all
5297
characters in the file are in the range 0x00 to 0x7F.
5298
 
5299
Fixed a problem with the CondRefOf operator where the compiler was
5300
inappropriately checking for the existence of the target. Since the point of
5301
the operator is to check for the existence of the target at run-time, the
5302
compiler no longer checks for the target existence.
5303
 
5304
Fixed a problem where errors generated from the internal AML interpreter
5305
during constant folding were not handled properly, causing a fault.
5306
 
5307
Fixed a problem with overly aggressive range checking for the Stall
5308
operator. The valid range (max 255) is now only checked if the operand is of
5309
type Integer. All other operand types cannot be statically checked.
5310
 
5311
Fixed a problem where control method references within the RefOf, DeRefOf,
5312
and ObjectType operators were not treated properly. They are now treated as
5313
actual references, not method invocations.
5314
 
5315
Fixed and enhanced the "list namespace" option (-ln). This option was broken
5316
a number of releases ago.
5317
 
5318
Improved error handling for the Field, IndexField, and BankField operators.
5319
The compiler now cleanly reports and recovers from errors in the field
5320
component (FieldUnit) list.
5321
 
5322
Fixed a disassembler problem where the optional ResourceDescriptor fields
5323
TRS and TTP were not always handled correctly.
5324
 
5325
Disassembler - Comments in output now use "//" instead of "/*"
5326
 
5327
----------------------------------------
5328
28 February 2005.  Summary of changes for version 20050228:
5329
 
5330
1) ACPI CA Core Subsystem:
5331
 
5332
Fixed a problem where the result of an Index() operator (an object
5333
reference) must increment the reference count on the target object for the
5334
life of the object reference.
5335
 
5336
Implemented AML Interpreter and Debugger support for the new ACPI 3.0
5337
Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace
5338
resource descriptors.
5339
 
5340
Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
5341
Space Descriptor" string, indicating interpreter support for the descriptors
5342
above.
5343
 
5344
Implemented header support for the new ACPI 3.0 FADT flag bits.
5345
 
5346
Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1
5347
status/enable registers.
5348
 
5349
Updated header support for the MADT processor local Apic struct and MADT
5350
platform interrupt source struct for new ACPI 3.0 fields.
5351
 
5352
Implemented header support for the SRAT and SLIT ACPI tables.
5353
 
5354
Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag
5355
at runtime.
5356
 
5357
Code and Data Size: Current and previous core subsystem library sizes are
5358
shown below. These are the code and data sizes for the acpica.lib produced
5359
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5360
any ACPI driver or OSPM code. The debug version of the code includes the
5361
debug output trace mechanism and has a much larger code and data size. Note
5362
that these values will vary depending on the efficiency of the compiler and
5363
the compiler options used during generation.
5364
 
5365
  Previous Release:
5366
    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
5367
    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
5368
  Current Release:
5369
    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
5370
    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
5371
 
5372
 
5373
2) iASL Compiler/Disassembler:
5374
 
5375
Fixed a problem with the internal 64-bit String-to-integer conversion with
5376
strings less than two characters long.
5377
 
5378
Fixed a problem with constant folding where the result of the Index()
5379
operator can not be considered a constant. This means that Index() cannot be
5380
a type3 opcode and this will require an update to the ACPI specification.
5381
 
5382
Disassembler: Implemented support for the TTP, MTP, and TRS resource
5383
descriptor fields. These fields were inadvertently ignored and not output in
5384
the disassembly of the resource descriptor.
5385
 
5386
 
5387
 ----------------------------------------
5388
11 February 2005.  Summary of changes for version 20050211:
5389
 
5390
1) ACPI CA Core Subsystem:
5391
 
5392
Implemented ACPI 3.0 support for implicit conversion within the Match()
5393
operator. MatchObjects can now be of type integer, buffer, or string instead
5394
of just type integer.  Package elements are implicitly converted to the type
5395
of the MatchObject. This change aligns the behavior of Match() with the
5396
behavior of the other logical operators (LLess(), etc.) It also requires an
5397
errata change to the ACPI specification as this support was intended for
5398
ACPI 3.0, but was inadvertently omitted.
5399
 
5400
Fixed a problem with the internal implicit "to buffer" conversion. Strings
5401
that are converted to buffers will cause buffer truncation if the string is
5402
smaller than the target buffer. Integers that are converted to buffers will
5403
not cause buffer truncation, only zero extension (both as per the ACPI
5404
spec.) The problem was introduced when code was added to truncate the
5405
buffer, but this should not be performed in all cases, only the string case.
5406
 
5407
Fixed a problem with the Buffer and Package operators where the interpreter
5408
would get confused if two such operators were used as operands to an ASL
5409
operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
5410
stack was not being popped after the execution of these operators, resulting
5411
in an AE_NO_RETURN_VALUE exception.
5412
 
5413
Fixed a problem with constructs of the form Store(Index(...),...). The
5414
reference object returned from Index was inadvertently resolved to an actual
5415
value. This problem was introduced in version 20050114 when the behavior of
5416
Store() was modified to restrict the object types that can be used as the
5417
source operand (to match the ACPI specification.)
5418
 
5419
Reduced excessive stack use within the AcpiGetObjectInfo procedure.
5420
 
5421
Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
5422
 
5423
Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
5424
 
5425
Code and Data Size: Current and previous core subsystem library sizes are
5426
shown below. These are the code and data sizes for the acpica.lib produced
5427
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5428
any ACPI driver or OSPM code. The debug version of the code includes the
5429
debug output trace mechanism and has a much larger code and data size. Note
5430
that these values will vary depending on the efficiency of the compiler and
5431
the compiler options used during generation.
5432
 
5433
  Previous Release:
5434
    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
5435
    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
5436
  Current Release:
5437
    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
5438
    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
5439
 
5440
 
5441
2) iASL Compiler/Disassembler:
5442
 
5443
Fixed a code generation problem in the constant folding optimization code
5444
where incorrect code was generated if a constant was reduced to a buffer
5445
object (i.e., a reduced type 5 opcode.)
5446
 
5447
Fixed a typechecking problem for the ToBuffer operator. Caused by an
5448
incorrect return type in the internal opcode information table.
5449
 
5450
----------------------------------------
5451
25 January 2005.  Summary of changes for version 20050125:
5452
 
5453
1) ACPI CA Core Subsystem:
5454
 
5455
Fixed a recently introduced problem with the Global Lock where the
5456
underlying semaphore was not created.  This problem was introduced in
5457
version 20050114, and caused an AE_AML_NO_OPERAND exception during an
5458
Acquire() operation on _GL.
5459
 
5460
The local object cache is now optional, and is disabled by default. Both
5461
AcpiExec and the iASL compiler enable the cache because they run in user
5462
mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE
5463
to enable the local cache.
5464
 
5465
Fixed an issue in the internal function AcpiUtEvaluateObject concerning the
5466
optional "implicit return" support where an error was returned if no return
5467
object was expected, but one was implicitly returned. AE_OK is now returned
5468
in this case and the implicitly returned object is deleted.
5469
AcpiUtEvaluateObject is only occasionally used, and only to execute reserved
5470
methods such as _STA and _INI where the return type is known up front.
5471
 
5472
Fixed a few issues with the internal convert-to-integer code. It now returns
5473
an error if an attempt is made to convert a null string, a string of only
5474
blanks/tabs, or a zero-length buffer. This affects both implicit conversion
5475
and explicit conversion via the ToInteger() operator.
5476
 
5477
The internal debug code in AcpiUtAcquireMutex has been commented out. It is
5478
not needed for normal operation and should increase the performance of the
5479
entire subsystem. The code remains in case it is needed for debug purposes
5480
again.
5481
 
5482
The AcpiExec source and makefile are included in the Unix/Linux package for
5483
the first time.
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:  78.4K Code,  11.5K Data,   89.9K Total
5495
    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
5496
  Current Release:
5497
    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
5498
    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
5499
 
5500
2) iASL Compiler/Disassembler:
5501
 
5502
Switch/Case support: A warning is now issued if the type of the Switch value
5503
cannot be determined at compile time. For example, Switch(Arg0) will
5504
generate the warning, and the type is assumed to be an integer. As per the
5505
ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the
5506
warning.
5507
 
5508
Switch/Case support: Implemented support for buffer and string objects as
5509
the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
5510
buffers and strings.
5511
 
5512
Switch/Case support: The emitted code for the LEqual() comparisons now uses
5513
the switch value as the first operand, not the second. The case value is now
5514
the second operand, and this allows the case value to be implicitly
5515
converted to the type of the switch value, not the other way around.
5516
 
5517
Switch/Case support: Temporary variables are now emitted immediately within
5518
the control method, not at the global level. This means that there are now
5519
36 temps available per-method, not 36 temps per-module as was the case with
5520
the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
5521
 
5522
----------------------------------------
5523
14 January 2005.  Summary of changes for version 20050114:
5524
 
5525
Added 2005 copyright to all module headers.  This affects every module in
5526
the core subsystem, iASL compiler, and the utilities.
5527
 
5528
1) ACPI CA Core Subsystem:
5529
 
5530
Fixed an issue with the String-to-Buffer conversion code where the string
5531
null terminator was not included in the buffer after conversion, but there
5532
is existing ASL that assumes the string null terminator is included. This is
5533
the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
5534
introduced in the previous version when the code was updated to correctly
5535
set the converted buffer size as per the ACPI specification. The ACPI spec
5536
is ambiguous and will be updated to specify that the null terminator must be
5537
included in the converted buffer. This also affects the ToBuffer() ASL
5538
operator.
5539
 
5540
Fixed a problem with the Mid() ASL/AML operator where it did not work
5541
correctly on Buffer objects. Newly created sub-buffers were not being marked
5542
as initialized.
5543
 
5544
 
5545
Fixed a problem in AcpiTbFindTable where incorrect string compares were
5546
performed on the OemId and OemTableId table header fields.  These fields are
5547
not null terminated, so strncmp is now used instead of strcmp.
5548
 
5549
Implemented a restriction on the Store() ASL/AML operator to align the
5550
behavior with the ACPI specification.  Previously, any object could be used
5551
as the source operand.  Now, the only objects that may be used are Integers,
5552
Buffers, Strings, Packages, Object References, and DDB Handles.  If
5553
necessary, the original behavior can be restored by enabling the
5554
EnableInterpreterSlack flag.
5555
 
5556
Enhanced the optional "implicit return" support to allow an implicit return
5557
value from methods that are invoked externally via the AcpiEvaluateObject
5558
interface.  This enables implicit returns from the _STA and _INI methods,
5559
for example.
5560
 
5561
Changed the Revision() ASL/AML operator to return the current version of the
5562
AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned
5563
the supported ACPI version (This is the function of the _REV method).
5564
 
5565
Updated the _REV predefined method to return the currently supported version
5566
of ACPI, now 3.
5567
 
5568
Implemented batch mode option for the AcpiExec utility (-b).
5569
 
5570
Code and Data Size: Current and previous core subsystem library sizes are
5571
shown below. These are the code and data sizes for the acpica.lib produced
5572
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5573
any ACPI driver or OSPM code. The debug version of the code includes the
5574
debug output trace mechanism and has a much larger code and data size. Note
5575
that these values will vary depending on the efficiency of the compiler and
5576
the compiler options used during generation.
5577
 
5578
  Previous Release:
5579
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5580
    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
5581
  Current Release:
5582
    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
5583
    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
5584
 
5585
----------------------------------------
5586
10 December 2004.  Summary of changes for version 20041210:
5587
 
5588
ACPI 3.0 support is nearing completion in both the iASL compiler and the
5589
ACPI CA core subsystem.
5590
 
5591
1) ACPI CA Core Subsystem:
5592
 
5593
Fixed a problem in the ToDecimalString operator where the resulting string
5594
length was incorrectly calculated. The length is now calculated exactly,
5595
eliminating incorrect AE_STRING_LIMIT exceptions.
5596
 
5597
Fixed a problem in the ToHexString operator to allow a maximum 200 character
5598
string to be produced.
5599
 
5600
Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy
5601
routine where the length of the resulting buffer was not truncated to the
5602
new size (if the target buffer already existed).
5603
 
5604
Code and Data Size: Current and previous core subsystem library sizes are
5605
shown below. These are the code and data sizes for the acpica.lib produced
5606
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5607
any ACPI driver or OSPM code. The debug version of the code includes the
5608
debug output trace mechanism and has a much larger code and data size. Note
5609
that these values will vary depending on the efficiency of the compiler and
5610
the compiler options used during generation.
5611
 
5612
  Previous Release:
5613
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5614
    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
5615
  Current Release:
5616
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5617
    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
5618
 
5619
 
5620
2) iASL Compiler/Disassembler:
5621
 
5622
Implemented the new ACPI 3.0 resource template macros - DWordSpace,
5623
ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
5624
Includes support in the disassembler.
5625
 
5626
Implemented support for the new (ACPI 3.0) parameter to the Register macro,
5627
AccessSize.
5628
 
5629
Fixed a problem where the _HE resource name for the Interrupt macro was
5630
referencing bit 0 instead of bit 1.
5631
 
5632
Implemented check for maximum 255 interrupts in the Interrupt macro.
5633
 
5634
Fixed a problem with the predefined resource descriptor names where
5635
incorrect AML code was generated if the offset within the resource buffer
5636
was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
5637
but did not update the surrounding package lengths.
5638
 
5639
Changes to the Dma macro:  All channels within the channel list must be in
5640
the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
5641
optional (default is BusMaster).
5642
 
5643
Implemented check for maximum 7 data bytes for the VendorShort macro.
5644
 
5645
The ReadWrite parameter is now optional for the Memory32 and similar macros.
5646
 
5647
----------------------------------------
5648
03 December 2004.  Summary of changes for version 20041203:
5649
 
5650
1) ACPI CA Core Subsystem:
5651
 
5652
The low-level field insertion/extraction code (exfldio) has been completely
5653
rewritten to eliminate unnecessary complexity, bugs, and boundary
5654
conditions.
5655
 
5656
Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString
5657
operators where the input operand could be inadvertently deleted if no
5658
conversion was necessary (e.g., if the input to ToInteger was an Integer
5659
object.)
5660
 
5661
Fixed a problem with the ToDecimalString and ToHexString where an incorrect
5662
exception code was returned if the resulting string would be > 200 chars.
5663
AE_STRING_LIMIT is now returned.
5664
 
5665
Fixed a problem with the Concatenate operator where AE_OK was always
5666
returned, even if the operation failed.
5667
 
5668
Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
5669
semaphores to be allocated.
5670
 
5671
Code and Data Size: Current and previous core subsystem library sizes are
5672
shown below. These are the code and data sizes for the acpica.lib produced
5673
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5674
any ACPI driver or OSPM code. The debug version of the code includes the
5675
debug output trace mechanism and has a much larger code and data size. Note
5676
that these values will vary depending on the efficiency of the compiler and
5677
the compiler options used during generation.
5678
 
5679
  Previous Release:
5680
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5681
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5682
  Current Release:
5683
    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
5684
    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
5685
 
5686
 
5687
2) iASL Compiler/Disassembler:
5688
 
5689
Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
5690
recently introduced in 20041119.
5691
 
5692
Fixed a problem with the ToUUID macro where the upper nybble of each buffer
5693
byte was inadvertently set to zero.
5694
 
5695
----------------------------------------
5696
19 November 2004.  Summary of changes for version 20041119:
5697
 
5698
1) ACPI CA Core Subsystem:
5699
 
5700
Fixed a problem in the internal ConvertToInteger routine where new integers
5701
were not truncated to 32 bits for 32-bit ACPI tables. This routine converts
5702
buffers and strings to integers.
5703
 
5704
Implemented support to store a value to an Index() on a String object. This
5705
is an ACPI 2.0 feature that had not yet been implemented.
5706
 
5707
Implemented new behavior for storing objects to individual package elements
5708
(via the Index() operator). The previous behavior was to invoke the implicit
5709
conversion rules if an object was already present at the index.  The new
5710
behavior is to simply delete any existing object and directly store the new
5711
object. Although the ACPI specification seems unclear on this subject, other
5712
ACPI implementations behave in this manner.  (This is the root of the
5713
AE_BAD_HEX_CONSTANT issue.)
5714
 
5715
Modified the RSDP memory scan mechanism to support the extended checksum for
5716
ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
5717
RSDP signature is found with a valid checksum.
5718
 
5719
Code and Data Size: Current and previous core subsystem library sizes are
5720
shown below. These are the code and data sizes for the acpica.lib produced
5721
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5722
any ACPI driver or OSPM code. The debug version of the code includes the
5723
debug output trace mechanism and has a much larger code and data size. Note
5724
that these values will vary depending on the efficiency of the compiler and
5725
the compiler options used during generation.
5726
 
5727
  Previous Release:
5728
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5729
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5730
  Current Release:
5731
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5732
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5733
 
5734
 
5735
2) iASL Compiler/Disassembler:
5736
 
5737
Fixed a missing semicolon in the aslcompiler.y file.
5738
 
5739
----------------------------------------
5740
05 November 2004.  Summary of changes for version 20041105:
5741
 
5742
1) ACPI CA Core Subsystem:
5743
 
5744
Implemented support for FADT revision 2.  This was an interim table (between
5745
ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
5746
 
5747
Implemented optional support to allow uninitialized LocalX and ArgX
5748
variables in a control method.  The variables are initialized to an Integer
5749
object with a value of zero.  This support is enabled by setting the
5750
AcpiGbl_EnableInterpreterSlack flag to TRUE.
5751
 
5752
Implemented support for Integer objects for the SizeOf operator.  Either 4
5753
or 8 is returned, depending on the current integer size (32-bit or 64-bit,
5754
depending on the parent table revision).
5755
 
5756
Fixed a problem in the implementation of the SizeOf and ObjectType operators
5757
where the operand was resolved to a value too early, causing incorrect
5758
return values for some objects.
5759
 
5760
Fixed some possible memory leaks during exceptional conditions.
5761
 
5762
Code and Data Size: Current and previous core subsystem library sizes are
5763
shown below. These are the code and data sizes for the acpica.lib produced
5764
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5765
any ACPI driver or OSPM code. The debug version of the code includes the
5766
debug output trace mechanism and has a much larger code and data size. Note
5767
that these values will vary depending on the efficiency of the compiler and
5768
the compiler options used during generation.
5769
 
5770
  Previous Release:
5771
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5772
    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
5773
  Current Release:
5774
    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
5775
    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
5776
 
5777
 
5778
2) iASL Compiler/Disassembler:
5779
 
5780
Implemented support for all ACPI 3.0 reserved names and methods.
5781
 
5782
Implemented all ACPI 3.0 grammar elements in the front-end, including
5783
support for semicolons.
5784
 
5785
Implemented the ACPI 3.0 Function() and ToUUID() macros
5786
 
5787
Fixed a problem in the disassembler where a Scope() operator would not be
5788
emitted properly if the target of the scope was in another table.
5789
 
5790
----------------------------------------
5791
15 October 2004.  Summary of changes for version 20041015:
5792
 
5793
Note:  ACPI CA is currently undergoing an in-depth and complete formal
5794
evaluation to test/verify the following areas. Other suggestions are
5795
welcome. This will result in an increase in the frequency of releases and
5796
the number of bug fixes in the next few months.
5797
  - Functional tests for all ASL/AML operators
5798
  - All implicit/explicit type conversions
5799
  - Bit fields and operation regions
5800
  - 64-bit math support and 32-bit-only "truncated" math support
5801
  - Exceptional conditions, both compiler and interpreter
5802
  - Dynamic object deletion and memory leaks
5803
  - ACPI 3.0 support when implemented
5804
  - External interfaces to the ACPI subsystem
5805
 
5806
 
5807
1) ACPI CA Core Subsystem:
5808
 
5809
Fixed two alignment issues on 64-bit platforms - within debug statements in
5810
AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address
5811
field within the non-aligned ACPI generic address structure.
5812
 
5813
Fixed a problem in the Increment and Decrement operators where incorrect
5814
operand resolution could result in the inadvertent modification of the
5815
original integer when the integer is passed into another method as an
5816
argument and the arg is then incremented/decremented.
5817
 
5818
Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit
5819
BCD number were truncated during conversion.
5820
 
5821
Fixed a problem in the ToDecimal operator where the length of the resulting
5822
string could be set incorrectly too long if the input operand was a Buffer
5823
object.
5824
 
5825
Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0)
5826
within a buffer would prematurely terminate a compare between buffer
5827
objects.
5828
 
5829
Added a check for string overflow (>200 characters as per the ACPI
5830
specification) during the Concatenate operator with two string operands.
5831
 
5832
Code and Data Size: Current and previous core subsystem library sizes are
5833
shown below. These are the code and data sizes for the acpica.lib produced
5834
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5835
any ACPI driver or OSPM code. The debug version of the code includes the
5836
debug output trace mechanism and has a much larger code and data size. Note
5837
that these values will vary depending on the efficiency of the compiler and
5838
the compiler options used during generation.
5839
 
5840
  Previous Release:
5841
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5842
    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
5843
  Current Release:
5844
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
5845
    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
5846
 
5847
 
5848
 
5849
2) iASL Compiler/Disassembler:
5850
 
5851
Allow the use of the ObjectType operator on uninitialized Locals and Args
5852
(returns 0 as per the ACPI specification).
5853
 
5854
Fixed a problem where the compiler would fault if there was a syntax error
5855
in the FieldName of all of the various CreateXXXField operators.
5856
 
5857
Disallow the use of lower case letters within the EISAID macro, as per the
5858
ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where
5859
U is an uppercase letter and N is a hex digit.
5860
 
5861
 
5862
----------------------------------------
5863
06 October 2004.  Summary of changes for version 20041006:
5864
 
5865
1) ACPI CA Core Subsystem:
5866
 
5867
Implemented support for the ACPI 3.0 Timer operator. This ASL function
5868
implements a 64-bit timer with 100 nanosecond granularity.
5869
 
5870
Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
5871
implement the ACPI 3.0 Timer operator.  This allows the host OS to implement
5872
the timer with the best clock available. Also, it keeps the core subsystem
5873
out of the clock handling business, since the host OS (usually) performs
5874
this function.
5875
 
5876
Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
5877
functions use a 64-bit address which is part of the packed ACPI Generic
5878
Address Structure. Since the structure is non-aligned, the alignment macros
5879
are now used to extract the address to a local variable before use.
5880
 
5881
Fixed a problem where the ToInteger operator assumed all input strings were
5882
hexadecimal. The operator now handles both decimal strings and hex strings
5883
(prefixed with "0x").
5884
 
5885
Fixed a problem where the string length in the string object created as a
5886
result of the internal ConvertToString procedure could be incorrect. This
5887
potentially affected all implicit conversions and also the ToDecimalString
5888
and ToHexString operators.
5889
 
5890
Fixed two problems in the ToString operator. If the length parameter was
5891
zero, an incorrect string object was created and the value of the input
5892
length parameter was inadvertently changed from zero to Ones.
5893
 
5894
Fixed a problem where the optional ResourceSource string in the ExtendedIRQ
5895
resource macro was ignored.
5896
 
5897
Simplified the interfaces to the internal division functions, reducing code
5898
size and complexity.
5899
 
5900
Code and Data Size: Current and previous core subsystem library sizes are
5901
shown below. These are the code and data sizes for the acpica.lib produced
5902
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5903
any ACPI driver or OSPM code. The debug version of the code includes the
5904
debug output trace mechanism and has a much larger code and data size. Note
5905
that these values will vary depending on the efficiency of the compiler and
5906
the compiler options used during generation.
5907
 
5908
  Previous Release:
5909
    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
5910
    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
5911
  Current Release:
5912
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
5913
    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
5914
 
5915
 
5916
2) iASL Compiler/Disassembler:
5917
 
5918
Implemented support for the ACPI 3.0 Timer operator.
5919
 
5920
Fixed a problem where the Default() operator was inadvertently ignored in a
5921
Switch/Case block.  This was a problem in the translation of the Switch
5922
statement to If...Else pairs.
5923
 
5924
Added support to allow a standalone Return operator, with no parentheses (or
5925
operands).
5926
 
5927
Fixed a problem with code generation for the ElseIf operator where the
5928
translated Else...If parse tree was improperly constructed leading to the
5929
loss of some code.
5930
 
5931
----------------------------------------
5932
22 September 2004.  Summary of changes for version 20040922:
5933
 
5934
1) ACPI CA Core Subsystem:
5935
 
5936
Fixed a problem with the implementation of the LNot() operator where "Ones"
5937
was not returned for the TRUE case. Changed the code to return Ones instead
5938
of (!Arg) which was usually 1. This change affects iASL constant folding for
5939
this operator also.
5940
 
5941
Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not
5942
initialized properly -- Now zero the entire buffer in this case where the
5943
buffer already exists.
5944
 
5945
Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
5946
Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
5947
related code considerably. This will require changes/updates to all OS
5948
interface layers (OSLs.)
5949
 
5950
Implemented a new external interface, AcpiInstallExceptionHandler, to allow
5951
a system exception handler to be installed. This handler is invoked upon any
5952
run-time exception that occurs during control method execution.
5953
 
5954
Added support for the DSDT in AcpiTbFindTable. This allows the
5955
DataTableRegion() operator to access the local copy of the DSDT.
5956
 
5957
Code and Data Size: Current and previous core subsystem library sizes are
5958
shown below. These are the code and data sizes for the acpica.lib produced
5959
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
5960
any ACPI driver or OSPM code. The debug version of the code includes the
5961
debug output trace mechanism and has a much larger code and data size. Note
5962
that these values will vary depending on the efficiency of the compiler and
5963
the compiler options used during generation.
5964
 
5965
  Previous Release:
5966
    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
5967
    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
5968
  Current Release:
5969
    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
5970
    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
5971
 
5972
 
5973
2) iASL Compiler/Disassembler:
5974
 
5975
Fixed a problem with constant folding and the LNot operator. LNot was
5976
returning 1 in the TRUE case, not Ones as per the ACPI specification. This
5977
could result in the generation of an incorrect folded/reduced constant.
5978
 
5979
End-Of-File is now allowed within a "//"-style comment.  A parse error no
5980
longer occurs if such a comment is at the very end of the input ASL source
5981
file.
5982
 
5983
Implemented the "-r" option to override the Revision in the table header.
5984
The initial use of this option will be to simplify the evaluation of the AML
5985
interpreter by allowing a single ASL source module to be compiled for either
5986
32-bit or 64-bit integers.
5987
 
5988
 
5989
----------------------------------------
5990
27 August 2004.  Summary of changes for version 20040827:
5991
 
5992
1) ACPI CA Core Subsystem:
5993
 
5994
- Implemented support for implicit object conversion in the non-numeric
5995
logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and
5996
LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
5997
the second operand is implicitly converted on the fly to match the type of
5998
the first operand.  For example:
5999
 
6000
    LEqual (Source1, Source2)
6001
 
6002
Source1 and Source2 must each evaluate to an integer, a string, or a buffer.
6003
The data type of Source1 dictates the required type of Source2. Source2 is
6004
implicitly converted if necessary to match the type of Source1.
6005
 
6006
- Updated and corrected the behavior of the string conversion support.  The
6007
rules concerning conversion of buffers to strings (according to the ACPI
6008
specification) are as follows:
6009
 
6010
ToDecimalString - explicit byte-wise conversion of buffer to string of
6011
decimal values (0-255) separated by commas. ToHexString - explicit byte-wise
6012
conversion of buffer to string of hex values (0-FF) separated by commas.
6013
ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte
6014
copy with no transform except NULL terminated. Any other implicit buffer-to-
6015
string conversion - byte-wise conversion of buffer to string of hex values
6016
(0-FF) separated by spaces.
6017
 
6018
- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
6019
 
6020
- Fixed a problem in AcpiNsGetPathnameLength where the returned length was
6021
one byte too short in the case of a node in the root scope.  This could
6022
cause a fault during debug output.
6023
 
6024
- Code and Data Size: Current and previous core subsystem library sizes are
6025
shown below.  These are the code and data sizes for the acpica.lib produced
6026
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6027
any ACPI driver or OSPM code.  The debug version of the code includes the
6028
debug output trace mechanism and has a much larger code and data size.  Note
6029
that these values will vary depending on the efficiency of the compiler and
6030
the compiler options used during generation.
6031
 
6032
  Previous Release:
6033
    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
6034
    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
6035
  Current Release:
6036
    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
6037
    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
6038
 
6039
 
6040
2) iASL Compiler/Disassembler:
6041
 
6042
- Fixed a Linux generation error.
6043
 
6044
 
6045
----------------------------------------
6046
16 August 2004.  Summary of changes for version 20040816:
6047
 
6048
1) ACPI CA Core Subsystem:
6049
 
6050
Designed and implemented support within the AML interpreter for the so-
6051
called "implicit return".  This support returns the result of the last ASL
6052
operation within a control method, in the absence of an explicit Return()
6053
operator.  A few machines depend on this behavior, even though it is not
6054
explicitly supported by the ASL language.  It is optional support that can
6055
be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
6056
 
6057
Removed support for the PCI_Config address space from the internal low level
6058
hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
6059
support was not used internally, and would not work correctly anyway because
6060
the PCI bus number and segment number were not supported.  There are
6061
separate interfaces for PCI configuration space access because of the unique
6062
interface.
6063
 
6064
Code and Data Size: Current and previous core subsystem library sizes are
6065
shown below.  These are the code and data sizes for the acpica.lib produced
6066
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6067
any ACPI driver or OSPM code.  The debug version of the code includes the
6068
debug output trace mechanism and has a much larger code and data size.  Note
6069
that these values will vary depending on the efficiency of the compiler and
6070
the compiler options used during generation.
6071
 
6072
  Previous Release:
6073
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6074
    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
6075
  Current Release:
6076
    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
6077
    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
6078
 
6079
 
6080
2) iASL Compiler/Disassembler:
6081
 
6082
Fixed a problem where constants in ASL expressions at the root level (not
6083
within a control method) could be inadvertently truncated during code
6084
generation.  This problem was introduced in the 20040715 release.
6085
 
6086
 
6087
----------------------------------------
6088
15 July 2004.  Summary of changes for version 20040715:
6089
 
6090
1) ACPI CA Core Subsystem:
6091
 
6092
Restructured the internal HW GPE interfaces to pass/track the current state
6093
of interrupts (enabled/disabled) in order to avoid possible deadlock and
6094
increase flexibility of the interfaces.
6095
 
6096
Implemented a "lexicographical compare" for String and Buffer objects within
6097
the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual --
6098
as per further clarification to the ACPI specification.  Behavior is similar
6099
to C library "strcmp".
6100
 
6101
Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
6102
external function.  In the 32-bit non-debug case, the stack use has been
6103
reduced from 168 bytes to 32 bytes.
6104
 
6105
Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack,
6106
whose purpose is to allow the AML interpreter to forgive certain bad AML
6107
constructs.  Default setting is FALSE.
6108
 
6109
Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO
6110
support code.  If enabled, it allows field access to go beyond the end of a
6111
region definition if the field is within the region length rounded up to the
6112
next access width boundary (a common coding error.)
6113
 
6114
Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
6115
ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these
6116
symbols are lowercased by the latest version of the AcpiSrc tool.
6117
 
6118
The prototypes for the PCI interfaces in acpiosxf.h have been updated to
6119
rename "Register" to simply "Reg" to prevent certain compilers from
6120
complaining.
6121
 
6122
Code and Data Size: Current and previous core subsystem library sizes are
6123
shown below.  These are the code and data sizes for the acpica.lib produced
6124
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6125
any ACPI driver or OSPM code.  The debug version of the code includes the
6126
debug output trace mechanism and has a much larger code and data size.  Note
6127
that these values will vary depending on the efficiency of the compiler and
6128
the compiler options used during generation.
6129
 
6130
  Previous Release:
6131
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6132
    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
6133
  Current Release:
6134
    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
6135
    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
6136
 
6137
 
6138
2) iASL Compiler/Disassembler:
6139
 
6140
Implemented full support for Package objects within the Case() operator.
6141
Note: The Break() operator is currently not supported within Case blocks
6142
(TermLists) as there is some question about backward compatibility with ACPI
6143
1.0 interpreters.
6144
 
6145
 
6146
Fixed a problem where complex terms were not supported properly within the
6147
Switch() operator.
6148
 
6149
Eliminated extraneous warning for compiler-emitted reserved names of the
6150
form "_T_x".  (Used in Switch/Case operators.)
6151
 
6152
Eliminated optimization messages for "_T_x" objects and small constants
6153
within the DefinitionBlock operator.
6154
 
6155
 
6156
----------------------------------------
6157
15 June 2004.  Summary of changes for version 20040615:
6158
 
6159
1) ACPI CA Core Subsystem:
6160
 
6161
Implemented support for Buffer and String objects (as per ACPI 2.0) for the
6162
following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
6163
LLessEqual.
6164
 
6165
All directory names in the entire source package are lower case, as they
6166
were in earlier releases.
6167
 
6168
Implemented "Disassemble" command in the AML debugger that will disassemble
6169
a single control method.
6170
 
6171
Code and Data Size: Current and previous core subsystem library sizes are
6172
shown below.  These are the code and data sizes for the acpica.lib produced
6173
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6174
any ACPI driver or OSPM code.  The debug version of the code includes the
6175
debug output trace mechanism and has a much larger code and data size.  Note
6176
that these values will vary depending on the efficiency of the compiler and
6177
the compiler options used during generation.
6178
 
6179
  Previous Release:
6180
    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
6181
    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
6182
 
6183
  Current Release:
6184
    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
6185
    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
6186
 
6187
 
6188
2) iASL Compiler/Disassembler:
6189
 
6190
Implemented support for Buffer and String objects (as per ACPI 2.0) for the
6191
following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
6192
LLessEqual.
6193
 
6194
All directory names in the entire source package are lower case, as they
6195
were in earlier releases.
6196
 
6197
Fixed a fault when using the -g or -d options if the FADT was
6198
not found.
6199
 
6200
Fixed an issue with the Windows version of the compiler where later versions
6201
of Windows place the FADT in the registry under the name "FADT" and not
6202
"FACP" as earlier versions did.  This applies when using the -g or -
6203
d options.  The compiler now looks for both strings as
6204
necessary.
6205
 
6206
Fixed a problem with compiler namepath optimization where a namepath within
6207
the Scope() operator could not be optimized if the namepath was a subpath of
6208
the current scope path.
6209
 
6210
----------------------------------------
6211
27 May 2004.  Summary of changes for version 20040527:
6212
 
6213
1) ACPI CA Core Subsystem:
6214
 
6215
Completed a new design and implementation for EBDA (Extended BIOS Data Area)
6216
support in the RSDP scan code.  The original code improperly scanned for the
6217
EBDA by simply scanning from memory location 0 to 0x400.  The correct method
6218
is to first obtain the EBDA pointer from within the BIOS data area, then
6219
scan 1K of memory starting at the EBDA pointer.  There appear to be few if
6220
any machines that place the RSDP in the EBDA, however.
6221
 
6222
Integrated a fix for a possible fault during evaluation of BufferField
6223
arguments.  Obsolete code that was causing the problem was removed.
6224
 
6225
Found and fixed a problem in the Field Support Code where data could be
6226
corrupted on a bit field read that starts on an aligned boundary but does
6227
not end on an aligned boundary.  Merged the read/write "datum length"
6228
calculation code into a common procedure.
6229
 
6230
Rolled in a couple of changes to the FreeBSD-specific header.
6231
 
6232
 
6233
Code and Data Size: Current and previous core subsystem library sizes are
6234
shown below.  These are the code and data sizes for the acpica.lib produced
6235
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6236
any ACPI driver or OSPM code.  The debug version of the code includes the
6237
debug output trace mechanism and has a much larger code and data size.  Note
6238
that these values will vary depending on the efficiency of the compiler and
6239
the compiler options used during generation.
6240
 
6241
  Previous Release:
6242
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6243
    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
6244
  Current Release:
6245
    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
6246
    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
6247
 
6248
 
6249
2) iASL Compiler/Disassembler:
6250
 
6251
Fixed a generation warning produced by some overly-verbose compilers for a
6252
64-bit constant.
6253
 
6254
----------------------------------------
6255
14 May 2004.  Summary of changes for version 20040514:
6256
 
6257
1) ACPI CA Core Subsystem:
6258
 
6259
Fixed a problem where hardware GPE enable bits sometimes not set properly
6260
during and after GPE method execution.  Result of 04/27 changes.
6261
 
6262
Removed extra "clear all GPEs" when sleeping/waking.
6263
 
6264
Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
6265
AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to
6266
the new AcpiEv* calls as appropriate.
6267
 
6268
ACPI_OS_NAME was removed from the OS-specific headers.  The default name is
6269
now "Microsoft Windows NT" for maximum compatibility.  However this can be
6270
changed by modifying the acconfig.h file.
6271
 
6272
Allow a single invocation of AcpiInstallNotifyHandler for a handler that
6273
traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
6274
 
6275
Run _INI methods on ThermalZone objects.  This is against the ACPI
6276
specification, but there is apparently ASL code in the field that has these
6277
_INI methods, and apparently "other" AML interpreters execute them.
6278
 
6279
Performed a full 16/32/64 bit lint that resulted in some small changes.
6280
 
6281
Added a sleep simulation command to the AML debugger to test sleep code.
6282
 
6283
Code and Data Size: Current and previous core subsystem library sizes are
6284
shown below.  These are the code and data sizes for the acpica.lib produced
6285
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6286
any ACPI driver or OSPM code.  The debug version of the code includes the
6287
debug output trace mechanism and has a much larger code and data size.  Note
6288
that these values will vary depending on the efficiency of the compiler and
6289
the compiler options used during generation.
6290
 
6291
  Previous Release:
6292
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6293
    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
6294
  Current Release:
6295
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6296
    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
6297
 
6298
----------------------------------------
6299
27 April 2004.  Summary of changes for version 20040427:
6300
 
6301
1) ACPI CA Core Subsystem:
6302
 
6303
Completed a major overhaul of the GPE handling within ACPI CA.  There are
6304
now three types of GPEs:  wake-only, runtime-only, and combination wake/run.
6305
The only GPEs allowed to be combination wake/run are for button-style
6306
devices such as a control-method power button, control-method sleep button,
6307
or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not
6308
referenced by any _PRW methods are marked for "runtime" and hardware
6309
enabled.  Any GPE that is referenced by a _PRW method is marked for "wake"
6310
(and disabled at runtime).  However, at sleep time, only those GPEs that
6311
have been specifically enabled for wake via the AcpiEnableGpe interface will
6312
actually be hardware enabled.
6313
 
6314
A new external interface has been added, AcpiSetGpeType(), that is meant to
6315
be used by device drivers to force a GPE to a particular type.  It will be
6316
especially useful for the drivers for the button devices mentioned above.
6317
 
6318
Completed restructuring of the ACPI CA initialization sequence so that
6319
default operation region handlers are installed before GPEs are initialized
6320
and the _PRW methods are executed.  This will prevent errors when the _PRW
6321
methods attempt to access system memory or I/O space.
6322
 
6323
GPE enable/disable no longer reads the GPE enable register.  We now keep the
6324
enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
6325
thus no longer depend on the hardware to maintain these bits.
6326
 
6327
Always clear the wake status and fixed/GPE status bits before sleep, even
6328
for state S5.
6329
 
6330
Improved the AML debugger output for displaying the GPE blocks and their
6331
current status.
6332
 
6333
Added new strings for the _OSI method, of the form "Windows 2001 SPx" where
6334
x = 0,1,2,3,4.
6335
 
6336
Fixed a problem where the physical address was incorrectly calculated when
6337
the Load() operator was used to directly load from an Operation Region (vs.
6338
loading from a Field object.)  Also added check for minimum table length for
6339
this case.
6340
 
6341
Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
6342
mutex release.
6343
 
6344
Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
6345
consistency with the other fields returned.
6346
 
6347
Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
6348
structure for each GPE in the system, so the size of this structure is
6349
important.
6350
 
6351
CPU stack requirement reduction:  Cleaned up the method execution and object
6352
evaluation paths so that now a parameter structure is passed, instead of
6353
copying the various method parameters over and over again.
6354
 
6355
In evregion.c:  Correctly exit and reenter the interpreter region if and
6356
only if dispatching an operation region request to a user-installed handler.
6357
Do not exit/reenter when dispatching to a default handler (e.g., default
6358
system memory or I/O handlers)
6359
 
6360
 
6361
Notes for updating drivers for the new GPE support.  The following changes
6362
must be made to ACPI-related device drivers that are attached to one or more
6363
GPEs: (This information will be added to the ACPI CA Programmer Reference.)
6364
 
6365
1) AcpiInstallGpeHandler no longer automatically enables the GPE, you must
6366
explicitly call AcpiEnableGpe.
6367
2) There is a new interface called AcpiSetGpeType. This should be called
6368
before enabling the GPE.  Also, this interface will automatically disable
6369
the GPE if it is currently enabled.
6370
3) AcpiEnableGpe no longer supports a GPE type flag.
6371
 
6372
Specific drivers that must be changed:
6373
1) EC driver:
6374
    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
6375
AeGpeHandler, NULL);
6376
    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
6377
    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
6378
 
6379
2) Button Drivers (Power, Lid, Sleep):
6380
Run _PRW method under parent device
6381
If _PRW exists: /* This is a control-method button */
6382
    Extract GPE number and possibly GpeDevice
6383
    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
6384
    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
6385
 
6386
For all other devices that have _PRWs, we automatically set the GPE type to
6387
ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This
6388
must be done on a selective basis, usually requiring some kind of user app
6389
to allow the user to pick the wake devices.
6390
 
6391
 
6392
Code and Data Size: Current and previous core subsystem library sizes are
6393
shown below.  These are the code and data sizes for the acpica.lib produced
6394
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6395
any ACPI driver or OSPM code.  The debug version of the code includes the
6396
debug output trace mechanism and has a much larger code and data size.  Note
6397
that these values will vary depending on the efficiency of the compiler and
6398
the compiler options used during generation.
6399
 
6400
  Previous Release:
6401
    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
6402
    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
6403
  Current Release:
6404
 
6405
    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
6406
    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
6407
 
6408
 
6409
 
6410
----------------------------------------
6411
02 April 2004.  Summary of changes for version 20040402:
6412
 
6413
1) ACPI CA Core Subsystem:
6414
 
6415
Fixed an interpreter problem where an indirect store through an ArgX
6416
parameter was incorrectly applying the "implicit conversion rules" during
6417
the store.  From the ACPI specification: "If the target is a method local or
6418
argument (LocalX or ArgX), no conversion is performed and the result is
6419
stored directly to the target".  The new behavior is to disable implicit
6420
conversion during ALL stores to an ArgX.
6421
 
6422
Changed the behavior of the _PRW method scan to ignore any and all errors
6423
returned by a given _PRW.  This prevents the scan from aborting from the
6424
failure of any single _PRW.
6425
 
6426
Moved the runtime configuration parameters from the global init procedure to
6427
static variables in acglobal.h.  This will allow the host to override the
6428
default values easily.
6429
 
6430
Code and Data Size: Current and previous core subsystem library sizes are
6431
shown below.  These are the code and data sizes for the acpica.lib produced
6432
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6433
any ACPI driver or OSPM code.  The debug version of the code includes the
6434
debug output trace mechanism and has a much larger code and data size.  Note
6435
that these values will vary depending on the efficiency of the compiler and
6436
the compiler options used during generation.
6437
 
6438
  Previous Release:
6439
    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
6440
    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
6441
  Current Release:
6442
    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
6443
    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
6444
 
6445
 
6446
2) iASL Compiler/Disassembler:
6447
 
6448
iASL now fully disassembles SSDTs.  However, External() statements are not
6449
generated automatically for unresolved symbols at this time.  This is a
6450
planned feature for future implementation.
6451
 
6452
Fixed a scoping problem in the disassembler that occurs when the type of the
6453
target of a Scope() operator is overridden.  This problem caused an
6454
incorrectly nested internal namespace to be constructed.
6455
 
6456
Any warnings or errors that are emitted during disassembly are now commented
6457
out automatically so that the resulting file can be recompiled without any
6458
hand editing.
6459
 
6460
----------------------------------------
6461
26 March 2004.  Summary of changes for version 20040326:
6462
 
6463
1) ACPI CA Core Subsystem:
6464
 
6465
Implemented support for "wake" GPEs via interaction between GPEs and the
6466
_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
6467
identified as a WAKE GPE and by default will no longer be enabled at
6468
runtime.  Previously, we were blindly enabling all GPEs with a corresponding
6469
_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We
6470
believe this has been the cause of thousands of "spurious" GPEs on some
6471
systems.
6472
 
6473
This new GPE behavior is can be reverted to the original behavior (enable
6474
ALL GPEs at runtime) via a runtime flag.
6475
 
6476
Fixed a problem where aliased control methods could not access objects
6477
properly.  The proper scope within the namespace was not initialized
6478
(transferred to the target of the aliased method) before executing the
6479
target method.
6480
 
6481
Fixed a potential race condition on internal object deletion on the return
6482
object in AcpiEvaluateObject.
6483
 
6484
Integrated a fix for resource descriptors where both _MEM and _MTP were
6485
being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
6486
wide, 0x0F instead of 0x03.)
6487
 
6488
Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a
6489
fault in some cases.
6490
 
6491
Updated Notify() values for debug statements in evmisc.c
6492
 
6493
Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
6494
 
6495
Code and Data Size: Current and previous core subsystem library sizes are
6496
shown below.  These are the code and data sizes for the acpica.lib produced
6497
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6498
any ACPI driver or OSPM code.  The debug version of the code includes the
6499
debug output trace mechanism and has a much larger code and data size.  Note
6500
that these values will vary depending on the efficiency of the compiler and
6501
the compiler options used during generation.
6502
 
6503
  Previous Release:
6504
 
6505
    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
6506
    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
6507
  Current Release:
6508
    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
6509
    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
6510
 
6511
----------------------------------------
6512
11 March 2004.  Summary of changes for version 20040311:
6513
 
6514
1) ACPI CA Core Subsystem:
6515
 
6516
Fixed a problem where errors occurring during the parse phase of control
6517
method execution did not abort cleanly.  For example, objects created and
6518
installed in the namespace were not deleted.  This caused all subsequent
6519
invocations of the method to return the AE_ALREADY_EXISTS exception.
6520
 
6521
Implemented a mechanism to force a control method to "Serialized" execution
6522
if the method attempts to create namespace objects. (The root of the
6523
AE_ALREADY_EXISTS problem.)
6524
 
6525
Implemented support for the predefined _OSI "internal" control method.
6526
Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and
6527
"Windows 2001.1", and can be easily upgraded for new strings as necessary.
6528
This feature will allow "other" operating systems to execute the fully
6529
tested, "Windows" code path through the ASL code
6530
 
6531
Global Lock Support:  Now allows multiple acquires and releases with any
6532
internal thread.  Removed concept of "owning thread" for this special mutex.
6533
 
6534
Fixed two functions that were inappropriately declaring large objects on the
6535
CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during
6536
method execution considerably.
6537
 
6538
Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
6539
S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
6540
 
6541
Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
6542
defined on the machine.
6543
 
6544
Implemented two runtime options:  One to force all control method execution
6545
to "Serialized" to mimic Windows behavior, another to disable _OSI support
6546
if it causes problems on a given machine.
6547
 
6548
Code and Data Size: Current and previous core subsystem library sizes are
6549
shown below.  These are the code and data sizes for the acpica.lib produced
6550
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
6551
any ACPI driver or OSPM code.  The debug version of the code includes the
6552
debug output trace mechanism and has a much larger code and data size.  Note
6553
that these values will vary depending on the efficiency of the compiler and
6554
the compiler options used during generation.
6555
 
6556
  Previous Release:
6557
    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
6558
    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
6559
  Current Release:
6560
    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
6561
    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
6562
 
6563
2) iASL Compiler/Disassembler:
6564
 
6565
Fixed an array size problem for FreeBSD that would cause the compiler to
6566
fault.
6567
 
6568
----------------------------------------
6569
20 February 2004.  Summary of changes for version 20040220:
6570
 
6571
 
6572
1) ACPI CA Core Subsystem:
6573
 
6574
Implemented execution of _SxD methods for Device objects in the
6575
GetObjectInfo interface.
6576
 
6577
Fixed calls to _SST method to pass the correct arguments.
6578
 
6579
Added a call to _SST on wake to restore to "working" state.
6580
 
6581
Check for End-Of-Buffer failure case in the WalkResources interface.
6582
 
6583
Integrated fix for 64-bit alignment issue in acglobal.h by moving two
6584
structures to the beginning of the file.
6585
 
6586
After wake, clear GPE status register(s) before enabling GPEs.
6587
 
6588
After wake, clear/enable power button.  (Perhaps we should clear/enable all
6589
fixed events upon wake.)
6590
 
6591
Fixed a couple of possible memory leaks in the Namespace manager.
6592
 
6593
Integrated latest acnetbsd.h file.
6594
 
6595
----------------------------------------
6596
11 February 2004.  Summary of changes for version 20040211:
6597
 
6598
 
6599
1) ACPI CA Core Subsystem:
6600
 
6601
Completed investigation and implementation of the call-by-reference
6602
mechanism for control method arguments.
6603
 
6604
Fixed a problem where a store of an object into an indexed package could
6605
fail if the store occurs within a different method than the method that
6606
created the package.
6607
 
6608
Fixed a problem where the ToDecimal operator could return incorrect results.
6609
 
6610
Fixed a problem where the CopyObject operator could fail on some of the more
6611
obscure objects (e.g., Reference objects.)
6612
 
6613
Improved the output of the Debug object to display buffer, package, and
6614
index objects.
6615
 
6616
Fixed a problem where constructs of the form "RefOf (ArgX)" did not return
6617
the expected result.
6618
 
6619
Added permanent ACPI_REPORT_ERROR macros for all instances of the
6620
ACPI_AML_INTERNAL exception.
6621
 
6622
Integrated latest version of acfreebsd.h
6623
 
6624
----------------------------------------
6625
16 January 2004.  Summary of changes for version 20040116:
6626
 
6627
The purpose of this release is primarily to update the copyright years in
6628
each module, thus causing a huge number of diffs.  There are a few small
6629
functional changes, however.
6630
 
6631
1) ACPI CA Core Subsystem:
6632
 
6633
Improved error messages when there is a problem finding one or more of the
6634
required base ACPI tables
6635
 
6636
Reintroduced the definition of APIC_HEADER in actbl.h
6637
 
6638
Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
6639
 
6640
Removed extraneous reference to NewObj in dsmthdat.c
6641
 
6642
2) iASL compiler
6643
 
6644
Fixed a problem introduced in December that disabled the correct disassembly
6645
of Resource Templates
6646
 
6647
 
6648
----------------------------------------
6649
03 December 2003.  Summary of changes for version 20031203:
6650
 
6651
1) ACPI CA Core Subsystem:
6652
 
6653
Changed the initialization of Operation Regions during subsystem
6654
init to perform two entire walks of the ACPI namespace; The first
6655
to initialize the regions themselves, the second to execute the
6656
_REG methods.  This fixed some interdependencies across _REG
6657
methods found on some machines.
6658
 
6659
Fixed a problem where a Store(Local0, Local1) could simply update
6660
the object reference count, and not create a new copy of the
6661
object if the Local1 is uninitialized.
6662
 
6663
Implemented support for the _SST reserved method during sleep
6664
transitions.
6665
 
6666
Implemented support to clear the SLP_TYP and SLP_EN bits when
6667
waking up, this is apparently required by some machines.
6668
 
6669
When sleeping, clear the wake status only if SleepState is not S5.
6670
 
6671
Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
6672
pointer arithmetic advanced a string pointer too far.
6673
 
6674
Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
6675
could be returned if the requested table has not been loaded.
6676
 
6677
Within the support for IRQ resources, restructured the handling of
6678
the active and edge/level bits.
6679
 
6680
Fixed a few problems in AcpiPsxExecute() where memory could be
6681
leaked under certain error conditions.
6682
 
6683
Improved error messages for the cases where the ACPI mode could
6684
not be entered.
6685
 
6686
Code and Data Size: Current and previous core subsystem library
6687
sizes are shown below.  These are the code and data sizes for the
6688
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6689
these values do not include any ACPI driver or OSPM code.  The
6690
debug version of the code includes the debug output trace
6691
mechanism and has a much larger code and data size.  Note that
6692
these values will vary depending on the efficiency of the compiler
6693
and the compiler options used during generation.
6694
 
6695
  Previous Release (20031029):
6696
    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
6697
    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
6698
  Current Release:
6699
    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
6700
    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
6701
 
6702
2) iASL Compiler/Disassembler:
6703
 
6704
Implemented a fix for the iASL disassembler where a bad index was
6705
generated.  This was most noticeable on 64-bit platforms
6706
 
6707
 
6708
----------------------------------------
6709
29 October 2003.  Summary of changes for version 20031029:
6710
 
6711
1) ACPI CA Core Subsystem:
6712
 
6713
 
6714
Fixed a problem where a level-triggered GPE with an associated
6715
_Lxx control method was incorrectly cleared twice.
6716
 
6717
Fixed a problem with the Field support code where an access can
6718
occur beyond the end-of-region if the field is non-aligned but
6719
extends to the very end of the parent region (resulted in an
6720
AE_AML_REGION_LIMIT exception.)
6721
 
6722
Fixed a problem with ACPI Fixed Events where an RT Clock handler
6723
would not get invoked on an RTC event.  The RTC event bitmasks for
6724
the PM1 registers were not being initialized properly.
6725
 
6726
Implemented support for executing _STA and _INI methods for
6727
Processor objects.  Although this is currently not part of the
6728
ACPI specification, there is existing ASL code that depends on the
6729
init-time execution of these methods.
6730
 
6731
Implemented and deployed a GetDescriptorName function to decode
6732
the various types of internal descriptors.  Guards against null
6733
descriptors during debug output also.
6734
 
6735
Implemented and deployed a GetNodeName function to extract the 4-
6736
character namespace node name.  This function simplifies the debug
6737
and error output, as well as guarding against null pointers during
6738
output.
6739
 
6740
Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
6741
simplify the debug and error output of 64-bit integers.  This
6742
macro replaces the HIDWORD and LODWORD macros for dumping these
6743
integers.
6744
 
6745
Updated the implementation of the Stall() operator to only call
6746
AcpiOsStall(), and also return an error if the operand is larger
6747
than 255.  This preserves the required behavior of not
6748
relinquishing the processor, as would happen if AcpiOsSleep() was
6749
called for "long stalls".
6750
 
6751
Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
6752
initialized are now treated as NOOPs.
6753
 
6754
Cleaned up a handful of warnings during 64-bit generation.
6755
 
6756
Fixed a reported error where and incorrect GPE number was passed
6757
to the GPE dispatch handler.  This value is only used for error
6758
output, however.  Used this opportunity to clean up and streamline
6759
the GPE dispatch code.
6760
 
6761
Code and Data Size: Current and previous core subsystem library
6762
sizes are shown below.  These are the code and data sizes for the
6763
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6764
these values do not include any ACPI driver or OSPM code.  The
6765
 
6766
debug version of the code includes the debug output trace
6767
mechanism and has a much larger code and data size.  Note that
6768
these values will vary depending on the efficiency of the compiler
6769
and the compiler options used during generation.
6770
 
6771
  Previous Release (20031002):
6772
    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
6773
    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
6774
  Current Release:
6775
    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
6776
    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
6777
 
6778
 
6779
2) iASL Compiler/Disassembler:
6780
 
6781
Updated the iASL compiler to return an error if the operand to the
6782
Stall() operator is larger than 255.
6783
 
6784
 
6785
----------------------------------------
6786
02 October 2003.  Summary of changes for version 20031002:
6787
 
6788
 
6789
1) ACPI CA Core Subsystem:
6790
 
6791
Fixed a problem with Index Fields where the index was not
6792
incremented for fields that require multiple writes to the
6793
index/data registers (Fields that are wider than the data
6794
register.)
6795
 
6796
Fixed a problem with all Field objects where a write could go
6797
beyond the end-of-field if the field was larger than the access
6798
granularity and therefore required multiple writes to complete the
6799
request.  An extra write beyond the end of the field could happen
6800
inadvertently.
6801
 
6802
Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
6803
would incorrectly be returned if the width of the Data Register
6804
was larger than the specified field access width.
6805
 
6806
Completed fixes for LoadTable() and Unload() and verified their
6807
operation.  Implemented full support for the "DdbHandle" object
6808
throughout the ACPI CA subsystem.
6809
 
6810
Implemented full support for the MADT and ECDT tables in the ACPI
6811
CA header files.  Even though these tables are not directly
6812
consumed by ACPI CA, the header definitions are useful for ACPI
6813
device drivers.
6814
 
6815
Integrated resource descriptor fixes posted to the Linux ACPI
6816
list.  This included checks for minimum descriptor length, and
6817
support for trailing NULL strings within descriptors that have
6818
optional string elements.
6819
 
6820
Code and Data Size: Current and previous core subsystem library
6821
sizes are shown below.  These are the code and data sizes for the
6822
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6823
these values do not include any ACPI driver or OSPM code.  The
6824
debug version of the code includes the debug output trace
6825
mechanism and has a much larger code and data size.  Note that
6826
these values will vary depending on the efficiency of the compiler
6827
and the compiler options used during generation.
6828
 
6829
  Previous Release (20030918):
6830
    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
6831
    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
6832
  Current Release:
6833
    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
6834
    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
6835
 
6836
 
6837
2) iASL Compiler:
6838
 
6839
Implemented detection of non-ASCII characters within the input
6840
source ASL file.  This catches attempts to compile binary (AML)
6841
files early in the compile, with an informative error message.
6842
 
6843
Fixed a problem where the disassembler would fault if the output
6844
filename could not be generated or if the output file could not be
6845
opened.
6846
 
6847
----------------------------------------
6848
18 September 2003.  Summary of changes for version 20030918:
6849
 
6850
 
6851
1) ACPI CA Core Subsystem:
6852
 
6853
Found and fixed a longstanding problem with the late execution of
6854
the various deferred AML opcodes (such as Operation Regions,
6855
Buffer Fields, Buffers, and Packages).  If the name string
6856
specified for the name of the new object placed the object in a
6857
scope other than the current scope, the initialization/execution
6858
of the opcode failed.  The solution to this problem was to
6859
implement a mechanism where the late execution of such opcodes
6860
does not attempt to lookup/create the name a second time in an
6861
incorrect scope.  This fixes the "region size computed
6862
incorrectly" problem.
6863
 
6864
Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
6865
Global Lock AE_BAD_PARAMETER error.
6866
 
6867
Fixed several 64-bit issues with prototypes, casting and data
6868
types.
6869
 
6870
Removed duplicate prototype from acdisasm.h
6871
 
6872
Fixed an issue involving EC Operation Region Detach (Shaohua Li)
6873
 
6874
Code and Data Size: Current and previous core subsystem library
6875
sizes are shown below.  These are the code and data sizes for the
6876
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6877
these values do not include any ACPI driver or OSPM code.  The
6878
debug version of the code includes the debug output trace
6879
mechanism and has a much larger code and data size.  Note that
6880
these values will vary depending on the efficiency of the compiler
6881
and the compiler options used during generation.
6882
 
6883
  Previous Release:
6884
 
6885
    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
6886
    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
6887
  Current Release:
6888
    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
6889
    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
6890
 
6891
 
6892
2) Linux:
6893
 
6894
Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
6895
correct sleep time in seconds.
6896
 
6897
----------------------------------------
6898
14 July 2003.  Summary of changes for version 20030619:
6899
 
6900
1) ACPI CA Core Subsystem:
6901
 
6902
Parse SSDTs in order discovered, as opposed to reverse order
6903
(Hrvoje Habjanic)
6904
 
6905
Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
6906
Klausner,
6907
   Nate Lawson)
6908
 
6909
 
6910
2) Linux:
6911
 
6912
Dynamically allocate SDT list (suggested by Andi Kleen)
6913
 
6914
proc function return value cleanups (Andi Kleen)
6915
 
6916
Correctly handle NMI watchdog during long stalls (Andrew Morton)
6917
 
6918
Make it so acpismp=force works (reported by Andrew Morton)
6919
 
6920
 
6921
----------------------------------------
6922
19 June 2003.  Summary of changes for version 20030619:
6923
 
6924
1) ACPI CA Core Subsystem:
6925
 
6926
Fix To/FromBCD, eliminating the need for an arch-specific #define.
6927
 
6928
Do not acquire a semaphore in the S5 shutdown path.
6929
 
6930
Fix ex_digits_needed for 0. (Takayoshi Kochi)
6931
 
6932
Fix sleep/stall code reversal. (Andi Kleen)
6933
 
6934
Revert a change having to do with control method calling
6935
semantics.
6936
 
6937
2) Linux:
6938
 
6939
acpiphp update (Takayoshi Kochi)
6940
 
6941
Export acpi_disabled for sonypi (Stelian Pop)
6942
 
6943
Mention acpismp=force in config help
6944
 
6945
Re-add acpitable.c and acpismp=force. This improves backwards
6946
 
6947
compatibility and also cleans up the code to a significant degree.
6948
 
6949
Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
6950
 
6951
----------------------------------------
6952
22 May 2003.  Summary of changes for version 20030522:
6953
 
6954
1) ACPI CA Core Subsystem:
6955
 
6956
Found and fixed a reported problem where an AE_NOT_FOUND error
6957
occurred occasionally during _BST evaluation.  This turned out to
6958
be an Owner ID allocation issue where a called method did not get
6959
a new ID assigned to it.  Eventually, (after 64k calls), the Owner
6960
ID UINT16 would wraparound so that the ID would be the same as the
6961
caller's and the called method would delete the caller's
6962
namespace.
6963
 
6964
Implemented extended error reporting for control methods that are
6965
aborted due to a run-time exception.  Output includes the exact
6966
AML instruction that caused the method abort, a dump of the method
6967
locals and arguments at the time of the abort, and a trace of all
6968
nested control method calls.
6969
 
6970
Modified the interpreter to allow the creation of buffers of zero
6971
length from the AML code. Implemented new code to ensure that no
6972
attempt is made to actually allocate a memory buffer (of length
6973
zero) - instead, a simple buffer object with a NULL buffer pointer
6974
and length zero is created.  A warning is no longer issued when
6975
the AML attempts to create a zero-length buffer.
6976
 
6977
Implemented a workaround for the "leading asterisk issue" in
6978
_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
6979
asterisk is automatically removed if present in any HID, UID, or
6980
CID strings.  The iASL compiler will still flag this asterisk as
6981
an error, however.
6982
 
6983
Implemented full support for _CID methods that return a package of
6984
multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
6985
now additionally returns a device _CID list if present.  This
6986
required a change to the external interface in order to pass an
6987
ACPI_BUFFER object as a parameter since the _CID list is of
6988
variable length.
6989
 
6990
Fixed a problem with the new AE_SAME_HANDLER exception where
6991
handler initialization code did not know about this exception.
6992
 
6993
Code and Data Size: Current and previous core subsystem library
6994
sizes are shown below.  These are the code and data sizes for the
6995
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
6996
these values do not include any ACPI driver or OSPM code.  The
6997
debug version of the code includes the debug output trace
6998
mechanism and has a much larger code and data size.  Note that
6999
these values will vary depending on the efficiency of the compiler
7000
and the compiler options used during generation.
7001
 
7002
  Previous Release (20030509):
7003
    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
7004
    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
7005
  Current Release:
7006
    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
7007
    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
7008
 
7009
 
7010
2) Linux:
7011
 
7012
Fixed a bug in which we would reinitialize the ACPI interrupt
7013
after it was already working, thus disabling all ACPI and the IRQs
7014
for any other device sharing the interrupt. (Thanks to Stian
7015
Jordet)
7016
 
7017
Toshiba driver update (John Belmonte)
7018
 
7019
Return only 0 or 1 for our interrupt handler status (Andrew
7020
Morton)
7021
 
7022
 
7023
3) iASL Compiler:
7024
 
7025
Fixed a reported problem where multiple (nested) ElseIf()
7026
statements were not handled correctly by the compiler, resulting
7027
in incorrect warnings and incorrect AML code.  This was a problem
7028
in both the ASL parser and the code generator.
7029
 
7030
 
7031
4) Documentation:
7032
 
7033
Added changes to existing interfaces, new exception codes, and new
7034
text concerning reference count object management versus garbage
7035
collection.
7036
 
7037
----------------------------------------
7038
09 May 2003.  Summary of changes for version 20030509.
7039
 
7040
 
7041
1) ACPI CA Core Subsystem:
7042
 
7043
Changed the subsystem initialization sequence to hold off
7044
installation of address space handlers until the hardware has been
7045
initialized and the system has entered ACPI mode.  This is because
7046
the installation of space handlers can cause _REG methods to be
7047
run.  Previously, the _REG methods could potentially be run before
7048
ACPI mode was enabled.
7049
 
7050
Fixed some memory leak issues related to address space handler and
7051
notify handler installation.  There were some problems with the
7052
reference count mechanism caused by the fact that the handler
7053
objects are shared across several namespace objects.
7054
 
7055
Fixed a reported problem where reference counts within the
7056
namespace were not properly updated when named objects created by
7057
method execution were deleted.
7058
 
7059
Fixed a reported problem where multiple SSDTs caused a deletion
7060
issue during subsystem termination.  Restructured the table data
7061
structures to simplify the linked lists and the related code.
7062
 
7063
Fixed a problem where the table ID associated with secondary
7064
tables (SSDTs) was not being propagated into the namespace objects
7065
created by those tables.  This would only present a problem for
7066
tables that are unloaded at run-time, however.
7067
 
7068
Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
7069
type as the length parameter (instead of UINT32).
7070
 
7071
Solved a long-standing problem where an ALREADY_EXISTS error
7072
appears on various systems.  This problem could happen when there
7073
are multiple PCI_Config operation regions under a single PCI root
7074
bus.  This doesn't happen very frequently, but there are some
7075
systems that do this in the ASL.
7076
 
7077
Fixed a reported problem where the internal DeleteNode function
7078
was incorrectly handling the case where a namespace node was the
7079
first in the parent's child list, and had additional peers (not
7080
the only child, but first in the list of children.)
7081
 
7082
Code and Data Size: Current core subsystem library sizes are shown
7083
below.  These are the code and data sizes for the acpica.lib
7084
produced by the Microsoft Visual C++ 6.0 compiler, and these
7085
values do not include any ACPI driver or OSPM code.  The debug
7086
version of the code includes the debug output trace mechanism and
7087
has a much larger code and data size.  Note that these values will
7088
vary depending on the efficiency of the compiler and the compiler
7089
options used during generation.
7090
 
7091
  Previous Release
7092
    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
7093
    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
7094
  Current Release:
7095
    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
7096
    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
7097
 
7098
 
7099
2) Linux:
7100
 
7101
Allow ":" in OS override string (Ducrot Bruno)
7102
 
7103
Kobject fix (Greg KH)
7104
 
7105
 
7106
3 iASL Compiler/Disassembler:
7107
 
7108
Fixed a problem in the generation of the C source code files (AML
7109
is emitted in C source statements for BIOS inclusion) where the
7110
Ascii dump that appears within a C comment at the end of each line
7111
could cause a compile time error if the AML sequence happens to
7112
have an open comment or close comment sequence embedded.
7113
 
7114
 
7115
----------------------------------------
7116
24 April 2003.  Summary of changes for version 20030424.
7117
 
7118
 
7119
1) ACPI CA Core Subsystem:
7120
 
7121
Support for big-endian systems has been implemented.  Most of the
7122
support has been invisibly added behind big-endian versions of the
7123
ACPI_MOVE_* macros.
7124
 
7125
Fixed a problem in AcpiHwDisableGpeBlock() and
7126
AcpiHwClearGpeBlock() where an incorrect offset was passed to the
7127
low level hardware write routine.  The offset parameter was
7128
actually eliminated from the low level read/write routines because
7129
they had become obsolete.
7130
 
7131
Fixed a problem where a handler object was deleted twice during
7132
the removal of a fixed event handler.
7133
 
7134
 
7135
2) Linux:
7136
 
7137
A fix for SMP systems with link devices was contributed by
7138
 
7139
Compaq's Dan Zink.
7140
 
7141
(2.5) Return whether we handled the interrupt in our IRQ handler.
7142
(Linux ISRs no longer return void, so we can propagate the handler
7143
return value from the ACPI CA core back to the OS.)
7144
 
7145
 
7146
 
7147
3) Documentation:
7148
 
7149
The ACPI CA Programmer Reference has been updated to reflect new
7150
interfaces and changes to existing interfaces.
7151
 
7152
----------------------------------------
7153
28 March 2003.  Summary of changes for version 20030328.
7154
 
7155
1) ACPI CA Core Subsystem:
7156
 
7157
The GPE Block Device support has been completed.  New interfaces
7158
are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
7159
interfaces (enable, disable, clear, getstatus) have been split
7160
into separate interfaces for Fixed Events and General Purpose
7161
Events (GPEs) in order to support GPE Block Devices properly.
7162
 
7163
Fixed a problem where the error message "Failed to acquire
7164
semaphore" would appear during operations on the embedded
7165
controller (EC).
7166
 
7167
Code and Data Size: Current core subsystem library sizes are shown
7168
below.  These are the code and data sizes for the acpica.lib
7169
produced by the Microsoft Visual C++ 6.0 compiler, and these
7170
values do not include any ACPI driver or OSPM code.  The debug
7171
version of the code includes the debug output trace mechanism and
7172
has a much larger code and data size.  Note that these values will
7173
vary depending on the efficiency of the compiler and the compiler
7174
options used during generation.
7175
 
7176
  Previous Release
7177
    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
7178
    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
7179
  Current Release:
7180
    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
7181
    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
7182
 
7183
 
7184
----------------------------------------
7185
28 February 2003.  Summary of changes for version 20030228.
7186
 
7187
 
7188
1) ACPI CA Core Subsystem:
7189
 
7190
The GPE handling and dispatch code has been completely overhauled
7191
in preparation for support of GPE Block Devices (ID ACPI0006).
7192
This affects internal data structures and code only; there should
7193
be no differences visible externally.  One new file has been
7194
added, evgpeblk.c
7195
 
7196
The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
7197
fields that are used to determine the GPE block lengths.  The
7198
REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
7199
structures are ignored.  This is per the ACPI specification but it
7200
isn't very clear.  The full 256 Block 0/1 GPEs are now supported
7201
(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
7202
 
7203
In the SCI interrupt handler, removed the read of the PM1_CONTROL
7204
register to look at the SCI_EN bit.  On some machines, this read
7205
causes an SMI event and greatly slows down SCI events.  (This may
7206
in fact be the cause of slow battery status response on some
7207
systems.)
7208
 
7209
Fixed a problem where a store of a NULL string to a package object
7210
could cause the premature deletion of the object.  This was seen
7211
during execution of the battery _BIF method on some systems,
7212
resulting in no battery data being returned.
7213
 
7214
Added AcpiWalkResources interface to simplify parsing of resource
7215
lists.
7216
 
7217
Code and Data Size: Current core subsystem library sizes are shown
7218
below.  These are the code and data sizes for the acpica.lib
7219
produced by the Microsoft Visual C++ 6.0 compiler, and these
7220
values do not include any ACPI driver or OSPM code.  The debug
7221
version of the code includes the debug output trace mechanism and
7222
has a much larger code and data size.  Note that these values will
7223
vary depending on the efficiency of the compiler and the compiler
7224
options used during generation.
7225
 
7226
  Previous Release
7227
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7228
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7229
  Current Release:
7230
    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
7231
    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
7232
 
7233
 
7234
2) Linux
7235
 
7236
S3 fixes (Ole Rohne)
7237
 
7238
Update ACPI PHP driver with to use new acpi_walk_resource API
7239
(Bjorn Helgaas)
7240
 
7241
Add S4BIOS support (Pavel Machek)
7242
 
7243
Map in entire table before performing checksum (John Stultz)
7244
 
7245
Expand the mem= cmdline to allow the specification of reserved and
7246
ACPI DATA blocks (Pavel Machek)
7247
 
7248
Never use ACPI on VISWS
7249
 
7250
Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
7251
 
7252
Revert a change that allowed P_BLK lengths to be 4 or 5. This is
7253
causing us to think that some systems support C2 when they really
7254
don't.
7255
 
7256
Do not count processor objects for non-present CPUs (Thanks to
7257
Dominik Brodowski)
7258
 
7259
 
7260
3) iASL Compiler:
7261
 
7262
Fixed a problem where ASL include files could not be found and
7263
opened.
7264
 
7265
Added support for the _PDC reserved name.
7266
 
7267
 
7268
----------------------------------------
7269
22 January 2003.  Summary of changes for version 20030122.
7270
 
7271
 
7272
1) ACPI CA Core Subsystem:
7273
 
7274
Added a check for constructs of the form:  Store (Local0, Local0)
7275
where Local0 is not initialized.  Apparently, some BIOS
7276
programmers believe that this is a NOOP.  Since this store doesn't
7277
do anything anyway, the new prototype behavior will ignore this
7278
error.  This is a case where we can relax the strict checking in
7279
the interpreter in the name of compatibility.
7280
 
7281
 
7282
2) Linux
7283
 
7284
The AcpiSrc Source Conversion Utility has been released with the
7285
Linux package for the first time.  This is the utility that is
7286
used to convert the ACPI CA base source code to the Linux version.
7287
 
7288
(Both) Handle P_BLK lengths shorter than 6 more gracefully
7289
 
7290
(Both) Move more headers to include/acpi, and delete an unused
7291
header.
7292
 
7293
(Both) Move drivers/acpi/include directory to include/acpi
7294
 
7295
(Both) Boot functions don't use cmdline, so don't pass it around
7296
 
7297
(Both) Remove include of unused header (Adrian Bunk)
7298
 
7299
(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
7300
the
7301
former now also includes the latter, acpiphp.h only needs the one,
7302
now.
7303
 
7304
(2.5) Make it possible to select method of bios restoring after S3
7305
resume. [=> no more ugly ifdefs] (Pavel Machek)
7306
 
7307
(2.5) Make proc write interfaces work (Pavel Machek)
7308
 
7309
(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
7310
 
7311
(2.5) Break out ACPI Perf code into its own module, under cpufreq
7312
(Dominik Brodowski)
7313
 
7314
(2.4) S4BIOS support (Ducrot Bruno)
7315
 
7316
(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
7317
Visinoni)
7318
 
7319
 
7320
3) iASL Compiler:
7321
 
7322
Added support to disassemble SSDT and PSDTs.
7323
 
7324
Implemented support to obtain SSDTs from the Windows registry if
7325
available.
7326
 
7327
 
7328
----------------------------------------
7329
09 January 2003.  Summary of changes for version 20030109.
7330
 
7331
1) ACPI CA Core Subsystem:
7332
 
7333
Changed the behavior of the internal Buffer-to-String conversion
7334
function.  The current ACPI specification states that the contents
7335
of the buffer are "converted to a string of two-character
7336
hexadecimal numbers, each separated by a space".  Unfortunately,
7337
this definition is not backwards compatible with existing ACPI 1.0
7338
implementations (although the behavior was not defined in the ACPI
7339
1.0 specification).  The new behavior simply copies data from the
7340
buffer to the string until a null character is found or the end of
7341
the buffer is reached.  The new String object is always null
7342
terminated.  This problem was seen during the generation of _BIF
7343
battery data where incorrect strings were returned for battery
7344
type, etc.  This will also require an errata to the ACPI
7345
specification.
7346
 
7347
Renamed all instances of NATIVE_UINT and NATIVE_INT to
7348
ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
7349
 
7350
Copyright in all module headers (both Linux and non-Linux) has be
7351
updated to 2003.
7352
 
7353
Code and Data Size: Current core subsystem library sizes are shown
7354
below.  These are the code and data sizes for the acpica.lib
7355
produced by the Microsoft Visual C++ 6.0 compiler, and these
7356
values do not include any ACPI driver or OSPM code.  The debug
7357
version of the code includes the debug output trace mechanism and
7358
has a much larger code and data size.  Note that these values will
7359
vary depending on the efficiency of the compiler and the compiler
7360
options used during generation.
7361
 
7362
  Previous Release
7363
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7364
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7365
  Current Release:
7366
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7367
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7368
 
7369
 
7370
2) Linux
7371
 
7372
Fixed an oops on module insertion/removal (Matthew Tippett)
7373
 
7374
(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
7375
 
7376
(2.5) Replace pr_debug (Randy Dunlap)
7377
 
7378
(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
7379
 
7380
(Both) Eliminate spawning of thread from timer callback, in favor
7381
of schedule_work()
7382
 
7383
(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
7384
 
7385
(Both) Added define for Fixed Function HW region (Matthew Wilcox)
7386
 
7387
(Both) Add missing statics to button.c (Pavel Machek)
7388
 
7389
Several changes have been made to the source code translation
7390
utility that generates the Linux Code in order to make the code
7391
more "Linux-like":
7392
 
7393
All typedefs on structs and unions have been removed in keeping
7394
with the Linux coding style.
7395
 
7396
Removed the non-Linux SourceSafe module revision number from each
7397
module header.
7398
 
7399
Completed major overhaul of symbols to be lowercased for linux.
7400
Doubled the number of symbols that are lowercased.
7401
 
7402
Fixed a problem where identifiers within procedure headers and
7403
within quotes were not fully lower cased (they were left with a
7404
starting capital.)
7405
 
7406
Some C macros whose only purpose is to allow the generation of 16-
7407
bit code are now completely removed in the Linux code, increasing
7408
readability and maintainability.
7409
 
7410
----------------------------------------
7411
 
7412
12 December 2002.  Summary of changes for version 20021212.
7413
 
7414
 
7415
1) ACPI CA Core Subsystem:
7416
 
7417
Fixed a problem where the creation of a zero-length AML Buffer
7418
would cause a fault.
7419
 
7420
Fixed a problem where a Buffer object that pointed to a static AML
7421
buffer (in an ACPI table) could inadvertently be deleted, causing
7422
memory corruption.
7423
 
7424
Fixed a problem where a user buffer (passed in to the external
7425
ACPI CA interfaces) could be overwritten if the buffer was too
7426
small to complete the operation, causing memory corruption.
7427
 
7428
Fixed a problem in the Buffer-to-String conversion code where a
7429
string of length one was always returned, regardless of the size
7430
of the input Buffer object.
7431
 
7432
Removed the NATIVE_CHAR data type across the entire source due to
7433
lack of need and lack of consistent use.
7434
 
7435
Code and Data Size: Current core subsystem library sizes are shown
7436
below.  These are the code and data sizes for the acpica.lib
7437
produced by the Microsoft Visual C++ 6.0 compiler, and these
7438
values do not include any ACPI driver or OSPM code.  The debug
7439
version of the code includes the debug output trace mechanism and
7440
has a much larger code and data size.  Note that these values will
7441
vary depending on the efficiency of the compiler and the compiler
7442
options used during generation.
7443
 
7444
  Previous Release
7445
    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
7446
    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
7447
  Current Release:
7448
    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
7449
    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
7450
 
7451
 
7452
----------------------------------------
7453
05 December 2002.  Summary of changes for version 20021205.
7454
 
7455
1) ACPI CA Core Subsystem:
7456
 
7457
Fixed a problem where a store to a String or Buffer object could
7458
cause corruption of the DSDT if the object type being stored was
7459
the same as the target object type and the length of the object
7460
being stored was equal to or smaller than the original (existing)
7461
target object.  This was seen to cause corruption of battery _BIF
7462
buffers if the _BIF method modified the buffer on the fly.
7463
 
7464
Fixed a problem where an internal error was generated if a control
7465
method invocation was used in an OperationRegion, Buffer, or
7466
Package declaration.  This was caused by the deferred parsing of
7467
the control method and thus the deferred creation of the internal
7468
method object.  The solution to this problem was to create the
7469
internal method object at the moment the method is encountered in
7470
the first pass - so that subsequent references to the method will
7471
able to obtain the required parameter count and thus properly
7472
parse the method invocation.  This problem presented itself as an
7473
AE_AML_INTERNAL during the pass 1 parse phase during table load.
7474
 
7475
Fixed a problem where the internal String object copy routine did
7476
not always allocate sufficient memory for the target String object
7477
and caused memory corruption.  This problem was seen to cause
7478
"Allocation already present in list!" errors as memory allocation
7479
became corrupted.
7480
 
7481
Implemented a new function for the evaluation of namespace objects
7482
that allows the specification of the allowable return object
7483
types.  This simplifies a lot of code that checks for a return
7484
object of one or more specific objects returned from the
7485
evaluation (such as _STA, etc.)  This may become and external
7486
function if it would be useful to ACPI-related drivers.
7487
 
7488
Completed another round of prefixing #defines with "ACPI_" for
7489
clarity.
7490
 
7491
Completed additional code restructuring to allow more modular
7492
linking for iASL compiler and AcpiExec.  Several files were split
7493
creating new files.  New files:  nsparse.c dsinit.c evgpe.c
7494
 
7495
Implemented an abort mechanism to terminate an executing control
7496
method via the AML debugger.  This feature is useful for debugging
7497
control methods that depend (wait) for specific hardware
7498
responses.
7499
 
7500
Code and Data Size: Current core subsystem library sizes are shown
7501
below.  These are the code and data sizes for the acpica.lib
7502
produced by the Microsoft Visual C++ 6.0 compiler, and these
7503
values do not include any ACPI driver or OSPM code.  The debug
7504
version of the code includes the debug output trace mechanism and
7505
has a much larger code and data size.  Note that these values will
7506
vary depending on the efficiency of the compiler and the compiler
7507
options used during generation.
7508
 
7509
  Previous Release
7510
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7511
    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
7512
  Current Release:
7513
    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
7514
    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
7515
 
7516
 
7517
2) iASL Compiler/Disassembler
7518
 
7519
Fixed a compiler code generation problem for "Interrupt" Resource
7520
Descriptors.  If specified in the ASL, the optional "Resource
7521
Source Index" and "Resource Source" fields were not inserted into
7522
the correct location within the AML resource descriptor, creating
7523
an invalid descriptor.
7524
 
7525
Fixed a disassembler problem for "Interrupt" resource descriptors.
7526
The optional "Resource Source Index" and "Resource Source" fields
7527
were ignored.
7528
 
7529
 
7530
----------------------------------------
7531
22 November 2002.  Summary of changes for version 20021122.
7532
 
7533
 
7534
1) ACPI CA Core Subsystem:
7535
 
7536
Fixed a reported problem where an object stored to a Method Local
7537
or Arg was not copied to a new object during the store - the
7538
object pointer was simply copied to the Local/Arg.  This caused
7539
all subsequent operations on the Local/Arg to also affect the
7540
original source of the store operation.
7541
 
7542
Fixed a problem where a store operation to a Method Local or Arg
7543
was not completed properly if the Local/Arg contained a reference
7544
(from RefOf) to a named field.  The general-purpose store-to-
7545
namespace-node code is now used so that this case is handled
7546
automatically.
7547
 
7548
Fixed a problem where the internal object copy routine would cause
7549
a protection fault if the object being copied was a Package and
7550
contained either 1) a NULL package element or 2) a nested sub-
7551
package.
7552
 
7553
Fixed a problem with the GPE initialization that resulted from an
7554
ambiguity in the ACPI specification.  One section of the
7555
specification states that both the address and length of the GPE
7556
block must be zero if the block is not supported.  Another section
7557
implies that only the address need be zero if the block is not
7558
supported.  The code has been changed so that both the address and
7559
the length must be non-zero to indicate a valid GPE block (i.e.,
7560
if either the address or the length is zero, the GPE block is
7561
invalid.)
7562
 
7563
Code and Data Size: Current core subsystem library sizes are shown
7564
below.  These are the code and data sizes for the acpica.lib
7565
produced by the Microsoft Visual C++ 6.0 compiler, and these
7566
values do not include any ACPI driver or OSPM code.  The debug
7567
version of the code includes the debug output trace mechanism and
7568
has a much larger code and data size.  Note that these values will
7569
vary depending on the efficiency of the compiler and the compiler
7570
options used during generation.
7571
 
7572
  Previous Release
7573
    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
7574
    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
7575
  Current Release:
7576
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7577
    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
7578
 
7579
 
7580
2) Linux
7581
 
7582
Cleaned up EC driver. Exported an external EC read/write
7583
interface. By going through this, other drivers (most notably
7584
sonypi) will be able to serialize access to the EC.
7585
 
7586
 
7587
3) iASL Compiler/Disassembler
7588
 
7589
Implemented support to optionally generate include files for both
7590
ASM and C (the -i switch).  This simplifies BIOS development by
7591
automatically creating include files that contain external
7592
declarations for the symbols that are created within the
7593
 
7594
(optionally generated) ASM and C AML source files.
7595
 
7596
 
7597
----------------------------------------
7598
15 November 2002.  Summary of changes for version 20021115.
7599
 
7600
1) ACPI CA Core Subsystem:
7601
 
7602
Fixed a memory leak problem where an error during resolution of
7603
 
7604
method arguments during a method invocation from another method
7605
failed to cleanup properly by deleting all successfully resolved
7606
argument objects.
7607
 
7608
Fixed a problem where the target of the Index() operator was not
7609
correctly constructed if the source object was a package.  This
7610
problem has not been detected because the use of a target operand
7611
with Index() is very rare.
7612
 
7613
Fixed a problem with the Index() operator where an attempt was
7614
made to delete the operand objects twice.
7615
 
7616
Fixed a problem where an attempt was made to delete an operand
7617
twice during execution of the CondRefOf() operator if the target
7618
did not exist.
7619
 
7620
Implemented the first of perhaps several internal create object
7621
functions that create and initialize a specific object type.  This
7622
consolidates duplicated code wherever the object is created, thus
7623
shrinking the size of the subsystem.
7624
 
7625
Implemented improved debug/error messages for errors that occur
7626
during nested method invocations.  All executing method pathnames
7627
are displayed (with the error) as the call stack is unwound - thus
7628
simplifying debug.
7629
 
7630
Fixed a problem introduced in the 10/02 release that caused
7631
premature deletion of a buffer object if a buffer was used as an
7632
ASL operand where an integer operand is required (Thus causing an
7633
implicit object conversion from Buffer to Integer.)  The change in
7634
the 10/02 release was attempting to fix a memory leak (albeit
7635
incorrectly.)
7636
 
7637
Code and Data Size: Current core subsystem library sizes are shown
7638
below.  These are the code and data sizes for the acpica.lib
7639
produced by the Microsoft Visual C++ 6.0 compiler, and these
7640
values do not include any ACPI driver or OSPM code.  The debug
7641
version of the code includes the debug output trace mechanism and
7642
has a much larger code and data size.  Note that these values will
7643
vary depending on the efficiency of the compiler and the compiler
7644
options used during generation.
7645
 
7646
  Previous Release
7647
    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
7648
    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
7649
  Current Release:
7650
    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
7651
    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
7652
 
7653
 
7654
2) Linux
7655
 
7656
Changed the implementation of the ACPI semaphores to use down()
7657
instead of down_interruptable().  It is important that the
7658
execution of ACPI control methods not be interrupted by signals.
7659
Methods must run to completion, or the system may be left in an
7660
unknown/unstable state.
7661
 
7662
Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
7663
(Shawn Starr)
7664
 
7665
 
7666
3) iASL Compiler/Disassembler
7667
 
7668
 
7669
Changed the default location of output files.  All output files
7670
are now placed in the current directory by default instead of in
7671
the directory of the source file.  This change may affect some
7672
existing makefiles, but it brings the behavior of the compiler in
7673
line with other similar tools.  The location of the output files
7674
can be overridden with the -p command line switch.
7675
 
7676
 
7677
----------------------------------------
7678
11 November 2002.  Summary of changes for version 20021111.
7679
 
7680
 
7681
0) ACPI Specification 2.0B is released and is now available at:
7682
http://www.acpi.info/index.html
7683
 
7684
 
7685
1) ACPI CA Core Subsystem:
7686
 
7687
Implemented support for the ACPI 2.0 SMBus Operation Regions.
7688
This includes the early detection and handoff of the request to
7689
the SMBus region handler (avoiding all of the complex field
7690
support code), and support for the bidirectional return packet
7691
from an SMBus write operation.  This paves the way for the
7692
development of SMBus drivers in each host operating system.
7693
 
7694
Fixed a problem where the semaphore WAIT_FOREVER constant was
7695
defined as 32 bits, but must be 16 bits according to the ACPI
7696
specification.  This had the side effect of causing ASL
7697
Mutex/Event timeouts even though the ASL code requested a wait
7698
forever.  Changed all internal references to the ACPI timeout
7699
parameter to 16 bits to prevent future problems.  Changed the name
7700
of WAIT_FOREVER to ACPI_WAIT_FOREVER.
7701
 
7702
Code and Data Size: Current core subsystem library sizes are shown
7703
below.  These are the code and data sizes for the acpica.lib
7704
produced by the Microsoft Visual C++ 6.0 compiler, and these
7705
values do not include any ACPI driver or OSPM code.  The debug
7706
version of the code includes the debug output trace mechanism and
7707
has a much larger code and data size.  Note that these values will
7708
vary depending on the efficiency of the compiler and the compiler
7709
options used during generation.
7710
 
7711
  Previous Release
7712
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7713
    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
7714
  Current Release:
7715
    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
7716
    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
7717
 
7718
 
7719
2) Linux
7720
 
7721
Module loading/unloading fixes (John Cagle)
7722
 
7723
 
7724
3) iASL Compiler/Disassembler
7725
 
7726
Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
7727
 
7728
Implemented support for the disassembly of all SMBus protocol
7729
keywords (SMBQuick, SMBWord, etc.)
7730
 
7731
----------------------------------------
7732
01 November 2002.  Summary of changes for version 20021101.
7733
 
7734
 
7735
1) ACPI CA Core Subsystem:
7736
 
7737
Fixed a problem where platforms that have a GPE1 block but no GPE0
7738
block were not handled correctly.  This resulted in a "GPE
7739
overlap" error message.  GPE0 is no longer required.
7740
 
7741
Removed code added in the previous release that inserted nodes
7742
into the namespace in alphabetical order.  This caused some side-
7743
effects on various machines.  The root cause of the problem is
7744
still under investigation since in theory, the internal ordering
7745
of the namespace nodes should not matter.
7746
 
7747
 
7748
Enhanced error reporting for the case where a named object is not
7749
found during control method execution.  The full ACPI namepath
7750
(name reference) of the object that was not found is displayed in
7751
this case.
7752
 
7753
Note: as a result of the overhaul of the namespace object types in
7754
the previous release, the namespace nodes for the predefined
7755
scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
7756
instead of ACPI_TYPE_ANY.  This simplifies the namespace
7757
management code but may affect code that walks the namespace tree
7758
looking for specific object types.
7759
 
7760
Code and Data Size: Current core subsystem library sizes are shown
7761
below.  These are the code and data sizes for the acpica.lib
7762
produced by the Microsoft Visual C++ 6.0 compiler, and these
7763
values do not include any ACPI driver or OSPM code.  The debug
7764
version of the code includes the debug output trace mechanism and
7765
has a much larger code and data size.  Note that these values will
7766
vary depending on the efficiency of the compiler and the compiler
7767
options used during generation.
7768
 
7769
  Previous Release
7770
    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
7771
    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
7772
  Current Release:
7773
    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
7774
    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
7775
 
7776
 
7777
2) Linux
7778
 
7779
Fixed a problem introduced in the previous release where the
7780
Processor and Thermal objects were not recognized and installed in
7781
/proc.  This was related to the scope type change described above.
7782
 
7783
 
7784
3) iASL Compiler/Disassembler
7785
 
7786
Implemented the -g option to get all of the required ACPI tables
7787
from the registry and save them to files (Windows version of the
7788
compiler only.)  The required tables are the FADT, FACS, and DSDT.
7789
 
7790
Added ACPI table checksum validation during table disassembly in
7791
order to catch corrupted tables.
7792
 
7793
 
7794
----------------------------------------
7795
22 October 2002.  Summary of changes for version 20021022.
7796
 
7797
1) ACPI CA Core Subsystem:
7798
 
7799
Implemented a restriction on the Scope operator that the target
7800
must already exist in the namespace at the time the operator is
7801
encountered (during table load or method execution).  In other
7802
words, forward references are not allowed and Scope() cannot
7803
create a new object. This changes the previous behavior where the
7804
interpreter would create the name if not found.  This new behavior
7805
correctly enables the search-to-root algorithm during namespace
7806
lookup of the target name.  Because of this upsearch, this fixes
7807
the known Compaq _SB_.OKEC problem and makes both the AML
7808
interpreter and iASL compiler compatible with other ACPI
7809
implementations.
7810
 
7811
Completed a major overhaul of the internal ACPI object types for
7812
the ACPI Namespace and the associated operand objects.  Many of
7813
these types had become obsolete with the introduction of the two-
7814
pass namespace load.  This cleanup simplifies the code and makes
7815
the entire namespace load mechanism much clearer and easier to
7816
understand.
7817
 
7818
Improved debug output for tracking scope opening/closing to help
7819
diagnose scoping issues.  The old scope name as well as the new
7820
scope name are displayed.  Also improved error messages for
7821
problems with ASL Mutex objects and error messages for GPE
7822
problems.
7823
 
7824
Cleaned up the namespace dump code, removed obsolete code.
7825
 
7826
All string output (for all namespace/object dumps) now uses the
7827
common ACPI string output procedure which handles escapes properly
7828
and does not emit non-printable characters.
7829
 
7830
Fixed some issues with constants in the 64-bit version of the
7831
local C library (utclib.c)
7832
 
7833
 
7834
2) Linux
7835
 
7836
EC Driver:  No longer attempts to acquire the Global Lock at
7837
interrupt level.
7838
 
7839
 
7840
3) iASL Compiler/Disassembler
7841
 
7842
Implemented ACPI 2.0B grammar change that disallows all Type 1 and
7843
2 opcodes outside of a control method.  This means that the
7844
"executable" operators (versus the "namespace" operators) cannot
7845
be used at the table level; they can only be used within a control
7846
method.
7847
 
7848
Implemented the restriction on the Scope() operator where the
7849
target must already exist in the namespace at the time the
7850
operator is encountered (during ASL compilation). In other words,
7851
forward references are not allowed and Scope() cannot create a new
7852
object.  This makes the iASL compiler compatible with other ACPI
7853
implementations and makes the Scope() implementation adhere to the
7854
ACPI specification.
7855
 
7856
Fixed a problem where namepath optimization for the Alias operator
7857
was optimizing the wrong path (of the two namepaths.)  This caused
7858
a "Missing alias link" error message.
7859
 
7860
Fixed a problem where an "unknown reserved name" warning could be
7861
incorrectly generated for names like "_SB" when the trailing
7862
underscore is not used in the original ASL.
7863
 
7864
Fixed a problem where the reserved name check did not handle
7865
NamePaths with multiple NameSegs correctly.  The first nameseg of
7866
the NamePath was examined instead of the last NameSeg.
7867
 
7868
 
7869
----------------------------------------
7870
 
7871
02 October 2002.  Summary of changes for this release.
7872
 
7873
 
7874
1) ACPI CA Core Subsystem version 20021002:
7875
 
7876
Fixed a problem where a store/copy of a string to an existing
7877
string did not always set the string length properly in the String
7878
object.
7879
 
7880
Fixed a reported problem with the ToString operator where the
7881
behavior was identical to the ToHexString operator instead of just
7882
simply converting a raw buffer to a string data type.
7883
 
7884
Fixed a problem where CopyObject and the other "explicit"
7885
conversion operators were not updating the internal namespace node
7886
type as part of the store operation.
7887
 
7888
Fixed a memory leak during implicit source operand conversion
7889
where the original object was not deleted if it was converted to a
7890
new object of a different type.
7891
 
7892
Enhanced error messages for all problems associated with namespace
7893
lookups.  Common procedure generates and prints the lookup name as
7894
well as the formatted status.
7895
 
7896
Completed implementation of a new design for the Alias support
7897
within the namespace.  The existing design did not handle the case
7898
where a new object was assigned to one of the two names due to the
7899
use of an explicit conversion operator, resulting in the two names
7900
pointing to two different objects.  The new design simply points
7901
the Alias name to the original name node - not to the object.
7902
This results in a level of indirection that must be handled in the
7903
name resolution mechanism.
7904
 
7905
Code and Data Size: Current core subsystem library sizes are shown
7906
below.  These are the code and data sizes for the acpica.lib
7907
produced by the Microsoft Visual C++ 6.0 compiler, and these
7908
values do not include any ACPI driver or OSPM code.  The debug
7909
version of the code includes the debug output trace mechanism and
7910
has a larger code and data size.  Note that these values will vary
7911
depending on the efficiency of the compiler and the compiler
7912
options used during generation.
7913
 
7914
  Previous Release
7915
    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
7916
    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
7917
  Current Release:
7918
    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
7919
    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
7920
 
7921
 
7922
2) Linux
7923
 
7924
Initialize thermal driver's timer before it is used. (Knut
7925
Neumann)
7926
 
7927
Allow handling negative celsius values. (Kochi Takayoshi)
7928
 
7929
Fix thermal management and make trip points. R/W (Pavel Machek)
7930
 
7931
Fix /proc/acpi/sleep. (P. Christeas)
7932
 
7933
IA64 fixes. (David Mosberger)
7934
 
7935
Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
7936
 
7937
Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
7938
Brodowski)
7939
 
7940
 
7941
3) iASL Compiler/Disassembler
7942
 
7943
Clarified some warning/error messages.
7944
 
7945
 
7946
----------------------------------------
7947
18 September 2002.  Summary of changes for this release.
7948
 
7949
 
7950
1) ACPI CA Core Subsystem version 20020918:
7951
 
7952
Fixed a reported problem with reference chaining (via the Index()
7953
and RefOf() operators) in the ObjectType() and SizeOf() operators.
7954
The definition of these operators includes the dereferencing of
7955
all chained references to return information on the base object.
7956
 
7957
Fixed a problem with stores to indexed package elements - the
7958
existing code would not complete the store if an "implicit
7959
conversion" was not performed.  In other words, if the existing
7960
object (package element) was to be replaced completely, the code
7961
didn't handle this case.
7962
 
7963
Relaxed typechecking on the ASL "Scope" operator to allow the
7964
target name to refer to an object of type Integer, String, or
7965
Buffer, in addition to the scoping object types (Device,
7966
predefined Scopes, Processor, PowerResource, and ThermalZone.)
7967
This allows existing AML code that has workarounds for a bug in
7968
Windows to function properly.  A warning is issued, however.  This
7969
affects both the AML interpreter and the iASL compiler. Below is
7970
an example of this type of ASL code:
7971
 
7972
      Name(DEB,0x00)
7973
      Scope(DEB)
7974
      {
7975
 
7976
Fixed some reported problems with 64-bit integer support in the
7977
local implementation of C library functions (clib.c)
7978
 
7979
 
7980
2) Linux
7981
 
7982
Use ACPI fix map region instead of IOAPIC region, since it is
7983
undefined in non-SMP.
7984
 
7985
Ensure that the SCI has the proper polarity and trigger, even on
7986
systems that do not have an interrupt override entry in the MADT.
7987
 
7988
2.5 big driver reorganization (Pat Mochel)
7989
 
7990
Use early table mapping code from acpitable.c (Andi Kleen)
7991
 
7992
New blacklist entries (Andi Kleen)
7993
 
7994
Blacklist improvements. Split blacklist code out into a separate
7995
file. Move checking the blacklist to very early. Previously, we
7996
would use ACPI tables, and then halfway through init, check the
7997
blacklist -- too late. Now, it's early enough to completely fall-
7998
back to non-ACPI.
7999
 
8000
 
8001
3) iASL Compiler/Disassembler version 20020918:
8002
 
8003
Fixed a problem where the typechecking code didn't know that an
8004
alias could point to a method.  In other words, aliases were not
8005
being dereferenced during typechecking.
8006
 
8007
 
8008
----------------------------------------
8009
29 August 2002.  Summary of changes for this release.
8010
 
8011
1) ACPI CA Core Subsystem Version 20020829:
8012
 
8013
If the target of a Scope() operator already exists, it must be an
8014
object type that actually opens a scope -- such as a Device,
8015
Method, Scope, etc.  This is a fatal runtime error.  Similar error
8016
check has been added to the iASL compiler also.
8017
 
8018
Tightened up the namespace load to disallow multiple names in the
8019
same scope.  This previously was allowed if both objects were of
8020
the same type.  (i.e., a lookup was the same as entering a new
8021
name).
8022
 
8023
 
8024
2) Linux
8025
 
8026
Ensure that the ACPI interrupt has the proper trigger and
8027
polarity.
8028
 
8029
local_irq_disable is extraneous. (Matthew Wilcox)
8030
 
8031
Make "acpi=off" actually do what it says, and not use the ACPI
8032
interpreter *or* the tables.
8033
 
8034
Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
8035
Takayoshi)
8036
 
8037
 
8038
3) iASL Compiler/Disassembler  Version 20020829:
8039
 
8040
Implemented namepath optimization for name declarations.  For
8041
example, a declaration like "Method (\_SB_.ABCD)" would get
8042
optimized to "Method (ABCD)" if the declaration is within the
8043
\_SB_ scope.  This optimization is in addition to the named
8044
reference path optimization first released in the previous
8045
version. This would seem to complete all possible optimizations
8046
for namepaths within the ASL/AML.
8047
 
8048
If the target of a Scope() operator already exists, it must be an
8049
object type that actually opens a scope -- such as a Device,
8050
Method, Scope, etc.
8051
 
8052
Implemented a check and warning for unreachable code in the same
8053
block below a Return() statement.
8054
 
8055
Fixed a problem where the listing file was not generated if the
8056
compiler aborted if the maximum error count was exceeded (200).
8057
 
8058
Fixed a problem where the typechecking of method return values was
8059
broken.  This includes the check for a return value when the
8060
method is invoked as a TermArg (a return value is expected.)
8061
 
8062
Fixed a reported problem where EOF conditions during a quoted
8063
string or comment caused a fault.
8064
 
8065
 
8066
----------------------------------------
8067
15 August 2002.  Summary of changes for this release.
8068
 
8069
1) ACPI CA Core Subsystem Version 20020815:
8070
 
8071
Fixed a reported problem where a Store to a method argument that
8072
contains a reference did not perform the indirect store correctly.
8073
This problem was created during the conversion to the new
8074
reference object model - the indirect store to a method argument
8075
code was not updated to reflect the new model.
8076
 
8077
Reworked the ACPI mode change code to better conform to ACPI 2.0,
8078
handle corner cases, and improve code legibility (Kochi Takayoshi)
8079
 
8080
Fixed a problem with the pathname parsing for the carat (^)
8081
prefix.  The heavy use of the carat operator by the new namepath
8082
optimization in the iASL compiler uncovered a problem with the AML
8083
interpreter handling of this prefix.  In the case where one or
8084
more carats precede a single nameseg, the nameseg was treated as
8085
standalone and the search rule (to root) was inadvertently
8086
applied.  This could cause both the iASL compiler and the
8087
interpreter to find the wrong object or to miss the error that
8088
should occur if the object does not exist at that exact pathname.
8089
 
8090
Found and fixed the problem where the HP Pavilion DSDT would not
8091
load.  This was a relatively minor tweak to the table loading code
8092
(a problem caused by the unexpected encounter with a method
8093
invocation not within a control method), but it does not solve the
8094
overall issue of the execution of AML code at the table level.
8095
This investigation is still ongoing.
8096
 
8097
Code and Data Size: Current core subsystem library sizes are shown
8098
below.  These are the code and data sizes for the acpica.lib
8099
produced by the Microsoft Visual C++ 6.0 compiler, and these
8100
values do not include any ACPI driver or OSPM code.  The debug
8101
version of the code includes the debug output trace mechanism and
8102
has a larger code and data size.  Note that these values will vary
8103
depending on the efficiency of the compiler and the compiler
8104
options used during generation.
8105
 
8106
  Previous Release
8107
    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
8108
    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
8109
  Current Release:
8110
    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
8111
    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
8112
 
8113
 
8114
2) Linux
8115
 
8116
Remove redundant slab.h include (Brad Hards)
8117
 
8118
Fix several bugs in thermal.c (Herbert Nachtnebel)
8119
 
8120
Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
8121
 
8122
Change acpi_system_suspend to use updated irq functions (Pavel
8123
Machek)
8124
 
8125
Export acpi_get_firmware_table (Matthew Wilcox)
8126
 
8127
Use proper root proc entry for ACPI (Kochi Takayoshi)
8128
 
8129
Fix early-boot table parsing (Bjorn Helgaas)
8130
 
8131
 
8132
3) iASL Compiler/Disassembler
8133
 
8134
Reworked the compiler options to make them more consistent and to
8135
use two-letter options where appropriate.  We were running out of
8136
sensible letters.   This may break some makefiles, so check the
8137
current options list by invoking the compiler with no parameters.
8138
 
8139
Completed the design and implementation of the ASL namepath
8140
optimization option for the compiler.  This option optimizes all
8141
references to named objects to the shortest possible path.  The
8142
first attempt tries to utilize a single nameseg (4 characters) and
8143
the "search-to-root" algorithm used by the interpreter.  If that
8144
cannot be used (because either the name is not in the search path
8145
or there is a conflict with another object with the same name),
8146
the pathname is optimized using the carat prefix (usually a
8147
shorter string than specifying the entire path from the root.)
8148
 
8149
Implemented support to obtain the DSDT from the Windows registry
8150
(when the disassembly option is specified with no input file).
8151
Added this code as the implementation for AcpiOsTableOverride in
8152
the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
8153
utility) to scan memory for the DSDT to the AcpiOsTableOverride
8154
function in the DOS OSL to make the disassembler truly OS
8155
independent.
8156
 
8157
Implemented a new option to disassemble and compile in one step.
8158
When used without an input filename, this option will grab the
8159
DSDT from the local machine, disassemble it, and compile it in one
8160
step.
8161
 
8162
Added a warning message for invalid escapes (a backslash followed
8163
by any character other than the allowable escapes).  This catches
8164
the quoted string error "\_SB_" (which should be "\\_SB_" ).
8165
 
8166
Also, there are numerous instances in the ACPI specification where
8167
this error occurs.
8168
 
8169
Added a compiler option to disable all optimizations.  This is
8170
basically the "compatibility mode" because by using this option,
8171
the AML code will come out exactly the same as other ASL
8172
compilers.
8173
 
8174
Added error messages for incorrectly ordered dependent resource
8175
functions.  This includes: missing EndDependentFn macro at end of
8176
dependent resource list, nested dependent function macros (both
8177
start and end), and missing StartDependentFn macro.  These are
8178
common errors that should be caught at compile time.
8179
 
8180
Implemented _OSI support for the disassembler and compiler.  _OSI
8181
must be included in the namespace for proper disassembly (because
8182
the disassembler must know the number of arguments.)
8183
 
8184
Added an "optimization" message type that is optional (off by
8185
default).  This message is used for all optimizations - including
8186
constant folding, integer optimization, and namepath optimization.
8187
 
8188
----------------------------------------
8189
25 July 2002.  Summary of changes for this release.
8190
 
8191
 
8192
1) ACPI CA Core Subsystem Version 20020725:
8193
 
8194
The AML Disassembler has been enhanced to produce compilable ASL
8195
code and has been integrated into the iASL compiler (see below) as
8196
well as the single-step disassembly for the AML debugger and the
8197
disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
8198
resource templates and macros are fully supported.  The
8199
disassembler has been tested on over 30 different AML files,
8200
producing identical AML when the resulting disassembled ASL file
8201
is recompiled with the same ASL compiler.
8202
 
8203
Modified the Resource Manager to allow zero interrupts and zero
8204
dma channels during the GetCurrentResources call.  This was
8205
causing problems on some platforms.
8206
 
8207
Added the AcpiOsRedirectOutput interface to the OSL to simplify
8208
output redirection for the AcpiOsPrintf and AcpiOsVprintf
8209
interfaces.
8210
 
8211
Code and Data Size: Current core subsystem library sizes are shown
8212
below.  These are the code and data sizes for the acpica.lib
8213
produced by the Microsoft Visual C++ 6.0 compiler, and these
8214
values do not include any ACPI driver or OSPM code.  The debug
8215
version of the code includes the debug output trace mechanism and
8216
has a larger code and data size.  Note that these values will vary
8217
depending on the efficiency of the compiler and the compiler
8218
options used during generation.
8219
 
8220
  Previous Release
8221
    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
8222
    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
8223
  Current Release:
8224
    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
8225
    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
8226
 
8227
 
8228
2) Linux
8229
 
8230
Fixed a panic in the EC driver (Dominik Brodowski)
8231
 
8232
Implemented checksum of the R/XSDT itself during Linux table scan
8233
(Richard Schaal)
8234
 
8235
 
8236
3) iASL compiler
8237
 
8238
The AML disassembler is integrated into the compiler.  The "-d"
8239
option invokes the disassembler  to completely disassemble an
8240
input AML file, producing as output a text ASL file with the
8241
extension ".dsl" (to avoid name collisions with existing .asl
8242
source files.)  A future enhancement will allow the disassembler
8243
to obtain the BIOS DSDT from the registry under Windows.
8244
 
8245
Fixed a problem with the VendorShort and VendorLong resource
8246
descriptors where an invalid AML sequence was created.
8247
 
8248
Implemented a fix for BufferData term in the ASL parser.  It was
8249
inadvertently defined twice, allowing invalid syntax to pass and
8250
causing reduction conflicts.
8251
 
8252
Fixed a problem where the Ones opcode could get converted to a
8253
value of zero if "Ones" was used where a byte, word or dword value
8254
was expected.  The 64-bit value is now truncated to the correct
8255
size with the correct value.
8256
 
8257
 
8258
 
8259
----------------------------------------
8260
02 July 2002.  Summary of changes for this release.
8261
 
8262
 
8263
1) ACPI CA Core Subsystem Version 20020702:
8264
 
8265
The Table Manager code has been restructured to add several new
8266
features.  Tables that are not required by the core subsystem
8267
(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
8268
validated in any way and are returned from AcpiGetFirmwareTable if
8269
requested.  The AcpiOsTableOverride interface is now called for
8270
each table that is loaded by the subsystem in order to allow the
8271
host to override any table it chooses.  Previously, only the DSDT
8272
could be overridden.  Added one new files, tbrsdt.c and
8273
tbgetall.c.
8274
 
8275
Fixed a problem with the conversion of internal package objects to
8276
external objects (when a package is returned from a control
8277
method.)  The return buffer length was set to zero instead of the
8278
proper length of the package object.
8279
 
8280
Fixed a reported problem with the use of the RefOf and DeRefOf
8281
operators when passing reference arguments to control methods.  A
8282
new type of Reference object is used internally for references
8283
produced by the RefOf operator.
8284
 
8285
Added additional error messages in the Resource Manager to explain
8286
AE_BAD_DATA errors when they occur during resource parsing.
8287
 
8288
Split the AcpiEnableSubsystem into two primitives to enable a
8289
finer granularity initialization sequence.  These two calls should
8290
be called in this order: AcpiEnableSubsystem (flags),
8291
AcpiInitializeObjects (flags).  The flags parameter remains the
8292
same.
8293
 
8294
 
8295
2) Linux
8296
 
8297
Updated the ACPI utilities module to understand the new style of
8298
fully resolved package objects that are now returned from the core
8299
subsystem.  This eliminates errors of the form:
8300
 
8301
    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
8302
    acpi_utils-0430 [145] acpi_evaluate_reference:
8303
        Invalid element in package (not a device reference)
8304
 
8305
The method evaluation utility uses the new buffer allocation
8306
scheme instead of calling AcpiEvaluate Object twice.
8307
 
8308
Added support for ECDT. This allows the use of the Embedded
8309
 
8310
Controller before the namespace has been fully initialized, which
8311
is necessary for ACPI 2.0 support, and for some laptops to
8312
initialize properly. (Laptops using ECDT are still rare, so only
8313
limited testing was performed of the added functionality.)
8314
 
8315
Fixed memory leaks in the EC driver.
8316
 
8317
Eliminated a brittle code structure in acpi_bus_init().
8318
 
8319
Eliminated the acpi_evaluate() helper function in utils.c. It is
8320
no longer needed since acpi_evaluate_object can optionally
8321
allocate memory for the return object.
8322
 
8323
Implemented fix for keyboard hang when getting battery readings on
8324
some systems (Stephen White)
8325
 
8326
PCI IRQ routing update (Dominik Brodowski)
8327
 
8328
Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
8329
support
8330
 
8331
----------------------------------------
8332
11 June 2002.  Summary of changes for this release.
8333
 
8334
 
8335
1) ACPI CA Core Subsystem Version 20020611:
8336
 
8337
Fixed a reported problem where constants such as Zero and One
8338
appearing within _PRT packages were not handled correctly within
8339
the resource manager code.  Originally reported against the ASL
8340
compiler because the code generator now optimizes integers to
8341
their minimal AML representation (i.e. AML constants if possible.)
8342
The _PRT code now handles all AML constant opcodes correctly
8343
(Zero, One, Ones, Revision).
8344
 
8345
Fixed a problem with the Concatenate operator in the AML
8346
interpreter where a buffer result object was incorrectly marked as
8347
not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
8348
 
8349
All package sub-objects are now fully resolved before they are
8350
returned from the external ACPI interfaces.  This means that name
8351
strings are resolved to object handles, and constant operators
8352
(Zero, One, Ones, Revision) are resolved to Integers.
8353
 
8354
Implemented immediate resolution of the AML Constant opcodes
8355
(Zero, One, Ones, Revision) to Integer objects upon detection
8356
within the AML stream. This has simplified and reduced the
8357
generated code size of the subsystem by eliminating about 10
8358
switch statements for these constants (which previously were
8359
contained in Reference objects.)  The complicating issues are that
8360
the Zero opcode is used as a "placeholder" for unspecified
8361
optional target operands and stores to constants are defined to be
8362
no-ops.
8363
 
8364
Code and Data Size: Current core subsystem library sizes are shown
8365
below. These are the code and data sizes for the acpica.lib
8366
produced by the Microsoft Visual C++ 6.0 compiler, and these
8367
values do not include any ACPI driver or OSPM code.  The debug
8368
version of the code includes the debug output trace mechanism and
8369
has a larger code and data size.  Note that these values will vary
8370
depending on the efficiency of the compiler and the compiler
8371
options used during generation.
8372
 
8373
  Previous Release
8374
    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
8375
    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
8376
  Current Release:
8377
    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
8378
    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
8379
 
8380
 
8381
2) Linux
8382
 
8383
 
8384
Added preliminary support for obtaining _TRA data for PCI root
8385
bridges (Bjorn Helgaas).
8386
 
8387
 
8388
3) iASL Compiler Version X2046:
8389
 
8390
Fixed a problem where the "_DDN" reserved name was defined to be a
8391
control method with one argument.  There are no arguments, and
8392
_DDN does not have to be a control method.
8393
 
8394
Fixed a problem with the Linux version of the compiler where the
8395
source lines printed with error messages were the wrong lines.
8396
This turned out to be the "LF versus CR/LF" difference between
8397
Windows and Unix.  This appears to be the longstanding issue
8398
concerning listing output and error messages.
8399
 
8400
Fixed a problem with the Linux version of compiler where opcode
8401
names within error messages were wrong.  This was caused by a
8402
slight difference in the output of the Flex tool on Linux versus
8403
Windows.
8404
 
8405
Fixed a problem with the Linux compiler where the hex output files
8406
contained some garbage data caused by an internal buffer overrun.
8407
 
8408
 
8409
----------------------------------------
8410
17 May 2002.  Summary of changes for this release.
8411
 
8412
 
8413
1) ACPI CA Core Subsystem Version 20020517:
8414
 
8415
Implemented a workaround to an BIOS bug discovered on the HP
8416
OmniBook where the FADT revision number and the table size are
8417
inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
8418
behavior is to fallback to using only the ACPI 1.0 fields of the
8419
FADT if the table is too small to be a ACPI 2.0 table as claimed
8420
by the revision number.  Although this is a BIOS bug, this is a
8421
case where the workaround is simple enough and with no side
8422
effects, so it seemed prudent to add it.  A warning message is
8423
issued, however.
8424
 
8425
Implemented minimum size checks for the fixed-length ACPI tables -
8426
- the FADT and FACS, as well as consistency checks between the
8427
revision number and the table size.
8428
 
8429
Fixed a reported problem in the table override support where the
8430
new table pointer was incorrectly treated as a physical address
8431
instead of a logical address.
8432
 
8433
Eliminated the use of the AE_AML_ERROR exception and replaced it
8434
with more descriptive codes.
8435
 
8436
Fixed a problem where an exception would occur if an ASL Field was
8437
defined with no named Field Units underneath it (used by some
8438
index fields).
8439
 
8440
Code and Data Size: Current core subsystem library sizes are shown
8441
below.  These are the code and data sizes for the acpica.lib
8442
produced by the Microsoft Visual C++ 6.0 compiler, and these
8443
values do not include any ACPI driver or OSPM code.  The debug
8444
version of the code includes the debug output trace mechanism and
8445
has a larger code and data size.  Note that these values will vary
8446
depending on the efficiency of the compiler and the compiler
8447
options used during generation.
8448
 
8449
  Previous Release
8450
    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
8451
    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
8452
  Current Release:
8453
    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
8454
    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
8455
 
8456
 
8457
 
8458
2) Linux
8459
 
8460
Much work done on ACPI init (MADT and PCI IRQ routing support).
8461
(Paul D. and Dominik Brodowski)
8462
 
8463
Fix PCI IRQ-related panic on boot (Sam Revitch)
8464
 
8465
Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
8466
 
8467
Fix "MHz" typo (Dominik Brodowski)
8468
 
8469
Fix RTC year 2000 issue (Dominik Brodowski)
8470
 
8471
Preclude multiple button proc entries (Eric Brunet)
8472
 
8473
Moved arch-specific code out of include/platform/aclinux.h
8474
 
8475
3) iASL Compiler Version X2044:
8476
 
8477
Implemented error checking for the string used in the EISAID macro
8478
(Usually used in the definition of the _HID object.)  The code now
8479
strictly enforces the PnP format - exactly 7 characters, 3
8480
uppercase letters and 4 hex digits.
8481
 
8482
If a raw string is used in the definition of the _HID object
8483
(instead of the EISAID macro), the string must contain all
8484
alphanumeric characters (e.g., "*PNP0011" is not allowed because
8485
of the asterisk.)
8486
 
8487
Implemented checking for invalid use of ACPI reserved names for
8488
most of the name creation operators (Name, Device, Event, Mutex,
8489
OperationRegion, PowerResource, Processor, and ThermalZone.)
8490
Previously, this check was only performed for control methods.
8491
 
8492
Implemented an additional check on the Name operator to emit an
8493
error if a reserved name that must be implemented in ASL as a
8494
control method is used.  We know that a reserved name must be a
8495
method if it is defined with input arguments.
8496
 
8497
The warning emitted when a namespace object reference is not found
8498
during the cross reference phase has been changed into an error.
8499
The "External" directive should be used for names defined in other
8500
modules.
8501
 
8502
 
8503
4) Tools and Utilities
8504
 
8505
The 16-bit tools (adump16 and aexec16) have been regenerated and
8506
tested.
8507
 
8508
Fixed a problem with the output of both acpidump and adump16 where
8509
the indentation of closing parentheses and brackets was not
8510
 
8511
aligned properly with the parent block.
8512
 
8513
 
8514
----------------------------------------
8515
03 May 2002.  Summary of changes for this release.
8516
 
8517
 
8518
1) ACPI CA Core Subsystem Version 20020503:
8519
 
8520
Added support a new OSL interface that allows the host operating
8521
 
8522
system software to override the DSDT found in the firmware -
8523
AcpiOsTableOverride.  With this interface, the OSL can examine the
8524
version of the firmware DSDT and replace it with a different one
8525
if desired.
8526
 
8527
Added new external interfaces for accessing ACPI registers from
8528
device drivers and other system software - AcpiGetRegister and
8529
AcpiSetRegister.  This was simply an externalization of the
8530
existing AcpiHwBitRegister interfaces.
8531
 
8532
Fixed a regression introduced in the previous build where the
8533
ASL/AML CreateField operator always returned an error,
8534
"destination must be a NS Node".
8535
 
8536
Extended the maximum time (before failure) to successfully enable
8537
ACPI mode to 3 seconds.
8538
 
8539
Code and Data Size: Current core subsystem library sizes are shown
8540
below.  These are the code and data sizes for the acpica.lib
8541
produced by the Microsoft Visual C++ 6.0 compiler, and these
8542
values do not include any ACPI driver or OSPM code.  The debug
8543
version of the code includes the debug output trace mechanism and
8544
has a larger code and data size.  Note that these values will vary
8545
depending on the efficiency of the compiler and the compiler
8546
options used during generation.
8547
 
8548
  Previous Release
8549
    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
8550
    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
8551
  Current Release:
8552
    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
8553
    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
8554
 
8555
 
8556
2) Linux
8557
 
8558
Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
8559
free. While 3 out of 4 of our in-house systems work fine, the last
8560
one still hangs when testing the LAPIC timer.
8561
 
8562
Renamed many files in 2.5 kernel release to omit "acpi_" from the
8563
name.
8564
 
8565
Added warning on boot for Presario 711FR.
8566
 
8567
Sleep improvements (Pavel Machek)
8568
 
8569
ACPI can now be built without CONFIG_PCI enabled.
8570
 
8571
IA64: Fixed memory map functions (JI Lee)
8572
 
8573
 
8574
3) iASL Compiler Version X2043:
8575
 
8576
Added support to allow the compiler to be integrated into the MS
8577
VC++ development environment for one-button compilation of single
8578
files or entire projects -- with error-to-source-line mapping.
8579
 
8580
Implemented support for compile-time constant folding for the
8581
Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
8582
specification.  This allows the ASL writer to use expressions
8583
instead of Integer/Buffer/String constants in terms that must
8584
evaluate to constants at compile time and will also simplify the
8585
emitted AML in any such sub-expressions that can be folded
8586
(evaluated at compile-time.)  This increases the size of the
8587
compiler significantly because a portion of the ACPI CA AML
8588
interpreter is included within the compiler in order to pre-
8589
evaluate constant expressions.
8590
 
8591
 
8592
Fixed a problem with the "Unicode" ASL macro that caused the
8593
compiler to fault.  (This macro is used in conjunction with the
8594
_STR reserved name.)
8595
 
8596
Implemented an AML opcode optimization to use the Zero, One, and
8597
Ones opcodes where possible to further reduce the size of integer
8598
constants and thus reduce the overall size of the generated AML
8599
code.
8600
 
8601
Implemented error checking for new reserved terms for ACPI version
8602
2.0A.
8603
 
8604
Implemented the -qr option to display the current list of ACPI
8605
reserved names known to the compiler.
8606
 
8607
Implemented the -qc option to display the current list of ASL
8608
operators that are allowed within constant expressions and can
8609
therefore be folded at compile time if the operands are constants.
8610
 
8611
 
8612
4) Documentation
8613
 
8614
Updated the Programmer's Reference for new interfaces, data types,
8615
and memory allocation model options.
8616
 
8617
Updated the iASL Compiler User Reference to apply new format and
8618
add information about new features and options.
8619
 
8620
----------------------------------------
8621
19 April 2002.  Summary of changes for this release.
8622
 
8623
1) ACPI CA Core Subsystem Version 20020419:
8624
 
8625
The source code base for the Core Subsystem has been completely
8626
cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
8627
versions.  The Lint option files used are included in the
8628
/acpi/generate/lint directory.
8629
 
8630
Implemented enhanced status/error checking across the entire
8631
Hardware manager subsystem.  Any hardware errors (reported from
8632
the OSL) are now bubbled up and will abort a running control
8633
method.
8634
 
8635
 
8636
Fixed a problem where the per-ACPI-table integer width (32 or 64)
8637
was stored only with control method nodes, causing a fault when
8638
non-control method code was executed during table loading.  The
8639
solution implemented uses a global variable to indicate table
8640
width across the entire ACPI subsystem.  Therefore, ACPI CA does
8641
not support mixed integer widths across different ACPI tables
8642
(DSDT, SSDT).
8643
 
8644
Fixed a problem where NULL extended fields (X fields) in an ACPI
8645
2.0 ACPI FADT caused the table load to fail.  Although the
8646
existing ACPI specification is a bit fuzzy on this topic, the new
8647
behavior is to fall back on a ACPI 1.0 field if the corresponding
8648
ACPI 2.0 X field is zero (even though the table revision indicates
8649
a full ACPI 2.0 table.)  The ACPI specification will be updated to
8650
clarify this issue.
8651
 
8652
Fixed a problem with the SystemMemory operation region handler
8653
where memory was always accessed byte-wise even if the AML-
8654
specified access width was larger than a byte.  This caused
8655
problems on systems with memory-mapped I/O.  Memory is now
8656
accessed with the width specified.  On systems that do not support
8657
non-aligned transfers, a check is made to guarantee proper address
8658
alignment before proceeding in order to avoid an AML-caused
8659
alignment fault within the kernel.
8660
 
8661
 
8662
Fixed a problem with the ExtendedIrq resource where only one byte
8663
of the 4-byte Irq field was extracted.
8664
 
8665
Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
8666
function was out of date and required a rewrite.
8667
 
8668
Code and Data Size: Current core subsystem library sizes are shown
8669
below.  These are the code and data sizes for the acpica.lib
8670
produced by the Microsoft Visual C++ 6.0 compiler, and these
8671
values do not include any ACPI driver or OSPM code.  The debug
8672
version of the code includes the debug output trace mechanism and
8673
has a larger code and data size.  Note that these values will vary
8674
depending on the efficiency of the compiler and the compiler
8675
options used during generation.
8676
 
8677
  Previous Release
8678
    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
8679
    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
8680
  Current Release:
8681
    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
8682
    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
8683
 
8684
 
8685
2) Linux
8686
 
8687
PCI IRQ routing fixes (Dominik Brodowski)
8688
 
8689
 
8690
3) iASL Compiler Version X2042:
8691
 
8692
Implemented an additional compile-time error check for a field
8693
unit whose size + minimum access width would cause a run-time
8694
access beyond the end-of-region.  Previously, only the field size
8695
itself was checked.
8696
 
8697
The Core subsystem and iASL compiler now share a common parse
8698
object in preparation for compile-time evaluation of the type
8699
3/4/5 ASL operators.
8700
 
8701
 
8702
----------------------------------------
8703
Summary of changes for this release: 03_29_02
8704
 
8705
1) ACPI CA Core Subsystem Version 20020329:
8706
 
8707
Implemented support for late evaluation of TermArg operands to
8708
Buffer and Package objects.  This allows complex expressions to be
8709
used in the declarations of these object types.
8710
 
8711
Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
8712
1.0, if the field was larger than 32 bits, it was returned as a
8713
buffer - otherwise it was returned as an integer.  In ACPI 2.0,
8714
the field is returned as a buffer only if the field is larger than
8715
64 bits.  The TableRevision is now considered when making this
8716
conversion to avoid incompatibility with existing ASL code.
8717
 
8718
Implemented logical addressing for AcpiOsGetRootPointer.  This
8719
allows an RSDP with either a logical or physical address.  With
8720
this support, the host OS can now override all ACPI tables with
8721
one logical RSDP.  Includes implementation of  "typed" pointer
8722
support to allow a common data type for both physical and logical
8723
pointers internally.  This required a change to the
8724
AcpiOsGetRootPointer interface.
8725
 
8726
Implemented the use of ACPI 2.0 Generic Address Structures for all
8727
GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
8728
mapped I/O for these ACPI features.
8729
 
8730
Initialization now ignores not only non-required tables (All
8731
tables other than the FADT, FACS, DSDT, and SSDTs), but also does
8732
not validate the table headers of unrecognized tables.
8733
 
8734
Fixed a problem where a notify handler could only be
8735
installed/removed on an object of type Device.  All "notify"
8736
 
8737
objects are now supported -- Devices, Processor, Power, and
8738
Thermal.
8739
 
8740
Removed most verbosity from the ACPI_DB_INFO debug level.  Only
8741
critical information is returned when this debug level is enabled.
8742
 
8743
Code and Data Size: Current core subsystem library sizes are shown
8744
below.  These are the code and data sizes for the acpica.lib
8745
produced by the Microsoft Visual C++ 6.0 compiler, and these
8746
values do not include any ACPI driver or OSPM code.  The debug
8747
version of the code includes the debug output trace mechanism and
8748
has a larger code and data size.  Note that these values will vary
8749
depending on the efficiency of the compiler and the compiler
8750
options used during generation.
8751
 
8752
  Previous Release
8753
    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
8754
    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
8755
  Current Release:
8756
    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
8757
    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
8758
 
8759
 
8760
2) Linux:
8761
 
8762
The processor driver (acpi_processor.c) now fully supports ACPI
8763
2.0-based processor performance control (e.g. Intel(R)
8764
SpeedStep(TM) technology) Note that older laptops that only have
8765
the Intel "applet" interface are not supported through this.  The
8766
'limit' and 'performance' interface (/proc) are fully functional.
8767
[Note that basic policy for controlling performance state
8768
transitions will be included in the next version of ospmd.]  The
8769
idle handler was modified to more aggressively use C2, and PIIX4
8770
errata handling underwent a complete overhaul (big thanks to
8771
Dominik Brodowski).
8772
 
8773
Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
8774
based devices in the ACPI namespace are now dynamically bound
8775
(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
8776
This allows, among other things, ACPI to resolve bus numbers for
8777
subordinate PCI bridges.
8778
 
8779
Enhanced PCI IRQ routing to get the proper bus number for _PRT
8780
entries defined underneath PCI bridges.
8781
 
8782
Added IBM 600E to bad bios list due to invalid _ADR value for
8783
PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
8784
 
8785
In the process of adding full MADT support (e.g. IOAPIC) for IA32
8786
(acpi.c, mpparse.c) -- stay tuned.
8787
 
8788
Added back visual differentiation between fixed-feature and
8789
control-method buttons in dmesg.  Buttons are also subtyped (e.g.
8790
button/power/PWRF) to simplify button identification.
8791
 
8792
We no longer use -Wno-unused when compiling debug. Please ignore
8793
any "_THIS_MODULE defined but not used" messages.
8794
 
8795
Can now shut down the system using "magic sysrq" key.
8796
 
8797
 
8798
3) iASL Compiler version 2041:
8799
 
8800
Fixed a problem where conversion errors for hex/octal/decimal
8801
constants were not reported.
8802
 
8803
Implemented a fix for the General Register template Address field.
8804
This field was 8 bits when it should be 64.
8805
 
8806
Fixed a problem where errors/warnings were no longer being emitted
8807
within the listing output file.
8808
 
8809
Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
8810
exactly 4 characters, alphanumeric only.
8811
 
8812
 
8813
 
8814
 
8815
----------------------------------------
8816
Summary of changes for this release: 03_08_02
8817
 
8818
 
8819
1) ACPI CA Core Subsystem Version 20020308:
8820
 
8821
Fixed a problem with AML Fields where the use of the "AccessAny"
8822
keyword could cause an interpreter error due to attempting to read
8823
or write beyond the end of the parent Operation Region.
8824
 
8825
Fixed a problem in the SystemMemory Operation Region handler where
8826
an attempt was made to map memory beyond the end of the region.
8827
This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
8828
errors on some Linux systems.
8829
 
8830
Fixed a problem where the interpreter/namespace "search to root"
8831
algorithm was not functioning for some object types.  Relaxed the
8832
internal restriction on the search to allow upsearches for all
8833
external object types as well as most internal types.
8834
 
8835
 
8836
2) Linux:
8837
 
8838
We now use safe_halt() macro versus individual calls to sti | hlt.
8839
 
8840
Writing to the processor limit interface should now work. "echo 1"
8841
will increase the limit, 2 will decrease, and 0 will reset to the
8842
 
8843
default.
8844
 
8845
 
8846
3) ASL compiler:
8847
 
8848
Fixed segfault on Linux version.
8849
 
8850
 
8851
----------------------------------------
8852
Summary of changes for this release: 02_25_02
8853
 
8854
1) ACPI CA Core Subsystem:
8855
 
8856
 
8857
Fixed a problem where the GPE bit masks were not initialized
8858
properly, causing erratic GPE behavior.
8859
 
8860
Implemented limited support for multiple calling conventions.  The
8861
code can be generated with either the VPL (variable parameter
8862
list, or "C") convention, or the FPL (fixed parameter list, or
8863
"Pascal") convention.  The core subsystem is about 3.4% smaller
8864
when generated with FPL.
8865
 
8866
 
8867
2) Linux
8868
 
8869
Re-add some /proc/acpi/event functionality that was lost during
8870
the rewrite
8871
 
8872
Resolved issue with /proc events for fixed-feature buttons showing
8873
up as the system device.
8874
 
8875
Fixed checks on C2/C3 latencies to be inclusive of maximum values.
8876
 
8877
Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
8878
 
8879
Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
8880
 
8881
Fixed limit interface & usage to fix bugs with passive cooling
8882
hysterisis.
8883
 
8884
Restructured PRT support.
8885
 
8886
 
8887
----------------------------------------
8888
Summary of changes for this label: 02_14_02
8889
 
8890
 
8891
1) ACPI CA Core Subsystem:
8892
 
8893
Implemented support in AcpiLoadTable to allow loading of FACS and
8894
FADT tables.
8895
 
8896
Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
8897
been removed.  All 64-bit platforms should be migrated to the ACPI
8898
2.0 tables.  The actbl71.h header has been removed from the source
8899
tree.
8900
 
8901
All C macros defined within the subsystem have been prefixed with
8902
"ACPI_" to avoid collision with other system include files.
8903
 
8904
Removed the return value for the two AcpiOsPrint interfaces, since
8905
it is never used and causes lint warnings for ignoring the return
8906
value.
8907
 
8908
Added error checking to all internal mutex acquire and release
8909
calls.  Although a failure from one of these interfaces is
8910
probably a fatal system error, these checks will cause the
8911
immediate abort of the currently executing method or interface.
8912
 
8913
Fixed a problem where the AcpiSetCurrentResources interface could
8914
fault.  This was a side effect of the deployment of the new memory
8915
allocation model.
8916
 
8917
Fixed a couple of problems with the Global Lock support introduced
8918
in the last major build.  The "common" (1.0/2.0) internal FACS was
8919
being overwritten with the FACS signature and clobbering the
8920
Global Lock pointer.  Also, the actual firmware FACS was being
8921
unmapped after construction of the "common" FACS, preventing
8922
access to the actual Global Lock field within it.  The "common"
8923
internal FACS is no longer installed as an actual ACPI table; it
8924
is used simply as a global.
8925
 
8926
Code and Data Size: Current core subsystem library sizes are shown
8927
below.  These are the code and data sizes for the acpica.lib
8928
produced by the Microsoft Visual C++ 6.0 compiler, and these
8929
values do not include any ACPI driver or OSPM code.  The debug
8930
version of the code includes the debug output trace mechanism and
8931
has a larger code and data size.  Note that these values will vary
8932
depending on the efficiency of the compiler and the compiler
8933
options used during generation.
8934
 
8935
  Previous Release (02_07_01)
8936
    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
8937
    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
8938
  Current Release:
8939
    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
8940
    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
8941
 
8942
 
8943
2) Linux
8944
 
8945
Updated Linux-specific code for core macro and OSL interface
8946
changes described above.
8947
 
8948
Improved /proc/acpi/event. It now can be opened only once and has
8949
proper poll functionality.
8950
 
8951
Fixed and restructured power management (acpi_bus).
8952
 
8953
Only create /proc "view by type" when devices of that class exist.
8954
 
8955
Fixed "charging/discharging" bug (and others) in acpi_battery.
8956
 
8957
Improved thermal zone code.
8958
 
8959
 
8960
3) ASL Compiler, version X2039:
8961
 
8962
 
8963
Implemented the new compiler restriction on ASL String hex/octal
8964
escapes to non-null, ASCII values.  An error results if an invalid
8965
value is used.  (This will require an ACPI 2.0 specification
8966
change.)
8967
 
8968
AML object labels that are output to the optional C and ASM source
8969
are now prefixed with both the ACPI table signature and table ID
8970
to help guarantee uniqueness within a large BIOS project.
8971
 
8972
 
8973
----------------------------------------
8974
Summary of changes for this label: 02_01_02
8975
 
8976
1) ACPI CA Core Subsystem:
8977
 
8978
ACPI 2.0 support is complete in the entire Core Subsystem and the
8979
ASL compiler. All new ACPI 2.0 operators are implemented and all
8980
other changes for ACPI 2.0 support are complete.  With
8981
simultaneous code and data optimizations throughout the subsystem,
8982
ACPI 2.0 support has been implemented with almost no additional
8983
cost in terms of code and data size.
8984
 
8985
Implemented a new mechanism for allocation of return buffers.  If
8986
the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
8987
be allocated on behalf of the caller.  Consolidated all return
8988
buffer validation and allocation to a common procedure.  Return
8989
buffers will be allocated via the primary OSL allocation interface
8990
since it appears that a separate pool is not needed by most users.
8991
If a separate pool is required for these buffers, the caller can
8992
still use the original mechanism and pre-allocate the buffer(s).
8993
 
8994
Implemented support for string operands within the DerefOf
8995
operator.
8996
 
8997
Restructured the Hardware and Event managers to be table driven,
8998
simplifying the source code and reducing the amount of generated
8999
code.
9000
 
9001
Split the common read/write low-level ACPI register bitfield
9002
procedure into a separate read and write, simplifying the code
9003
considerably.
9004
 
9005
Obsoleted the AcpiOsCallocate OSL interface.  This interface was
9006
used only a handful of times and didn't have enough critical mass
9007
for a separate interface.  Replaced with a common calloc procedure
9008
in the core.
9009
 
9010
Fixed a reported problem with the GPE number mapping mechanism
9011
that allows GPE1 numbers to be non-contiguous with GPE0.
9012
Reorganized the GPE information and shrunk a large array that was
9013
originally large enough to hold info for all possible GPEs (256)
9014
to simply large enough to hold all GPEs up to the largest GPE
9015
number on the machine.
9016
 
9017
Fixed a reported problem with resource structure alignment on 64-
9018
bit platforms.
9019
 
9020
Changed the AcpiEnableEvent and AcpiDisableEvent external
9021
interfaces to not require any flags for the common case of
9022
enabling/disabling a GPE.
9023
 
9024
Implemented support to allow a "Notify" on a Processor object.
9025
 
9026
Most TBDs in comments within the source code have been resolved
9027
and eliminated.
9028
 
9029
 
9030
Fixed a problem in the interpreter where a standalone parent
9031
prefix (^) was not handled correctly in the interpreter and
9032
debugger.
9033
 
9034
Removed obsolete and unnecessary GPE save/restore code.
9035
 
9036
Implemented Field support in the ASL Load operator.  This allows a
9037
table to be loaded from a named field, in addition to loading a
9038
table directly from an Operation Region.
9039
 
9040
Implemented timeout and handle support in the external Global Lock
9041
interfaces.
9042
 
9043
Fixed a problem in the AcpiDump utility where pathnames were no
9044
longer being generated correctly during the dump of named objects.
9045
 
9046
Modified the AML debugger to give a full display of if/while
9047
predicates instead of just one AML opcode at a time.  (The
9048
predicate can have several nested ASL statements.)  The old method
9049
was confusing during single stepping.
9050
 
9051
Code and Data Size: Current core subsystem library sizes are shown
9052
below. These are the code and data sizes for the acpica.lib
9053
produced by the Microsoft Visual C++ 6.0 compiler, and these
9054
values do not include any ACPI driver or OSPM code.  The debug
9055
version of the code includes the debug output trace mechanism and
9056
has a larger code and data size.  Note that these values will vary
9057
depending on the efficiency of the compiler and the compiler
9058
options used during generation.
9059
 
9060
  Previous Release (12_18_01)
9061
     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
9062
     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
9063
   Current Release:
9064
     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
9065
     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
9066
 
9067
2) Linux
9068
 
9069
 Implemented fix for PIIX reverse throttling errata (Processor
9070
driver)
9071
 
9072
Added new Limit interface (Processor and Thermal drivers)
9073
 
9074
New thermal policy (Thermal driver)
9075
 
9076
Many updates to /proc
9077
 
9078
Battery "low" event support (Battery driver)
9079
 
9080
Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
9081
 
9082
IA32 - IA64 initialization unification, no longer experimental
9083
 
9084
Menuconfig options redesigned
9085
 
9086
3) ASL Compiler, version X2037:
9087
 
9088
Implemented several new output features to simplify integration of
9089
AML code into  firmware: 1) Output the AML in C source code with
9090
labels for each named ASL object.  The    original ASL source code
9091
is interleaved as C comments. 2) Output the AML in ASM source code
9092
with labels and interleaved ASL    source. 3) Output the AML in
9093
raw hex table form, in either C or ASM.
9094
 
9095
Implemented support for optional string parameters to the
9096
LoadTable operator.
9097
 
9098
Completed support for embedded escape sequences within string
9099
literals.  The compiler now supports all single character escapes
9100
as well as the Octal and Hex escapes.  Note: the insertion of a
9101
null byte into a string literal (via the hex/octal escape) causes
9102
the string to be immediately terminated.  A warning is issued.
9103
 
9104
Fixed a problem where incorrect AML was generated for the case
9105
where an ASL namepath consists of a single parent prefix (
9106
 
9107
) with no trailing name segments.
9108
 
9109
The compiler has been successfully generated with a 64-bit C
9110
compiler.
9111
 
9112
 
9113
 
9114
 
9115
----------------------------------------
9116
Summary of changes for this label: 12_18_01
9117
 
9118
1) Linux
9119
 
9120
Enhanced blacklist with reason and severity fields. Any table's
9121
signature may now be used to identify a blacklisted system.
9122
 
9123
Call _PIC control method to inform the firmware which interrupt
9124
model the OS is using. Turn on any disabled link devices.
9125
 
9126
Cleaned up busmgr /proc error handling (Andreas Dilger)
9127
 
9128
 2) ACPI CA Core Subsystem:
9129
 
9130
Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
9131
while loop)
9132
 
9133
Completed implementation of the ACPI 2.0 "Continue",
9134
"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
9135
operators.  All new ACPI 2.0 operators are now implemented in both
9136
the ASL compiler and the AML interpreter.  The only remaining ACPI
9137
2.0 task is support for the String data type in the DerefOf
9138
operator.  Fixed a problem with AcquireMutex where the status code
9139
was lost if the caller had to actually wait for the mutex.
9140
 
9141
Increased the maximum ASL Field size from 64K bits to 4G bits.
9142
 
9143
Completed implementation of the external Global Lock interfaces --
9144
AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
9145
Handler parameters were added.
9146
 
9147
Completed another pass at removing warnings and issues when
9148
compiling with 64-bit compilers.  The code now compiles cleanly
9149
with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
9150
add and subtract (diff) macros have changed considerably.
9151
 
9152
 
9153
Created and deployed a new ACPI_SIZE type that is 64-bits wide on
9154
64-bit platforms, 32-bits on all others.  This type is used
9155
wherever memory allocation and/or the C sizeof() operator is used,
9156
and affects the OSL memory allocation interfaces AcpiOsAllocate
9157
and AcpiOsCallocate.
9158
 
9159
Implemented sticky user breakpoints in the AML debugger.
9160
 
9161
Code and Data Size: Current core subsystem library sizes are shown
9162
below. These are the code and data sizes for the acpica.lib
9163
produced by the Microsoft Visual C++ 6.0 compiler, and these
9164
values do not include any ACPI driver or OSPM code.  The debug
9165
version of the code includes the debug output trace mechanism and
9166
has a larger code and data size. Note that these values will vary
9167
depending on the efficiency of the compiler and the compiler
9168
options used during generation.
9169
 
9170
  Previous Release (12_05_01)
9171
     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
9172
     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
9173
   Current Release:
9174
     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
9175
     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
9176
 
9177
 3) ASL Compiler, version X2034:
9178
 
9179
Now checks for (and generates an error if detected) the use of a
9180
Break or Continue statement without an enclosing While statement.
9181
 
9182
 
9183
Successfully generated the compiler with the Intel 64-bit C
9184
compiler.
9185
 
9186
 ----------------------------------------
9187
Summary of changes for this label: 12_05_01
9188
 
9189
 1) ACPI CA Core Subsystem:
9190
 
9191
The ACPI 2.0 CopyObject operator is fully implemented.  This
9192
operator creates a new copy of an object (and is also used to
9193
bypass the "implicit conversion" mechanism of the Store operator.)
9194
 
9195
The ACPI 2.0 semantics for the SizeOf operator are fully
9196
implemented.  The change is that performing a SizeOf on a
9197
reference object causes an automatic dereference of the object to
9198
tha actual value before the size is evaluated. This behavior was
9199
undefined in ACPI 1.0.
9200
 
9201
The ACPI 2.0 semantics for the Extended IRQ resource descriptor
9202
have been implemented.  The interrupt polarity and mode are now
9203
independently set.
9204
 
9205
Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
9206
appearing in Package objects were not properly converted to
9207
integers when the internal Package was converted to an external
9208
object (via the AcpiEvaluateObject interface.)
9209
 
9210
Fixed a problem with the namespace object deletion mechanism for
9211
objects created by control methods.  There were two parts to this
9212
problem: 1) Objects created during the initialization phase method
9213
parse were not being deleted, and 2) The object owner ID mechanism
9214
to track objects was broken.
9215
 
9216
Fixed a problem where the use of the ASL Scope operator within a
9217
control method would result in an invalid opcode exception.
9218
 
9219
Fixed a problem introduced in the previous label where the buffer
9220
length required for the _PRT structure was not being returned
9221
correctly.
9222
 
9223
Code and Data Size: Current core subsystem library sizes are shown
9224
below. These are the code and data sizes for the acpica.lib
9225
produced by the Microsoft Visual C++ 6.0 compiler, and these
9226
values do not include any ACPI driver or OSPM code.  The debug
9227
version of the code includes the debug output trace mechanism and
9228
has a larger code and data size.  Note that these values will vary
9229
depending on the efficiency of the compiler and the compiler
9230
options used during generation.
9231
 
9232
  Previous Release (11_20_01)
9233
     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
9234
     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
9235
 
9236
  Current Release:
9237
     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
9238
     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
9239
 
9240
 2) Linux:
9241
 
9242
Updated all files to apply cleanly against 2.4.16.
9243
 
9244
Added basic PCI Interrupt Routing Table (PRT) support for IA32
9245
(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
9246
version supports both static and dyanmic PRT entries, but dynamic
9247
entries are treated as if they were static (not yet
9248
reconfigurable).  Architecture- specific code to use this data is
9249
absent on IA32 but should be available shortly.
9250
 
9251
Changed the initialization sequence to start the ACPI interpreter
9252
(acpi_init) prior to initialization of the PCI driver (pci_init)
9253
in init/main.c.  This ordering is required to support PRT and
9254
facilitate other (future) enhancement.  A side effect is that the
9255
ACPI bus driver and certain device drivers can no longer be loaded
9256
as modules.
9257
 
9258
Modified the 'make menuconfig' options to allow PCI Interrupt
9259
Routing support to be included without the ACPI Bus and other
9260
device drivers.
9261
 
9262
 3) ASL Compiler, version X2033:
9263
 
9264
Fixed some issues with the use of the new CopyObject and
9265
DataTableRegion operators.  Both are fully functional.
9266
 
9267
 ----------------------------------------
9268
Summary of changes for this label: 11_20_01
9269
 
9270
 20 November 2001.  Summary of changes for this release.
9271
 
9272
 1) ACPI CA Core Subsystem:
9273
 
9274
Updated Index support to match ACPI 2.0 semantics.  Storing a
9275
Integer, String, or Buffer to an Index of a Buffer will store only
9276
the least-significant byte of the source to the Indexed buffer
9277
byte.  Multiple writes are not performed.
9278
 
9279
Fixed a problem where the access type used in an AccessAs ASL
9280
operator was not recorded correctly into the field object.
9281
 
9282
Fixed a problem where ASL Event objects were created in a
9283
signalled state. Events are now created in an unsignalled state.
9284
 
9285
The internal object cache is now purged after table loading and
9286
initialization to reduce the use of dynamic kernel memory -- on
9287
the assumption that object use is greatest during the parse phase
9288
of the entire table (versus the run-time use of individual control
9289
methods.)
9290
 
9291
ACPI 2.0 variable-length packages are now fully operational.
9292
 
9293
Code and Data Size: Code and Data optimizations have permitted new
9294
feature development with an actual reduction in the library size.
9295
Current core subsystem library sizes are shown below.  These are
9296
the code and data sizes for the acpica.lib produced by the
9297
Microsoft Visual C++ 6.0 compiler, and these values do not include
9298
any ACPI driver or OSPM code.  The debug version of the code
9299
includes the debug output trace mechanism and has a larger code
9300
and data size.  Note that these values will vary depending on the
9301
efficiency of the compiler and the compiler options used during
9302
generation.
9303
 
9304
  Previous Release (11_09_01):
9305
     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
9306
     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
9307
 
9308
  Current Release:
9309
     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
9310
     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
9311
 
9312
 2) Linux:
9313
 
9314
Enhanced the ACPI boot-time initialization code to allow the use
9315
of Local APIC tables for processor enumeration on IA-32, and to
9316
pave the way for a fully MPS-free boot (on SMP systems) in the
9317
near future.  This functionality replaces
9318
arch/i386/kernel/acpitables.c, which was introduced in an earlier
9319
2.4.15-preX release.  To enable this feature you must add
9320
"acpi_boot=on" to the kernel command line -- see the help entry
9321
for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
9322
the works...
9323
 
9324
Restructured the configuration options to allow boot-time table
9325
parsing support without inclusion of the ACPI Interpreter (and
9326
other) code.
9327
 
9328
NOTE: This release does not include fixes for the reported events,
9329
power-down, and thermal passive cooling issues (coming soon).
9330
 
9331
 3) ASL Compiler:
9332
 
9333
Added additional typechecking for Fields within restricted access
9334
Operation Regions.  All fields within EC and CMOS regions must be
9335
declared with ByteAcc. All fields withing SMBus regions must be
9336
declared with the BufferAcc access type.
9337
 
9338
Fixed a problem where the listing file output of control methods
9339
no longer interleaved the actual AML code with the ASL source
9340
code.
9341
 
9342
 
9343
 
9344
 
9345
----------------------------------------
9346
Summary of changes for this label: 11_09_01
9347
 
9348
1) ACPI CA Core Subsystem:
9349
 
9350
Implemented ACPI 2.0-defined support for writes to fields with a
9351
Buffer, String, or Integer source operand that is smaller than the
9352
target field. In these cases, the source operand is zero-extended
9353
to fill the target field.
9354
 
9355
Fixed a problem where a Field starting bit offset (within the
9356
parent operation region) was calculated incorrectly if the
9357
 
9358
alignment of the field differed from the access width.  This
9359
affected CreateWordField, CreateDwordField, CreateQwordField, and
9360
possibly other fields that use the "AccessAny" keyword.
9361
 
9362
Fixed a problem introduced in the 11_02_01 release where indirect
9363
stores through method arguments did not operate correctly.
9364
 
9365
2) Linux:
9366
 
9367
Implemented boot-time ACPI table parsing support
9368
(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
9369
facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
9370
legacy BIOS interfaces (e.g. MPS) for the configuration of system
9371
processors, memory, and interrupts during setup_arch().  Note that
9372
this patch does not include the required architecture-specific
9373
changes required to apply this information -- subsequent patches
9374
will be posted for both IA32 and IA64 to achieve this.
9375
 
9376
Added low-level sleep support for IA32 platforms, courtesy of Pat
9377
Mochel. This allows IA32 systems to transition to/from various
9378
sleeping states (e.g. S1, S3), although the lack of a centralized
9379
driver model and power-manageable drivers will prevent its
9380
(successful) use on most systems.
9381
 
9382
Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
9383
submenu, unified IA32 and IA64 options, added new "Boot using ACPI
9384
tables" option, etc.
9385
 
9386
Increased the default timeout for the EC driver from 1ms to 10ms
9387
(1000 cycles of 10us) to try to address AE_TIME errors during EC
9388
transactions.
9389
 
9390
 ----------------------------------------
9391
Summary of changes for this label: 11_02_01
9392
 
9393
1) ACPI CA Core Subsystem:
9394
 
9395
ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
9396
(QWordAcc keyword). All ACPI 2.0 64-bit support is now
9397
implemented.
9398
 
9399
OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
9400
changes to support ACPI 2.0 Qword field access.  Read/Write
9401
PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
9402
accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
9403
the value parameter for the address space handler interface is now
9404
an ACPI_INTEGER.  OSL implementations of these interfaces must now
9405
handle the case where the Width parameter is 64.
9406
 
9407
Index Fields: Fixed a problem where unaligned bit assembly and
9408
disassembly for IndexFields was not supported correctly.
9409
 
9410
Index and Bank Fields:  Nested Index and Bank Fields are now
9411
supported. During field access, a check is performed to ensure
9412
that the value written to an Index or Bank register is not out of
9413
the range of the register.  The Index (or Bank) register is
9414
written before each access to the field data. Future support will
9415
include allowing individual IndexFields to be wider than the
9416
DataRegister width.
9417
 
9418
Fields: Fixed a problem where the AML interpreter was incorrectly
9419
attempting to write beyond the end of a Field/OpRegion.  This was
9420
a boundary case that occurred when a DWORD field was written to a
9421
BYTE access OpRegion, forcing multiple writes and causing the
9422
interpreter to write one datum too many.
9423
 
9424
Fields: Fixed a problem with Field/OpRegion access where the
9425
starting bit address of a field was incorrectly calculated if the
9426
current access type was wider than a byte (WordAcc, DwordAcc, or
9427
QwordAcc).
9428
 
9429
Fields: Fixed a problem where forward references to individual
9430
FieldUnits (individual Field names within a Field definition) were
9431
not resolved during the AML table load.
9432
 
9433
Fields: Fixed a problem where forward references from a Field
9434
definition to the parent Operation Region definition were not
9435
resolved during the AML table load.
9436
 
9437
Fields: Duplicate FieldUnit names within a scope are now detected
9438
during AML table load.
9439
 
9440
Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
9441
returned an incorrect name for the root node.
9442
 
9443
Code and Data Size: Code and Data optimizations have permitted new
9444
feature development with an actual reduction in the library size.
9445
Current core subsystem library sizes are shown below.  These are
9446
the code and data sizes for the acpica.lib produced by the
9447
Microsoft Visual C++ 6.0 compiler, and these values do not include
9448
any ACPI driver or OSPM code.  The debug version of the code
9449
includes the debug output trace mechanism and has a larger code
9450
and data size.  Note that these values will vary depending on the
9451
efficiency of the compiler and the compiler options used during
9452
generation.
9453
 
9454
  Previous Release (10_18_01):
9455
     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
9456
     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
9457
 
9458
  Current Release:
9459
     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
9460
     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
9461
 
9462
 2) Linux:
9463
 
9464
Improved /proc processor output (Pavel Machek) Re-added
9465
MODULE_LICENSE("GPL") to all modules.
9466
 
9467
 3) ASL Compiler version X2030:
9468
 
9469
Duplicate FieldUnit names within a scope are now detected and
9470
flagged as errors.
9471
 
9472
 4) Documentation:
9473
 
9474
Programmer Reference updated to reflect OSL and address space
9475
handler interface changes described above.
9476
 
9477
----------------------------------------
9478
Summary of changes for this label: 10_18_01
9479
 
9480
ACPI CA Core Subsystem:
9481
 
9482
Fixed a problem with the internal object reference count mechanism
9483
that occasionally caused premature object deletion. This resolves
9484
all of the outstanding problem reports where an object is deleted
9485
in the middle of an interpreter evaluation.  Although this problem
9486
only showed up in rather obscure cases, the solution to the
9487
problem involved an adjustment of all reference counts involving
9488
objects attached to namespace nodes.
9489
 
9490
Fixed a problem with Field support in the interpreter where
9491
writing to an aligned field whose length is an exact multiple (2
9492
or greater) of the field access granularity would cause an attempt
9493
to write beyond the end of the field.
9494
 
9495
The top level AML opcode execution functions within the
9496
interpreter have been renamed with a more meaningful and
9497
consistent naming convention.  The modules exmonad.c and
9498
exdyadic.c were eliminated.  New modules are exoparg1.c,
9499
exoparg2.c, exoparg3.c, and exoparg6.c.
9500
 
9501
Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
9502
 
9503
Fixed a problem where the AML debugger was causing some internal
9504
objects to not be deleted during subsystem termination.
9505
 
9506
Fixed a problem with the external AcpiEvaluateObject interface
9507
where the subsystem would fault if the named object to be
9508
evaluated refered to a constant such as Zero, Ones, etc.
9509
 
9510
Fixed a problem with IndexFields and BankFields where the
9511
subsystem would fault if the index, data, or bank registers were
9512
not defined in the same scope as the field itself.
9513
 
9514
Added printf format string checking for compilers that support
9515
this feature.  Corrected more than 50 instances of issues with
9516
format specifiers within invocations of ACPI_DEBUG_PRINT
9517
throughout the core subsystem code.
9518
 
9519
The ASL "Revision" operator now returns the ACPI support level
9520
implemented in the core - the value "2" since the ACPI 2.0 support
9521
is more than 50% implemented.
9522
 
9523
Enhanced the output of the AML debugger "dump namespace" command
9524
to output in a more human-readable form.
9525
 
9526
Current core subsystem library code sizes are shown below.  These
9527
 
9528
are the code and data sizes for the acpica.lib produced by the
9529
Microsoft Visual C++ 6.0 compiler, and these values do not include
9530
any ACPI driver or OSPM code.  The debug version of the code
9531
includes the full debug trace mechanism -- leading to a much
9532
 
9533
larger code and data size.  Note that these values will vary
9534
depending on the efficiency of the compiler and the compiler
9535
options used during generation.
9536
 
9537
     Previous Label (09_20_01):
9538
     Non-Debug Version:    65K Code,     5K Data,     70K Total
9539
     Debug Version:       138K Code,    58K Data,    196K Total
9540
 
9541
     This Label:
9542
 
9543
     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
9544
     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
9545
 
9546
Linux:
9547
 
9548
Implemented a "Bad BIOS Blacklist" to track machines that have
9549
known ASL/AML problems.
9550
 
9551
Enhanced the /proc interface for the thermal zone driver and added
9552
support for _HOT (the critical suspend trip point).  The 'info'
9553
file now includes threshold/policy information, and allows setting
9554
of _SCP (cooling preference) and _TZP (polling frequency) values
9555
to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
9556
frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
9557
preference to the passive/quiet mode (if supported by the ASL).
9558
 
9559
Implemented a workaround for a gcc bug that resuted in an OOPs
9560
when loading the control method battery driver.
9561
 
9562
 ----------------------------------------
9563
Summary of changes for this label: 09_20_01
9564
 
9565
 ACPI CA Core Subsystem:
9566
 
9567
The AcpiEnableEvent and AcpiDisableEvent interfaces have been
9568
modified to allow individual GPE levels to be flagged as wake-
9569
enabled (i.e., these GPEs are to remain enabled when the platform
9570
sleeps.)
9571
 
9572
The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
9573
support wake-enabled GPEs.  This means that upon entering the
9574
sleep state, all GPEs that are not wake-enabled are disabled.
9575
When leaving the sleep state, these GPEs are reenabled.
9576
 
9577
A local double-precision divide/modulo module has been added to
9578
enhance portability to OS kernels where a 64-bit math library is
9579
not available.  The new module is "utmath.c".
9580
 
9581
Several optimizations have been made to reduce the use of CPU
9582
stack.  Originally over 2K, the maximum stack usage is now below
9583
2K at 1860  bytes (1.82k)
9584
 
9585
Fixed a problem with the AcpiGetFirmwareTable interface where the
9586
root table pointer was not mapped into a logical address properly.
9587
 
9588
Fixed a problem where a NULL pointer was being dereferenced in the
9589
interpreter code for the ASL Notify operator.
9590
 
9591
Fixed a problem where the use of the ASL Revision operator
9592
returned an error. This operator now returns the current version
9593
of the ACPI CA core subsystem.
9594
 
9595
Fixed a problem where objects passed as control method parameters
9596
to AcpiEvaluateObject were always deleted at method termination.
9597
However, these objects may end up being stored into the namespace
9598
by the called method.  The object reference count mechanism was
9599
applied to these objects instead of a force delete.
9600
 
9601
Fixed a problem where static strings or buffers (contained in the
9602
AML code) that are declared as package elements within the ASL
9603
code could cause a fault because the interpreter would attempt to
9604
delete them.  These objects are now marked with the "static
9605
object" flag to prevent any attempt to delete them.
9606
 
9607
Implemented an interpreter optimization to use operands directly
9608
from the state object instead of extracting the operands to local
9609
variables.  This reduces stack use and code size, and improves
9610
performance.
9611
 
9612
The module exxface.c was eliminated as it was an unnecessary extra
9613
layer of code.
9614
 
9615
Current core subsystem library code sizes are shown below.  These
9616
are the code and data sizes for the acpica.lib produced by the
9617
Microsoft Visual C++ 6.0 compiler, and these values do not include
9618
any ACPI driver or OSPM code.  The debug version of the code
9619
includes the full debug trace mechanism -- leading to a much
9620
larger code and data size.  Note that these values will vary
9621
depending on the efficiency of the compiler and the compiler
9622
options used during generation.
9623
 
9624
  Non-Debug Version:  65K Code,   5K Data,   70K Total
9625
(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
9626
Total  (Previously 195K)
9627
 
9628
Linux:
9629
 
9630
Support for ACPI 2.0 64-bit integers has been added.   All ACPI
9631
Integer objects are now 64 bits wide
9632
 
9633
All Acpi data types and structures are now in lower case.  Only
9634
Acpi macros are upper case for differentiation.
9635
 
9636
 Documentation:
9637
 
9638
Changes to the external interfaces as described above.
9639
 
9640
 ----------------------------------------
9641
Summary of changes for this label: 08_31_01
9642
 
9643
 ACPI CA Core Subsystem:
9644
 
9645
A bug with interpreter implementation of the ASL Divide operator
9646
was found and fixed.  The implicit function return value (not the
9647
explicit store operands) was returning the remainder instead of
9648
the quotient.  This was a longstanding bug and it fixes several
9649
known outstanding issues on various platforms.
9650
 
9651
The ACPI_DEBUG_PRINT and function trace entry/exit macros have
9652
been further optimized for size.  There are 700 invocations of the
9653
DEBUG_PRINT macro alone, so each optimization reduces the size of
9654
the debug version of the subsystem significantly.
9655
 
9656
A stack trace mechanism has been implemented.  The maximum stack
9657
usage is about 2K on 32-bit platforms.  The debugger command "stat
9658
stack" will display the current maximum stack usage.
9659
 
9660
All public symbols and global variables within the subsystem are
9661
now prefixed with the string "Acpi".  This keeps all of the
9662
symbols grouped together in a kernel map, and avoids conflicts
9663
with other kernel subsystems.
9664
 
9665
Most of the internal fixed lookup tables have been moved into the
9666
code segment via the const operator.
9667
 
9668
Several enhancements have been made to the interpreter to both
9669
reduce the code size and improve performance.
9670
 
9671
Current core subsystem library code sizes are shown below.  These
9672
are the code and data sizes for the acpica.lib produced by the
9673
Microsoft Visual C++ 6.0 compiler, and these values do not include
9674
any ACPI driver or OSPM code.  The debug version of the code
9675
includes the full debug trace mechanism which contains over 700
9676
invocations of the DEBUG_PRINT macro, 500 function entry macro
9677
invocations, and over 900 function exit macro invocations --
9678
leading to a much larger code and data size.  Note that these
9679
values will vary depending on the efficiency of the compiler and
9680
the compiler options used during generation.
9681
 
9682
        Non-Debug Version:  64K Code,   5K Data,   69K Total
9683
Debug Version:     137K Code,  58K Data,  195K Total
9684
 
9685
 Linux:
9686
 
9687
Implemented wbinvd() macro, pending a kernel-wide definition.
9688
 
9689
Fixed /proc/acpi/event to handle poll() and short reads.
9690
 
9691
 ASL Compiler, version X2026:
9692
 
9693
Fixed a problem introduced in the previous label where the AML
9694
 
9695
code emitted for package objects produced packages with zero
9696
length.
9697
 
9698
 ----------------------------------------
9699
Summary of changes for this label: 08_16_01
9700
 
9701
ACPI CA Core Subsystem:
9702
 
9703
The following ACPI 2.0 ASL operators have been implemented in the
9704
AML interpreter (These are already supported by the Intel ASL
9705
compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
9706
ToBuffer.  Support for 64-bit AML constants is implemented in the
9707
AML parser, debugger, and disassembler.
9708
 
9709
The internal memory tracking mechanism (leak detection code) has
9710
been upgraded to reduce the memory overhead (a separate tracking
9711
block is no longer allocated for each memory allocation), and now
9712
supports all of the internal object caches.
9713
 
9714
The data structures and code for the internal object caches have
9715
been coelesced and optimized so that there is a single cache and
9716
memory list data structure and a single group of functions that
9717
implement generic cache management.  This has reduced the code
9718
size in both the debug and release versions of the subsystem.
9719
 
9720
The DEBUG_PRINT macro(s) have been optimized for size and replaced
9721
by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
9722
different, because it generates a single call to an internal
9723
function.  This results in a savings of about 90 bytes per
9724
invocation, resulting in an overall code and data savings of about
9725
16% in the debug version of the subsystem.
9726
 
9727
 Linux:
9728
 
9729
Fixed C3 disk corruption problems and re-enabled C3 on supporting
9730
machines.
9731
 
9732
Integrated low-level sleep code by Patrick Mochel.
9733
 
9734
Further tweaked source code Linuxization.
9735
 
9736
Other minor fixes.
9737
 
9738
 ASL Compiler:
9739
 
9740
Support for ACPI 2.0 variable length packages is fixed/completed.
9741
 
9742
Fixed a problem where the optional length parameter for the ACPI
9743
2.0 ToString operator.
9744
 
9745
Fixed multiple extraneous error messages when a syntax error is
9746
detected within the declaration line of a control method.
9747
 
9748
 ----------------------------------------
9749
Summary of changes for this label: 07_17_01
9750
 
9751
ACPI CA Core Subsystem:
9752
 
9753
Added a new interface named AcpiGetFirmwareTable to obtain any
9754
ACPI table via the ACPI signature.  The interface can be called at
9755
any time during kernel initialization, even before the kernel
9756
virtual memory manager is initialized and paging is enabled.  This
9757
allows kernel subsystems to obtain ACPI tables very early, even
9758
before the ACPI CA subsystem is initialized.
9759
 
9760
Fixed a problem where Fields defined with the AnyAcc attribute
9761
could be resolved to the incorrect address under the following
9762
conditions: 1) the field width is larger than 8 bits and 2) the
9763
parent operation region is not defined on a DWORD boundary.
9764
 
9765
Fixed a problem where the interpreter is not being locked during
9766
namespace initialization (during execution of the _INI control
9767
methods), causing an error when an attempt is made to release it
9768
later.
9769
 
9770
ACPI 2.0 support in the AML Interpreter has begun and will be
9771
ongoing throughout the rest of this year.  In this label, The Mod
9772
operator is implemented.
9773
 
9774
Added a new data type to contain full PCI addresses named
9775
ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
9776
and Function values.
9777
 
9778
 Linux:
9779
 
9780
Enhanced the Linux version of the source code to change most
9781
capitalized ACPI type names to lowercase. For example, all
9782
instances of ACPI_STATUS are changed to acpi_status.  This will
9783
result in a large diff, but the change is strictly cosmetic and
9784
aligns the CA code closer to the Linux coding standard.
9785
 
9786
OSL Interfaces:
9787
 
9788
The interfaces to the PCI configuration space have been changed to
9789
add the PCI Segment number and to split the single 32-bit combined
9790
DeviceFunction field into two 16-bit fields.  This was
9791
accomplished by moving the four values that define an address in
9792
PCI configuration space (segment, bus, device, and function) to
9793
the new ACPI_PCI_ID structure.
9794
 
9795
The changes to the PCI configuration space interfaces led to a
9796
reexamination of the complete set of address space access
9797
interfaces for PCI, I/O, and Memory.  The previously existing 18
9798
interfaces have proven difficult to maintain (any small change
9799
must be propagated across at least 6 interfaces) and do not easily
9800
allow for future expansion to 64 bits if necessary.  Also, on some
9801
systems, it would not be appropriate to demultiplex the access
9802
width (8, 16, 32,or 64) before calling the OSL if the
9803
corresponding native OS interfaces contain a similar access width
9804
parameter.  For these reasons, the 18 address space interfaces
9805
have been replaced by these 6 new ones:
9806
 
9807
AcpiOsReadPciConfiguration
9808
AcpiOsWritePciConfiguration
9809
AcpiOsReadMemory
9810
AcpiOsWriteMemory
9811
AcpiOsReadPort
9812
AcpiOsWritePort
9813
 
9814
Added a new interface named AcpiOsGetRootPointer to allow the OSL
9815
to perform the platform and/or OS-specific actions necessary to
9816
obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
9817
interface will simply call down to the CA core to perform the low-
9818
memory search for the table.  On IA-64, the RSDP is obtained from
9819
EFI.  Migrating this interface to the OSL allows the CA core to
9820
 
9821
remain OS and platform independent.
9822
 
9823
Added a new interface named AcpiOsSignal to provide a generic
9824
"function code and pointer" interface for various miscellaneous
9825
signals and notifications that must be made to the host OS.   The
9826
first such signals are intended to support the ASL Fatal and
9827
Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
9828
interface has been obsoleted.
9829
 
9830
The definition of the AcpiFormatException interface has been
9831
changed to simplify its use.  The caller no longer must supply a
9832
buffer to the call; A pointer to a const string is now returned
9833
directly.  This allows the call to be easily used in printf
9834
statements, etc. since the caller does not have to manage a local
9835
buffer.
9836
 
9837
 
9838
 ASL Compiler, Version X2025:
9839
 
9840
The ACPI 2.0 Switch/Case/Default operators have been implemented
9841
and are fully functional.  They will work with all ACPI 1.0
9842
interpreters, since the operators are simply translated to If/Else
9843
pairs.
9844
 
9845
The ACPI 2.0 ElseIf operator is implemented and will also work
9846
with 1.0 interpreters, for the same reason.
9847
 
9848
Implemented support for ACPI 2.0 variable-length packages.  These
9849
packages have a separate opcode, and their size is determined by
9850
the interpreter at run-time.
9851
 
9852
Documentation The ACPI CA Programmer Reference has been updated to
9853
reflect the new interfaces and changes to existing interfaces.
9854
 
9855
 ------------------------------------------
9856
Summary of changes for this label: 06_15_01
9857
 
9858
 ACPI CA Core Subsystem:
9859
 
9860
Fixed a problem where a DWORD-accessed field within a Buffer
9861
object would get its byte address inadvertently rounded down to
9862
the nearest DWORD.  Buffers are always Byte-accessible.
9863
 
9864
 ASL Compiler, version X2024:
9865
 
9866
Fixed a problem where the Switch() operator would either fault or
9867
hang the compiler.  Note however, that the AML code for this ACPI
9868
2.0 operator is not yet implemented.
9869
 
9870
Compiler uses the new AcpiOsGetTimer interface to obtain compile
9871
timings.
9872
 
9873
Implementation of the CreateField operator automatically converts
9874
a reference to a named field within a resource descriptor from a
9875
byte offset to a bit offset if required.
9876
 
9877
Added some missing named fields from the resource descriptor
9878
support. These are the names that are automatically created by the
9879
compiler to reference fields within a descriptor.  They are only
9880
valid at compile time and are not passed through to the AML
9881
interpreter.
9882
 
9883
Resource descriptor named fields are now typed as Integers and
9884
subject to compile-time typechecking when used in expressions.
9885
 
9886
 ------------------------------------------
9887
Summary of changes for this label: 05_18_01
9888
 
9889
 ACPI CA Core Subsystem:
9890
 
9891
Fixed a couple of problems in the Field support code where bits
9892
from adjacent fields could be returned along with the proper field
9893
bits. Restructured the field support code to improve performance,
9894
readability and maintainability.
9895
 
9896
New DEBUG_PRINTP macro automatically inserts the procedure name
9897
into the output, saving hundreds of copies of procedure name
9898
strings within the source, shrinking the memory footprint of the
9899
debug version of the core subsystem.
9900
 
9901
 Source Code Structure:
9902
 
9903
The source code directory tree was restructured to reflect the
9904
current organization of the component architecture.  Some files
9905
and directories have been moved and/or renamed.
9906
 
9907
 Linux:
9908
 
9909
Fixed leaking kacpidpc processes.
9910
 
9911
Fixed queueing event data even when /proc/acpi/event is not
9912
opened.
9913
 
9914
 ASL Compiler, version X2020:
9915
 
9916
Memory allocation performance enhancement - over 24X compile time
9917
improvement on large ASL files.  Parse nodes and namestring
9918
buffers are now allocated from a large internal compiler buffer.
9919
 
9920
The temporary .SRC file is deleted unless the "-s" option is
9921
specified
9922
 
9923
The "-d" debug output option now sends all output to the .DBG file
9924
instead of the console.
9925
 
9926
"External" second parameter is now optional
9927
 
9928
"ElseIf" syntax now properly allows the predicate
9929
 
9930
Last operand to "Load" now recognized as a Target operand
9931
 
9932
Debug object can now be used anywhere as a normal object.
9933
 
9934
ResourceTemplate now returns an object of type BUFFER
9935
 
9936
EISAID now returns an object of type INTEGER
9937
 
9938
"Index" now works with a STRING operand
9939
 
9940
"LoadTable" now accepts optional parameters
9941
 
9942
"ToString" length parameter is now optional
9943
 
9944
"Interrupt (ResourceType," parse error fixed.
9945
 
9946
"Register" with a user-defined region space parse error fixed
9947
 
9948
Escaped backslash at the end of a string ("\\") scan/parse error
9949
fixed
9950
 
9951
"Revision" is now an object of type INTEGER.
9952
 
9953
 
9954
 
9955
------------------------------------------
9956
Summary of changes for this label: 05_02_01
9957
 
9958
Linux:
9959
 
9960
/proc/acpi/event now blocks properly.
9961
 
9962
Removed /proc/sys/acpi. You can still dump your DSDT from
9963
/proc/acpi/dsdt.
9964
 
9965
 ACPI CA Core Subsystem:
9966
 
9967
Fixed a problem introduced in the previous label where some of the
9968
"small" resource descriptor types were not recognized.
9969
 
9970
Improved error messages for the case where an ASL Field is outside
9971
the range of the parent operation region.
9972
 
9973
 ASL Compiler, version X2018:
9974
 
9975
 
9976
Added error detection for ASL Fields that extend beyond the length
9977
of the parent operation region (only if the length of the region
9978
is known at compile time.)  This includes fields that have a
9979
minimum access width that is smaller than the parent region, and
9980
individual field units that are partially or entirely beyond the
9981
extent of the parent.
9982
 
9983
 
9984
 
9985
------------------------------------------
9986
Summary of changes for this label: 04_27_01
9987
 
9988
 ACPI CA Core Subsystem:
9989
 
9990
Fixed a problem where the namespace mutex could be released at the
9991
wrong time during execution of AcpiRemoveAddressSpaceHandler.
9992
 
9993
Added optional thread ID output for debug traces, to simplify
9994
debugging of multiple threads.  Added context switch notification
9995
when the debug code realizes that a different thread is now
9996
executing ACPI code.
9997
 
9998
Some additional external data types have been prefixed with the
9999
string "ACPI_" for consistency.  This may effect existing code.
10000
The data types affected are the external callback typedefs - e.g.,
10001
 
10002
WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
10003
 
10004
 Linux:
10005
 
10006
Fixed an issue with the OSL semaphore implementation where a
10007
thread was waking up with an error from receiving a SIGCHLD
10008
signal.
10009
 
10010
Linux version of ACPI CA now uses the system C library for string
10011
manipulation routines instead of a local implementation.
10012
 
10013
Cleaned up comments and removed TBDs.
10014
 
10015
 ASL Compiler, version X2017:
10016
 
10017
Enhanced error detection and reporting for all file I/O
10018
operations.
10019
 
10020
 Documentation:
10021
 
10022
Programmer Reference updated to version 1.06.
10023
 
10024
 
10025
 
10026
------------------------------------------
10027
Summary of changes for this label: 04_13_01
10028
 
10029
 ACPI CA Core Subsystem:
10030
 
10031
Restructured support for BufferFields and RegionFields.
10032
BankFields support is now fully operational.  All known 32-bit
10033
limitations on field sizes have been removed.  Both BufferFields
10034
and (Operation) RegionFields are now supported by the same field
10035
management code.
10036
 
10037
Resource support now supports QWORD address and IO resources. The
10038
16/32/64 bit address structures and the Extended IRQ structure
10039
have been changed to properly handle Source Resource strings.
10040
 
10041
A ThreadId of -1 is now used to indicate a "mutex not acquired"
10042
condition internally and must never be returned by AcpiOsThreadId.
10043
This reserved value was changed from 0 since Unix systems allow a
10044
thread ID of 0.
10045
 
10046
Linux:
10047
 
10048
Driver code reorganized to enhance portability
10049
 
10050
Added a kernel configuration option to control ACPI_DEBUG
10051
 
10052
Fixed the EC driver to honor _GLK.
10053
 
10054
ASL Compiler, version X2016:
10055
 
10056
Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
10057
address space was set to 0, not 0x7f as it should be.
10058
 
10059
 ------------------------------------------
10060
Summary of changes for this label: 03_13_01
10061
 
10062
 ACPI CA Core Subsystem:
10063
 
10064
During ACPI initialization, the _SB_._INI method is now run if
10065
present.
10066
 
10067
Notify handler fix - notifies are deferred until the parent method
10068
completes execution.  This fixes the "mutex already acquired"
10069
issue seen occasionally.
10070
 
10071
Part of the "implicit conversion" rules in ACPI 2.0 have been
10072
found to cause compatibility problems with existing ASL/AML.  The
10073
convert "result-to-target-type" implementation has been removed
10074
for stores to method Args and Locals.  Source operand conversion
10075
is still fully implemented.  Possible changes to ACPI 2.0
10076
specification pending.
10077
 
10078
Fix to AcpiRsCalculatePciRoutingTableLength to return correct
10079
length.
10080
 
10081
Fix for compiler warnings for 64-bit compiles.
10082
 
10083
 Linux:
10084
 
10085
/proc output aligned for easier parsing.
10086
 
10087
Release-version compile problem fixed.
10088
 
10089
New kernel configuration options documented in Configure.help.
10090
 
10091
IBM 600E - Fixed Sleep button may generate "Invalid 
10092
context" message.
10093
 
10094
 OSPM:
10095
 
10096
Power resource driver integrated with bus manager.
10097
 
10098
Fixed kernel fault during active cooling for thermal zones.
10099
 
10100
Source Code:
10101
 
10102
The source code tree has been restructured.
10103
 
10104
 
10105
 
10106
------------------------------------------
10107
Summary of changes for this label: 03_02_01
10108
 
10109
 Linux OS Services Layer (OSL):
10110
 
10111
Major revision of all Linux-specific code.
10112
 
10113
Modularized all ACPI-specific drivers.
10114
 
10115
Added new thermal zone and power resource drivers.
10116
 
10117
Revamped /proc interface (new functionality is under /proc/acpi).
10118
 
10119
New kernel configuration options.
10120
 
10121
 Linux known issues:
10122
 
10123
New kernel configuration options not documented in Configure.help
10124
yet.
10125
 
10126
 
10127
Module dependencies not currently implemented. If used, they
10128
should be loaded in this order: busmgr, power, ec, system,
10129
processor, battery, ac_adapter, button, thermal.
10130
 
10131
Modules will not load if CONFIG_MODVERSION is set.
10132
 
10133
IBM 600E - entering S5 may reboot instead of shutting down.
10134
 
10135
IBM 600E - Sleep button may generate "Invalid  context"
10136
message.
10137
 
10138
Some systems may fail with "execution mutex already acquired"
10139
message.
10140
 
10141
 ACPI CA Core Subsystem:
10142
 
10143
Added a new OSL Interface, AcpiOsGetThreadId.  This was required
10144
for the  deadlock detection code. Defined to return a non-zero, 32-
10145
bit thread ID for the currently executing thread.  May be a non-
10146
zero constant integer on single-thread systems.
10147
 
10148
Implemented deadlock detection for internal subsystem mutexes.  We
10149
may add conditional compilation for this code (debug only) later.
10150
 
10151
ASL/AML Mutex object semantics are now fully supported.  This
10152
includes multiple acquires/releases by owner and support for the
10153
 
10154
Mutex SyncLevel parameter.
10155
 
10156
A new "Force Release" mechanism automatically frees all ASL
10157
Mutexes that have been acquired but not released when a thread
10158
exits the interpreter.  This forces conformance to the ACPI spec
10159
("All mutexes must be released when an invocation exits") and
10160
prevents deadlocked ASL threads.  This mechanism can be expanded
10161
(later) to monitor other resource acquisitions if OEM ASL code
10162
continues to misbehave (which it will).
10163
 
10164
Several new ACPI exception codes have been added for the Mutex
10165
support.
10166
 
10167
Recursive method calls are now allowed and supported (the ACPI
10168
spec does in fact allow recursive method calls.)  The number of
10169
recursive calls is subject to the restrictions imposed by the
10170
SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
10171
parameter.
10172
 
10173
Implemented support for the SyncLevel parameter for control
10174
methods (ACPI 2.0 feature)
10175
 
10176
Fixed a deadlock problem when multiple threads attempted to use
10177
the interpreter.
10178
 
10179
Fixed a problem where the string length of a String package
10180
element was not always set in a package returned from
10181
AcpiEvaluateObject.
10182
 
10183
Fixed a problem where the length of a String package element was
10184
not always included in the length of the overall package returned
10185
from AcpiEvaluateObject.
10186
 
10187
Added external interfaces (Acpi*) to the ACPI debug memory
10188
manager.  This manager keeps a list of all outstanding
10189
allocations, and can therefore detect memory leaks and attempts to
10190
free memory blocks more than once. Useful for code such as the
10191
power manager, etc.  May not be appropriate for device drivers.
10192
Performance with the debug code enabled is slow.
10193
 
10194
The ACPI Global Lock is now an optional hardware element.
10195
 
10196
 ASL Compiler Version X2015:
10197
 
10198
Integrated changes to allow the compiler to be generated on
10199
multiple platforms.
10200
 
10201
Linux makefile added to generate the compiler on Linux
10202
 
10203
 Source Code:
10204
 
10205
All platform-specific headers have been moved to their own
10206
subdirectory, Include/Platform.
10207
 
10208
New source file added, Interpreter/ammutex.c
10209
 
10210
New header file, Include/acstruct.h
10211
 
10212
 Documentation:
10213
 
10214
The programmer reference has been updated for the following new
10215
interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
10216
 
10217
 ------------------------------------------
10218
Summary of changes for this label: 02_08_01
10219
 
10220
Core ACPI CA Subsystem: Fixed a problem where an error was
10221
incorrectly returned if the return resource buffer was larger than
10222
the actual data (in the resource interfaces).
10223
 
10224
References to named objects within packages are resolved to the
10225
 
10226
full pathname string before packages are returned directly (via
10227
the AcpiEvaluateObject interface) or indirectly via the resource
10228
interfaces.
10229
 
10230
Linux OS Services Layer (OSL):
10231
 
10232
Improved /proc battery interface.
10233
 
10234
 
10235
Added C-state debugging output and other miscellaneous fixes.
10236
 
10237
ASL Compiler Version X2014:
10238
 
10239
All defined method arguments can now be used as local variables,
10240
including the ones that are not actually passed in as parameters.
10241
The compiler tracks initialization of the arguments and issues an
10242
exception if they are used without prior assignment (just like
10243
locals).
10244
 
10245
The -o option now specifies a filename prefix that is used for all
10246
output files, including the AML output file.  Otherwise, the
10247
default behavior is as follows:  1) the AML goes to the file
10248
specified in the DSDT.  2) all other output files use the input
10249
source filename as the base.
10250
 
10251
 ------------------------------------------
10252
Summary of changes for this label: 01_25_01
10253
 
10254
Core ACPI CA Subsystem: Restructured the implementation of object
10255
store support within the  interpreter.  This includes support for
10256
the Store operator as well  as any ASL operators that include a
10257
target operand.
10258
 
10259
Partially implemented support for Implicit Result-to-Target
10260
conversion. This is when a result object is converted on the fly
10261
to the type of  an existing target object.  Completion of this
10262
support is pending  further analysis of the ACPI specification
10263
concerning this matter.
10264
 
10265
CPU-specific code has been removed from the subsystem (hardware
10266
directory).
10267
 
10268
New Power Management Timer functions added
10269
 
10270
Linux OS Services Layer (OSL): Moved system state transition code
10271
to the core, fixed it, and modified  Linux OSL accordingly.
10272
 
10273
Fixed C2 and C3 latency calculations.
10274
 
10275
 
10276
We no longer use the compilation date for the version message on
10277
initialization, but retrieve the version from AcpiGetSystemInfo().
10278
 
10279
Incorporated for fix Sony VAIO machines.
10280
 
10281
Documentation:  The Programmer Reference has been updated and
10282
reformatted.
10283
 
10284
 
10285
ASL Compiler:  Version X2013: Fixed a problem where the line
10286
numbering and error reporting could get out  of sync in the
10287
presence of multiple include files.
10288
 
10289
 ------------------------------------------
10290
Summary of changes for this label: 01_15_01
10291
 
10292
Core ACPI CA Subsystem:
10293
 
10294
Implemented support for type conversions in the execution of the
10295
ASL  Concatenate operator (The second operand is converted to
10296
match the type  of the first operand before concatenation.)
10297
 
10298
Support for implicit source operand conversion is partially
10299
implemented.   The ASL source operand types Integer, Buffer, and
10300
String are freely  interchangeable for most ASL operators and are
10301
converted by the interpreter  on the fly as required.  Implicit
10302
Target operand conversion (where the  result is converted to the
10303
target type before storing) is not yet implemented.
10304
 
10305
Support for 32-bit and 64-bit BCD integers is implemented.
10306
 
10307
Problem fixed where a field read on an aligned field could cause a
10308
read  past the end of the field.
10309
 
10310
New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
10311
does not return a value, but the caller expects one.  (The ASL
10312
compiler flags this as a warning.)
10313
 
10314
ASL Compiler:
10315
 
10316
Version X2011:
10317
1. Static typechecking of all operands is implemented. This
10318
prevents the use of invalid objects (such as using a Package where
10319
an Integer is required) at compile time instead of at interpreter
10320
run-time.
10321
2. The ASL source line is printed with ALL errors and warnings.
10322
3. Bug fix for source EOF without final linefeed.
10323
4. Debug option is split into a parse trace and a namespace trace.
10324
5. Namespace output option (-n) includes initial values for
10325
integers and strings.
10326
6. Parse-only option added for quick syntax checking.
10327
7. Compiler checks for duplicate ACPI name declarations
10328
 
10329
Version X2012:
10330
1. Relaxed typechecking to allow interchangeability between
10331
strings, integers, and buffers.  These types are now converted by
10332
the interpreter at runtime.
10333
2. Compiler reports time taken by each internal subsystem in the
10334
debug         output file.
10335
 
10336
 
10337
 ------------------------------------------
10338
Summary of changes for this label: 12_14_00
10339
 
10340
ASL Compiler:
10341
 
10342
This is the first official release of the compiler. Since the
10343
compiler requires elements of the Core Subsystem, this label
10344
synchronizes everything.
10345
 
10346
------------------------------------------
10347
Summary of changes for this label: 12_08_00
10348
 
10349
 
10350
Fixed a problem where named references within the ASL definition
10351
of both OperationRegions and CreateXXXFields did not work
10352
properly.  The symptom was an AE_AML_OPERAND_TYPE during
10353
initialization of the region/field. This is similar (but not
10354
related internally) to the problem that was fixed in the last
10355
label.
10356
 
10357
Implemented both 32-bit and 64-bit support for the BCD ASL
10358
functions ToBCD and FromBCD.
10359
 
10360
Updated all legal headers to include "2000" in the copyright
10361
years.
10362
 
10363
 ------------------------------------------
10364
Summary of changes for this label: 12_01_00
10365
 
10366
Fixed a problem where method invocations within the ASL definition
10367
of both OperationRegions and CreateXXXFields did not work
10368
properly.  The symptom was an AE_AML_OPERAND_TYPE during
10369
initialization of the region/field:
10370
 
10371
  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
10372
[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
10373
(0x3005)
10374
 
10375
Fixed a problem where operators with more than one nested
10376
subexpression would fail.  The symptoms were varied, by mostly
10377
AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
10378
problem that has gone unnoticed until now.
10379
 
10380
  Subtract (Add (1,2), Multiply (3,4))
10381
 
10382
Fixed a problem where AcpiGetHandle didn't quite get fixed in the
10383
previous build (The prefix part of a relative path was handled
10384
incorrectly).
10385
 
10386
Fixed a problem where Operation Region initialization failed if
10387
the operation region name was a "namepath" instead of a simple
10388
"nameseg". Symptom was an AE_NO_OPERAND error.
10389
 
10390
Fixed a problem where an assignment to a local variable via the
10391
indirect RefOf mechanism only worked for the first such
10392
assignment.  Subsequent assignments were ignored.
10393
 
10394
 ------------------------------------------
10395
Summary of changes for this label: 11_15_00
10396
 
10397
ACPI 2.0 table support with backwards support for ACPI 1.0 and the
10398
0.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
10399
the AML  interpreter does NOT have support for the new 2.0 ASL
10400
grammar terms at this time.
10401
 
10402
All ACPI hardware access is via the GAS structures in the ACPI 2.0
10403
FADT.
10404
 
10405
All physical memory addresses across all platforms are now 64 bits
10406
wide. Logical address width remains dependent on the platform
10407
(i.e., "void *").
10408
 
10409
AcpiOsMapMemory interface changed to a 64-bit physical address.
10410
 
10411
The AML interpreter integer size is now 64 bits, as per the ACPI
10412
2.0 specification.
10413
 
10414
For backwards compatibility with ACPI 1.0, ACPI tables with a
10415
revision number less than 2 use 32-bit integers only.
10416
 
10417
Fixed a problem where the evaluation of OpRegion operands did not
10418
always resolve them to numbers properly.
10419
 
10420
------------------------------------------
10421
Summary of changes for this label: 10_20_00
10422
 
10423
Fix for CBN_._STA issue.  This fix will allow correct access to
10424
CBN_ OpRegions when the _STA returns 0x8.
10425
 
10426
Support to convert ACPI constants (Ones, Zeros, One) to actual
10427
values before a package object is returned
10428
 
10429
Fix for method call as predicate to if/while construct causing
10430
incorrect if/while behavior
10431
 
10432
Fix for Else block package lengths sometimes calculated wrong (if
10433
block > 63 bytes)
10434
 
10435
Fix for Processor object length field, was always zero
10436
 
10437
Table load abort if FACP sanity check fails
10438
 
10439
Fix for problem with Scope(name) if name already exists
10440
 
10441
Warning emitted if a named object referenced cannot be found
10442
(resolved) during method execution.
10443
 
10444
 
10445
 
10446
 
10447
 
10448
------------------------------------------
10449
Summary of changes for this label: 9_29_00
10450
 
10451
New table initialization interfaces: AcpiInitializeSubsystem no
10452
longer has any parameters AcpiFindRootPointer - Find the RSDP (if
10453
necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
10454
>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
10455
AcpiLoadTables
10456
 
10457
Note: These interface changes require changes to all existing OSDs
10458
 
10459
The PCI_Config default address space handler is always installed
10460
at the root namespace object.
10461
 
10462
-------------------------------------------
10463
Summary of changes for this label: 09_15_00
10464
 
10465
The new initialization architecture is implemented.  New
10466
interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
10467
AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
10468
 
10469
(Namespace is automatically loaded when a table is loaded)
10470
 
10471
The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
10472
52 bytes to 32 bytes.  There is usually one of these for every
10473
namespace object, so the memory savings is significant.
10474
 
10475
Implemented just-in-time evaluation of the CreateField operators.
10476
 
10477
Bug fixes for IA-64 support have been integrated.
10478
 
10479
Additional code review comments have been implemented
10480
 
10481
The so-called "third pass parse" has been replaced by a final walk
10482
through the namespace to initialize all operation regions (address
10483
spaces) and fields that have not yet been initialized during the
10484
execution of the various _INI and REG methods.
10485
 
10486
New file - namespace/nsinit.c
10487
 
10488
-------------------------------------------
10489
Summary of changes for this label: 09_01_00
10490
 
10491
Namespace manager data structures have been reworked to change the
10492
primary  object from a table to a single object.  This has
10493
resulted in dynamic memory  savings of 3X within the namespace and
10494
2X overall in the ACPI CA subsystem.
10495
 
10496
Fixed problem where the call to AcpiEvFindPciRootBuses was
10497
inadvertently left  commented out.
10498
 
10499
Reduced the warning count when generating the source with the GCC
10500
compiler.
10501
 
10502
Revision numbers added to each module header showing the
10503
SourceSafe version of the file.  Please refer to this version
10504
number when giving us feedback or comments on individual modules.
10505
 
10506
The main object types within the subsystem have been renamed to
10507
clarify their  purpose:
10508
 
10509
ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
10510
ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
10511
ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
10512
 
10513
NOTE: no changes to the initialization sequence are included in
10514
this label.
10515
 
10516
-------------------------------------------
10517
Summary of changes for this label: 08_23_00
10518
 
10519
Fixed problem where TerminateControlMethod was being called
10520
multiple times per  method
10521
 
10522
Fixed debugger problem where single stepping caused a semaphore to
10523
be  oversignalled
10524
 
10525
Improved performance through additional parse object caching -
10526
added  ACPI_EXTENDED_OP type
10527
 
10528
-------------------------------------------
10529
Summary of changes for this label: 08_10_00
10530
 
10531
Parser/Interpreter integration:  Eliminated the creation of
10532
complete parse trees  for ACPI tables and control methods.
10533
Instead, parse subtrees are created and  then deleted as soon as
10534
they are processed (Either entered into the namespace or  executed
10535
by the interpreter).  This reduces the use of dynamic kernel
10536
memory  significantly. (about 10X)
10537
 
10538
Exception codes broken into classes and renumbered.  Be sure to
10539
recompile all  code that includes acexcep.h.  Hopefully we won't
10540
have to renumber the codes  again now that they are split into
10541
classes (environment, programmer, AML code,  ACPI table, and
10542
internal).
10543
 
10544
Fixed some additional alignment issues in the Resource Manager
10545
subcomponent
10546
 
10547
Implemented semaphore tracking in the AcpiExec utility, and fixed
10548
several places  where mutexes/semaphores were being unlocked
10549
without a corresponding lock  operation.  There are no known
10550
semaphore or mutex "leaks" at this time.
10551
 
10552
Fixed the case where an ASL Return operator is used to return an
10553
unnamed  package.
10554
 
10555
-------------------------------------------
10556
Summary of changes for this label: 07_28_00
10557
 
10558
Fixed a problem with the way addresses were calculated in
10559
AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
10560
manifested itself when a Field was  created with WordAccess or
10561
DwordAccess, but the field unit defined within the  Field was less
10562
 
10563
than a Word or Dword.
10564
 
10565
Fixed a problem in AmlDumpOperands() module's loop to pull
10566
operands off of the  operand stack to display information. The
10567
problem manifested itself as a TLB  error on 64-bit systems when
10568
accessing an operand stack with two or more  operands.
10569
 
10570
Fixed a problem with the PCI configuration space handlers where
10571
context was  getting confused between accesses. This required a
10572
change to the generic address  space handler and address space
10573
setup definitions. Handlers now get both a  global handler context
10574
(this is the one passed in by the user when executing
10575
AcpiInstallAddressSpaceHandler() and a specific region context
10576
that is unique to  each region (For example, the _ADR, _SEG and
10577
_BBN values associated with a  specific region). The generic
10578
function definitions have changed to the  following:
10579
 
10580
typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
10581
UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
10582
*HandlerContext, // This used to be void *Context void
10583
*RegionContext); // This is an additional parameter
10584
 
10585
typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
10586
RegionHandle, UINT32 Function, void *HandlerContext,  void
10587
**RegionContext); // This used to be **ReturnContext
10588
 
10589
-------------------------------------------
10590
Summary of changes for this label: 07_21_00
10591
 
10592
Major file consolidation and rename.  All files within the
10593
interpreter have been  renamed as well as most header files.  This
10594
was done to prevent collisions with  existing files in the host
10595
OSs -- filenames such as "config.h" and "global.h"  seem to be
10596
quite common.  The VC project files have been updated.  All
10597
makefiles  will require modification.
10598
 
10599
The parser/interpreter integration continues in Phase 5 with the
10600
implementation  of a complete 2-pass parse (the AML is parsed
10601
twice) for each table;  This  avoids the construction of a huge
10602
parse tree and therefore reduces the amount of  dynamic memory
10603
required by the subsystem.  Greater use of the parse object cache
10604
means that performance is unaffected.
10605
 
10606
Many comments from the two code reviews have been rolled in.
10607
 
10608
The 64-bit alignment support is complete.
10609
 
10610
-------------------------------------------
10611
Summary of changes for this label: 06_30_00
10612
 
10613
With a nod and a tip of the hat to the technology of yesteryear,
10614
we've added  support in the source code for 80 column output
10615
devices.  The code is now mostly  constrained to 80 columns or
10616
less to support environments and editors that 1)  cannot display
10617
or print more than 80 characters on a single line, and 2) cannot
10618
disable line wrapping.
10619
 
10620
A major restructuring of the namespace data structure has been
10621
completed.  The  result is 1) cleaner and more
10622
understandable/maintainable code, and 2) a  significant reduction
10623
in the dynamic memory requirement for each named ACPI  object
10624
(almost half).
10625
 
10626
-------------------------------------------
10627
Summary of changes for this label: 06_23_00
10628
 
10629
Linux support has been added.  In order to obtain approval to get
10630
the ACPI CA  subsystem into the Linux kernel, we've had to make
10631
quite a few changes to the  base subsystem that will affect all
10632
users (all the changes are generic and OS- independent).  The
10633
effects of these global changes have been somewhat far  reaching.
10634
Files have been merged and/or renamed and interfaces have been
10635
renamed.   The major changes are described below.
10636
 
10637
Osd* interfaces renamed to AcpiOs* to eliminate namespace
10638
pollution/confusion  within our target kernels.  All OSD
10639
interfaces must be modified to match the new  naming convention.
10640
 
10641
Files merged across the subsystem.  A number of the smaller source
10642
and header  files have been merged to reduce the file count and
10643
increase the density of the  existing files.  There are too many
10644
to list here.  In general, makefiles that  call out individual
10645
files will require rebuilding.
10646
 
10647
Interpreter files renamed.  All interpreter files now have the
10648
prefix am*  instead of ie* and is*.
10649
 
10650
Header files renamed:  The acapi.h file is now acpixf.h.  The
10651
acpiosd.h file is  now acpiosxf.h.  We are removing references to
10652
the acronym "API" since it is  somewhat windowsy. The new name is
10653
"external interface" or xface or xf in the  filenames.j
10654
 
10655
 
10656
All manifest constants have been forced to upper case (some were
10657
mixed case.)   Also, the string "ACPI_" has been prepended to many
10658
(not all) of the constants,  typedefs, and structs.
10659
 
10660
The globals "DebugLevel" and "DebugLayer" have been renamed
10661
"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
10662
 
10663
All other globals within the subsystem are now prefixed with
10664
"AcpiGbl_" Internal procedures within the subsystem are now
10665
prefixed with "Acpi" (with only  a few exceptions).  The original
10666
two-letter abbreviation for the subcomponent  remains after "Acpi"
10667
- for example, CmCallocate became AcpiCmCallocate.
10668
 
10669
Added a source code translation/conversion utility.  Used to
10670
generate the Linux  source code, it can be modified to generate
10671
other types of source as well. Can  also be used to cleanup
10672
existing source by removing extraneous spaces and blank  lines.
10673
Found in tools/acpisrc/*
10674
 
10675
OsdUnMapMemory was renamed to OsdUnmapMemory and then
10676
AcpiOsUnmapMemory.  (UnMap  became Unmap).
10677
 
10678
A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
10679
When set to  one, this indicates that the caller wants to use the
10680
 
10681
semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
10682
both types.  However, implementers of this  call may want to use
10683
different OS primitives depending on the type of semaphore
10684
requested.  For example, some operating systems provide separate
10685
 
10686
"mutex" and  "semaphore" interfaces - where the mutex interface is
10687
much faster because it  doesn't have all the overhead of a full
10688
semaphore implementation.
10689
 
10690
Fixed a deadlock problem where a method that accesses the PCI
10691
address space can  block forever if it is the first access to the
10692
space.
10693
 
10694
-------------------------------------------
10695
Summary of changes for this label: 06_02_00
10696
 
10697
Support for environments that cannot handle unaligned data
10698
accesses (e.g.  firmware and OS environments devoid of alignment
10699
handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
10700
been added (via configurable macros) in  these three areas: -
10701
Transfer of data from the raw AML byte stream is done via byte
10702
moves instead of    word/dword/qword moves. - External objects are
10703
aligned within the user buffer, including package   elements (sub-
10704
objects). - Conversion of name strings to UINT32 Acpi Names is now
10705
done byte-wise.
10706
 
10707
The Store operator was modified to mimic Microsoft's
10708
implementation when storing  to a Buffer Field.
10709
 
10710
Added a check of the BM_STS bit before entering C3.
10711
 
10712
The methods subdirectory has been obsoleted and removed.  A new
10713
file, cmeval.c  subsumes the functionality.
10714
 
10715
A 16-bit (DOS) version of AcpiExec has been developed.  The
10716
makefile is under  the acpiexec directory.