Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/dev/acpica/changes.txt
105584 views
1
----------------------------------------
2
12 December 2025. Summary of changes for version 20251212:
3
4
Major changes:
5
6
Update many existing ACPI tables to follow the ACPI 6.6 Specification
7
changes and/or newly approved ASWG ECRs - multiple contributors
8
9
Add a few new ACPI tables: IOVT, SWFT, KEYP - multiple contributors
10
11
Add many new UUIDs, Hardware/PnP/ACPI IDs - Armin Wolf and Pawel
12
Chmielewski
13
14
Support a few new special methods (_xxx format) and modify few existing
15
ones to stay compliant with the latest ACPI Specification changes
16
17
Improve existing tools/utilities and fix/clean up some problematic usages
18
along with patching certain vulnerabilities
19
20
21
----------------------------------------
22
7 August 2025. Summary of changes for version 20250807:
23
24
Major changes:
25
26
Added option to skip the global lock for SMM - Huacai Chen
27
28
Fixed non-NUL terminated string implementations - Ahmed Salem
29
30
Fixed CCEL and CDAT templates - Ahmed Salem
31
32
Fixed a major Linux kernel bug (UAF) that was triggered by unequal number
33
of method parameters (definition) vs arguments (invocation) in different
34
places - Peter Williams, Hans de Goede, Rafael Wysocki
35
36
Define distinct D3 states (D3Hot and D3Cold) that help clarify the device
37
behavior support - Aymeric Wibo
38
39
A few cleanups, improvements to existing table supports, small fixes,
40
spelling corrections etc.
41
42
43
----------------------------------------
44
4 April 2025. Summary of changes for version 20250404:
45
46
Major changes:
47
48
Update all the copyright continuation year to 2025 in the license header
49
of all files
50
51
Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony
52
Luck & V L Sunil)
53
54
Add a license file to the project which is a great improvement (Dionna
55
Glaze)
56
57
Update DMAR and TPM2 tables to support their latest versions (Alexey
58
Neyman and Stuart Yoder)
59
60
A few fixes including local cache allocation, FFixedHW Region, attribute
61
packing, string vs. non-string char array, vsnprintf()etc. along with
62
some comments, spelling errors and code alignment (multiple awesome
63
contributors)
64
65
66
----------------------------------------
67
12 December 2024. Summary of changes for version 20241212:
68
69
Major changes:
70
71
Fix 2 critical CVE addressing memory leaks - Seunghun Han
72
73
EINJ V2 updates - Zaid Alali (Ampere Computing)
74
75
CDAT updates - Ira Weiny (Intel Corporation)
76
77
Fix mutex handling, do not release ones that were never acquired - Daniil
78
Tatianin
79
80
Experiment with new tag name format Ryyyy_mm_dd to solve chronological
81
sorting problems
82
83
84
----------------------------------------
85
27 September 2024. Summary of changes for version 20240927:
86
87
Major changes:
88
89
Fix the acpixf.h file which caused issues for the last release (before
90
this) 20240827
91
92
Fix the pointer offset for the SLIC table
93
94
Verify the local environment and GitHub commits are all in sync which was
95
a problem with the second from last release (before this)20240322 (aka
96
20240323 - date issue)
97
98
99
100
----------------------------------------
101
27 August 2024. Summary of changes for version 20240827:
102
103
Major changes:
104
105
Fix the PHAT table working: ensure that the PHAT firmware health record
106
offset works correctly, fix various sub-table offsets, prevent
107
segmentation faults when encountering invalid device paths. Contributed
108
by: Armin Wolf <[email protected]>
109
110
Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin
111
<[email protected]>
112
113
Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone
114
(Fedora) <[email protected]>
115
116
Add support for QWordPCC and DWordPCC by Jose Marinho (ARM)
117
118
Fix the integer to hex string conversions by Armin Wolf
119
120
Detecting FACS in reduced HW mode and allowing setting waking vector
121
thereby waking up from S3 state
122
123
Fixing issues with crossing page boundaries when mapping operation
124
regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD)
125
126
Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables
127
128
Fix multiple issues with table parsing, compilation and disassembly by
129
Myra DeMere (Google)
130
131
Allow for more flexibility in _DSM usage.
132
133
134
----------------------------------------
135
22 March 2024. Summary of changes for version 20240322:
136
137
Major changes:
138
139
Update all the license header year from 2023 to 2024.
140
141
Fix table argument ordering to work properly with iasl.
142
143
Get rid of the annoying repeated warning types in MSVC and Windows.
144
145
Fix a test in ASLTS with edge case failure.
146
147
Fix a couple of issues with how GPEs are counted and enabled.
148
149
Add new tables for various architectures/OS, mainly RISC-V and also
150
update many more.
151
152
Add an option to either make the output deterministic or non-
153
deterministic.
154
155
Remove redundant checks, duplicated code and fix spellings in various
156
files.
157
158
Fix flex arrays for C++ compilers and also make ACPICA overall more
159
compatible with different compilers which throw warnings related to
160
memory sanitization etc.
161
162
163
----------------------------------------
164
28 June 2023. Summary of changes for version 20230628:
165
166
0) Global changes:
167
168
Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN:
169
?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of
170
range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag
171
to Timer (since there are no runtime arguments). Reported by: Abhishek
172
Mainkar [email protected].
173
174
Added a define for size of acpi_srat_generic_affinity DeviceHandle.
175
Replaced a magic number with a define. The Linux kernel code will utilize
176
this. Reported by Dave Jiang [email protected].
177
178
Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
179
180
1) ACPICA kernel-resident subsystem:
181
182
Added port definitions for CDAT SSLBIS. Add upstream port and any port
183
definitions for SSLBIS. Reported by: Dave Jiang [email protected].
184
185
Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE ->
186
ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang
187
[email protected].
188
189
1) ACPICA kernel-resident subsystem:
190
191
Fix GCC 12 dangling-pointer warning. We're storing a persistent pointer
192
to an ephemeral local variable which technically is a dangling pointer
193
and the compiler is correct. However, since we never indirect the
194
pointer, this is a safe operation and we can suppress the warning.
195
196
Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly
197
so we must include it explicitly or we won't have the type definition for
198
uintptr_t.
199
200
2) iASL Compiler/Disassembler and ACPICA tools:.
201
202
IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table
203
is updated with new nodes. Add compile and dump functionality for these
204
new structures.
205
206
AcpiExec: Added a new command, ?interrupt?. The Interrupt command
207
simulates an interrupt with a IntID (GSIV) equal to the first argument of
208
the call/invocation. The acpiexec code simulates the behavior by OSPM:
209
execute the _EVT method of the GED device associated with that IntID.
210
Submitted by: Jose Marinho [email protected].
211
212
AcpiExec: Detect GED device and keep track of _EVT. The GED device is
213
described by a _HID of ACPI0013. This code traverses the namespace
214
identifying all GED devices. For each GED device in the namespace we
215
record the Interrupt object and the _EVT method. This information is used
216
when an interrupt is simulated via the ?interrupt? command. Submitted by:
217
Jose Marinho [email protected].
218
----------------------------------------
219
31 March 2023. Summary of changes for version 20230331:
220
221
This release is available at https://acpica.org/downloads
222
223
0) Global changes:
224
225
226
Update all copyright notices to the year 2023. This effects all source
227
modules, as well as utility signons.
228
Add OS-specific support for Zephyr RTOS.
229
Fix miscellaneous code that accesses various objects.
230
Remove some dead code.
231
Add C ?Flexible Array? support.
232
Add support for 64 bit LoongArch compilation.
233
Add first batch of RISC-V related definitions.
234
Performed a global automated update to remove tabs, fix indentation
235
issues, etc.
236
237
1) ACPICA kernel-resident subsystem:
238
239
hwvalid: Drop port I/O validation.
240
241
2) ACPICA tools and utilities:
242
243
iASL: Added full macro support in the preprocessor. Example:
244
#define ABCD(a,b,c,d) a+b+c-d
245
246
Known macro support limitations (at this time):
247
No support for multi-line #define macros (backslash continuation
248
lines)
249
No support for the C-style ternary operator
250
No support for the stringizing operator (#)
251
No support for the concatenation (token pasting) operator (##)
252
No support for variable number of macro arguments
253
254
Add support for AMD Secure Processor Table (ASPT) version 1.
255
Add support for Arm's MPAM ACPI table version 2.
256
ACPI 6.5: MADT: add support for trace buffer extension in GICC.
257
Headers: Delete bogus NodeArray array of pointers from AEST table.
258
PHAT table support is still ongoing.
259
260
261
----------------------------------------
262
20 October 2022. Summary of changes for version 20221020:
263
264
This release is available at https://acpica.org/downloads
265
266
0) Global changes:
267
268
Allow disabling of -Werror. For distro maintainers having `-Werror` can
269
delay update of GCC. Since every GCC release might add new warnings that
270
were not yet captured, it might break the build of packages. With this
271
change, distros can now build with `NOWERROR=TRUE` instead of patching
272
either the errors or the makefiles. The default behavior keeps on using
273
`-Werror`.
274
275
1) ACPICA kernel-resident subsystem:
276
277
Added support for FFH Operation Region special context data. FFH(Fixed
278
Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
279
first approach[1]. It requires special context data similar to GPIO and
280
Generic Serial Bus as it needs to know platform specific offset and
281
length.
282
283
Reverted this commit "executer/exsystem: Warn about sleeps greater than
284
10 ms." Due to user complaints about valid sleeps greater than 10ms seen
285
in some existing machines -- generating lots of warnings.
286
287
Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
288
EBDA region must be at least 1KiB in size. Because this is not
289
guaranteed, it might happen that while scanning the memory for RSDP
290
pointer, the kernel touches memory above 640KiB. This is unwanted as the
291
VGA memory range may not be decoded or even present when running under
292
virtualization.
293
294
Check that EBDA pointer is in valid memory. If the memory at 0x40e is
295
uninitialized, the retrieved physical memory address of EBDA may be
296
beyond the low memory (i.e. above 640K). If so, the kernel may
297
unintentionally access the VGA memory, that might not be decoded or even
298
present in case of virtualization.
299
300
2) iASL Compiler/Disassembler and ACPICA tools:
301
302
Completed the existing partial support for the CDAT "table". Although
303
this isn't technically an ACPI table (It doesn't go into the XSDT), it is
304
possible to support this table in the Data Table compiler. Created one
305
new file, "utilities/utcksum.c", used to centralize checksum
306
generation/validation into one location. Includes changes to makefiles
307
and MSVC project files.
308
309
Updated support for the IORT table - update to version E.e
310
311
Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
312
313
iASL: Added CCEL table to both compiler/disassembler.
314
315
iASL: NHLT table: Fixed compilation of optional undocumented fields
316
317
iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
318
("iASL: Add CCEL table to both compiler/disassembler") introduced the
319
iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
320
table member reference. To fix it, change ACPI_TDEL_OFFSET with
321
ACPI_CCEL_OFFSET.
322
323
----------------------------------------
324
31 March 2022. Summary of changes for version 20220331:
325
326
0) Global changes:
327
328
Update all copyright notices to the year 2022. This effects all source
329
modules, as well as utility signons.
330
331
332
1) ACPICA kernel-resident subsystem:
333
334
For the ASL Sleep() operator, issue a warning if the sleep value is
335
greater than 10 Milliseconds. Quick boottime is important, so warn about
336
sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
337
ms, so excessive delays should be called out. 10 ms is chosen randomly,
338
but three of such delays would already make up ten percent of the
339
boottime.
340
341
Namespace: Avoid attempting to walk the Namespace if the Namespace does
342
not exist.
343
344
AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
345
LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
346
pass/fail integer. Now load returns a pass/fail integer, as well as
347
storing the return value in an optional 2nd argument.
348
349
Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
350
"performing pointer subtraction with a null pointer has undefined
351
behavior" compiler warnings, use uintptr_t and offsetof() that are always
352
available during Linux kernel builds to define ACPI_UINTPTR_T and the
353
ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
354
in the Linux kernel.
355
356
Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
357
by superm1.
358
359
executer/exsystem: Inform users about ACPI spec violation for the Stall()
360
operator. Values greater than 100 microseconds violate the ACPI
361
specification, so warn users about it. From the ACPI Specification
362
version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
363
> The implementation of Stall is OS-specific, but must not relinquish
364
> control of the processor. Because of this, delays longer than 100
365
> microseconds must use Sleep instead of Stall.
366
367
368
2) iASL Compiler/Disassembler and ACPICA tools:
369
370
Data Table Compiler/Disassembler: Add support for the APMT table - ARM
371
Performance Monitoring Unit table. Submitted by @bwicaksononv.
372
373
Data Table Compiler/Disassembler: For MADT, add support for the OEM-
374
defined subtables (Types 0x80-0x7F).
375
376
Data Table Compiler: Fixed a problem with support for the SDEV table,
377
where a subtable Length was not computed correctly.
378
379
Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
380
Acpi table support.
381
382
Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
383
add template. Submitted by MasterDrogo.
384
385
Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
386
iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
387
readability of the code.
388
iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
389
Undocumented bytes at the end of Endpoint Descriptor can be present
390
independently of Linux-specific structures. Their size can also vary.
391
iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
392
bytes of size and then an amount of bytes specified by size. All of the
393
terminators that I've seen had a size equal to 4, but theoretically it
394
can vary.
395
396
iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
397
398
iASL: Remove a remark due to excessive output. Removed a remark for
399
duplicate Offset() operators, due to a user complaint.
400
401
----------------------------------------
402
17 December 2021. Summary of changes for version 20211217:
403
404
1) ACPICA kernel-resident subsystem:
405
406
Hardware: Do not flush CPU cache when entering S4 and S5. According to
407
ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
408
S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
409
the sleep state. Blind cache flush on entering S5 causes problems for
410
TDX.
411
412
Avoid subobject buffer overflow when validating RSDP signature. Since the
413
Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
414
it is only to a 4-char array, and so trying to read past the 4th
415
character, as will be done when it is an RSDP, reads beyond the bounds of
416
the accessed member. Contributed by jrtc27.
417
418
Add support for PCC Opregion special context data. PCC Opregion added in
419
ACPIC 6.3 requires special context data similar to GPIO and Generic
420
Serial Bus as it needs to know the internal PCC buffer and its length as
421
well as the PCC channel index when the opregion handler is being executed
422
by the OSPM. Adds support for the special context data needed by PCC
423
Opregion. Submitted by Sudeep Holla <[email protected]>
424
425
2) iASL Compiler/Disassembler and ACPICA tools:
426
427
iASL: Completed compiler support for the NHLT ACPI table.
428
429
iASL/NHLT table: Fixed a reported problem where a fault would occur
430
during disassembly of a "Linux-Specific" section if the "Specific Data"
431
part was not present.
432
433
iASL: Added full support (compiler and disassembler) for the AGDI ACPI
434
table. Contributed by: Ilkka Koskinen <[email protected]>.
435
436
iASL: Added full support for the TDEL ACPI table.
437
438
iASL table compiler: FADT support updates:
439
1) Allow the 32-bit DSDT address to be zero.
440
2) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
441
442
iASL: Fix unaligned accesses to local cache allocations. Contributed by
443
jrtc27.
444
445
iASL: Open binary input files in binary mode, not text mode Affects
446
binary input AML files, as well as binary data table files, for
447
disassembly.
448
449
----------------------------------------
450
30 September 2021. Summary of changes for version 20210930:
451
452
This release is available at https://acpica.org/downloads
453
454
1) ACPICA kernel-resident subsystem:
455
456
Hardware: Avoid evaluating methods too early during system resume. During
457
wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
458
and it tries to get memory from the OS in order to evaluate a control
459
method, but if KFENCE is enabled in the Linux kernel, the memory
460
allocation attempt causes an IRQ work to be queued and a self-IPI to be
461
sent to the CPU running the code which requires the memory controller to
462
be ready, so if that happens too early in the wakeup path, it doesn't
463
work.
464
465
Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
466
upfront, when preparing to enter a given sleep state, and saving the data
467
obtained by it for later use during system wakeup.
468
469
Added a new _OSI string, "Windows 2020". Posted by superm1.
470
471
2) iASL Compiler/Disassembler and ACPICA tools:
472
473
iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
474
objects:
475
New/latest rules: Under a Device Object:
476
1) If _PRS is present, must have _CRS and _SRS
477
2) If _SRS is present, must have _PRS (_PRS requires _CRS and
478
_SRS)
479
3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
480
requires _CRS and _SRS)
481
4) If _SRS is present, probably should have a _DIS (Remark only)
482
483
iASL table disassembler: Added disassembly support for the NHLT ACPI
484
table. Note: support for Vendor-defined microphone arrays and SNR
485
extensions are not supported at this time -- mostly due to a lack of
486
example tables. Actual compiler support for NHLT is forthcoming.
487
488
Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
489
uses the same subtable structure as the existing Generic Initiator
490
Affinity type.
491
492
Added the flag for online capable in the MADT, introduced in ACPI 6.3.
493
Posted by superm1.
494
495
3) ACPICA documentation: Updated the legal info (that appears at the
496
start of the Documents) to clarify distribution rights that are granted.
497
498
499
----------------------------------------
500
30 July 2021. Summary of changes for version 20210730:
501
502
This release is available at https://acpica.org/downloads
503
504
1) ACPICA kernel-resident subsystem:
505
506
2) iASL Compiler/Disassembler and ACPICA tools:
507
508
iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
509
Under the Device Object:
510
1) If _DIS is present, must have a _CRS and _SRS
511
2) If _PRS is present, must have a _CRS, _DIS, and _SRS
512
3) If _SRS is present, must have a _CRS and _DIS
513
A warning will be issued for each of these cases.
514
Note: For existing ASL/projects, these warnings may be disabled by
515
specifying this on the command line:
516
"-vw 3141"
517
518
iASL Table Disassembler/Table compiler: Fix for WPBT table with no
519
command-line arguments. Handle the case where the Command-line
520
Arguments table field does not exist (zero).
521
522
Headers: Add new DBG2 Serial Port Subtypes
523
The Microsoft Debug Port Table 2 (DBG2) specification revision
524
September 21, 2020 comprises additional Serial Port Subtypes [1].
525
Reflect that in the actbl1.h header file. Submitted by:
526
semihalf-wojtas-marcin
527
528
iASL: Add full support for the AEST table (data compiler)
529
Includes support in the table compiler and the disassembler.
530
531
Add PRMT module header to facilitate parsing.
532
This structure is used in to parse PRMT in other Operating Systems
533
that relies on using subtable headers in order to parse ACPI tables.
534
Although the PRMT doesn't have "subtables" it has a list of module
535
information structures that act as subtables.
536
537
iASL: Table disassembler: Add missing strings to decode subtable types.
538
Includes the MADT and CEDT tables.
539
540
541
----------------------------------------
542
04 June 2021. Summary of changes for version 20210604:
543
544
1) ACPICA kernel-resident subsystem:
545
546
Cleaned up (delete) the context mutex during local address handler object
547
deletion.
548
549
Fixed a memory leak caused by the _CID repair function.
550
551
Added support for PlatformRtMechanism OperationRegion handler. Adds a new
552
utility function, AcpiUtConvertUuidToString. Writing a buffer to a
553
PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
554
input buffer contains 26 bytes containing 9 bytes of status, a command
555
byte and a 16-byte UUID. This change will simply pass this incoming
556
buffer to a handler registered by the OS.
557
558
2) iASL Compiler/Disassembler and ACPICA tools:
559
560
Added full support for the PRMT ACPI table (Platform Runtime Mechanism
561
Table). Includes support in the iASL compiler, the disassembler, and the
562
template generator.
563
564
Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
565
566
Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
567
table.
568
569
Added full support for the SVKL (Storage Volume Key Location Table) ACPI
570
table. Header file support from Kuppuswamy Sathyanarayanan
571
<[email protected]>.
572
573
Completed full support for the IVRS (I/O Virtualization Reporting
574
Structure) ACPI table. Added compiler support for IVRS, updated
575
disassembler support. Adds a new utility, UtIsIdInteger, to determine if
576
a HID/CID is an integer or a string.
577
578
Headers: Added more structs to the CEDT table: CXL fixed memory window
579
structure.
580
581
ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
582
583
----------------------------------------
584
31 March 2021. Summary of changes for version 20210331:
585
586
This release is available at https://acpica.org/downloads, and includes
587
all ACPI 6.4 support
588
589
1) ACPICA kernel-resident subsystem:
590
ACPI 6.4: iASL: deprecate DDBHandleObj keyword
591
Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
592
allocating an object using kmalloc(), but then frees it
593
using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
594
Fixed a race condition in generic serial bus operation region handler.
595
Fixed by Hans de Goede.
596
597
2) iASL Compiler/Disassembler and ACPICA tools:
598
599
ACPI 6.4: NFIT: add Location Cookie field
600
ACPI 6.4: HMAT: add new fields/flags
601
ACPI 6.4: Add new flags in SRAT
602
ACPI 6.4: add SDEV secure access components
603
ACPI 6.4: add Csi2Bus resource template
604
ACPI 6.4: add support for PHAT table
605
ACPI 6.4: add support for PMTT table
606
Add disassembly support for the IVRS table. Compilation of the table is
607
not yet complete.
608
Fixed a potential infinite loop due to type mismatch. The for-loop is
609
using a UINT8 counter and comparing the upper
610
limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
611
the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
612
will wrap around to zero and the loop will never exit. I suspect
613
the AslGbl_ExpectedMessagesIndex is never that high, but fixing
614
this does future proof the code and cleans up static analysis
615
warnings.Colin King.
616
iASL/TableCompiler: update it with IORT table E.b revision changes. From
617
shamiali2008.
618
iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
619
off-by: Jean-Philippe Brucker.
620
iASL/TableCompiler: Add compilation support for CEDT table. Also, update
621
the CEDT template.
622
623
----------------------------------------
624
05 January 2021. Summary of changes for version 20210105:
625
626
This release is available at https://acpica.org/downloads
627
628
629
1) ACPICA kernel-resident subsystem:
630
631
Updated all copyrights to 2021. This affects all ACPICA source code
632
modules.
633
634
2) iASL Compiler/Disassembler and ACPICA tools:
635
636
ASL test suite (ASLTS): Updated all copyrights to 2021.
637
638
Tools and utilities: Updated all signon copyrights to 2021.
639
640
iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
641
MTMR. Al Stone.
642
643
644
----------------------------------------
645
17 December 2020. Summary of changes for version 20201217:
646
647
This release is available at https://acpica.org/downloads
648
649
650
1) ACPICA kernel-resident subsystem:
651
652
Note: The implementation of ACPI 6.4 is underway, and is expected to be
653
mostly finished next month, when ACPI 6.4 is released.
654
655
From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
656
several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
657
enable this.
658
659
AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
660
These included a few casts, as well as a null pointer check.
661
662
Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
663
implicit fallthrough, as well as __attribute__((__fallthrough__)) and
664
comments to explicitly denote that cases of fallthrough were intentional.
665
Clang also supports this warning and statement attribute, but not the
666
comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
667
of GCC. With assistance from @nickdesaulniers.
668
669
2) iASL Compiler/Disassembler and ACPICA tools:
670
671
Added improvement to method call analysis by saving the return type and
672
relaxing certain cases of type checking.
673
674
iASL Table Compiler: Improved info messages. Added a message to the -T
675
option for when the default template (DSDT) is used.
676
Also added a note for when multiple SSDTs are created with a DSDT that
677
the SSDTs are created in the same file as the DSDT.
678
679
680
----------------------------------------
681
682
13 November 2020. Summary of changes for version 20201113:
683
684
This release is available at https://acpica.org/downloads
685
686
687
1) ACPICA kernel-resident subsystem:
688
689
Interpreter: fixed a memory leak by using use existing buffer in _HID
690
repair. There was a memory leak that occurred when a _CID object is
691
defined as a package containing string objects. When _CID is checked for
692
any possible repairs, it calls a helper function to repair _HID (because
693
_CID basically contains multiple _HID entries). The _HID repair function
694
assumes that string objects are standalone objects that are not contained
695
inside of any packages. The _HID repair function replaced the string
696
object with a brand new object and attempted to delete the old object by
697
decrementing the reference count of the old object. Strings inside of
698
packages have a reference count of 2 so the _HID repair function leaves
699
this object in a dangling state and causes a memory leak. Instead of
700
allocating a brand new object and removing the old object, use the
701
existing object when repairing the _HID object.
702
703
Added function trace macros to improve namespace debugging. The namespace
704
repair mechanism does not have function tracing macros. Add several trace
705
macros to improve debuggability.
706
707
Handle "orphan" _REG methods for GPIO OpRegions. Before this change
708
AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
709
matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
710
Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
711
The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
712
UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
713
to potential issues with checks for OpRegion availability, or in other
714
words checks if _REG has been called for the OpRegion which the ACPI code
715
wants to use. Except for the "orphan" EC handling, ACPICA core does not
716
call _REG on an ACPI node which does not define an OpRegion matching the
717
type being registered; and the reference design DSDT, from which most
718
Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
719
UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
720
were assigned ACPI controlled functions in the reference design. Together
721
this leads to the perfect storm, at least on the Cherry Trail based
722
Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
723
and has added the Cherry Trail specific UserDefined(0x93) opregion to its
724
GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
725
availability check for the standard GeneralPurposeIo OpRegion. This
726
clearly is a bug in the DSDT, but this does work under Windows. This
727
issue leads to the intel vbtn driver reporting the device always being in
728
tablet-mode at boot, even if it is in laptop mode. Which in turn causes
729
userspace to ignore touchpad events. So in other words, this issue causes
730
the touchpad to not work at boot. This change fixes this by extending the
731
"orphan" _REG method handling to also apply to GPIO address-space
732
handlers.
733
734
735
2) iASL Compiler/Disassembler and ACPICA tools:
736
737
iASL: Added more info to namespace dump file (-ln option). In a separate
738
section of the dump file (after the main namespace dump), emit the full
739
pathname for each namespace node, its type, and the ASL filename and line
740
number where it is declared.
741
742
AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
743
x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
744
is omitted, all iASL exceptions are displayed.
745
746
iASL: Use StringLiteral instead of StringData for some ASL macros. The
747
use of the stringData rule allows for some "string" oriented opcodes
748
(Such as ToString, ToHexString, etc.) None of which make sense with the
749
macros in question. This change modifies the StringData part of the rule
750
for these macros to a simple string literal - thus disallowing the use
751
of ToString, ToHexString, etc.
752
The following ASL operators (macros) are affected:
753
EisaId
754
Fprintf
755
Printf
756
ToUuid
757
Unicode
758
Note: The MS compiler requires the use of string literals for these
759
operators also.
760
761
iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
762
the list of "known" UUIDs for the input to the ToUUID macro.
763
764
Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
765
NFIT table.
766
767
768
----------------------------------------
769
770
25 September 2020. Summary of changes for version 20200925:
771
772
This release is available at https://acpica.org/downloads
773
774
775
1) ACPICA kernel-resident subsystem:
776
777
Preserve memory opregion mappings. The ACPICA's strategy with respect to
778
the handling of memory mappings associated with memory operation regions
779
is to avoid mapping the entire region at once which may be problematic at
780
least in principle (for example, it may lead to conflicts with
781
overlapping mappings having different attributes created by drivers). It
782
may also be wasteful, because memory opregions on some systems take up
783
vastchunks of address space while the fields in those regions actually
784
accessed by AML are sparsely distributed.
785
786
For this reason, a one-page "window" is mapped for a given opregion on
787
the first memory access through it and if that "window" does not cover an
788
address range accessed through that opregion subsequently, it is unmapped
789
and a new "window" is mapped to replace it. Next, if the new "window" is
790
not sufficient to access memory through the opregion in question in the
791
future, it will be replaced with yet another "window" and so on. That
792
may lead to a suboptimal sequence of memory mapping and unmapping
793
operations, for example if two fields in one opregion separated from each
794
other by a sufficiently wide chunk of unused address space are accessed
795
in an alternating pattern.
796
797
Added support for 64 bit risc-v compilation. Useful for acpica tools and
798
incorporating ACPICA into the Firmware Test Suite. Colin Ian King
799
<[email protected]>.
800
801
Added support for SMBus predefined names (from SMBus Control Method
802
Interface Specification, Version 1.0, December 10, 1999. New predefined
803
names:
804
_SBA
805
_SBI
806
_SBR
807
_SBT
808
_SBW
809
810
AML Disassembler: Added a new command, "All <NameSeg>". This command will
811
evaluate all objects in the current namespace whose NameString contains
812
the input NameSeg as the last element of the NameString. Useful for
813
debugging.
814
815
816
2) iASL Compiler/Disassembler and ACPICA tools:
817
818
iASL: fixed a crash that occurred when predefined objects return packages
819
with lengths that exceed the initializer list.
820
821
iASL: added more detail to external resolution error message when
822
compiling multiple definition blocks.
823
824
iASL: added a remark for an attempt to create a nameseg or namestring
825
containing lower-case letters. This should prevent declaring multiple
826
namesegs or namestrings in an attempt to refer to different objects (with
827
different cases), but actually refer to the same object(s).
828
829
iASL: improve alias analysis by saving object type. If the alias is a
830
method type, the parameter count is also recorded.
831
832
AcpiExec: Increase the default loop timeout value. Was 1 second, is now
833
10 seconds. Prevents unnecessary timeouts when executing control methods
834
from the command line.
835
836
AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
837
list. Includes:
838
Memory Device
839
Generic Buttons Device
840
NVDIMM Root Device
841
Control Method Battery
842
Device Graphs for _DSD method
843
Hierarchical Data Extension
844
....ARM CoreSight Graph
845
846
----------------------------------------
847
848
849
17 July 2020. Summary of changes for version 20200717:
850
851
This release is available at https://acpica.org/downloads
852
853
854
1) ACPICA kernel-resident subsystem:
855
856
Do not increment OperationRegion reference counts for field units. Recent
857
server firmware has revealed that this reference count can overflow on
858
large servers that declare many field units (thousands) under the same
859
OperationRegion. This occurs because each field unit declaration will add
860
a reference count to the source OperationRegion. This release solves the
861
reference count overflow for OperationRegion objects by preventing
862
fieldUnits from incrementing their parent OperationRegion's reference
863
count.
864
865
Replaced one-element arrays with flexible-arrays, which were introduced
866
in C99.
867
868
Restored the readme file containing the directions for generation of
869
ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
870
located at: generate/msvc2017/readme.txt
871
872
2) iASL Compiler/Disassembler and ACPICA tools:
873
874
iASL: Fixed a regression found in version 20200214. Prevent iASL from
875
emitting an extra byte of garbage data when control methods declared a
876
single parameter type without using braces. This extra byte is known to
877
cause a blue screen on the Windows AML interpreter.
878
879
iASL: Made a change to allow external declarations to specify the type of
880
a named object even when some name segments are not defined.
881
This change allows the following ASL code to compile (When DEV0 is not
882
defined or not defined yet):
883
884
External (\_SB.DEV0.OBJ1, IntObj)
885
External (\_SB.DEV0, DeviceObj)
886
887
iASL: Fixed a problem where method names in "Alias ()" statement could be
888
misinterpreted. They are now interpreted correctly as method invocations.
889
890
iASL: capture a method parameter count (Within the Method info segment,
891
as well as the argument node) when using parameter type lists.
892
893
----------------------------------------
894
895
896
28 May 2020. Summary of changes for version 20200528:
897
898
899
1) ACPICA kernel-resident subsystem:
900
901
Removed old/obsolete Visual Studio files which were used to build the
902
Windows versions of the ACPICA tools. Since we have moved to Visual
903
Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
904
project files. The new subdirectory and solution file are located at:
905
906
acpica/generate/msvc2017/AcpiComponents.sln
907
908
909
2) iASL Compiler/Disassembler and ACPICA tools:
910
911
iASL: added support for a new OperationRegion Address Space (subtype):
912
PlatformRtMechanism. Support for this new keyword is being released for
913
early prototyping. It will appear in the next release of the ACPI
914
specification.
915
916
iASL: do not optimize the NameString parameter of the CondRefOf operator.
917
In the previous iASL compiler release, the NameString parameter of the
918
CondRefOf was optimized. There is evidence that some implementations of
919
the AML interpreter do not perform the recursive search-to-parent search
920
during the execution of the CondRefOf operator. Therefore, the CondRefOf
921
operator behaves differently when the NameString parameter is a single
922
name segment (a NameSeg) as opposed to a full NamePath (starting at the
923
root scope) or a NameString containing parent prefixes.
924
925
iASL: Prevent an inadvertent remark message. This change prevents a
926
remark if within a control method the following exist:
927
1) An Operation Region is defined, and
928
2) A Field operator is defined that refers to the region.
929
This happens because at the top level, the Field operator does not
930
actually create a new named object, it simply references the operation
931
region.
932
933
Removed support for the acpinames utility. The acpinames was a simple
934
utility used to populate and display the ACPI namespace without executing
935
any AML code. However, ACPICA now supports executable opcodes outside of
936
control methods. This means that executable AML opcodes such as If and
937
Store opcodes need to be executed during table load. Therefore, acpinames
938
would need to be updated to match the same behavior as the acpiexec
939
utility and since acpiexec can already dump the entire namespace (via the
940
'namespace' command), we no longer have the need to maintain acpinames.
941
942
In order to dump the contents of the ACPI namespace using acpiexec,
943
execute the following command from the command line:
944
945
acpiexec -b "n" [aml files]
946
947
----------------------------------------
948
949
950
30 April 2020. Summary of changes for version 20200430:
951
952
1) ACPICA kernel-resident subsystem:
953
954
Cleaned up the coding style of a couple of global variables
955
(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
956
AcpiProtocolLengths was made static, and the definition of
957
AcpiGbl_NextCmdNum was moved to acglobal.h.
958
959
960
2) iASL Compiler/Disassembler and ACPICA tools:
961
962
iASL DataTable Compiler: Fixed a segfault on errors that aren't directly
963
associated with a field.
964
965
Disassembler: has been made more resilient so that it will continue to
966
parse AML even if the AML generates ACPI namespace errors. This enables
967
iASL to disassemble some AML that may have been compiled using older
968
versions of iASL that no longer compile with newer versions of iASL.
969
970
iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
971
was a mixup where _NIG required one parameter and _NIH required zero
972
parameters. This change swaps these parameter requirements. Now it is
973
required that _NIH must be called with one parameter and _NIG requires
974
zero parameters.
975
976
iASL: Allow use of undefined externals as long as they are protected by
977
an if (CondRefOf (...)) block when compiling multiple definition blocks.
978
979
iASL: Fixed the type override behavior of named objects that are declared
980
as External. External declarations will no longer override the type of
981
the actual definition if it already exists.
982
983
AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
984
command line wildcard support on Windows. Note: the AcpiNames utility is
985
essentially redundant with the AcpiExec utility (using the "namespace"
986
command) and is therefore deprecated. It will be removed in future
987
releases of ACPICA.
988
989
Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
990
operators. The disassembler is intended to emit existing ASL code as-is.
991
Therefore, error messages emitted during disassembly should be ignored or
992
handled in a way such that the disassembler can continue to parse the
993
AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
994
parsing for create operators in order to complete parsing ASL termlists.
995
996
iASL DataTable Compiler: IVRS table: fix potentially uninitialized
997
variable warning. Some compilers catch potential uninitialized variables.
998
This is done by examining branches of if/else statements. This change
999
replaces an "else if" with an "else" to fix the uninitialized variable
1000
warning.
1001
1002
1003
----------------------------------------
1004
26 March 2020. Summary of changes for version 20200326:
1005
1006
1007
1) ACPICA kernel-resident subsystem:
1008
1009
Performed a code clean-up to prevent build errors on early versions of
1010
GCC-10.
1011
1012
Added the NHLT table signature. iASL data table compiler/disassembler
1013
support for this table is coming soon.
1014
1015
1016
2) iASL Compiler/Disassembler and ACPICA tools:
1017
1018
AcpiExec: Fixed several problems with the namespace initialization file
1019
(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
1020
errors, several seg faults, and enhancements to line parsing within the
1021
init file. In addition, each object found in the init file and it's new
1022
value is displayed, as well as any such entries that do not have a
1023
corresponding name in the namespace. For reference, the syntax for the
1024
various supported data types are presented below:
1025
PCHG 0x777788889999BBBB // Integer
1026
\DEV1.STR1 "XYZ" // String
1027
BUF1 (88 99 AA) // Buffer
1028
PKG1 [0x1111 0x2222] // Package
1029
\BF1 0x7980 // BufferField
1030
RCRV 0x0123456789ABCDEF // Field Unit
1031
1032
iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
1033
can be used anywhere in a given ASL file to configure iASL to expect an
1034
iASL compiler error code on the line where this macro was placed. If the
1035
error code does not exist, an error is generated. This is intended to be
1036
used for ACPICA's ASL test suite, but can be used by ASL developers as
1037
well.
1038
1039
iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
1040
IVRS table parsing supported only IVHD type 10h structures. Parsing an
1041
IVHD type 11h caused the iasl to report unknown subtable type. Add
1042
necessary structure definition for IVHD type 11h and apply correct
1043
parsing method based on subtable type. Micha? ?ygowski.
1044
1045
iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
1046
According to AMD IOMMU Specification Revision 3.05 the reserved field
1047
should be IOMMU Feature Reporting. Change the name of the field to the
1048
correct one. Micha? ?ygowski.
1049
1050
acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
1051
based on suggestions by David Seifert and Benjamin Berg.
1052
1053
iASL: table compiler: removed an unused variable (DtCompilerParserResult)
1054
causing linking errors. Patch based on suggestions by David Seifert and
1055
Benjamin Berg.
1056
1057
iASL: table compiler: make LexBuffer static to avoid linking errors in
1058
newer compilers. Patch based on suggestions by David Seifert and Benjamin
1059
Berg.
1060
1061
iASL: fixed type matching between External and Named objects. External
1062
object types can only be expressed with ACPI object type values that are
1063
defined in the ACPI spec. However, iASL uses ACPI object type values that
1064
are local to ACPICA in addition to the values defined in the ACPI spec.
1065
This change implements type matching to map some object type values
1066
specific to ACPICA to ones that are defined in the ACPI spec.
1067
1068
iASL: Dropped the type mismatch compiler error that can arise from
1069
External declarations to a warning. This warning can occur when there is
1070
a type difference between the external declaration and the actual object
1071
declaration (when compiling multiple files/modules simultaneously).
1072
1073
iASL: removed an incorrect error message regarding externals. This change
1074
removes an incorrect error that is emitted when a duplicate external
1075
declaration does not contain a type that opens a scope. This is incorrect
1076
because the duplicate external with conflicting types are already caught
1077
by iASL and it doesn't make any sense to enforce what this conflicting
1078
type should be.
1079
1080
AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
1081
surrounded by parens. Otherwise, a logical statement that applies a
1082
logical not operator to this macro could result in a computation that
1083
applies the operator to the left side of the logical and but not the
1084
right. Reported-by: John Levon <[email protected]>
1085
1086
Fixed a problem with the local version of sprint(): On 32-bit, the
1087
provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
1088
String + Size will wrap, meaning End < Start, and
1089
AcpiUtBoundStringOutput() will never output anything as a result. The
1090
symptom seen of this was acpixtract failing to output anything -- with a
1091
custom build that included utprint.c. Signed-off-by: John Levon
1092
<[email protected]>
1093
1094
iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
1095
ACPI specification.
1096
1097
1098
----------------------------------------
1099
14 February 2020. Summary of changes for version 20200214:
1100
1101
1102
1) ACPICA kernel-resident subsystem:
1103
1104
Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered
1105
in a guest when it receives a sleep trigger from the hypervisor. When the
1106
guest resumes from this power state, it does not see the SleepEnabled
1107
bit. In other words, the sleepHibernation (S4) is triggered in a guest
1108
when it receives a sleep trigger from the hypervisor. When the guest
1109
resumes from this power state, it does not see the SleepEnabled bit. In
1110
other words, the sleep button is not enabled on waking from an S4 state.
1111
This causes subsequent invocation of sleep state to fail since the
1112
guest.button is not enabled on waking from an S4 state. This causes
1113
subsequent invocation of sleep state to fail in the guest. Fix this
1114
problem by enabling the sleep button in ACPI legacy wake. From Anchal
1115
Agarwal <[email protected]>.
1116
1117
Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
1118
for checking the status bits of all enabled GPEs in one go. It is needed
1119
to distinguish spurious SCIs from genuine ones when deciding whether or
1120
not to wake up the system from suspend-to-idle.
1121
1122
Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
1123
using HOST in their environment to represent the host name for their
1124
machines. Avoid this problem by renaming this variable from HOST to
1125
ACPI_HOST.
1126
1127
MSVC 2017 project files: Enable multiprocessor generation to improve
1128
build performance.
1129
1130
Added a macro to get the byte width of a Generic Address structure. New
1131
ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
1132
ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
1133
1134
1135
2) iASL Compiler/Disassembler and ACPICA tools:
1136
1137
iASL: Implemented full support for the (optional, rarely used) ReturnType
1138
and ParameterTypesList for the Method, Function, and External operators.
1139
For Method declarations, the number of individual ParameterTypes must
1140
match the declaration of the number of arguments (NumArgs). This also
1141
Fixes a problem with the External operator where extra/extraneous bytes
1142
were emitted in the AML code if the optional ReturnType/ParameterTypes
1143
were specified for a MethodObj declaration.
1144
New error message:
1145
1) Method NumArgs count does not match length of ParameterTypes list
1146
1147
iASL: Implemented detection of type mismatches between External
1148
declarations and named object declarations. Also, detect type mismatches
1149
between multiple External declarations of the same Name.
1150
New error messages:
1151
1) Type mismatch between external declaration and actual object
1152
declaration detected
1153
2) Type mismatch between multiple external declarations detected
1154
1155
iASL: Implemented new error messages for External operators that specify
1156
a ReturnType and/or ParameterTypesList for any object type other than
1157
control methods (MethodObj).
1158
New error messages:
1159
1) Return type is only allowed for Externals declared as MethodObj
1160
2) Parameter type is only allowed for Externals declared as MethodObj
1161
1162
iASL: Implemented two new remark/warning messages for ASL code that
1163
creates named objects from within a control method. This is very
1164
inefficient since the named object must be created and deleted each time
1165
the method is executed.
1166
New messages:
1167
1) Creation of named objects within a method is highly inefficient, use
1168
globals or method local variables instead (remark)
1169
2) Static OperationRegion should be declared outside control method
1170
(warning)
1171
1172
iASL: Improved illegal forward reference detection by adding support to
1173
detect forward-reference method invocations.
1174
1175
iASL: Detect and issue an error message for NameStrings that contain too
1176
many individual NameSegs (>255). This is an AML limitation that is
1177
defined in the ACPI specification.
1178
New message:
1179
1) NameString contains too many NameSegs (>255)
1180
1181
acpidump: windows: use GetSystemFirmwareTable API for all tables except
1182
SSDT. By using this API, acpidump is able to get all tables in the XSDT
1183
1184
iASL: Removed unused parser file and updated msvc2017 project files.
1185
Removed the obsolete AslCompiler.y from the repository.
1186
1187
iASL: msvc2017: Fixed macros in the file dependency list to prevent
1188
unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
1189
1190
Disassembler: Prevent spilling error messages to the output file. All
1191
errors are directed to the console instead. These error messages
1192
prevented re-compilation of the resulting disassembled ASL output file
1193
(.DSL).
1194
1195
1196
----------------------------------------
1197
10 January 2020. Summary of changes for version 20200110:
1198
1199
1200
1) ACPICA kernel-resident subsystem:
1201
1202
Updated all copyrights to 2020. This affects all ACPICA source code
1203
modules.
1204
1205
1206
2) iASL Compiler/Disassembler and ACPICA tools:
1207
1208
ASL test suite (ASLTS): Updated all copyrights to 2020.
1209
1210
Tools and utilities: Updated all signon copyrights to 2020.
1211
1212
iASL: fix forward reference analysis for field declarations. Fixes
1213
forward reference analysis for field declarations by searching the
1214
parent scope for the named object when the object is not present in
1215
the current scope.
1216
1217
iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
1218
full pathname of the name that already exists is printed.
1219
1220
iASL: Enhance duplicate Case() detection for buffers. Add check for
1221
buffers with no initializer list (these buffers will be filled with
1222
zeros at runtime.)
1223
1224
1225
----------------------------------------
1226
13 December 2019. Summary of changes for version 20191213:
1227
1228
1229
1) ACPICA kernel-resident subsystem:
1230
1231
Return a Buffer object for all fields created via the CreateField
1232
operator. Previously, an Integer would be returned if the size of
1233
the field was less than or equal to the current size of an Integer.
1234
Although this goes against the ACPI specification, it provides
1235
compatibility with other ACPI implementations. Also updated the
1236
ASLTS test suite to reflect this new behavior.
1237
1238
2) iASL Compiler/Disassembler and ACPICA tools:
1239
1240
iASL: Implemented detection of (and throw an error for) duplicate
1241
values for Case statements within a single Switch statement. Duplicate
1242
Integers, Strings, and Buffers are supported.
1243
1244
iASL: Fix error logging issue during multiple file compilation --
1245
Switch to the correct input file during error node creation.
1246
1247
iASL: For duplicate named object creation, now emit an error instead
1248
of a warning - since this will cause a runtime error.
1249
1250
AcpiSrc: Add unix line-ending support for non-Windows builds.
1251
1252
iASL: Add an error condition for an attempt to create a NameString
1253
with > 255 NameSegs (the max allowable via the AML definition).
1254
1255
1256
----------------------------------------
1257
18 October 2019. Summary of changes for version 20191018:
1258
1259
1260
1) ACPICA kernel-resident subsystem:
1261
1262
Debugger: added a new command: ?Fields [address space ID]?. This command
1263
dumps the contents of all field units that are defined within the
1264
namespace with a particular address space ID.
1265
1266
Modified the external interface AcpiLoadTable() to return a table index.
1267
This table index can be used for unloading a table for debugging.
1268
ACPI_STATUS
1269
AcpiLoadTable (
1270
ACPI_TABLE_HEADER *Table,
1271
UINT32 *TableIndex))
1272
1273
Implemented a new external interface: AcpiUnloadTable() This new function
1274
takes a table index as an argument and unloads the table. Useful for
1275
debugging only.
1276
ACPI_STATUS
1277
AcpiUnloadTable (
1278
UINT32 TableIndex))
1279
1280
Ported the AcpiNames utility to use the new table initialization
1281
sequence. The utility was broken before this change. Also, it was
1282
required to include most of the AML interpreter into the utility in order
1283
to process table initialization (module-level code execution.)
1284
1285
Update for results from running Clang V8.0.1. This fixes all "dead
1286
assignment" warnings. There are still several "Dereference of NULL
1287
pointer" warnings, but these have been found to be false positive
1288
warnings.
1289
1290
1291
2) iASL Compiler/Disassembler and ACPICA tools:
1292
1293
iASL: numerous table compiler changes to ensure that the usage of
1294
yacc/bison syntax is POSIX-compliant.
1295
1296
iASL/disassembler: several simple bug fixes in the data table
1297
disassembler.
1298
1299
Acpiexec: expanded the initialization file (the -fi option) to initialize
1300
strings, buffers, packages, and field units.
1301
1302
1303
----------------------------------------
1304
16 August 2019. Summary of changes for version 20190816:
1305
1306
This release is available at https://acpica.org/downloads
1307
1308
1309
1) ACPICA kernel-resident subsystem:
1310
1311
Modified the OwnerId mechanism to allow for more Owner Ids. The previous
1312
limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
1313
exceptions on machines with a large number of initialization threads,
1314
many CPU cores and nested initialization control methods.
1315
1316
Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
1317
checking if the given GPE (as represented by a GPE device handle and a
1318
GPE number) is currently active and dispatching it (if that's the case)
1319
outside of interrupt context.
1320
1321
Table load: exit the interpreter before initializing objects within the
1322
new table This prevents re-acquiring the interpreter lock when loading
1323
tables
1324
1325
Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
1326
uk Kim
1327
1328
Macros: removed pointer math on a null pointer. Causes warnings on some
1329
compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
1330
instead of using arithmetic.
1331
1332
Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
1333
across all "printf-like" internal functions. Also, cleanup all calls to
1334
such functions (both in 32-bit mode and 64-bit mode) now that they are
1335
analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
1336
1337
1338
2) iASL Compiler/Disassembler and ACPICA tools:
1339
1340
iASL: implemented a new data table compiler flex/bison front-end. This
1341
change is internal and is not intended to result in changes to the
1342
compiled code. This new compiler front-end can be invoked using the -tp
1343
option for now, until the old mechanism is removed.
1344
1345
ASLTS: Implemented a new data table compiler test suite. This test suite
1346
generates all table templates and compile/disassemble/re-compile/binary-
1347
compare each file.
1348
1349
iASL: return -1 if AML files were not generated due to compiler errors
1350
1351
iASL: added a warning on use of the now-legacy ASL Processor () keyword.
1352
1353
iASL: added an error on _UID object declaration that returns a String
1354
within a Processor () declaration. A _UID for a processor must be an
1355
Integer.
1356
1357
iASL: added a null terminator to name strings that consist only of
1358
multiple parent prefixes (^)
1359
1360
iASL: added support to compile both ASL and data table files in a single
1361
command.
1362
1363
Updated the tool generation project files that were recently migrated to
1364
MSVC 2017 to eliminate all new warnings. The new project files appear in
1365
the directory \acpica\generate\msvc2017. This change effectively
1366
deprecates the older project files in \acpica\generate\msvc9.
1367
1368
1369
----------------------------------------
1370
03 July 2019. Summary of changes for version 20190703:
1371
1372
1373
1) ACPICA kernel-resident subsystem:
1374
1375
Remove legacy module-level support code. There were still some remnants
1376
of the legacy module-level code executions. Since we no longer support
1377
this option, this is essentially dead code and has been removed from the
1378
ACPICA source.
1379
1380
iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1381
scope. If these named objects are declared outside the root scope, they
1382
will not be invoked by any host Operating System.
1383
1384
Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
1385
one) can be enabled in two situations. First, the GPEs with existing _Lxx
1386
and _Exx methods are enabled implicitly by ACPICA during system
1387
initialization. Second, the GPEs without these methods (like GPEs listed
1388
by _PRW objects for wakeup devices) need to be enabled directly by the
1389
code that is going to use them (e.g. ACPI power management or device
1390
drivers).
1391
1392
In the former case, if the status of a given GPE is set to start with,
1393
its handler method (either _Lxx or _Exx) needs to be invoked to take care
1394
of the events (possibly) signaled before the GPE was enabled. In the
1395
latter case, however, the first caller of AcpiEnableGpe() for a given GPE
1396
should not be expected to care about any events that might be signaled
1397
through it earlier. In that case, it is better to clear the status of
1398
the GPE before enabling it, to prevent stale events from triggering
1399
unwanted actions (like spurious system resume, for example).
1400
1401
For this reason, modify AcpiEvAddGpeReference() to take an additional
1402
boolean argument indicating whether or not the GPE status needs to be
1403
cleared when its reference counter changes from zero to one and make
1404
AcpiEnableGpe() pass TRUE to it through that new argument.
1405
1406
1407
2) iASL Compiler/Disassembler and ACPICA tools:
1408
1409
The tool generation process has been migrated to MSVC 2017, and all
1410
project files have been upgraded. The new project files appear in the
1411
directory \acpica\generate\msvc2017. This change effectively deprecates
1412
the older project files in \acpica\generate\msvc9.
1413
1414
iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1415
scope. If these named objects are declared outside the root scope, they
1416
will not be invoked by any host Operating System
1417
1418
----------------------------------------
1419
09 May 2019. Summary of changes for version 20190509:
1420
1421
1422
1) ACPICA kernel-resident subsystem:
1423
1424
Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
1425
them") that causes problems with Thunderbolt controllers to occur if a
1426
dock device is connected at init time (the xhci_hcd and thunderbolt
1427
modules crash which prevents peripherals connected through them from
1428
working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
1429
Dispatch active GPEs at init time") to get undone, so the problem
1430
addressed by commit ecc1165b8b74 appears again as a result of it.
1431
1432
1433
2) iASL Compiler/Disassembler and ACPICA tools:
1434
1435
Reverted iASL: Additional forward reference detection. This change
1436
reverts forward reference detection for field declarations. The feature
1437
unintentionally emitted AML bytecode with incorrect package lengths for
1438
some ASL code related to Fields and OperationRegions. This malformed AML
1439
can cause systems to crash
1440
during boot. The malformed AML bytecode is emitted in iASL version
1441
20190329 and 20190405.
1442
1443
iASL: improve forward reference detection. This change improves forward
1444
reference detection for named objects inside of scopes. If a parse object
1445
has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
1446
a named object that is declared later in the AML bytecode. This is
1447
allowed if the reference is inside of a method and the declaration is
1448
outside of a method like so:
1449
1450
DefinitionBlock(...)
1451
{
1452
Method (TEST)
1453
{
1454
Return (NUM0)
1455
}
1456
Name (NUM0,0)
1457
}
1458
1459
However, if the declaration and reference are both in the same method or
1460
outside any methods, this is a forward reference and should be marked as
1461
an error because it would result in runtime errors.
1462
1463
DefinitionBlock(...)
1464
{
1465
Name (BUFF, Buffer (NUM0) {}) // Forward reference
1466
Name (NUM0, 0x0)
1467
1468
Method (TEST)
1469
{
1470
Local0 = NUM1
1471
Name (NUM1, 0x1) // Forward reference
1472
return (Local0)
1473
}
1474
}
1475
1476
iASL: Implemented additional buffer overflow analysis for BufferField
1477
declarations. Check if a buffer index argument to a create buffer field
1478
operation is beyond the end of the target buffer.
1479
1480
This affects these AML operators:
1481
1482
AML_CREATE_FIELD_OP
1483
AML_CREATE_BIT_FIELD_OP
1484
AML_CREATE_BYTE_FIELD_OP
1485
AML_CREATE_WORD_FIELD_OP
1486
AML_CREATE_DWORD_FIELD_OP
1487
AML_CREATE_QWORD_FIELD_OP
1488
1489
There are three conditions that must be satisfied in order to allow this
1490
validation at compile time:
1491
1492
1) The length of the target buffer must be an integer constant
1493
2) The index specified in the create* must be an integer constant
1494
3) For CreateField, the bit length argument must be non-zero.
1495
1496
Example:
1497
Name (BUF1, Buffer() {1,2})
1498
CreateField (BUF1, 7, 9, CF03) // 3: ERR
1499
1500
dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
1501
Error 6165 - ^ Buffer index beyond end of
1502
target buffer
1503
1504
1505
----------------------------------------
1506
05 April 2019. Summary of changes for version 20190405:
1507
1508
1509
1) ACPICA kernel-resident subsystem:
1510
1511
Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1512
unconditionally clearing ACPI IRQs during suspend/resume") was added
1513
earlier to stop clearing of event status bits unconditionally on suspend
1514
and resume paths. Though this change fixed an issue on suspend path, it
1515
introduced regressions on several resume paths. In the case of S0ix,
1516
events are enabled as part of device suspend path. If status bits for the
1517
events are set when they are enabled, it could result in premature wake
1518
from S0ix. If status is cleared for any event that is being enabled so
1519
that any stale events are cleared out. In case of S0ix, events are
1520
enabled as part of device suspend path. If status bits for the events are
1521
set when they are enabled, it could result in premature wake from S0ix.
1522
1523
This change ensures that status is cleared for any event that is being
1524
enabled so that any stale events are cleared out.
1525
1526
1527
2) iASL Compiler/Disassembler and ACPICA tools:
1528
1529
iASL: Implemented an enhanced multiple file compilation that combines
1530
named objects from all input files to a single namespace. With this
1531
feature, any unresolved external declarations as well as duplicate named
1532
object declarations can be detected during compilation rather than
1533
generating errors much later at runtime. The following commands are
1534
examples that utilize this feature:
1535
iasl dsdt.asl ssdt.asl
1536
iasl dsdt.asl ssdt1.asl ssdt2.asl
1537
iasl dsdt.asl ssdt*.asl
1538
1539
----------------------------------------
1540
29 March 2019. Summary of changes for version 20190329:
1541
1542
1543
1) ACPICA kernel-resident subsystem:
1544
1545
Namespace support: Remove the address nodes from global list after method
1546
termination. The global address list contains pointers to namespace nodes
1547
that represent Operation Regions. This change properly removes Operation
1548
Region namespace nodes that are declared dynamically during method
1549
execution.
1550
1551
Linux: Use a different debug default than ACPICA. There was a divergence
1552
between Linux and the ACPICA codebases. In order to resolve this
1553
divergence, Linux now declares its own debug default in aclinux.h
1554
1555
Renamed some internal macros to improve code understanding and
1556
maintenance. The macros below all operate on single 4-character ACPI
1557
NameSegs, not generic strings (old -> new):
1558
ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
1559
ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
1560
ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
1561
1562
Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1563
table.
1564
1565
Test suite: Update makefiles, add PCC operation region support
1566
1567
1568
2) iASL Compiler/Disassembler and Tools:
1569
1570
iASL: Implemented additional illegal forward reference detection. Now
1571
detect and emit an error upon detection of a forward reference from a
1572
Field to an Operation Region. This will fail at runtime if allowed to
1573
pass the compiler.
1574
1575
AcpiExec: Add an address list check for dynamic Operation Regions. This
1576
feature performs a sanity test for each node the global address list.
1577
This is done in order to ensure that all dynamic operation regions are
1578
properly removed from the global address list and no dangling pointers
1579
are left behind.
1580
1581
Disassembler: Improved generation of resource pathnames. This change
1582
improves the code that generates resource descriptor and resource tag
1583
pathnames. The original code used a bunch of str* C library functions
1584
that caused warnings on some compilers.
1585
1586
iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1587
function can overwrite buffers if the calling code is not very careful.
1588
In the case of generating a module/table header, use of memmove is a
1589
better implementation.
1590
1591
1592
3) Status of new features that have not been completed at this time:
1593
1594
iASL: Implementing an enhanced multiple file compilation into a single
1595
namespace feature (Status): This feature will be released soon, and
1596
allows multiple ASL files to be compiled into the same single namespace.
1597
By doing so, any unresolved external declarations as well as duplicate
1598
named object declarations can be detected during compilation (rather than
1599
later during runtime). The following commands are examples that utilize
1600
this feature:
1601
iasl dsdt.asl ssdt.asl
1602
iasl dsdt.asl ssdt1.asl ssdt2.asl
1603
iasl dsdt.asl ssdt*.asl
1604
1605
ASL tutorial status: Feedback is being gathered internally and the
1606
current plan is to publish this tutorial on the ACPICA website after a
1607
final review by a tech writer.
1608
1609
----------------------------------------
1610
15 February 2019. Summary of changes for version 20190215:
1611
1612
1613
0) Support for ACPI specification version 6.3:
1614
1615
Add PCC operation region support for the AML interpreter. This adds PCC
1616
operation region support in the AML interpreter and a default handler for
1617
acpiexec. The change also renames the PCC region address space keyword to
1618
PlatformCommChannel.
1619
1620
Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1621
These methods provide OSPM with health information and device boot
1622
status.
1623
1624
PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1625
defines if the trigger needs to be invoked by OSPM before or at the end
1626
of kernel crash dump processing/handling operation.
1627
1628
SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1629
is used for describing devices such as heterogeneous processors,
1630
accelerators, GPUs, and IO devices with integrated compute or DMA
1631
engines.
1632
1633
MADT: Add support for statistical profiling in GICC. Statistical
1634
profiling extension (SPE) is an architecture-specific feature for ARM.
1635
1636
MADT: Add online capable flag. If this bit is set, system hardware
1637
supports enabling this processor during OS runtime.
1638
1639
New Error Disconnect Recover Notification value. There are a number of
1640
scenarios where system Firmware in collaboration with hardware may
1641
disconnect one or more devices from the rest of the system for purposes
1642
of error containment. Firmware can use this new notification value to
1643
alert OSPM of such a removal.
1644
1645
PPTT: New additional fields in Processor Structure Flags. These flags
1646
provide more information about processor topology.
1647
1648
NFIT/Disassembler: Change a field name from "Address Range" to "Region
1649
Type".
1650
1651
HMAT updates: make several existing fields to be reserved as well as
1652
rename subtable 0 to "memory proximity domain attributes".
1653
1654
GTDT: Add support for new GTDT Revision 3. This revision adds information
1655
for the EL2 timer.
1656
1657
iASL: Update the HMAT example template for new fields.
1658
1659
iASL: Add support for the new revision of the GTDT (Rev 3).
1660
1661
1662
1) ACPICA kernel-resident subsystem:
1663
1664
AML Parser: fix the main AML parse loop to correctly skip erroneous
1665
extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1666
byte extended opcodes. If an error occurs during an AML table load, the
1667
AML parser will continue loading the table by skipping the offending
1668
opcode. This implements a "load table at any cost" philosophy.
1669
1670
1671
2) iASL Compiler/Disassembler and Tools:
1672
1673
iASL: Add checks for illegal object references, such as a reference
1674
outside of method to an object within a method. Such an object is only
1675
temporary.
1676
1677
iASL: Emit error for creation of a zero-length operation region. Such a
1678
region is rather pointless. If encountered, a runtime error is also
1679
implemented in the interpreter.
1680
1681
Debugger: Fix a possible fault with the "test objects" command.
1682
1683
iASL: Makefile: support parent directory filenames containing embedded
1684
spaces.
1685
1686
iASL: Update the TPM2 template to revision 4.
1687
1688
iASL: Add the ability to report specific warnings or remarks as errors.
1689
1690
Disassembler: Disassemble OEMx tables as actual AML byte code.
1691
Previously, these tables were treated as "unknown table".
1692
1693
iASL: Add definition and disassembly for TPM2 revision 3.
1694
1695
iASL: Add support for TPM2 rev 3 compilation.
1696
1697
1698
----------------------------------------
1699
08 January 2019. Summary of changes for version 20190108:
1700
1701
1702
1) ACPICA kernel-resident subsystem:
1703
1704
Updated all copyrights to 2019. This affects all source code modules.
1705
1706
1707
2) iASL Compiler/Disassembler and Tools:
1708
1709
ASL test suite (ASLTS): Updated all copyrights to 2019.
1710
1711
Tools: Updated all signon copyrights to 2019.
1712
1713
AcpiExec: Added a new option to dump extra information concerning any
1714
memory leaks detected by the internal object/cache tracking mechanism. -
1715
va
1716
1717
iASL: Updated the table template for the TPM2 table to the newest version
1718
of the table (Revision 4)
1719
1720
1721
----------------------------------------
1722
13 December 2018. Summary of changes for version 20181213:
1723
1724
1725
1) ACPICA Kernel-resident Subsystem:
1726
1727
Fixed some buffer length issues with the GenericSerialBus, related to two
1728
of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1729
which are rarely seen in the field. For these, the LEN field of the ASL
1730
buffer is now ignored. Hans de Goede
1731
1732
Implemented a new object evaluation trace mechanism for control methods
1733
and data objects. This includes nested control methods. It is
1734
particularly useful for examining the ACPI execution during system
1735
initialization since the output is relatively terse. The flag below
1736
enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1737
#define ACPI_LV_EVALUATION 0x00080000
1738
1739
Examples:
1740
Enter evaluation : _SB.PCI0._INI (Method)
1741
Exit evaluation : _SB.PCI0._INI
1742
Enter evaluation : _OSI (Method)
1743
Exit evaluation : _OSI
1744
Enter evaluation : _SB.PCI0.TEST (Method)
1745
Nested method call : _SB.PCI0.NST1
1746
Exit nested method : _SB.PCI0.NST1
1747
Exit evaluation : _SB.PCI0.TEST
1748
1749
Added two recently-defined _OSI strings. See
1750
https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1751
osi.
1752
"Windows 2018"
1753
"Windows 2018.2"
1754
1755
Update for buffer-to-string conversions via the ToHexString ASL operator.
1756
A "0x" is now prepended to each of the hex values in the output string.
1757
This provides compatibility with other ACPI implementations. The ACPI
1758
specification is somewhat vague on this issue.
1759
Example output string after conversion:
1760
"0x01,0x02,0x03,0x04,0x05,0x06"
1761
1762
Return a run-time error for TermArg expressions within individual package
1763
elements. Although this is technically supported by the ASL grammar,
1764
other ACPI implementations do not support this either. Also, this fixes a
1765
fault if this type of construct is ever encountered (it never has been).
1766
1767
1768
2) iASL Compiler/Disassembler and Tools:
1769
1770
iASL: Implemented a new compile option (-ww) that will promote individual
1771
warnings and remarks to errors. This is intended to enhance the firmware
1772
build process.
1773
1774
AcpiExec: Implemented a new command-line option (-eo) to support the new
1775
object evaluation trace mechanism described above.
1776
1777
Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1778
instead of a "unknown table" message.
1779
1780
AcpiHelp: Improved support for the "special" predefined names such as
1781
_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1782
used for "xx" and "x".
1783
1784
----------------------------------------
1785
31 October 2018. Summary of changes for version 20181031:
1786
1787
1788
An Operation Region regression was fixed by properly adding address
1789
ranges to a global list during initialization. This allows OS to
1790
accurately check for overlapping regions between native devices (such as
1791
PCI) and Operation regions as well as checking for region conflicts
1792
between two Operation Regions.
1793
1794
Added support for the 2-byte extended opcodes in the code/feature that
1795
attempts to continue parsing during the table load phase. Skip parsing
1796
Device declarations (and other extended opcodes) when an error occurs
1797
during parsing. Previously, only single-byte opcodes were supported.
1798
1799
Cleanup: Simplified the module-level code support by eliminating a
1800
useless global variable (AcpiGbl_GroupModuleLeveCode).
1801
1802
1803
2) iASL Compiler/Disassembler and Tools:
1804
1805
iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1806
could cause a fault in the preprocessor. This was an inadvertent side-
1807
effect from moving more allocations/frees to the local cache/memory
1808
mechanism.
1809
1810
iASL: Enhanced error detection by validating that all NameSeg elements
1811
within a NamePatch actually exist. The previous behavior was spotty at
1812
best, and such errors could be improperly ignored at compiler time (never
1813
at runtime, however. There are two new error messages, as shown in the
1814
examples below:
1815
1816
dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
1817
Error 6161 - ^ One or more objects within
1818
the Pathname do not exist (TTTT.BXXX)
1819
1820
dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1821
Error 6160 - One or more prefix Scopes do not exist ^
1822
(BBBB.CBF1)
1823
1824
iASL: Disassembler/table-compiler: Added support for the static data
1825
table TPM2 revision 3 (an older version of TPM2). The support has been
1826
added for the compiler and the disassembler.
1827
1828
Fixed compilation of DOS format data table file on Unix/Linux systems.
1829
iASL now properly detects line continuations (\) for DOS format data
1830
table definition language files on when executing on Unix/Linux.
1831
1832
----------------------------------------
1833
03 October 2018. Summary of changes for version 20181003:
1834
1835
1836
2) iASL Compiler/Disassembler and Tools:
1837
1838
Fixed a regression introduced in version 20180927 that could cause the
1839
compiler to fault, especially with NamePaths containing one or more
1840
carats (^). Such as: ^^_SB_PCI0
1841
1842
Added a new remark for the Sleep() operator when the sleep time operand
1843
is larger than one second. This is a very long time for the ASL/BIOS code
1844
and may not be what was intended by the ASL writer.
1845
1846
----------------------------------------
1847
27 September 2018. Summary of changes for version 20180927:
1848
1849
1850
1) ACPICA kernel-resident subsystem:
1851
1852
Updated the GPE support to clear the status of all ACPI events when
1853
entering any/all sleep states in order to avoid premature wakeups. In
1854
theory, this may cause some wakeup events to be missed, but the
1855
likelihood of this is small. This change restores the original behavior
1856
of the ACPICA code in order to fix a regression seen from the previous
1857
"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1858
This regression could cause some systems to incorrectly wake immediately.
1859
1860
Updated the execution of the _REG methods during initialization and
1861
namespace loading to bring the behavior into closer conformance to the
1862
ACPI specification and other ACPI implementations:
1863
1864
From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1865
"Control methods must assume all operation regions are inaccessible
1866
until the _REG(RegionSpace, 1) method is executed"
1867
1868
"The exceptions to this rule are:
1869
1. OSPM must guarantee that the following operation regions are always
1870
accessible:
1871
SystemIO operation regions.
1872
SystemMemory operation regions when accessing memory returned by the
1873
System Address Map reporting interfaces."
1874
1875
Since the state of both the SystemIO and SystemMemory address spaces are
1876
defined by the specification to never change, this ACPICA change ensures
1877
that now _REG is never called on them. This solves some problems seen in
1878
the field and provides compatibility with other ACPI implementations. An
1879
update to the upcoming new version of the ACPI specification will help
1880
clarify this behavior.
1881
1882
Updated the implementation of support for the Generic Serial Bus. For the
1883
"bidirectional" protocols, the internal implementation now automatically
1884
creates a return data buffer of the maximum size (255). This handles the
1885
worst-case for data that is returned from the serial bus handler, and
1886
fixes some problems seen in the field. This new buffer is directly
1887
returned to the ASL. As such, there is no true "bidirectional" buffer,
1888
which matches the ACPI specification. This is the reason for the "double
1889
store" seen in the example ASL code in the specification, shown below:
1890
1891
Word Process Call (AttribProcessCall):
1892
OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1893
Field(TOP1, BufferAcc, NoLock, Preserve)
1894
{
1895
FLD1, 8, // Virtual register at command value 1.
1896
}
1897
1898
Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1899
// as BUFF
1900
CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1901
1902
Store(0x5416, DATA) // Save 0x5416 into the data buffer
1903
Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call
1904
transaction
1905
// This is the "double store". The write to
1906
// FLD1 returns a new buffer, which is stored
1907
// back into BUFF with the second Store.
1908
1909
1910
2) iASL Compiler/Disassembler and Tools:
1911
1912
iASL: Implemented detection of extraneous/redundant uses of the Offset()
1913
operator within a Field Unit list. A remark is now issued for these. For
1914
example, the first two of the Offset() operators below are extraneous.
1915
Because both the compiler and the interpreter track the offsets
1916
automatically, these Offsets simply refer to the current offset and are
1917
unnecessary. Note, when optimization is enabled, the iASL compiler will
1918
in fact remove the redundant Offset operators and will not emit any AML
1919
code for them.
1920
1921
OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1922
Field (OPR1)
1923
{
1924
Offset (0), // Never needed
1925
FLD1, 32,
1926
Offset (4), // Redundant, offset is already 4 (bytes)
1927
FLD2, 8,
1928
Offset (64), // OK use of Offset.
1929
FLD3, 16,
1930
}
1931
dsdt.asl 14: Offset (0),
1932
Remark 2158 - ^ Unnecessary/redundant use of Offset
1933
operator
1934
1935
dsdt.asl 16: Offset (4),
1936
Remark 2158 - ^ Unnecessary/redundant use of Offset
1937
operator
1938
1939
----------------------------------------
1940
10 August 2018. Summary of changes for version 20180810:
1941
1942
1943
1) ACPICA kernel-resident subsystem:
1944
1945
Initial ACPI table loading: Attempt to continue loading ACPI tables
1946
regardless of malformed AML. Since migrating table initialization to the
1947
new module-level code support, the AML interpreter rejected tables upon
1948
any ACPI error encountered during table load. This is a problem because
1949
non-serious ACPI errors during table load do not necessarily mean that
1950
the entire definition block (DSDT or SSDT) is invalid. This change
1951
improves the table loading by ignoring some types of errors that can be
1952
generated by incorrect AML. This can range from object type errors, scope
1953
errors, and index errors.
1954
1955
Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1956
during suspend/resume. The status of ACPI events is no longer cleared
1957
when entering the ACPI S5 system state (power off) which caused some
1958
systems to power up immediately after turning off power in certain
1959
situations. This was a functional regression. It was fixed by clearing
1960
the status of all ACPI events again when entering S5 (for system-wide
1961
suspend or hibernation the clearing of the status of all events is not
1962
desirable, as it might cause the kernel to miss wakeup events sometimes).
1963
Rafael Wysocki.
1964
1965
1966
2) iASL Compiler/Disassembler and Tools:
1967
1968
AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1969
elements listed in the initialization file were previously initialized
1970
after the table load and before executing module-level code blocks.
1971
Recent changes in the module-level code support means that the table load
1972
becomes a large control method execution. If fields are used within
1973
module-level code and we are executing with the -fi option, the
1974
initialization values were used to initialize the namespace object(s)
1975
only after the table was finished loading. This change Provides an early
1976
initialization of objects specified in the initialization file so that
1977
field unit values are populated during the table load (not after the
1978
load).
1979
1980
AcpiExec: Fixed a small memory leak regression that could result in
1981
warnings during exit of the utility. These warnings were similar to
1982
these:
1983
0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1984
0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1985
1986
----------------------------------------
1987
29 June 2018. Summary of changes for version 20180629:
1988
1989
1990
1) iASL Compiler/Disassembler and Tools:
1991
1992
iASL: Fixed a regression related to the use of the ASL External
1993
statement. Error checking for the use of the External() statement has
1994
been relaxed. Previously, a restriction on the use of External meant that
1995
the referenced named object was required to be defined in a different
1996
table (an SSDT). Thus it would be an error to declare an object as an
1997
external and then define the same named object in the same table. For
1998
example:
1999
DefinitionBlock (...)
2000
{
2001
External (DEV1)
2002
Device (DEV1){...} // This was an error
2003
}
2004
However, this behavior has caused regressions in some existing ASL code,
2005
because there is code that depends on named objects and externals (with
2006
the same name) being declared in the same table. This change will allow
2007
the ASL code above to compile without errors or warnings.
2008
2009
iASL: Implemented ASL language extensions for four operators to make some
2010
of their arguments optional instead of required:
2011
1) Field (RegionName, AccessType, LockRule, UpdateRule)
2012
2) BankField (RegionName, BankName, BankValue,
2013
AccessType, LockRule, UpdateRule)
2014
3) IndexField (IndexName, DataName,
2015
AccessType, LockRule, UpdateRule)
2016
For the Field operators above, the AccessType, LockRule, and UpdateRule
2017
are now optional arguments. The default values are:
2018
AccessType: AnyAcc
2019
LockRule: NoLock
2020
UpdateRule: Preserve
2021
4) Mutex (MutexName, SyncLevel)
2022
For this operator, the SyncLevel argument is now optional. This argument
2023
is rarely used in any meaningful way by ASL code, and thus it makes sense
2024
to make it optional. The default value is:
2025
SyncLevel: 0
2026
2027
iASL: Attempted use of the ASL Unload() operator now results in the
2028
following warning:
2029
"Unload is not supported by all operating systems"
2030
This is in fact very true, and the Unload operator may be completely
2031
deprecated in the near future.
2032
2033
AcpiExec: Fixed a regression for the -fi option (Namespace initialization
2034
file. Recent changes in the ACPICA module-level code support altered the
2035
table load/initialization sequence . This means that the table load has
2036
become a large method execution of the table itself. If Operation Region
2037
Fields are used within any module-level code and the -fi option was
2038
specified, the initialization values were populated only after the table
2039
had completely finished loading (and thus the module-level code had
2040
already been executed). This change moves the initialization of objects
2041
listed in the initialization file to before the table is executed as a
2042
method. Field unit values are now initialized before the table execution
2043
is performed.
2044
2045
----------------------------------------
2046
31 May 2018. Summary of changes for version 20180531:
2047
2048
2049
1) ACPICA kernel-resident Subsystem:
2050
2051
Implemented additional support to help ensure that a DSDT or SSDT is
2052
fully loaded even if errors are incurred during the load. The majority of
2053
the problems that are seen is the failure of individual AML operators
2054
that occur during execution of any module-level code (MLC) existing in
2055
the table. This support adds a mechanism to abort the current ASL
2056
statement (AML opcode), emit an error message, and to simply move on to
2057
the next opcode -- instead of aborting the entire table load. This is
2058
different than the execution of a control method where the entire method
2059
is aborted upon any error. The goal is to perform a very "best effort" to
2060
load the ACPI tables. The most common MLC errors that have been seen in
2061
the field are direct references to unresolved ASL/AML symbols (referenced
2062
directly without the use of the CondRefOf operator to validate the
2063
symbol). This new ACPICA behavior is now compatible with other ACPI
2064
implementations.
2065
2066
Interpreter: The Unload AML operator is no longer supported for the
2067
reasons below. An AE_NOT_IMPLEMENTED exception is returned.
2068
1) A correct implementation on at least some hosts may not be possible.
2069
2) Other ACPI implementations do not correctly/fully support it.
2070
3) It requires host device driver support which is not known to exist.
2071
(To properly support namespace unload out from underneath.)
2072
4) This AML operator has never been seen in the field.
2073
2074
Parser: Added a debug option to dump AML parse sub-trees as they are
2075
being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
2076
ACPI_DB_PARSE_TREES.
2077
2078
Debugger: Reduced the verbosity for errors incurred during table load and
2079
module-level code execution.
2080
2081
Completed an investigation into adding a namespace node "owner list"
2082
instead of the current "owner ID" associated with namespace nodes. This
2083
list would link together all nodes that are owned by an individual
2084
control method. The purpose would be to enhance control method execution
2085
by speeding up cleanup during method exit (all namespace nodes created by
2086
a method are deleted upon method termination.) Currently, the entire
2087
namespace must be searched for matching owner IDs if (and only if) the
2088
method creates named objects outside of the local scope. However, by far
2089
the most common case is that methods create objects locally, not outside
2090
the method scope. There is already an ACPICA optimization in place that
2091
only searches the entire namespace in the rare case of a method creating
2092
objects elsewhere in the namespace. Therefore, it is felt that the
2093
overhead of adding an additional pointer to each namespace node to
2094
implement the owner list makes this feature unnecessary.
2095
2096
2097
2) iASL Compiler/Disassembler and Tools:
2098
2099
iASL, Disassembler, and Template generator: Implemented support for
2100
Revision D of the IORT table. Adds a new subtable that is used to specify
2101
SMMUv3 PMCGs. rmurphy-arm.
2102
2103
Disassembler: Restored correct table header validation for the "special"
2104
ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
2105
table header and must be special-cased. This was a regression that has
2106
been present for apparently a long time.
2107
2108
AcpiExec: Reduced verbosity of the local exception handler implemented
2109
within acpiexec. This handler is invoked by ACPICA upon any exceptions
2110
generated during control method execution. A new option was added: -vh
2111
restores the original verbosity level if desired.
2112
2113
AcpiExec: Changed the default base from decimal to hex for the -x option
2114
(set debug level). This simplifies the use of this option and matches the
2115
behavior of the corresponding iASL -x option.
2116
2117
AcpiExec: Restored a force-exit on multiple control-c (sigint)
2118
interrupts. This allows program termination even if other issues cause
2119
the control-c to fail.
2120
2121
ASL test suite (ASLTS): Added tests for the recently implemented package
2122
element resolution mechanism that allows forward references to named
2123
objects from individual package elements (this mechanism provides
2124
compatibility with other ACPI implementations.)
2125
2126
2127
----------------------------------------
2128
8 May 2018. Summary of changes for version 20180508:
2129
2130
2131
1) ACPICA kernel-resident subsystem:
2132
2133
Completed the new (recently deployed) package resolution mechanism for
2134
the Load and LoadTable ASL/AML operators. This fixes a regression that
2135
was introduced in version 20180209 that could result in an
2136
AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
2137
(SSDT) that contains package objects.
2138
2139
2140
2) iASL Compiler/Disassembler and Tools:
2141
2142
AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
2143
1 MB. This change allows for table offsets within the acpidump file to be
2144
up to 8 characters. These changes are backwards compatible with existing
2145
acpidump files.
2146
2147
2148
----------------------------------------
2149
27 April 2018. Summary of changes for version 20180427:
2150
2151
2152
1) ACPICA kernel-resident subsystem:
2153
2154
Debugger: Added support for Package objects in the "Test Objects"
2155
command. This command walks the entire namespace and evaluates all named
2156
data objects (Integers, Strings, Buffers, and now Packages).
2157
2158
Improved error messages for the namespace root node. Originally, the root
2159
was referred to by the confusing string "\___". This has been replaced by
2160
"Namespace Root" for clarification.
2161
2162
Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
2163
Ian King <[email protected]>.
2164
2165
2166
2) iASL Compiler/Disassembler and Tools:
2167
2168
iASL: Implemented support to detect and flag illegal forward references.
2169
For compatibility with other ACPI implementations, these references are
2170
now illegal at the root level of the DSDT or SSDTs. Forward references
2171
have always been illegal within control methods. This change should not
2172
affect existing ASL/AML code because of the fact that these references
2173
have always been illegal in the other ACPI implementation.
2174
2175
iASL: Added error messages for the case where a table OEM ID and OEM
2176
TABLE ID strings are longer than the ACPI-defined length. Previously,
2177
these strings were simply silently truncated.
2178
2179
iASL: Enhanced the -tc option (which creates an AML hex file in C,
2180
suitable for import into a firmware project):
2181
1) Create a unique name for the table, to simplify use of multiple
2182
SSDTs.
2183
2) Add a protection #ifdef in the file, similar to a .h header file.
2184
With assistance from Sami Mujawar, [email protected] and Evan Lloyd,
2185
[email protected]
2186
2187
AcpiExec: Added a new option, -df, to disable the local fault handler.
2188
This is useful during debugging, where it may be desired to drop into a
2189
debugger on a fault.
2190
2191
----------------------------------------
2192
13 March 2018. Summary of changes for version 20180313:
2193
2194
2195
1) ACPICA kernel-resident subsystem:
2196
2197
Implemented various improvements to the GPE support:
2198
2199
1) Dispatch all active GPEs at initialization time so that no GPEs are
2200
lost.
2201
2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
2202
before devices are enumerated.
2203
3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
2204
IRQs are not lost.
2205
4) Add parallel GPE handling to eliminate the possibility of dispatching
2206
the same GPE twice.
2207
5) Dispatch any pending GPEs after enabling for the first time.
2208
2209
AcpiGetObjectInfo - removed support for the _STA method. This was causing
2210
problems on some platforms.
2211
2212
Added a new _OSI string, "Windows 2017.2".
2213
2214
Cleaned up and simplified the module-level code support. These changes
2215
are in preparation for the eventual removal of the legacy MLC support
2216
(deferred execution), replaced by the new MLC architecture which executes
2217
the MLC as a table is loaded (DSDT/SSDTs).
2218
2219
Changed a compile-time option to a runtime option. Changes the option to
2220
ignore ACPI table load-time package resolution errors into a runtime
2221
option. Used only for platforms that generate many AE_NOT_FOUND errors
2222
during boot. AcpiGbl_IgnorePackageResolutionErrors.
2223
2224
Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
2225
ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
2226
compilation errors from unused variables (seen with some compilers).
2227
2228
2229
2) iASL Compiler/Disassembler and Tools:
2230
2231
ASLTS: parallelized execution in order to achieve an (approximately) 2X
2232
performance increase.
2233
2234
ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
2235
error reporting.
2236
2237
----------------------------------------
2238
09 February 2018. Summary of changes for version 20180209:
2239
2240
2241
1) ACPICA kernel-resident subsystem:
2242
2243
Completed the final integration of the recent changes to Package Object
2244
handling and the module-level AML code support. This allows forward
2245
references from individual package elements when the package object is
2246
declared from within module-level code blocks. Provides compatibility
2247
with other ACPI implementations.
2248
2249
The new architecture for the AML module-level code has been completed and
2250
is now the default for the ACPICA code. This new architecture executes
2251
the module-level code in-line as the ACPI table is loaded/parsed instead
2252
of the previous architecture which deferred this code until after the
2253
table was fully loaded. This solves some ASL code ordering issues and
2254
provides compatibility with other ACPI implementations. At this time,
2255
there is an option to fallback to the earlier architecture, but this
2256
support is deprecated and is planned to be completely removed later this
2257
year.
2258
2259
Added a compile-time option to ignore AE_NOT_FOUND exceptions during
2260
resolution of named reference elements within Package objects. Although
2261
this is potentially a serious problem, it can generate a lot of
2262
noise/errors on platforms whose firmware carries around a bunch of unused
2263
Package objects. To disable these errors, define
2264
ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
2265
errors are always reported for ACPICA applications such as AcpiExec.
2266
2267
Fixed a regression related to the explicit type-conversion AML operators
2268
(ToXXXX). The regression was introduced early in 2017 but was not seen
2269
until recently because these operators are not fully supported by other
2270
ACPI implementations and are thus rarely used by firmware developers. The
2271
operators are defined by the ACPI specification to not implement the
2272
"implicit result object conversion". The regression incorrectly
2273
introduced this object conversion for the following explicit conversion
2274
operators:
2275
ToInteger
2276
ToString
2277
ToBuffer
2278
ToDecimalString
2279
ToHexString
2280
ToBCD
2281
FromBCD
2282
2283
2284
2) iASL Compiler/Disassembler and Tools:
2285
2286
iASL: Fixed a problem with the compiler constant folding feature as
2287
related to the ToXXXX explicit conversion operators. These operators do
2288
not support the "implicit result object conversion" by definition. Thus,
2289
ASL expressions that use these operators cannot be folded to a simple
2290
Store operator because Store implements the implicit conversion. This
2291
change uses the CopyObject operator for the ToXXXX operator folding
2292
instead. CopyObject is defined to not implement implicit result
2293
conversions and is thus appropriate for folding the ToXXXX operators.
2294
2295
iASL: Changed the severity of an error condition to a simple warning for
2296
the case where a symbol is declared both locally and as an external
2297
symbol. This accommodates existing ASL code.
2298
2299
AcpiExec: The -ep option to enable the new architecture for module-level
2300
code has been removed. It is replaced by the -dp option which instead has
2301
the opposite effect: it disables the new architecture (the default) and
2302
enables the legacy architecture. When the legacy code is removed in the
2303
future, the -dp option will be removed also.
2304
2305
----------------------------------------
2306
05 January 2018. Summary of changes for version 20180105:
2307
2308
2309
1) ACPICA kernel-resident subsystem:
2310
2311
Updated all copyrights to 2018. This affects all source code modules.
2312
2313
Fixed a possible build error caused by an unresolved reference to the
2314
AcpiUtSafeStrncpy function.
2315
2316
Removed NULL pointer arithmetic in the various pointer manipulation
2317
macros. All "(void *) NULL" constructs are converted to "(void *) 0".
2318
This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
2319
2320
Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
2321
Mittal.
2322
2323
2324
2) iASL Compiler/Disassembler and Tools:
2325
2326
ASLTS: Updated all copyrights to 2018.
2327
2328
Tools: Updated all signon copyrights to 2018.
2329
2330
AcpiXtract: Fixed a regression related to ACPI table signatures where the
2331
signature was truncated to 3 characters (instead of 4).
2332
2333
AcpiExec: Restore the original terminal mode after the use of the -v and
2334
-vd options.
2335
2336
ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
2337
2338
----------------------------------------
2339
14 December 2017. Summary of changes for version 20171214:
2340
2341
2342
1) ACPICA kernel-resident subsystem:
2343
2344
Fixed a regression in the external (public) AcpiEvaluateObjectTyped
2345
interface where the optional "pathname" argument had inadvertently become
2346
a required argument returning an error if omitted (NULL pointer
2347
argument).
2348
2349
Fixed two possible memory leaks related to the recently developed "late
2350
resolution" of reference objects within ASL Package Object definitions.
2351
2352
Added two recently defined _OSI strings: "Windows 2016" and "Windows
2353
2017". Mario Limonciello.
2354
2355
Implemented and deployed a safer version of the C library function
2356
strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
2357
creation of unterminated strings as a possible result of a standard
2358
strncpy.
2359
2360
Cleaned up and restructured the global variable file (acglobal.h). There
2361
are many changes, but no functional changes.
2362
2363
2364
2) iASL Compiler/Disassembler and Tools:
2365
2366
iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
2367
optional OemData field at the end of the table was incorrectly required
2368
for proper compilation. It is now correctly an optional field.
2369
2370
ASLTS: The entire suite was converted from standard ASL to the ASL+
2371
language, using the ASL-to-ASL+ converter which is integrated into the
2372
iASL compiler. A binary compare of all output files has verified the
2373
correctness of the conversion.
2374
2375
iASL: Fixed the source code build for platforms where "char" is unsigned.
2376
This affected the iASL lexer only. Jung-uk Kim.
2377
2378
----------------------------------------
2379
10 November 2017. Summary of changes for version 20171110:
2380
2381
2382
1) ACPICA kernel-resident subsystem:
2383
2384
This release implements full support for ACPI 6.2A:
2385
NFIT - Added a new subtable, "Platform Capabilities Structure"
2386
No other changes to ACPICA were required, since ACPI 6.2A is primarily an
2387
errata release of the specification.
2388
2389
Other ACPI table changes:
2390
IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
2391
PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
2392
Linton
2393
2394
Utilities: Modified the string/integer conversion functions to use
2395
internal 64-bit divide support instead of a native divide. On 32-bit
2396
platforms, a 64-bit divide typically requires a library function which
2397
may not be present in the build (kernel or otherwise).
2398
2399
Implemented a targeted error message for timeouts returned from the
2400
Embedded Controller device driver. This is seen frequently enough to
2401
special-case an AE_TIME returned from an EC operation region access:
2402
"Timeout from EC hardware or EC device driver"
2403
2404
Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
2405
runtime error messages have the identical prefix.
2406
2407
2408
2) iASL Compiler/Disassembler and Tools:
2409
2410
AcpiXtract: Fixed a problem with table header detection within the
2411
acpidump file. Processing a table could be ended early if a 0x40 (@)
2412
appears in the original binary table, resulting in the @ symbol appearing
2413
in the decoded ASCII field at the end of the acpidump text line. The
2414
symbol caused acpixtract to incorrectly think it had reached the end of
2415
the current table and the beginning of a new table.
2416
2417
AcpiXtract: Added an option (-f) to ignore some errors during table
2418
extraction. This initial implementation ignores non-ASCII and non-
2419
printable characters found in the acpidump text file.
2420
2421
TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
2422
for ASLTS. This feature is used to track memory allocations from
2423
different memory caches within the ACPICA code. At the end of an ASLTS
2424
run, these memory statistics are recorded and stored in a log file.
2425
2426
Debugger (user-space version): Implemented a simple "Background" command.
2427
Creates a new thread to execute a control method in the background, while
2428
control returns to the debugger prompt to allow additional commands.
2429
Syntax: Background <Namepath> [Arguments]
2430
2431
----------------------------------------
2432
29 September 2017. Summary of changes for version 20170929:
2433
2434
2435
1) ACPICA kernel-resident subsystem:
2436
2437
Redesigned and implemented an improved ASL While() loop timeout
2438
mechanism. This mechanism is used to prevent infinite loops in the kernel
2439
AML interpreter caused by either non-responsive hardware or incorrect AML
2440
code. The new implementation uses AcpiOsGetTimer instead of a simple
2441
maximum loop count, and is thus more accurate and constant across
2442
different machines. The default timeout is currently 30 seconds, but this
2443
may be adjusted later.
2444
2445
Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
2446
better reflect the new implementation of the loop timeout mechanism.
2447
2448
Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
2449
and to fix an off-by-one error. Jung-uk Kim.
2450
2451
Fixed an EFI build problem by updating the makefiles to for a new file
2452
that was added, utstrsuppt.c
2453
2454
2455
2) iASL Compiler/Disassembler and Tools:
2456
2457
Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
2458
includes support in the table disassembler, compiler, and template
2459
generator.
2460
2461
iASL: Added an exception for an illegal type of recursive method
2462
invocation. If a method creates named objects, the first recursive call
2463
will fail at runtime. This change adds an error detection at compile time
2464
to catch the problem up front. Note: Marking such a method as
2465
"serialized" will not help with this problem, because the same thread can
2466
acquire the method mutex more than once. Example compiler and runtime
2467
output:
2468
2469
Method (MTH1)
2470
{
2471
Name (INT1, 1)
2472
MTH1 ()
2473
}
2474
2475
dsdt.asl 22: MTH1 ()
2476
Error 6152 - ^ Illegal recursive call to method
2477
that creates named objects (MTH1)
2478
2479
Previous runtime exception:
2480
ACPI Error: [INT1] Namespace lookup failure,
2481
AE_ALREADY_EXISTS (20170831/dswload2-465)
2482
2483
iASL: Updated support for External() opcodes to improve namespace
2484
management and error detection. These changes are related to issues seen
2485
with multiple-segment namespace pathnames within External declarations,
2486
such as below:
2487
2488
External(\_SB.PCI0.GFX0, DeviceObj)
2489
External(\_SB.PCI0.GFX0.ALSI)
2490
2491
iASL: Implemented support for multi-line error/warning messages. This
2492
enables more detailed and helpful error messages as below, from the
2493
initial deployment for the duplicate names error:
2494
2495
DSDT.iiii 1692: Device(PEG2) {
2496
Error 6074 - ^ Name already exists in scope
2497
(PEG2)
2498
2499
Original name creation/declaration below:
2500
DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
2501
2502
AcpiXtract: Added additional flexibility to support differing input hex
2503
dump formats. Specifically, hex dumps that contain partial disassembly
2504
and/or comments within the ACPI table data definition. There exist some
2505
dump utilities seen in the field that create this type of hex dump (such
2506
as Simics). For example:
2507
2508
DSDT @ 0xdfffd0c0 (10999 bytes)
2509
Signature DSDT
2510
Length 10999
2511
Revision 1
2512
Checksum 0xf3 (Ok)
2513
OEM_ID BXPC
2514
OEM_table_id BXDSDT
2515
OEM_revision 1
2516
Creator_id 1280593481
2517
Creator_revision 537399345
2518
0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
2519
...
2520
2af0: 5f 4c 30 46 00 a4 01
2521
2522
Test suite: Miscellaneous changes/fixes:
2523
More cleanup and simplification of makefiles
2524
Continue compilation of test cases after a compile failure
2525
Do not perform binary compare unless both files actually exist
2526
2527
iASL: Performed some code/module restructuring. Moved all memory
2528
allocation functions to new modules. Two new files, aslallocate.c and
2529
aslcache.c
2530
2531
----------------------------------------
2532
31 August 2017. Summary of changes for version 20170831:
2533
2534
2535
1) ACPICA kernel-resident subsystem:
2536
2537
Implemented internal support for full 64-bit addresses that appear in all
2538
Generic Address Structure (GAS) structures. Previously, only the lower 32
2539
bits were used. Affects the use of GAS structures in the FADT and other
2540
tables, as well as the GAS structures passed to the AcpiRead and
2541
AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2542
2543
Added header support for the PDTT ACPI table (Processor Debug Trigger
2544
Table). Full support in the iASL Data Table Compiler and disassembler is
2545
forthcoming.
2546
2547
2548
2) iASL Compiler/Disassembler and Tools:
2549
2550
iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2551
Properties Topology Table) where a flag bit was specified in the wrong
2552
bit position ("Line Size Valid", bit 6).
2553
2554
iASL: Implemented support for Octal integer constants as defined by the
2555
ASL language grammar, per the ACPI specification. Any integer constant
2556
that starts with a zero is an octal constant. For example,
2557
Store (037777, Local0) /* Octal constant */
2558
Store (0x3FFF, Local0) /* Hex equivalent */
2559
Store (16383, Local0) /* Decimal equivalent */
2560
2561
iASL: Improved overflow detection for 64-bit string conversions during
2562
compilation of integer constants. "Overflow" in this case means a string
2563
that represents an integer that is too large to fit into a 64-bit value.
2564
Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2565
the low-order 32 bits with a warning, as previously implemented. Several
2566
new exceptions are defined that indicate a 64-bit overflow, as well as
2567
the base (radix) that was used during the attempted conversion. Examples:
2568
Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW
2569
Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW
2570
Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
2571
2572
iASL: Added a warning for the case where a ResourceTemplate is declared
2573
with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2574
this case, the resulting template is created with a single END_TAG
2575
descriptor, which is essentially useless.
2576
2577
iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2578
include compilation error codes as well.
2579
2580
----------------------------------------
2581
28 July 2017. Summary of changes for version 20170728:
2582
2583
2584
1) ACPICA kernel-resident subsystem:
2585
2586
Fixed a regression seen with small resource descriptors that could cause
2587
an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2588
2589
AML interpreter: Implemented a new feature that allows forward references
2590
from individual named references within package objects that are
2591
contained within blocks of "module-level code". This provides
2592
compatibility with other ACPI implementations and supports existing
2593
firmware that depends on this feature. Example:
2594
2595
Name (ABCD, 1)
2596
If (ABCD) /* An If() at module-level */
2597
{
2598
Name (PKG1, Package()
2599
{
2600
INT1 /* Forward reference to object INT1
2601
*/
2602
})
2603
Name (INT1, 0x1234)
2604
}
2605
2606
AML Interpreter: Fixed a problem with the Alias() operator where aliases
2607
to some ASL objects were not handled properly. Objects affected are:
2608
Mutex, Event, and OperationRegion.
2609
2610
AML Debugger: Enhanced to properly handle AML Alias objects. These
2611
objects have one level of indirection which was not fully supported by
2612
the debugger.
2613
2614
Table Manager: Added support to detect and ignore duplicate SSDTs within
2615
the XSDT/RSDT. This error in the XSDT has been seen in the field.
2616
2617
EFI and EDK2 support:
2618
Enabled /WX flag for MSVC builds
2619
Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
2620
Added local support for 64-bit multiply and shift operations
2621
Added support to compile acpidump.efi on Windows
2622
Added OSL function stubs for interfaces not used under EFI
2623
2624
Added additional support for the _DMA predefined name. _DMA returns a
2625
buffer containing a resource template. This change add support within the
2626
resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2627
resource descriptors. Lorenzo Pieralisi <[email protected]>
2628
2629
2630
2) iASL Compiler/Disassembler and Tools:
2631
2632
iASL: Fixed a problem where the internal input line buffer(s) could
2633
overflow if there are very long lines in the input ASL source code file.
2634
Implemented buffer management that automatically increases the size of
2635
the buffers as necessary.
2636
2637
iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2638
errors. If the specified exception is not raised during compilation, the
2639
compiler emits an error. This is intended to support the ASL test suite,
2640
but may be useful in other contexts.
2641
2642
iASL: Implemented a new predefined macro, __METHOD__, which returns a
2643
string containing the name of the current control method that is being
2644
compiled.
2645
2646
iASL: Implemented debugger and table compiler support for the SDEI ACPI
2647
table (Software Delegated Exception Interface). James Morse
2648
<[email protected]>
2649
2650
Unix/Linux makefiles: Added an option to disable compile optimizations.
2651
The disable occurs when the NOOPT flag is set to TRUE.
2652
[email protected]
2653
2654
Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2655
when there are different tables for 32-bit versus 64-bit.
2656
2657
Enhanced error reporting for the ASL test suite (ASLTS) by removing
2658
unnecessary/verbose text, and emit the actual line number where an error
2659
has occurred. These changes are intended to improve the usefulness of the
2660
test suite.
2661
2662
----------------------------------------
2663
29 June 2017. Summary of changes for version 20170629:
2664
2665
2666
1) ACPICA kernel-resident subsystem:
2667
2668
Tables: Implemented a deferred ACPI table verification. This is useful
2669
for operating systems where the tables cannot be verified in the early
2670
initialization stage due to early memory mapping limitations on some
2671
architectures. Lv Zheng.
2672
2673
Tables: Removed the signature validation for dynamically loaded tables.
2674
Provides compatibility with other ACPI implementations. Previously, only
2675
SSDT tables were allowed, as per the ACPI specification. Now, any table
2676
signature can be used via the Load() operator. Lv Zheng.
2677
2678
Tables: Fixed several mutex issues that could cause errors during table
2679
acquisition. Lv Zheng.
2680
2681
Tables: Fixed a problem where an ACPI warning could be generated if a
2682
null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2683
2684
Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2685
AcpiPutTable interfaces. This applies to the "late stage" table loading
2686
when the use of AcpiPutTable is no longer required (since the system
2687
memory manager is fully running and available). Lv Zheng.
2688
2689
Fixed/Reverted a regression during processing of resource descriptors
2690
that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2691
exception in this case.
2692
2693
Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2694
I/O Remapping specification. Robin Murphy <[email protected]>
2695
2696
Interpreter: Fixed a possible fault if an Alias operator with an invalid
2697
or duplicate target is encountered during Alias creation in
2698
AcpiExCreateAlias. Alex James <[email protected]>
2699
2700
Added an option to use designated initializers for function pointers.
2701
Kees Cook <[email protected]>
2702
2703
2704
2) iASL Compiler/Disassembler and Tools:
2705
2706
iASL: Allow compilation of External declarations with target pathnames
2707
that refer to existing named objects within the table. Erik Schmauss.
2708
2709
iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2710
FieldUnit name also is declared via External in the same table. Erik
2711
Schmauss.
2712
2713
iASL: Allow existing scope names within pathnames used in External
2714
statements. For example:
2715
External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2716
Device (ABCD)
2717
2718
iASL: IORT ACPI table: Implemented changes required to decode the new
2719
Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2720
compiler. Ganapatrao Kulkarni <[email protected]>
2721
2722
Disassembler: Don't abort disassembly on errors from External()
2723
statements. Erik Schmauss.
2724
2725
Disassembler: fixed a possible fault when one of the Create*Field
2726
operators references a Resource Template. ACPICA Bugzilla 1396.
2727
2728
iASL: In the source code, resolved some naming inconsistences across the
2729
parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2730
Adds a new file, aslparseop.c
2731
2732
----------------------------------------
2733
31 May 2017. Summary of changes for version 20170531:
2734
2735
2736
0) ACPI 6.2 support:
2737
2738
The ACPI specification version 6.2 has been released and is available at
2739
http://uefi.org/specifications
2740
2741
This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2742
are summarized below.
2743
2744
New ACPI tables (Table Compiler/Disassembler/Templates):
2745
HMAT (Heterogeneous Memory Attributes Table)
2746
WSMT (Windows SMM Security Mitigation Table)
2747
PPTT (Processor Properties Topology Table)
2748
2749
New subtables for existing ACPI tables:
2750
HEST (New subtable, Arch-deferred machine check)
2751
SRAT (New subtable, Arch-specific affinity structure)
2752
PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2753
2754
Simple updates for existing ACPI tables:
2755
BGRT (two new flag bits)
2756
HEST (New bit defined for several subtables, GHES_ASSIST)
2757
2758
New Resource Descriptors and Resource macros (Compiler/Disassembler):
2759
PinConfig()
2760
PinFunction()
2761
PinGroup()
2762
PinGroupConfig()
2763
PinGroupFunction()
2764
New type for hardware error notification (section 18.3.2.9)
2765
2766
New predefined names/methods (Compiler/Interpreter):
2767
_HMA (Heterogeneous Memory Attributes)
2768
_LSI (Label Storage Information)
2769
_LSR (Label Storage Read)
2770
_LSW (Label Storage Write)
2771
2772
ASL grammar/macro changes (Compiler):
2773
For() ASL macro, implemented with the AML while operator
2774
Extensions to Concatenate operator
2775
Support for multiple definition blocks in same ASL file
2776
Clarification for Buffer operator
2777
Allow executable AML code underneath all scopes (Devices, etc.)
2778
Clarification/change for the _OSI return value
2779
ASL grammar update for reference operators
2780
Allow a zero-length string for AML filename in DefinitionBlock
2781
2782
Miscellaneous:
2783
New device object notification value
2784
Remove a notify value (0x0C) for graceful shutdown
2785
New UUIDs for processor/cache properties and
2786
physical package property
2787
New _HID, ACPI0014 (Wireless Power Calibration Device)
2788
2789
2790
1) ACPICA kernel-resident subsystem:
2791
2792
Added support to disable ACPI events on hardware-reduced platforms.
2793
Eliminates error messages of the form "Could not enable fixed event". Lv
2794
Zheng
2795
2796
Fixed a problem using Device/Thermal objects with the ObjectType and
2797
DerefOf ASL operators. This support had not been fully/properly
2798
implemented.
2799
2800
Fixed a problem where if a Buffer object containing a resource template
2801
was longer than the actual resource template, an error was generated --
2802
even though the AML is legal. This case has been seen in the field.
2803
2804
Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2805
The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2806
2807
Added header file changes for the TPM2 ACPI table. Update to new version
2808
of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2809
2810
Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2811
These interfaces are intended to be used only in conjunction with the
2812
predefined _DLM method (Device Lock Method). "This object appears in a
2813
device scope when AML access to the device must be synchronized with the
2814
OS environment".
2815
2816
Example Code and Data Size: These are the sizes for the OS-independent
2817
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2818
debug version of the code includes the debug output trace mechanism and
2819
has a much larger code and data size.
2820
2821
Current Release:
2822
Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2823
Debug Version: 204.0K Code, 84.3K Data, 288.3K Total
2824
Previous Release:
2825
Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2826
Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
2827
2828
2829
2) iASL Compiler/Disassembler and Tools:
2830
2831
iASL: Fixed a problem where an External() declaration could not refer to
2832
a Field Unit. Erik Schmauss.
2833
2834
Disassembler: Improved support for the Switch/Case operators. This
2835
feature will disassemble AML code back to the original Switch operators
2836
when possible, instead of an If..Else sequence. David Box
2837
2838
iASL and disassembler: Improved the handling of multiple extraneous
2839
parentheses for both ASL input and disassembled ASL output.
2840
2841
Improved the behavior of the iASL compiler and disassembler to detect
2842
improper use of external declarations
2843
2844
Disassembler: Now aborts immediately upon detection of an unknown AML
2845
opcode. The AML parser has no real way to recover from this, and can
2846
result in the creation of an ill-formed parse tree that causes errors
2847
later during the disassembly.
2848
2849
All tools: Fixed a problem where the Unix application OSL did not handle
2850
control-c correctly. For example, a control-c could incorrectly wake the
2851
debugger.
2852
2853
AcpiExec: Improved the Control-C handling and added a handler for
2854
segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2855
environments.
2856
2857
Reduced the verbosity of the generic unix makefiles. Previously, each
2858
compilation displayed the full set of compiler options. This has been
2859
eliminated as the options are easily inspected within the makefiles. Each
2860
compilation now results in a single line of output.
2861
2862
----------------------------------------
2863
03 March 2017. Summary of changes for version 20170303:
2864
2865
2866
0) ACPICA licensing:
2867
2868
The licensing information at the start of each source code module has
2869
been updated. In addition to the Intel license, the dual GPLv2/BSD
2870
license has been added for completeness. Now, a single version of the
2871
source code should be suitable for all ACPICA customers. This is the
2872
major change for this release since it affects all source code modules.
2873
2874
2875
1) ACPICA kernel-resident subsystem:
2876
2877
Fixed two issues with the common asltypes.h header that could cause
2878
problems in some environments: (Kim Jung-uk)
2879
Removed typedef for YY_BUFFER_STATE ?
2880
Fixes an error with earlier versions of Flex.
2881
Removed use of FILE typedef (which is only defined in stdio.h)
2882
2883
2884
2) iASL Compiler/Disassembler and Tools:
2885
2886
Disassembler: fixed a regression introduced in 20170224. A fix for a
2887
memory leak related to resource descriptor tags (names) could fault when
2888
the disassembler was generated with 64-bit compilers.
2889
2890
The ASLTS test suite has been updated to implement a new testing
2891
architecture. During generation of the suite from ASL source, both the
2892
ASL and ASL+ compilers are now validated, as well as the disassembler
2893
itself (Erik Schmauss). The architecture executes as follows:
2894
2895
For every ASL source module:
2896
Compile (legacy ASL compilation)
2897
Disassemble the resulting AML to ASL+ source code
2898
Compile the new ASL+ module
2899
Perform a binary compare on the legacy AML and the new ASL+ AML
2900
The ASLTS suite then executes normally using the AML binaries.
2901
2902
----------------------------------------
2903
24 February 2017. Summary of changes for version 20170224:
2904
2905
2906
1) ACPICA kernel-resident subsystem:
2907
2908
Interpreter: Fixed two issues with the control method return value auto-
2909
repair feature, where an attempt to double-delete an internal object
2910
could result in an ACPICA warning (for _CID repair and others). No fault
2911
occurs, however, because the attempted deletion (actually a release to an
2912
internal cache) is detected and ignored via object poisoning.
2913
2914
Debugger: Fixed an AML interpreter mutex issue during the single stepping
2915
of control methods. If certain debugger commands are executed during
2916
stepping, a mutex acquire/release error could occur. Lv Zheng.
2917
2918
Fixed some issues generating ACPICA with the Intel C compiler by
2919
restoring the original behavior and compiler-specific include file in
2920
acenv.h. Lv Zheng.
2921
2922
Example Code and Data Size: These are the sizes for the OS-independent
2923
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2924
debug version of the code includes the debug output trace mechanism and
2925
has a much larger code and data size.
2926
2927
Current Release:
2928
Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2929
Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
2930
Previous Release:
2931
Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2932
Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2933
2934
2935
2) iASL Compiler/Disassembler and Tools:
2936
2937
iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2938
tool has been designed, implemented, and included in this release. The
2939
key feature of this utility is that the original comments within the
2940
input ASL file are preserved during the conversion process, and included
2941
within the converted ASL+ file -- thus creating a transparent conversion
2942
of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2943
2944
Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
2945
converted code
2946
2947
iASL/Disassembler: Improved the detection and correct disassembly of
2948
Switch/Case operators. This feature detects sequences of if/elseif/else
2949
operators that originated from ASL Switch/Case/Default operators and
2950
emits the original operators. David Box.
2951
2952
iASL: Improved the IORT ACPI table support in the following areas. Lv
2953
Zheng:
2954
Clear MappingOffset if the MappingCount is zero.
2955
Fix the disassembly of the SMMU GSU interrupt offset.
2956
Update the template file for the IORT table.
2957
2958
Disassembler: Enhanced the detection and disassembly of resource
2959
template/descriptor within a Buffer object. An EndTag descriptor is now
2960
required to have a zero second byte, since all known ASL compilers emit
2961
this. This helps eliminate incorrect decisions when a buffer is
2962
disassembled (false positives on resource templates).
2963
2964
----------------------------------------
2965
19 January 2017. Summary of changes for version 20170119:
2966
2967
2968
1) General ACPICA software:
2969
2970
Entire source code base: Added the 2017 copyright to all source code
2971
legal/licensing module headers and utility/tool signons. This includes
2972
the standard Linux dual-license header. This affects virtually every file
2973
in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2974
the ACPICA test suite.
2975
2976
2977
2) iASL Compiler/Disassembler and Tools:
2978
2979
iASL: Removed/fixed an inadvertent remark when a method argument
2980
containing a reference is used as a target operand within the method (and
2981
never used as a simple argument), as in the example below. Jeffrey Hugo.
2982
2983
dsdt.asl 1507: Store(0x1, Arg0)
2984
Remark 2146 - ^ Method Argument is never used (Arg0)
2985
2986
All tools: Removed the bit width of the compiler that generated the tool
2987
from the common signon for all user space tools. This proved to be
2988
confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2989
from the generic makefiles (Thomas Petazzoni). Example below.
2990
2991
Old:
2992
ASL+ Optimizing Compiler version 20170119-32
2993
ASL+ Optimizing Compiler version 20170119-64
2994
2995
New:
2996
ASL+ Optimizing Compiler version 20170119
2997
2998
----------------------------------------
2999
22 December 2016. Summary of changes for version 20161222:
3000
3001
3002
1) ACPICA kernel-resident subsystem:
3003
3004
AML Debugger: Implemented a new mechanism to simplify and enhance
3005
debugger integration into all environments, including kernel debuggers
3006
and user-space utilities, as well as remote debug services. This
3007
mechanism essentially consists of new OSL interfaces to support debugger
3008
initialization/termination, as well as wait/notify interfaces to perform
3009
the debugger handshake with the host. Lv Zheng.
3010
3011
New OSL interfaces:
3012
AcpiOsInitializeDebugger (void)
3013
AcpiOsTerminateDebugger (void)
3014
AcpiOsWaitCommandReady (void)
3015
AcpiOsNotifyCommandComplete (void)
3016
3017
New OS services layer:
3018
osgendbg.c -- Example implementation, and used for AcpiExec
3019
3020
Update for Generic Address Space (GAS) support: Although the AccessWidth
3021
and/or BitOffset fields of the GAS are not often used, this change now
3022
fully supports these fields. This affects the internal support for FADT
3023
registers, registers in other ACPI data tables, and the AcpiRead and
3024
AcpiWrite public interfaces. Lv Zheng.
3025
3026
Sleep support: In order to simplify integration of ACPI sleep for the
3027
various host operating systems, a new OSL interface has been introduced.
3028
AcpiOsEnterSleep allows the host to perform any required operations
3029
before the final write to the sleep control register(s) is performed by
3030
ACPICA. Lv Zheng.
3031
3032
New OSL interface:
3033
AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
3034
3035
Called from these internal interfaces:
3036
AcpiHwLegacySleep
3037
AcpiHwExtendedSleep
3038
3039
EFI support: Added a very small EFI/ACPICA example application. Provides
3040
a simple demo for EFI integration, as well as assisting with resolution
3041
of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
3042
3043
source/tools/efihello/efihello.c
3044
3045
Local C library: Implemented several new functions to enhance ACPICA
3046
portability, for environments where these clib functions are not
3047
available (such as EFI). Lv Zheng:
3048
putchar
3049
getchar
3050
strpbrk
3051
strtok
3052
memmove
3053
3054
Fixed a regression where occasionally a valid resource descriptor was
3055
incorrectly detected as invalid at runtime, and a
3056
AE_AML_NO_RESOURCE_END_TAG was returned.
3057
3058
Fixed a problem with the recently implemented support that enables
3059
control method invocations as Target operands to many ASL operators.
3060
Warnings of this form: "Needed type [Reference], found [Processor]" were
3061
seen at runtime for some method invocations.
3062
3063
Example Code and Data Size: These are the sizes for the OS-independent
3064
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3065
debug version of the code includes the debug output trace mechanism and
3066
has a much larger code and data size.
3067
3068
Current Release:
3069
Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
3070
Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
3071
Previous Release:
3072
Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3073
Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
3074
3075
3076
2) iASL Compiler/Disassembler and Tools:
3077
3078
Disassembler: Enhanced output by adding the capability to detect and
3079
disassemble ASL Switch/Case statements back to the original ASL source
3080
code instead of if/else blocks. David Box.
3081
3082
AcpiHelp: Split a large file into separate files based upon
3083
functionality/purpose. New files are:
3084
ahaml.c
3085
ahasl.c
3086
3087
----------------------------------------
3088
17 November 2016. Summary of changes for version 20161117:
3089
3090
3091
1) ACPICA kernel-resident subsystem:
3092
3093
Table Manager: Fixed a regression introduced in 20160729, "FADT support
3094
cleanup". This was an attempt to remove all references in the source to
3095
the FADT version 2, which never was a legal version number. It was
3096
skipped because it was an early version of 64-bit support that was
3097
eventually abandoned for the current 64-bit support.
3098
3099
Interpreter: Fixed a problem where runtime implicit conversion was
3100
incorrectly disabled for the ASL operators below. This brings the
3101
behavior into compliance with the ACPI specification:
3102
FromBCD
3103
ToBCD
3104
ToDecimalString
3105
ToHexString
3106
ToInteger
3107
ToBuffer
3108
3109
Table Manager: Added a new public interface, AcpiPutTable, used to
3110
release and free an ACPI table returned by AcpiGetTable and related
3111
interfaces. Lv Zheng.
3112
3113
Example Code and Data Size: These are the sizes for the OS-independent
3114
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3115
debug version of the code includes the debug output trace mechanism and
3116
has a much larger code and data size.
3117
3118
Current Release:
3119
Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3120
Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
3121
Previous Release:
3122
Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3123
Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
3124
3125
3126
2) iASL Compiler/Disassembler and Tools:
3127
3128
Disassembler: Fixed a regression for disassembly of Resource Template.
3129
Detection of templates in the AML stream missed some types of templates.
3130
3131
iASL: Fixed a problem where an Access Size error was returned for the PCC
3132
address space when the AccessSize of the GAS register is greater than a
3133
DWORD. Hoan Tran.
3134
3135
iASL: Implemented several grammar changes for the operators below. These
3136
changes are slated for the next version of the ACPI specification:
3137
RefOf - Disallow method invocation as an operand
3138
CondRefOf - Disallow method invocation as an operand
3139
DerefOf - Disallow operands that use the result from operators
3140
that
3141
do not return a reference (Changed TermArg to
3142
SuperName).
3143
3144
iASL: Control method invocations are now allowed for Target operands, as
3145
per the ACPI specification. Removed error for using a control method
3146
invocation as a Target operand.
3147
3148
Disassembler: Improved detection of Resource Templates, Unicode, and
3149
Strings within Buffer objects. These subtypes do not contain a specific
3150
opcode to indicate the originating ASL code, and they must be detected by
3151
other means within the disassembler.
3152
3153
iASL: Implemented an optimization improvement for 32-bit ACPI tables
3154
(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
3155
only after 64-bit to 32-bit truncation. A truncation warning message is
3156
still emitted, however.
3157
3158
AcpiXtract: Implemented handling for both types of line terminators (LF
3159
or CR/LF) so that it can accept AcpiDump output files from any system.
3160
Peter Wu.
3161
3162
AcpiBin: Added two new options for comparing AML files:
3163
-a: compare and display ALL mismatches
3164
-o: start compare at this offset into the second file
3165
3166
----------------------------------------
3167
30 September 2016. Summary of changes for version 20160930:
3168
3169
3170
1) ACPICA kernel-resident subsystem:
3171
3172
Fixed a regression in the internal AcpiTbFindTable function where a non
3173
AE_OK exception could inadvertently be returned even if the function did
3174
not fail. This problem affects the following operators:
3175
DataTableRegion
3176
LoadTable
3177
3178
Fixed a regression in the LoadTable operator where a load to any
3179
namespace location other than the root no longer worked properly.
3180
3181
Increased the maximum loop count value that will result in the
3182
AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
3183
prevent infinite loops within the AML interpreter and thus the host OS
3184
kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
3185
1,048,575).
3186
3187
Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
3188
acpixf.h file. This allows hosts to easily configure the maximum loop
3189
count at runtime.
3190
3191
Removed an illegal character in the strtoul64.c file. This character
3192
caused errors with some C compilers.
3193
3194
Example Code and Data Size: These are the sizes for the OS-independent
3195
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3196
debug version of the code includes the debug output trace mechanism and
3197
has a much larger code and data size.
3198
3199
Current Release:
3200
Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3201
Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
3202
Previous Release:
3203
Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
3204
Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
3205
3206
3207
2) iASL Compiler/Disassembler and Tools:
3208
3209
Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
3210
the simpler ASL ElseIf keyword. During the conversion, a trailing If
3211
block could be lost and missing from the disassembled output.
3212
3213
iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
3214
the missing rule caused a parse error when using the Index operator as an
3215
operand to ObjectType. This construct now compiles properly. Example:
3216
ObjectType(PKG1[4]).
3217
3218
iASL: Correctly handle unresolved symbols in the hardware map file (-lm
3219
option). Previously, unresolved symbols could cause a protection fault.
3220
Such symbols are now marked as unresolved in the map file.
3221
3222
iASL: Implemented support to allow control method invocations as an
3223
operand to the ASL DeRefOf operator. Example:
3224
DeRefOf(MTH1(Local0))
3225
3226
Disassembler: Improved support for the ToPLD ASL macro. Detection of a
3227
possible _PLD buffer now includes examination of both the normal buffer
3228
length (16 or 20) as well as the surrounding AML package length.
3229
3230
Disassembler: Fixed a problem with the decoding of complex expressions
3231
within the Divide operator for ASL+. For the case where both the quotient
3232
and remainder targets are specified, the entire statement cannot be
3233
disassembled. Previously, the output incorrectly contained a mix of ASL-
3234
and ASL+ operators. This mixed statement causes a syntax error when
3235
compiled. Example:
3236
Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
3237
disassembled to:
3238
Divide (INT1 + 6, 128, RSLT, QUOT)
3239
3240
iASL/Tools: Added support to process AML and non-AML ACPI tables
3241
consistently. For the disassembler and AcpiExec, allow all types of ACPI
3242
tables (AML and data tables). For the iASL -e option, allow only AML
3243
tables (DSDT/SSDT).
3244
3245
----------------------------------------
3246
31 August 2016. Summary of changes for version 20160831:
3247
3248
3249
1) ACPICA kernel-resident subsystem:
3250
3251
Improve support for the so-called "module-level code", which is defined
3252
to be math, logical and control AML opcodes that appear outside of any
3253
control method. This change improves the support by adding more opcodes
3254
that can be executed in the manner. Some other issues have been solved,
3255
and the ASL grammar changes to support such code under all scope
3256
operators (Device, etc.) are complete. Lv Zheng.
3257
3258
UEFI support: these OSL functions have been implemented. This is an
3259
additional step toward supporting the AcpiExec utility natively (with
3260
full hardware access) under UEFI. Marcelo Ferreira.
3261
AcpiOsReadPciConfiguration
3262
AcpiOsWritePciConfiguration
3263
3264
Fixed a possible mutex error during control method auto-serialization. Lv
3265
Zheng.
3266
3267
Updated support for the Generic Address Structure by fully implementing
3268
all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
3269
Zheng.
3270
3271
Updated the return value for the internal _OSI method. Instead of
3272
0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
3273
for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
3274
implementations, and will be reflected and clarified in the next version
3275
of the ACPI specification.
3276
3277
Implemented two new table events that can be passed to an ACPICA table
3278
handler. These events are used to indicate a table installation or
3279
uninstallation. These events are used in addition to existed table load
3280
and unload events. Lv Zheng.
3281
3282
Implemented a cleanup for all internal string-to-integer conversions.
3283
Consolidate multiple versions of this functionality and limit possible
3284
bases to either 10 or 16 to simplify the code. Adds a new file,
3285
utstrtoul64.
3286
3287
Cleanup the inclusion order of the various compiler-specific headers.
3288
This simplifies build configuration management. The compiler-specific
3289
headers are now split out from the host-specific headers. Lv Zheng.
3290
3291
Example Code and Data Size: These are the sizes for the OS-independent
3292
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3293
debug version of the code includes the debug output trace mechanism and
3294
has a much larger code and data size.
3295
3296
Current Release:
3297
Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
3298
Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
3299
3300
3301
2) iASL Compiler/Disassembler and Tools:
3302
3303
iASL/AcpiExec: Added a command line option to display the build date/time
3304
of the tool (-vd). This can be useful to verify that the correct version
3305
of the tools are being used.
3306
3307
AML Debugger: Implemented a new subcommand ("execute predef") to execute
3308
all predefined control methods and names within the current namespace.
3309
This can be useful for debugging problems with ACPI tables and the ACPI
3310
namespace.
3311
3312
----------------------------------------
3313
29 July 2016. Summary of changes for version 20160729:
3314
3315
3316
1) ACPICA kernel-resident subsystem:
3317
3318
Implemented basic UEFI support for the various ACPICA tools. This
3319
includes:
3320
1) An OSL to implement the various AcpiOs* interfaces on UEFI.
3321
2) Support to obtain the ACPI tables on UEFI.
3322
3) Local implementation of required C library functions not available on
3323
UEFI.
3324
4) A front-end (main) function for the tools for UEFI-related
3325
initialization.
3326
3327
The initial deployment of this support is the AcpiDump utility executing
3328
as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
3329
Current environments supported are Linux/Unix. MSVC generation is not
3330
supported at this time. See the generate/efi/README file for build
3331
instructions. Lv Zheng.
3332
3333
Future plans include porting the AcpiExec utility to execute natively on
3334
the platform with I/O and memory access. This will allow viewing/dump of
3335
the platform namespace and native execution of ACPI control methods that
3336
access the actual hardware. To fully implement this support, the OSL
3337
functions below must be implemented with UEFI interfaces. Any community
3338
help in the implementation of these functions would be appreciated:
3339
AcpiOsReadPort
3340
AcpiOsWritePort
3341
AcpiOsReadMemory
3342
AcpiOsWriteMemory
3343
AcpiOsReadPciConfiguration
3344
AcpiOsWritePciConfiguration
3345
3346
Restructured and standardized the C library configuration for ACPICA,
3347
resulting in the various configuration options below. This includes a
3348
global restructuring of the compiler-dependent and platform-dependent
3349
include files. These changes may affect the existing platform-dependent
3350
configuration files on some hosts. Lv Zheng.
3351
3352
The current C library configuration options appear below. For any issues,
3353
it may be helpful to examine the existing compiler-dependent and
3354
platform-dependent files as examples. Lv Zheng.
3355
3356
1) Linux kernel:
3357
ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3358
library.
3359
ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
3360
2) Unix/Windows/BSD applications:
3361
ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
3362
library.
3363
ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
3364
3) UEFI applications:
3365
ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3366
library.
3367
ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
3368
4) UEFI applications (EDK2/StdLib):
3369
ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
3370
ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
3371
3372
3373
AML interpreter: "module-level code" support. Allows for execution of so-
3374
called "executable" AML code (math/logical operations, etc.) outside of
3375
control methods not just at the module level (top level) but also within
3376
any scope declared outside of a control method - Scope{}, Device{},
3377
Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
3378
3379
Simplified the configuration of the "maximum AML loops" global option by
3380
adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
3381
modified at runtime.
3382
3383
3384
Example Code and Data Size: These are the sizes for the OS-independent
3385
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3386
debug version of the code includes the debug output trace mechanism and
3387
has a much larger code and data size.
3388
3389
Current Release:
3390
Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
3391
Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
3392
3393
3394
2) iASL Compiler/Disassembler and Tools:
3395
3396
iASL: Add full support for the RASF ACPI table (RAS Features Table).
3397
Includes disassembler, data table compiler, and header support.
3398
3399
iASL Expand "module-level code" support. Allows for
3400
compilation/disassembly of so-called "executable" AML code (math/logical
3401
operations, etc.) outside of control methods not just at the module level
3402
(top level) but also within any scope declared outside of a control
3403
method - Scope{}, Device{}, Processor{}, PowerResource{}, and
3404
ThermalZone{}.
3405
3406
AcpiDump: Added support for dumping all SSDTs on newer versions of
3407
Windows. These tables are now easily available -- SSDTs are not available
3408
through the registry on older versions.
3409
3410
----------------------------------------
3411
27 May 2016. Summary of changes for version 20160527:
3412
3413
3414
1) ACPICA kernel-resident subsystem:
3415
3416
Temporarily reverted the new arbitrary bit length/alignment support in
3417
AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
3418
a number of regressions with the new code that need to be fully resolved
3419
and tested before this support can be finally integrated into ACPICA.
3420
Apologies for any inconveniences these issues may have caused.
3421
3422
The ACPI message macros are not configurable (ACPI_MSG_ERROR,
3423
ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
3424
and ACPI_MSG_BIOS_WARNING). Lv Zheng.
3425
3426
Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
3427
option. Adds a new return macro, return_STR. Junk-uk Kim.
3428
3429
Example Code and Data Size: These are the sizes for the OS-independent
3430
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3431
debug version of the code includes the debug output trace mechanism and
3432
has a much larger code and data size.
3433
3434
Current Release:
3435
Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
3436
Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
3437
Previous Release:
3438
Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3439
Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
3440
3441
----------------------------------------
3442
22 April 2016. Summary of changes for version 20160422:
3443
3444
1) ACPICA kernel-resident subsystem:
3445
3446
Fixed a regression in the GAS (generic address structure) arbitrary bit
3447
support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
3448
and incorrect return values. Lv Zheng. ACPICA BZ 1270.
3449
3450
ACPI 6.0: Added support for new/renamed resource macros. One new argument
3451
was added to each of these macros, and the original name has been
3452
deprecated. The AML disassembler will always disassemble to the new
3453
names. Support for the new macros was added to iASL, disassembler,
3454
resource manager, and the acpihelp utility. ACPICA BZ 1274.
3455
3456
I2cSerialBus -> I2cSerialBusV2
3457
SpiSerialBus -> SpiSerialBusV2
3458
UartSerialBus -> UartSerialBusV2
3459
3460
ACPI 6.0: Added support for a new integer field that was appended to the
3461
package object returned by the _BIX method. This adds iASL compile-time
3462
and AML runtime error checking. ACPICA BZ 1273.
3463
3464
ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
3465
Subspace Type2" (Headers, Disassembler, and data table compiler).
3466
3467
Example Code and Data Size: These are the sizes for the OS-independent
3468
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3469
debug version of the code includes the debug output trace mechanism and
3470
has a much larger code and data size.
3471
3472
Current Release:
3473
Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3474
Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
3475
Previous Release:
3476
Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3477
Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
3478
3479
3480
2) iASL Compiler/Disassembler and Tools:
3481
3482
iASL: Implemented an ASL grammar extension to allow/enable executable
3483
"module-level code" to be created and executed under the various
3484
operators that create new scopes. This type of AML code is already
3485
supported in all known AML interpreters, and the grammar change will
3486
appear in the next version of the ACPI specification. Simplifies the
3487
conditional runtime creation of named objects under these object types:
3488
3489
Device
3490
PowerResource
3491
Processor
3492
Scope
3493
ThermalZone
3494
3495
iASL: Implemented a new ASL extension, a "For" loop macro to add greater
3496
ease-of-use to the ASL language. The syntax is similar to the
3497
corresponding C operator, and is implemented with the existing AML While
3498
opcode -- thus requiring no changes to existing AML interpreters.
3499
3500
For (Initialize, Predicate, Update) {TermList}
3501
3502
Grammar:
3503
ForTerm :=
3504
For (
3505
Initializer // Nothing | TermArg => ComputationalData
3506
Predicate // Nothing | TermArg => ComputationalData
3507
Update // Nothing | TermArg => ComputationalData
3508
) {TermList}
3509
3510
3511
iASL: The _HID/_ADR detection and validation has been enhanced to search
3512
under conditionals in order to allow these objects to be conditionally
3513
created at runtime.
3514
3515
iASL: Fixed several issues with the constant folding feature. The
3516
improvement allows better detection and resolution of statements that can
3517
be folded at compile time. ACPICA BZ 1266.
3518
3519
iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3520
conversion to the ASL ElseIf operator where incorrect ASL code could be
3521
generated.
3522
3523
iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3524
sometimes an extra (and extraneous) set of parentheses were emitted for
3525
some combinations of operators. Although this did not cause any problems
3526
with recompilation of the disassembled code, it made the code more
3527
difficult to read. David Box. ACPICA BZ 1231.
3528
3529
iASL: Changed to ignore the unreferenced detection for predefined names
3530
of resource descriptor elements, when the resource descriptor is
3531
created/defined within a control method.
3532
3533
iASL: Disassembler: Fix a possible fault with externally declared Buffer
3534
objects.
3535
3536
----------------------------------------
3537
18 March 2016. Summary of changes for version 20160318:
3538
3539
1) ACPICA kernel-resident subsystem:
3540
3541
Added support for arbitrary bit lengths and bit offsets for registers
3542
defined by the Generic Address Structure. Previously, only aligned bit
3543
lengths of 8/16/32/64 were supported. This was sufficient for many years,
3544
but recently some machines have been seen that require arbitrary bit-
3545
level support. ACPICA BZ 1240. Lv Zheng.
3546
3547
Fixed an issue where the \_SB._INI method sometimes must be evaluated
3548
before any _REG methods are evaluated. Lv Zheng.
3549
3550
Implemented several changes related to ACPI table support
3551
(Headers/Disassembler/TableCompiler):
3552
NFIT: For ACPI 6.1, updated to add some additional new fields and
3553
constants.
3554
FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
3555
6).
3556
DMAR: Added new constants per the 10/2014 DMAR spec.
3557
IORT: Added new subtable per the 10/2015 IORT spec.
3558
HEST: For ACPI 6.1, added new constants and new subtable.
3559
DBG2: Added new constants per the 12/2015 DBG2 spec.
3560
FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3561
ACPICA BZ 1249.
3562
ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3563
3564
Updated header support for the DMAR table to match the current version of
3565
the related spec.
3566
3567
Added extensions to the ASL Concatenate operator to allow any ACPI object
3568
to be passed as an operand. Any object other than Integer/String/Buffer
3569
simply returns a string containing the object type. This extends the
3570
usefulness of the Printf macros. Previously, Concatenate would abort the
3571
control method if a non-data object was encountered.
3572
3573
ACPICA source code: Deployed the C "const" keyword across the source code
3574
where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3575
3576
Example Code and Data Size: These are the sizes for the OS-independent
3577
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3578
debug version of the code includes the debug output trace mechanism and
3579
has a much larger code and data size.
3580
3581
Current Release:
3582
Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3583
Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
3584
Previous Release:
3585
Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3586
Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
3587
3588
3589
2) iASL Compiler/Disassembler and Tools:
3590
3591
iASL/Disassembler: Improved the heuristic used to determine the number of
3592
arguments for an externally defined control method (a method in another
3593
table). Although this is an improvement, there is no deterministic way to
3594
"guess" the number of method arguments. Only the ACPI 6.0 External opcode
3595
will completely solve this problem as it is deployed (automatically) in
3596
newer BIOS code.
3597
3598
iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3599
statements that could cause errors when the disassembled file is
3600
compiled. ACPICA BZ 1243. David Box.
3601
3602
iASL: Fixed a regression caused by the merger of the two versions of the
3603
local strtoul64. Because of a dependency on a global variable, strtoul64
3604
could return an error for integers greater than a 32-bit value. ACPICA BZ
3605
1260.
3606
3607
iASL: Fixed a regression where a fault could occur for an ASL Return
3608
statement if it invokes a control method that is not resolved. ACPICA BZ
3609
1264.
3610
3611
AcpiXtract: Improved input file validation: detection of binary files and
3612
non-acpidump text files.
3613
3614
----------------------------------------
3615
12 February 2016. Summary of changes for version 20160212:
3616
3617
1) ACPICA kernel-resident subsystem:
3618
3619
Implemented full support for the ACPI 6.1 specification (released in
3620
January). This version of the specification is available at:
3621
http://www.uefi.org/specifications
3622
3623
Only a relatively small number of changes were required in ACPICA to
3624
support ACPI 6.1, in these areas:
3625
- New predefined names
3626
- New _HID values
3627
- A new subtable for HEST
3628
- A few other header changes for new values
3629
3630
Ensure \_SB_._INI is executed before any _REG methods are executed. There
3631
appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3632
3633
Reverted a change made in version 20151218 which enabled method
3634
invocations to be targets of various ASL operators (SuperName and Target
3635
grammar elements). While the new behavior is supported by the ACPI
3636
specification, other AML interpreters do not support this behavior and
3637
never will. The ACPI specification will be updated for ACPI 6.2 to remove
3638
this support. Therefore, the change was reverted to the original ACPICA
3639
behavior.
3640
3641
ACPICA now supports the GCC 6 compiler.
3642
3643
Current Release: (Note: build changes increased sizes)
3644
Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3645
Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
3646
Previous Release:
3647
Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3648
Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
3649
3650
3651
2) iASL Compiler/Disassembler and Tools:
3652
3653
Completed full support for the ACPI 6.0 External() AML opcode. The
3654
compiler emits an external AML opcode for each ASL External statement.
3655
This opcode is used by the disassembler to assist with the disassembly of
3656
external control methods by specifying the required number of arguments
3657
for the method. AML interpreters do not use this opcode. To ensure that
3658
interpreters do not even see the opcode, a block of one or more external
3659
opcodes is surrounded by an "If(0)" construct. As this feature becomes
3660
commonly deployed in BIOS code, the ability of disassemblers to correctly
3661
disassemble AML code will be greatly improved. David Box.
3662
3663
iASL: Implemented support for an optional cross-reference output file.
3664
The -lx option will create a the cross-reference file with the suffix
3665
"xrf". Three different types of cross-reference are created in this file:
3666
- List of object references made from within each control method
3667
- Invocation (caller) list for each user-defined control method
3668
- List of references to each non-method object in the namespace
3669
3670
iASL: Method invocations as ASL Target operands are now disallowed and
3671
flagged as errors in preparation for ACPI 6.2 (see the description of the
3672
problem above).
3673
3674
----------------------------------------
3675
8 January 2016. Summary of changes for version 20160108:
3676
3677
1) ACPICA kernel-resident subsystem:
3678
3679
Updated all ACPICA copyrights and signons to 2016: Added the 2016
3680
copyright to all source code module headers and utility/tool signons.
3681
This includes the standard Linux dual-license header. This affects
3682
virtually every file in the ACPICA core subsystem, iASL compiler, all
3683
ACPICA utilities, and the ACPICA test suite.
3684
3685
Fixed a regression introduced in version 20151218 concerning the
3686
execution of so-called module-level ASL/AML code. Namespace objects
3687
created under a module-level If() construct were not properly/fully
3688
entered into the namespace and could cause an interpreter fault when
3689
accessed.
3690
3691
Example Code and Data Size: These are the sizes for the OS-independent
3692
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3693
debug version of the code includes the debug output trace mechanism and
3694
has a much larger code and data size.
3695
3696
Current Release:
3697
Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3698
Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
3699
Previous Release:
3700
Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3701
Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
3702
3703
3704
2) iASL Compiler/Disassembler and Tools:
3705
3706
Fixed a problem with the compilation of the GpioIo and GpioInt resource
3707
descriptors. The _PIN field name was incorrectly defined to be an array
3708
of 32-bit values, but the _PIN values are in fact 16 bits each. This
3709
would cause incorrect bit width warnings when using Word (16-bit) fields
3710
to access the descriptors.
3711
3712
3713
----------------------------------------
3714
18 December 2015. Summary of changes for version 20151218:
3715
3716
1) ACPICA kernel-resident subsystem:
3717
3718
Implemented per-AML-table execution of "module-level code" as individual
3719
ACPI tables are loaded into the namespace during ACPICA initialization.
3720
In other words, any module-level code within an AML table is executed
3721
immediately after the table is loaded, instead of batched and executed
3722
after all of the tables have been loaded. This provides compatibility
3723
with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3724
David Box.
3725
3726
To fully support the feature above, the default operation region handlers
3727
for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3728
installed before any ACPI tables are loaded. This enables module-level
3729
code to access these address spaces during the table load and module-
3730
level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3731
Box.
3732
3733
Implemented several changes to the internal _REG support in conjunction
3734
with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3735
utilities for the changes above. Although these tools were changed, host
3736
operating systems that simply use the default handlers for SystemMemory,
3737
SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3738
3739
For example, in the code below, DEV1 is conditionally added to the
3740
namespace by the DSDT via module-level code that accesses an operation
3741
region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3742
created immediately after the DSDT is loaded in order for the SSDT to
3743
successfully reference DEV1. Previously, this code would cause an
3744
AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3745
fully supported by ACPICA.
3746
3747
DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3748
{
3749
OperationRegion (OPR1, SystemMemory, 0x400, 32)
3750
Field (OPR1, AnyAcc, NoLock, Preserve)
3751
{
3752
FLD1, 1
3753
}
3754
If (FLD1)
3755
{
3756
Device (\DEV1)
3757
{
3758
}
3759
}
3760
}
3761
DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3762
{
3763
External (\DEV1, DeviceObj)
3764
Scope (\DEV1)
3765
{
3766
}
3767
}
3768
3769
Fixed an AML interpreter problem where control method invocations were
3770
not handled correctly when the invocation was itself a SuperName argument
3771
to another ASL operator. In these cases, the method was not invoked.
3772
ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3773
argument:
3774
Store
3775
Acquire, Wait
3776
CondRefOf, RefOf
3777
Decrement, Increment
3778
Load, Unload
3779
Notify
3780
Signal, Release, Reset
3781
SizeOf
3782
3783
Implemented automatic String-to-ObjectReference conversion support for
3784
packages returned by predefined names (such as _DEP). A common BIOS error
3785
is to add double quotes around an ObjectReference namepath, which turns
3786
the reference into an unexpected string object. This support detects the
3787
problem and corrects it before the package is returned to the caller that
3788
invoked the method. Lv Zheng.
3789
3790
Implemented extensions to the Concatenate operator. Concatenate now
3791
accepts any type of object, it is not restricted to simply
3792
Integer/String/Buffer. For objects other than these 3 basic data types,
3793
the argument is treated as a string containing the name of the object
3794
type. This expands the utility of Concatenate and the Printf/Fprintf
3795
macros. ACPICA BZ 1222.
3796
3797
Cleaned up the output of the ASL Debug object. The timer() value is now
3798
optional and no longer emitted by default. Also, the basic data types of
3799
Integer/String/Buffer are simply emitted as their values, without a data
3800
type string -- since the data type is obvious from the output. ACPICA BZ
3801
1221.
3802
3803
Example Code and Data Size: These are the sizes for the OS-independent
3804
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3805
debug version of the code includes the debug output trace mechanism and
3806
has a much larger code and data size.
3807
3808
Current Release:
3809
Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3810
Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
3811
Previous Release:
3812
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3813
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
3814
3815
3816
2) iASL Compiler/Disassembler and Tools:
3817
3818
iASL: Fixed some issues with the ASL Include() operator. This operator
3819
was incorrectly defined in the iASL parser rules, causing a new scope to
3820
be opened for the code within the include file. This could lead to
3821
several issues, including allowing ASL code that is technically illegal
3822
and not supported by AML interpreters. Note, this does not affect the
3823
related #include preprocessor operator. ACPICA BZ 1212.
3824
3825
iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3826
operator is essentially an ASL macro since there is no AML opcode
3827
associated with it. The code emitted by the iASL compiler for ElseIf is
3828
an Else opcode followed immediately by an If opcode. The disassembler
3829
will now emit an ElseIf if it finds an Else immediately followed by an
3830
If. This simplifies the decoded ASL, especially for deeply nested
3831
If..Else and large Switch constructs. Thus, the disassembled code more
3832
closely follows the original source ASL. ACPICA BZ 1211. Example:
3833
3834
Old disassembly:
3835
Else
3836
{
3837
If (Arg0 == 0x02)
3838
{
3839
Local0 = 0x05
3840
}
3841
}
3842
3843
New disassembly:
3844
ElseIf (Arg0 == 0x02)
3845
{
3846
Local0 = 0x05
3847
}
3848
3849
AcpiExec: Added support for the new module level code behavior and the
3850
early region installation. This required a small change to the
3851
initialization, since AcpiExec must install its own operation region
3852
handlers.
3853
3854
AcpiExec: Added support to make the debug object timer optional. Default
3855
is timer disabled. This cleans up the debug object output -- the timer
3856
data is rarely used.
3857
3858
AcpiExec: Multiple ACPI tables are now loaded in the order that they
3859
appear on the command line. This can be important when there are
3860
interdependencies/references between the tables.
3861
3862
iASL/Templates. Add support to generate template files with multiple
3863
SSDTs within a single output file. Also added ommand line support to
3864
specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
3865
1223, 1225.
3866
3867
3868
----------------------------------------
3869
24 November 2015. Summary of changes for version 20151124:
3870
3871
1) ACPICA kernel-resident subsystem:
3872
3873
Fixed a possible regression for a previous update to FADT handling. The
3874
FADT no longer has a fixed table ID, causing some issues with code that
3875
was hardwired to a specific ID. Lv Zheng.
3876
3877
Fixed a problem where the method auto-serialization could interfere with
3878
the current SyncLevel. This change makes the auto-serialization support
3879
transparent to the SyncLevel support and management.
3880
3881
Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3882
interface is intended for early access to the namespace during the
3883
initial namespace device discovery walk. The _SUB method has been seen to
3884
access operation regions in some cases, causing errors because the
3885
operation regions are not fully initialized.
3886
3887
AML Debugger: Fixed some issues with the terminate/quit/exit commands
3888
that can cause faults. Lv Zheng.
3889
3890
AML Debugger: Add thread ID support so that single-step mode only applies
3891
to the AML Debugger thread. This prevents runtime errors within some
3892
kernels. Lv Zheng.
3893
3894
Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3895
methods that are invoked by this interface are optional, removed warnings
3896
emitted for the case where one or more of these methods do not exist.
3897
ACPICA BZ 1208, original change by Prarit Bhargava.
3898
3899
Made a major pass through the entire ACPICA source code base to
3900
standardize formatting that has diverged a bit over time. There are no
3901
functional changes, but this will of course cause quite a few code
3902
differences from the previous ACPICA release.
3903
3904
Example Code and Data Size: These are the sizes for the OS-independent
3905
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3906
debug version of the code includes the debug output trace mechanism and
3907
has a much larger code and data size.
3908
3909
Current Release:
3910
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3911
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
3912
Previous Release:
3913
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3914
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
3915
3916
3917
2) iASL Compiler/Disassembler and Tools:
3918
3919
iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3920
definition blocks within a single ASL file and the resulting AML file.
3921
Support for this type of file was also added to the various tools that
3922
use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3923
example code below shows two definition blocks within the same file:
3924
3925
DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
3926
0x12345678)
3927
{
3928
}
3929
DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3930
{
3931
}
3932
3933
iASL: Enhanced typechecking for the Name() operator. All expressions for
3934
the value of the named object must be reduced/folded to a single constant
3935
at compile time, as per the ACPI specification (the AML definition of
3936
Name()).
3937
3938
iASL: Fixed some code indentation issues for the -ic and -ia options (C
3939
and assembly headers). Now all emitted code correctly begins in column 1.
3940
3941
iASL: Added an error message for an attempt to open a Scope() on an
3942
object defined in an SSDT. The DSDT is always loaded into the namespace
3943
first, so any attempt to open a Scope on an SSDT object will fail at
3944
runtime.
3945
3946
3947
----------------------------------------
3948
30 September 2015. Summary of changes for version 20150930:
3949
3950
1) ACPICA kernel-resident subsystem:
3951
3952
Debugger: Implemented several changes and bug fixes to assist support for
3953
the in-kernel version of the AML debugger. Lv Zheng.
3954
- Fix the "predefined" command for in-kernel debugger.
3955
- Do not enter debug command loop for the help and version commands.
3956
- Disallow "execute" command during execution/single-step of a method.
3957
3958
Interpreter: Updated runtime typechecking for all operators that have
3959
target operands. The operand is resolved and validated that it is legal.
3960
For example, the target cannot be a non-data object such as a Device,
3961
Mutex, ThermalZone, etc., as per the ACPI specification.
3962
3963
Debugger: Fixed the double-mutex user I/O handshake to work when local
3964
deadlock detection is enabled.
3965
3966
Debugger: limited display of method locals and arguments (LocalX and
3967
ArgX) to only those that have actually been initialized. This prevents
3968
lines of extraneous output.
3969
3970
Updated the definition of the NFIT table to correct the bit polarity of
3971
one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3972
3973
Example Code and Data Size: These are the sizes for the OS-independent
3974
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3975
debug version of the code includes the debug output trace mechanism and
3976
has a much larger code and data size.
3977
3978
Current Release:
3979
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3980
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
3981
Previous Release:
3982
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3983
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
3984
3985
3986
2) iASL Compiler/Disassembler and Tools:
3987
3988
iASL: Improved the compile-time typechecking for operands of many of the
3989
ASL operators:
3990
3991
-- Added an option to disable compiler operand/operator typechecking (-
3992
ot).
3993
3994
-- For the following operators, the TermArg operands are now validated
3995
when possible to be Integer data objects: BankField, OperationRegion,
3996
DataTableRegion, Buffer, and Package.
3997
3998
-- Store (Source, Target): Both the source and target operands are
3999
resolved and checked that the operands are both legal. For example,
4000
neither operand can be a non-data object such as a Device, Mutex,
4001
ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
4002
operator can be used to store an object to any type of target object.
4003
4004
-- Store (Source, Target): If the source is a Package object, the target
4005
must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
4006
is a Package, the source must also be a Package.
4007
4008
-- Store (Source, Target): A warning is issued if the source and target
4009
resolve to the identical named object.
4010
4011
-- Store (Source, <method invocation>): An error is generated for the
4012
target method invocation, as this construct is not supported by the AML
4013
interpreter.
4014
4015
-- For all ASL math and logic operators, the target operand must be a
4016
data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
4017
includes the function return value also.
4018
4019
-- External declarations are also included in the typechecking where
4020
possible. External objects defined using the UnknownObj keyword cannot be
4021
typechecked, however.
4022
4023
iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
4024
operator:
4025
- Legacy code: Index(PKG1, 3)
4026
- New ASL+ code: PKG1[3]
4027
This completes the ACPI 6.0 ASL+ support as it was the only operator not
4028
supported.
4029
4030
iASL: Fixed the file suffix for the preprocessor output file (.i). Two
4031
spaces were inadvertently appended to the filename, causing file access
4032
and deletion problems on some systems.
4033
4034
ASL Test Suite (ASLTS): Updated the master makefile to generate all
4035
possible compiler output files when building the test suite -- thus
4036
exercising these features of the compiler. These files are automatically
4037
deleted when the test suite exits.
4038
4039
4040
----------------------------------------
4041
18 August 2015. Summary of changes for version 20150818:
4042
4043
1) ACPICA kernel-resident subsystem:
4044
4045
Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
4046
Zheng. ACPICA BZ 1186.
4047
4048
Completed development to ensure that the ACPICA Disassembler and Debugger
4049
are fully standalone components of ACPICA. Removed cross-component
4050
dependences. Lv Zheng.
4051
4052
The max-number-of-AML-loops is now runtime configurable (previously was
4053
compile-time only). This is essentially a loop timeout to force-abort
4054
infinite AML loops. ACPCIA BZ 1192.
4055
4056
Debugger: Cleanup output to dump ACPI names and namepaths without any
4057
trailing underscores. Lv Zheng. ACPICA BZ 1135.
4058
4059
Removed unnecessary conditional compilations across the Debugger and
4060
Disassembler components where entire modules could be left uncompiled.
4061
4062
The aapits test is deprecated and has been removed from the ACPICA git
4063
tree. The test has never been completed and has not been maintained, thus
4064
becoming rather useless. ACPICA BZ 1015, 794.
4065
4066
A batch of small changes to close bugzilla and other reports:
4067
- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
4068
- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
4069
- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
4070
- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
4071
Moore.
4072
- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
4073
ACPICA BZ 1184.
4074
- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
4075
operators.
4076
- Debugger: Split debugger initialization/termination interfaces. Lv
4077
Zheng.
4078
- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
4079
identification.
4080
- AcpiExec: Add debug message during _REG method phase during table
4081
load/init.
4082
- AcpiNames: Fix a regression where some output was missing and no longer
4083
emitted.
4084
- Debugger: General cleanup and simplification. Lv Zheng.
4085
- Disassembler: Cleanup use of several global option variables. Lv Zheng.
4086
4087
Example Code and Data Size: These are the sizes for the OS-independent
4088
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4089
debug version of the code includes the debug output trace mechanism and
4090
has a much larger code and data size.
4091
4092
Current Release:
4093
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
4094
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
4095
Previous Release:
4096
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4097
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
4098
4099
4100
2) iASL Compiler/Disassembler and Tools:
4101
4102
AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
4103
were not handled properly and caused load errors. Now, properly invoke
4104
and use the ACPICA auto-reallocate mechanism for ACPI table data
4105
structures. ACPICA BZ 1188
4106
4107
AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
4108
BZ 1190.
4109
4110
AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
4111
AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
4112
executed during initialization. ACPICA BZ 1187, 1189.
4113
4114
iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
4115
that corresponds to each disassembled ASL statement, to simplify
4116
debugging. ACPICA BZ 1191.
4117
4118
Debugger: Add option to the "objects" command to display a summary of the
4119
current namespace objects (Object type and count). This is displayed if
4120
the command is entered with no arguments.
4121
4122
AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
4123
4124
4125
----------------------------------------
4126
17 July 2015. Summary of changes for version 20150717:
4127
4128
1) ACPICA kernel-resident subsystem:
4129
4130
Improved the partitioning between the Debugger and Disassembler
4131
components. This allows the Debugger to be used standalone within kernel
4132
code without the Disassembler (which is used for single stepping also).
4133
This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
4134
4135
Debugger: Implemented a new command to trace the execution of control
4136
methods (Trace). This is especially useful for the in-kernel version of
4137
the debugger when file I/O may not be available for method trace output.
4138
See the ACPICA reference for more information. Lv Zheng.
4139
4140
Moved all C library prototypes (used for the local versions of these
4141
functions when requested) to a new header, acclib.h
4142
Cleaned up the use of non-ANSI C library functions. These functions are
4143
implemented locally in ACPICA. Moved all such functions to a common
4144
source file, utnonansi.c
4145
4146
Debugger: Fixed a problem with the "!!" command (get last command
4147
executed) where the debugger could enter an infinite loop and eventually
4148
crash.
4149
4150
Removed the use of local macros that were used for some of the standard C
4151
library functions to automatically cast input parameters. This mostly
4152
affected the is* functions where the input parameter is defined to be an
4153
int. This required a few modifications to the main ACPICA source code to
4154
provide casting for these functions and eliminate possible compiler
4155
warnings for these parameters.
4156
4157
Across the source code, added additional status/error checking to resolve
4158
issues discovered by static source code analysis tools such as Coverity.
4159
4160
Example Code and Data Size: These are the sizes for the OS-independent
4161
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4162
debug version of the code includes the debug output trace mechanism and
4163
has a much larger code and data size.
4164
4165
Current Release:
4166
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4167
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
4168
Previous Release:
4169
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4170
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
4171
4172
4173
2) iASL Compiler/Disassembler and Tools:
4174
4175
iASL: Fixed a regression where the device map file feature no longer
4176
worked properly when used in conjunction with the disassembler. It only
4177
worked properly with the compiler itself.
4178
4179
iASL: Implemented a new warning for method LocalX variables that are set
4180
but never used (similar to a C compiler such as gcc). This also applies
4181
to ArgX variables that are not defined by the parent method, and are
4182
instead (legally) used as local variables.
4183
4184
iASL/Preprocessor: Finished the pass-through of line numbers from the
4185
preprocessor to the compiler. This ensures that compiler errors/warnings
4186
have the correct original line numbers and filenames, regardless of any
4187
#include files.
4188
4189
iASL/Preprocessor: Fixed a couple of issues with comment handling and the
4190
pass-through of comments to the preprocessor output file (which becomes
4191
the compiler input file). Also fixed a problem with // comments that
4192
appear after a math expression.
4193
4194
iASL: Added support for the TCPA server table to the table compiler and
4195
template generator. (The client table was already previously supported)
4196
4197
iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
4198
identify the iASL compiler.
4199
4200
Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
4201
multiple times. The new names are ACPI_SIGN_NEGATIVE and
4202
ACPI_SIGN_POSITIVE.
4203
4204
AcpiHelp: Update to expand help messages for the iASL preprocessor
4205
directives.
4206
4207
4208
----------------------------------------
4209
19 June 2015. Summary of changes for version 20150619:
4210
4211
Two regressions in version 20150616 have been addressed:
4212
4213
Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
4214
etc.) This update changes ACPICA to only use the standard headers for
4215
functions, or the prototypes for the local versions of the C library
4216
functions. Across the source code, this required some additional casts
4217
for some Clib invocations for portability. Moved all local prototypes to
4218
a new file, acclib.h
4219
4220
Fixes several problems with recent changes to the handling of the FACS
4221
table that could cause some systems not to boot.
4222
4223
4224
----------------------------------------
4225
16 June 2015. Summary of changes for version 20150616:
4226
4227
4228
1) ACPICA kernel-resident subsystem:
4229
4230
Across the entire ACPICA source code base, the various macros for the C
4231
library functions (such as ACPI_STRLEN, etc.) have been removed and
4232
replaced by the standard C library names (strlen, etc.) The original
4233
purpose for these macros is no longer applicable. This simplification
4234
reduces the number of macros used in the ACPICA source code
4235
significantly, improving readability and maintainability.
4236
4237
Implemented support for a new ACPI table, the OSDT. This table, the
4238
"override" SDT, can be loaded directly by the host OS at boot time. It
4239
enables the replacement of existing namespace objects that were installed
4240
via the DSDT and/or SSDTs. The primary purpose for this is to replace
4241
buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
4242
for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
4243
Moore.
4244
4245
Added support for systems with (improperly) two FACS tables -- a "32-bit"
4246
table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
4247
X field). This change will support both automatically. There continues to
4248
be systems found with this issue. This support requires a change to the
4249
AcpiSetFirmwareWakingVector interface. Also, a public global variable has
4250
been added to allow the host to select which FACS is desired
4251
(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
4252
details Lv Zheng.
4253
4254
Added a new feature to allow for systems that do not contain an FACS.
4255
Although this is already supported on hardware-reduced platforms, the
4256
feature has been extended for all platforms. The reasoning is that we do
4257
not want to abort the entire ACPICA initialization just because the
4258
system is seriously buggy and has no FACS.
4259
4260
Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
4261
not correctly transcribed from the ACPI specification in ACPICA version
4262
20150515.
4263
4264
Implemented support for the _CLS object in the AcpiGetObjectInfo external
4265
interface.
4266
4267
Updated the definitions of the TCPA and TPM2 ACPI tables to the more
4268
recent TCG ACPI Specification, December 14, 2014. Table disassembler and
4269
compiler also updated. Note: The TCPA "server" table is not supported by
4270
the disassembler/table-compiler at this time.
4271
4272
ACPI 6.0: Added definitions for the new GIC version field in the MADT.
4273
4274
Example Code and Data Size: These are the sizes for the OS-independent
4275
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4276
debug version of the code includes the debug output trace mechanism and
4277
has a much larger code and data size.
4278
4279
Current Release:
4280
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4281
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
4282
Previous Release:
4283
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
4284
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
4285
4286
4287
2) iASL Compiler/Disassembler and Tools:
4288
4289
Disassembler: Fixed a problem with the new symbolic operator disassembler
4290
where incorrect ASL code could be emitted in some cases for the "non-
4291
commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
4292
ShiftRight. The actual problem cases seem to be rather unusual in common
4293
ASL code, however. David Box.
4294
4295
Modified the linux version of acpidump to obtain ACPI tables from not
4296
just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
4297
Zheng.
4298
4299
iASL: Fixed a problem where the user preprocessor output file (.i)
4300
contained extra data that was not expected. The compiler was using this
4301
file as a temporary file and passed through #line directives in order to
4302
keep compiler error messages in sync with the input file and line number
4303
across multiple include files. The (.i) is no longer a temporary file as
4304
the compiler uses a new, different file for the original purpose.
4305
4306
iASL: Fixed a problem where comments within the original ASL source code
4307
file were not passed through to the preprocessor output file, nor any
4308
listing files.
4309
4310
iASL: Fixed some issues for the handling of the "#include" preprocessor
4311
directive and the similar (but not the same) "Include" ASL operator.
4312
4313
iASL: Add support for the new OSDT in both the disassembler and compiler.
4314
4315
iASL: Fixed a problem with the constant folding support where a Buffer
4316
object could be incorrectly generated (incorrectly formed) during a
4317
conversion to a Store() operator.
4318
4319
AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
4320
description text for the _REV predefined name. _REV now permanently
4321
returns 2, as per the ACPI 6.0 specification.
4322
4323
Debugger: Enhanced the output of the Debug ASL object for references
4324
produced by the Index operator. For Buffers and strings, only output the
4325
actual byte pointed to by the index. For packages, only print the single
4326
package element decoded by the index. Previously, the entire
4327
buffer/string/package was emitted.
4328
4329
iASL/Table-compiler: Fixed a regression where the "generic" data types
4330
were no longer recognized, causing errors.
4331
4332
4333
----------------------------------------
4334
15 May 2015. Summary of changes for version 20150515:
4335
4336
This release implements most of ACPI 6.0 as described below.
4337
4338
1) ACPICA kernel-resident subsystem:
4339
4340
Implemented runtime argument checking and return value checking for all
4341
new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
4342
_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
4343
4344
Example Code and Data Size: These are the sizes for the OS-independent
4345
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4346
debug version of the code includes the debug output trace mechanism and
4347
has a much larger code and data size.
4348
4349
Current Release:
4350
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
4351
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
4352
Previous Release:
4353
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
4354
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
4355
4356
4357
2) iASL Compiler/Disassembler and Tools:
4358
4359
iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
4360
names (argument count validation and return value typechecking.)
4361
4362
iASL disassembler and table compiler: implemented support for all new
4363
ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
4364
4365
iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
4366
tables: FADT, MADT.
4367
4368
iASL preprocessor: Added a new directive to enable inclusion of binary
4369
blobs into ASL code. The new directive is #includebuffer. It takes a
4370
binary file as input and emits a named ascii buffer object into the ASL
4371
code.
4372
4373
AcpiHelp: Added support for all new ACPI 6.0 predefined names.
4374
4375
AcpiHelp: Added a new option, -d, to display all iASL preprocessor
4376
directives.
4377
4378
AcpiHelp: Added a new option, -t, to display all known/supported ACPI
4379
tables.
4380
4381
4382
----------------------------------------
4383
10 April 2015. Summary of changes for version 20150410:
4384
4385
Reverted a change introduced in version 20150408 that caused
4386
a regression in the disassembler where incorrect operator
4387
symbols could be emitted.
4388
4389
4390
----------------------------------------
4391
08 April 2015. Summary of changes for version 20150408:
4392
4393
4394
1) ACPICA kernel-resident subsystem:
4395
4396
Permanently set the return value for the _REV predefined name. It now
4397
returns 2 (was 5). This matches other ACPI implementations. _REV will be
4398
deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
4399
for ACPI 2.0 and later. It should never be used to differentiate or
4400
identify operating systems.
4401
4402
Added the "Windows 2015" string to the _OSI support. ACPICA will now
4403
return TRUE to a query with this string.
4404
4405
Fixed several issues with the local version of the printf function.
4406
4407
Added the C99 compiler option (-std=c99) to the Unix makefiles.
4408
4409
Current Release:
4410
Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
4411
Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
4412
Previous Release:
4413
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
4414
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
4415
4416
4417
2) iASL Compiler/Disassembler and Tools:
4418
4419
iASL: Implemented an enhancement to the constant folding feature to
4420
transform the parse tree to a simple Store operation whenever possible:
4421
Add (2, 3, X) ==> is converted to: Store (5, X)
4422
X = 2 + 3 ==> is converted to: Store (5, X)
4423
4424
Updated support for the SLIC table (Software Licensing Description Table)
4425
in both the Data Table compiler and the disassembler. The SLIC table
4426
support now conforms to "Microsoft Software Licensing Tables (SLIC and
4427
MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
4428
following the ACPI header is now defined to be "Proprietary Data", and as
4429
such, can only be entered or displayed as a hex data block.
4430
4431
Implemented full support for the MSDM table as described in the document
4432
above. Note: The format of MSDM is similar to SLIC. Any MSDM data
4433
following the ACPI header is defined to be "Proprietary Data", and can
4434
only be entered or displayed as a hex data block.
4435
4436
Implemented the -Pn option for the iASL Table Compiler (was only
4437
implemented for the ASL compiler). This option disables the iASL
4438
preprocessor.
4439
4440
Disassembler: For disassembly of Data Tables, added a comment field
4441
around the Ascii equivalent data that is emitted as part of the "Raw
4442
Table Data" block. This prevents the iASL Preprocessor from possible
4443
confusion if/when the table is compiled.
4444
4445
Disassembler: Added an option (-df) to force the disassembler to assume
4446
that the table being disassembled contains valid AML. This feature is
4447
useful for disassembling AML files that contain ACPI signatures other
4448
than DSDT or SSDT (such as OEMx or other signatures).
4449
4450
Changes for the EFI version of the tools:
4451
1) Fixed a build error/issue
4452
2) Fixed a cast warning
4453
4454
iASL: Fixed a path issue with the __FILE__ operator by making the
4455
directory prefix optional within the internal SplitInputFilename
4456
function.
4457
4458
Debugger: Removed some unused global variables.
4459
4460
Tests: Updated the makefile for proper generation of the AAPITS suite.
4461
4462
4463
----------------------------------------
4464
04 February 2015. Summary of changes for version 20150204:
4465
4466
ACPICA kernel-resident subsystem:
4467
4468
Updated all ACPICA copyrights and signons to 2014. Added the 2014
4469
copyright to all module headers and signons, including the standard Linux
4470
header. This affects virtually every file in the ACPICA core subsystem,
4471
iASL compiler, all ACPICA utilities, and the test suites.
4472
4473
Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
4474
A raw gpe handling mechanism was created to allow better handling of GPE
4475
storms that aren't easily managed by the normal handler. The raw handler
4476
allows disabling/renabling of the GPE so that interrupt storms can be
4477
avoided in cases where events cannot be timely serviced. In this
4478
scenario, handlers should use the AcpiSetGpe() API to disable/enable the
4479
GPE. This API will leave the reference counts undisturbed, thereby
4480
preventing unintentional clearing of the GPE when the intent in only to
4481
temporarily disable it. Raw handlers allow enabling and disabling of a
4482
GPE by removing GPE register locking. As such, raw handlers much provide
4483
their own locks while using GPE API's to protect access to GPE data
4484
structures.
4485
Lv Zheng
4486
4487
Events: Always modify GPE registers under the GPE lock.
4488
Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
4489
values. Reported as bug by [email protected].
4490
4491
Unix makefiles: Separate option to disable optimizations and
4492
_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
4493
NOOPT disable option and creates a separate flag (NOFORTIFY) for this
4494
purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
4495
errors when building ACPICA. This allows disabling the option without
4496
also having to disable optimazations.
4497
David Box
4498
4499
Current Release:
4500
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4501
Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
4502
4503
--
4504
--------------------------------------
4505
07 November 2014. Summary of changes for version 20141107:
4506
4507
This release is available at https://acpica.org/downloads
4508
4509
This release introduces and implements language extensions to ASL that
4510
provide support for symbolic ("C-style") operators and expressions. These
4511
language extensions are known collectively as ASL+.
4512
4513
4514
1) iASL Compiler/Disassembler and Tools:
4515
4516
Disassembler: Fixed a problem with disassembly of the UartSerialBus
4517
macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4518
Box.
4519
4520
Disassembler: Fixed the Unicode macro support to add escape sequences.
4521
All non-printable ASCII values are emitted as escape sequences, as well
4522
as the standard escapes for quote and backslash. Ensures that the
4523
disassembled macro can be correctly recompiled.
4524
4525
iASL: Added Printf/Fprintf macros for formatted output. These macros are
4526
translated to existing AML Concatenate and Store operations. Printf
4527
writes to the ASL Debug object. Fprintf allows the specification of an
4528
ASL name as the target. Only a single format specifier is required, %o,
4529
since the AML interpreter dynamically converts objects to the required
4530
type. David E. Box.
4531
4532
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate
4533
(Concatenate (Concatenate (Concatenate ("", Arg0),
4534
": Unexpected value for "), Arg1), ", "), Arg2),
4535
" at line "), Arg3), Debug)
4536
4537
(new) Printf ("%o: Unexpected value for %o, %o at line %o",
4538
Arg0, Arg1, Arg2, Arg3)
4539
4540
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate
4541
("", Arg1), ": "), Arg0), " Successful"), STR1)
4542
4543
(new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
4544
4545
iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4546
ASL parse tree before the AML code is generated. This allows blocks of
4547
ASL code to be removed in order to help locate and identify problem
4548
devices and/or code. David E. Box.
4549
4550
AcpiExec: Added support (-fi) for an optional namespace object
4551
initialization file. This file specifies initial values for namespace
4552
objects as necessary for debugging and testing different ASL code paths
4553
that may be taken as a result of BIOS options.
4554
4555
4556
2) Overview of symbolic operator support for ASL (ASL+)
4557
-------------------------------------------------------
4558
4559
As an extension to the ASL language, iASL implements support for symbolic
4560
(C-style) operators for math and logical expressions. This can greatly
4561
simplify ASL code as well as improve both readability and
4562
maintainability. These language extensions can exist concurrently with
4563
all legacy ASL code and expressions.
4564
4565
The symbolic extensions are 100% compatible with existing AML
4566
interpreters, since no new AML opcodes are created. To implement the
4567
extensions, the iASL compiler transforms the symbolic expressions into
4568
the legacy ASL/AML equivalents at compile time.
4569
4570
Full symbolic expressions are supported, along with the standard C
4571
precedence and associativity rules.
4572
4573
Full disassembler support for the symbolic expressions is provided, and
4574
creates an automatic migration path for existing ASL code to ASL+ code
4575
via the disassembly process. By default, the disassembler now emits ASL+
4576
code with symbolic expressions. An option (-dl) is provided to force the
4577
disassembler to emit legacy ASL code if desired.
4578
4579
Below is the complete list of the currently supported symbolic operators
4580
with examples. See the iASL User Guide for additional information.
4581
4582
4583
ASL+ Syntax Legacy ASL Equivalent
4584
----------- ---------------------
4585
4586
// Math operators
4587
4588
Z = X + Y Add (X, Y, Z)
4589
Z = X - Y Subtract (X, Y, Z)
4590
Z = X * Y Multiply (X, Y, Z)
4591
Z = X / Y Divide (X, Y, , Z)
4592
Z = X % Y Mod (X, Y, Z)
4593
Z = X << Y ShiftLeft (X, Y, Z)
4594
Z = X >> Y ShiftRight (X, Y, Z)
4595
Z = X & Y And (X, Y, Z)
4596
Z = X | Y Or (X, Y, Z)
4597
Z = X ^ Y Xor (X, Y, Z)
4598
Z = ~X Not (X, Z)
4599
X++ Increment (X)
4600
X-- Decrement (X)
4601
4602
// Logical operators
4603
4604
(X == Y) LEqual (X, Y)
4605
(X != Y) LNotEqual (X, Y)
4606
(X < Y) LLess (X, Y)
4607
(X > Y) LGreater (X, Y)
4608
(X <= Y) LLessEqual (X, Y)
4609
(X >= Y) LGreaterEqual (X, Y)
4610
(X && Y) LAnd (X, Y)
4611
(X || Y) LOr (X, Y)
4612
(!X) LNot (X)
4613
4614
// Assignment and compound assignment operations
4615
4616
X = Y Store (Y, X)
4617
X += Y Add (X, Y, X)
4618
X -= Y Subtract (X, Y, X)
4619
X *= Y Multiply (X, Y, X)
4620
X /= Y Divide (X, Y, , X)
4621
X %= Y Mod (X, Y, X)
4622
X <<= Y ShiftLeft (X, Y, X)
4623
X >>= Y ShiftRight (X, Y, X)
4624
X &= Y And (X, Y, X)
4625
X |= Y Or (X, Y, X)
4626
X ^= Y Xor (X, Y, X)
4627
4628
4629
3) ASL+ Examples:
4630
-----------------
4631
4632
Legacy ASL:
4633
If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4634
And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
4635
0x03FB),
4636
0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4637
{
4638
And (MEMB, 0xFFFFFFF0, SRMB)
4639
Store (MEMB, Local2)
4640
Store (PDBM, Local1)
4641
And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4642
Store (SRMB, MEMB)
4643
Or (PDBM, 0x02, PDBM)
4644
}
4645
4646
ASL+ version:
4647
If (((R510 & 0x03FB) == 0x02E0) ||
4648
((R520 & 0x03FB) == 0x02E0) ||
4649
((R530 & 0x03FB) == 0x02E0) ||
4650
((R540 & 0x03FB) == 0x02E0))
4651
{
4652
SRMB = (MEMB & 0xFFFFFFF0)
4653
Local2 = MEMB
4654
Local1 = PDBM
4655
PDBM &= 0xFFFFFFFFFFFFFFF9
4656
MEMB = SRMB
4657
PDBM |= 0x02
4658
}
4659
4660
Legacy ASL:
4661
Store (0x1234, Local1)
4662
Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4663
Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4664
Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4665
Store (Index (PKG1, 0x03), Local6)
4666
Store (Add (Local3, Local2), Debug)
4667
Add (Local1, 0x0F, Local2)
4668
Add (Local1, Multiply (Local2, Local3), Local2)
4669
Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4670
4671
ASL+ version:
4672
Local1 = 0x1234
4673
Local3 = (((Local1 + TEST) + 0x20) * Local2)
4674
Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4675
Local3 = (Local1 + (TEST + (0x20 * Local2)))
4676
Local6 = Index (PKG1, 0x03)
4677
Debug = (Local3 + Local2)
4678
Local2 = (Local1 + 0x0F)
4679
Local2 = (Local1 + (Local2 * Local3))
4680
Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4681
4682
4683
----------------------------------------
4684
26 September 2014. Summary of changes for version 20140926:
4685
4686
1) ACPICA kernel-resident subsystem:
4687
4688
Updated the GPIO operation region handler interface (GeneralPurposeIo).
4689
In order to support GPIO Connection objects with multiple pins, along
4690
with the related Field objects, the following changes to the interface
4691
have been made: The Address is now defined to be the offset in bits of
4692
the field unit from the previous invocation of a Connection. It can be
4693
viewed as a "Pin Number Index" into the connection resource descriptor.
4694
The BitWidth is the exact bit width of the field. It is usually one bit,
4695
but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4696
additional information and examples.
4697
4698
GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4699
corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4700
by the firmware), so that they cannot fire until they are enabled via
4701
AcpiUpdateAllGpes. Rafael J. Wysocki.
4702
4703
Added a new return flag for the Event/GPE status interfaces --
4704
AcpiGetEventStatus and AcpiGetGpeStatus. The new
4705
ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4706
GPE currently has a handler associated with it, and can thus actually
4707
affect the system. Lv Zheng.
4708
4709
Example Code and Data Size: These are the sizes for the OS-independent
4710
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4711
debug version of the code includes the debug output trace mechanism and
4712
has a much larger code and data size.
4713
4714
Current Release:
4715
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
4716
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
4717
Previous Release:
4718
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
4719
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
4720
4721
2) iASL Compiler/Disassembler and Tools:
4722
4723
iASL: Fixed a memory allocation/free regression introduced in 20140828
4724
that could cause the compiler to crash. This was introduced inadvertently
4725
during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
4726
1113.
4727
4728
iASL: Removed two error messages that have been found to create false
4729
positives, until they can be fixed and fully validated (ACPICA BZ 1112):
4730
1) Illegal forward reference within a method
4731
2) Illegal reference across two methods
4732
4733
iASL: Implemented a new option (-lm) to create a hardware mapping file
4734
that summarizes all GPIO, I2C, SPI, and UART connections. This option
4735
works for both the compiler and disassembler. See the iASL compiler user
4736
guide for additional information and examples (section 6.4.6).
4737
4738
AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4739
version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4740
a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4741
4742
AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4743
unless STDIN is actually a terminal. Assists with batch-mode processing.
4744
ACPICA BZ 1114.
4745
4746
Disassembler/AcpiHelp: Added another large group of recognized _HID
4747
values.
4748
4749
4750
----------------------------------------
4751
28 August 2014. Summary of changes for version 20140828:
4752
4753
1) ACPICA kernel-resident subsystem:
4754
4755
Fixed a problem related to the internal use of the Timer() operator where
4756
a 64-bit divide could cause an attempted link to a double-precision math
4757
library. This divide is not actually necessary, so the code was
4758
restructured to eliminate it. Lv Zheng.
4759
4760
ACPI 5.1: Added support for the runtime validation of the _DSD package
4761
(similar to the iASL support).
4762
4763
ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4764
SRAT table. Hanjun Guo <[email protected]>.
4765
4766
Example Code and Data Size: These are the sizes for the OS-independent
4767
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4768
debug version of the code includes the debug output trace mechanism and
4769
has a much larger code and data size.
4770
4771
Current Release:
4772
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
4773
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
4774
Previous Release:
4775
Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
4776
Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
4777
4778
2) iASL Compiler/Disassembler and Tools:
4779
4780
AcpiExec: Fixed a problem on unix systems where the original terminal
4781
state was not always properly restored upon exit. Seen when using the -v
4782
option. ACPICA BZ 1104.
4783
4784
iASL: Fixed a problem with the validation of the ranges/length within the
4785
Memory24 resource descriptor. There was a boundary condition when the
4786
range was equal to the (length -1) caused by the fact that these values
4787
are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4788
4789
Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4790
polarity
4791
flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4792
is
4793
now supported properly.
4794
4795
ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4796
in the disassembler, data table compiler, and table template generator.
4797
4798
iASL: Added a requirement for Device() objects that one of either a _HID
4799
or _ADR must exist within the scope of a Device, as per the ACPI
4800
specification. Remove a similar requirement that was incorrectly in place
4801
for the _DSD object.
4802
4803
iASL: Added error detection for illegal named references within control
4804
methods that would cause runtime failures. Now trapped as errors are: 1)
4805
References to objects within a non-parent control method. 2) Forward
4806
references (within a method) -- for control methods, AML interpreters use
4807
a one-pass parse of control methods. ACPICA BZ 1008.
4808
4809
iASL: Added error checking for dependencies related to the _PSx power
4810
methods. ACPICA BZ 1029.
4811
1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4812
_PS3.
4813
2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4814
scope.
4815
4816
iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4817
deploying the existing object and string caches and adding new caches for
4818
the table compiler.
4819
4820
iASL: Split the huge parser source file into multiple subfiles to improve
4821
manageability. Generation now requires the M4 macro preprocessor, which
4822
is part of the Bison distribution on both unix and windows platforms.
4823
4824
AcpiSrc: Fixed and removed all extraneous warnings generated during
4825
entire ACPICA source code scan and/or conversion.
4826
4827
4828
----------------------------------------
4829
4830
24 July 2014. Summary of changes for version 20140724:
4831
4832
The ACPI 5.1 specification has been released and is available at:
4833
http://uefi.org/specs/access
4834
4835
4836
0) ACPI 5.1 support in ACPICA:
4837
4838
ACPI 5.1 is fully supported in ACPICA as of this release.
4839
4840
New predefined names. Support includes iASL and runtime ACPICA
4841
validation.
4842
_CCA (Cache Coherency Attribute).
4843
_DSD (Device-Specific Data). David Box.
4844
4845
Modifications to existing ACPI tables. Support includes headers, iASL
4846
Data Table compiler, disassembler, and the template generator.
4847
FADT - New fields and flags. Graeme Gregory.
4848
GTDT - One new subtable and new fields. Tomasz Nowicki.
4849
MADT - Two new subtables. Tomasz Nowicki.
4850
PCCT - One new subtable.
4851
4852
Miscellaneous.
4853
New notification type for System Resource Affinity change events.
4854
4855
4856
1) ACPICA kernel-resident subsystem:
4857
4858
Fixed a regression introduced in 20140627 where a fault can happen during
4859
the deletion of Alias AML namespace objects. The problem affected both
4860
the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4861
4862
Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4863
simple mechanism to enable wake GPEs that have no associated handler or
4864
control method. Rafael Wysocki.
4865
4866
Updated the AcpiEnableGpe interface to disallow the enable if there is no
4867
handler or control method associated with the particular GPE. This will
4868
help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4869
4870
Updated GPE handling and dispatch by disabling the GPE before clearing
4871
the status bit for edge-triggered GPEs. Lv Zheng.
4872
4873
Added Timer() support to the AML Debug object. The current timer value is
4874
now displayed with each invocation of (Store to) the debug object to
4875
enable simple generation of execution times for AML code (method
4876
execution for example.) ACPICA BZ 1093.
4877
4878
Example Code and Data Size: These are the sizes for the OS-independent
4879
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4880
debug version of the code includes the debug output trace mechanism and
4881
has a much larger code and data size.
4882
4883
Current Release:
4884
Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
4885
Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
4886
Previous Release:
4887
Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
4888
Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
4889
4890
4891
2) iASL Compiler/Disassembler and Tools:
4892
4893
Fixed an issue with the recently added local printf implementation,
4894
concerning width/precision specifiers that could cause incorrect output.
4895
Lv Zheng. ACPICA BZ 1094.
4896
4897
Disassembler: Added support to detect buffers that contain UUIDs and
4898
disassemble them to an invocation of the ToUUID operator. Also emit
4899
commented descriptions of known ACPI-related UUIDs.
4900
4901
AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4902
-u. Adds three new files.
4903
4904
iASL: Update table compiler and disassembler for DMAR table changes that
4905
were introduced in September 2013. With assistance by David Woodhouse.
4906
4907
----------------------------------------
4908
27 June 2014. Summary of changes for version 20140627:
4909
4910
1) ACPICA kernel-resident subsystem:
4911
4912
Formatted Output: Implemented local versions of standard formatted output
4913
utilities such as printf, etc. Over time, it has been discovered that
4914
there are in fact many portability issues with printf, and the addition
4915
of this feature will fix/prevent these issues once and for all. Some
4916
known issues are summarized below:
4917
4918
1) Output of 64-bit values is not portable. For example, UINT64 is %ull
4919
for the Linux kernel and is %uI64 for some MSVC versions.
4920
2) Invoking printf consistently in a manner that is portable across both
4921
32-bit and 64-bit platforms is difficult at best in many situations.
4922
3) The output format for pointers varies from system to system (leading
4923
zeros especially), and leads to inconsistent output from ACPICA across
4924
platforms.
4925
4) Certain platform-specific printf formats may conflict with ACPICA use.
4926
5) If there is no local C library available, ACPICA now has local support
4927
for printf.
4928
4929
-- To address these printf issues in a complete manner, ACPICA now
4930
directly implements a small subset of printf format specifiers, only
4931
those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4932
4933
Implemented support for ACPICA generation within the EFI environment.
4934
Initially, the AcpiDump utility is supported in the UEFI shell
4935
environment. Lv Zheng.
4936
4937
Added a new external interface, AcpiLogError, to improve ACPICA
4938
portability. This allows the host to redirect error messages from the
4939
ACPICA utilities. Lv Zheng.
4940
4941
Added and deployed new OSL file I/O interfaces to improve ACPICA
4942
portability:
4943
AcpiOsOpenFile
4944
AcpiOsCloseFile
4945
AcpiOsReadFile
4946
AcpiOsWriteFile
4947
AcpiOsGetFileOffset
4948
AcpiOsSetFileOffset
4949
There are C library implementations of these functions in the new file
4950
service_layers/oslibcfs.c -- however, the functions can be implemented by
4951
the local host in any way necessary. Lv Zheng.
4952
4953
Implemented a mechanism to disable/enable ACPI table checksum validation
4954
at runtime. This can be useful when loading tables very early during OS
4955
initialization when it may not be possible to map the entire table in
4956
order to compute the checksum. Lv Zheng.
4957
4958
Fixed a buffer allocation issue for the Generic Serial Bus support.
4959
Originally, a fixed buffer length was used. This change allows for
4960
variable-length buffers based upon the protocol indicated by the field
4961
access attributes. Reported by Lan Tianyu. Lv Zheng.
4962
4963
Fixed a problem where an object detached from a namespace node was not
4964
properly terminated/cleared and could cause a circular list problem if
4965
reattached. ACPICA BZ 1063. David Box.
4966
4967
Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4968
4969
Fixed a possible memory leak in an error return path within the function
4970
AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4971
4972
Example Code and Data Size: These are the sizes for the OS-independent
4973
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4974
debug version of the code includes the debug output trace mechanism and
4975
has a much larger code and data size.
4976
4977
Current Release:
4978
Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
4979
Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
4980
Previous Release:
4981
Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
4982
Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
4983
4984
4985
2) iASL Compiler/Disassembler and Tools:
4986
4987
Disassembler: Add dump of ASCII equivalent text within a comment at the
4988
end of each line of the output for the Buffer() ASL operator.
4989
4990
AcpiDump: Miscellaneous changes:
4991
Fixed repetitive table dump in -n mode.
4992
For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4993
the ACPI 2.0 GUID fails.
4994
4995
iASL: Fixed a problem where the compiler could fault if incorrectly given
4996
an acpidump output file as input. ACPICA BZ 1088. David Box.
4997
4998
AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4999
they are invoked without any arguments.
5000
5001
Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
5002
1086. Colin Ian King.
5003
5004
Disassembler: Cleaned up a block of code that extracts a parent Op
5005
object. Added a comment that explains that the parent is guaranteed to be
5006
valid in this case. ACPICA BZ 1069.
5007
5008
5009
----------------------------------------
5010
24 April 2014. Summary of changes for version 20140424:
5011
5012
1) ACPICA kernel-resident subsystem:
5013
5014
Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
5015
Some of these tables are known to contain a trailing NULL entry. Lv
5016
Zheng.
5017
5018
Removed an extraneous error message for the case where there are a large
5019
number of system GPEs (> 124). This was the "32-bit FADT register is too
5020
long to convert to GAS struct" message, which is irrelevant for GPEs
5021
since the GPEx_BLK_LEN fields of the FADT are always used instead of the
5022
(limited capacity) GAS bit length. Also, several changes to ensure proper
5023
support for GPE numbers > 255, where some "GPE number" fields were 8-bits
5024
internally.
5025
5026
Implemented and deployed additional configuration support for the public
5027
ACPICA external interfaces. Entire classes of interfaces can now be
5028
easily modified or configured out, replaced by stubbed inline functions
5029
by default. Lv Zheng.
5030
5031
Moved all public ACPICA runtime configuration globals to the public
5032
ACPICA external interface file for convenience. Also, removed some
5033
obsolete/unused globals. See the file acpixf.h. Lv Zheng.
5034
5035
Documentation: Added a new section to the ACPICA reference describing the
5036
maximum number of GPEs that can be supported by the FADT-defined GPEs in
5037
block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
5038
reference.
5039
5040
Example Code and Data Size: These are the sizes for the OS-independent
5041
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5042
debug version of the code includes the debug output trace mechanism and
5043
has a much larger code and data size.
5044
5045
Current Release:
5046
Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
5047
Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
5048
Previous Release:
5049
Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
5050
Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
5051
5052
5053
2) iASL Compiler/Disassembler and Tools:
5054
5055
iASL and disassembler: Add full support for the LPIT table (Low Power
5056
Idle Table). Includes support in the disassembler, data table compiler,
5057
and template generator.
5058
5059
AcpiDump utility:
5060
1) Add option to force the use of the RSDT (over the XSDT).
5061
2) Improve validation of the RSDP signature (use 8 chars instead of 4).
5062
5063
iASL: Add check for predefined packages that are too large. For
5064
predefined names that contain subpackages, check if each subpackage is
5065
too large. (Check for too small already exists.)
5066
5067
Debugger: Updated the GPE command (which simulates a GPE by executing the
5068
GPE code paths in ACPICA). The GPE device is now optional, and defaults
5069
to the GPE 0/1 FADT-defined blocks.
5070
5071
Unix application OSL: Update line-editing support. Add additional error
5072
checking and take care not to reset terminal attributes on exit if they
5073
were never set. This should help guarantee that the terminal is always
5074
left in the previous state on program exit.
5075
5076
5077
----------------------------------------
5078
25 March 2014. Summary of changes for version 20140325:
5079
5080
1) ACPICA kernel-resident subsystem:
5081
5082
Updated the auto-serialize feature for control methods. This feature
5083
automatically serializes all methods that create named objects in order
5084
to prevent runtime errors. The update adds support to ignore the
5085
currently executing AML SyncLevel when invoking such a method, in order
5086
to prevent disruption of any existing SyncLevel priorities that may exist
5087
in the AML code. Although the use of SyncLevels is relatively rare, this
5088
change fixes a regression where an AE_AML_MUTEX_ORDER exception can
5089
appear on some machines starting with the 20140214 release.
5090
5091
Added a new external interface to allow the host to install ACPI tables
5092
very early, before the namespace is even created. AcpiInstallTable gives
5093
the host additional flexibility for ACPI table management. Tables can be
5094
installed directly by the host as if they had originally appeared in the
5095
XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
5096
(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
5097
with additional internal restructuring and cleanup. See the ACPICA
5098
Reference for interface details. Lv Zheng.
5099
5100
Added validation of the checksum for all incoming dynamically loaded
5101
tables (via external interfaces or via AML Load/LoadTable operators). Lv
5102
Zheng.
5103
5104
Updated the use of the AcpiOsWaitEventsComplete interface during Notify
5105
and GPE handler removal. Restructured calls to eliminate possible race
5106
conditions. Lv Zheng.
5107
5108
Added a warning for the use/execution of the ASL/AML Unload (table)
5109
operator. This will help detect and identify machines that use this
5110
operator if and when it is ever used. This operator has never been seen
5111
in the field and the usage model and possible side-effects of the drastic
5112
runtime action of a full table removal are unknown.
5113
5114
Reverted the use of #pragma push/pop which was introduced in the 20140214
5115
release. It appears that push and pop are not implemented by enough
5116
compilers to make the use of this feature feasible for ACPICA at this
5117
time. However, these operators may be deployed in a future ACPICA
5118
release.
5119
5120
Added the missing EXPORT_SYMBOL macros for the install and remove SCI
5121
handler interfaces.
5122
5123
Source code generation:
5124
1) Disabled the use of the "strchr" macro for the gcc-specific
5125
generation. For some versions of gcc, this macro can periodically expose
5126
a compiler bug which in turn causes compile-time error(s).
5127
2) Added support for PPC64 compilation. Colin Ian King.
5128
5129
Example Code and Data Size: These are the sizes for the OS-independent
5130
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5131
debug version of the code includes the debug output trace mechanism and
5132
has a much larger code and data size.
5133
5134
Current Release:
5135
Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
5136
Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
5137
Previous Release:
5138
Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
5139
Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
5140
5141
5142
2) iASL Compiler/Disassembler and Tools:
5143
5144
Disassembler: Added several new features to improve the readability of
5145
the resulting ASL code. Extra information is emitted within comment
5146
fields in the ASL code:
5147
1) Known _HID/_CID values are decoded to descriptive text.
5148
2) Standard values for the Notify() operator are decoded to descriptive
5149
text.
5150
3) Target operands are expanded to full pathnames (in a comment) when
5151
possible.
5152
5153
Disassembler: Miscellaneous updates for extern() handling:
5154
1) Abort compiler if file specified by -fe option does not exist.
5155
2) Silence unnecessary warnings about argument count mismatches.
5156
3) Update warning messages concerning unresolved method externals.
5157
4) Emit "UnknownObj" keyword for externals whose type cannot be
5158
determined.
5159
5160
AcpiHelp utility:
5161
1) Added the -a option to display both the ASL syntax and the AML
5162
encoding for an input ASL operator. This effectively displays all known
5163
information about an ASL operator with one AcpiHelp invocation.
5164
2) Added substring match support (similar to a wildcard) for the -i
5165
(_HID/PNP IDs) option.
5166
5167
iASL/Disassembler: Since this tool does not yet support execution on big-
5168
endian machines, added detection of endianness and an error message if
5169
execution is attempted on big-endian. Support for big-endian within iASL
5170
is a feature that is on the ACPICA to-be-done list.
5171
5172
AcpiBin utility:
5173
1) Remove option to extract binary files from an acpidump; this function
5174
is made obsolete by the AcpiXtract utility.
5175
2) General cleanup of open files and allocated buffers.
5176
5177
5178
----------------------------------------
5179
14 February 2014. Summary of changes for version 20140214:
5180
5181
1) ACPICA kernel-resident subsystem:
5182
5183
Implemented a new mechanism to proactively prevent problems with ill-
5184
behaved reentrant control methods that create named ACPI objects. This
5185
behavior is illegal as per the ACPI specification, but is nonetheless
5186
frequently seen in the field. Previously, this could lead to an
5187
AE_ALREADY_EXISTS exception if the method was actually entered by more
5188
than one thread. This new mechanism detects such methods at table load
5189
time and marks them "serialized" to prevent reentrancy. A new global
5190
option, AcpiGbl_AutoSerializeMethods, has been added to disable this
5191
feature if desired. This mechanism and global option obsoletes and
5192
supersedes the previous AcpiGbl_SerializeAllMethods option.
5193
5194
Added the "Windows 2013" string to the _OSI support. ACPICA will now
5195
respond TRUE to _OSI queries with this string. It is the stated policy of
5196
ACPICA to add new strings to the _OSI support as soon as possible after
5197
they are defined. See the full ACPICA _OSI policy which has been added to
5198
the utilities/utosi.c file.
5199
5200
Hardened/updated the _PRT return value auto-repair code:
5201
1) Do not abort the repair on a single subpackage failure, continue to
5202
check all subpackages.
5203
2) Add check for the minimum subpackage length (4).
5204
3) Properly handle extraneous NULL package elements.
5205
5206
Added support to avoid the possibility of infinite loops when traversing
5207
object linked lists. Never allow an infinite loop, even in the face of
5208
corrupted object lists.
5209
5210
ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
5211
pack(pop) directives to ensure that the ACPICA headers are independent of
5212
compiler settings or other host headers.
5213
5214
Example Code and Data Size: These are the sizes for the OS-independent
5215
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5216
debug version of the code includes the debug output trace mechanism and
5217
has a much larger code and data size.
5218
5219
Current Release:
5220
Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
5221
Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
5222
Previous Release:
5223
Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
5224
Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
5225
5226
5227
2) iASL Compiler/Disassembler and Tools:
5228
5229
iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
5230
first reserved field was incorrectly forced to have a value of zero. This
5231
change correctly forces the field to have a value of one. ACPICA BZ 1081.
5232
5233
Debugger: Added missing support for the "Extra" and "Data" subobjects
5234
when displaying object data.
5235
5236
Debugger: Added support to display entire object linked lists when
5237
displaying object data.
5238
5239
iASL: Removed the obsolete -g option to obtain ACPI tables from the
5240
Windows registry. This feature has been superseded by the acpidump
5241
utility.
5242
5243
5244
----------------------------------------
5245
14 January 2014. Summary of changes for version 20140114:
5246
5247
1) ACPICA kernel-resident subsystem:
5248
5249
Updated all ACPICA copyrights and signons to 2014. Added the 2014
5250
copyright to all module headers and signons, including the standard Linux
5251
header. This affects virtually every file in the ACPICA core subsystem,
5252
iASL compiler, all ACPICA utilities, and the test suites.
5253
5254
Improved parameter validation for AcpiInstallGpeBlock. Added the
5255
following checks:
5256
1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
5257
2) There is not already a GPE block attached to the device.
5258
Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
5259
device.
5260
5261
Correctly support "references" in the ACPI_OBJECT. This change fixes the
5262
support to allow references (namespace nodes) to be passed as arguments
5263
to control methods via the evaluate object interface. This is probably
5264
most useful for testing purposes, however.
5265
5266
Improved support for 32/64 bit physical addresses in printf()-like
5267
output. This change improves the support for physical addresses in printf
5268
debug statements and other output on both 32-bit and 64-bit hosts. It
5269
consistently outputs the appropriate number of bytes for each host. The
5270
%p specifier is unsatisfactory since it does not emit uniform output on
5271
all hosts/clib implementations (on some, leading zeros are not supported,
5272
leading to difficult-to-read output).
5273
5274
Example Code and Data Size: These are the sizes for the OS-independent
5275
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5276
debug version of the code includes the debug output trace mechanism and
5277
has a much larger code and data size.
5278
5279
Current Release:
5280
Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
5281
Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
5282
Previous Release:
5283
Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
5284
Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
5285
5286
5287
2) iASL Compiler/Disassembler and Tools:
5288
5289
iASL: Fix a possible fault when using the Connection() operator. Fixes a
5290
problem if the parent Field definition for the Connection operator refers
5291
to an operation region that does not exist. ACPICA BZ 1064.
5292
5293
AcpiExec: Load of local test tables is now optional. The utility has the
5294
capability to load some various tables to test features of ACPICA.
5295
However, there are enough of them that the output of the utility became
5296
confusing. With this change, only the required local tables are displayed
5297
(RSDP, XSDT, etc.) along with the actual tables loaded via the command
5298
line specification. This makes the default output simler and easier to
5299
understand. The -el command line option restores the original behavior
5300
for testing purposes.
5301
5302
AcpiExec: Added support for overlapping operation regions. This change
5303
expands the simulation of operation regions by supporting regions that
5304
overlap within the given address space. Supports SystemMemory and
5305
SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
5306
5307
AcpiExec: Added region handler support for PCI_Config and EC spaces. This
5308
allows AcpiExec to simulate these address spaces, similar to the current
5309
support for SystemMemory and SystemIO.
5310
5311
Debugger: Added new command to read/write/compare all namespace objects.
5312
The command "test objects" will exercise the entire namespace by writing
5313
new values to each data object, and ensuring that the write was
5314
successful. The original value is then restored and verified.
5315
5316
Debugger: Added the "test predefined" command. This change makes this
5317
test public and puts it under the new "test" command. The test executes
5318
each and every predefined name within the current namespace.
5319
5320
5321
----------------------------------------
5322
18 December 2013. Summary of changes for version 20131218:
5323
5324
Global note: The ACPI 5.0A specification was released this month. There
5325
are no changes needed for ACPICA since this release of ACPI is an
5326
errata/clarification release. The specification is available at
5327
acpi.info.
5328
5329
5330
1) ACPICA kernel-resident subsystem:
5331
5332
Added validation of the XSDT root table if it is present. Some older
5333
platforms contain an XSDT that is ill-formed or otherwise invalid (such
5334
as containing some or all entries that are NULL pointers). This change
5335
adds a new function to validate the XSDT before actually using it. If the
5336
XSDT is found to be invalid, ACPICA will now automatically fall back to
5337
using the RSDT instead. Original implementation by Zhao Yakui. Ported to
5338
ACPICA and enhanced by Lv Zheng and Bob Moore.
5339
5340
Added a runtime option to ignore the XSDT and force the use of the RSDT.
5341
This change adds a runtime option that will force ACPICA to use the RSDT
5342
instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
5343
requires that an XSDT be used instead of the RSDT, the XSDT has been
5344
found to be corrupt or ill-formed on some machines. Lv Zheng.
5345
5346
Added a runtime option to favor 32-bit FADT register addresses over the
5347
64-bit addresses. This change adds an option to favor 32-bit FADT
5348
addresses when there is a conflict between the 32-bit and 64-bit versions
5349
of the same register. The default behavior is to use the 64-bit version
5350
in accordance with the ACPI specification. This can now be overridden via
5351
the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
5352
5353
During the change above, the internal "Convert FADT" and "Verify FADT"
5354
functions have been merged to simplify the code, making it easier to
5355
understand and maintain. ACPICA BZ 933.
5356
5357
Improve exception reporting and handling for GPE block installation.
5358
Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
5359
status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
5360
5361
Added helper macros to extract bus/segment numbers from the HEST table.
5362
This change adds two macros to extract the encoded bus and segment
5363
numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
5364
Betty Dall <[email protected]>
5365
5366
Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
5367
by ACPICA. It is not a public macro, so it should have no effect on
5368
existing OSV code. Lv Zheng.
5369
5370
Example Code and Data Size: These are the sizes for the OS-independent
5371
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5372
debug version of the code includes the debug output trace mechanism and
5373
has a much larger code and data size.
5374
5375
Current Release:
5376
Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
5377
Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
5378
Previous Release:
5379
Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
5380
Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
5381
5382
5383
2) iASL Compiler/Disassembler and Tools:
5384
5385
Disassembler: Improved pathname support for emitted External()
5386
statements. This change adds full pathname support for external names
5387
that have been resolved internally by the inclusion of additional ACPI
5388
tables (via the iASL -e option). Without this change, the disassembler
5389
can emit multiple externals for the same object, or it become confused
5390
when the Scope() operator is used on an external object. Overall, greatly
5391
improves the ability to actually recompile the emitted ASL code when
5392
objects a referenced across multiple ACPI tables. Reported by Michael
5393
Tsirkin ([email protected]).
5394
5395
Tests/ASLTS: Updated functional control suite to execute with no errors.
5396
David Box. Fixed several errors related to the testing of the interpreter
5397
slack mode. Lv Zheng.
5398
5399
iASL: Added support to detect names that are declared within a control
5400
method, but are unused (these are temporary names that are only valid
5401
during the time the method is executing). A remark is issued for these
5402
cases. ACPICA BZ 1022.
5403
5404
iASL: Added full support for the DBG2 table. Adds full disassembler,
5405
table compiler, and template generator support for the DBG2 table (Debug
5406
Port 2 table).
5407
5408
iASL: Added full support for the PCCT table, update the table definition.
5409
Updates the PCCT table definition in the actbl3.h header and adds table
5410
compiler and template generator support.
5411
5412
iASL: Added an option to emit only error messages (no warnings/remarks).
5413
The -ve option will enable only error messages, warnings and remarks are
5414
suppressed. This can simplify debugging when only the errors are
5415
important, such as when an ACPI table is disassembled and there are many
5416
warnings and remarks -- but only the actual errors are of real interest.
5417
5418
Example ACPICA code (source/tools/examples): Updated the example code so
5419
that it builds to an actual working program, not just example code. Added
5420
ACPI tables and execution of an example control method in the DSDT. Added
5421
makefile support for Unix generation.
5422
5423
5424
----------------------------------------
5425
15 November 2013. Summary of changes for version 20131115:
5426
5427
This release is available at https://acpica.org/downloads
5428
5429
5430
1) ACPICA kernel-resident subsystem:
5431
5432
Resource Manager: Fixed loop termination for the "get AML length"
5433
function. The loop previously had an error termination on a NULL resource
5434
pointer, which can never happen since the loop simply increments a valid
5435
resource pointer. This fix changes the loop to terminate with an error on
5436
an invalid end-of-buffer condition. The problem can be seen as an
5437
infinite loop by callers to AcpiSetCurrentResources with an invalid or
5438
corrupted resource descriptor, or a resource descriptor that is missing
5439
an END_TAG descriptor. Reported by Dan Carpenter
5440
<[email protected]>. Lv Zheng, Bob Moore.
5441
5442
Table unload and ACPICA termination: Delete all attached data objects
5443
during namespace node deletion. This fix updates namespace node deletion
5444
to delete the entire list of attached objects (attached via
5445
AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
5446
1024. Tomasz Nowicki ([email protected]).
5447
5448
ACPICA termination: Added support to delete all objects attached to the
5449
root namespace node. This fix deletes any and all objects that have been
5450
attached to the root node via AcpiAttachData. Previously, none of these
5451
objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
5452
5453
Debug output: Do not emit the function nesting level for the in-kernel
5454
build. The nesting level is really only useful during a single-thread
5455
execution. Therefore, only enable this output for the AcpiExec utility.
5456
Also, only emit the thread ID when executing under AcpiExec (Context
5457
switches are still always detected and a message is emitted). ACPICA BZ
5458
972.
5459
5460
Example Code and Data Size: These are the sizes for the OS-independent
5461
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5462
debug version of the code includes the debug output trace mechanism and
5463
has a much larger code and data size.
5464
5465
Current Release:
5466
Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
5467
Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
5468
Previous Release:
5469
Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
5470
Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
5471
5472
5473
2) iASL Compiler/Disassembler and Tools:
5474
5475
AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
5476
correct portable POSIX header for terminal control functions.
5477
5478
Disassembler: Fixed control method invocation issues related to the use
5479
of the CondRefOf() operator. The problem is seen in the disassembly where
5480
control method invocations may not be disassembled properly if the
5481
control method name has been used previously as an argument to CondRefOf.
5482
The solution is to not attempt to emit an external declaration for the
5483
CondRefOf target (it is not necessary in the first place). This prevents
5484
disassembler object type confusion. ACPICA BZ 988.
5485
5486
Unix Makefiles: Added an option to disable compiler optimizations and the
5487
_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
5488
with optimizations (reportedly, gcc 4.4 for example). This change adds a
5489
command line option for make (NOOPT) that disables all compiler
5490
optimizations and the _FORTIFY_SOURCE compiler flag. The default
5491
optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
5492
1034. Lv Zheng, Bob Moore.
5493
5494
Tests/ASLTS: Added options to specify individual test cases and modes.
5495
This allows testers running aslts.sh to optionally specify individual
5496
test modes and test cases. Also added an option to disable the forced
5497
generation of the ACPICA tools from source if desired. Lv Zheng.
5498
5499
----------------------------------------
5500
27 September 2013. Summary of changes for version 20130927:
5501
5502
This release is available at https://acpica.org/downloads
5503
5504
5505
1) ACPICA kernel-resident subsystem:
5506
5507
Fixed a problem with store operations to reference objects. This change
5508
fixes a problem where a Store operation to an ArgX object that contained
5509
a
5510
reference to a field object did not complete the automatic dereference
5511
and
5512
then write to the actual field object. Instead, the object type of the
5513
field object was inadvertently changed to match the type of the source
5514
operand. The new behavior will actually write to the field object (buffer
5515
field or field unit), thus matching the correct ACPI-defined behavior.
5516
5517
Implemented support to allow the host to redefine individual OSL
5518
prototypes. This change enables the host to redefine OSL prototypes found
5519
in the acpiosxf.h file. This allows the host to implement OSL interfaces
5520
with a macro or inlined function. Further, it allows the host to add any
5521
additional required modifiers such as __iomem, __init, __exit, etc., as
5522
necessary on a per-interface basis. Enables maximum flexibility for the
5523
OSL interfaces. Lv Zheng.
5524
5525
Hardcoded the access width for the FADT-defined reset register. The ACPI
5526
specification requires the reset register width to be 8 bits. ACPICA now
5527
hardcodes the width to 8 and ignores the FADT width value. This provides
5528
compatibility with other ACPI implementations that have allowed BIOS code
5529
with bad register width values to go unnoticed. Matthew Garett, Bob
5530
Moore,
5531
Lv Zheng.
5532
5533
Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5534
used
5535
in the OSL header (acpiosxf). The change modifies the position of this
5536
macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5537
build issues if the OSL defines the implementation of the interface to be
5538
an inline stub function. Lv Zheng.
5539
5540
Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5541
initialization interfaces. This change adds a new macro for the main init
5542
and terminate external interfaces in order to support hosts that require
5543
additional or different processing for these functions. Changed from
5544
ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5545
Zheng, Bob Moore.
5546
5547
Cleaned up the memory allocation macros for configurability. In the
5548
common
5549
case, the ACPI_ALLOCATE and related macros now resolve directly to their
5550
respective AcpiOs* OSL interfaces. Two options:
5551
1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5552
default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
5553
2) For AcpiExec (and for debugging), the macros can optionally be
5554
resolved
5555
to the local ACPICA interfaces that track each allocation (local tracking
5556
is used to immediately detect memory leaks).
5557
Lv Zheng.
5558
5559
Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5560
to predefine this macro to either TRUE or FALSE during the system build.
5561
5562
Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5563
5564
Example Code and Data Size: These are the sizes for the OS-independent
5565
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5566
debug version of the code includes the debug output trace mechanism and
5567
has a much larger code and data size.
5568
5569
Current Release:
5570
Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
5571
Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
5572
Previous Release:
5573
Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
5574
Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
5575
5576
5577
2) iASL Compiler/Disassembler and Tools:
5578
5579
iASL: Implemented wildcard support for the -e option. This simplifies use
5580
when there are many SSDTs that must be included to resolve external
5581
method
5582
declarations. ACPICA BZ 1041. Example:
5583
iasl -e ssdt*.dat -d dsdt.dat
5584
5585
AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5586
adds a portable module that implements full history and limited line
5587
editing for Unix and Linux systems. It does not use readline() due to
5588
portability issues. Instead it uses the POSIX termio interface to put the
5589
terminal in raw input mode so that the various special keys can be
5590
trapped
5591
(such as up/down-arrow for history support and left/right-arrow for line
5592
editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5593
5594
AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5595
one or more spaces. This provides compatible with early or different
5596
versions of the AcpiDump utility. ACPICA BZ 1044.
5597
5598
AcpiDump: Do not ignore tables that contain only an ACPI table header.
5599
Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5600
no other data. This change adds support to dump these tables. Any tables
5601
shorter than the length of an ACPI table header remain in error (an error
5602
message is emitted). Reported by Yi Li.
5603
5604
Debugger: Echo actual command along with the "unknown command" message.
5605
5606
----------------------------------------
5607
23 August 2013. Summary of changes for version 20130823:
5608
5609
1) ACPICA kernel-resident subsystem:
5610
5611
Implemented support for host-installed System Control Interrupt (SCI)
5612
handlers. Certain ACPI functionality requires the host to handle raw
5613
SCIs. For example, the "SCI Doorbell" that is defined for memory power
5614
state support requires the host device driver to handle SCIs to examine
5615
if the doorbell has been activated. Multiple SCI handlers can be
5616
installed to allow for future expansion. New external interfaces are
5617
AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5618
details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5619
5620
Operation region support: Never locally free the handler "context"
5621
pointer. This change removes some dangerous code that attempts to free
5622
the handler context pointer in some (rare) circumstances. The owner of
5623
the handler owns this pointer and the ACPICA code should never touch it.
5624
Although not seen to be an issue in any kernel, it did show up as a
5625
problem (fault) under AcpiExec. Also, set the internal storage field for
5626
the context pointer to zero when the region is deactivated, simply for
5627
sanity. David Box. ACPICA BZ 1039.
5628
5629
AcpiRead: On error, do not modify the return value target location. If an
5630
error happens in the middle of a split 32/32 64-bit I/O operation, do not
5631
modify the target of the return value pointer. Makes the code consistent
5632
with the rest of ACPICA. Bjorn Helgaas.
5633
5634
Example Code and Data Size: These are the sizes for the OS-independent
5635
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5636
debug version of the code includes the debug output trace mechanism and
5637
has a much larger code and data size.
5638
5639
Current Release:
5640
Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
5641
Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
5642
Previous Release:
5643
Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
5644
Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
5645
5646
5647
2) iASL Compiler/Disassembler and Tools:
5648
5649
AcpiDump: Implemented several new features and fixed some problems:
5650
1) Added support to dump the RSDP, RSDT, and XSDT tables.
5651
2) Added support for multiple table instances (SSDT, UEFI).
5652
3) Added option to dump "customized" (overridden) tables (-c).
5653
4) Fixed a problem where some table filenames were improperly
5654
constructed.
5655
5) Improved some error messages, removed some unnecessary messages.
5656
5657
iASL: Implemented additional support for disassembly of ACPI tables that
5658
contain invocations of external control methods. The -fe<file> option
5659
allows the import of a file that specifies the external methods along
5660
with the required number of arguments for each -- allowing for the
5661
correct disassembly of the table. This is a workaround for a limitation
5662
of AML code where the disassembler often cannot determine the number of
5663
arguments required for an external control method and generates incorrect
5664
ASL code. See the iASL reference for details. ACPICA BZ 1030.
5665
5666
Debugger: Implemented a new command (paths) that displays the full
5667
pathnames (namepaths) and object types of all objects in the namespace.
5668
This is an alternative to the namespace command.
5669
5670
Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5671
mechanism and any installed handlers.
5672
5673
iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5674
This can occur if there are too many parent prefixes in a namepath (for
5675
example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5676
5677
Application OSLs: Set the return value for the PCI read functions. These
5678
functions simply return AE_OK, but should set the return value to zero
5679
also. This change implements this. ACPICA BZ 1038.
5680
5681
Debugger: Prevent possible command line buffer overflow. Increase the
5682
size of a couple of the debugger line buffers, and ensure that overflow
5683
cannot happen. ACPICA BZ 1037.
5684
5685
iASL: Changed to abort immediately on serious errors during the parsing
5686
phase. Due to the nature of ASL, there is no point in attempting to
5687
compile these types of errors, and they typically end up causing a
5688
cascade of hundreds of errors which obscure the original problem.
5689
5690
----------------------------------------
5691
25 July 2013. Summary of changes for version 20130725:
5692
5693
1) ACPICA kernel-resident subsystem:
5694
5695
Fixed a problem with the DerefOf operator where references to FieldUnits
5696
and BufferFields incorrectly returned the parent object, not the actual
5697
value of the object. After this change, a dereference of a FieldUnit
5698
reference results in a read operation on the field to get the value, and
5699
likewise, the appropriate BufferField value is extracted from the target
5700
buffer.
5701
5702
Fixed a problem where the _WAK method could cause a fault under these
5703
circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5704
method returned no value. The problem is rarely seen because most kernels
5705
run ACPICA in slack mode.
5706
5707
For the DerefOf operator, a fatal error now results if an attempt is made
5708
to dereference a reference (created by the Index operator) to a NULL
5709
package element. Provides compatibility with other ACPI implementations,
5710
and this behavior will be added to a future version of the ACPI
5711
specification.
5712
5713
The ACPI Power Management Timer (defined in the FADT) is now optional.
5714
This provides compatibility with other ACPI implementations and will
5715
appear in the next version of the ACPI specification. If there is no PM
5716
Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5717
zero in the FADT indicates no PM timer.
5718
5719
Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5720
allows the host to globally enable/disable all vendor strings, all
5721
feature strings, or both. Intended to be primarily used for debugging
5722
purposes only. Lv Zheng.
5723
5724
Expose the collected _OSI data to the host via a global variable. This
5725
data tracks the highest level vendor ID that has been invoked by the BIOS
5726
so that the host (and potentially ACPICA itself) can change behaviors
5727
based upon the age of the BIOS.
5728
5729
Example Code and Data Size: These are the sizes for the OS-independent
5730
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5731
debug version of the code includes the debug output trace mechanism and
5732
has a much larger code and data size.
5733
5734
Current Release:
5735
Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
5736
Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
5737
Previous Release:
5738
Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
5739
Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
5740
5741
5742
2) iASL Compiler/Disassembler and Tools:
5743
5744
iASL: Created the following enhancements for the -so option (create
5745
offset table):
5746
1)Add offsets for the last nameseg in each namepath for every supported
5747
object type
5748
2)Add support for Processor, Device, Thermal Zone, and Scope objects
5749
3)Add the actual AML opcode for the parent object of every supported
5750
object type
5751
4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5752
5753
Disassembler: Emit all unresolved external symbols in a single block.
5754
These are external references to control methods that could not be
5755
resolved, and thus, the disassembler had to make a guess at the number of
5756
arguments to parse.
5757
5758
iASL: The argument to the -T option (create table template) is now
5759
optional. If not specified, the default table is a DSDT, typically the
5760
most common case.
5761
5762
----------------------------------------
5763
26 June 2013. Summary of changes for version 20130626:
5764
5765
1) ACPICA kernel-resident subsystem:
5766
5767
Fixed an issue with runtime repair of the _CST object. Null or invalid
5768
elements were not always removed properly. Lv Zheng.
5769
5770
Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5771
FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5772
the maximum number of GPEs is 1016. Use of multiple GPE block devices
5773
makes the system-wide number of GPEs essentially unlimited.
5774
5775
Example Code and Data Size: These are the sizes for the OS-independent
5776
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5777
debug version of the code includes the debug output trace mechanism and
5778
has a much larger code and data size.
5779
5780
Current Release:
5781
Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
5782
Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
5783
Previous Release:
5784
Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
5785
Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
5786
5787
5788
2) iASL Compiler/Disassembler and Tools:
5789
5790
Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5791
hosts. Now supports Linux, FreeBSD, and Windows.
5792
5793
Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5794
Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5795
5796
iASL/Preprocessor: Implemented full support for nested
5797
#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5798
5799
Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5800
max. The original purpose of this constraint was to limit the amount of
5801
debug output. However, the string function in question (UtPrintString) is
5802
now used for the disassembler also, where 256 bytes is insufficient.
5803
Reported by RehabMan@GitHub.
5804
5805
iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5806
tables. ACPICA BZ 999. Lv Zheng.
5807
5808
iASL: Fixed a couple of error exit issues that could result in a "Could
5809
not delete <file>" message during ASL compilation.
5810
5811
AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5812
the actual signatures for these tables are "FACP" and "APIC",
5813
respectively.
5814
5815
AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5816
tables are allowed to have multiple instances.
5817
5818
----------------------------------------
5819
17 May 2013. Summary of changes for version 20130517:
5820
5821
1) ACPICA kernel-resident subsystem:
5822
5823
Fixed a regression introduced in version 20130328 for _INI methods. This
5824
change fixes a problem introduced in 20130328 where _INI methods are no
5825
longer executed properly because of a memory block that was not
5826
initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5827
<[email protected]>.
5828
5829
Fixed a possible problem with the new extended sleep registers in the
5830
ACPI
5831
5.0 FADT. Do not use these registers (even if populated) unless the HW-
5832
reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
5833
1020. Lv Zheng.
5834
5835
Implemented return value repair code for _CST predefined objects: Sort
5836
the
5837
list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5838
5839
Implemented a debug-only option to disable loading of SSDTs from the
5840
RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5841
ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5842
acglobal.h - ACPICA BZ 1005. Lv Zheng.
5843
5844
Fixed some issues in the ACPICA initialization and termination code:
5845
Tomasz Nowicki <[email protected]>
5846
1) Clear events initialized flag upon event component termination. ACPICA
5847
BZ 1013.
5848
2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
5849
3) Delete global lock pending lock during termination. ACPICA BZ 1012.
5850
4) Clear debug buffer global on termination to prevent possible multiple
5851
delete. ACPICA BZ 1010.
5852
5853
Standardized all switch() blocks across the entire source base. After
5854
many
5855
years, different formatting for switch() had crept in. This change makes
5856
the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5857
5858
Split some files to enhance ACPICA modularity and configurability:
5859
1) Split buffer dump routines into utilities/utbuffer.c
5860
2) Split internal error message routines into utilities/uterror.c
5861
3) Split table print utilities into tables/tbprint.c
5862
4) Split iASL command-line option processing into asloptions.c
5863
5864
Makefile enhancements:
5865
1) Support for all new files above.
5866
2) Abort make on errors from any subcomponent. Chao Guan.
5867
3) Add build support for Apple Mac OS X. Liang Qi.
5868
5869
Example Code and Data Size: These are the sizes for the OS-independent
5870
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5871
debug version of the code includes the debug output trace mechanism and
5872
has a much larger code and data size.
5873
5874
Current Release:
5875
Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
5876
Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
5877
Previous Release:
5878
Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
5879
Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
5880
5881
5882
2) iASL Compiler/Disassembler and Tools:
5883
5884
New utility: Implemented an easily portable version of the acpidump
5885
utility to extract ACPI tables from the system (or a file) in an ASCII
5886
hex
5887
dump format. The top-level code implements the various command line
5888
options, file I/O, and table dump routines. To port to a new host, only
5889
three functions need to be implemented to get tables -- since this
5890
functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5891
the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
5892
1) The Windows version obtains the ACPI tables from the Registry.
5893
2) The Linux version is under development.
5894
3) Other hosts - If an OS-dependent module is submitted, it will be
5895
distributed with ACPICA.
5896
5897
iASL: Fixed a regression for -D preprocessor option (define symbol). A
5898
restructuring/change to the initialization sequence caused this option to
5899
no longer work properly.
5900
5901
iASL: Implemented a mechanism to disable specific warnings and remarks.
5902
Adds a new command line option, "-vw <messageid> as well as "#pragma
5903
disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5904
5905
iASL: Fix for too-strict package object validation. The package object
5906
validation for return values from the predefined names is a bit too
5907
strict, it does not allow names references within the package (which will
5908
be resolved at runtime.) These types of references cannot be validated at
5909
compile time. This change ignores named references within package objects
5910
for names that return or define static packages.
5911
5912
Debugger: Fixed the 80-character command line limitation for the History
5913
command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5914
5915
iASL: Added control method and package support for the -so option
5916
(generates AML offset table for BIOS support.)
5917
5918
iASL: issue a remark if a non-serialized method creates named objects. If
5919
a thread blocks within the method for any reason, and another thread
5920
enters the method, the method will fail because an attempt will be made
5921
to
5922
create the same (named) object twice. In this case, issue a remark that
5923
the method should be marked serialized. NOTE: may become a warning later.
5924
ACPICA BZ 909.
5925
5926
----------------------------------------
5927
18 April 2013. Summary of changes for version 20130418:
5928
5929
1) ACPICA kernel-resident subsystem:
5930
5931
Fixed a possible buffer overrun during some rare but specific field unit
5932
read operations. This overrun can only happen if the DSDT version is 1 --
5933
meaning that all AML integers are 32 bits -- and the field length is
5934
between 33 and 55 bits long. During the read, an internal buffer object
5935
is
5936
created for the field unit because the field is larger than an integer
5937
(32
5938
bits). However, in this case, the buffer will be incorrectly written
5939
beyond the end because the buffer length is less than the internal
5940
minimum
5941
of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5942
long, but a full 8 bytes will be written.
5943
5944
Updated the Embedded Controller "orphan" _REG method support. This refers
5945
to _REG methods under the EC device that have no corresponding operation
5946
region. This is allowed by the ACPI specification. This update removes a
5947
dependency on the existence an ECDT table. It will execute an orphan _REG
5948
method as long as the operation region handler for the EC is installed at
5949
the EC device node and not the namespace root. Rui Zhang (original
5950
update), Bob Moore (update/integrate).
5951
5952
Implemented run-time argument typechecking for all predefined ACPI names
5953
(_STA, _BIF, etc.) This change performs object typechecking on all
5954
incoming arguments for all predefined names executed via
5955
AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5956
passing correct object types as well as the correct number of arguments
5957
(therefore identifying any issues immediately). Also, the ASL/namespace
5958
definition of the predefined name is checked against the ACPI
5959
specification for the proper argument count. Adds one new file,
5960
nsarguments.c
5961
5962
Changed an exception code for the ASL UnLoad() operator. Changed the
5963
exception code for the case where the input DdbHandle is invalid, from
5964
AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5965
5966
Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5967
global makefile. The use of this flag causes compiler errors on earlier
5968
versions of GCC, so it has been removed for compatibility.
5969
5970
Miscellaneous cleanup:
5971
1) Removed some unused/obsolete macros
5972
2) Fixed a possible memory leak in the _OSI support
5973
3) Removed an unused variable in the predefined name support
5974
4) Windows OSL: remove obsolete reference to a memory list field
5975
5976
Example Code and Data Size: These are the sizes for the OS-independent
5977
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5978
debug version of the code includes the debug output trace mechanism and
5979
has a much larger code and data size.
5980
5981
Current Release:
5982
Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
5983
Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
5984
Previous Release:
5985
Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
5986
Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
5987
5988
5989
2) iASL Compiler/Disassembler and Tools:
5990
5991
AcpiExec: Added installation of a handler for the SystemCMOS address
5992
space. This prevents control method abort if a method accesses this
5993
space.
5994
5995
AcpiExec: Added support for multiple EC devices, and now install EC
5996
operation region handler(s) at the actual EC device instead of the
5997
namespace root. This reflects the typical behavior of host operating
5998
systems.
5999
6000
AcpiExec: Updated to ensure that all operation region handlers are
6001
installed before the _REG methods are executed. This prevents a _REG
6002
method from aborting if it accesses an address space has no handler.
6003
AcpiExec installs a handler for every possible address space.
6004
6005
Debugger: Enhanced the "handlers" command to display non-root handlers.
6006
This change enhances the handlers command to display handlers associated
6007
with individual devices throughout the namespace, in addition to the
6008
currently supported display of handlers associated with the root
6009
namespace
6010
node.
6011
6012
ASL Test Suite: Several test suite errors have been identified and
6013
resolved, reducing the total error count during execution. Chao Guan.
6014
6015
----------------------------------------
6016
28 March 2013. Summary of changes for version 20130328:
6017
6018
1) ACPICA kernel-resident subsystem:
6019
6020
Fixed several possible race conditions with the internal object reference
6021
counting mechanism. Some of the external ACPICA interfaces update object
6022
reference counts without holding the interpreter or namespace lock. This
6023
change adds a spinlock to protect reference count updates on the internal
6024
ACPICA objects. Reported by and with assistance from Andriy Gapon
6025
([email protected]).
6026
6027
FADT support: Removed an extraneous warning for very large GPE register
6028
sets. This change removes a size mismatch warning if the legacy length
6029
field for a GPE register set is larger than the 64-bit GAS structure can
6030
accommodate. GPE register sets can be larger than the 255-bit width
6031
limitation of the GAS structure. Linn Crosetto ([email protected]).
6032
6033
_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
6034
return from this interface. Handles a possible timeout case if
6035
ACPI_WAIT_FOREVER is modified by the host to be a value less than
6036
"forever". Jung-uk Kim.
6037
6038
Predefined name support: Add allowed/required argument type information
6039
to
6040
the master predefined info table. This change adds the infrastructure to
6041
enable typechecking on incoming arguments for all predefined
6042
methods/objects. It does not actually contain the code that will fully
6043
utilize this information, this is still under development. Also condenses
6044
some duplicate code for the predefined names into a new module,
6045
utilities/utpredef.c
6046
6047
Example Code and Data Size: These are the sizes for the OS-independent
6048
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6049
debug version of the code includes the debug output trace mechanism and
6050
has a much larger code and data size.
6051
6052
Previous Release:
6053
Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
6054
Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
6055
Current Release:
6056
Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
6057
Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
6058
6059
6060
2) iASL Compiler/Disassembler and Tools:
6061
6062
iASL: Implemented a new option to simplify the development of ACPI-
6063
related
6064
BIOS code. Adds support for a new "offset table" output file. The -so
6065
option will create a C table containing the AML table offsets of various
6066
named objects in the namespace so that BIOS code can modify them easily
6067
at
6068
boot time. This can simplify BIOS runtime code by eliminating expensive
6069
searches for "magic values", enhancing boot times and adding greater
6070
reliability. With assistance from Lee Hamel.
6071
6072
iASL: Allow additional predefined names to return zero-length packages.
6073
Now, all predefined names that are defined by the ACPI specification to
6074
return a "variable-length package of packages" are allowed to return a
6075
zero length top-level package. This allows the BIOS to tell the host that
6076
the requested feature is not supported, and supports existing BIOS/ASL
6077
code and practices.
6078
6079
iASL: Changed the "result not used" warning to an error. This is the case
6080
where an ASL operator is effectively a NOOP because the result of the
6081
operation is not stored anywhere. For example:
6082
Add (4, Local0)
6083
There is no target (missing 3rd argument), nor is the function return
6084
value used. This is potentially a very serious problem -- since the code
6085
was probably intended to do something, but for whatever reason, the value
6086
was not stored. Therefore, this issue has been upgraded from a warning to
6087
an error.
6088
6089
AcpiHelp: Added allowable/required argument types to the predefined names
6090
info display. This feature utilizes the recent update to the predefined
6091
names table (above).
6092
6093
----------------------------------------
6094
14 February 2013. Summary of changes for version 20130214:
6095
6096
1) ACPICA Kernel-resident Subsystem:
6097
6098
Fixed a possible regression on some hosts: Reinstated the safe return
6099
macros (return_ACPI_STATUS, etc.) that ensure that the argument is
6100
evaluated only once. Although these macros are not needed for the ACPICA
6101
code itself, they are often used by ACPI-related host device drivers
6102
where
6103
the safe feature may be necessary.
6104
6105
Fixed several issues related to the ACPI 5.0 reduced hardware support
6106
(SOC): Now ensure that if the platform declares itself as hardware-
6107
reduced
6108
via the FADT, the following functions become NOOPs (and always return
6109
AE_OK) because ACPI is always enabled by definition on these machines:
6110
AcpiEnable
6111
AcpiDisable
6112
AcpiHwGetMode
6113
AcpiHwSetMode
6114
6115
Dynamic Object Repair: Implemented additional runtime repairs for
6116
predefined name return values. Both of these repairs can simplify code in
6117
the related device drivers that invoke these methods:
6118
1) For the _STR and _MLS names, automatically repair/convert an ASCII
6119
string to a Unicode buffer.
6120
2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
6121
a
6122
lone end tag descriptor in the following cases: A Return(0) was executed,
6123
a null buffer was returned, or no object at all was returned (non-slack
6124
mode only). Adds a new file, nsconvert.c
6125
ACPICA BZ 998. Bob Moore, Lv Zheng.
6126
6127
Resource Manager: Added additional code to prevent possible infinite
6128
loops
6129
while traversing corrupted or ill-formed resource template buffers. Check
6130
for zero-length resource descriptors in all code that loops through
6131
resource templates (the length field is used to index through the
6132
template). This change also hardens the external AcpiWalkResources and
6133
AcpiWalkResourceBuffer interfaces.
6134
6135
Local Cache Manager: Enhanced the main data structure to eliminate an
6136
unnecessary mechanism to access the next object in the list. Actually
6137
provides a small performance enhancement for hosts that use the local
6138
ACPICA cache manager. Jung-uk Kim.
6139
6140
Example Code and Data Size: These are the sizes for the OS-independent
6141
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6142
debug version of the code includes the debug output trace mechanism and
6143
has a much larger code and data size.
6144
6145
Previous Release:
6146
Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
6147
Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
6148
Current Release:
6149
Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
6150
Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
6151
6152
6153
2) iASL Compiler/Disassembler and Tools:
6154
6155
iASL/Disassembler: Fixed several issues with the definition of the ACPI
6156
5.0 RASF table (RAS Feature Table). This change incorporates late changes
6157
that were made to the ACPI 5.0 specification.
6158
6159
iASL/Disassembler: Added full support for the following new ACPI tables:
6160
1) The MTMR table (MID Timer Table)
6161
2) The VRTC table (Virtual Real Time Clock Table).
6162
Includes header file, disassembler, table compiler, and template support
6163
for both tables.
6164
6165
iASL: Implemented compile-time validation of package objects returned by
6166
predefined names. This new feature validates static package objects
6167
returned by the various predefined names defined to return packages. Both
6168
object types and package lengths are validated, for both parent packages
6169
and sub-packages, if any. The code is similar in structure and behavior
6170
to
6171
the runtime repair mechanism within the AML interpreter and uses the
6172
existing predefined name information table. Adds a new file, aslprepkg.c.
6173
ACPICA BZ 938.
6174
6175
iASL: Implemented auto-detection of binary ACPI tables for disassembly.
6176
This feature detects a binary file with a valid ACPI table header and
6177
invokes the disassembler automatically. Eliminates the need to
6178
specifically invoke the disassembler with the -d option. ACPICA BZ 862.
6179
6180
iASL/Disassembler: Added several warnings for the case where there are
6181
unresolved control methods during the disassembly. This can potentially
6182
cause errors when the output file is compiled, because the disassembler
6183
assumes zero method arguments in these cases (it cannot determine the
6184
actual number of arguments without resolution/definition of the method).
6185
6186
Debugger: Added support to display all resources with a single command.
6187
Invocation of the resources command with no arguments will now display
6188
all
6189
resources within the current namespace.
6190
6191
AcpiHelp: Added descriptive text for each ACPICA exception code displayed
6192
via the -e option.
6193
6194
----------------------------------------
6195
17 January 2013. Summary of changes for version 20130117:
6196
6197
1) ACPICA Kernel-resident Subsystem:
6198
6199
Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
6200
return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
6201
objects to return a package containing one integer, most BIOS code
6202
returns
6203
two integers and the previous code reflects that. However, we also need
6204
to
6205
support BIOS code that actually implements to the ACPI spec, and this
6206
change reflects this.
6207
6208
Fixed two issues with the ACPI_DEBUG_PRINT macros:
6209
1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
6210
C compilers that require this support.
6211
2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
6212
ACPI_DEBUG is already used by many of the various hosts.
6213
6214
Updated all ACPICA copyrights and signons to 2013. Added the 2013
6215
copyright to all module headers and signons, including the standard Linux
6216
header. This affects virtually every file in the ACPICA core subsystem,
6217
iASL compiler, all ACPICA utilities, and the test suites.
6218
6219
Example Code and Data Size: These are the sizes for the OS-independent
6220
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6221
debug version of the code includes the debug output trace mechanism and
6222
has a much larger code and data size.
6223
6224
Previous Release:
6225
Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
6226
Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
6227
Current Release:
6228
Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
6229
Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
6230
6231
6232
2) iASL Compiler/Disassembler and Tools:
6233
6234
Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
6235
prevent a possible fault on some hosts. Some C libraries modify the arg
6236
pointer parameter to vfprintf making it difficult to call it twice in the
6237
AcpiOsVprintf function. Use a local buffer to workaround this issue. This
6238
does not affect the Windows OSL since the Win C library does not modify
6239
the arg pointer. Chao Guan, Bob Moore.
6240
6241
iASL: Fixed a possible infinite loop when the maximum error count is
6242
reached. If an output file other than the .AML file is specified (such as
6243
a listing file), and the maximum number of errors is reached, do not
6244
attempt to flush data to the output file(s) as the compiler is aborting.
6245
This can cause an infinite loop as the max error count code essentially
6246
keeps calling itself.
6247
6248
iASL/Disassembler: Added an option (-in) to ignore NOOP
6249
opcodes/operators.
6250
Implemented for both the compiler and the disassembler. Often, the NOOP
6251
opcode is used as padding for packages that are changed dynamically by
6252
the
6253
BIOS. When disassembled and recompiled, these NOOPs will cause syntax
6254
errors. This option causes the disassembler to ignore all NOOP opcodes
6255
(0xA3), and it also causes the compiler to ignore all ASL source code
6256
NOOP
6257
statements as well.
6258
6259
Debugger: Enhanced the Sleep command to execute all sleep states. This
6260
change allows Sleep to be invoked with no arguments and causes the
6261
debugger to execute all of the sleep states, 0-5, automatically.
6262
6263
----------------------------------------
6264
20 December 2012. Summary of changes for version 20121220:
6265
6266
1) ACPICA Kernel-resident Subsystem:
6267
6268
Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
6269
alternate entry point for AcpiWalkResources and improves the usability of
6270
the resource manager by accepting as input a buffer containing the output
6271
of either a _CRS, _PRS, or _AEI method. The key functionality is that the
6272
input buffer is not deleted by this interface so that it can be used by
6273
the host later. See the ACPICA reference for details.
6274
6275
Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
6276
(DSDT version < 2). The constant will be truncated and this warning
6277
reflects that behavior.
6278
6279
Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
6280
ExtendedInterrupt, and GpioInt descriptors. This change adds support to
6281
both get and set the new wake bit in these descriptors, separately from
6282
the existing share bit. Reported by Aaron Lu.
6283
6284
Interpreter: Fix Store() when an implicit conversion is not possible. For
6285
example, in the cases such as a store of a string to an existing package
6286
object, implement the store as a CopyObject(). This is a small departure
6287
from the ACPI specification which states that the control method should
6288
be
6289
aborted in this case. However, the ASLTS suite depends on this behavior.
6290
6291
Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
6292
macros: check if debug output is currently enabled as soon as possible to
6293
minimize performance impact if debug is in fact not enabled.
6294
6295
Source code restructuring: Cleanup to improve modularity. The following
6296
new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
6297
psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
6298
Associated makefiles and project files have been updated.
6299
6300
Changed an exception code for LoadTable operator. For the case where one
6301
of the input strings is too long, change the returned exception code from
6302
AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
6303
6304
Fixed a possible memory leak in dispatcher error path. On error, delete
6305
the mutex object created during method mutex creation. Reported by
6306
[email protected].
6307
6308
Example Code and Data Size: These are the sizes for the OS-independent
6309
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6310
debug version of the code includes the debug output trace mechanism and
6311
has a much larger code and data size.
6312
6313
Previous Release:
6314
Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
6315
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
6316
Current Release:
6317
Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
6318
Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
6319
6320
6321
2) iASL Compiler/Disassembler and Tools:
6322
6323
iASL: Disallow a method call as argument to the ObjectType ASL operator.
6324
This change tracks an errata to the ACPI 5.0 document. The AML grammar
6325
will not allow the interpreter to differentiate between a method and a
6326
method invocation when these are used as an argument to the ObjectType
6327
operator. The ACPI specification change is to disallow a method
6328
invocation
6329
(UserTerm) for the ObjectType operator.
6330
6331
Finish support for the TPM2 and CSRT tables in the headers, table
6332
compiler, and disassembler.
6333
6334
Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
6335
always expires immediately if the semaphore is not available. The
6336
original
6337
code was using a relative-time timeout, but sem_timedwait requires the
6338
use
6339
of an absolute time.
6340
6341
iASL: Added a remark if the Timer() operator is used within a 32-bit
6342
table. This operator returns a 64-bit time value that will be truncated
6343
within a 32-bit table.
6344
6345
iASL Source code restructuring: Cleanup to improve modularity. The
6346
following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
6347
aslmethod.c, and aslfileio.c. Associated makefiles and project files have
6348
been updated.
6349
6350
6351
----------------------------------------
6352
14 November 2012. Summary of changes for version 20121114:
6353
6354
1) ACPICA Kernel-resident Subsystem:
6355
6356
Implemented a performance enhancement for ACPI/AML Package objects. This
6357
change greatly increases the performance of Package objects within the
6358
interpreter. It changes the processing of reference counts for packages
6359
by
6360
optimizing for the most common case where the package sub-objects are
6361
either Integers, Strings, or Buffers. Increases the overall performance
6362
of
6363
the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
6364
2X.)
6365
Chao Guan. ACPICA BZ 943.
6366
6367
Implemented and deployed common macros to extract flag bits from resource
6368
descriptors. Improves readability and maintainability of the code. Fixes
6369
a
6370
problem with the UART serial bus descriptor for the number of data bits
6371
flags (was incorrectly 2 bits, should be 3).
6372
6373
Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
6374
of the macros and changed the SETx macros to the style of (destination,
6375
source). Also added ACPI_CASTx companion macros. Lv Zheng.
6376
6377
Example Code and Data Size: These are the sizes for the OS-independent
6378
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6379
debug version of the code includes the debug output trace mechanism and
6380
has a much larger code and data size.
6381
6382
Previous Release:
6383
Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
6384
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
6385
Current Release:
6386
Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
6387
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
6388
6389
6390
2) iASL Compiler/Disassembler and Tools:
6391
6392
Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
6393
adds the ShareAndWake and ExclusiveAndWake flags which were added to the
6394
Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
6395
6396
Disassembler: Fixed a problem with external declaration generation. Fixes
6397
a problem where an incorrect pathname could be generated for an external
6398
declaration if the original reference to the object includes leading
6399
carats (^). ACPICA BZ 984.
6400
6401
Debugger: Completed a major update for the Disassemble<method> command.
6402
This command was out-of-date and did not properly disassemble control
6403
methods that had any reasonable complexity. This fix brings the command
6404
up
6405
to the same level as the rest of the disassembler. Adds one new file,
6406
dmdeferred.c, which is existing code that is now common with the main
6407
disassembler and the debugger disassemble command. ACPICA MZ 978.
6408
6409
iASL: Moved the parser entry prototype to avoid a duplicate declaration.
6410
Newer versions of Bison emit this prototype, so moved the prototype out
6411
of
6412
the iASL header to where it is actually used in order to avoid a
6413
duplicate
6414
declaration.
6415
6416
iASL/Tools: Standardized use of the stream I/O functions:
6417
1) Ensure check for I/O error after every fopen/fread/fwrite
6418
2) Ensure proper order of size/count arguments for fread/fwrite
6419
3) Use test of (Actual != Requested) after all fwrite, and most fread
6420
4) Standardize I/O error messages
6421
Improves reliability and maintainability of the code. Bob Moore, Lv
6422
Zheng.
6423
ACPICA BZ 981.
6424
6425
Disassembler: Prevent duplicate External() statements. During generation
6426
of external statements, detect similar pathnames that are actually
6427
duplicates such as these:
6428
External (\ABCD)
6429
External (ABCD)
6430
Remove all leading '\' characters from pathnames during the external
6431
statement generation so that duplicates will be detected and tossed.
6432
ACPICA BZ 985.
6433
6434
Tools: Replace low-level I/O with stream I/O functions. Replace
6435
open/read/write/close with the stream I/O equivalents
6436
fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
6437
Moore.
6438
6439
AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
6440
name header so that AcpiXtract recognizes the output file/table.
6441
6442
iASL: Remove obsolete -2 option flag. Originally intended to force the
6443
compiler/disassembler into an ACPI 2.0 mode, this was never implemented
6444
and the entire concept is now obsolete.
6445
6446
----------------------------------------
6447
18 October 2012. Summary of changes for version 20121018:
6448
6449
6450
1) ACPICA Kernel-resident Subsystem:
6451
6452
Updated support for the ACPI 5.0 MPST table. Fixes some problems
6453
introduced by late changes to the table as it was added to the ACPI 5.0
6454
specification. Includes header, disassembler, and data table compiler
6455
support as well as a new version of the MPST template.
6456
6457
AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
6458
5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
6459
methods: _HID, _CID, and _UID.
6460
6461
Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
6462
ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
6463
name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
6464
names for their various drivers. Affects the AcpiGetObjectInfo external
6465
interface, and other internal interfaces as well.
6466
6467
Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
6468
This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
6469
on machines that support non-aligned transfers. Optimizes for this case
6470
rather than using a strncpy. With assistance from Zheng Lv.
6471
6472
Resource Manager: Small fix for buffer size calculation. Fixed a one byte
6473
error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
6474
6475
Added a new debug print message for AML mutex objects that are force-
6476
released. At control method termination, any currently acquired mutex
6477
objects are force-released. Adds a new debug-only message for each one
6478
that is released.
6479
6480
Audited/updated all ACPICA return macros and the function debug depth
6481
counter: 1) Ensure that all functions that use the various TRACE macros
6482
also use the appropriate ACPICA return macros. 2) Ensure that all normal
6483
return statements surround the return expression (value) with parens to
6484
ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
6485
Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
6486
6487
Global source code changes/maintenance: All extra lines at the start and
6488
end of each source file have been removed for consistency. Also, within
6489
comments, all new sentences start with a single space instead of a double
6490
space, again for consistency across the code base.
6491
6492
Example Code and Data Size: These are the sizes for the OS-independent
6493
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6494
debug version of the code includes the debug output trace mechanism and
6495
has a much larger code and data size.
6496
6497
Previous Release:
6498
Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
6499
Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
6500
Current Release:
6501
Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
6502
Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
6503
6504
6505
2) iASL Compiler/Disassembler and Tools:
6506
6507
AcpiExec: Improved the algorithm used for memory leak/corruption
6508
detection. Added some intelligence to the code that maintains the global
6509
list of allocated memory. The list is now ordered by allocated memory
6510
address, significantly improving performance. When running AcpiExec on
6511
the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6512
on the platform and/or the environment. Note, this performance
6513
enhancement affects the AcpiExec utility only, not the kernel-resident
6514
ACPICA code.
6515
6516
Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6517
the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6518
incorrect table offset reported for invalid opcodes. Report the original
6519
32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6520
6521
Disassembler: Enhanced the -vt option to emit the binary table data in
6522
hex format to assist with debugging.
6523
6524
Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6525
size of file structure. Colin Ian King.
6526
6527
----------------------------------------
6528
13 September 2012. Summary of changes for version 20120913:
6529
6530
6531
1) ACPICA Kernel-resident Subsystem:
6532
6533
ACPI 5.0: Added two new notify types for the Hardware Error Notification
6534
Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6535
and
6536
MCE(6).
6537
6538
Table Manager: Merged/removed duplicate code in the root table resize
6539
functions. One function is external, the other is internal. Lv Zheng,
6540
ACPICA
6541
BZ 846.
6542
6543
Makefiles: Completely removed the obsolete "Linux" makefiles under
6544
acpica/generate/linux. These makefiles are obsolete and have been
6545
replaced
6546
by
6547
the generic unix makefiles under acpica/generate/unix.
6548
6549
Makefiles: Ensure that binary files always copied properly. Minor rule
6550
change
6551
to ensure that the final binary output files are always copied up to the
6552
appropriate binary directory (bin32 or bin64.)
6553
6554
Example Code and Data Size: These are the sizes for the OS-independent
6555
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6556
debug
6557
version of the code includes the debug output trace mechanism and has a
6558
much
6559
larger code and data size.
6560
6561
Previous Release:
6562
Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
6563
Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
6564
Current Release:
6565
Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
6566
Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
6567
6568
6569
2) iASL Compiler/Disassembler and Tools:
6570
6571
Disassembler: Fixed a possible fault during the disassembly of resource
6572
descriptors when a second parse is required because of the invocation of
6573
external control methods within the table. With assistance from
6574
[email protected]. ACPICA BZ 976.
6575
6576
iASL: Fixed a namepath optimization problem. An error can occur if the
6577
parse
6578
node that contains the namepath to be optimized does not have a parent
6579
node
6580
that is a named object. This change fixes the problem.
6581
6582
iASL: Fixed a regression where the AML file is not deleted on errors. The
6583
AML
6584
output file should be deleted if there are any errors during the
6585
compiler.
6586
The
6587
only exception is if the -f (force output) option is used. ACPICA BZ 974.
6588
6589
iASL: Added a feature to automatically increase internal line buffer
6590
sizes.
6591
Via realloc(), automatically increase the internal line buffer sizes as
6592
necessary to support very long source code lines. The current version of
6593
the
6594
preprocessor requires a buffer long enough to contain full source code
6595
lines.
6596
This change increases the line buffer(s) if the input lines go beyond the
6597
current buffer size. This eliminates errors that occurred when a source
6598
code
6599
line was longer than the buffer.
6600
6601
iASL: Fixed a problem with constant folding in method declarations. The
6602
SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6603
if a
6604
Type3 opcode was used.
6605
6606
Debugger: Improved command help support. For incorrect argument count,
6607
display
6608
full help for the command. For help command itself, allow an argument to
6609
specify a command.
6610
6611
Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6612
errors during execution of the suite. Guan Chao.
6613
6614
----------------------------------------
6615
16 August 2012. Summary of changes for version 20120816:
6616
6617
6618
1) ACPICA Kernel-resident Subsystem:
6619
6620
Removed all use of the deprecated _GTS and _BFS predefined methods. The
6621
_GTS
6622
(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6623
deprecated and will probably be removed from the ACPI specification.
6624
Windows
6625
does not invoke them, and reportedly never will. The final nail in the
6626
coffin
6627
is that the ACPI specification states that these methods must be run with
6628
interrupts off, which is not going to happen in a kernel interpreter.
6629
Note:
6630
Linux has removed all use of the methods also. It was discovered that
6631
invoking these functions caused failures on some machines, probably
6632
because
6633
they were never tested since Windows does not call them. Affects two
6634
external
6635
interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6636
ACPICA BZ 969.
6637
6638
Implemented support for complex bit-packed buffers returned from the _PLD
6639
(Physical Location of Device) predefined method. Adds a new external
6640
interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6641
C
6642
structure. Note: C Bitfields cannot be used for this type of predefined
6643
structure since the memory layout of individual bitfields is not defined
6644
by
6645
the C language. In addition, there are endian concerns where a compiler
6646
will
6647
change the bitfield ordering based on the machine type. The new ACPICA
6648
interface eliminates these issues, and should be called after _PLD is
6649
executed. ACPICA BZ 954.
6650
6651
Implemented a change to allow a scope change to root (via "Scope (\)")
6652
during
6653
execution of module-level ASL code (code that is executed at table load
6654
time.) Lin Ming.
6655
6656
Added the Windows8/Server2012 string for the _OSI method. This change
6657
adds
6658
a
6659
new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
6660
2012.
6661
6662
Added header support for the new ACPI tables DBG2 (Debug Port Table Type
6663
2)
6664
and CSRT (Core System Resource Table).
6665
6666
Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6667
names. This simplifies access to the buffers returned by these predefined
6668
names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6669
6670
GPE support: Removed an extraneous parameter from the various low-level
6671
internal GPE functions. Tang Feng.
6672
6673
Removed the linux makefiles from the unix packages. The generate/linux
6674
makefiles are obsolete and have been removed from the unix tarball
6675
release
6676
packages. The replacement makefiles are under generate/unix, and there is
6677
a
6678
top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6679
6680
Updates for Unix makefiles:
6681
1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
6682
2) Update linker flags (move to end of command line) for AcpiExec
6683
utility.
6684
Guan Chao.
6685
6686
Split ACPICA initialization functions to new file, utxfinit.c. Split from
6687
utxface.c to improve modularity and reduce file size.
6688
6689
Example Code and Data Size: These are the sizes for the OS-independent
6690
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6691
debug version of the code includes the debug output trace mechanism and
6692
has a
6693
much larger code and data size.
6694
6695
Previous Release:
6696
Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
6697
Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
6698
Current Release:
6699
Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
6700
Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
6701
6702
6703
2) iASL Compiler/Disassembler and Tools:
6704
6705
iASL: Fixed a problem with constant folding for fixed-length constant
6706
expressions. The constant-folding code was not being invoked for constant
6707
expressions that allow the use of type 3/4/5 opcodes to generate
6708
constants
6709
for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6710
result
6711
in the generation of invalid AML bytecode. ACPICA BZ 970.
6712
6713
iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6714
apparently automatically emit some of the necessary externals. This
6715
change
6716
handles these versions in order to eliminate generation warnings.
6717
6718
Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6719
6720
Disassembler: Add support to decode _PLD buffers. The decoded buffer
6721
appears
6722
within comments in the output file.
6723
6724
Debugger: Fixed a regression with the "Threads" command where
6725
AE_BAD_PARAMETER was always returned.
6726
6727
----------------------------------------
6728
11 July 2012. Summary of changes for version 20120711:
6729
6730
1) ACPICA Kernel-resident Subsystem:
6731
6732
Fixed a possible fault in the return package object repair code. Fixes a
6733
problem that can occur when a lone package object is wrapped with an
6734
outer
6735
package object in order to force conformance to the ACPI specification.
6736
Can
6737
affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6738
_DLM,
6739
_CSD, _PSD, _TSD.
6740
6741
Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6742
PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6743
ARB_DIS bit must be implemented in the host-dependent C3 processor power
6744
state
6745
support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6746
both
6747
Intel and other vendors. (for Intel: ICH4-M and earlier)
6748
6749
This change removes the code to disable/enable bus master arbitration
6750
during
6751
suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6752
causes
6753
resume problems on some machines. The change has been in use for over
6754
seven
6755
years within Linux.
6756
6757
Implemented two new external interfaces to support host-directed dynamic
6758
ACPI
6759
table load and unload. They are intended to simplify the host
6760
implementation
6761
of hot-plug support:
6762
AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6763
AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6764
table.
6765
See the ACPICA reference for additional details. Adds one new file,
6766
components/tables/tbxfload.c
6767
6768
Implemented and deployed two new interfaces for errors and warnings that
6769
are
6770
known to be caused by BIOS/firmware issues:
6771
AcpiBiosError: Prints "ACPI Firmware Error" message.
6772
AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6773
Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6774
table
6775
and FADT errors. Additional deployment to be completed as appropriate in
6776
the
6777
future. The associated conditional macros are ACPI_BIOS_ERROR and
6778
ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6779
ACPICA
6780
BZ
6781
843.
6782
6783
Implicit notify support: ensure that no memory allocation occurs within a
6784
critical region. This fix moves a memory allocation outside of the time
6785
that a
6786
spinlock is held. Fixes issues on systems that do not allow this
6787
behavior.
6788
Jung-uk Kim.
6789
6790
Split exception code utilities and tables into a new file,
6791
utilities/utexcep.c
6792
6793
Example Code and Data Size: These are the sizes for the OS-independent
6794
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6795
debug
6796
version of the code includes the debug output trace mechanism and has a
6797
much
6798
larger code and data size.
6799
6800
Previous Release:
6801
Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
6802
Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
6803
Current Release:
6804
Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
6805
Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
6806
6807
6808
2) iASL Compiler/Disassembler and Tools:
6809
6810
iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6811
of
6812
0. Jung-uk Kim.
6813
6814
Debugger: Enhanced the "tables" command to emit additional information
6815
about
6816
the current set of ACPI tables, including the owner ID and flags decode.
6817
6818
Debugger: Reimplemented the "unload" command to use the new
6819
AcpiUnloadParentTable external interface. This command was disable
6820
previously
6821
due to need for an unload interface.
6822
6823
AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6824
option
6825
will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6826
6827
----------------------------------------
6828
20 June 2012. Summary of changes for version 20120620:
6829
6830
6831
1) ACPICA Kernel-resident Subsystem:
6832
6833
Implemented support to expand the "implicit notify" feature to allow
6834
multiple
6835
devices to be notified by a single GPE. This feature automatically
6836
generates a
6837
runtime device notification in the absence of a BIOS-provided GPE control
6838
method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6839
notify is
6840
provided by ACPICA for Windows compatibility, and is a workaround for
6841
BIOS
6842
AML
6843
code errors. See the description of the AcpiSetupGpeForWake interface in
6844
the
6845
APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6846
6847
Changed some comments and internal function names to simplify and ensure
6848
correctness of the Linux code translation. No functional changes.
6849
6850
Example Code and Data Size: These are the sizes for the OS-independent
6851
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6852
debug
6853
version of the code includes the debug output trace mechanism and has a
6854
much
6855
larger code and data size.
6856
6857
Previous Release:
6858
Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
6859
Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
6860
Current Release:
6861
Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
6862
Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
6863
6864
6865
2) iASL Compiler/Disassembler and Tools:
6866
6867
Disassembler: Added support to emit short, commented descriptions for the
6868
ACPI
6869
predefined names in order to improve the readability of the disassembled
6870
output. ACPICA BZ 959. Changes include:
6871
1) Emit descriptions for all standard predefined names (_INI, _STA,
6872
_PRW,
6873
etc.)
6874
2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6875
3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6876
etc.)
6877
6878
AcpiSrc: Fixed several long-standing Linux code translation issues.
6879
Argument
6880
descriptions in function headers are now translated properly to lower
6881
case
6882
and
6883
underscores. ACPICA BZ 961. Also fixes translation problems such as
6884
these:
6885
(old -> new)
6886
i_aSL -> iASL
6887
00-7_f -> 00-7F
6888
16_k -> 16K
6889
local_fADT -> local_FADT
6890
execute_oSI -> execute_OSI
6891
6892
iASL: Fixed a problem where null bytes were inadvertently emitted into
6893
some
6894
listing files.
6895
6896
iASL: Added the existing debug options to the standard help screen. There
6897
are
6898
no longer two different help screens. ACPICA BZ 957.
6899
6900
AcpiHelp: Fixed some typos in the various predefined name descriptions.
6901
Also
6902
expand some of the descriptions where appropriate.
6903
6904
iASL: Fixed the -ot option (display compile times/statistics). Was not
6905
working
6906
properly for standard output; only worked for the debug file case.
6907
6908
----------------------------------------
6909
18 May 2012. Summary of changes for version 20120518:
6910
6911
6912
1) ACPICA Core Subsystem:
6913
6914
Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6915
defined
6916
to block until asynchronous events such as notifies and GPEs have
6917
completed.
6918
Within ACPICA, it is only called before a notify or GPE handler is
6919
removed/uninstalled. It also may be useful for the host OS within related
6920
drivers such as the Embedded Controller driver. See the ACPICA reference
6921
for
6922
additional information. ACPICA BZ 868.
6923
6924
ACPI Tables: Added a new error message for a possible overflow failure
6925
during
6926
the conversion of FADT 32-bit legacy register addresses to internal
6927
common
6928
64-
6929
bit GAS structure representation. The GAS has a one-byte "bit length"
6930
field,
6931
thus limiting the register length to 255 bits. ACPICA BZ 953.
6932
6933
Example Code and Data Size: These are the sizes for the OS-independent
6934
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6935
debug
6936
version of the code includes the debug output trace mechanism and has a
6937
much
6938
larger code and data size.
6939
6940
Previous Release:
6941
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
6942
Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
6943
Current Release:
6944
Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
6945
Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
6946
6947
6948
2) iASL Compiler/Disassembler and Tools:
6949
6950
iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6951
macro.
6952
This keyword was added late in the ACPI 5.0 release cycle and was not
6953
implemented until now.
6954
6955
Disassembler: Added support for Operation Region externals. Adds missing
6956
support for operation regions that are defined in another table, and
6957
referenced locally via a Field or BankField ASL operator. Now generates
6958
the
6959
correct External statement.
6960
6961
Disassembler: Several additional fixes for the External() statement
6962
generation
6963
related to some ASL operators. Also, order the External() statements
6964
alphabetically in the disassembler output. Fixes the External()
6965
generation
6966
for
6967
the Create* field, Alias, and Scope operators:
6968
1) Create* buffer field operators - fix type mismatch warning on
6969
disassembly
6970
2) Alias - implement missing External support
6971
3) Scope - fix to make sure all necessary externals are emitted.
6972
6973
iASL: Improved pathname support. For include files, merge the prefix
6974
pathname
6975
with the file pathname and eliminate unnecessary components. Convert
6976
backslashes in all pathnames to forward slashes, for readability. Include
6977
file
6978
pathname changes affect both #include and Include() type operators.
6979
6980
iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6981
end
6982
of a valid line by inserting a newline and then returning the EOF during
6983
the
6984
next call to GetNextLine. Prevents the line from being ignored due to EOF
6985
condition.
6986
6987
iASL: Implemented some changes to enhance the IDE support (-vi option.)
6988
Error
6989
and Warning messages are now correctly recognized for both the source
6990
code
6991
browser and the global error and warning counts.
6992
6993
----------------------------------------
6994
20 April 2012. Summary of changes for version 20120420:
6995
6996
6997
1) ACPICA Core Subsystem:
6998
6999
Implemented support for multiple notify handlers. This change adds
7000
support
7001
to
7002
allow multiple system and device notify handlers on Device, Thermal Zone,
7003
and
7004
Processor objects. This can simplify the host OS notification
7005
implementation.
7006
Also re-worked and restructured the entire notify support code to
7007
simplify
7008
handler installation, handler removal, notify event queuing, and notify
7009
dispatch to handler(s). Note: there can still only be two global notify
7010
handlers - one for system notifies and one for device notifies. There are
7011
no
7012
changes to the existing handler install/remove interfaces. Lin Ming, Bob
7013
Moore, Rafael Wysocki.
7014
7015
Fixed a regression in the package repair code where the object reference
7016
count was calculated incorrectly. Regression was introduced in the commit
7017
"Support to add Package wrappers".
7018
7019
Fixed a couple possible memory leaks in the AML parser, in the error
7020
recovery
7021
path. Jesper Juhl, Lin Ming.
7022
7023
Example Code and Data Size: These are the sizes for the OS-independent
7024
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7025
debug version of the code includes the debug output trace mechanism and
7026
has a
7027
much larger code and data size.
7028
7029
Previous Release:
7030
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
7031
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
7032
Current Release:
7033
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
7034
Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
7035
7036
7037
2) iASL Compiler/Disassembler and Tools:
7038
7039
iASL: Fixed a problem with the resource descriptor support where the
7040
length
7041
of the StartDependentFn and StartDependentFnNoPrio descriptors were not
7042
included in cumulative descriptor offset, resulting in incorrect values
7043
for
7044
resource tags within resource descriptors appearing after a
7045
StartDependent*
7046
descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
7047
7048
iASL and Preprocessor: Implemented full support for the #line directive
7049
to
7050
correctly track original source file line numbers through the .i
7051
preprocessor
7052
output file - for error and warning messages.
7053
7054
iASL: Expand the allowable byte constants for address space IDs.
7055
Previously,
7056
the allowable range was 0x80-0xFF (user-defined spaces), now the range is
7057
0x0A-0xFF to allow for custom and new IDs without changing the compiler.
7058
7059
iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
7060
7061
iASL: Add option to completely disable the preprocessor (-Pn).
7062
7063
iASL: Now emit all error/warning messages to standard error (stderr) by
7064
default (instead of the previous stdout).
7065
7066
ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
7067
Update
7068
for resource descriptor offset fix above. Update/cleanup error output
7069
routines. Enable and send iASL errors/warnings to an error logfile
7070
(error.txt). Send all other iASL output to a logfile (compiler.txt).
7071
Fixed
7072
several extraneous "unrecognized operator" messages.
7073
7074
----------------------------------------
7075
20 March 2012. Summary of changes for version 20120320:
7076
7077
7078
1) ACPICA Core Subsystem:
7079
7080
Enhanced the sleep/wake interfaces to optionally execute the _GTS method
7081
(Going To Sleep) and the _BFS method (Back From Sleep). Windows
7082
apparently
7083
does not execute these methods, and therefore these methods are often
7084
untested. It has been seen on some systems where the execution of these
7085
methods causes errors and also prevents the machine from entering S5. It
7086
is
7087
therefore suggested that host operating systems do not execute these
7088
methods
7089
by default. In the future, perhaps these methods can be optionally
7090
executed
7091
based on the age of the system and/or what is the newest version of
7092
Windows
7093
that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
7094
and
7095
AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
7096
Ming.
7097
7098
Fixed a problem where the length of the local/common FADT was set too
7099
early.
7100
The local FADT table length cannot be set to the common length until the
7101
original length has been examined. There is code that checks the table
7102
length
7103
and sets various fields appropriately. This can affect older machines
7104
with
7105
early FADT versions. For example, this can cause inadvertent writes to
7106
the
7107
CST_CNT register. Julian Anastasov.
7108
7109
Fixed a mapping issue related to a physical table override. Use the
7110
deferred
7111
mapping mechanism for tables loaded via the physical override OSL
7112
interface.
7113
This allows for early mapping before the virtual memory manager is
7114
available.
7115
Thomas Renninger, Bob Moore.
7116
7117
Enhanced the automatic return-object repair code: Repair a common problem
7118
with
7119
predefined methods that are defined to return a variable-length Package
7120
of
7121
sub-objects. If there is only one sub-object, some BIOS ASL code
7122
mistakenly
7123
simply returns the single object instead of a Package with one sub-
7124
object.
7125
This new support will repair this error by wrapping a Package object
7126
around
7127
the original object, creating the correct and expected Package with one
7128
sub-
7129
object. Names that can be repaired in this manner include: _ALR, _CSD,
7130
_HPX,
7131
_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
7132
939.
7133
7134
Changed the exception code returned for invalid ACPI paths passed as
7135
parameters to external interfaces such as AcpiEvaluateObject. Was
7136
AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
7137
7138
Example Code and Data Size: These are the sizes for the OS-independent
7139
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7140
debug
7141
version of the code includes the debug output trace mechanism and has a
7142
much
7143
larger code and data size.
7144
7145
Previous Release:
7146
Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
7147
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
7148
Current Release:
7149
Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
7150
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
7151
7152
7153
2) iASL Compiler/Disassembler and Tools:
7154
7155
iASL: Added the infrastructure and initial implementation of a integrated
7156
C-
7157
like preprocessor. This will simplify BIOS development process by
7158
eliminating
7159
the need for a separate preprocessing step during builds. On Windows, it
7160
also
7161
eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
7162
features including full #define() macro support are still under
7163
development.
7164
These preprocessor directives are supported:
7165
#define
7166
#elif
7167
#else
7168
#endif
7169
#error
7170
#if
7171
#ifdef
7172
#ifndef
7173
#include
7174
#pragma message
7175
#undef
7176
#warning
7177
In addition, these new command line options are supported:
7178
-D <symbol> Define symbol for preprocessor use
7179
-li Create preprocessed output file (*.i)
7180
-P Preprocess only and create preprocessor output file (*.i)
7181
7182
Table Compiler: Fixed a problem where the equals operator within an
7183
expression
7184
did not work properly.
7185
7186
Updated iASL to use the current versions of Bison/Flex. Updated the
7187
Windows
7188
project file to invoke these tools from the standard location. ACPICA BZ
7189
904.
7190
Versions supported:
7191
Flex for Windows: V2.5.4
7192
Bison for Windows: V2.4.1
7193
7194
----------------------------------------
7195
15 February 2012. Summary of changes for version 20120215:
7196
7197
7198
1) ACPICA Core Subsystem:
7199
7200
There have been some major changes to the sleep/wake support code, as
7201
described below (a - e).
7202
7203
a) The AcpiLeaveSleepState has been split into two interfaces, similar to
7204
AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
7205
AcpiLeaveSleepStatePrep. This allows the host to perform actions between
7206
the
7207
time the _BFS method is called and the _WAK method is called. NOTE: all
7208
hosts
7209
must update their wake/resume code or else sleep/wake will not work
7210
properly.
7211
Rafael Wysocki.
7212
7213
b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
7214
_WAK
7215
method. Some machines require that the GPEs are enabled before the _WAK
7216
method
7217
is executed. Thomas Renninger.
7218
7219
c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
7220
bit.
7221
Some BIOS code assumes that WAK_STS will be cleared on resume and use it
7222
to
7223
determine whether the system is rebooting or resuming. Matthew Garrett.
7224
7225
d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
7226
Sleep) to
7227
match the ACPI specification requirement. Rafael Wysocki.
7228
7229
e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
7230
registers within the V5 FADT. This support adds two new files:
7231
hardware/hwesleep.c implements the support for the new registers. Moved
7232
all
7233
sleep/wake external interfaces to hardware/hwxfsleep.c.
7234
7235
7236
Added a new OSL interface for ACPI table overrides,
7237
AcpiOsPhysicalTableOverride. This interface allows the host to override a
7238
table via a physical address, instead of the logical address required by
7239
AcpiOsTableOverride. This simplifies the host implementation. Initial
7240
implementation by Thomas Renninger. The ACPICA implementation creates a
7241
single
7242
shared function for table overrides that attempts both a logical and a
7243
physical override.
7244
7245
Expanded the OSL memory read/write interfaces to 64-bit data
7246
(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
7247
transfer support for GAS register structures passed to AcpiRead and
7248
AcpiWrite.
7249
7250
Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
7251
custom
7252
build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
7253
model.
7254
See the ACPICA reference for details. ACPICA BZ 942. This option removes
7255
about
7256
10% of the code and 5% of the static data, and the following hardware
7257
ACPI
7258
features become unavailable:
7259
PM Event and Control registers
7260
SCI interrupt (and handler)
7261
Fixed Events
7262
General Purpose Events (GPEs)
7263
Global Lock
7264
ACPI PM timer
7265
7266
Updated the unix tarball directory structure to match the ACPICA git
7267
source
7268
tree. This ensures that the generic unix makefiles work properly (in
7269
generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
7270
867.
7271
7272
Updated the return value of the _REV predefined method to integer value 5
7273
to
7274
reflect ACPI 5.0 support.
7275
7276
Moved the external ACPI PM timer interface prototypes to the public
7277
acpixf.h
7278
file where they belong.
7279
7280
Example Code and Data Size: These are the sizes for the OS-independent
7281
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7282
debug
7283
version of the code includes the debug output trace mechanism and has a
7284
much
7285
larger code and data size.
7286
7287
Previous Release:
7288
Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
7289
Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
7290
Current Release:
7291
Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
7292
Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
7293
7294
7295
2) iASL Compiler/Disassembler and Tools:
7296
7297
Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
7298
descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
7299
incorrectly displayed.
7300
7301
AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
7302
specification.
7303
7304
----------------------------------------
7305
11 January 2012. Summary of changes for version 20120111:
7306
7307
7308
1) ACPICA Core Subsystem:
7309
7310
Implemented a new mechanism to allow host device drivers to check for
7311
address
7312
range conflicts with ACPI Operation Regions. Both SystemMemory and
7313
SystemIO
7314
address spaces are supported. A new external interface,
7315
AcpiCheckAddressRange,
7316
allows drivers to check an address range against the ACPI namespace. See
7317
the
7318
ACPICA reference for additional details. Adds one new file,
7319
utilities/utaddress.c. Lin Ming, Bob Moore.
7320
7321
Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
7322
Control
7323
and
7324
Status registers, update the ACPI 5.0 flags, and update internal data
7325
structures to handle an FADT larger than 256 bytes. The size of the ACPI
7326
5.0
7327
FADT is 268 bytes.
7328
7329
Updated all ACPICA copyrights and signons to 2012. Added the 2012
7330
copyright to
7331
all module headers and signons, including the standard Linux header. This
7332
affects virtually every file in the ACPICA core subsystem, iASL compiler,
7333
and
7334
all ACPICA utilities.
7335
7336
Example Code and Data Size: These are the sizes for the OS-independent
7337
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7338
debug
7339
version of the code includes the debug output trace mechanism and has a
7340
much
7341
larger code and data size.
7342
7343
Previous Release:
7344
Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
7345
Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
7346
Current Release:
7347
Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
7348
Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
7349
7350
7351
2) iASL Compiler/Disassembler and Tools:
7352
7353
Disassembler: fixed a problem with the automatic resource tag generation
7354
support. Fixes a problem where the resource tags are inadvertently not
7355
constructed if the table being disassembled contains external references
7356
to
7357
control methods. Moved the actual construction of the tags to after the
7358
final
7359
namespace is constructed (after 2nd parse is invoked due to external
7360
control
7361
method references.) ACPICA BZ 941.
7362
7363
Table Compiler: Make all "generic" operators caseless. These are the
7364
operators
7365
like UINT8, String, etc. Making these caseless improves ease-of-use.
7366
ACPICA BZ
7367
934.
7368
7369
----------------------------------------
7370
23 November 2011. Summary of changes for version 20111123:
7371
7372
0) ACPI 5.0 Support:
7373
7374
This release contains full support for the ACPI 5.0 specification, as
7375
summarized below.
7376
7377
Reduced Hardware Support:
7378
-------------------------
7379
7380
This support allows for ACPI systems without the usual ACPI hardware.
7381
This
7382
support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
7383
will
7384
not attempt to initialize or use any of the usual ACPI hardware. Note,
7385
when
7386
this flag is set, all of the following ACPI hardware is assumed to be not
7387
present and is not initialized or accessed:
7388
7389
General Purpose Events (GPEs)
7390
Fixed Events (PM1a/PM1b and PM Control)
7391
Power Management Timer and Console Buttons (power/sleep)
7392
Real-time Clock Alarm
7393
Global Lock
7394
System Control Interrupt (SCI)
7395
The FACS is assumed to be non-existent
7396
7397
ACPI Tables:
7398
------------
7399
7400
All new tables and updates to existing tables are fully supported in the
7401
ACPICA headers (for use by device drivers), the disassembler, and the
7402
iASL
7403
Data Table Compiler. ACPI 5.0 defines these new tables:
7404
7405
BGRT /* Boot Graphics Resource Table */
7406
DRTM /* Dynamic Root of Trust for Measurement table */
7407
FPDT /* Firmware Performance Data Table */
7408
GTDT /* Generic Timer Description Table */
7409
MPST /* Memory Power State Table */
7410
PCCT /* Platform Communications Channel Table */
7411
PMTT /* Platform Memory Topology Table */
7412
RASF /* RAS Feature table */
7413
7414
Operation Regions/SpaceIDs:
7415
---------------------------
7416
7417
All new operation regions are fully supported by the iASL compiler, the
7418
disassembler, and the ACPICA runtime code (for dispatch to region
7419
handlers.)
7420
The new operation region Space IDs are:
7421
7422
GeneralPurposeIo
7423
GenericSerialBus
7424
7425
Resource Descriptors:
7426
---------------------
7427
7428
All new ASL resource descriptors are fully supported by the iASL
7429
compiler,
7430
the
7431
ASL/AML disassembler, and the ACPICA runtime Resource Manager code
7432
(including
7433
all new predefined resource tags). New descriptors are:
7434
7435
FixedDma
7436
GpioIo
7437
GpioInt
7438
I2cSerialBus
7439
SpiSerialBus
7440
UartSerialBus
7441
7442
ASL/AML Operators, New and Modified:
7443
------------------------------------
7444
7445
One new operator is added, the Connection operator, which is used to
7446
associate
7447
a GeneralPurposeIo or GenericSerialBus resource descriptor with
7448
individual
7449
field objects within an operation region. Several new protocols are
7450
associated
7451
with the AccessAs operator. All are fully supported by the iASL compiler,
7452
disassembler, and runtime ACPICA AML interpreter:
7453
7454
Connection // Declare Field Connection
7455
attributes
7456
AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
7457
AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
7458
Protocol
7459
AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
7460
RawDataBuffer // Data type for Vendor Data
7461
fields
7462
7463
Predefined ASL/AML Objects:
7464
---------------------------
7465
7466
All new predefined objects/control-methods are supported by the iASL
7467
compiler
7468
and the ACPICA runtime validation/repair (arguments and return values.)
7469
New
7470
predefined names include the following:
7471
7472
Standard Predefined Names (Objects or Control Methods):
7473
_AEI, _CLS, _CPC, _CWS, _DEP,
7474
_DLM, _EVT, _GCP, _CRT, _GWS,
7475
_HRV, _PRE, _PSE, _SRT, _SUB.
7476
7477
Resource Tags (Names used to access individual fields within resource
7478
descriptors):
7479
_DBT, _DPL, _DRS, _END, _FLC,
7480
_IOR, _LIN, _MOD, _PAR, _PHA,
7481
_PIN, _PPI, _POL, _RXL, _SLV,
7482
_SPE, _STB, _TXL, _VEN.
7483
7484
ACPICA External Interfaces:
7485
---------------------------
7486
7487
Several new interfaces have been defined for use by ACPI-related device
7488
drivers and other host OS services:
7489
7490
AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
7491
to
7492
acquire and release AML mutexes that are defined in the DSDT/SSDT tables
7493
provided by the BIOS. They are intended to be used in conjunction with
7494
the
7495
ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
7496
mutual exclusion with the AML code/interpreter.
7497
7498
AcpiGetEventResources: Returns the (formatted) resource descriptors as
7499
defined
7500
by the ACPI 5.0 _AEI object (ACPI Event Information). This object
7501
provides
7502
resource descriptors associated with hardware-reduced platform events,
7503
similar
7504
to the AcpiGetCurrentResources interface.
7505
7506
Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7507
operation regions, information about the Connection() object and any
7508
optional
7509
length information is passed to the region handler within the Context
7510
parameter.
7511
7512
AcpiBufferToResource: This interface converts a raw AML buffer containing
7513
a
7514
resource template or resource descriptor to the ACPI_RESOURCE internal
7515
format
7516
suitable for use by device drivers. Can be used by an operation region
7517
handler
7518
to convert the Connection() buffer object into a ACPI_RESOURCE.
7519
7520
Miscellaneous/Tools/TestSuites:
7521
-------------------------------
7522
7523
Support for extended _HID names (Four alpha characters instead of three).
7524
Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7525
Support for ACPI 5.0 features in the ASLTS test suite.
7526
Fully updated documentation (ACPICA and iASL reference documents.)
7527
7528
ACPI Table Definition Language:
7529
-------------------------------
7530
7531
Support for this language was implemented and released as a subsystem of
7532
the
7533
iASL compiler in 2010. (See the iASL compiler User Guide.)
7534
7535
7536
Non-ACPI 5.0 changes for this release:
7537
--------------------------------------
7538
7539
1) ACPICA Core Subsystem:
7540
7541
Fix a problem with operation region declarations where a failure can
7542
occur
7543
if
7544
the region name and an argument that evaluates to an object (such as the
7545
region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7546
937.
7547
7548
Do not abort an ACPI table load if an invalid space ID is found within.
7549
This
7550
will be caught later if the offending method is executed. ACPICA BZ 925.
7551
7552
Fixed an issue with the FFixedHW space ID where the ID was not always
7553
recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7554
7555
Fixed a problem with the 32-bit generation of the unix-specific OSL
7556
(osunixxf.c). Lin Ming, ACPICA BZ 936.
7557
7558
Several changes made to enable generation with the GCC 4.6 compiler.
7559
ACPICA BZ
7560
935.
7561
7562
New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7563
Index/Bank
7564
field registers out-of-range.
7565
7566
2) iASL Compiler/Disassembler and Tools:
7567
7568
iASL: Implemented the __PATH__ operator, which returns the full pathname
7569
of
7570
the current source file.
7571
7572
AcpiHelp: Automatically display expanded keyword information for all ASL
7573
operators.
7574
7575
Debugger: Add "Template" command to disassemble/dump resource template
7576
buffers.
7577
7578
Added a new master script to generate and execute the ASLTS test suite.
7579
Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7580
7581
iASL: Fix problem with listing generation during processing of the
7582
Switch()
7583
operator where AML listing was disabled until the entire Switch block was
7584
completed.
7585
7586
iASL: Improve support for semicolon statement terminators. Fix "invalid
7587
character" message for some cases when the semicolon is used. Semicolons
7588
are
7589
now allowed after every <Term> grammar element. ACPICA BZ 927.
7590
7591
iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7592
923.
7593
7594
Disassembler: Fix problem with disassembly of the DataTableRegion
7595
operator
7596
where an inadvertent "Unhandled deferred opcode" message could be
7597
generated.
7598
7599
3) Example Code and Data Size
7600
7601
These are the sizes for the OS-independent acpica.lib produced by the
7602
Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7603
includes the debug output trace mechanism and has a much larger code and
7604
data
7605
size.
7606
7607
Previous Release:
7608
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
7609
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
7610
Current Release:
7611
Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
7612
Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
7613
7614
----------------------------------------
7615
22 September 2011. Summary of changes for version 20110922:
7616
7617
0) ACPI 5.0 News:
7618
7619
Support for ACPI 5.0 in ACPICA has been underway for several months and
7620
will
7621
be released at the same time that ACPI 5.0 is officially released.
7622
7623
The ACPI 5.0 specification is on track for release in the next few
7624
months.
7625
7626
1) ACPICA Core Subsystem:
7627
7628
Fixed a problem where the maximum sleep time for the Sleep() operator was
7629
intended to be limited to two seconds, but was inadvertently limited to
7630
20
7631
seconds instead.
7632
7633
Linux and Unix makefiles: Added header file dependencies to ensure
7634
correct
7635
generation of ACPICA core code and utilities. Also simplified the
7636
makefiles
7637
considerably through the use of the vpath variable to specify search
7638
paths.
7639
ACPICA BZ 924.
7640
7641
2) iASL Compiler/Disassembler and Tools:
7642
7643
iASL: Implemented support to check the access length for all fields
7644
created to
7645
access named Resource Descriptor fields. For example, if a resource field
7646
is
7647
defined to be two bits, a warning is issued if a CreateXxxxField() is
7648
used
7649
with an incorrect bit length. This is implemented for all current
7650
resource
7651
descriptor names. ACPICA BZ 930.
7652
7653
Disassembler: Fixed a byte ordering problem with the output of 24-bit and
7654
56-
7655
bit integers.
7656
7657
iASL: Fixed a couple of issues associated with variable-length package
7658
objects. 1) properly handle constants like One, Ones, Zero -- do not make
7659
a
7660
VAR_PACKAGE when these are used as a package length. 2) Allow the
7661
VAR_PACKAGE
7662
opcode (in addition to PACKAGE) when validating object types for
7663
predefined
7664
names.
7665
7666
iASL: Emit statistics for all output files (instead of just the ASL input
7667
and
7668
AML output). Includes listings, hex files, etc.
7669
7670
iASL: Added -G option to the table compiler to allow the compilation of
7671
custom
7672
ACPI tables. The only part of a table that is required is the standard
7673
36-
7674
byte
7675
ACPI header.
7676
7677
AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7678
headers),
7679
which also adds correct 64-bit support. Also, now all output filenames
7680
are
7681
completely lower case.
7682
7683
AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7684
loading table files. A warning is issued for any such tables. The only
7685
exception is an FADT. This also fixes a possible fault when attempting to
7686
load
7687
non-AML tables. ACPICA BZ 932.
7688
7689
AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7690
a
7691
missing table terminator could cause a fault when using the -p option.
7692
7693
AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7694
statistics.
7695
7696
3) Example Code and Data Size
7697
7698
These are the sizes for the OS-independent acpica.lib produced by the
7699
Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7700
includes the debug output trace mechanism and has a much larger code and
7701
data
7702
size.
7703
7704
Previous Release (VC 9.0):
7705
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
7706
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
7707
Current Release (VC 9.0):
7708
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
7709
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
7710
7711
7712
----------------------------------------
7713
23 June 2011. Summary of changes for version 20110623:
7714
7715
1) ACPI CA Core Subsystem:
7716
7717
Updated the predefined name repair mechanism to not attempt repair of a
7718
_TSS
7719
return object if a _PSS object is present. We can only sort the _TSS
7720
return
7721
package if there is no _PSS within the same scope. This is because if
7722
_PSS
7723
is
7724
present, the ACPI specification dictates that the _TSS Power Dissipation
7725
field
7726
is to be ignored, and therefore some BIOSs leave garbage values in the
7727
_TSS
7728
Power field(s). In this case, it is best to just return the _TSS package
7729
as-
7730
is. Reported by, and fixed with assistance from Fenghua Yu.
7731
7732
Added an option to globally disable the control method return value
7733
validation
7734
and repair. This runtime option can be used to disable return value
7735
repair
7736
if
7737
this is causing a problem on a particular machine. Also added an option
7738
to
7739
AcpiExec (-dr) to set this disable flag.
7740
7741
All makefiles and project files: Major changes to improve generation of
7742
ACPICA
7743
tools. ACPICA BZ 912:
7744
Reduce default optimization levels to improve compatibility
7745
For Linux, add strict-aliasing=0 for gcc 4
7746
Cleanup and simplify use of command line defines
7747
Cleanup multithread library support
7748
Improve usage messages
7749
7750
Linux-specific header: update handling of THREAD_ID and pthread. For the
7751
32-
7752
bit case, improve casting to eliminate possible warnings, especially with
7753
the
7754
acpica tools.
7755
7756
Example Code and Data Size: These are the sizes for the OS-independent
7757
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7758
debug
7759
version of the code includes the debug output trace mechanism and has a
7760
much
7761
larger code and data size.
7762
7763
Previous Release (VC 9.0):
7764
Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
7765
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
7766
Current Release (VC 9.0):
7767
Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
7768
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
7769
7770
2) iASL Compiler/Disassembler and Tools:
7771
7772
With this release, a new utility named "acpihelp" has been added to the
7773
ACPICA
7774
package. This utility summarizes the ACPI specification chapters for the
7775
ASL
7776
and AML languages. It generates under Linux/Unix as well as Windows, and
7777
provides the following functionality:
7778
Find/display ASL operator(s) -- with description and syntax.
7779
Find/display ASL keyword(s) -- with exact spelling and descriptions.
7780
Find/display ACPI predefined name(s) -- with description, number
7781
of arguments, and the return value data type.
7782
Find/display AML opcode name(s) -- with opcode, arguments, and
7783
grammar.
7784
Decode/display AML opcode -- with opcode name, arguments, and
7785
grammar.
7786
7787
Service Layers: Make multi-thread support configurable. Conditionally
7788
compile
7789
the multi-thread support so that threading libraries will not be linked
7790
if
7791
not
7792
necessary. The only tool that requires multi-thread support is AcpiExec.
7793
7794
iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7795
of
7796
Bison appear to want the interface to yyerror to be a const char * (or at
7797
least this is a problem when generating iASL on some systems.) ACPICA BZ
7798
923
7799
Pierre Lejeune.
7800
7801
Tools: Fix for systems where O_BINARY is not defined. Only used for
7802
Windows
7803
versions of the tools.
7804
7805
----------------------------------------
7806
27 May 2011. Summary of changes for version 20110527:
7807
7808
1) ACPI CA Core Subsystem:
7809
7810
ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7811
table
7812
signature. Now, only allow SSDT, OEMx, and a null signature. History:
7813
1) Originally, we checked the table signature for "SSDT" or "PSDT".
7814
(PSDT is now obsolete.)
7815
2) We added support for OEMx tables, signature "OEM" plus a fourth
7816
"don't care" character.
7817
3) Valid tables were encountered with a null signature, so we just
7818
gave up on validating the signature, (05/2008).
7819
4) We encountered non-AML tables such as the MADT, which caused
7820
interpreter errors and kernel faults. So now, we once again allow
7821
only SSDT, OEMx, and now, also a null signature. (05/2011).
7822
7823
Added the missing _TDL predefined name to the global name list in order
7824
to
7825
enable validation. Affects both the core ACPICA code and the iASL
7826
compiler.
7827
7828
Example Code and Data Size: These are the sizes for the OS-independent
7829
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7830
debug
7831
version of the code includes the debug output trace mechanism and has a
7832
much
7833
larger code and data size.
7834
7835
Previous Release (VC 9.0):
7836
Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
7837
Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
7838
Current Release (VC 9.0):
7839
Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
7840
Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
7841
7842
2) iASL Compiler/Disassembler and Tools:
7843
7844
Debugger/AcpiExec: Implemented support for "complex" method arguments on
7845
the
7846
debugger command line. This adds support beyond simple integers --
7847
including
7848
Strings, Buffers, and Packages. Includes support for nested packages.
7849
Increased the default command line buffer size to accommodate these
7850
arguments.
7851
See the ACPICA reference for details and syntax. ACPICA BZ 917.
7852
7853
Debugger/AcpiExec: Implemented support for "default" method arguments for
7854
the
7855
Execute/Debug command. Now, the debugger will always invoke a control
7856
method
7857
with the required number of arguments -- even if the command line
7858
specifies
7859
none or insufficient arguments. It uses default integer values for any
7860
missing
7861
arguments. Also fixes a bug where only six method arguments maximum were
7862
supported instead of the required seven.
7863
7864
Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7865
and
7866
also return status in order to prevent buffer overruns. See the ACPICA
7867
reference for details and syntax. ACPICA BZ 921
7868
7869
iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7870
makefiles to simplify support for the two different but similar parser
7871
generators, bison and yacc.
7872
7873
Updated the generic unix makefile for gcc 4. The default gcc version is
7874
now
7875
expected to be 4 or greater, since options specific to gcc 4 are used.
7876
7877
----------------------------------------
7878
13 April 2011. Summary of changes for version 20110413:
7879
7880
1) ACPI CA Core Subsystem:
7881
7882
Implemented support to execute a so-called "orphan" _REG method under the
7883
EC
7884
device. This change will force the execution of a _REG method underneath
7885
the
7886
EC
7887
device even if there is no corresponding operation region of type
7888
EmbeddedControl. Fixes a problem seen on some machines and apparently is
7889
compatible with Windows behavior. ACPICA BZ 875.
7890
7891
Added more predefined methods that are eligible for automatic NULL
7892
package
7893
element removal. This change adds another group of predefined names to
7894
the
7895
list
7896
of names that can be repaired by having NULL package elements dynamically
7897
removed. This group are those methods that return a single variable-
7898
length
7899
package containing simple data types such as integers, buffers, strings.
7900
This
7901
includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7902
_PSL,
7903
_Sx,
7904
and _TZD. ACPICA BZ 914.
7905
7906
Split and segregated all internal global lock functions to a new file,
7907
evglock.c.
7908
7909
Updated internal address SpaceID for DataTable regions. Moved this
7910
internal
7911
space
7912
id in preparation for ACPI 5.0 changes that will include some new space
7913
IDs.
7914
This
7915
change should not affect user/host code.
7916
7917
Example Code and Data Size: These are the sizes for the OS-independent
7918
acpica.lib
7919
produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7920
version of
7921
the code includes the debug output trace mechanism and has a much larger
7922
code
7923
and
7924
data size.
7925
7926
Previous Release (VC 9.0):
7927
Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
7928
Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
7929
Current Release (VC 9.0):
7930
Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
7931
Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
7932
7933
2) iASL Compiler/Disassembler and Tools:
7934
7935
iASL/DTC: Major update for new grammar features. Allow generic data types
7936
in
7937
custom ACPI tables. Field names are now optional. Any line can be split
7938
to
7939
multiple lines using the continuation char (\). Large buffers now use
7940
line-
7941
continuation character(s) and no colon on the continuation lines. See the
7942
grammar
7943
update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7944
Moore.
7945
7946
iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7947
statements.
7948
Since the parser stuffs a "zero" as the return value for these statements
7949
(due
7950
to
7951
the underlying AML grammar), they were seen as "return with value" by the
7952
iASL
7953
semantic checking. They are now seen correctly as "null" return
7954
statements.
7955
7956
iASL: Check if a_REG declaration has a corresponding Operation Region.
7957
Adds a
7958
check for each _REG to ensure that there is in fact a corresponding
7959
operation
7960
region declaration in the same scope. If not, the _REG method is not very
7961
useful
7962
since it probably won't be executed. ACPICA BZ 915.
7963
7964
iASL/DTC: Finish support for expression evaluation. Added a new
7965
expression
7966
parser
7967
that implements c-style operator precedence and parenthesization. ACPICA
7968
bugzilla
7969
908.
7970
7971
Disassembler/DTC: Remove support for () and <> style comments in data
7972
tables.
7973
Now
7974
that DTC has full expression support, we don't want to have comment
7975
strings
7976
that
7977
start with a parentheses or a less-than symbol. Now, only the standard /*
7978
and
7979
//
7980
comments are supported, as well as the bracket [] comments.
7981
7982
AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7983
"unusual"
7984
headers in the acpidump file. Update the header validation to support
7985
these
7986
tables. Problem introduced in previous AcpiXtract version in the change
7987
to
7988
support "wrong checksum" error messages emitted by acpidump utility.
7989
7990
iASL: Add a * option to generate all template files (as a synonym for
7991
ALL)
7992
as
7993
in
7994
"iasl -T *" or "iasl -T ALL".
7995
7996
iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7997
completely
7998
abort the compiler on "fatal" errors, simply should abort the current
7999
compile.
8000
This allows multiple compiles with a single (possibly wildcard) compiler
8001
invocation.
8002
8003
----------------------------------------
8004
16 March 2011. Summary of changes for version 20110316:
8005
8006
1) ACPI CA Core Subsystem:
8007
8008
Fixed a problem caused by a _PRW method appearing at the namespace root
8009
scope
8010
during the setup of wake GPEs. A fault could occur if a _PRW directly
8011
under
8012
the
8013
root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
8014
8015
Implemented support for "spurious" Global Lock interrupts. On some
8016
systems, a
8017
global lock interrupt can occur without the pending flag being set. Upon
8018
a
8019
GL
8020
interrupt, we now ensure that a thread is actually waiting for the lock
8021
before
8022
signaling GL availability. Rafael Wysocki, Bob Moore.
8023
8024
Example Code and Data Size: These are the sizes for the OS-independent
8025
acpica.lib
8026
produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
8027
version of
8028
the code includes the debug output trace mechanism and has a much larger
8029
code
8030
and
8031
data size.
8032
8033
Previous Release (VC 9.0):
8034
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
8035
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
8036
Current Release (VC 9.0):
8037
Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
8038
Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
8039
8040
2) iASL Compiler/Disassembler and Tools:
8041
8042
Implemented full support for the "SLIC" ACPI table. Includes support in
8043
the
8044
header files, disassembler, table compiler, and template generator. Bob
8045
Moore,
8046
Lin Ming.
8047
8048
AcpiXtract: Correctly handle embedded comments and messages from
8049
AcpiDump.
8050
Apparently some or all versions of acpidump will occasionally emit a
8051
comment
8052
like
8053
"Wrong checksum", etc., into the dump file. This was causing problems for
8054
AcpiXtract. ACPICA BZ 905.
8055
8056
iASL: Fix the Linux makefile by removing an inadvertent double file
8057
inclusion.
8058
ACPICA BZ 913.
8059
8060
AcpiExec: Update installation of operation region handlers. Install one
8061
handler
8062
for a user-defined address space. This is used by the ASL test suite
8063
(ASLTS).
8064
8065
----------------------------------------
8066
11 February 2011. Summary of changes for version 20110211:
8067
8068
1) ACPI CA Core Subsystem:
8069
8070
Added a mechanism to defer _REG methods for some early-installed
8071
handlers.
8072
Most user handlers should be installed before call to
8073
AcpiEnableSubsystem.
8074
However, Event handlers and region handlers should be installed after
8075
AcpiInitializeObjects. Override handlers for the "default" regions should
8076
be
8077
installed early, however. This change executes all _REG methods for the
8078
default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
8079
chicken/egg issues between them. ACPICA BZ 848.
8080
8081
Implemented an optimization for GPE detection. This optimization will
8082
simply
8083
ignore GPE registers that contain no enabled GPEs -- there is no need to
8084
read the register since this information is available internally. This
8085
becomes more important on machines with a large GPE space. ACPICA
8086
bugzilla
8087
884. Lin Ming. Suggestion from Joe Liu.
8088
8089
Removed all use of the highly unreliable FADT revision field. The
8090
revision
8091
number in the FADT has been found to be completely unreliable and cannot
8092
be
8093
trusted. Only the actual table length can be used to infer the version.
8094
This
8095
change updates the ACPICA core and the disassembler so that both no
8096
longer
8097
even look at the FADT version and instead depend solely upon the FADT
8098
length.
8099
8100
Fix an unresolved name issue for the no-debug and no-error-message source
8101
generation cases. The _AcpiModuleName was left undefined in these cases,
8102
but
8103
it is actually needed as a parameter to some interfaces. Define
8104
_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
8105
8106
Split several large files (makefiles and project files updated)
8107
utglobal.c -> utdecode.c
8108
dbcomds.c -> dbmethod.c dbnames.c
8109
dsopcode.c -> dsargs.c dscontrol.c
8110
dsload.c -> dsload2.c
8111
aslanalyze.c -> aslbtypes.c aslwalks.c
8112
8113
Example Code and Data Size: These are the sizes for the OS-independent
8114
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8115
debug version of the code includes the debug output trace mechanism and
8116
has
8117
a much larger code and data size.
8118
8119
Previous Release (VC 9.0):
8120
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
8121
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
8122
Current Release (VC 9.0):
8123
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
8124
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
8125
8126
2) iASL Compiler/Disassembler and Tools:
8127
8128
iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
8129
These are useful C-style macros with the standard definitions. ACPICA
8130
bugzilla 898.
8131
8132
iASL/DTC: Added support for integer expressions and labels. Support for
8133
full
8134
expressions for all integer fields in all ACPI tables. Support for labels
8135
in
8136
"generic" portions of tables such as UEFI. See the iASL reference manual.
8137
8138
Debugger: Added a command to display the status of global handlers. The
8139
"handlers" command will display op region, fixed event, and miscellaneous
8140
global handlers. installation status -- and for op regions, whether
8141
default
8142
or user-installed handler will be used.
8143
8144
iASL: Warn if reserved method incorrectly returns a value. Many
8145
predefined
8146
names are defined such that they do not return a value. If implemented as
8147
a
8148
method, issue a warning if such a name explicitly returns a value. ACPICA
8149
Bugzilla 855.
8150
8151
iASL: Added detection of GPE method name conflicts. Detects a conflict
8152
where
8153
there are two GPE methods of the form _Lxy and _Exy in the same scope.
8154
(For
8155
example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
8156
8157
iASL/DTC: Fixed a couple input scanner issues with comments and line
8158
numbers. Comment remover could get confused and miss a comment ending.
8159
Fixed
8160
a problem with line counter maintenance.
8161
8162
iASL/DTC: Reduced the severity of some errors from fatal to error. There
8163
is
8164
no need to abort on simple errors within a field definition.
8165
8166
Debugger: Simplified the output of the help command. All help output now
8167
in
8168
a single screen, instead of help subcommands. ACPICA Bugzilla 897.
8169
8170
----------------------------------------
8171
12 January 2011. Summary of changes for version 20110112:
8172
8173
1) ACPI CA Core Subsystem:
8174
8175
Fixed a race condition between method execution and namespace walks that
8176
can
8177
possibly cause a fault. The problem was apparently introduced in version
8178
20100528 as a result of a performance optimization that reduces the
8179
number
8180
of
8181
namespace walks upon method exit by using the delete_namespace_subtree
8182
function instead of the delete_namespace_by_owner function used
8183
previously.
8184
Bug is a missing namespace lock in the delete_namespace_subtree function.
8185
[email protected]
8186
8187
Fixed several issues and a possible fault with the automatic "serialized"
8188
method support. History: This support changes a method to "serialized" on
8189
the
8190
fly if the method generates an AE_ALREADY_EXISTS error, indicating the
8191
possibility that it cannot handle reentrancy. This fix repairs a couple
8192
of
8193
issues seen in the field, especially on machines with many cores:
8194
8195
1) Delete method children only upon the exit of the last thread,
8196
so as to not delete objects out from under other running threads
8197
(and possibly causing a fault.)
8198
2) Set the "serialized" bit for the method only upon the exit of the
8199
Last thread, so as to not cause deadlock when running threads
8200
attempt to exit.
8201
3) Cleanup the use of the AML "MethodFlags" and internal method flags
8202
so that there is no longer any confusion between the two.
8203
8204
Lin Ming, Bob Moore. Reported by [email protected].
8205
8206
Debugger: Now lock the namespace for duration of a namespace dump.
8207
Prevents
8208
issues if the namespace is changing dynamically underneath the debugger.
8209
Especially affects temporary namespace nodes, since the debugger displays
8210
these also.
8211
8212
Updated the ordering of include files. The ACPICA headers should appear
8213
before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
8214
set
8215
any necessary compiler-specific defines, etc. Affects the ACPI-related
8216
tools
8217
and utilities.
8218
8219
Updated all ACPICA copyrights and signons to 2011. Added the 2011
8220
copyright
8221
to all module headers and signons, including the Linux header. This
8222
affects
8223
virtually every file in the ACPICA core subsystem, iASL compiler, and all
8224
utilities.
8225
8226
Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
8227
project files for VC++ 6.0 are now obsolete. New project files can be
8228
found
8229
under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
8230
details.
8231
8232
Example Code and Data Size: These are the sizes for the OS-independent
8233
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8234
debug version of the code includes the debug output trace mechanism and
8235
has a
8236
much larger code and data size.
8237
8238
Previous Release (VC 6.0):
8239
Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
8240
Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
8241
Current Release (VC 9.0):
8242
Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
8243
Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
8244
8245
2) iASL Compiler/Disassembler and Tools:
8246
8247
iASL: Added generic data types to the Data Table compiler. Add "generic"
8248
data
8249
types such as UINT32, String, Unicode, etc., to simplify the generation
8250
of
8251
platform-defined tables such as UEFI. Lin Ming.
8252
8253
iASL: Added listing support for the Data Table Compiler. Adds listing
8254
support
8255
(-l) to display actual binary output for each line of input code.
8256
8257
----------------------------------------
8258
09 December 2010. Summary of changes for version 20101209:
8259
8260
1) ACPI CA Core Subsystem:
8261
8262
Completed the major overhaul of the GPE support code that was begun in
8263
July
8264
2010. Major features include: removal of _PRW execution in ACPICA (host
8265
executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
8266
changes to existing interfaces, simplification of GPE handler operation,
8267
and
8268
a handful of new interfaces:
8269
8270
AcpiUpdateAllGpes
8271
AcpiFinishGpe
8272
AcpiSetupGpeForWake
8273
AcpiSetGpeWakeMask
8274
One new file, evxfgpe.c to consolidate all external GPE interfaces.
8275
8276
See the ACPICA Programmer Reference for full details and programming
8277
information. See the new section 4.4 "General Purpose Event (GPE)
8278
Support"
8279
for a full overview, and section 8.7 "ACPI General Purpose Event
8280
Management"
8281
for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
8282
Ming,
8283
Bob Moore, Rafael Wysocki.
8284
8285
Implemented a new GPE feature for Windows compatibility, the "Implicit
8286
Wake
8287
GPE Notify". This feature will automatically issue a Notify(2) on a
8288
device
8289
when a Wake GPE is received if there is no corresponding GPE method or
8290
handler. ACPICA BZ 870.
8291
8292
Fixed a problem with the Scope() operator during table parse and load
8293
phase.
8294
During load phase (table load or method execution), the scope operator
8295
should
8296
not enter the target into the namespace. Instead, it should open a new
8297
scope
8298
at the target location. Linux BZ 19462, ACPICA BZ 882.
8299
8300
Example Code and Data Size: These are the sizes for the OS-independent
8301
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8302
debug version of the code includes the debug output trace mechanism and
8303
has a
8304
much larger code and data size.
8305
8306
Previous Release:
8307
Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
8308
Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
8309
Current Release:
8310
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
8311
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
8312
8313
2) iASL Compiler/Disassembler and Tools:
8314
8315
iASL: Relax the alphanumeric restriction on _CID strings. These strings
8316
are
8317
"bus-specific" per the ACPI specification, and therefore any characters
8318
are
8319
acceptable. The only checks that can be performed are for a null string
8320
and
8321
perhaps for a leading asterisk. ACPICA BZ 886.
8322
8323
iASL: Fixed a problem where a syntax error that caused a premature EOF
8324
condition on the source file emitted a very confusing error message. The
8325
premature EOF is now detected correctly. ACPICA BZ 891.
8326
8327
Disassembler: Decode the AccessSize within a Generic Address Structure
8328
(byte
8329
access, word access, etc.) Note, this field does not allow arbitrary bit
8330
access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
8331
8332
New: AcpiNames utility - Example namespace dump utility. Shows an example
8333
of
8334
ACPICA configuration for a minimal namespace dump utility. Uses table and
8335
namespace managers, but no AML interpreter. Does not add any
8336
functionality
8337
over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
8338
partition and configure ACPICA. ACPICA BZ 883.
8339
8340
AML Debugger: Increased the debugger buffer size for method return
8341
objects.
8342
Was 4K, increased to 16K. Also enhanced error messages for debugger
8343
method
8344
execution, including the buffer overflow case.
8345
8346
----------------------------------------
8347
13 October 2010. Summary of changes for version 20101013:
8348
8349
1) ACPI CA Core Subsystem:
8350
8351
Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
8352
now
8353
clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
8354
HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
8355
8356
Changed the type of the predefined namespace object _TZ from ThermalZone
8357
to
8358
Device. This was found to be confusing to the host software that
8359
processes
8360
the various thermal zones, since _TZ is not really a ThermalZone.
8361
However,
8362
a
8363
Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
8364
Zhang.
8365
8366
Added Windows Vista SP2 to the list of supported _OSI strings. The actual
8367
string is "Windows 2006 SP2".
8368
8369
Eliminated duplicate code in AcpiUtExecute* functions. Now that the
8370
nsrepair
8371
code automatically repairs _HID-related strings, this type of code is no
8372
longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
8373
878.
8374
8375
Example Code and Data Size: These are the sizes for the OS-independent
8376
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8377
debug version of the code includes the debug output trace mechanism and
8378
has a
8379
much larger code and data size.
8380
8381
Previous Release:
8382
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
8383
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
8384
Current Release:
8385
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
8386
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
8387
8388
2) iASL Compiler/Disassembler and Tools:
8389
8390
iASL: Implemented additional compile-time validation for _HID strings.
8391
The
8392
non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
8393
length
8394
of
8395
the string must be exactly seven or eight characters. For both _HID and
8396
_CID
8397
strings, all characters must be alphanumeric. ACPICA BZ 874.
8398
8399
iASL: Allow certain "null" resource descriptors. Some BIOS code creates
8400
descriptors that are mostly or all zeros, with the expectation that they
8401
will
8402
be filled in at runtime. iASL now allows this as long as there is a
8403
"resource
8404
tag" (name) associated with the descriptor, which gives the ASL a handle
8405
needed to modify the descriptor. ACPICA BZ 873.
8406
8407
Added single-thread support to the generic Unix application OSL.
8408
Primarily
8409
for iASL support, this change removes the use of semaphores in the
8410
single-
8411
threaded ACPICA tools/applications - increasing performance. The
8412
_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
8413
option. ACPICA BZ 879.
8414
8415
AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
8416
support
8417
for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
8418
8419
iASL: Moved all compiler messages to a new file, aslmessages.h.
8420
8421
----------------------------------------
8422
15 September 2010. Summary of changes for version 20100915:
8423
8424
1) ACPI CA Core Subsystem:
8425
8426
Removed the AcpiOsDerivePciId OSL interface. The various host
8427
implementations
8428
of this function were not OS-dependent and are now obsolete and can be
8429
removed from all host OSLs. This function has been replaced by
8430
AcpiHwDerivePciId, which is now part of the ACPICA core code.
8431
AcpiHwDerivePciId has been implemented without recursion. Adds one new
8432
module, hwpci.c. ACPICA BZ 857.
8433
8434
Implemented a dynamic repair for _HID and _CID strings. The following
8435
problems are now repaired at runtime: 1) Remove a leading asterisk in the
8436
string, and 2) the entire string is uppercased. Both repairs are in
8437
accordance with the ACPI specification and will simplify host driver
8438
code.
8439
ACPICA BZ 871.
8440
8441
The ACPI_THREAD_ID type is no longer configurable, internally it is now
8442
always UINT64. This simplifies the ACPICA code, especially any printf
8443
output.
8444
UINT64 is the only common data type for all thread_id types across all
8445
operating systems. It is now up to the host OSL to cast the native
8446
thread_id
8447
type to UINT64 before returning the value to ACPICA (via
8448
AcpiOsGetThreadId).
8449
Lin Ming, Bob Moore.
8450
8451
Added the ACPI_INLINE type to enhance the ACPICA configuration. The
8452
"inline"
8453
keyword is not standard across compilers, and this type allows inline to
8454
be
8455
configured on a per-compiler basis. Lin Ming.
8456
8457
Made the system global AcpiGbl_SystemAwakeAndRunning publicly
8458
available.
8459
Added an extern for this boolean in acpixf.h. Some hosts utilize this
8460
value
8461
during suspend/restore operations. ACPICA BZ 869.
8462
8463
All code that implements error/warning messages with the "ACPI:" prefix
8464
has
8465
been moved to a new module, utxferror.c.
8466
8467
The UINT64_OVERLAY was moved to utmath.c, which is the only module where
8468
it
8469
is used. ACPICA BZ 829. Lin Ming, Bob Moore.
8470
8471
Example Code and Data Size: These are the sizes for the OS-independent
8472
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8473
debug version of the code includes the debug output trace mechanism and
8474
has a
8475
much larger code and data size.
8476
8477
Previous Release:
8478
Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
8479
Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
8480
Current Release:
8481
Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
8482
Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
8483
8484
2) iASL Compiler/Disassembler and Tools:
8485
8486
iASL/Disassembler: Write ACPI errors to stderr instead of the output
8487
file.
8488
This keeps the output files free of random error messages that may
8489
originate
8490
from within the namespace/interpreter code. Used this opportunity to
8491
merge
8492
all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
8493
866. Lin Ming, Bob Moore.
8494
8495
Tools: update some printfs for ansi warnings on size_t. Handle width
8496
change
8497
of size_t on 32-bit versus 64-bit generations. Lin Ming.
8498
8499
----------------------------------------
8500
06 August 2010. Summary of changes for version 20100806:
8501
8502
1) ACPI CA Core Subsystem:
8503
8504
Designed and implemented a new host interface to the _OSI support code.
8505
This
8506
will allow the host to dynamically add or remove multiple _OSI strings,
8507
as
8508
well as install an optional handler that is called for each _OSI
8509
invocation.
8510
Also added a new AML debugger command, 'osi' to display and modify the
8511
global
8512
_OSI string table, and test support in the AcpiExec utility. See the
8513
ACPICA
8514
reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8515
New Functions:
8516
AcpiInstallInterface - Add an _OSI string.
8517
AcpiRemoveInterface - Delete an _OSI string.
8518
AcpiInstallInterfaceHandler - Install optional _OSI handler.
8519
Obsolete Functions:
8520
AcpiOsValidateInterface - no longer used.
8521
New Files:
8522
source/components/utilities/utosi.c
8523
8524
Re-introduced the support to enable multi-byte transfers for Embedded
8525
Controller (EC) operation regions. A reported problem was found to be a
8526
bug
8527
in the host OS, not in the multi-byte support. Previously, the maximum
8528
data
8529
size passed to the EC operation region handler was a single byte. There
8530
are
8531
often EC Fields larger than one byte that need to be transferred, and it
8532
is
8533
useful for the EC driver to lock these as a single transaction. This
8534
change
8535
enables single transfers larger than 8 bits. This effectively changes the
8536
access to the EC space from ByteAcc to AnyAcc, and will probably require
8537
changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8538
bit
8539
transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8540
8541
Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8542
prototype in acpiosxf.h had the output value pointer as a (void *).
8543
It should be a (UINT64 *). This may affect some host OSL code.
8544
8545
Fixed a couple problems with the recently modified Linux makefiles for
8546
iASL
8547
and AcpiExec. These new makefiles place the generated object files in the
8548
local directory so that there can be no collisions between the files that
8549
are
8550
shared between them that are compiled with different options.
8551
8552
Example Code and Data Size: These are the sizes for the OS-independent
8553
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8554
debug version of the code includes the debug output trace mechanism and
8555
has a
8556
much larger code and data size.
8557
8558
Previous Release:
8559
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
8560
Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
8561
Current Release:
8562
Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
8563
Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
8564
8565
2) iASL Compiler/Disassembler and Tools:
8566
8567
iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8568
the
8569
namespace from and disassemble an entire group of AML files. Useful for
8570
loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8571
and
8572
disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8573
8574
iASL: Allow multiple invocations of -e option. This change allows
8575
multiple
8576
uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8577
834.
8578
Lin Ming.
8579
8580
----------------------------------------
8581
02 July 2010. Summary of changes for version 20100702:
8582
8583
1) ACPI CA Core Subsystem:
8584
8585
Implemented several updates to the recently added GPE reference count
8586
support. The model for "wake" GPEs is changing to give the host OS
8587
complete
8588
control of these GPEs. Eventually, the ACPICA core will not execute any
8589
_PRW
8590
methods, since the host already must execute them. Also, additional
8591
changes
8592
were made to help ensure that the reference counts are kept in proper
8593
synchronization with reality. Rafael J. Wysocki.
8594
8595
1) Ensure that GPEs are not enabled twice during initialization.
8596
2) Ensure that GPE enable masks stay in sync with the reference count.
8597
3) Do not inadvertently enable GPEs when writing GPE registers.
8598
4) Remove the internal wake reference counter and add new AcpiGpeWakeup
8599
interface. This interface will set or clear individual GPEs for wakeup.
8600
5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8601
interfaces
8602
are now used for "runtime" GPEs only.
8603
8604
Changed the behavior of the GPE install/remove handler interfaces. The
8605
GPE
8606
is
8607
no longer disabled during this process, as it was found to cause problems
8608
on
8609
some machines. Rafael J. Wysocki.
8610
8611
Reverted a change introduced in version 20100528 to enable Embedded
8612
Controller multi-byte transfers. This change was found to cause problems
8613
with
8614
Index Fields and possibly Bank Fields. It will be reintroduced when these
8615
problems have been resolved.
8616
8617
Fixed a problem with references to Alias objects within Package Objects.
8618
A
8619
reference to an Alias within the definition of a Package was not always
8620
resolved properly. Aliases to objects like Processors, Thermal zones,
8621
etc.
8622
were resolved to the actual object instead of a reference to the object
8623
as
8624
it
8625
should be. Package objects are only allowed to contain integer, string,
8626
buffer, package, and reference objects. Redhat bugzilla 608648.
8627
8628
Example Code and Data Size: These are the sizes for the OS-independent
8629
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8630
debug version of the code includes the debug output trace mechanism and
8631
has a
8632
much larger code and data size.
8633
8634
Previous Release:
8635
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
8636
Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
8637
Current Release:
8638
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
8639
Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
8640
8641
2) iASL Compiler/Disassembler and Tools:
8642
8643
iASL: Implemented a new compiler subsystem to allow definition and
8644
compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8645
These
8646
are called "ACPI Data Tables", and the new compiler is the "Data Table
8647
Compiler". This compiler is intended to simplify the existing error-prone
8648
process of creating these tables for the BIOS, as well as allowing the
8649
disassembly, modification, recompilation, and override of existing ACPI
8650
data
8651
tables. See the iASL User Guide for detailed information.
8652
8653
iASL: Implemented a new Template Generator option in support of the new
8654
Data
8655
Table Compiler. This option will create examples of all known ACPI tables
8656
that can be used as the basis for table development. See the iASL
8657
documentation and the -T option.
8658
8659
Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8660
Descriptor Table).
8661
8662
Updated the Linux makefiles for iASL and AcpiExec to place the generated
8663
object files in the local directory so that there can be no collisions
8664
between the shared files between them that are generated with different
8665
options.
8666
8667
Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8668
Use
8669
the #define __APPLE__ to enable this support.
8670
8671
----------------------------------------
8672
28 May 2010. Summary of changes for version 20100528:
8673
8674
Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8675
available at www.acpi.info. This is primarily an errata release.
8676
8677
1) ACPI CA Core Subsystem:
8678
8679
Undefined ACPI tables: We are looking for the definitions for the
8680
following
8681
ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8682
8683
Implemented support to enable multi-byte transfers for Embedded
8684
Controller
8685
(EC) operation regions. Previously, the maximum data size passed to the
8686
EC
8687
operation region handler was a single byte. There are often EC Fields
8688
larger
8689
than one byte that need to be transferred, and it is useful for the EC
8690
driver
8691
to lock these as a single transaction. This change enables single
8692
transfers
8693
larger than 8 bits. This effectively changes the access to the EC space
8694
from
8695
ByteAcc to AnyAcc, and will probably require changes to the host OS
8696
Embedded
8697
Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8698
bit
8699
transfers. Alexey Starikovskiy, Lin Ming
8700
8701
Implemented a performance enhancement for namespace search and access.
8702
This
8703
change enhances the performance of namespace searches and walks by adding
8704
a
8705
backpointer to the parent in each namespace node. On large namespaces,
8706
this
8707
change can improve overall ACPI performance by up to 9X. Adding a pointer
8708
to
8709
each namespace node increases the overall size of the internal namespace
8710
by
8711
about 5%, since each namespace entry usually consists of both a namespace
8712
node and an ACPI operand object. However, this is the first growth of the
8713
namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8714
8715
Implemented a performance optimization that reduces the number of
8716
namespace
8717
walks. On control method exit, only walk the namespace if the method is
8718
known
8719
to have created namespace objects outside of its local scope. Previously,
8720
the
8721
entire namespace was traversed on each control method exit. This change
8722
can
8723
improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8724
Moore.
8725
8726
Added support to truncate I/O addresses to 16 bits for Windows
8727
compatibility.
8728
Some ASL code has been seen in the field that inadvertently has bits set
8729
above bit 15. This feature is optional and is enabled if the BIOS
8730
requests
8731
any Windows OSI strings. It can also be enabled by the host OS. Matthew
8732
Garrett, Bob Moore.
8733
8734
Added support to limit the maximum time for the ASL Sleep() operator. To
8735
prevent accidental deep sleeps, limit the maximum time that Sleep() will
8736
actually sleep. Configurable, the default maximum is two seconds. ACPICA
8737
bugzilla 854.
8738
8739
Added run-time validation support for the _WDG and_WED Microsoft
8740
predefined
8741
methods. These objects are defined by "Windows Instrumentation", and are
8742
not
8743
part of the ACPI spec. ACPICA BZ 860.
8744
8745
Expanded all statistic counters used during namespace and device
8746
initialization from 16 to 32 bits in order to support very large
8747
namespaces.
8748
8749
Replaced all instances of %d in printf format specifiers with %u since
8750
nearly
8751
all integers in ACPICA are unsigned.
8752
8753
Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8754
returned
8755
as AE_NO_HANDLER.
8756
8757
Example Code and Data Size: These are the sizes for the OS-independent
8758
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8759
debug version of the code includes the debug output trace mechanism and
8760
has a
8761
much larger code and data size.
8762
8763
Previous Release:
8764
Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
8765
Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
8766
Current Release:
8767
Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
8768
Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
8769
8770
2) iASL Compiler/Disassembler and Tools:
8771
8772
iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8773
methods. These objects are defined by "Windows Instrumentation", and are
8774
not
8775
part of the ACPI spec. ACPICA BZ 860.
8776
8777
AcpiExec: added option to disable the memory tracking mechanism. The -dt
8778
option will disable the tracking mechanism, which improves performance
8779
considerably.
8780
8781
AcpiExec: Restructured the command line options into -d (disable) and -e
8782
(enable) options.
8783
8784
----------------------------------------
8785
28 April 2010. Summary of changes for version 20100428:
8786
8787
1) ACPI CA Core Subsystem:
8788
8789
Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8790
including FADT-based and GPE Block Devices, execute any _PRW methods in
8791
the
8792
new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8793
runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8794
immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8795
Devices. Provides compatibility with other ACPI implementations. Two new
8796
files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8797
Moore.
8798
8799
Fixed a regression introduced in version 20100331 within the table
8800
manager
8801
where initial table loading could fail. This was introduced in the fix
8802
for
8803
AcpiReallocateRootTable. Also, renamed some of fields in the table
8804
manager
8805
data structures to clarify their meaning and use.
8806
8807
Fixed a possible allocation overrun during internal object copy in
8808
AcpiUtCopySimpleObject. The original code did not correctly handle the
8809
case
8810
where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8811
847.
8812
8813
Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8814
possible access beyond end-of-allocation. Also, now fully validate
8815
descriptor
8816
(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8817
8818
Example Code and Data Size: These are the sizes for the OS-independent
8819
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8820
debug version of the code includes the debug output trace mechanism and
8821
has a
8822
much larger code and data size.
8823
8824
Previous Release:
8825
Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
8826
Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
8827
Current Release:
8828
Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
8829
Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
8830
8831
2) iASL Compiler/Disassembler and Tools:
8832
8833
iASL: Implemented Min/Max/Len/Gran validation for address resource
8834
descriptors. This change implements validation for the address fields
8835
that
8836
are common to all address-type resource descriptors. These checks are
8837
implemented: Checks for valid Min/Max, length within the Min/Max window,
8838
valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8839
per
8840
table 6-40 in the ACPI 4.0a specification. Also split the large
8841
aslrestype1.c
8842
and aslrestype2.c files into five new files. ACPICA BZ 840.
8843
8844
iASL: Added support for the _Wxx predefined names. This support was
8845
missing
8846
and these names were not recognized by the compiler as valid predefined
8847
names. ACPICA BZ 851.
8848
8849
iASL: Added an error for all predefined names that are defined to return
8850
no
8851
value and thus must be implemented as Control Methods. These include all
8852
of
8853
the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8854
names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8855
8856
iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8857
an
8858
ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8859
be
8860
dynamically loaded via the Load() operator. Also cleaned up output for
8861
the
8862
-
8863
ta and -tc options. ACPICA BZ 853.
8864
8865
Tests: Added a new file with examples of extended iASL error checking.
8866
Demonstrates the advanced error checking ability of the iASL compiler.
8867
Available at tests/misc/badcode.asl.
8868
8869
----------------------------------------
8870
31 March 2010. Summary of changes for version 20100331:
8871
8872
1) ACPI CA Core Subsystem:
8873
8874
Completed a major update for the GPE support in order to improve support
8875
for
8876
shared GPEs and to simplify both host OS and ACPICA code. Added a
8877
reference
8878
count mechanism to support shared GPEs that require multiple device
8879
drivers.
8880
Several external interfaces have changed. One external interface has been
8881
removed. One new external interface was added. Most of the GPE external
8882
interfaces now use the GPE spinlock instead of the events mutex (and the
8883
Flags parameter for many GPE interfaces has been removed.) See the
8884
updated
8885
ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8886
Rafael
8887
Wysocki. ACPICA BZ 831.
8888
8889
Changed:
8890
AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8891
Removed:
8892
AcpiSetGpeType
8893
New:
8894
AcpiSetGpe
8895
8896
Implemented write support for DataTable operation regions. These regions
8897
are
8898
defined via the DataTableRegion() operator. Previously, only read support
8899
was
8900
implemented. The ACPI specification allows DataTableRegions to be
8901
read/write,
8902
however.
8903
8904
Implemented a new subsystem option to force a copy of the DSDT to local
8905
memory. Optionally copy the entire DSDT to local memory (instead of
8906
simply
8907
mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8908
replace
8909
the original DSDT, creating the need for this option. Default is FALSE,
8910
do
8911
not copy the DSDT.
8912
8913
Implemented detection of a corrupted or replaced DSDT. This change adds
8914
support to detect a DSDT that has been corrupted and/or replaced from
8915
outside
8916
the OS (by firmware). This is typically catastrophic for the system, but
8917
has
8918
been seen on some machines. Once this problem has been detected, the DSDT
8919
copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8920
8921
Fixed two problems with AcpiReallocateRootTable during the root table
8922
copy.
8923
When copying the root table to the new allocation, the length used was
8924
incorrect. The new size was used instead of the current table size,
8925
meaning
8926
too much data was copied. Also, the count of available slots for ACPI
8927
tables
8928
was not set correctly. Alexey Starikovskiy, Bob Moore.
8929
8930
Example Code and Data Size: These are the sizes for the OS-independent
8931
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8932
debug version of the code includes the debug output trace mechanism and
8933
has a
8934
much larger code and data size.
8935
8936
Previous Release:
8937
Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
8938
Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
8939
Current Release:
8940
Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
8941
Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
8942
8943
2) iASL Compiler/Disassembler and Tools:
8944
8945
iASL: Implement limited typechecking for values returned from predefined
8946
control methods. The type of any returned static (unnamed) object is now
8947
validated. For example, Return(1). ACPICA BZ 786.
8948
8949
iASL: Fixed a predefined name object verification regression. Fixes a
8950
problem
8951
introduced in version 20100304. An error is incorrectly generated if a
8952
predefined name is declared as a static named object with a value defined
8953
using the keywords "Zero", "One", or "Ones". Lin Ming.
8954
8955
iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8956
by
8957
reducing the requested registry access rights. ACPICA BZ 842.
8958
8959
Disassembler: fixed a possible fault when generating External()
8960
statements.
8961
Introduced in commit ae7d6fd: Properly handle externals with parent-
8962
prefix
8963
(carat). Fixes a string length allocation calculation. Lin Ming.
8964
8965
----------------------------------------
8966
04 March 2010. Summary of changes for version 20100304:
8967
8968
1) ACPI CA Core Subsystem:
8969
8970
Fixed a possible problem with the AML Mutex handling function
8971
AcpiExReleaseMutex where the function could fault under the very rare
8972
condition when the interpreter has blocked, the interpreter lock is
8973
released,
8974
the interpreter is then reentered via the same thread, and attempts to
8975
acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8976
Lin
8977
Ming.
8978
8979
Implemented additional configuration support for the AML "Debug Object".
8980
Output from the debug object can now be enabled via a global variable,
8981
AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8982
debugging.
8983
This debug output is now available in the release version of ACPICA
8984
instead
8985
of just the debug version. Also, the entire debug output module can now
8986
be
8987
configured out of the ACPICA build if desired. One new file added,
8988
executer/exdebug.c. Lin Ming, Bob Moore.
8989
8990
Added header support for the ACPI MCHI table (Management Controller Host
8991
Interface Table). This table was added in ACPI 4.0, but the defining
8992
document
8993
has only recently become available.
8994
8995
Standardized output of integer values for ACPICA warnings/errors. Always
8996
use
8997
0x prefix for hex output, always use %u for unsigned integer decimal
8998
output.
8999
Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
9000
400
9001
invocations.) These invocations were converted from the original
9002
ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
9003
9004
Example Code and Data Size: These are the sizes for the OS-independent
9005
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9006
debug version of the code includes the debug output trace mechanism and
9007
has a
9008
much larger code and data size.
9009
9010
Previous Release:
9011
Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
9012
Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
9013
Current Release:
9014
Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
9015
Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
9016
9017
2) iASL Compiler/Disassembler and Tools:
9018
9019
iASL: Implemented typechecking support for static (non-control method)
9020
predefined named objects that are declared with the Name() operator. For
9021
example, the type of this object is now validated to be of type Integer:
9022
Name(_BBN, 1). This change migrates the compiler to using the core
9023
predefined
9024
name table instead of maintaining a local version. Added a new file,
9025
aslpredef.c. ACPICA BZ 832.
9026
9027
Disassembler: Added support for the ACPI 4.0 MCHI table.
9028
9029
----------------------------------------
9030
21 January 2010. Summary of changes for version 20100121:
9031
9032
1) ACPI CA Core Subsystem:
9033
9034
Added the 2010 copyright to all module headers and signons. This affects
9035
virtually every file in the ACPICA core subsystem, the iASL compiler, the
9036
tools/utilities, and the test suites.
9037
9038
Implemented a change to the AcpiGetDevices interface to eliminate
9039
unnecessary
9040
invocations of the _STA method. In the case where a specific _HID is
9041
requested, do not run _STA until a _HID match is found. This eliminates
9042
potentially dozens of _STA calls during a search for a particular
9043
device/HID,
9044
which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
9045
9046
Implemented an additional repair for predefined method return values.
9047
Attempt
9048
to repair unexpected NULL elements within returned Package objects.
9049
Create
9050
an
9051
Integer of value zero, a NULL String, or a zero-length Buffer as
9052
appropriate.
9053
ACPICA BZ 818. Lin Ming, Bob Moore.
9054
9055
Removed the obsolete ACPI_INTEGER data type. This type was introduced as
9056
the
9057
code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
9058
(with
9059
64-bit AML integers). It is now obsolete and this change removes it from
9060
the
9061
ACPICA code base, replaced by UINT64. The original typedef has been
9062
retained
9063
for now for compatibility with existing device driver code. ACPICA BZ
9064
824.
9065
9066
Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
9067
in
9068
the parse tree object.
9069
9070
Added additional warning options for the gcc-4 generation. Updated the
9071
source
9072
accordingly. This includes some code restructuring to eliminate
9073
unreachable
9074
code, elimination of some gotos, elimination of unused return values,
9075
some
9076
additional casting, and removal of redundant declarations.
9077
9078
Example Code and Data Size: These are the sizes for the OS-independent
9079
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9080
debug version of the code includes the debug output trace mechanism and
9081
has a
9082
much larger code and data size.
9083
9084
Previous Release:
9085
Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
9086
Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
9087
Current Release:
9088
Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
9089
Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
9090
9091
2) iASL Compiler/Disassembler and Tools:
9092
9093
No functional changes for this release.
9094
9095
----------------------------------------
9096
14 December 2009. Summary of changes for version 20091214:
9097
9098
1) ACPI CA Core Subsystem:
9099
9100
Enhanced automatic data type conversions for predefined name repairs.
9101
This
9102
change expands the automatic repairs/conversions for predefined name
9103
return
9104
values to make Integers, Strings, and Buffers fully interchangeable.
9105
Also,
9106
a
9107
Buffer can be converted to a Package of Integers if necessary. The
9108
nsrepair.c
9109
module was completely restructured. Lin Ming, Bob Moore.
9110
9111
Implemented automatic removal of null package elements during predefined
9112
name
9113
repairs. This change will automatically remove embedded and trailing NULL
9114
package elements from returned package objects that are defined to
9115
contain
9116
a
9117
variable number of sub-packages. The driver is then presented with a
9118
package
9119
with no null elements to deal with. ACPICA BZ 819.
9120
9121
Implemented a repair for the predefined _FDE and _GTM names. The expected
9122
return value for both names is a Buffer of 5 DWORDs. This repair fixes
9123
two
9124
possible problems (both seen in the field), where a package of integers
9125
is
9126
returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
9127
Kim.
9128
9129
Implemented additional module-level code support. This change will
9130
properly
9131
execute module-level code that is not at the root of the namespace (under
9132
a
9133
Device object, etc.). Now executes the code within the current scope
9134
instead
9135
of the root. ACPICA BZ 762. Lin Ming.
9136
9137
Fixed possible mutex acquisition errors when running _REG methods. Fixes
9138
a
9139
problem where mutex errors can occur when running a _REG method that is
9140
in
9141
the same scope as a method-defined operation region or an operation
9142
region
9143
under a module-level IF block. This type of code is rare, so the problem
9144
has
9145
not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
9146
9147
Fixed a possible memory leak during module-level code execution. An
9148
object
9149
could be leaked for each block of executed module-level code if the
9150
interpreter slack mode is enabled This change deletes any implicitly
9151
returned
9152
object from the module-level code block. Lin Ming.
9153
9154
Removed messages for successful predefined repair(s). The repair
9155
mechanism
9156
was considered too wordy. Now, messages are only unconditionally emitted
9157
if
9158
the return object cannot be repaired. Existing messages for successful
9159
repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
9160
827.
9161
9162
Example Code and Data Size: These are the sizes for the OS-independent
9163
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9164
debug version of the code includes the debug output trace mechanism and
9165
has a
9166
much larger code and data size.
9167
9168
Previous Release:
9169
Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
9170
Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
9171
Current Release:
9172
Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
9173
Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
9174
9175
2) iASL Compiler/Disassembler and Tools:
9176
9177
iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
9178
files
9179
were no longer automatically removed at the termination of the compile.
9180
9181
acpiexec: Implemented the -f option to specify default region fill value.
9182
This option specifies the value used to initialize buffers that simulate
9183
operation regions. Default value is zero. Useful for debugging problems
9184
that
9185
depend on a specific initial value for a region or field.
9186
9187
----------------------------------------
9188
12 November 2009. Summary of changes for version 20091112:
9189
9190
1) ACPI CA Core Subsystem:
9191
9192
Implemented a post-order callback to AcpiWalkNamespace. The existing
9193
interface only has a pre-order callback. This change adds an additional
9194
parameter for a post-order callback which will be more useful for bus
9195
scans.
9196
ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
9197
9198
Modified the behavior of the operation region memory mapping cache for
9199
SystemMemory. Ensure that the memory mappings created for operation
9200
regions
9201
do not cross 4K page boundaries. Crossing a page boundary while mapping
9202
regions can cause kernel warnings on some hosts if the pages have
9203
different
9204
attributes. Such regions are probably BIOS bugs, and this is the
9205
workaround.
9206
Linux BZ 14445. Lin Ming.
9207
9208
Implemented an automatic repair for predefined methods that must return
9209
sorted lists. This change will repair (by sorting) packages returned by
9210
_ALR,
9211
_PSS, and _TSS. Drivers can now assume that the packages are correctly
9212
sorted
9213
and do not contain NULL package elements. Adds one new file,
9214
namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
9215
9216
Fixed a possible fault during predefined name validation if a return
9217
Package
9218
object contains NULL elements. Also adds a warning if a NULL element is
9219
followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
9220
may
9221
include repair or removal of all such NULL elements where possible.
9222
9223
Implemented additional module-level executable AML code support. This
9224
change
9225
will execute module-level code that is not at the root of the namespace
9226
(under a Device object, etc.) at table load time. Module-level executable
9227
AML
9228
code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
9229
9230
Implemented a new internal function to create Integer objects. This
9231
function
9232
simplifies miscellaneous object creation code. ACPICA BZ 823.
9233
9234
Reduced the severity of predefined repair messages, Warning to Info.
9235
Since
9236
the object was successfully repaired, a warning is too severe. Reduced to
9237
an
9238
info message for now. These messages may eventually be changed to debug-
9239
only.
9240
ACPICA BZ 812.
9241
9242
Example Code and Data Size: These are the sizes for the OS-independent
9243
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9244
debug version of the code includes the debug output trace mechanism and
9245
has a
9246
much larger code and data size.
9247
9248
Previous Release:
9249
Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
9250
Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
9251
Current Release:
9252
Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
9253
Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
9254
9255
2) iASL Compiler/Disassembler and Tools:
9256
9257
iASL: Implemented Switch() with While(1) so that Break works correctly.
9258
This
9259
change correctly implements the Switch operator with a surrounding
9260
While(1)
9261
so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
9262
9263
iASL: Added a message if a package initializer list is shorter than
9264
package
9265
length. Adds a new remark for a Package() declaration if an initializer
9266
list
9267
exists, but is shorter than the declared length of the package. Although
9268
technically legal, this is probably a coding error and it is seen in the
9269
field. ACPICA BZ 815. Lin Ming, Bob Moore.
9270
9271
iASL: Fixed a problem where the compiler could fault after the maximum
9272
number
9273
of errors was reached (200).
9274
9275
acpixtract: Fixed a possible warning for pointer cast if the compiler
9276
warning
9277
level set very high.
9278
9279
----------------------------------------
9280
13 October 2009. Summary of changes for version 20091013:
9281
9282
1) ACPI CA Core Subsystem:
9283
9284
Fixed a problem where an Operation Region _REG method could be executed
9285
more
9286
than once. If a custom address space handler is installed by the host
9287
before
9288
the "initialize operation regions" phase of the ACPICA initialization,
9289
any
9290
_REG methods for that address space could be executed twice. This change
9291
fixes the problem. ACPICA BZ 427. Lin Ming.
9292
9293
Fixed a possible memory leak for the Scope() ASL operator. When the exact
9294
invocation of "Scope(\)" is executed (change scope to root), one internal
9295
operand object was leaked. Lin Ming.
9296
9297
Implemented a run-time repair for the _MAT predefined method. If the _MAT
9298
return value is defined as a Field object in the AML, and the field
9299
size is less than or equal to the default width of an integer (32 or
9300
64),_MAT
9301
can incorrectly return an Integer instead of a Buffer. ACPICA now
9302
automatically repairs this problem. ACPICA BZ 810.
9303
9304
Implemented a run-time repair for the _BIF and _BIX predefined methods.
9305
The
9306
"OEM Information" field is often incorrectly returned as an Integer with
9307
value zero if the field is not supported by the platform. This is due to
9308
an
9309
ambiguity in the ACPI specification. The field should always be a string.
9310
ACPICA now automatically repairs this problem by returning a NULL string
9311
within the returned Package. ACPICA BZ 807.
9312
9313
Example Code and Data Size: These are the sizes for the OS-independent
9314
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9315
debug version of the code includes the debug output trace mechanism and
9316
has a
9317
much larger code and data size.
9318
9319
Previous Release:
9320
Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
9321
Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
9322
Current Release:
9323
Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
9324
Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
9325
9326
2) iASL Compiler/Disassembler and Tools:
9327
9328
Disassembler: Fixed a problem where references to external symbols that
9329
contained one or more parent-prefixes (carats) were not handled
9330
correctly,
9331
possibly causing a fault. ACPICA BZ 806. Lin Ming.
9332
9333
Disassembler: Restructured the code so that all functions that handle
9334
external symbols are in a single module. One new file is added,
9335
common/dmextern.c.
9336
9337
AML Debugger: Added a max count argument for the Batch command (which
9338
executes multiple predefined methods within the namespace.)
9339
9340
iASL: Updated the compiler documentation (User Reference.) Available at
9341
http://www.acpica.org/documentation/. ACPICA BZ 750.
9342
9343
AcpiXtract: Updated for Lint and other formatting changes. Close all open
9344
files.
9345
9346
----------------------------------------
9347
03 September 2009. Summary of changes for version 20090903:
9348
9349
1) ACPI CA Core Subsystem:
9350
9351
For Windows Vista compatibility, added the automatic execution of an _INI
9352
method located at the namespace root (\_INI). This method is executed at
9353
table load time. This support is in addition to the automatic execution
9354
of
9355
\_SB._INI. Lin Ming.
9356
9357
Fixed a possible memory leak in the interpreter for AML package objects
9358
if
9359
the package initializer list is longer than the defined size of the
9360
package.
9361
This apparently can only happen if the BIOS changes the package size on
9362
the
9363
fly (seen in a _PSS object), as ASL compilers do not allow this. The
9364
interpreter will truncate the package to the defined size (and issue an
9365
error
9366
message), but previously could leave the extra objects undeleted if they
9367
were
9368
pre-created during the argument processing (such is the case if the
9369
package
9370
consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
9371
9372
Fixed a problem seen when a Buffer or String is stored to itself via ASL.
9373
This has been reported in the field. Previously, ACPICA would zero out
9374
the
9375
buffer/string. Now, the operation is treated as a noop. Provides Windows
9376
compatibility. ACPICA BZ 803. Lin Ming.
9377
9378
Removed an extraneous error message for ASL constructs of the form
9379
Store(LocalX,LocalX) when LocalX is uninitialized. These curious
9380
statements
9381
are seen in many BIOSs and are once again treated as NOOPs and no error
9382
is
9383
emitted when they are encountered. ACPICA BZ 785.
9384
9385
Fixed an extraneous warning message if a _DSM reserved method returns a
9386
Package object. _DSM can return any type of object, so validation on the
9387
return type cannot be performed. ACPICA BZ 802.
9388
9389
Example Code and Data Size: These are the sizes for the OS-independent
9390
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9391
debug version of the code includes the debug output trace mechanism and
9392
has a
9393
much larger code and data size.
9394
9395
Previous Release:
9396
Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
9397
Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
9398
Current Release:
9399
Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
9400
Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
9401
9402
2) iASL Compiler/Disassembler and Tools:
9403
9404
iASL: Fixed a problem with the use of the Alias operator and Resource
9405
Templates. The correct alias is now constructed and no error is emitted.
9406
ACPICA BZ 738.
9407
9408
iASL: Implemented the -I option to specify additional search directories
9409
for
9410
include files. Allows multiple additional search paths for include files.
9411
Directories are searched in the order specified on the command line
9412
(after
9413
the local directory is searched.) ACPICA BZ 800.
9414
9415
iASL: Fixed a problem where the full pathname for include files was not
9416
emitted for warnings/errors. This caused the IDE support to not work
9417
properly. ACPICA BZ 765.
9418
9419
iASL: Implemented the -@ option to specify a Windows-style response file
9420
containing additional command line options. ACPICA BZ 801.
9421
9422
AcpiExec: Added support to load multiple AML files simultaneously (such
9423
as
9424
a
9425
DSDT and multiple SSDTs). Also added support for wildcards within the AML
9426
pathname. These features allow all machine tables to be easily loaded and
9427
debugged together. ACPICA BZ 804.
9428
9429
Disassembler: Added missing support for disassembly of HEST table Error
9430
Bank
9431
subtables.
9432
9433
----------------------------------------
9434
30 July 2009. Summary of changes for version 20090730:
9435
9436
The ACPI 4.0 implementation for ACPICA is complete with this release.
9437
9438
1) ACPI CA Core Subsystem:
9439
9440
ACPI 4.0: Added header file support for all new and changed ACPI tables.
9441
Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
9442
new
9443
for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
9444
BERT,
9445
EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
9446
There
9447
have been some ACPI 4.0 changes to other existing tables. Split the large
9448
actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
9449
9450
ACPI 4.0: Implemented predefined name validation for all new names. There
9451
are
9452
31 new names in ACPI 4.0. The predefined validation module was split into
9453
two
9454
files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
9455
9456
Implemented support for so-called "module-level executable code". This is
9457
executable AML code that exists outside of any control method and is
9458
intended
9459
to be executed at table load time. Although illegal since ACPI 2.0, this
9460
type
9461
of code still exists and is apparently still being created. Blocks of
9462
this
9463
code are now detected and executed as intended. Currently, the code
9464
blocks
9465
must exist under either an If, Else, or While construct; these are the
9466
typical cases seen in the field. ACPICA BZ 762. Lin Ming.
9467
9468
Implemented an automatic dynamic repair for predefined names that return
9469
nested Package objects. This applies to predefined names that are defined
9470
to
9471
return a variable-length Package of sub-packages. If the number of sub-
9472
packages is one, BIOS code is occasionally seen that creates a simple
9473
single
9474
package with no sub-packages. This code attempts to fix the problem by
9475
wrapping a new package object around the existing package. These methods
9476
can
9477
be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
9478
BZ
9479
790.
9480
9481
Fixed a regression introduced in 20090625 for the AcpiGetDevices
9482
interface.
9483
The _HID/_CID matching was broken and no longer matched IDs correctly.
9484
ACPICA
9485
BZ 793.
9486
9487
Fixed a problem with AcpiReset where the reset would silently fail if the
9488
register was one of the protected I/O ports. AcpiReset now bypasses the
9489
port
9490
validation mechanism. This may eventually be driven into the
9491
AcpiRead/Write
9492
interfaces.
9493
9494
Fixed a regression related to the recent update of the AcpiRead/Write
9495
interfaces. A sleep/suspend could fail if the optional PM2 Control
9496
register
9497
does not exist during an attempt to write the Bus Master Arbitration bit.
9498
(However, some hosts already delete the code that writes this bit, and
9499
the
9500
code may in fact be obsolete at this date.) ACPICA BZ 799.
9501
9502
Fixed a problem where AcpiTerminate could fault if inadvertently called
9503
twice
9504
in succession. ACPICA BZ 795.
9505
9506
Example Code and Data Size: These are the sizes for the OS-independent
9507
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9508
debug version of the code includes the debug output trace mechanism and
9509
has a
9510
much larger code and data size.
9511
9512
Previous Release:
9513
Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
9514
Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
9515
Current Release:
9516
Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
9517
Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
9518
9519
2) iASL Compiler/Disassembler and Tools:
9520
9521
ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9522
changes to existing tables. ACPICA BZ 775.
9523
9524
----------------------------------------
9525
25 June 2009. Summary of changes for version 20090625:
9526
9527
The ACPI 4.0 Specification was released on June 16 and is available at
9528
www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9529
continue for the next few releases.
9530
9531
1) ACPI CA Core Subsystem:
9532
9533
ACPI 4.0: Implemented interpreter support for the IPMI operation region
9534
address space. Includes support for bi-directional data buffers and an
9535
IPMI
9536
address space handler (to be installed by an IPMI device driver.) ACPICA
9537
BZ
9538
773. Lin Ming.
9539
9540
ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9541
Includes
9542
support in both the header files and the disassembler.
9543
9544
Completed a major update for the AcpiGetObjectInfo external interface.
9545
Changes include:
9546
- Support for variable, unlimited length HID, UID, and CID strings.
9547
- Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
9548
etc.)
9549
- Call the _SxW power methods on behalf of a device object.
9550
- Determine if a device is a PCI root bridge.
9551
- Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
9552
These changes will require an update to all callers of this interface.
9553
See
9554
the updated ACPICA Programmer Reference for details. One new source file
9555
has
9556
been added - utilities/utids.c. ACPICA BZ 368, 780.
9557
9558
Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9559
transfers. The Value parameter has been extended from 32 bits to 64 bits
9560
in
9561
order to support new ACPI 4.0 tables. These changes will require an
9562
update
9563
to
9564
all callers of these interfaces. See the ACPICA Programmer Reference for
9565
details. ACPICA BZ 768.
9566
9567
Fixed several problems with AcpiAttachData. The handler was not invoked
9568
when
9569
the host node was deleted. The data sub-object was not automatically
9570
deleted
9571
when the host node was deleted. The interface to the handler had an
9572
unused
9573
parameter, this was removed. ACPICA BZ 778.
9574
9575
Enhanced the function that dumps ACPI table headers. All non-printable
9576
characters in the string fields are now replaced with '?' (Signature,
9577
OemId,
9578
OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9579
these fields are occasionally seen in the field. ACPICA BZ 788.
9580
9581
Fixed a problem with predefined method repair code where the code that
9582
attempts to repair/convert an object of incorrect type is only executed
9583
on
9584
the first time the predefined method is called. The mechanism that
9585
disables
9586
warnings on subsequent calls was interfering with the repair mechanism.
9587
ACPICA BZ 781.
9588
9589
Fixed a possible memory leak in the predefined validation/repair code
9590
when
9591
a
9592
buffer is automatically converted to an expected string object.
9593
9594
Removed obsolete 16-bit files from the distribution and from the current
9595
git
9596
tree head. ACPICA BZ 776.
9597
9598
Example Code and Data Size: These are the sizes for the OS-independent
9599
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9600
debug version of the code includes the debug output trace mechanism and
9601
has a
9602
much larger code and data size.
9603
9604
Previous Release:
9605
Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
9606
Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
9607
Current Release:
9608
Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
9609
Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
9610
9611
2) iASL Compiler/Disassembler and Tools:
9612
9613
ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9614
operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9615
9616
ACPI 4.0: iASL - implemented compile-time validation support for all new
9617
predefined names and control methods (31 total). ACPICA BZ 769.
9618
9619
----------------------------------------
9620
21 May 2009. Summary of changes for version 20090521:
9621
9622
1) ACPI CA Core Subsystem:
9623
9624
Disabled the preservation of the SCI enable bit in the PM1 control
9625
register.
9626
The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9627
to
9628
be
9629
a "preserved" bit - "OSPM always preserves this bit position", section
9630
4.7.3.2.1. However, some machines fail if this bit is in fact preserved
9631
because the bit needs to be explicitly set by the OS as a workaround. No
9632
machines fail if the bit is not preserved. Therefore, ACPICA no longer
9633
attempts to preserve this bit.
9634
9635
Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9636
incorrectly formed _PRT package could cause a fault. Added validation to
9637
ensure that each package element is actually a sub-package.
9638
9639
Implemented a new interface to install or override a single control
9640
method,
9641
AcpiInstallMethod. This interface is useful when debugging in order to
9642
repair
9643
an existing method or to install a missing method without having to
9644
override
9645
the entire ACPI table. See the ACPICA Programmer Reference for use and
9646
examples. Lin Ming, Bob Moore.
9647
9648
Fixed several reference count issues with the DdbHandle object that is
9649
created from a Load or LoadTable operator. Prevent premature deletion of
9650
the
9651
object. Also, mark the object as invalid once the table has been
9652
unloaded.
9653
This is needed because the handle itself may not be deleted after the
9654
table
9655
unload, depending on whether it has been stored in a named object by the
9656
caller. Lin Ming.
9657
9658
Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9659
mutexes of the same sync level are acquired but then not released in
9660
strict
9661
opposite order, the internally maintained Current Sync Level becomes
9662
confused
9663
and can cause subsequent execution errors. ACPICA BZ 471.
9664
9665
Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9666
specification has been changed to make the SyncLevel for mutex objects
9667
more
9668
useful. When releasing a mutex, the SyncLevel of the mutex must now be
9669
the
9670
same as the current sync level. This makes more sense than the previous
9671
rule
9672
(SyncLevel less than or equal). This change updates the code to match the
9673
specification.
9674
9675
Fixed a problem with the local version of the AcpiOsPurgeCache function.
9676
The
9677
(local) cache must be locked during all cache object deletions. Andrew
9678
Baumann.
9679
9680
Updated the Load operator to use operation region interfaces. This
9681
replaces
9682
direct memory mapping with region access calls. Now, all region accesses
9683
go
9684
through the installed region handler as they should.
9685
9686
Simplified and optimized the NsGetNextNode function. Reduced parameter
9687
count
9688
and reduced code for this frequently used function.
9689
9690
Example Code and Data Size: These are the sizes for the OS-independent
9691
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9692
debug version of the code includes the debug output trace mechanism and
9693
has a
9694
much larger code and data size.
9695
9696
Previous Release:
9697
Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
9698
Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
9699
Current Release:
9700
Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
9701
Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
9702
9703
2) iASL Compiler/Disassembler and Tools:
9704
9705
Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9706
problems
9707
with sub-table disassembly and handling invalid sub-tables. Attempt
9708
recovery
9709
after an invalid sub-table ID.
9710
9711
----------------------------------------
9712
22 April 2009. Summary of changes for version 20090422:
9713
9714
1) ACPI CA Core Subsystem:
9715
9716
Fixed a compatibility issue with the recently released I/O port
9717
protection
9718
mechanism. For windows compatibility, 1) On a port protection violation,
9719
simply ignore the request and do not return an exception (allow the
9720
control
9721
method to continue execution.) 2) If only part of the request overlaps a
9722
protected port, read/write the individual ports that are not protected.
9723
Linux
9724
BZ 13036. Lin Ming
9725
9726
Enhanced the execution of the ASL/AML BreakPoint operator so that it
9727
actually
9728
breaks into the AML debugger if the debugger is present. This matches the
9729
ACPI-defined behavior.
9730
9731
Fixed several possible warnings related to the use of the configurable
9732
ACPI_THREAD_ID. This type can now be configured as either an integer or a
9733
pointer with no warnings. Also fixes several warnings in printf-like
9734
statements for the 64-bit build when the type is configured as a pointer.
9735
ACPICA BZ 766, 767.
9736
9737
Fixed a number of possible warnings when compiling with gcc 4+ (depending
9738
on
9739
warning options.) Examples include printf formats, aliasing, unused
9740
globals,
9741
missing prototypes, missing switch default statements, use of non-ANSI
9742
library functions, use of non-ANSI constructs. See generate/unix/Makefile
9743
for
9744
a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9745
9746
Example Code and Data Size: These are the sizes for the OS-independent
9747
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9748
debug version of the code includes the debug output trace mechanism and
9749
has a
9750
much larger code and data size.
9751
9752
Previous Release:
9753
Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
9754
Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
9755
Current Release:
9756
Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
9757
Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
9758
9759
2) iASL Compiler/Disassembler and Tools:
9760
9761
iASL: Fixed a generation warning from Bison 2.3 and fixed several
9762
warnings
9763
on
9764
the 64-bit build.
9765
9766
iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9767
not
9768
correctly digest Windows/DOS formatted files (with CR/LF).
9769
9770
iASL: Added a new option for "quiet mode" (-va) that produces only the
9771
compilation summary, not individual errors and warnings. Useful for large
9772
batch compilations.
9773
9774
AcpiExec: Implemented a new option (-z) to enable a forced
9775
semaphore/mutex
9776
timeout that can be used to detect hang conditions during execution of
9777
AML
9778
code (includes both internal semaphores and AML-defined mutexes and
9779
events.)
9780
9781
Added new makefiles for the generation of acpica in a generic unix-like
9782
environment. These makefiles are intended to generate the acpica tools
9783
and
9784
utilities from the original acpica git source tree structure.
9785
9786
Test Suites: Updated and cleaned up the documentation files. Updated the
9787
copyrights to 2009, affecting all source files. Use the new version of
9788
iASL
9789
with quiet mode. Increased the number of available semaphores in the
9790
Windows
9791
OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9792
added
9793
an alternate implementation of the semaphore timeout to allow aslts to
9794
execute fully on Cygwin.
9795
9796
----------------------------------------
9797
20 March 2009. Summary of changes for version 20090320:
9798
9799
1) ACPI CA Core Subsystem:
9800
9801
Fixed a possible race condition between AcpiWalkNamespace and dynamic
9802
table
9803
unloads. Added a reader/writer locking mechanism to allow multiple
9804
concurrent
9805
namespace walks (readers), but block a dynamic table unload until it can
9806
gain
9807
exclusive write access to the namespace. This fixes a problem where a
9808
table
9809
unload could (possibly catastrophically) delete the portion of the
9810
namespace
9811
that is currently being examined by a walk. Adds a new file, utlock.c,
9812
that
9813
implements the reader/writer lock mechanism. ACPICA BZ 749.
9814
9815
Fixed a regression introduced in version 20090220 where a change to the
9816
FADT
9817
handling could cause the ACPICA subsystem to access non-existent I/O
9818
ports.
9819
9820
Modified the handling of FADT register and table (FACS/DSDT) addresses.
9821
The
9822
FADT can contain both 32-bit and 64-bit versions of these addresses.
9823
Previously, the 64-bit versions were favored, meaning that if both 32 and
9824
64
9825
versions were valid, but not equal, the 64-bit version was used. This was
9826
found to cause some machines to fail. Now, in this case, the 32-bit
9827
version
9828
is used instead. This now matches the Windows behavior.
9829
9830
Implemented a new mechanism to protect certain I/O ports. Provides
9831
Microsoft
9832
compatibility and protects the standard PC I/O ports from access via AML
9833
code. Adds a new file, hwvalid.c
9834
9835
Fixed a possible extraneous warning message from the FADT support. The
9836
message warns of a 32/64 length mismatch between the legacy and GAS
9837
definitions for a register.
9838
9839
Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9840
is
9841
made obsolete by the port protection mechanism above. It was previously
9842
used
9843
to validate the entire address range of an operation region, which could
9844
be
9845
incorrect if the range included illegal ports, but fields within the
9846
operation region did not actually access those ports. Validation is now
9847
performed on a per-field basis instead of the entire region.
9848
9849
Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9850
Ignored bits must be "preserved" according to the ACPI spec. Usually,
9851
this
9852
means a read/modify/write when writing to the register. However, for
9853
status
9854
registers, writing a one means clear the event. Writing a zero means
9855
preserve
9856
the event (do not clear.) This behavior is clarified in the ACPI 4.0
9857
spec,
9858
and the ACPICA code now simply always writes a zero to the ignored bit.
9859
9860
Modified the handling of ignored bits for the PM1 A/B Control Registers.
9861
As
9862
per the ACPI specification, for the control registers, preserve
9863
(read/modify/write) all bits that are defined as either reserved or
9864
ignored.
9865
9866
Updated the handling of write-only bits in the PM1 A/B Control Registers.
9867
When reading the register, zero the write-only bits as per the ACPI spec.
9868
ACPICA BZ 443. Lin Ming.
9869
9870
Removed "Linux" from the list of supported _OSI strings. Linux no longer
9871
wants to reply true to this request. The Windows strings are the only
9872
paths
9873
through the AML that are tested and known to work properly.
9874
9875
Previous Release:
9876
Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
9877
Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
9878
Current Release:
9879
Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
9880
Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
9881
9882
2) iASL Compiler/Disassembler and Tools:
9883
9884
Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9885
and
9886
aetables.c
9887
9888
----------------------------------------
9889
20 February 2009. Summary of changes for version 20090220:
9890
9891
1) ACPI CA Core Subsystem:
9892
9893
Optimized the ACPI register locking. Removed locking for reads from the
9894
ACPI
9895
bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9896
is
9897
not required when reading the single-bit registers. The
9898
AcpiGetRegisterUnlocked function is no longer needed and has been
9899
removed.
9900
This will improve performance for reads on these registers. ACPICA BZ
9901
760.
9902
9903
Fixed the parameter validation for AcpiRead/Write. Now return
9904
AE_BAD_PARAMETER if the input register pointer is null, and
9905
AE_BAD_ADDRESS
9906
if
9907
the register has an address of zero. Previously, these cases simply
9908
returned
9909
AE_OK. For optional registers such as PM1B status/enable/control, the
9910
caller
9911
should check for a valid register address before calling. ACPICA BZ 748.
9912
9913
Renamed the external ACPI bit register access functions. Renamed
9914
AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9915
functions. The new names are AcpiReadBitRegister and
9916
AcpiWriteBitRegister.
9917
Also, restructured the code for these functions by simplifying the code
9918
path
9919
and condensing duplicate code to reduce code size.
9920
9921
Added new functions to transparently handle the possibly split PM1 A/B
9922
registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9923
functions
9924
now handle the split registers for PM1 Status, Enable, and Control.
9925
ACPICA
9926
BZ
9927
746.
9928
9929
Added a function to handle the PM1 control registers,
9930
AcpiHwWritePm1Control.
9931
This function writes both of the PM1 control registers (A/B). These
9932
registers
9933
are different than the PM1 A/B status and enable registers in that
9934
different
9935
values can be written to the A/B registers. Most notably, the SLP_TYP
9936
bits
9937
can be different, as per the values returned from the _Sx predefined
9938
methods.
9939
9940
Removed an extra register write within AcpiHwClearAcpiStatus. This
9941
function
9942
was writing an optional PM1B status register twice. The existing call to
9943
the
9944
low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9945
A/B
9946
register. ACPICA BZ 751.
9947
9948
Split out the PM1 Status registers from the FADT. Added new globals for
9949
these
9950
registers (A/B), similar to the way the PM1 Enable registers are handled.
9951
Instead of overloading the FADT Event Register blocks. This makes the
9952
code
9953
clearer and less prone to error.
9954
9955
Fixed the warning message for when the platform contains too many ACPI
9956
tables
9957
for the default size of the global root table data structure. The
9958
calculation
9959
for the truncation value was incorrect.
9960
9961
Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9962
obsolete macro, since it is now a simple reference to ->common.type.
9963
There
9964
were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9965
9966
Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9967
TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9968
simply SLEEP_TYPE. ACPICA BZ 754.
9969
9970
Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9971
function is only needed on 64-bit host operating systems and is thus not
9972
included for 32-bit hosts.
9973
9974
Debug output: print the input and result for invocations of the _OSI
9975
reserved
9976
control method via the ACPI_LV_INFO debug level. Also, reduced some of
9977
the
9978
verbosity of this debug level. Len Brown.
9979
9980
Example Code and Data Size: These are the sizes for the OS-independent
9981
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9982
debug version of the code includes the debug output trace mechanism and
9983
has a
9984
much larger code and data size.
9985
9986
Previous Release:
9987
Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
9988
Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
9989
Current Release:
9990
Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
9991
Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
9992
9993
2) iASL Compiler/Disassembler and Tools:
9994
9995
Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9996
various legal performance profiles.
9997
9998
----------------------------------------
9999
23 January 2009. Summary of changes for version 20090123:
10000
10001
1) ACPI CA Core Subsystem:
10002
10003
Added the 2009 copyright to all module headers and signons. This affects
10004
virtually every file in the ACPICA core subsystem, the iASL compiler, and
10005
the tools/utilities.
10006
10007
Implemented a change to allow the host to override any ACPI table,
10008
including
10009
dynamically loaded tables. Previously, only the DSDT could be replaced by
10010
the
10011
host. With this change, the AcpiOsTableOverride interface is called for
10012
each
10013
table found in the RSDT/XSDT during ACPICA initialization, and also
10014
whenever
10015
a table is dynamically loaded via the AML Load operator.
10016
10017
Updated FADT flag definitions, especially the Boot Architecture flags.
10018
10019
Debugger: For the Find command, automatically pad the input ACPI name
10020
with
10021
underscores if the name is shorter than 4 characters. This enables a
10022
match
10023
with the actual namespace entry which is itself padded with underscores.
10024
10025
Example Code and Data Size: These are the sizes for the OS-independent
10026
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10027
debug version of the code includes the debug output trace mechanism and
10028
has a
10029
much larger code and data size.
10030
10031
Previous Release:
10032
Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
10033
Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
10034
Current Release:
10035
Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
10036
Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
10037
10038
2) iASL Compiler/Disassembler and Tools:
10039
10040
Fix build error under Bison-2.4.
10041
10042
Disassembler: Enhanced FADT support. Added decoding of the Boot
10043
Architecture
10044
flags. Now decode all flags, regardless of the FADT version. Flag output
10045
includes the FADT version which first defined each flag.
10046
10047
The iASL -g option now dumps the RSDT to a file (in addition to the FADT
10048
and
10049
DSDT). Windows only.
10050
10051
----------------------------------------
10052
04 December 2008. Summary of changes for version 20081204:
10053
10054
1) ACPI CA Core Subsystem:
10055
10056
The ACPICA Programmer Reference has been completely updated and revamped
10057
for
10058
this release. This includes updates to the external interfaces, OSL
10059
interfaces, the overview sections, and the debugger reference.
10060
10061
Several new ACPICA interfaces have been implemented and documented in the
10062
programmer reference:
10063
AcpiReset - Writes the reset value to the FADT-defined reset register.
10064
AcpiDisableAllGpes - Disable all available GPEs.
10065
AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
10066
AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
10067
AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
10068
AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
10069
AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
10070
10071
Most of the public ACPI hardware-related interfaces have been moved to a
10072
new
10073
file, components/hardware/hwxface.c
10074
10075
Enhanced the FADT parsing and low-level ACPI register access: The ACPI
10076
register lengths within the FADT are now used, and the low level ACPI
10077
register access no longer hardcodes the ACPI register lengths. Given that
10078
there may be some risk in actually trusting the FADT register lengths, a
10079
run-
10080
time option was added to fall back to the default hardcoded lengths if
10081
the
10082
FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
10083
option is set to true for now, and a warning is issued if a suspicious
10084
FADT
10085
register length is overridden with the default value.
10086
10087
Fixed a reference count issue in NsRepairObject. This problem was
10088
introduced
10089
in version 20081031 as part of a fix to repair Buffer objects within
10090
Packages. Lin Ming.
10091
10092
Added semaphore support to the Linux/Unix application OS-services layer
10093
(OSL). ACPICA BZ 448. Lin Ming.
10094
10095
Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
10096
will
10097
be implemented in the OSL, or will binary semaphores be used instead.
10098
10099
Example Code and Data Size: These are the sizes for the OS-independent
10100
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10101
debug version of the code includes the debug output trace mechanism and
10102
has a
10103
much larger code and data size.
10104
10105
Previous Release:
10106
Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
10107
Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
10108
Current Release:
10109
Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
10110
Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
10111
10112
2) iASL Compiler/Disassembler and Tools:
10113
10114
iASL: Completed the '-e' option to include additional ACPI tables in
10115
order
10116
to
10117
aid with disassembly and External statement generation. ACPICA BZ 742.
10118
Lin
10119
Ming.
10120
10121
iASL: Removed the "named object in while loop" error. The compiler cannot
10122
determine how many times a loop will execute. ACPICA BZ 730.
10123
10124
Disassembler: Implemented support for FADT revision 2 (MS extension).
10125
ACPICA
10126
BZ 743.
10127
10128
Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
10129
MCFG).
10130
10131
----------------------------------------
10132
31 October 2008. Summary of changes for version 20081031:
10133
10134
1) ACPI CA Core Subsystem:
10135
10136
Restructured the ACPICA header files into public/private. acpi.h now
10137
includes
10138
only the "public" acpica headers. All other acpica headers are "private"
10139
and
10140
should not be included by acpica users. One new file, accommon.h is used
10141
to
10142
include the commonly used private headers for acpica code generation.
10143
Future
10144
plans include moving all private headers to a new subdirectory.
10145
10146
Implemented an automatic Buffer->String return value conversion for
10147
predefined ACPI methods. For these methods (such as _BIF), added
10148
automatic
10149
conversion for return objects that are required to be a String, but a
10150
Buffer
10151
was found instead. This can happen when reading string battery data from
10152
an
10153
operation region, because it used to be difficult to convert the data
10154
from
10155
buffer to string from within the ASL. Ensures that the host OS is
10156
provided
10157
with a valid null-terminated string. Linux BZ 11822.
10158
10159
Updated the FACS waking vector interfaces. Split
10160
AcpiSetFirmwareWakingVector
10161
into two: one for the 32-bit vector, another for the 64-bit vector. This
10162
is
10163
required because the host OS must setup the wake much differently for
10164
each
10165
vector (real vs. protected mode, etc.) and the interface itself should
10166
not
10167
be
10168
deciding which vector to use. Also, eliminated the
10169
GetFirmwareWakingVector
10170
interface, as it served no purpose (only the firmware reads the vector,
10171
OS
10172
only writes the vector.) ACPICA BZ 731.
10173
10174
Implemented a mechanism to escape infinite AML While() loops. Added a
10175
loop
10176
counter to force exit from AML While loops if the count becomes too
10177
large.
10178
This can occur in poorly written AML when the hardware does not respond
10179
within a while loop and the loop does not implement a timeout. The
10180
maximum
10181
loop count is configurable. A new exception code is returned when a loop
10182
is
10183
broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
10184
10185
Optimized the execution of AML While loops. Previously, a control state
10186
object was allocated and freed for each execution of the loop. The
10187
optimization is to simply reuse the control state for each iteration.
10188
This
10189
speeds up the raw loop execution time by about 5%.
10190
10191
Enhanced the implicit return mechanism. For Windows compatibility, return
10192
an
10193
implicit integer of value zero for methods that contain no executable
10194
code.
10195
Such methods are seen in the field as stubs (presumably), and can cause
10196
drivers to fail if they expect a return value. Lin Ming.
10197
10198
Allow multiple backslashes as root prefixes in namepaths. In a fully
10199
qualified namepath, allow multiple backslash prefixes. This can happen
10200
(and
10201
is seen in the field) because of the use of a double-backslash in strings
10202
(since backslash is the escape character) causing confusion. ACPICA BZ
10203
739
10204
Lin Ming.
10205
10206
Emit a warning if two different FACS or DSDT tables are discovered in the
10207
FADT. Checks if there are two valid but different addresses for the FACS
10208
and
10209
DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
10210
10211
Consolidated the method argument count validation code. Merged the code
10212
that
10213
validates control method argument counts into the predefined validation
10214
module. Eliminates possible multiple warnings for incorrect argument
10215
counts.
10216
10217
Implemented ACPICA example code. Includes code for ACPICA initialization,
10218
handler installation, and calling a control method. Available at
10219
source/tools/examples.
10220
10221
Added a global pointer for FACS table to simplify internal FACS access.
10222
Use
10223
the global pointer instead of using AcpiGetTableByIndex for each FACS
10224
access.
10225
This simplifies the code for the Global Lock and the Firmware Waking
10226
Vector(s).
10227
10228
Example Code and Data Size: These are the sizes for the OS-independent
10229
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10230
debug version of the code includes the debug output trace mechanism and
10231
has a
10232
much larger code and data size.
10233
10234
Previous Release:
10235
Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
10236
Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
10237
Current Release:
10238
Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
10239
Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
10240
10241
2) iASL Compiler/Disassembler and Tools:
10242
10243
iASL: Improved disassembly of external method calls. Added the -e option
10244
to
10245
allow the inclusion of additional ACPI tables to help with the
10246
disassembly
10247
of
10248
method invocations and the generation of external declarations during the
10249
disassembly. Certain external method invocations cannot be disassembled
10250
properly without the actual declaration of the method. Use the -e option
10251
to
10252
include the table where the external method(s) are actually declared.
10253
Most
10254
useful for disassembling SSDTs that make method calls back to the master
10255
DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
10256
-d
10257
-e dsdt.aml ssdt1.aml
10258
10259
iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
10260
problem where the use of an alias within a namepath would result in a not
10261
found error or cause the compiler to fault. Also now allows forward
10262
references from the Alias operator itself. ACPICA BZ 738.
10263
10264
----------------------------------------
10265
26 September 2008. Summary of changes for version 20080926:
10266
10267
1) ACPI CA Core Subsystem:
10268
10269
Designed and implemented a mechanism to validate predefined ACPI methods
10270
and
10271
objects. This code validates the predefined ACPI objects (objects whose
10272
names
10273
start with underscore) that appear in the namespace, at the time they are
10274
evaluated. The argument count and the type of the returned object are
10275
validated against the ACPI specification. The purpose of this validation
10276
is
10277
to detect problems with the BIOS-implemented predefined ACPI objects
10278
before
10279
the results are returned to the ACPI-related drivers. Future enhancements
10280
may
10281
include actual repair of incorrect return objects where possible. Two new
10282
files are nspredef.c and acpredef.h.
10283
10284
Fixed a fault in the AML parser if a memory allocation fails during the
10285
Op
10286
completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
10287
10288
Fixed an issue with implicit return compatibility. This change improves
10289
the
10290
implicit return mechanism to be more compatible with the MS interpreter.
10291
Lin
10292
Ming, ACPICA BZ 349.
10293
10294
Implemented support for zero-length buffer-to-string conversions. Allow
10295
zero
10296
length strings during interpreter buffer-to-string conversions. For
10297
example,
10298
during the ToDecimalString and ToHexString operators, as well as implicit
10299
conversions. Fiodor Suietov, ACPICA BZ 585.
10300
10301
Fixed two possible memory leaks in the error exit paths of
10302
AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
10303
are
10304
similar in that they use a stack of state objects in order to eliminate
10305
recursion. The stack must be fully unwound and deallocated if an error
10306
occurs. Lin Ming. ACPICA BZ 383.
10307
10308
Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
10309
global
10310
ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
10311
Moore ACPICA BZ 442.
10312
10313
Removed the obsolete version number in module headers. Removed the
10314
"$Revision" number that appeared in each module header. This version
10315
number
10316
was useful under SourceSafe and CVS, but has no meaning under git. It is
10317
not
10318
only incorrect, it could also be misleading.
10319
10320
Example Code and Data Size: These are the sizes for the OS-independent
10321
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10322
debug version of the code includes the debug output trace mechanism and
10323
has a
10324
much larger code and data size.
10325
10326
Previous Release:
10327
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
10328
Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
10329
Current Release:
10330
Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
10331
Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
10332
10333
----------------------------------------
10334
29 August 2008. Summary of changes for version 20080829:
10335
10336
1) ACPI CA Core Subsystem:
10337
10338
Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
10339
Reference. Changes include the elimination of cheating on the Object
10340
field
10341
for the DdbHandle subtype, addition of a reference class field to
10342
differentiate the various reference types (instead of an AML opcode), and
10343
the
10344
cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
10345
10346
Reduce an error to a warning for an incorrect method argument count.
10347
Previously aborted with an error if too few arguments were passed to a
10348
control method via the external ACPICA interface. Now issue a warning
10349
instead
10350
and continue. Handles the case where the method inadvertently declares
10351
too
10352
many arguments, but does not actually use the extra ones. Applies mainly
10353
to
10354
the predefined methods. Lin Ming. Linux BZ 11032.
10355
10356
Disallow the evaluation of named object types with no intrinsic value.
10357
Return
10358
AE_TYPE for objects that have no value and therefore evaluation is
10359
undefined:
10360
Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
10361
of
10362
these types were allowed, but an exception would be generated at some
10363
point
10364
during the evaluation. Now, the error is generated up front.
10365
10366
Fixed a possible memory leak in the AcpiNsGetExternalPathname function
10367
(nsnames.c). Fixes a leak in the error exit path.
10368
10369
Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
10370
debug
10371
levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
10372
ACPI_EXCEPTION
10373
interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
10374
ACPI_LV_EVENTS.
10375
10376
Removed obsolete and/or unused exception codes from the acexcep.h header.
10377
There is the possibility that certain device drivers may be affected if
10378
they
10379
use any of these exceptions.
10380
10381
The ACPICA documentation has been added to the public git source tree,
10382
under
10383
acpica/documents. Included are the ACPICA programmer reference, the iASL
10384
compiler reference, and the changes.txt release logfile.
10385
10386
Example Code and Data Size: These are the sizes for the OS-independent
10387
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10388
debug version of the code includes the debug output trace mechanism and
10389
has a
10390
much larger code and data size.
10391
10392
Previous Release:
10393
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
10394
Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
10395
Current Release:
10396
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
10397
Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
10398
10399
2) iASL Compiler/Disassembler and Tools:
10400
10401
Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
10402
defines _SCP with 3 arguments. Previous versions defined it with only 1
10403
argument. iASL now allows both definitions.
10404
10405
iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
10406
zero-
10407
length subtables when disassembling ACPI tables. Also fixed a couple of
10408
errors where a full 16-bit table type field was not extracted from the
10409
input
10410
properly.
10411
10412
acpisrc: Improve comment counting mechanism for generating source code
10413
statistics. Count first and last lines of multi-line comments as
10414
whitespace,
10415
not comment lines. Handle Linux legal header in addition to standard
10416
acpica
10417
header.
10418
10419
----------------------------------------
10420
10421
29 July 2008. Summary of changes for version 20080729:
10422
10423
1) ACPI CA Core Subsystem:
10424
10425
Fix a possible deadlock in the GPE dispatch. Remove call to
10426
AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
10427
attempt
10428
to acquire the GPE lock but can deadlock since the GPE lock is already
10429
held
10430
at dispatch time. This code was introduced in version 20060831 as a
10431
response
10432
to Linux BZ 6881 and has since been removed from Linux.
10433
10434
Add a function to dereference returned reference objects. Examines the
10435
return
10436
object from a call to AcpiEvaluateObject. Any Index or RefOf references
10437
are
10438
automatically dereferenced in an attempt to return something useful
10439
(these
10440
reference types cannot be converted into an external ACPI_OBJECT.)
10441
Provides
10442
MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
10443
10444
x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
10445
subtables for the MADT and one new subtable for the SRAT. Includes
10446
disassembler and AcpiSrc support. Data from the Intel 64 Architecture
10447
x2APIC
10448
Specification, June 2008.
10449
10450
Additional error checking for pathname utilities. Add error check after
10451
all
10452
calls to AcpiNsGetPathnameLength. Add status return from
10453
AcpiNsBuildExternalPath and check after all calls. Add parameter
10454
validation
10455
to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
10456
10457
Return status from the global init function AcpiUtGlobalInitialize. This
10458
is
10459
used by both the kernel subsystem and the utilities such as iASL
10460
compiler.
10461
The function could possibly fail when the caches are initialized. Yang
10462
Yi.
10463
10464
Add a function to decode reference object types to strings. Created for
10465
improved error messages.
10466
10467
Improve object conversion error messages. Better error messages during
10468
object
10469
conversion from internal to the external ACPI_OBJECT. Used for external
10470
calls
10471
to AcpiEvaluateObject.
10472
10473
Example Code and Data Size: These are the sizes for the OS-independent
10474
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10475
debug version of the code includes the debug output trace mechanism and
10476
has a
10477
much larger code and data size.
10478
10479
Previous Release:
10480
Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
10481
Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
10482
Current Release:
10483
Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
10484
Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
10485
10486
2) iASL Compiler/Disassembler and Tools:
10487
10488
Debugger: fix a possible hang when evaluating non-methods. Fixes a
10489
problem
10490
introduced in version 20080701. If the object being evaluated (via
10491
execute
10492
command) is not a method, the debugger can hang while trying to obtain
10493
non-
10494
existent parameters.
10495
10496
iASL: relax error for using reserved "_T_x" identifiers. These names can
10497
appear in a disassembled ASL file if they were emitted by the original
10498
compiler. Instead of issuing an error or warning and forcing the user to
10499
manually change these names, issue a remark instead.
10500
10501
iASL: error if named object created in while loop. Emit an error if any
10502
named
10503
object is created within a While loop. If allowed, this code will
10504
generate
10505
a
10506
run-time error on the second iteration of the loop when an attempt is
10507
made
10508
to
10509
create the same named object twice. ACPICA bugzilla 730.
10510
10511
iASL: Support absolute pathnames for include files. Add support for
10512
absolute
10513
pathnames within the Include operator. previously, only relative
10514
pathnames
10515
were supported.
10516
10517
iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10518
Descriptor.
10519
The ACPI spec requires one interrupt minimum. BZ 423
10520
10521
iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10522
Handles the case for the Interrupt Resource Descriptor where
10523
the ResourceSource argument is omitted but ResourceSourceIndex
10524
is present. Now leave room for the Index. BZ 426
10525
10526
iASL: Prevent error message if CondRefOf target does not exist. Fixes
10527
cases
10528
where an error message is emitted if the target does not exist. BZ 516
10529
10530
iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10531
(get ACPI tables on Windows). This was apparently broken in version
10532
20070919.
10533
10534
AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10535
where
10536
the EOF happens immediately after the last table in the input file. Print
10537
completion message. Previously, no message was displayed in this case.
10538
10539
----------------------------------------
10540
01 July 2008. Summary of changes for version 20080701:
10541
10542
0) Git source tree / acpica.org
10543
10544
Fixed a problem where a git-clone from http would not transfer the entire
10545
source tree.
10546
10547
1) ACPI CA Core Subsystem:
10548
10549
Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10550
enable bit. Now performs a read-change-write of the enable register
10551
instead
10552
of simply writing out the cached enable mask. This will prevent
10553
inadvertent
10554
enabling of GPEs if a rogue GPE is received during initialization (before
10555
GPE
10556
handlers are installed.)
10557
10558
Implemented a copy for dynamically loaded tables. Previously, dynamically
10559
loaded tables were simply mapped - but on some machines this memory is
10560
corrupted after suspend. Now copy the table to a local buffer. For the
10561
OpRegion case, added checksum verify. Use the table length from the table
10562
header, not the region length. For the Buffer case, use the table length
10563
also. Dennis Noordsij, Bob Moore. BZ 10734
10564
10565
Fixed a problem where the same ACPI table could not be dynamically loaded
10566
and
10567
unloaded more than once. Without this change, a table cannot be loaded
10568
again
10569
once it has been loaded/unloaded one time. The current mechanism does not
10570
unregister a table upon an unload. During a load, if the same table is
10571
found,
10572
this no longer returns an exception. BZ 722
10573
10574
Fixed a problem where the wrong descriptor length was calculated for the
10575
EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10576
EndTag
10577
are calculated as 12 bytes long, but the actual length in the internal
10578
descriptor is 16 because of the round-up to 8 on the 64-bit build.
10579
Reported
10580
by Linn Crosetto. BZ 728
10581
10582
Fixed a possible memory leak in the Unload operator. The DdbHandle
10583
returned
10584
by Load() did not have its reference count decremented during unload,
10585
leading
10586
to a memory leak. Lin Ming. BZ 727
10587
10588
Fixed a possible memory leak when deleting thermal/processor objects. Any
10589
associated notify handlers (and objects) were not being deleted. Fiodor
10590
Suietov. BZ 506
10591
10592
Fixed the ordering of the ASCII names in the global mutex table to match
10593
the
10594
actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10595
only.
10596
Vegard Nossum. BZ 726
10597
10598
Enhanced the AcpiGetObjectInfo interface to return the number of required
10599
arguments if the object is a control method. Added this call to the
10600
debugger
10601
so the proper number of default arguments are passed to a method. This
10602
prevents a warning when executing methods from AcpiExec.
10603
10604
Added a check for an invalid handle in AcpiGetObjectInfo. Return
10605
AE_BAD_PARAMETER if input handle is invalid. BZ 474
10606
10607
Fixed an extraneous warning from exconfig.c on the 64-bit build.
10608
10609
Example Code and Data Size: These are the sizes for the OS-independent
10610
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10611
debug version of the code includes the debug output trace mechanism and
10612
has a
10613
much larger code and data size.
10614
10615
Previous Release:
10616
Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
10617
Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
10618
Current Release:
10619
Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
10620
Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
10621
10622
2) iASL Compiler/Disassembler and Tools:
10623
10624
iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10625
resource descriptor names.
10626
10627
iASL: Detect invalid ASCII characters in input (windows version). Removed
10628
the
10629
"-CF" flag from the flex compile, enables correct detection of non-ASCII
10630
characters in the input. BZ 441
10631
10632
iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10633
the
10634
"result of operation not used" warning when the DDB handle returned from
10635
LoadTable is not used. The warning is not needed. BZ 590
10636
10637
AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10638
method
10639
to
10640
pass address of table to the AML. Added option to disable OpRegion
10641
simulation
10642
to allow creation of an OpRegion with a real address that was passed to
10643
_CFG.
10644
All of this allows testing of the Load and Unload operators from
10645
AcpiExec.
10646
10647
Debugger: update tables command for unloaded tables. Handle unloaded
10648
tables
10649
and use the standard table header output routine.
10650
10651
----------------------------------------
10652
09 June 2008. Summary of changes for version 20080609:
10653
10654
1) ACPI CA Core Subsystem:
10655
10656
Implemented a workaround for reversed _PRT entries. A significant number
10657
of
10658
BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10659
change dynamically detects and repairs this problem. Provides
10660
compatibility
10661
with MS ACPI. BZ 6859
10662
10663
Simplified the internal ACPI hardware interfaces to eliminate the locking
10664
flag parameter from Register Read/Write. Added a new external interface,
10665
AcpiGetRegisterUnlocked.
10666
10667
Fixed a problem where the invocation of a GPE control method could hang.
10668
This
10669
was a regression introduced in 20080514. The new method argument count
10670
validation mechanism can enter an infinite loop when a GPE method is
10671
dispatched. Problem fixed by removing the obsolete code that passed GPE
10672
block
10673
information to the notify handler via the control method parameter
10674
pointer.
10675
10676
Fixed a problem where the _SST execution status was incorrectly returned
10677
to
10678
the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10679
in
10680
20080514. _SST is optional and a NOT_FOUND exception should never be
10681
returned. BZ 716
10682
10683
Fixed a problem where a deleted object could be accessed from within the
10684
AML
10685
parser. This was a regression introduced in version 20080123 as a fix for
10686
the
10687
Unload operator. Lin Ming. BZ 10669
10688
10689
Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10690
operands
10691
and eliminated the use of a negative index in a loop. Operands are now
10692
displayed in the correct order, not backwards. This also fixes a
10693
regression
10694
introduced in 20080514 on 64-bit systems where the elimination of
10695
ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10696
715
10697
10698
Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10699
exit
10700
path did not delete a locally allocated structure.
10701
10702
Updated definitions for the DMAR and SRAT tables to synchronize with the
10703
current specifications. Includes disassembler support.
10704
10705
Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10706
loop termination value was used. Loop terminated on iteration early,
10707
missing
10708
one mutex. Linn Crosetto
10709
10710
Example Code and Data Size: These are the sizes for the OS-independent
10711
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10712
debug version of the code includes the debug output trace mechanism and
10713
has a
10714
much larger code and data size.
10715
10716
Previous Release:
10717
Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
10718
Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
10719
Current Release:
10720
Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
10721
Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
10722
10723
2) iASL Compiler/Disassembler and Tools:
10724
10725
Disassembler: Implemented support for EisaId() within _CID objects. Now
10726
disassemble integer _CID objects back to EisaId invocations, including
10727
multiple integers within _CID packages. Includes single-step support for
10728
debugger also.
10729
10730
Disassembler: Added support for DMAR and SRAT table definition changes.
10731
10732
----------------------------------------
10733
14 May 2008. Summary of changes for version 20080514:
10734
10735
1) ACPI CA Core Subsystem:
10736
10737
Fixed a problem where GPEs were enabled too early during the ACPICA
10738
initialization. This could lead to "handler not installed" errors on some
10739
machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10740
This
10741
ensures that all operation regions and devices throughout the namespace
10742
have
10743
been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10744
10745
Implemented a change to the enter sleep code. Moved execution of the _GTS
10746
method to just before setting sleep enable bit. The execution was moved
10747
from
10748
AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10749
immediately before the SLP_EN bit is set, as per the ACPI specification.
10750
Luming Yu, BZ 1653.
10751
10752
Implemented a fix to disable unknown GPEs (2nd version). Now always
10753
disable
10754
the GPE, even if ACPICA thinks that that it is already disabled. It is
10755
possible that the AML or some other code has enabled the GPE unbeknownst
10756
to
10757
the ACPICA code.
10758
10759
Fixed a problem with the Field operator where zero-length fields would
10760
return
10761
an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10762
ASL
10763
field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10764
10765
Implemented a fix for the Load operator, now load the table at the
10766
namespace
10767
root. This reverts a change introduced in version 20071019. The table is
10768
now
10769
loaded at the namespace root even though this goes against the ACPI
10770
specification. This provides compatibility with other ACPI
10771
implementations.
10772
The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10773
Ming.
10774
10775
Fixed a problem where ACPICA would not Load() tables with unusual
10776
signatures.
10777
Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10778
acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10779
Therefore, signature validation is worthless. Apparently MS ACPI accepts
10780
such
10781
signatures, ACPICA must be compatible. BZ 10454.
10782
10783
Fixed a possible negative array index in AcpiUtValidateException. Added
10784
NULL
10785
fields to the exception string arrays to eliminate a -1 subtraction on
10786
the
10787
SubStatus field.
10788
10789
Updated the debug tracking macros to reduce overall code and data size.
10790
Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10791
instead of pointers to static strings. Jan Beulich and Bob Moore.
10792
10793
Implemented argument count checking in control method invocation via
10794
AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10795
too
10796
many. This applies only to extern programmatic control method execution,
10797
not
10798
method-to-method calls within the AML. Lin Ming.
10799
10800
Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10801
no
10802
longer needed, especially with the removal of 16-bit support. It was
10803
replaced
10804
mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10805
bit
10806
on
10807
32/64-bit platforms is required.
10808
10809
Added the C const qualifier for appropriate string constants -- mostly
10810
MODULE_NAME and printf format strings. Jan Beulich.
10811
10812
Example Code and Data Size: These are the sizes for the OS-independent
10813
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10814
debug version of the code includes the debug output trace mechanism and
10815
has a
10816
much larger code and data size.
10817
10818
Previous Release:
10819
Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
10820
Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
10821
Current Release:
10822
Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
10823
Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
10824
10825
2) iASL Compiler/Disassembler and Tools:
10826
10827
Implemented ACPI table revision ID validation in the disassembler. Zero
10828
is
10829
always invalid. For DSDTs, the ID controls the interpreter integer width.
10830
1
10831
means 32-bit and this is unusual. 2 or greater is 64-bit.
10832
10833
----------------------------------------
10834
21 March 2008. Summary of changes for version 20080321:
10835
10836
1) ACPI CA Core Subsystem:
10837
10838
Implemented an additional change to the GPE support in order to suppress
10839
spurious or stray GPEs. The AcpiEvDisableGpe function will now
10840
permanently
10841
disable incoming GPEs that are neither enabled nor disabled -- meaning
10842
that
10843
the GPE is unknown to the system. This should prevent future interrupt
10844
floods
10845
from that GPE. BZ 6217 (Zhang Rui)
10846
10847
Fixed a problem where NULL package elements were not returned to the
10848
AcpiEvaluateObject interface correctly. The element was simply ignored
10849
instead of returning a NULL ACPI_OBJECT package element, potentially
10850
causing
10851
a buffer overflow and/or confusing the caller who expected a fixed number
10852
of
10853
elements. BZ 10132 (Lin Ming, Bob Moore)
10854
10855
Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10856
Dword,
10857
Qword), Field, BankField, and IndexField operators when invoked from
10858
inside
10859
an executing control method. In this case, these operators created
10860
namespace
10861
nodes that were incorrectly left marked as permanent nodes instead of
10862
temporary nodes. This could cause a problem if there is race condition
10863
between an exiting control method and a running namespace walk. (Reported
10864
by
10865
Linn Crosetto)
10866
10867
Fixed a problem where the CreateField and CreateXXXField operators would
10868
incorrectly allow duplicate names (the name of the field) with no
10869
exception
10870
generated.
10871
10872
Implemented several changes for Notify handling. Added support for new
10873
Notify
10874
values (ACPI 2.0+) and improved the Notify debug output. Notify on
10875
PowerResource objects is no longer allowed, as per the ACPI
10876
specification.
10877
(Bob Moore, Zhang Rui)
10878
10879
All Reference Objects returned via the AcpiEvaluateObject interface are
10880
now
10881
marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10882
for
10883
NULL objects - either NULL package elements or unresolved named
10884
references.
10885
10886
Fixed a problem where an extraneous debug message was produced for
10887
package
10888
objects (when debugging enabled). The message "Package List length larger
10889
than NumElements count" is now produced in the correct case, and is now
10890
an
10891
error message rather than a debug message. Added a debug message for the
10892
opposite case, where NumElements is larger than the Package List (the
10893
package
10894
will be padded out with NULL elements as per the ACPI spec.)
10895
10896
Implemented several improvements for the output of the ASL "Debug" object
10897
to
10898
clarify and keep all data for a given object on one output line.
10899
10900
Fixed two size calculation issues with the variable-length Start
10901
Dependent
10902
resource descriptor.
10903
10904
Example Code and Data Size: These are the sizes for the OS-independent
10905
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10906
debug version of the code includes the debug output trace mechanism and
10907
has
10908
a much larger code and data size.
10909
10910
Previous Release:
10911
Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
10912
Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
10913
Current Release:
10914
Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
10915
Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
10916
10917
2) iASL Compiler/Disassembler and Tools:
10918
10919
Fixed a problem with the use of the Switch operator where execution of
10920
the
10921
containing method by multiple concurrent threads could cause an
10922
AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10923
actual Switch opcode, it must be simulated with local named temporary
10924
variables and if/else pairs. The solution chosen was to mark any method
10925
that
10926
uses Switch as Serialized, thus preventing multiple thread entries. BZ
10927
469.
10928
10929
----------------------------------------
10930
13 February 2008. Summary of changes for version 20080213:
10931
10932
1) ACPI CA Core Subsystem:
10933
10934
Implemented another MS compatibility design change for GPE/Notify
10935
handling.
10936
GPEs are now cleared/enabled asynchronously to allow all pending notifies
10937
to
10938
complete first. It is expected that the OSL will queue the enable request
10939
behind all pending notify requests (may require changes to the local host
10940
OSL
10941
in AcpiOsExecute). Alexey Starikovskiy.
10942
10943
Fixed a problem where buffer and package objects passed as arguments to a
10944
control method via the external AcpiEvaluateObject interface could cause
10945
an
10946
AE_AML_INTERNAL exception depending on the order and type of operators
10947
executed by the target control method.
10948
10949
Fixed a problem where resource descriptor size optimization could cause a
10950
problem when a _CRS resource template is passed to a _SRS method. The
10951
_SRS
10952
resource template must use the same descriptors (with the same size) as
10953
returned from _CRS. This change affects the following resource
10954
descriptors:
10955
IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
10956
9487)
10957
10958
Fixed a problem where a CopyObject to RegionField, BankField, and
10959
IndexField
10960
objects did not perform an implicit conversion as it should. These types
10961
must
10962
retain their initial type permanently as per the ACPI specification.
10963
However,
10964
a CopyObject to all other object types should not perform an implicit
10965
conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10966
10967
Fixed a problem with the AcpiGetDevices interface where the mechanism to
10968
match device CIDs did not examine the entire list of available CIDs, but
10969
instead aborted on the first non-matching CID. Andrew Patterson.
10970
10971
Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10972
was
10973
inadvertently changed to return a 16-bit value instead of a 32-bit value,
10974
truncating the upper dword of a 64-bit value. This macro is only used to
10975
display debug output, so no incorrect calculations were made. Also,
10976
reimplemented the macro so that a 64-bit shift is not performed by
10977
inefficient compilers.
10978
10979
Added missing va_end statements that should correspond with each va_start
10980
statement.
10981
10982
Example Code and Data Size: These are the sizes for the OS-independent
10983
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10984
debug version of the code includes the debug output trace mechanism and
10985
has
10986
a much larger code and data size.
10987
10988
Previous Release:
10989
Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
10990
Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
10991
Current Release:
10992
Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
10993
Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
10994
10995
2) iASL Compiler/Disassembler and Tools:
10996
10997
Implemented full disassembler support for the following new ACPI tables:
10998
BERT, EINJ, and ERST. Implemented partial disassembler support for the
10999
complicated HEST table. These tables support the Windows Hardware Error
11000
Architecture (WHEA).
11001
11002
----------------------------------------
11003
23 January 2008. Summary of changes for version 20080123:
11004
11005
1) ACPI CA Core Subsystem:
11006
11007
Added the 2008 copyright to all module headers and signons. This affects
11008
virtually every file in the ACPICA core subsystem, the iASL compiler, and
11009
the tools/utilities.
11010
11011
Fixed a problem with the SizeOf operator when used with Package and
11012
Buffer
11013
objects. These objects have deferred execution for some arguments, and
11014
the
11015
execution is now completed before the SizeOf is executed. This problem
11016
caused
11017
unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
11018
BZ
11019
9558
11020
11021
Implemented an enhancement to the interpreter "slack mode". In the
11022
absence
11023
of
11024
an explicit return or an implicitly returned object from the last
11025
executed
11026
opcode, a control method will now implicitly return an integer of value 0
11027
for
11028
Microsoft compatibility. (Lin Ming) BZ 392
11029
11030
Fixed a problem with the Load operator where an exception was not
11031
returned
11032
in
11033
the case where the table is already loaded. (Lin Ming) BZ 463
11034
11035
Implemented support for the use of DDBHandles as an Indexed Reference, as
11036
per
11037
the ACPI spec. (Lin Ming) BZ 486
11038
11039
Implemented support for UserTerm (Method invocation) for the Unload
11040
operator
11041
as per the ACPI spec. (Lin Ming) BZ 580
11042
11043
Fixed a problem with the LoadTable operator where the OemId and
11044
OemTableId
11045
input strings could cause unexpected failures if they were shorter than
11046
the
11047
maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
11048
11049
Implemented support for UserTerm (Method invocation) for the Unload
11050
operator
11051
as per the ACPI spec. (Lin Ming) BZ 580
11052
11053
Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
11054
HEST,
11055
IBFT, UEFI, WDAT. Disassembler support is forthcoming.
11056
11057
Example Code and Data Size: These are the sizes for the OS-independent
11058
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11059
debug version of the code includes the debug output trace mechanism and
11060
has
11061
a much larger code and data size.
11062
11063
Previous Release:
11064
Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
11065
Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
11066
Current Release:
11067
Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
11068
Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
11069
11070
2) iASL Compiler/Disassembler and Tools:
11071
11072
Implemented support in the disassembler for checksum validation on
11073
incoming
11074
binary DSDTs and SSDTs. If incorrect, a message is displayed within the
11075
table
11076
header dump at the start of the disassembly.
11077
11078
Implemented additional debugging information in the namespace listing
11079
file
11080
created during compilation. In addition to the namespace hierarchy, the
11081
full
11082
pathname to each namespace object is displayed.
11083
11084
Fixed a problem with the disassembler where invalid ACPI tables could
11085
cause
11086
faults or infinite loops.
11087
11088
Fixed an unexpected parse error when using the optional "parameter types"
11089
list in a control method declaration. (Lin Ming) BZ 397
11090
11091
Fixed a problem where two External declarations with the same name did
11092
not
11093
cause an error (Lin Ming) BZ 509
11094
11095
Implemented support for full TermArgs (adding Argx, Localx and method
11096
invocation) for the ParameterData parameter to the LoadTable operator.
11097
(Lin
11098
Ming) BZ 583,587
11099
11100
----------------------------------------
11101
19 December 2007. Summary of changes for version 20071219:
11102
11103
1) ACPI CA Core Subsystem:
11104
11105
Implemented full support for deferred execution for the TermArg string
11106
arguments for DataTableRegion. This enables forward references and full
11107
operand resolution for the three string arguments. Similar to
11108
OperationRegion
11109
deferred argument execution.) Lin Ming. BZ 430
11110
11111
Implemented full argument resolution support for the BankValue argument
11112
to
11113
BankField. Previously, only constants were supported, now any TermArg may
11114
be
11115
used. Lin Ming BZ 387, 393
11116
11117
Fixed a problem with AcpiGetDevices where the search of a branch of the
11118
device tree could be terminated prematurely. In accordance with the ACPI
11119
specification, the search down the current branch is terminated if a
11120
device
11121
is both not present and not functional (instead of just not present.)
11122
Yakui
11123
Zhao.
11124
11125
Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
11126
if
11127
the underlying AML code changed the GPE enable registers. Now, any
11128
unknown
11129
incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
11130
disabled
11131
instead of simply ignored. Rui Zhang.
11132
11133
Fixed a problem with Index Fields where the Index register was
11134
incorrectly
11135
limited to a maximum of 32 bits. Now any size may be used.
11136
11137
Fixed a couple memory leaks associated with "implicit return" objects
11138
when
11139
the AML Interpreter slack mode is enabled. Lin Ming BZ 349
11140
11141
Example Code and Data Size: These are the sizes for the OS-independent
11142
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11143
debug version of the code includes the debug output trace mechanism and
11144
has
11145
a much larger code and data size.
11146
11147
Previous Release:
11148
Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
11149
Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
11150
Current Release:
11151
Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
11152
Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
11153
11154
----------------------------------------
11155
14 November 2007. Summary of changes for version 20071114:
11156
11157
1) ACPI CA Core Subsystem:
11158
11159
Implemented event counters for each of the Fixed Events, the ACPI SCI
11160
(interrupt) itself, and control methods executed. Named
11161
AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
11162
These
11163
should be useful for debugging and statistics.
11164
11165
Implemented a new external interface, AcpiGetStatistics, to retrieve the
11166
contents of the various event counters. Returns the current values for
11167
AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
11168
AcpiMethodCount. The interface can be expanded in the future if new
11169
counters
11170
are added. Device drivers should use this interface rather than access
11171
the
11172
counters directly.
11173
11174
Fixed a problem with the FromBCD and ToBCD operators. With some
11175
compilers,
11176
the ShortDivide function worked incorrectly, causing problems with the
11177
BCD
11178
functions with large input values. A truncation from 64-bit to 32-bit
11179
inadvertently occurred. Internal BZ 435. Lin Ming
11180
11181
Fixed a problem with Index references passed as method arguments.
11182
References
11183
passed as arguments to control methods were dereferenced immediately
11184
(before
11185
control was passed to the called method). The references are now
11186
correctly
11187
passed directly to the called method. BZ 5389. Lin Ming
11188
11189
Fixed a problem with CopyObject used in conjunction with the Index
11190
operator.
11191
The reference was incorrectly dereferenced before the copy. The reference
11192
is
11193
now correctly copied. BZ 5391. Lin Ming
11194
11195
Fixed a problem with Control Method references within Package objects.
11196
These
11197
references are now correctly generated. This completes the package
11198
construction overhaul that began in version 20071019.
11199
11200
Example Code and Data Size: These are the sizes for the OS-independent
11201
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11202
debug version of the code includes the debug output trace mechanism and
11203
has
11204
a much larger code and data size.
11205
11206
Previous Release:
11207
Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
11208
Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
11209
Current Release:
11210
Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
11211
Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
11212
11213
11214
2) iASL Compiler/Disassembler and Tools:
11215
11216
The AcpiExec utility now installs handlers for all of the predefined
11217
Operation Region types. New types supported are: PCI_Config, CMOS, and
11218
PCIBARTarget.
11219
11220
Fixed a problem with the 64-bit version of AcpiExec where the extended
11221
(64-
11222
bit) address fields for the DSDT and FACS within the FADT were not being
11223
used, causing truncation of the upper 32-bits of these addresses. Lin
11224
Ming
11225
and Bob Moore
11226
11227
----------------------------------------
11228
19 October 2007. Summary of changes for version 20071019:
11229
11230
1) ACPI CA Core Subsystem:
11231
11232
Fixed a problem with the Alias operator when the target of the alias is a
11233
named ASL operator that opens a new scope -- Scope, Device,
11234
PowerResource,
11235
Processor, and ThermalZone. In these cases, any children of the original
11236
operator could not be accessed via the alias, potentially causing
11237
unexpected
11238
AE_NOT_FOUND exceptions. (BZ 9067)
11239
11240
Fixed a problem with the Package operator where all named references were
11241
created as object references and left otherwise unresolved. According to
11242
the
11243
ACPI specification, a Package can only contain Data Objects or references
11244
to
11245
control methods. The implication is that named references to Data Objects
11246
(Integer, Buffer, String, Package, BufferField, Field) should be resolved
11247
immediately upon package creation. This is the approach taken with this
11248
change. References to all other named objects (Methods, Devices, Scopes,
11249
etc.) are all now properly created as reference objects. (BZ 5328)
11250
11251
Reverted a change to Notify handling that was introduced in version
11252
20070508. This version changed the Notify handling from asynchronous to
11253
fully synchronous (Device driver Notify handling with respect to the
11254
Notify
11255
ASL operator). It was found that this change caused more problems than it
11256
solved and was removed by most users.
11257
11258
Fixed a problem with the Increment and Decrement operators where the type
11259
of
11260
the target object could be unexpectedly and incorrectly changed. (BZ 353)
11261
Lin Ming.
11262
11263
Fixed a problem with the Load and LoadTable operators where the table
11264
location within the namespace was ignored. Instead, the table was always
11265
loaded into the root or current scope. Lin Ming.
11266
11267
Fixed a problem with the Load operator when loading a table from a buffer
11268
object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
11269
11270
Fixed a problem with the Debug object where a store of a DdbHandle
11271
reference
11272
object to the Debug object could cause a fault.
11273
11274
Added a table checksum verification for the Load operator, in the case
11275
where
11276
the load is from a buffer. (BZ 578).
11277
11278
Implemented additional parameter validation for the LoadTable operator.
11279
The
11280
length of the input strings SignatureString, OemIdString, and OemTableId
11281
are
11282
now checked for maximum lengths. (BZ 582) Lin Ming.
11283
11284
Example Code and Data Size: These are the sizes for the OS-independent
11285
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11286
debug version of the code includes the debug output trace mechanism and
11287
has
11288
a much larger code and data size.
11289
11290
Previous Release:
11291
Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
11292
Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
11293
Current Release:
11294
Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
11295
Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
11296
11297
11298
2) iASL Compiler/Disassembler:
11299
11300
Fixed a problem where if a single file was specified and the file did not
11301
exist, no error message was emitted. (Introduced with wildcard support in
11302
version 20070917.)
11303
11304
----------------------------------------
11305
19 September 2007. Summary of changes for version 20070919:
11306
11307
1) ACPI CA Core Subsystem:
11308
11309
Designed and implemented new external interfaces to install and remove
11310
handlers for ACPI table-related events. Current events that are defined
11311
are
11312
LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
11313
they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
11314
AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
11315
11316
Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
11317
(acpi_serialized option on Linux) could cause some systems to hang during
11318
initialization. (Bob Moore) BZ 8171
11319
11320
Fixed a problem where objects of certain types (Device, ThermalZone,
11321
Processor, PowerResource) can be not found if they are declared and
11322
referenced from within the same control method (Lin Ming) BZ 341
11323
11324
Example Code and Data Size: These are the sizes for the OS-independent
11325
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11326
debug version of the code includes the debug output trace mechanism and
11327
has
11328
a much larger code and data size.
11329
11330
Previous Release:
11331
Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
11332
Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
11333
Current Release:
11334
Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
11335
Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
11336
11337
11338
2) iASL Compiler/Disassembler:
11339
11340
Implemented support to allow multiple files to be compiled/disassembled
11341
in
11342
a
11343
single invocation. This includes command line wildcard support for both
11344
the
11345
Windows and Unix versions of the compiler. This feature simplifies the
11346
disassembly and compilation of multiple ACPI tables in a single
11347
directory.
11348
11349
----------------------------------------
11350
08 May 2007. Summary of changes for version 20070508:
11351
11352
1) ACPI CA Core Subsystem:
11353
11354
Implemented a Microsoft compatibility design change for the handling of
11355
the
11356
Notify AML operator. Previously, notify handlers were dispatched and
11357
executed completely asynchronously in a deferred thread. The new design
11358
still executes the notify handlers in a different thread, but the
11359
original
11360
thread that executed the Notify() now waits at a synchronization point
11361
for
11362
the notify handler to complete. Some machines depend on a synchronous
11363
Notify
11364
operator in order to operate correctly.
11365
11366
Implemented support to allow Package objects to be passed as method
11367
arguments to the external AcpiEvaluateObject interface. Previously, this
11368
would return the AE_NOT_IMPLEMENTED exception. This feature had not been
11369
implemented since there were no reserved control methods that required it
11370
until recently.
11371
11372
Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
11373
that
11374
contained invalid non-zero values in reserved fields could cause later
11375
failures because these fields have meaning in later revisions of the
11376
FADT.
11377
For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
11378
fields
11379
are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
11380
11381
Fixed a problem where the Global Lock handle was not properly updated if
11382
a
11383
thread that acquired the Global Lock via executing AML code then
11384
attempted
11385
to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
11386
Joe
11387
Liu.
11388
11389
Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
11390
could be corrupted if the interrupt being removed was at the head of the
11391
list. Reported by Linn Crosetto.
11392
11393
Example Code and Data Size: These are the sizes for the OS-independent
11394
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11395
debug version of the code includes the debug output trace mechanism and
11396
has
11397
a much larger code and data size.
11398
11399
Previous Release:
11400
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
11401
Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
11402
Current Release:
11403
Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
11404
Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
11405
11406
----------------------------------------
11407
20 March 2007. Summary of changes for version 20070320:
11408
11409
1) ACPI CA Core Subsystem:
11410
11411
Implemented a change to the order of interpretation and evaluation of AML
11412
operand objects within the AML interpreter. The interpreter now evaluates
11413
operands in the order that they appear in the AML stream (and the
11414
corresponding ASL code), instead of in the reverse order (after the
11415
entire
11416
operand list has been parsed). The previous behavior caused several
11417
subtle
11418
incompatibilities with the Microsoft AML interpreter as well as being
11419
somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
11420
11421
Implemented a change to the ACPI Global Lock support. All interfaces to
11422
the
11423
global lock now allow the same thread to acquire the lock multiple times.
11424
This affects the AcpiAcquireGlobalLock external interface to the global
11425
lock
11426
as well as the internal use of the global lock to support AML fields -- a
11427
control method that is holding the global lock can now simultaneously
11428
access
11429
AML fields that require global lock protection. Previously, in both
11430
cases,
11431
this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
11432
to
11433
AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
11434
Controller. There is no change to the behavior of the AML Acquire
11435
operator,
11436
as this can already be used to acquire a mutex multiple times by the same
11437
thread. BZ 8066. With assistance from Alexey Starikovskiy.
11438
11439
Fixed a problem where invalid objects could be referenced in the AML
11440
Interpreter after error conditions. During operand evaluation, ensure
11441
that
11442
the internal "Return Object" field is cleared on error and only valid
11443
pointers are stored there. Caused occasional access to deleted objects
11444
that
11445
resulted in "large reference count" warning messages. Valery Podrezov.
11446
11447
Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
11448
on
11449
deeply nested control method invocations. BZ 7873, local BZ 487. Valery
11450
Podrezov.
11451
11452
Fixed an internal problem with the handling of result objects on the
11453
interpreter result stack. BZ 7872. Valery Podrezov.
11454
11455
Removed obsolete code that handled the case where AML_NAME_OP is the
11456
target
11457
of a reference (Reference.Opcode). This code was no longer necessary. BZ
11458
7874. Valery Podrezov.
11459
11460
Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
11461
was
11462
a
11463
remnant from the previously discontinued 16-bit support.
11464
11465
Example Code and Data Size: These are the sizes for the OS-independent
11466
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11467
debug version of the code includes the debug output trace mechanism and
11468
has
11469
a much larger code and data size.
11470
11471
Previous Release:
11472
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
11473
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
11474
Current Release:
11475
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
11476
Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
11477
11478
----------------------------------------
11479
26 January 2007. Summary of changes for version 20070126:
11480
11481
1) ACPI CA Core Subsystem:
11482
11483
Added the 2007 copyright to all module headers and signons. This affects
11484
virtually every file in the ACPICA core subsystem, the iASL compiler, and
11485
the utilities.
11486
11487
Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
11488
during a table load. A bad pointer was passed in the case where the DSDT
11489
is
11490
overridden, causing a fault in this case.
11491
11492
Example Code and Data Size: These are the sizes for the OS-independent
11493
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11494
debug version of the code includes the debug output trace mechanism and
11495
has
11496
a much larger code and data size.
11497
11498
Previous Release:
11499
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
11500
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
11501
Current Release:
11502
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
11503
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
11504
11505
----------------------------------------
11506
15 December 2006. Summary of changes for version 20061215:
11507
11508
1) ACPI CA Core Subsystem:
11509
11510
Support for 16-bit ACPICA has been completely removed since it is no
11511
longer
11512
necessary and it clutters the code. All 16-bit macros, types, and
11513
conditional compiles have been removed, cleaning up and simplifying the
11514
code
11515
across the entire subsystem. DOS support is no longer needed since the
11516
bootable Linux firmware kit is now available.
11517
11518
The handler for the Global Lock is now removed during AcpiTerminate to
11519
enable a clean subsystem restart, via the implementation of the
11520
AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11521
HP)
11522
11523
Implemented enhancements to the multithreading support within the
11524
debugger
11525
to enable improved multithreading debugging and evaluation of the
11526
subsystem.
11527
(Valery Podrezov)
11528
11529
Debugger: Enhanced the Statistics/Memory command to emit the total
11530
(maximum)
11531
memory used during the execution, as well as the maximum memory consumed
11532
by
11533
each of the various object types. (Valery Podrezov)
11534
11535
Example Code and Data Size: These are the sizes for the OS-independent
11536
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11537
debug version of the code includes the debug output trace mechanism and
11538
has
11539
a much larger code and data size.
11540
11541
Previous Release:
11542
Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
11543
Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
11544
Current Release:
11545
Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
11546
Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
11547
11548
11549
2) iASL Compiler/Disassembler and Tools:
11550
11551
AcpiExec: Implemented a new option (-m) to display full memory use
11552
statistics upon subsystem/program termination. (Valery Podrezov)
11553
11554
----------------------------------------
11555
09 November 2006. Summary of changes for version 20061109:
11556
11557
1) ACPI CA Core Subsystem:
11558
11559
Optimized the Load ASL operator in the case where the source operand is
11560
an
11561
operation region. Simply map the operation region memory, instead of
11562
performing a bytewise read. (Region must be of type SystemMemory, see
11563
below.)
11564
11565
Fixed the Load ASL operator for the case where the source operand is a
11566
region field. A buffer object is also allowed as the source operand. BZ
11567
480
11568
11569
Fixed a problem where the Load ASL operator allowed the source operand to
11570
be
11571
an operation region of any type. It is now restricted to regions of type
11572
SystemMemory, as per the ACPI specification. BZ 481
11573
11574
Additional cleanup and optimizations for the new Table Manager code.
11575
11576
AcpiEnable will now fail if all of the required ACPI tables are not
11577
loaded
11578
(FADT, FACS, DSDT). BZ 477
11579
11580
Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11581
this
11582
header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11583
manually optimized to be aligned and will not work if it is byte-packed.
11584
11585
Example Code and Data Size: These are the sizes for the OS-independent
11586
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11587
debug version of the code includes the debug output trace mechanism and
11588
has
11589
a much larger code and data size.
11590
11591
Previous Release:
11592
Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
11593
Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
11594
Current Release:
11595
Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
11596
Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
11597
11598
11599
2) iASL Compiler/Disassembler and Tools:
11600
11601
Fixed a problem where the presence of the _OSI predefined control method
11602
within complex expressions could cause an internal compiler error.
11603
11604
AcpiExec: Implemented full region support for multiple address spaces.
11605
SpaceId is now part of the REGION object. BZ 429
11606
11607
----------------------------------------
11608
11 October 2006. Summary of changes for version 20061011:
11609
11610
1) ACPI CA Core Subsystem:
11611
11612
Completed an AML interpreter performance enhancement for control method
11613
execution. Previously a 2-pass parse/execution, control methods are now
11614
completely parsed and executed in a single pass. This improves overall
11615
interpreter performance by ~25%, reduces code size, and reduces CPU stack
11616
use. (Valery Podrezov + interpreter changes in version 20051202 that
11617
eliminated namespace loading during the pass one parse.)
11618
11619
Implemented _CID support for PCI Root Bridge detection. If the _HID does
11620
not
11621
match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11622
now
11623
obtained and also checked for an ID match.
11624
11625
Implemented additional support for the PCI _ADR execution: upsearch until
11626
a
11627
device scope is found before executing _ADR. This allows PCI_Config
11628
operation regions to be declared locally within control methods
11629
underneath
11630
PCI device objects.
11631
11632
Fixed a problem with a possible race condition between threads executing
11633
AcpiWalkNamespace and the AML interpreter. This condition was removed by
11634
modifying AcpiWalkNamespace to (by default) ignore all temporary
11635
namespace
11636
entries created during any concurrent control method execution. An
11637
additional namespace race condition is known to exist between
11638
AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11639
investigation.
11640
11641
Restructured the AML ParseLoop function, breaking it into several
11642
subfunctions in order to reduce CPU stack use and improve
11643
maintainability.
11644
(Mikhail Kouzmich)
11645
11646
AcpiGetHandle: Fix for parameter validation to detect invalid
11647
combinations
11648
of prefix handle and pathname. BZ 478
11649
11650
Example Code and Data Size: These are the sizes for the OS-independent
11651
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11652
debug version of the code includes the debug output trace mechanism and
11653
has
11654
a much larger code and data size.
11655
11656
Previous Release:
11657
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
11658
Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
11659
Current Release:
11660
Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
11661
Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
11662
11663
2) iASL Compiler/Disassembler and Tools:
11664
11665
Ported the -g option (get local ACPI tables) to the new ACPICA Table
11666
Manager
11667
to restore original behavior.
11668
11669
----------------------------------------
11670
27 September 2006. Summary of changes for version 20060927:
11671
11672
1) ACPI CA Core Subsystem:
11673
11674
Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11675
These functions now use a spinlock for mutual exclusion and the interrupt
11676
level indication flag is not needed.
11677
11678
Fixed a problem with the Global Lock where the lock could appear to be
11679
obtained before it is actually obtained. The global lock semaphore was
11680
inadvertently created with one unit instead of zero units. (BZ 464)
11681
Fiodor
11682
Suietov.
11683
11684
Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11685
during
11686
a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11687
11688
Example Code and Data Size: These are the sizes for the OS-independent
11689
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11690
debug version of the code includes the debug output trace mechanism and
11691
has
11692
a much larger code and data size.
11693
11694
Previous Release:
11695
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
11696
Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
11697
Current Release:
11698
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
11699
Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
11700
11701
11702
2) iASL Compiler/Disassembler and Tools:
11703
11704
Fixed a compilation problem with the pre-defined Resource Descriptor
11705
field
11706
names where an "object does not exist" error could be incorrectly
11707
generated
11708
if the parent ResourceTemplate pathname places the template within a
11709
different namespace scope than the current scope. (BZ 7212)
11710
11711
Fixed a problem where the compiler could hang after syntax errors
11712
detected
11713
in an ElseIf construct. (BZ 453)
11714
11715
Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11716
operator. An incorrect output filename was produced when this parameter
11717
was
11718
a null string (""). Now, the original input filename is used as the AML
11719
output filename, with an ".aml" extension.
11720
11721
Implemented a generic batch command mode for the AcpiExec utility
11722
(execute
11723
any AML debugger command) (Valery Podrezov).
11724
11725
----------------------------------------
11726
12 September 2006. Summary of changes for version 20060912:
11727
11728
1) ACPI CA Core Subsystem:
11729
11730
Enhanced the implementation of the "serialized mode" of the interpreter
11731
(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11732
specified, instead of creating a serialization semaphore per control
11733
method,
11734
the interpreter lock is simply no longer released before a blocking
11735
operation during control method execution. This effectively makes the AML
11736
Interpreter single-threaded. The overhead of a semaphore per-method is
11737
eliminated.
11738
11739
Fixed a regression where an error was no longer emitted if a control
11740
method
11741
attempts to create 2 objects of the same name. This once again returns
11742
AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11743
that
11744
will dynamically serialize the control method to possible prevent future
11745
errors. (BZ 440)
11746
11747
Integrated a fix for a problem with PCI Express HID detection in the PCI
11748
Config Space setup procedure. (BZ 7145)
11749
11750
Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11751
AcpiHwInitialize function - the FADT registers are now validated when the
11752
table is loaded.
11753
11754
Added two new warnings during FADT verification - 1) if the FADT is
11755
larger
11756
than the largest known FADT version, and 2) if there is a mismatch
11757
between
11758
a
11759
32-bit block address and the 64-bit X counterpart (when both are non-
11760
zero.)
11761
11762
Example Code and Data Size: These are the sizes for the OS-independent
11763
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11764
debug version of the code includes the debug output trace mechanism and
11765
has
11766
a much larger code and data size.
11767
11768
Previous Release:
11769
Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
11770
Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
11771
Current Release:
11772
Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
11773
Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
11774
11775
11776
2) iASL Compiler/Disassembler and Tools:
11777
11778
Fixed a problem with the implementation of the Switch() operator where
11779
the
11780
temporary variable was declared too close to the actual Switch, instead
11781
of
11782
at method level. This could cause a problem if the Switch() operator is
11783
within a while loop, causing an error on the second iteration. (BZ 460)
11784
11785
Disassembler - fix for error emitted for unknown type for target of scope
11786
operator. Now, ignore it and continue.
11787
11788
Disassembly of an FADT now verifies the input FADT and reports any errors
11789
found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11790
11791
Disassembly of raw data buffers with byte initialization data now
11792
prefixes
11793
each output line with the current buffer offset.
11794
11795
Disassembly of ASF! table now includes all variable-length data fields at
11796
the end of some of the subtables.
11797
11798
The disassembler now emits a comment if a buffer appears to be a
11799
ResourceTemplate, but cannot be disassembled as such because the EndTag
11800
does
11801
not appear at the very end of the buffer.
11802
11803
AcpiExec - Added the "-t" command line option to enable the serialized
11804
mode
11805
of the AML interpreter.
11806
11807
----------------------------------------
11808
31 August 2006. Summary of changes for version 20060831:
11809
11810
1) ACPI CA Core Subsystem:
11811
11812
Miscellaneous fixes for the Table Manager:
11813
- Correctly initialize internal common FADT for all 64-bit "X" fields
11814
- Fixed a couple table mapping issues during table load
11815
- Fixed a couple alignment issues for IA64
11816
- Initialize input array to zero in AcpiInitializeTables
11817
- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11818
AcpiGetTableByIndex
11819
11820
Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11821
now
11822
immediately disabled to prevent the waking GPE from firing again and to
11823
prevent other wake GPEs from interrupting the wake process.
11824
11825
Added the AcpiGpeCount global that tracks the number of processed GPEs,
11826
to
11827
be used for debugging systems with a large number of ACPI interrupts.
11828
11829
Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11830
both the ACPICA headers and the disassembler.
11831
11832
Example Code and Data Size: These are the sizes for the OS-independent
11833
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11834
debug version of the code includes the debug output trace mechanism and
11835
has
11836
a much larger code and data size.
11837
11838
Previous Release:
11839
Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
11840
Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
11841
Current Release:
11842
Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
11843
Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
11844
11845
11846
2) iASL Compiler/Disassembler and Tools:
11847
11848
Disassembler support for the DMAR ACPI table.
11849
11850
----------------------------------------
11851
23 August 2006. Summary of changes for version 20060823:
11852
11853
1) ACPI CA Core Subsystem:
11854
11855
The Table Manager component has been completely redesigned and
11856
reimplemented. The new design is much simpler, and reduces the overall
11857
code
11858
and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11859
is
11860
now possible to obtain the ACPI tables very early during kernel
11861
initialization, even before dynamic memory management is initialized.
11862
(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11863
11864
Obsolete ACPICA interfaces:
11865
11866
- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11867
init
11868
time).
11869
- AcpiLoadTable: Not needed.
11870
- AcpiUnloadTable: Not needed.
11871
11872
New ACPICA interfaces:
11873
11874
- AcpiInitializeTables: Must be called before the table manager can be
11875
used.
11876
- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11877
allocated memory after it becomes available.
11878
- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11879
tables
11880
in the RSDT/XSDT.
11881
11882
Other ACPICA changes:
11883
11884
- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11885
Use
11886
AcpiOsUnmapMemory to free this mapping.
11887
- AcpiGetTable returns the actual mapped table. The mapping is managed
11888
internally and must not be deleted by the caller. Use of this interface
11889
causes no additional dynamic memory allocation.
11890
- AcpiFindRootPointer: Support for physical addressing has been
11891
eliminated,
11892
it appeared to be unused.
11893
- The interface to AcpiOsMapMemory has changed to be consistent with the
11894
other allocation interfaces.
11895
- The interface to AcpiOsGetRootPointer has changed to eliminate
11896
unnecessary
11897
parameters.
11898
- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
11899
64-
11900
bit platforms. Was previously 64 bits on all platforms.
11901
- The interface to the ACPI Global Lock acquire/release macros have
11902
changed
11903
slightly since ACPICA no longer keeps a local copy of the FACS with a
11904
constructed pointer to the actual global lock.
11905
11906
Porting to the new table manager:
11907
11908
- AcpiInitializeTables: Must be called once, and can be called anytime
11909
during the OS initialization process. It allows the host to specify an
11910
area
11911
of memory to be used to store the internal version of the RSDT/XSDT (root
11912
table). This allows the host to access ACPI tables before memory
11913
management
11914
is initialized and running.
11915
- AcpiReallocateRootTable: Can be called after memory management is
11916
running
11917
to copy the root table to a dynamically allocated array, freeing up the
11918
scratch memory specified in the call to AcpiInitializeTables.
11919
- AcpiSubsystemInitialize: This existing interface is independent of the
11920
Table Manager, and does not have to be called before the Table Manager
11921
can
11922
be used, it only must be called before the rest of ACPICA can be used.
11923
- ACPI Tables: Some changes have been made to the names and structure of
11924
the
11925
actbl.h and actbl1.h header files and may require changes to existing
11926
code.
11927
For example, bitfields have been completely removed because of their lack
11928
of
11929
portability across C compilers.
11930
- Update interfaces to the Global Lock acquire/release macros if local
11931
versions are used. (see acwin.h)
11932
11933
Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11934
11935
New files: tbfind.c
11936
11937
Example Code and Data Size: These are the sizes for the OS-independent
11938
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11939
debug version of the code includes the debug output trace mechanism and
11940
has
11941
a much larger code and data size.
11942
11943
Previous Release:
11944
Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
11945
Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
11946
Current Release:
11947
Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
11948
Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
11949
11950
11951
2) iASL Compiler/Disassembler and Tools:
11952
11953
No changes for this release.
11954
11955
----------------------------------------
11956
21 July 2006. Summary of changes for version 20060721:
11957
11958
1) ACPI CA Core Subsystem:
11959
11960
The full source code for the ASL test suite used to validate the iASL
11961
compiler and the ACPICA core subsystem is being released with the ACPICA
11962
source for the first time. The source is contained in a separate package
11963
and
11964
consists of over 1100 files that exercise all ASL/AML operators. The
11965
package
11966
should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11967
Fiodor
11968
Suietov)
11969
11970
Completed a new design and implementation for support of the ACPI Global
11971
Lock. On the OS side, the global lock is now treated as a standard AML
11972
mutex. Previously, multiple OS threads could "acquire" the global lock
11973
simultaneously. However, this could cause the BIOS to be starved out of
11974
the
11975
lock - especially in cases such as the Embedded Controller driver where
11976
there is a tight coupling between the OS and the BIOS.
11977
11978
Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11979
The Global Lock interrupt handler no longer queues the execution of a
11980
separate thread to signal the global lock semaphore. Instead, the
11981
semaphore
11982
is signaled directly from the interrupt handler.
11983
11984
Implemented support within the AML interpreter for package objects that
11985
contain a larger AML length (package list length) than the package
11986
element
11987
count. In this case, the length of the package is truncated to match the
11988
package element count. Some BIOS code apparently modifies the package
11989
length
11990
on the fly, and this change supports this behavior. Provides
11991
compatibility
11992
with the MS AML interpreter. (With assistance from Fiodor Suietov)
11993
11994
Implemented a temporary fix for the BankValue parameter of a Bank Field
11995
to
11996
support all constant values, now including the Zero and One opcodes.
11997
Evaluation of this parameter must eventually be converted to a full
11998
TermArg
11999
evaluation. A not-implemented error is now returned (temporarily) for
12000
non-
12001
constant values for this parameter.
12002
12003
Fixed problem reports (Fiodor Suietov) integrated:
12004
- Fix for premature object deletion after CopyObject on Operation Region
12005
(BZ
12006
350)
12007
12008
Example Code and Data Size: These are the sizes for the OS-independent
12009
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12010
debug version of the code includes the debug output trace mechanism and
12011
has
12012
a much larger code and data size.
12013
12014
Previous Release:
12015
Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total
12016
Debug Version: 160.9K Code, 65.1K Data, 226.0K Total
12017
Current Release:
12018
Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
12019
Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
12020
12021
12022
2) iASL Compiler/Disassembler and Tools:
12023
12024
No changes for this release.
12025
12026
----------------------------------------
12027
07 July 2006. Summary of changes for version 20060707:
12028
12029
1) ACPI CA Core Subsystem:
12030
12031
Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
12032
that do not allow the initialization of address pointers within packed
12033
structures - even though the hardware itself may support misaligned
12034
transfers. Some of the debug data structures are packed by default to
12035
minimize size.
12036
12037
Added an error message for the case where AcpiOsGetThreadId() returns
12038
zero.
12039
A non-zero value is required by the core ACPICA code to ensure the proper
12040
operation of AML mutexes and recursive control methods.
12041
12042
The DSDT is now the only ACPI table that determines whether the AML
12043
interpreter is in 32-bit or 64-bit mode. Not really a functional change,
12044
but
12045
the hooks for per-table 32/64 switching have been removed from the code.
12046
A
12047
clarification to the ACPI specification is forthcoming in ACPI 3.0B.
12048
12049
Fixed a possible leak of an OwnerID in the error path of
12050
AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
12051
deletion to a single place in AcpiTbUninstallTable to correct possible
12052
leaks
12053
when using the AcpiTbDeleteTablesByType interface (with assistance from
12054
Lance Ortiz.)
12055
12056
Fixed a problem with Serialized control methods where the semaphore
12057
associated with the method could be over-signaled after multiple method
12058
invocations.
12059
12060
Fixed two issues with the locking of the internal namespace data
12061
structure.
12062
Both the Unload() operator and AcpiUnloadTable interface now lock the
12063
namespace during the namespace deletion associated with the table unload
12064
(with assistance from Linn Crosetto.)
12065
12066
Fixed problem reports (Valery Podrezov) integrated:
12067
- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
12068
12069
Fixed problem reports (Fiodor Suietov) integrated:
12070
- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
12071
- On Address Space handler deletion, needless deactivation call (BZ 374)
12072
- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
12073
375)
12074
- Possible memory leak, Notify sub-objects of Processor, Power,
12075
ThermalZone
12076
(BZ 376)
12077
- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
12078
- Minimum Length of RSDT should be validated (BZ 379)
12079
- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
12080
Handler (BZ (380)
12081
- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
12082
loaded
12083
(BZ 381)
12084
12085
Example Code and Data Size: These are the sizes for the OS-independent
12086
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12087
debug version of the code includes the debug output trace mechanism and
12088
has
12089
a much larger code and data size.
12090
12091
Previous Release:
12092
Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
12093
Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
12094
Current Release:
12095
Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
12096
Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
12097
12098
12099
2) iASL Compiler/Disassembler and Tools:
12100
12101
Fixed problem reports:
12102
Compiler segfault when ASL contains a long (>1024) String declaration (BZ
12103
436)
12104
12105
----------------------------------------
12106
23 June 2006. Summary of changes for version 20060623:
12107
12108
1) ACPI CA Core Subsystem:
12109
12110
Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
12111
allows the type to be customized to the host OS for improved efficiency
12112
(since a spinlock is usually a very small object.)
12113
12114
Implemented support for "ignored" bits in the ACPI registers. According
12115
to
12116
the ACPI specification, these bits should be preserved when writing the
12117
registers via a read/modify/write cycle. There are 3 bits preserved in
12118
this
12119
manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
12120
12121
Implemented the initial deployment of new OSL mutex interfaces. Since
12122
some
12123
host operating systems have separate mutex and semaphore objects, this
12124
feature was requested. The base code now uses mutexes (and the new mutex
12125
interfaces) wherever a binary semaphore was used previously. However, for
12126
the current release, the mutex interfaces are defined as macros to map
12127
them
12128
to the existing semaphore interfaces. Therefore, no OSL changes are
12129
required
12130
at this time. (See acpiosxf.h)
12131
12132
Fixed several problems with the support for the control method SyncLevel
12133
parameter. The SyncLevel now works according to the ACPI specification
12134
and
12135
in concert with the Mutex SyncLevel parameter, since the current
12136
SyncLevel
12137
is a property of the executing thread. Mutual exclusion for control
12138
methods
12139
is now implemented with a mutex instead of a semaphore.
12140
12141
Fixed three instances of the use of the C shift operator in the bitfield
12142
support code (exfldio.c) to avoid the use of a shift value larger than
12143
the
12144
target data width. The behavior of C compilers is undefined in this case
12145
and
12146
can cause unpredictable results, and therefore the case must be detected
12147
and
12148
avoided. (Fiodor Suietov)
12149
12150
Added an info message whenever an SSDT or OEM table is loaded dynamically
12151
via the Load() or LoadTable() ASL operators. This should improve
12152
debugging
12153
capability since it will show exactly what tables have been loaded
12154
(beyond
12155
the tables present in the RSDT/XSDT.)
12156
12157
Example Code and Data Size: These are the sizes for the OS-independent
12158
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12159
debug version of the code includes the debug output trace mechanism and
12160
has
12161
a much larger code and data size.
12162
12163
Previous Release:
12164
Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
12165
Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
12166
Current Release:
12167
Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
12168
Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
12169
12170
12171
2) iASL Compiler/Disassembler and Tools:
12172
12173
No changes for this release.
12174
12175
----------------------------------------
12176
08 June 2006. Summary of changes for version 20060608:
12177
12178
1) ACPI CA Core Subsystem:
12179
12180
Converted the locking mutex used for the ACPI hardware to a spinlock.
12181
This
12182
change should eliminate all problems caused by attempting to acquire a
12183
semaphore at interrupt level, and it means that all ACPICA external
12184
interfaces that directly access the ACPI hardware can be safely called
12185
from
12186
interrupt level. OSL code that implements the semaphore interfaces should
12187
be
12188
able to eliminate any workarounds for being called at interrupt level.
12189
12190
Fixed a regression introduced in 20060526 where the ACPI device
12191
initialization could be prematurely aborted with an AE_NOT_FOUND if a
12192
device
12193
did not have an optional _INI method.
12194
12195
Fixed an IndexField issue where a write to the Data Register should be
12196
limited in size to the AccessSize (width) of the IndexField itself. (BZ
12197
433,
12198
Fiodor Suietov)
12199
12200
Fixed problem reports (Valery Podrezov) integrated:
12201
- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
12202
12203
Fixed problem reports (Fiodor Suietov) integrated:
12204
- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
12205
12206
Removed four global mutexes that were obsolete and were no longer being
12207
used.
12208
12209
Example Code and Data Size: These are the sizes for the OS-independent
12210
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12211
debug version of the code includes the debug output trace mechanism and
12212
has
12213
a much larger code and data size.
12214
12215
Previous Release:
12216
Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
12217
Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
12218
Current Release:
12219
Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
12220
Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
12221
12222
12223
2) iASL Compiler/Disassembler and Tools:
12224
12225
Fixed a fault when using -g option (get tables from registry) on Windows
12226
machines.
12227
12228
Fixed problem reports integrated:
12229
- Generate error if CreateField NumBits parameter is zero. (BZ 405)
12230
- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
12231
Suietov)
12232
- Global table revision override (-r) is ignored (BZ 413)
12233
12234
----------------------------------------
12235
26 May 2006. Summary of changes for version 20060526:
12236
12237
1) ACPI CA Core Subsystem:
12238
12239
Restructured, flattened, and simplified the internal interfaces for
12240
namespace object evaluation - resulting in smaller code, less CPU stack
12241
use,
12242
and fewer interfaces. (With assistance from Mikhail Kouzmich)
12243
12244
Fixed a problem with the CopyObject operator where the first parameter
12245
was
12246
not typed correctly for the parser, interpreter, compiler, and
12247
disassembler.
12248
Caused various errors and unexpected behavior.
12249
12250
Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
12251
produced incorrect results with some C compilers. Since the behavior of C
12252
compilers when the shift value is larger than the datatype width is
12253
apparently not well defined, the interpreter now detects this condition
12254
and
12255
simply returns zero as expected in all such cases. (BZ 395)
12256
12257
Fixed problem reports (Valery Podrezov) integrated:
12258
- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
12259
- Allow interpreter to handle nested method declarations (BZ 5361)
12260
12261
Fixed problem reports (Fiodor Suietov) integrated:
12262
- AcpiTerminate doesn't free debug memory allocation list objects (BZ
12263
355)
12264
- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
12265
356)
12266
- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
12267
- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
12268
- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
12269
- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
12270
- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
12271
- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
12272
- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
12273
365)
12274
- Status of the Global Initialization Handler call not used (BZ 366)
12275
- Incorrect object parameter to Global Initialization Handler (BZ 367)
12276
12277
Example Code and Data Size: These are the sizes for the OS-independent
12278
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12279
debug version of the code includes the debug output trace mechanism and
12280
has
12281
a much larger code and data size.
12282
12283
Previous Release:
12284
Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
12285
Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
12286
Current Release:
12287
Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
12288
Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
12289
12290
12291
2) iASL Compiler/Disassembler and Tools:
12292
12293
Modified the parser to allow the names IO, DMA, and IRQ to be used as
12294
namespace identifiers with no collision with existing resource descriptor
12295
macro names. This provides compatibility with other ASL compilers and is
12296
most useful for disassembly/recompilation of existing tables without
12297
parse
12298
errors. (With assistance from Thomas Renninger)
12299
12300
Disassembler: fixed an incorrect disassembly problem with the
12301
DataTableRegion and CopyObject operators. Fixed a possible fault during
12302
disassembly of some Alias operators.
12303
12304
----------------------------------------
12305
12 May 2006. Summary of changes for version 20060512:
12306
12307
1) ACPI CA Core Subsystem:
12308
12309
Replaced the AcpiOsQueueForExecution interface with a new interface named
12310
AcpiOsExecute. The major difference is that the new interface does not
12311
have
12312
a Priority parameter, this appeared to be useless and has been replaced
12313
by
12314
a
12315
Type parameter. The Type tells the host what type of execution is being
12316
requested, such as global lock handler, notify handler, GPE handler, etc.
12317
This allows the host to queue and execute the request as appropriate for
12318
the
12319
request type, possibly using different work queues and different
12320
priorities
12321
for the various request types. This enables fixes for multithreading
12322
deadlock problems such as BZ #5534, and will require changes to all
12323
existing
12324
OS interface layers. (Alexey Starikovskiy and Bob Moore)
12325
12326
Fixed a possible memory leak associated with the support for the so-
12327
called
12328
"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
12329
Suietov)
12330
12331
Fixed a problem with the Load() operator where a table load from an
12332
operation region could overwrite an internal table buffer by up to 7
12333
bytes
12334
and cause alignment faults on IPF systems. (With assistance from Luming
12335
Yu)
12336
12337
Example Code and Data Size: These are the sizes for the OS-independent
12338
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12339
debug version of the code includes the debug output trace mechanism and
12340
has
12341
a much larger code and data size.
12342
12343
Previous Release:
12344
Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
12345
Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
12346
Current Release:
12347
Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
12348
Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
12349
12350
12351
12352
2) iASL Compiler/Disassembler and Tools:
12353
12354
Disassembler: Implemented support to cross reference the internal
12355
namespace
12356
and automatically generate ASL External() statements for symbols not
12357
defined
12358
within the current table being disassembled. This will simplify the
12359
disassembly and recompilation of interdependent tables such as SSDTs
12360
since
12361
these statements will no longer have to be added manually.
12362
12363
Disassembler: Implemented experimental support to automatically detect
12364
invocations of external control methods and generate appropriate
12365
External()
12366
statements. This is problematic because the AML cannot be correctly
12367
parsed
12368
until the number of arguments for each control method is known.
12369
Currently,
12370
standalone method invocations and invocations as the source operand of a
12371
Store() statement are supported.
12372
12373
Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
12374
LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
12375
LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
12376
more readable and likely closer to the original ASL source.
12377
12378
----------------------------------------
12379
21 April 2006. Summary of changes for version 20060421:
12380
12381
1) ACPI CA Core Subsystem:
12382
12383
Removed a device initialization optimization introduced in 20051216 where
12384
the _STA method was not run unless an _INI was also present for the same
12385
device. This optimization could cause problems because it could allow
12386
_INI
12387
methods to be run within a not-present device subtree. (If a not-present
12388
device had no _INI, _STA would not be run, the not-present status would
12389
not
12390
be discovered, and the children of the device would be incorrectly
12391
traversed.)
12392
12393
Implemented a new _STA optimization where namespace subtrees that do not
12394
contain _INI are identified and ignored during device initialization.
12395
Selectively running _STA can significantly improve boot time on large
12396
machines (with assistance from Len Brown.)
12397
12398
Implemented support for the device initialization case where the returned
12399
_STA flags indicate a device not-present but functioning. In this case,
12400
_INI
12401
is not run, but the device children are examined for presence, as per the
12402
ACPI specification.
12403
12404
Implemented an additional change to the IndexField support in order to
12405
conform to MS behavior. The value written to the Index Register is not
12406
simply a byte offset, it is a byte offset in units of the access width of
12407
the parent Index Field. (Fiodor Suietov)
12408
12409
Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
12410
interface is called during the creation of all AML operation regions, and
12411
allows the host OS to exert control over what addresses it will allow the
12412
AML code to access. Operation Regions whose addresses are disallowed will
12413
cause a runtime exception when they are actually accessed (will not
12414
affect
12415
or abort table loading.) See oswinxf or osunixxf for an example
12416
implementation.
12417
12418
Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
12419
interface allows the host OS to match the various "optional"
12420
interface/behavior strings for the _OSI predefined control method as
12421
appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
12422
for an example implementation.
12423
12424
Restructured and corrected various problems in the exception handling
12425
code
12426
paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
12427
(with assistance from Takayoshi Kochi.)
12428
12429
Modified the Linux source converter to ignore quoted string literals
12430
while
12431
converting identifiers from mixed to lower case. This will correct
12432
problems
12433
with the disassembler and other areas where such strings must not be
12434
modified.
12435
12436
The ACPI_FUNCTION_* macros no longer require quotes around the function
12437
name. This allows the Linux source converter to convert the names, now
12438
that
12439
the converter ignores quoted strings.
12440
12441
Example Code and Data Size: These are the sizes for the OS-independent
12442
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12443
debug version of the code includes the debug output trace mechanism and
12444
has
12445
a much larger code and data size.
12446
12447
Previous Release:
12448
12449
Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
12450
Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
12451
Current Release:
12452
Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
12453
Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
12454
12455
12456
2) iASL Compiler/Disassembler and Tools:
12457
12458
Implemented 3 new warnings for iASL, and implemented multiple warning
12459
levels
12460
(w2 flag).
12461
12462
1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
12463
not
12464
WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
12465
check for the possible timeout, a warning is issued.
12466
12467
2) Useless operators: If an ASL operator does not specify an optional
12468
target
12469
operand and it also does not use the function return value from the
12470
operator, a warning is issued since the operator effectively does
12471
nothing.
12472
12473
3) Unreferenced objects: If a namespace object is created, but never
12474
referenced, a warning is issued. This is a warning level 2 since there
12475
are
12476
cases where this is ok, such as when a secondary table is loaded that
12477
uses
12478
the unreferenced objects. Even so, care is taken to only flag objects
12479
that
12480
don't look like they will ever be used. For example, the reserved methods
12481
(starting with an underscore) are usually not referenced because it is
12482
expected that the OS will invoke them.
12483
12484
----------------------------------------
12485
31 March 2006. Summary of changes for version 20060331:
12486
12487
1) ACPI CA Core Subsystem:
12488
12489
Implemented header file support for the following additional ACPI tables:
12490
ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
12491
support,
12492
all current and known ACPI tables are now defined in the ACPICA headers
12493
and
12494
are available for use by device drivers and other software.
12495
12496
Implemented support to allow tables that contain ACPI names with invalid
12497
characters to be loaded. Previously, this would cause the table load to
12498
fail, but since there are several known cases of such tables on existing
12499
machines, this change was made to enable ACPI support for them. Also,
12500
this
12501
matches the behavior of the Microsoft ACPI implementation.
12502
12503
Fixed a couple regressions introduced during the memory optimization in
12504
the
12505
20060317 release. The namespace node definition required additional
12506
reorganization and an internal datatype that had been changed to 8-bit
12507
was
12508
restored to 32-bit. (Valery Podrezov)
12509
12510
Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12511
could be passed through to AcpiOsReleaseObject which is unexpected. Such
12512
null pointers are now trapped and ignored, matching the behavior of the
12513
previous implementation before the deployment of AcpiOsReleaseObject.
12514
(Valery Podrezov, Fiodor Suietov)
12515
12516
Fixed a memory mapping leak during the deletion of a SystemMemory
12517
operation
12518
region where a cached memory mapping was not deleted. This became a
12519
noticeable problem for operation regions that are defined within
12520
frequently
12521
used control methods. (Dana Meyers)
12522
12523
Reorganized the ACPI table header files into two main files: one for the
12524
ACPI tables consumed by the ACPICA core, and another for the
12525
miscellaneous
12526
ACPI tables that are consumed by the drivers and other software. The
12527
various
12528
FADT definitions were merged into one common section and three different
12529
tables (ACPI 1.0, 1.0+, and 2.0)
12530
12531
Example Code and Data Size: These are the sizes for the OS-independent
12532
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12533
debug version of the code includes the debug output trace mechanism and
12534
has
12535
a much larger code and data size.
12536
12537
Previous Release:
12538
Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
12539
Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
12540
Current Release:
12541
Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
12542
Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
12543
12544
12545
2) iASL Compiler/Disassembler and Tools:
12546
12547
Disassembler: Implemented support to decode and format all non-AML ACPI
12548
tables (tables other than DSDTs and SSDTs.) This includes the new tables
12549
added to the ACPICA headers, therefore all current and known ACPI tables
12550
are
12551
supported.
12552
12553
Disassembler: The change to allow ACPI names with invalid characters also
12554
enables the disassembly of such tables. Invalid characters within names
12555
are
12556
changed to '*' to make the name printable; the iASL compiler will still
12557
generate an error for such names, however, since this is an invalid ACPI
12558
character.
12559
12560
Implemented an option for AcpiXtract (-a) to extract all tables found in
12561
the
12562
input file. The default invocation extracts only the DSDTs and SSDTs.
12563
12564
Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12565
makefile for the AcpiXtract utility.
12566
12567
----------------------------------------
12568
17 March 2006. Summary of changes for version 20060317:
12569
12570
1) ACPI CA Core Subsystem:
12571
12572
Implemented the use of a cache object for all internal namespace nodes.
12573
Since there are about 1000 static nodes in a typical system, this will
12574
decrease memory use for cache implementations that minimize per-
12575
allocation
12576
overhead (such as a slab allocator.)
12577
12578
Removed the reference count mechanism for internal namespace nodes, since
12579
it
12580
was deemed unnecessary. This reduces the size of each namespace node by
12581
about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12582
case,
12583
and 32 bytes for the 64-bit case.
12584
12585
Optimized several internal data structures to reduce object size on 64-
12586
bit
12587
platforms by packing data within the 64-bit alignment. This includes the
12588
frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12589
instances corresponding to the namespace objects.
12590
12591
Added two new strings for the predefined _OSI method: "Windows 2001.1
12592
SP1"
12593
and "Windows 2006".
12594
12595
Split the allocation tracking mechanism out to a separate file, from
12596
utalloc.c to uttrack.c. This mechanism appears to be only useful for
12597
application-level code. Kernels may wish to not include uttrack.c in
12598
distributions.
12599
12600
Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12601
associated
12602
code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12603
macros.)
12604
12605
Code and Data Size: These are the sizes for the acpica.lib produced by
12606
the
12607
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12608
ACPI
12609
driver or OSPM code. The debug version of the code includes the debug
12610
output
12611
trace mechanism and has a much larger code and data size. Note that these
12612
values will vary depending on the efficiency of the compiler and the
12613
compiler options used during generation.
12614
12615
Previous Release:
12616
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
12617
Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
12618
Current Release:
12619
Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
12620
Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
12621
12622
12623
2) iASL Compiler/Disassembler and Tools:
12624
12625
Implemented an ANSI C version of the acpixtract utility. This version
12626
will
12627
automatically extract the DSDT and all SSDTs from the input acpidump text
12628
file and dump the binary output to separate files. It can also display a
12629
summary of the input file including the headers for each table found and
12630
will extract any single ACPI table, with any signature. (See
12631
source/tools/acpixtract)
12632
12633
----------------------------------------
12634
10 March 2006. Summary of changes for version 20060310:
12635
12636
1) ACPI CA Core Subsystem:
12637
12638
Tagged all external interfaces to the subsystem with the new
12639
ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12640
assist
12641
kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12642
macro. The default definition is NULL.
12643
12644
Added the ACPI_THREAD_ID type for the return value from
12645
AcpiOsGetThreadId.
12646
This allows the host to define this as necessary to simplify kernel
12647
integration. The default definition is ACPI_NATIVE_UINT.
12648
12649
Fixed two interpreter problems related to error processing, the deletion
12650
of
12651
objects, and placing invalid pointers onto the internal operator result
12652
stack. BZ 6028, 6151 (Valery Podrezov)
12653
12654
Increased the reference count threshold where a warning is emitted for
12655
large
12656
reference counts in order to eliminate unnecessary warnings on systems
12657
with
12658
large namespaces (especially 64-bit.) Increased the value from 0x400 to
12659
0x800.
12660
12661
Due to universal disagreement as to the meaning of the 'c' in the
12662
calloc()
12663
function, the ACPI_MEM_CALLOCATE macro has been renamed to
12664
ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12665
ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12666
ACPI_FREE.
12667
12668
Code and Data Size: These are the sizes for the acpica.lib produced by
12669
the
12670
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12671
ACPI
12672
driver or OSPM code. The debug version of the code includes the debug
12673
output
12674
trace mechanism and has a much larger code and data size. Note that these
12675
values will vary depending on the efficiency of the compiler and the
12676
compiler options used during generation.
12677
12678
Previous Release:
12679
Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
12680
Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
12681
Current Release:
12682
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
12683
Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
12684
12685
12686
2) iASL Compiler/Disassembler:
12687
12688
Disassembler: implemented support for symbolic resource descriptor
12689
references. If a CreateXxxxField operator references a fixed offset
12690
within
12691
a
12692
resource descriptor, a name is assigned to the descriptor and the offset
12693
is
12694
translated to the appropriate resource tag and pathname. The addition of
12695
this support brings the disassembled code very close to the original ASL
12696
source code and helps eliminate run-time errors when the disassembled
12697
code
12698
is modified (and recompiled) in such a way as to invalidate the original
12699
fixed offsets.
12700
12701
Implemented support for a Descriptor Name as the last parameter to the
12702
ASL
12703
Register() macro. This parameter was inadvertently left out of the ACPI
12704
specification, and will be added for ACPI 3.0b.
12705
12706
Fixed a problem where the use of the "_OSI" string (versus the full path
12707
"\_OSI") caused an internal compiler error. ("No back ptr to op")
12708
12709
Fixed a problem with the error message that occurs when an invalid string
12710
is
12711
used for a _HID object (such as one with an embedded asterisk:
12712
"*PNP010A".)
12713
The correct message is now displayed.
12714
12715
----------------------------------------
12716
17 February 2006. Summary of changes for version 20060217:
12717
12718
1) ACPI CA Core Subsystem:
12719
12720
Implemented a change to the IndexField support to match the behavior of
12721
the
12722
Microsoft AML interpreter. The value written to the Index register is now
12723
a
12724
byte offset, no longer an index based upon the width of the Data
12725
register.
12726
This should fix IndexField problems seen on some machines where the Data
12727
register is not exactly one byte wide. The ACPI specification will be
12728
clarified on this point.
12729
12730
Fixed a problem where several resource descriptor types could overrun the
12731
internal descriptor buffer due to size miscalculation: VendorShort,
12732
VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12733
affect all platforms.
12734
12735
Fixed a problem where individual resource descriptors were misaligned
12736
within
12737
the internal buffer, causing alignment faults on IA64 platforms.
12738
12739
Code and Data Size: These are the sizes for the acpica.lib produced by
12740
the
12741
Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12742
ACPI
12743
driver or OSPM code. The debug version of the code includes the debug
12744
output
12745
trace mechanism and has a much larger code and data size. Note that these
12746
values will vary depending on the efficiency of the compiler and the
12747
compiler options used during generation.
12748
12749
Previous Release:
12750
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
12751
Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
12752
Current Release:
12753
Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
12754
Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
12755
12756
12757
2) iASL Compiler/Disassembler:
12758
12759
Implemented support for new reserved names: _WDG and _WED are Microsoft
12760
extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12761
defined method (Throttling Depth Limit.)
12762
12763
Fixed a problem where a zero-length VendorShort or VendorLong resource
12764
descriptor was incorrectly emitted as a descriptor of length one.
12765
12766
----------------------------------------
12767
10 February 2006. Summary of changes for version 20060210:
12768
12769
1) ACPI CA Core Subsystem:
12770
12771
Removed a couple of extraneous ACPI_ERROR messages that appeared during
12772
normal execution. These became apparent after the conversion from
12773
ACPI_DEBUG_PRINT.
12774
12775
Fixed a problem where the CreateField operator could hang if the BitIndex
12776
or
12777
NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12778
12779
Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12780
failed with an exception. This also fixes a couple of related RefOf and
12781
DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12782
12783
Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12784
of
12785
AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12786
BZ
12787
5480)
12788
12789
Implemented a memory cleanup at the end of the execution of each
12790
iteration
12791
of an AML While() loop, preventing the accumulation of outstanding
12792
objects.
12793
(Valery Podrezov, BZ 5427)
12794
12795
Eliminated a chunk of duplicate code in the object resolution code.
12796
(Valery
12797
Podrezov, BZ 5336)
12798
12799
Fixed several warnings during the 64-bit code generation.
12800
12801
The AcpiSrc source code conversion tool now inserts one line of
12802
whitespace
12803
after an if() statement that is followed immediately by a comment,
12804
improving
12805
readability of the Linux code.
12806
12807
Code and Data Size: The current and previous library sizes for the core
12808
subsystem are shown below. These are the code and data sizes for the
12809
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12810
These
12811
values do not include any ACPI driver or OSPM code. The debug version of
12812
the
12813
code includes the debug output trace mechanism and has a much larger code
12814
and data size. Note that these values will vary depending on the
12815
efficiency
12816
of the compiler and the compiler options used during generation.
12817
12818
Previous Release:
12819
Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
12820
Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
12821
Current Release:
12822
Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
12823
Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
12824
12825
12826
2) iASL Compiler/Disassembler:
12827
12828
Fixed a problem with the disassembly of a BankField operator with a
12829
complex
12830
expression for the BankValue parameter.
12831
12832
----------------------------------------
12833
27 January 2006. Summary of changes for version 20060127:
12834
12835
1) ACPI CA Core Subsystem:
12836
12837
Implemented support in the Resource Manager to allow unresolved
12838
namestring
12839
references within resource package objects for the _PRT method. This
12840
support
12841
is in addition to the previously implemented unresolved reference support
12842
within the AML parser. If the interpreter slack mode is enabled, these
12843
unresolved references will be passed through to the caller as a NULL
12844
package
12845
entry.
12846
12847
Implemented and deployed new macros and functions for error and warning
12848
messages across the subsystem. These macros are simpler and generate less
12849
code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12850
ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12851
macros remain defined to allow ACPI drivers time to migrate to the new
12852
macros.
12853
12854
Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12855
the
12856
Acquire/Release Lock OSL interfaces.
12857
12858
Fixed a problem where Alias ASL operators are sometimes not correctly
12859
resolved, in both the interpreter and the iASL compiler.
12860
12861
Fixed several problems with the implementation of the
12862
ConcatenateResTemplate
12863
ASL operator. As per the ACPI specification, zero length buffers are now
12864
treated as a single EndTag. One-length buffers always cause a fatal
12865
exception. Non-zero length buffers that do not end with a full 2-byte
12866
EndTag
12867
cause a fatal exception.
12868
12869
Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12870
interface. (With assistance from Thomas Renninger)
12871
12872
Code and Data Size: The current and previous library sizes for the core
12873
subsystem are shown below. These are the code and data sizes for the
12874
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12875
These
12876
values do not include any ACPI driver or OSPM code. The debug version of
12877
the
12878
code includes the debug output trace mechanism and has a much larger code
12879
and data size. Note that these values will vary depending on the
12880
efficiency
12881
of the compiler and the compiler options used during generation.
12882
12883
Previous Release:
12884
Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
12885
Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
12886
Current Release:
12887
Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
12888
Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
12889
12890
12891
2) iASL Compiler/Disassembler:
12892
12893
Fixed an internal error that was generated for any forward references to
12894
ASL
12895
Alias objects.
12896
12897
----------------------------------------
12898
13 January 2006. Summary of changes for version 20060113:
12899
12900
1) ACPI CA Core Subsystem:
12901
12902
Added 2006 copyright to all module headers and signons. This affects
12903
virtually every file in the ACPICA core subsystem, iASL compiler, and the
12904
utilities.
12905
12906
Enhanced the ACPICA error reporting in order to simplify user migration
12907
to
12908
the non-debug version of ACPICA. Replaced all instances of the
12909
ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12910
debug
12911
levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12912
respectively. This preserves all error and warning messages in the non-
12913
debug
12914
version of the ACPICA code (this has been referred to as the "debug lite"
12915
option.) Over 200 cases were converted to create a total of over 380
12916
error/warning messages across the ACPICA code. This increases the code
12917
and
12918
data size of the default non-debug version of the code somewhat (about
12919
13K),
12920
but all error/warning reporting may be disabled if desired (and code
12921
eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12922
configuration option. The size of the debug version of ACPICA remains
12923
about
12924
the same.
12925
12926
Fixed a memory leak within the AML Debugger "Set" command. One object was
12927
not properly deleted for every successful invocation of the command.
12928
12929
Code and Data Size: The current and previous library sizes for the core
12930
subsystem are shown below. These are the code and data sizes for the
12931
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12932
These
12933
values do not include any ACPI driver or OSPM code. The debug version of
12934
the
12935
code includes the debug output trace mechanism and has a much larger code
12936
and data size. Note that these values will vary depending on the
12937
efficiency
12938
of the compiler and the compiler options used during generation.
12939
12940
Previous Release:
12941
Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
12942
Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
12943
Current Release:
12944
Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
12945
Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
12946
12947
12948
2) iASL Compiler/Disassembler:
12949
12950
The compiler now officially supports the ACPI 3.0a specification that was
12951
released on December 30, 2005. (Specification is available at
12952
www.acpi.info)
12953
12954
----------------------------------------
12955
16 December 2005. Summary of changes for version 20051216:
12956
12957
1) ACPI CA Core Subsystem:
12958
12959
Implemented optional support to allow unresolved names within ASL Package
12960
objects. A null object is inserted in the package when a named reference
12961
cannot be located in the current namespace. Enabled via the interpreter
12962
slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12963
machines
12964
that contain such code.
12965
12966
Implemented an optimization to the initialization sequence that can
12967
improve
12968
boot time. During ACPI device initialization, the _STA method is now run
12969
if
12970
and only if the _INI method exists. The _STA method is used to determine
12971
if
12972
the device is present; An _INI can only be run if _STA returns present,
12973
but
12974
it is a waste of time to run the _STA method if the _INI does not exist.
12975
(Prototype and assistance from Dong Wei)
12976
12977
Implemented use of the C99 uintptr_t for the pointer casting macros if it
12978
is
12979
available in the current compiler. Otherwise, the default (void *) cast
12980
is
12981
used as before.
12982
12983
Fixed some possible memory leaks found within the execution path of the
12984
Break, Continue, If, and CreateField operators. (Valery Podrezov)
12985
12986
Fixed a problem introduced in the 20051202 release where an exception is
12987
generated during method execution if a control method attempts to declare
12988
another method.
12989
12990
Moved resource descriptor string constants that are used by both the AML
12991
disassembler and AML debugger to the common utilities directory so that
12992
these components are independent.
12993
12994
Implemented support in the AcpiExec utility (-e switch) to globally
12995
ignore
12996
exceptions during control method execution (method is not aborted.)
12997
12998
Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12999
generation.
13000
13001
Code and Data Size: The current and previous library sizes for the core
13002
subsystem are shown below. These are the code and data sizes for the
13003
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13004
These
13005
values do not include any ACPI driver or OSPM code. The debug version of
13006
the
13007
code includes the debug output trace mechanism and has a much larger code
13008
and data size. Note that these values will vary depending on the
13009
efficiency
13010
of the compiler and the compiler options used during generation.
13011
13012
Previous Release:
13013
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
13014
Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
13015
Current Release:
13016
Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
13017
Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
13018
13019
13020
2) iASL Compiler/Disassembler:
13021
13022
Fixed a problem where a CPU stack overflow fault could occur if a
13023
recursive
13024
method call was made from within a Return statement.
13025
13026
----------------------------------------
13027
02 December 2005. Summary of changes for version 20051202:
13028
13029
1) ACPI CA Core Subsystem:
13030
13031
Modified the parsing of control methods to no longer create namespace
13032
objects during the first pass of the parse. Objects are now created only
13033
during the execute phase, at the moment the namespace creation operator
13034
is
13035
encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
13036
This
13037
should eliminate ALREADY_EXISTS exceptions seen on some machines where
13038
reentrant control methods are protected by an AML mutex. The mutex will
13039
now
13040
correctly block multiple threads from attempting to create the same
13041
object
13042
more than once.
13043
13044
Increased the number of available Owner Ids for namespace object tracking
13045
from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
13046
on
13047
some machines with a large number of ACPI tables (either static or
13048
dynamic).
13049
13050
Fixed a problem with the AcpiExec utility where a fault could occur when
13051
the
13052
-b switch (batch mode) is used.
13053
13054
Enhanced the namespace dump routine to output the owner ID for each
13055
namespace object.
13056
13057
Code and Data Size: The current and previous library sizes for the core
13058
subsystem are shown below. These are the code and data sizes for the
13059
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13060
These
13061
values do not include any ACPI driver or OSPM code. The debug version of
13062
the
13063
code includes the debug output trace mechanism and has a much larger code
13064
and data size. Note that these values will vary depending on the
13065
efficiency
13066
of the compiler and the compiler options used during generation.
13067
13068
Previous Release:
13069
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
13070
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
13071
Current Release:
13072
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
13073
Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
13074
13075
13076
2) iASL Compiler/Disassembler:
13077
13078
Fixed a parse error during compilation of certain Switch/Case constructs.
13079
To
13080
simplify the parse, the grammar now allows for multiple Default
13081
statements
13082
and this error is now detected and flagged during the analysis phase.
13083
13084
Disassembler: The disassembly now includes the contents of the original
13085
table header within a comment at the start of the file. This includes the
13086
name and version of the original ASL compiler.
13087
13088
----------------------------------------
13089
17 November 2005. Summary of changes for version 20051117:
13090
13091
1) ACPI CA Core Subsystem:
13092
13093
Fixed a problem in the AML parser where the method thread count could be
13094
decremented below zero if any errors occurred during the method parse
13095
phase.
13096
This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
13097
machines.
13098
This also fixed a related regression with the mechanism that detects and
13099
corrects methods that cannot properly handle reentrancy (related to the
13100
deployment of the new OwnerId mechanism.)
13101
13102
Eliminated the pre-parsing of control methods (to detect errors) during
13103
table load. Related to the problem above, this was causing unwind issues
13104
if
13105
any errors occurred during the parse, and it seemed to be overkill. A
13106
table
13107
load should not be aborted if there are problems with any single control
13108
method, thus rendering this feature rather pointless.
13109
13110
Fixed a problem with the new table-driven resource manager where an
13111
internal
13112
buffer overflow could occur for small resource templates.
13113
13114
Implemented a new external interface, AcpiGetVendorResource. This
13115
interface
13116
will find and return a vendor-defined resource descriptor within a _CRS
13117
or
13118
_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
13119
Helgaas.
13120
13121
Removed the length limit (200) on string objects as per the upcoming ACPI
13122
3.0A specification. This affects the following areas of the interpreter:
13123
1)
13124
any implicit conversion of a Buffer to a String, 2) a String object
13125
result
13126
of the ASL Concatenate operator, 3) the String object result of the ASL
13127
ToString operator.
13128
13129
Fixed a problem in the Windows OS interface layer (OSL) where a
13130
WAIT_FOREVER
13131
on a semaphore object would incorrectly timeout. This allows the
13132
multithreading features of the AcpiExec utility to work properly under
13133
Windows.
13134
13135
Updated the Linux makefiles for the iASL compiler and AcpiExec to include
13136
the recently added file named "utresrc.c".
13137
13138
Code and Data Size: The current and previous library sizes for the core
13139
subsystem are shown below. These are the code and data sizes for the
13140
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13141
These
13142
values do not include any ACPI driver or OSPM code. The debug version of
13143
the
13144
code includes the debug output trace mechanism and has a much larger code
13145
and data size. Note that these values will vary depending on the
13146
efficiency
13147
of the compiler and the compiler options used during generation.
13148
13149
Previous Release:
13150
Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
13151
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
13152
Current Release:
13153
Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
13154
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
13155
13156
13157
2) iASL Compiler/Disassembler:
13158
13159
Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
13160
specification. For the iASL compiler, this means that string literals
13161
within
13162
the source ASL can be of any length.
13163
13164
Enhanced the listing output to dump the AML code for resource descriptors
13165
immediately after the ASL code for each descriptor, instead of in a block
13166
at
13167
the end of the entire resource template.
13168
13169
Enhanced the compiler debug output to dump the entire original parse tree
13170
constructed during the parse phase, before any transforms are applied to
13171
the
13172
tree. The transformed tree is dumped also.
13173
13174
----------------------------------------
13175
02 November 2005. Summary of changes for version 20051102:
13176
13177
1) ACPI CA Core Subsystem:
13178
13179
Modified the subsystem initialization sequence to improve GPE support.
13180
The
13181
GPE initialization has been split into two parts in order to defer
13182
execution
13183
of the _PRW methods (Power Resources for Wake) until after the hardware
13184
is
13185
fully initialized and the SCI handler is installed. This allows the _PRW
13186
methods to access fields protected by the Global Lock. This will fix
13187
systems
13188
where a NO_GLOBAL_LOCK exception has been seen during initialization.
13189
13190
Converted the ACPI internal object disassemble and display code within
13191
the
13192
AML debugger to fully table-driven operation, reducing code size and
13193
increasing maintainability.
13194
13195
Fixed a regression with the ConcatenateResTemplate() ASL operator
13196
introduced
13197
in the 20051021 release.
13198
13199
Implemented support for "local" internal ACPI object types within the
13200
debugger "Object" command and the AcpiWalkNamespace external interfaces.
13201
These local types include RegionFields, BankFields, IndexFields, Alias,
13202
and
13203
reference objects.
13204
13205
Moved common AML resource handling code into a new file, "utresrc.c".
13206
This
13207
code is shared by both the Resource Manager and the AML Debugger.
13208
13209
Code and Data Size: The current and previous library sizes for the core
13210
subsystem are shown below. These are the code and data sizes for the
13211
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13212
These
13213
values do not include any ACPI driver or OSPM code. The debug version of
13214
the
13215
code includes the debug output trace mechanism and has a much larger code
13216
and data size. Note that these values will vary depending on the
13217
efficiency
13218
of the compiler and the compiler options used during generation.
13219
13220
Previous Release:
13221
Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
13222
Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
13223
Current Release:
13224
Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
13225
Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
13226
13227
13228
2) iASL Compiler/Disassembler:
13229
13230
Fixed a problem with very large initializer lists (more than 4000
13231
elements)
13232
for both Buffer and Package objects where the parse stack could overflow.
13233
13234
Enhanced the pre-compile source code scan for non-ASCII characters to
13235
ignore
13236
characters within comment fields. The scan is now always performed and is
13237
no
13238
longer optional, detecting invalid characters within a source file
13239
immediately rather than during the parse phase or later.
13240
13241
Enhanced the ASL grammar definition to force early reductions on all
13242
list-
13243
style grammar elements so that the overall parse stack usage is greatly
13244
reduced. This should improve performance and reduce the possibility of
13245
parse
13246
stack overflow.
13247
13248
Eliminated all reduce/reduce conflicts in the iASL parser generation.
13249
Also,
13250
with the addition of a %expected statement, the compiler generates from
13251
source with no warnings.
13252
13253
Fixed a possible segment fault in the disassembler if the input filename
13254
does not contain a "dot" extension (Thomas Renninger).
13255
13256
----------------------------------------
13257
21 October 2005. Summary of changes for version 20051021:
13258
13259
1) ACPI CA Core Subsystem:
13260
13261
Implemented support for the EM64T and other x86-64 processors. This
13262
essentially entails recognizing that these processors support non-aligned
13263
memory transfers. Previously, all 64-bit processors were assumed to lack
13264
hardware support for non-aligned transfers.
13265
13266
Completed conversion of the Resource Manager to nearly full table-driven
13267
operation. Specifically, the resource conversion code (convert AML to
13268
internal format and the reverse) and the debug code to dump internal
13269
resource descriptors are fully table-driven, reducing code and data size
13270
and
13271
improving maintainability.
13272
13273
The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
13274
word
13275
on 64-bit processors instead of a fixed 32-bit word. (With assistance
13276
from
13277
Alexey Starikovskiy)
13278
13279
Implemented support within the resource conversion code for the Type-
13280
Specific byte within the various ACPI 3.0 *WordSpace macros.
13281
13282
Fixed some issues within the resource conversion code for the type-
13283
specific
13284
flags for both Memory and I/O address resource descriptors. For Memory,
13285
implemented support for the MTP and TTP flags. For I/O, split the TRS and
13286
TTP flags into two separate fields.
13287
13288
Code and Data Size: The current and previous library sizes for the core
13289
subsystem are shown below. These are the code and data sizes for the
13290
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13291
These
13292
values do not include any ACPI driver or OSPM code. The debug version of
13293
the
13294
code includes the debug output trace mechanism and has a much larger code
13295
and data size. Note that these values will vary depending on the
13296
efficiency
13297
of the compiler and the compiler options used during generation.
13298
13299
Previous Release:
13300
Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
13301
Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
13302
Current Release:
13303
Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
13304
Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
13305
13306
13307
13308
2) iASL Compiler/Disassembler:
13309
13310
Relaxed a compiler restriction that disallowed a ResourceIndex byte if
13311
the
13312
corresponding ResourceSource string was not also present in a resource
13313
descriptor declaration. This restriction caused problems with existing
13314
AML/ASL code that includes the Index byte without the string. When such
13315
AML
13316
was disassembled, it could not be compiled without modification. Further,
13317
the modified code created a resource template with a different size than
13318
the
13319
original, breaking code that used fixed offsets into the resource
13320
template
13321
buffer.
13322
13323
Removed a recent feature of the disassembler to ignore a lone
13324
ResourceIndex
13325
byte. This byte is now emitted if present so that the exact AML can be
13326
reproduced when the disassembled code is recompiled.
13327
13328
Improved comments and text alignment for the resource descriptor code
13329
emitted by the disassembler.
13330
13331
Implemented disassembler support for the ACPI 3.0 AccessSize field within
13332
a
13333
Register() resource descriptor.
13334
13335
----------------------------------------
13336
30 September 2005. Summary of changes for version 20050930:
13337
13338
1) ACPI CA Core Subsystem:
13339
13340
Completed a major overhaul of the Resource Manager code - specifically,
13341
optimizations in the area of the AML/internal resource conversion code.
13342
The
13343
code has been optimized to simplify and eliminate duplicated code, CPU
13344
stack
13345
use has been decreased by optimizing function parameters and local
13346
variables, and naming conventions across the manager have been
13347
standardized
13348
for clarity and ease of maintenance (this includes function, parameter,
13349
variable, and struct/typedef names.) The update may force changes in some
13350
driver code, depending on how resources are handled by the host OS.
13351
13352
All Resource Manager dispatch and information tables have been moved to a
13353
single location for clarity and ease of maintenance. One new file was
13354
created, named "rsinfo.c".
13355
13356
The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
13357
guarantee that the argument is not evaluated twice, making them less
13358
prone
13359
to macro side-effects. However, since there exists the possibility of
13360
additional stack use if a particular compiler cannot optimize them (such
13361
as
13362
in the debug generation case), the original macros are optionally
13363
available.
13364
Note that some invocations of the return_VALUE macro may now cause size
13365
mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
13366
to
13367
eliminate these. (From Randy Dunlap)
13368
13369
Implemented a new mechanism to enable debug tracing for individual
13370
control
13371
methods. A new external interface, AcpiDebugTrace, is provided to enable
13372
this mechanism. The intent is to allow the host OS to easily enable and
13373
disable tracing for problematic control methods. This interface can be
13374
easily exposed to a user or debugger interface if desired. See the file
13375
psxface.c for details.
13376
13377
AcpiUtCallocate will now return a valid pointer if a length of zero is
13378
specified - a length of one is used and a warning is issued. This matches
13379
the behavior of AcpiUtAllocate.
13380
13381
Code and Data Size: The current and previous library sizes for the core
13382
subsystem are shown below. These are the code and data sizes for the
13383
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13384
These
13385
values do not include any ACPI driver or OSPM code. The debug version of
13386
the
13387
code includes the debug output trace mechanism and has a much larger code
13388
and data size. Note that these values will vary depending on the
13389
efficiency
13390
of the compiler and the compiler options used during generation.
13391
13392
Previous Release:
13393
Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
13394
Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
13395
Current Release:
13396
Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
13397
Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
13398
13399
13400
2) iASL Compiler/Disassembler:
13401
13402
A remark is issued if the effective compile-time length of a package or
13403
buffer is zero. Previously, this was a warning.
13404
13405
----------------------------------------
13406
16 September 2005. Summary of changes for version 20050916:
13407
13408
1) ACPI CA Core Subsystem:
13409
13410
Fixed a problem within the Resource Manager where support for the Generic
13411
Register descriptor was not fully implemented. This descriptor is now
13412
fully
13413
recognized, parsed, disassembled, and displayed.
13414
13415
Completely restructured the Resource Manager code to utilize table-driven
13416
dispatch and lookup, eliminating many of the large switch() statements.
13417
This
13418
reduces overall subsystem code size and code complexity. Affects the
13419
resource parsing and construction, disassembly, and debug dump output.
13420
13421
Cleaned up and restructured the debug dump output for all resource
13422
descriptors. Improved readability of the output and reduced code size.
13423
13424
Fixed a problem where changes to internal data structures caused the
13425
optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
13426
13427
Code and Data Size: The current and previous library sizes for the core
13428
subsystem are shown below. These are the code and data sizes for the
13429
acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13430
These
13431
values do not include any ACPI driver or OSPM code. The debug version of
13432
the
13433
code includes the debug output trace mechanism and has a much larger code
13434
and data size. Note that these values will vary depending on the
13435
efficiency
13436
of the compiler and the compiler options used during generation.
13437
13438
Previous Release:
13439
Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
13440
Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
13441
Current Release:
13442
Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
13443
Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
13444
13445
13446
2) iASL Compiler/Disassembler:
13447
13448
Updated the disassembler to automatically insert an EndDependentFn()
13449
macro
13450
into the ASL stream if this macro is missing in the original AML code,
13451
simplifying compilation of the resulting ASL module.
13452
13453
Fixed a problem in the disassembler where a disassembled ResourceSource
13454
string (within a large resource descriptor) was not surrounded by quotes
13455
and
13456
not followed by a comma, causing errors when the resulting ASL module was
13457
compiled. Also, escape sequences within a ResourceSource string are now
13458
handled correctly (especially "\\")
13459
13460
----------------------------------------
13461
02 September 2005. Summary of changes for version 20050902:
13462
13463
1) ACPI CA Core Subsystem:
13464
13465
Fixed a problem with the internal Owner ID allocation and deallocation
13466
mechanisms for control method execution and recursive method invocation.
13467
This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
13468
messages seen on some systems. Recursive method invocation depth is
13469
currently limited to 255. (Alexey Starikovskiy)
13470
13471
Completely eliminated all vestiges of support for the "module-level
13472
executable code" until this support is fully implemented and debugged.
13473
This
13474
should eliminate the NO_RETURN_VALUE exceptions seen during table load on
13475
some systems that invoke this support.
13476
13477
Fixed a problem within the resource manager code where the transaction
13478
flags
13479
for a 64-bit address descriptor were handled incorrectly in the type-
13480
specific flag byte.
13481
13482
Consolidated duplicate code within the address descriptor resource
13483
manager
13484
code, reducing overall subsystem code size.
13485
13486
Fixed a fault when using the AML debugger "disassemble" command to
13487
disassemble individual control methods.
13488
13489
Removed references to the "release_current" directory within the Unix
13490
release package.
13491
13492
Code and Data Size: The current and previous core subsystem library sizes
13493
are shown below. These are the code and data sizes for the acpica.lib
13494
produced by the Microsoft Visual C++ 6.0 compiler. These values do not
13495
include any ACPI driver or OSPM code. The debug version of the code
13496
includes
13497
the debug output trace mechanism and has a much larger code and data
13498
size.
13499
Note that these values will vary depending on the efficiency of the
13500
compiler
13501
and the compiler options used during generation.
13502
13503
Previous Release:
13504
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
13505
Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
13506
Current Release:
13507
Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
13508
Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
13509
13510
13511
2) iASL Compiler/Disassembler:
13512
13513
Implemented an error check for illegal duplicate values in the interrupt
13514
and
13515
dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13516
Interrupt().
13517
13518
Implemented error checking for the Irq() and IrqNoFlags() macros to
13519
detect
13520
too many values in the interrupt list (16 max) and invalid values in the
13521
list (range 0 - 15)
13522
13523
The maximum length string literal within an ASL file is now restricted to
13524
200 characters as per the ACPI specification.
13525
13526
Fixed a fault when using the -ln option (generate namespace listing).
13527
13528
Implemented an error check to determine if a DescriptorName within a
13529
resource descriptor has already been used within the current scope.
13530
13531
----------------------------------------
13532
15 August 2005. Summary of changes for version 20050815:
13533
13534
1) ACPI CA Core Subsystem:
13535
13536
Implemented a full bytewise compare to determine if a table load request
13537
is
13538
attempting to load a duplicate table. The compare is performed if the
13539
table
13540
signatures and table lengths match. This will allow different tables with
13541
the same OEM Table ID and revision to be loaded - probably against the
13542
ACPI
13543
specification, but discovered in the field nonetheless.
13544
13545
Added the changes.txt logfile to each of the zipped release packages.
13546
13547
Code and Data Size: Current and previous core subsystem library sizes are
13548
shown below. These are the code and data sizes for the acpica.lib
13549
produced
13550
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13551
any ACPI driver or OSPM code. The debug version of the code includes the
13552
debug output trace mechanism and has a much larger code and data size.
13553
Note
13554
that these values will vary depending on the efficiency of the compiler
13555
and
13556
the compiler options used during generation.
13557
13558
Previous Release:
13559
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
13560
Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
13561
Current Release:
13562
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
13563
Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
13564
13565
13566
2) iASL Compiler/Disassembler:
13567
13568
Fixed a problem where incorrect AML code could be generated for Package
13569
objects if optimization is disabled (via the -oa switch).
13570
13571
Fixed a problem with where incorrect AML code is generated for variable-
13572
length packages when the package length is not specified and the number
13573
of
13574
initializer values is greater than 255.
13575
13576
13577
----------------------------------------
13578
29 July 2005. Summary of changes for version 20050729:
13579
13580
1) ACPI CA Core Subsystem:
13581
13582
Implemented support to ignore an attempt to install/load a particular
13583
ACPI
13584
table more than once. Apparently there exists BIOS code that repeatedly
13585
attempts to load the same SSDT upon certain events. With assistance from
13586
Venkatesh Pallipadi.
13587
13588
Restructured the main interface to the AML parser in order to correctly
13589
handle all exceptional conditions. This will prevent leakage of the
13590
OwnerId
13591
resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13592
some
13593
machines. With assistance from Alexey Starikovskiy.
13594
13595
Support for "module level code" has been disabled in this version due to
13596
a
13597
number of issues that have appeared on various machines. The support can
13598
be
13599
enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13600
compilation. When the issues are fully resolved, the code will be enabled
13601
by
13602
default again.
13603
13604
Modified the internal functions for debug print support to define the
13605
FunctionName parameter as a (const char *) for compatibility with
13606
compiler
13607
built-in macros such as __FUNCTION__, etc.
13608
13609
Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13610
13611
Implemented support to display an object count summary for the AML
13612
Debugger
13613
commands Object and Methods.
13614
13615
Code and Data Size: Current and previous core subsystem library sizes are
13616
shown below. These are the code and data sizes for the acpica.lib
13617
produced
13618
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13619
any ACPI driver or OSPM code. The debug version of the code includes the
13620
debug output trace mechanism and has a much larger code and data size.
13621
Note
13622
that these values will vary depending on the efficiency of the compiler
13623
and
13624
the compiler options used during generation.
13625
13626
Previous Release:
13627
Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
13628
Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
13629
Current Release:
13630
Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
13631
Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
13632
13633
13634
2) iASL Compiler/Disassembler:
13635
13636
Fixed a regression that appeared in the 20050708 version of the compiler
13637
where an error message was inadvertently emitted for invocations of the
13638
_OSI
13639
reserved control method.
13640
13641
----------------------------------------
13642
08 July 2005. Summary of changes for version 20050708:
13643
13644
1) ACPI CA Core Subsystem:
13645
13646
The use of the CPU stack in the debug version of the subsystem has been
13647
considerably reduced. Previously, a debug structure was declared in every
13648
function that used the debug macros. This structure has been removed in
13649
favor of declaring the individual elements as parameters to the debug
13650
functions. This reduces the cumulative stack use during nested execution
13651
of
13652
ACPI function calls at the cost of a small increase in the code size of
13653
the
13654
debug version of the subsystem. With assistance from Alexey Starikovskiy
13655
and
13656
Len Brown.
13657
13658
Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13659
headers to define a macro that will return the current function name at
13660
runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13661
by
13662
the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13663
compiler-dependent header, the function name is saved on the CPU stack
13664
(one
13665
pointer per function.) This mechanism is used because apparently there
13666
exists no standard ANSI-C defined macro that that returns the function
13667
name.
13668
13669
Redesigned and reimplemented the "Owner ID" mechanism used to track
13670
namespace objects created/deleted by ACPI tables and control method
13671
execution. A bitmap is now used to allocate and free the IDs, thus
13672
solving
13673
the wraparound problem present in the previous implementation. The size
13674
of
13675
the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13676
Starikovskiy).
13677
13678
Removed the UINT32_BIT and UINT16_BIT types that were used for the
13679
bitfield
13680
flag definitions within the headers for the predefined ACPI tables. These
13681
have been replaced by UINT8_BIT in order to increase the code portability
13682
of
13683
the subsystem. If the use of UINT8 remains a problem, we may be forced to
13684
eliminate bitfields entirely because of a lack of portability.
13685
13686
Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13687
This
13688
is a frequently used function and this improvement increases the
13689
performance
13690
of the entire subsystem (Alexey Starikovskiy).
13691
13692
Fixed several possible memory leaks and the inverse - premature object
13693
deletion (Alexey Starikovskiy).
13694
13695
Code and Data Size: Current and previous core subsystem library sizes are
13696
shown below. These are the code and data sizes for the acpica.lib
13697
produced
13698
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13699
any ACPI driver or OSPM code. The debug version of the code includes the
13700
debug output trace mechanism and has a much larger code and data size.
13701
Note
13702
that these values will vary depending on the efficiency of the compiler
13703
and
13704
the compiler options used during generation.
13705
13706
Previous Release:
13707
Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
13708
Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
13709
Current Release:
13710
Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
13711
Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
13712
13713
----------------------------------------
13714
24 June 2005. Summary of changes for version 20050624:
13715
13716
1) ACPI CA Core Subsystem:
13717
13718
Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13719
the host-defined cache object. This allows the OSL implementation to
13720
define
13721
and type this object in any manner desired, simplifying the OSL
13722
implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13723
Linux, and should be defined in the OS-specific header file for other
13724
operating systems as required.
13725
13726
Changed the interface to AcpiOsAcquireObject to directly return the
13727
requested object as the function return (instead of ACPI_STATUS.) This
13728
change was made for performance reasons, since this is the purpose of the
13729
interface in the first place. AcpiOsAcquireObject is now similar to the
13730
AcpiOsAllocate interface.
13731
13732
Implemented a new AML debugger command named Businfo. This command
13733
displays
13734
information about all devices that have an associate _PRT object. The
13735
_ADR,
13736
_HID, _UID, and _CID are displayed for these devices.
13737
13738
Modified the initialization sequence in AcpiInitializeSubsystem to call
13739
the
13740
OSL interface AcpiOslInitialize first, before any local initialization.
13741
This
13742
change was required because the global initialization now calls OSL
13743
interfaces.
13744
13745
Enhanced the Dump command to display the entire contents of Package
13746
objects
13747
(including all sub-objects and their values.)
13748
13749
Restructured the code base to split some files because of size and/or
13750
because the code logically belonged in a separate file. New files are
13751
listed
13752
below. All makefiles and project files included in the ACPI CA release
13753
have
13754
been updated.
13755
utilities/utcache.c /* Local cache interfaces */
13756
utilities/utmutex.c /* Local mutex support */
13757
utilities/utstate.c /* State object support */
13758
interpreter/parser/psloop.c /* Main AML parse loop */
13759
13760
Code and Data Size: Current and previous core subsystem library sizes are
13761
shown below. These are the code and data sizes for the acpica.lib
13762
produced
13763
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13764
any ACPI driver or OSPM code. The debug version of the code includes the
13765
debug output trace mechanism and has a much larger code and data size.
13766
Note
13767
that these values will vary depending on the efficiency of the compiler
13768
and
13769
the compiler options used during generation.
13770
13771
Previous Release:
13772
Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
13773
Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
13774
Current Release:
13775
Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
13776
Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
13777
13778
13779
2) iASL Compiler/Disassembler:
13780
13781
Fixed a regression introduced in version 20050513 where the use of a
13782
Package
13783
object within a Case() statement caused a compile time exception. The
13784
original behavior has been restored (a Match() operator is emitted.)
13785
13786
----------------------------------------
13787
17 June 2005. Summary of changes for version 20050617:
13788
13789
1) ACPI CA Core Subsystem:
13790
13791
Moved the object cache operations into the OS interface layer (OSL) to
13792
allow
13793
the host OS to handle these operations if desired (for example, the Linux
13794
OSL will invoke the slab allocator). This support is optional; the
13795
compile
13796
time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13797
cache
13798
code in the ACPI CA core. The new OSL interfaces are shown below. See
13799
utalloc.c for an example implementation, and acpiosxf.h for the exact
13800
interface definitions. With assistance from Alexey Starikovskiy.
13801
AcpiOsCreateCache
13802
AcpiOsDeleteCache
13803
AcpiOsPurgeCache
13804
AcpiOsAcquireObject
13805
AcpiOsReleaseObject
13806
13807
Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13808
return
13809
and restore a flags parameter. This fits better with many OS lock models.
13810
Note: the current execution state (interrupt handler or not) is no longer
13811
passed to these interfaces. If necessary, the OSL must determine this
13812
state
13813
by itself, a simple and fast operation. With assistance from Alexey
13814
Starikovskiy.
13815
13816
Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13817
present if the revision of the RSDP was 2 or greater. According to the
13818
ACPI
13819
specification, the XSDT is optional in all cases, and the table manager
13820
therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13821
Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13822
contain
13823
only the RSDT.
13824
13825
Fixed an interpreter problem with the Mid() operator in the case of an
13826
input
13827
string where the resulting output string is of zero length. It now
13828
correctly
13829
returns a valid, null terminated string object instead of a string object
13830
with a null pointer.
13831
13832
Fixed a problem with the control method argument handling to allow a
13833
store
13834
to an Arg object that already contains an object of type Device. The
13835
Device
13836
object is now correctly overwritten. Previously, an error was returned.
13837
13838
13839
Enhanced the debugger Find command to emit object values in addition to
13840
the
13841
found object pathnames. The output format is the same as the dump
13842
namespace
13843
command.
13844
13845
Enhanced the debugger Set command. It now has the ability to set the
13846
value
13847
of any Named integer object in the namespace (Previously, only method
13848
locals
13849
and args could be set.)
13850
13851
Code and Data Size: Current and previous core subsystem library sizes are
13852
shown below. These are the code and data sizes for the acpica.lib
13853
produced
13854
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13855
any ACPI driver or OSPM code. The debug version of the code includes the
13856
debug output trace mechanism and has a much larger code and data size.
13857
Note
13858
that these values will vary depending on the efficiency of the compiler
13859
and
13860
the compiler options used during generation.
13861
13862
Previous Release:
13863
Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
13864
Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
13865
Current Release:
13866
Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
13867
Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
13868
13869
13870
2) iASL Compiler/Disassembler:
13871
13872
Fixed a regression in the disassembler where if/else/while constructs
13873
were
13874
output incorrectly. This problem was introduced in the previous release
13875
(20050526). This problem also affected the single-step disassembly in the
13876
debugger.
13877
13878
Fixed a problem where compiling the reserved _OSI method would randomly
13879
(but
13880
rarely) produce compile errors.
13881
13882
Enhanced the disassembler to emit compilable code in the face of
13883
incorrect
13884
AML resource descriptors. If the optional ResourceSourceIndex is present,
13885
but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13886
disassembly. Otherwise, the resulting code cannot be compiled without
13887
errors.
13888
13889
----------------------------------------
13890
26 May 2005. Summary of changes for version 20050526:
13891
13892
1) ACPI CA Core Subsystem:
13893
13894
Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13895
the module level (not within a control method.) These opcodes are
13896
executed
13897
exactly once at the time the table is loaded. This type of code was legal
13898
up
13899
until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13900
in
13901
order to provide backwards compatibility with earlier BIOS
13902
implementations.
13903
This eliminates the "Encountered executable code at module level" warning
13904
that was previously generated upon detection of such code.
13905
13906
Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13907
inadvertently be generated during the lookup of namespace objects in the
13908
second pass parse of ACPI tables and control methods. It appears that
13909
this
13910
problem could occur during the resolution of forward references to
13911
namespace
13912
objects.
13913
13914
Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13915
corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13916
allows the deadlock detection debug code to be compiled out in the normal
13917
case, improving mutex performance (and overall subsystem performance)
13918
considerably.
13919
13920
Implemented a handful of miscellaneous fixes for possible memory leaks on
13921
error conditions and error handling control paths. These fixes were
13922
suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13923
13924
Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13925
(tbxfroot.c)
13926
to prevent a fault in this error case.
13927
13928
Code and Data Size: Current and previous core subsystem library sizes are
13929
shown below. These are the code and data sizes for the acpica.lib
13930
produced
13931
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13932
any ACPI driver or OSPM code. The debug version of the code includes the
13933
debug output trace mechanism and has a much larger code and data size.
13934
Note
13935
that these values will vary depending on the efficiency of the compiler
13936
and
13937
the compiler options used during generation.
13938
13939
Previous Release:
13940
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
13941
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
13942
Current Release:
13943
Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
13944
Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
13945
13946
13947
2) iASL Compiler/Disassembler:
13948
13949
Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13950
the module level (not within a control method.) These operators will be
13951
executed once at the time the table is loaded. This type of code was
13952
legal
13953
up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13954
compiler in order to provide backwards compatibility with earlier BIOS
13955
ASL
13956
code.
13957
13958
The ACPI integer width (specified via the table revision ID or the -r
13959
override, 32 or 64 bits) is now used internally during compile-time
13960
constant
13961
folding to ensure that constants are truncated to 32 bits if necessary.
13962
Previously, the revision ID value was only emitted in the AML table
13963
header.
13964
13965
An error message is now generated for the Mutex and Method operators if
13966
the
13967
SyncLevel parameter is outside the legal range of 0 through 15.
13968
13969
Fixed a problem with the Method operator ParameterTypes list handling
13970
(ACPI
13971
3.0). Previously, more than 2 types or 2 arguments generated a syntax
13972
error.
13973
The actual underlying implementation of method argument typechecking is
13974
still under development, however.
13975
13976
----------------------------------------
13977
13 May 2005. Summary of changes for version 20050513:
13978
13979
1) ACPI CA Core Subsystem:
13980
13981
Implemented support for PCI Express root bridges -- added support for
13982
device
13983
PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13984
13985
The interpreter now automatically truncates incoming 64-bit constants to
13986
32
13987
bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13988
This
13989
also affects the iASL compiler constant folding. (Note: as per below, the
13990
iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13991
13992
Fixed a problem where string and buffer objects with "static" pointers
13993
(pointers to initialization data within an ACPI table) were not handled
13994
consistently. The internal object copy operation now always copies the
13995
data
13996
to a newly allocated buffer, regardless of whether the source object is
13997
static or not.
13998
13999
Fixed a problem with the FromBCD operator where an implicit result
14000
conversion was improperly performed while storing the result to the
14001
target
14002
operand. Since this is an "explicit conversion" operator, the implicit
14003
conversion should never be performed on the output.
14004
14005
Fixed a problem with the CopyObject operator where a copy to an existing
14006
named object did not always completely overwrite the existing object
14007
stored
14008
at name. Specifically, a buffer-to-buffer copy did not delete the
14009
existing
14010
buffer.
14011
14012
Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
14013
and
14014
structs for consistency.
14015
14016
Code and Data Size: Current and previous core subsystem library sizes are
14017
shown below. These are the code and data sizes for the acpica.lib
14018
produced
14019
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14020
any ACPI driver or OSPM code. The debug version of the code includes the
14021
debug output trace mechanism and has a much larger code and data size.
14022
Note
14023
that these values will vary depending on the efficiency of the compiler
14024
and
14025
the compiler options used during generation.
14026
14027
Previous Release:
14028
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
14029
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
14030
Current Release: (Same sizes)
14031
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
14032
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
14033
14034
14035
2) iASL Compiler/Disassembler:
14036
14037
The compiler now emits a warning if an attempt is made to generate a 64-
14038
bit
14039
integer constant from within a 32-bit ACPI table (Revision < 2). The
14040
integer
14041
is truncated to 32 bits.
14042
14043
Fixed a problem with large package objects: if the static length of the
14044
package is greater than 255, the "variable length package" opcode is
14045
emitted. Previously, this caused an error. This requires an update to the
14046
ACPI spec, since it currently (incorrectly) states that packages larger
14047
than
14048
255 elements are not allowed.
14049
14050
The disassembler now correctly handles variable length packages and
14051
packages
14052
larger than 255 elements.
14053
14054
----------------------------------------
14055
08 April 2005. Summary of changes for version 20050408:
14056
14057
1) ACPI CA Core Subsystem:
14058
14059
Fixed three cases in the interpreter where an "index" argument to an ASL
14060
function was still (internally) 32 bits instead of the required 64 bits.
14061
This was the Index argument to the Index, Mid, and Match operators.
14062
14063
The "strupr" function is now permanently local (AcpiUtStrupr), since this
14064
is
14065
not a POSIX-defined function and not present in most kernel-level C
14066
libraries. All references to the C library strupr function have been
14067
removed
14068
from the headers.
14069
14070
Completed the deployment of static functions/prototypes. All prototypes
14071
with
14072
the static attribute have been moved from the headers to the owning C
14073
file.
14074
14075
Implemented an extract option (-e) for the AcpiBin utility (AML binary
14076
utility). This option allows the utility to extract individual ACPI
14077
tables
14078
from the output of AcpiDmp. It provides the same functionality of the
14079
acpixtract.pl perl script without the worry of setting the correct perl
14080
options. AcpiBin runs on Windows and has not yet been generated/validated
14081
in
14082
the Linux/Unix environment (but should be soon).
14083
14084
Updated and fixed the table dump option for AcpiBin (-d). This option
14085
converts a single ACPI table to a hex/ascii file, similar to the output
14086
of
14087
AcpiDmp.
14088
14089
Code and Data Size: Current and previous core subsystem library sizes are
14090
shown below. These are the code and data sizes for the acpica.lib
14091
produced
14092
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14093
any ACPI driver or OSPM code. The debug version of the code includes the
14094
debug output trace mechanism and has a much larger code and data size.
14095
Note
14096
that these values will vary depending on the efficiency of the compiler
14097
and
14098
the compiler options used during generation.
14099
14100
Previous Release:
14101
Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
14102
Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
14103
Current Release:
14104
Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
14105
Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
14106
14107
14108
2) iASL Compiler/Disassembler:
14109
14110
Disassembler fix: Added a check to ensure that the table length found in
14111
the
14112
ACPI table header within the input file is not longer than the actual
14113
input
14114
file size. This indicates some kind of file or table corruption.
14115
14116
----------------------------------------
14117
29 March 2005. Summary of changes for version 20050329:
14118
14119
1) ACPI CA Core Subsystem:
14120
14121
An error is now generated if an attempt is made to create a Buffer Field
14122
of
14123
length zero (A CreateField with a length operand of zero.)
14124
14125
The interpreter now issues a warning whenever executable code at the
14126
module
14127
level is detected during ACPI table load. This will give some idea of the
14128
prevalence of this type of code.
14129
14130
Implemented support for references to named objects (other than control
14131
methods) within package objects.
14132
14133
Enhanced package object output for the debug object. Package objects are
14134
now
14135
completely dumped, showing all elements.
14136
14137
Enhanced miscellaneous object output for the debug object. Any object can
14138
now be written to the debug object (for example, a device object can be
14139
written, and the type of the object will be displayed.)
14140
14141
The "static" qualifier has been added to all local functions across both
14142
the
14143
core subsystem and the iASL compiler.
14144
14145
The number of "long" lines (> 80 chars) within the source has been
14146
significantly reduced, by about 1/3.
14147
14148
Cleaned up all header files to ensure that all CA/iASL functions are
14149
prototyped (even static functions) and the formatting is consistent.
14150
14151
Two new header files have been added, acopcode.h and acnames.h.
14152
14153
Removed several obsolete functions that were no longer used.
14154
14155
Code and Data Size: Current and previous core subsystem library sizes are
14156
shown below. These are the code and data sizes for the acpica.lib
14157
produced
14158
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14159
any ACPI driver or OSPM code. The debug version of the code includes the
14160
debug output trace mechanism and has a much larger code and data size.
14161
Note
14162
that these values will vary depending on the efficiency of the compiler
14163
and
14164
the compiler options used during generation.
14165
14166
Previous Release:
14167
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14168
Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
14169
Current Release:
14170
Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
14171
Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
14172
14173
14174
14175
2) iASL Compiler/Disassembler:
14176
14177
Fixed a problem with the resource descriptor generation/support. For the
14178
ResourceSourceIndex and the ResourceSource fields, both must be present,
14179
or
14180
both must be not present - can't have one without the other.
14181
14182
The compiler now returns non-zero from the main procedure if any errors
14183
have
14184
occurred during the compilation.
14185
14186
14187
----------------------------------------
14188
09 March 2005. Summary of changes for version 20050309:
14189
14190
1) ACPI CA Core Subsystem:
14191
14192
The string-to-buffer implicit conversion code has been modified again
14193
after
14194
a change to the ACPI specification. In order to match the behavior of
14195
the
14196
other major ACPI implementation, the target buffer is no longer truncated
14197
if
14198
the source string is smaller than an existing target buffer. This change
14199
requires an update to the ACPI spec, and should eliminate the recent
14200
AE_AML_BUFFER_LIMIT issues.
14201
14202
The "implicit return" support was rewritten to a new algorithm that
14203
solves
14204
the general case. Rather than attempt to determine when a method is about
14205
to
14206
exit, the result of every ASL operator is saved momentarily until the
14207
very
14208
next ASL operator is executed. Therefore, no matter how the method exits,
14209
there will always be a saved implicit return value. This feature is only
14210
enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
14211
eliminate
14212
AE_AML_NO_RETURN_VALUE errors when enabled.
14213
14214
Implemented implicit conversion support for the predicate (operand) of
14215
the
14216
If, Else, and While operators. String and Buffer arguments are
14217
automatically
14218
converted to Integers.
14219
14220
Changed the string-to-integer conversion behavior to match the new ACPI
14221
errata: "If no integer object exists, a new integer is created. The ASCII
14222
string is interpreted as a hexadecimal constant. Each string character is
14223
interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
14224
with the first character as the most significant digit, and ending with
14225
the
14226
first non-hexadecimal character or end-of-string." This means that the
14227
first
14228
non-hex character terminates the conversion and this is the code that was
14229
changed.
14230
14231
Fixed a problem where the ObjectType operator would fail (fault) when
14232
used
14233
on an Index of a Package which pointed to a null package element. The
14234
operator now properly returns zero (Uninitialized) in this case.
14235
14236
Fixed a problem where the While operator used excessive memory by not
14237
properly popping the result stack during execution. There was no memory
14238
leak
14239
after execution, however. (Code provided by Valery Podrezov.)
14240
14241
Fixed a problem where references to control methods within Package
14242
objects
14243
caused the method to be invoked, instead of producing a reference object
14244
pointing to the method.
14245
14246
Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
14247
to
14248
improve performance and reduce code size. (Code provided by Alexey
14249
Starikovskiy.)
14250
14251
Code and Data Size: Current and previous core subsystem library sizes are
14252
shown below. These are the code and data sizes for the acpica.lib
14253
produced
14254
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14255
any ACPI driver or OSPM code. The debug version of the code includes the
14256
debug output trace mechanism and has a much larger code and data size.
14257
Note
14258
that these values will vary depending on the efficiency of the compiler
14259
and
14260
the compiler options used during generation.
14261
14262
Previous Release:
14263
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14264
Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
14265
Current Release:
14266
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14267
Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
14268
14269
14270
2) iASL Compiler/Disassembler:
14271
14272
Fixed a problem with the Return operator with no arguments. Since the AML
14273
grammar for the byte encoding requires an operand for the Return opcode,
14274
the
14275
compiler now emits a Return(Zero) for this case. An ACPI specification
14276
update has been written for this case.
14277
14278
For tables other than the DSDT, namepath optimization is automatically
14279
disabled. This is because SSDTs can be loaded anywhere in the namespace,
14280
the
14281
compiler has no knowledge of where, and thus cannot optimize namepaths.
14282
14283
Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
14284
inadvertently omitted from the ACPI specification, and will require an
14285
update to the spec.
14286
14287
The source file scan for ASCII characters is now optional (-a). This
14288
change
14289
was made because some vendors place non-ascii characters within comments.
14290
However, the scan is simply a brute-force byte compare to ensure all
14291
characters in the file are in the range 0x00 to 0x7F.
14292
14293
Fixed a problem with the CondRefOf operator where the compiler was
14294
inappropriately checking for the existence of the target. Since the point
14295
of
14296
the operator is to check for the existence of the target at run-time, the
14297
compiler no longer checks for the target existence.
14298
14299
Fixed a problem where errors generated from the internal AML interpreter
14300
during constant folding were not handled properly, causing a fault.
14301
14302
Fixed a problem with overly aggressive range checking for the Stall
14303
operator. The valid range (max 255) is now only checked if the operand is
14304
of
14305
type Integer. All other operand types cannot be statically checked.
14306
14307
Fixed a problem where control method references within the RefOf,
14308
DeRefOf,
14309
and ObjectType operators were not treated properly. They are now treated
14310
as
14311
actual references, not method invocations.
14312
14313
Fixed and enhanced the "list namespace" option (-ln). This option was
14314
broken
14315
a number of releases ago.
14316
14317
Improved error handling for the Field, IndexField, and BankField
14318
operators.
14319
The compiler now cleanly reports and recovers from errors in the field
14320
component (FieldUnit) list.
14321
14322
Fixed a disassembler problem where the optional ResourceDescriptor fields
14323
TRS and TTP were not always handled correctly.
14324
14325
Disassembler - Comments in output now use "//" instead of "/*"
14326
14327
----------------------------------------
14328
28 February 2005. Summary of changes for version 20050228:
14329
14330
1) ACPI CA Core Subsystem:
14331
14332
Fixed a problem where the result of an Index() operator (an object
14333
reference) must increment the reference count on the target object for
14334
the
14335
life of the object reference.
14336
14337
Implemented AML Interpreter and Debugger support for the new ACPI 3.0
14338
Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
14339
WordSpace
14340
resource descriptors.
14341
14342
Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
14343
Space Descriptor" string, indicating interpreter support for the
14344
descriptors
14345
above.
14346
14347
Implemented header support for the new ACPI 3.0 FADT flag bits.
14348
14349
Implemented header support for the new ACPI 3.0 PCI Express bits for the
14350
PM1
14351
status/enable registers.
14352
14353
Updated header support for the MADT processor local Apic struct and MADT
14354
platform interrupt source struct for new ACPI 3.0 fields.
14355
14356
Implemented header support for the SRAT and SLIT ACPI tables.
14357
14358
Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
14359
flag
14360
at runtime.
14361
14362
Code and Data Size: Current and previous core subsystem library sizes are
14363
shown below. These are the code and data sizes for the acpica.lib
14364
produced
14365
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14366
any ACPI driver or OSPM code. The debug version of the code includes the
14367
debug output trace mechanism and has a much larger code and data size.
14368
Note
14369
that these values will vary depending on the efficiency of the compiler
14370
and
14371
the compiler options used during generation.
14372
14373
Previous Release:
14374
Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
14375
Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
14376
Current Release:
14377
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14378
Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
14379
14380
14381
2) iASL Compiler/Disassembler:
14382
14383
Fixed a problem with the internal 64-bit String-to-integer conversion
14384
with
14385
strings less than two characters long.
14386
14387
Fixed a problem with constant folding where the result of the Index()
14388
operator can not be considered a constant. This means that Index() cannot
14389
be
14390
a type3 opcode and this will require an update to the ACPI specification.
14391
14392
Disassembler: Implemented support for the TTP, MTP, and TRS resource
14393
descriptor fields. These fields were inadvertently ignored and not output
14394
in
14395
the disassembly of the resource descriptor.
14396
14397
14398
----------------------------------------
14399
11 February 2005. Summary of changes for version 20050211:
14400
14401
1) ACPI CA Core Subsystem:
14402
14403
Implemented ACPI 3.0 support for implicit conversion within the Match()
14404
operator. MatchObjects can now be of type integer, buffer, or string
14405
instead
14406
of just type integer. Package elements are implicitly converted to the
14407
type
14408
of the MatchObject. This change aligns the behavior of Match() with the
14409
behavior of the other logical operators (LLess(), etc.) It also requires
14410
an
14411
errata change to the ACPI specification as this support was intended for
14412
ACPI 3.0, but was inadvertently omitted.
14413
14414
Fixed a problem with the internal implicit "to buffer" conversion.
14415
Strings
14416
that are converted to buffers will cause buffer truncation if the string
14417
is
14418
smaller than the target buffer. Integers that are converted to buffers
14419
will
14420
not cause buffer truncation, only zero extension (both as per the ACPI
14421
spec.) The problem was introduced when code was added to truncate the
14422
buffer, but this should not be performed in all cases, only the string
14423
case.
14424
14425
Fixed a problem with the Buffer and Package operators where the
14426
interpreter
14427
would get confused if two such operators were used as operands to an ASL
14428
operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
14429
stack was not being popped after the execution of these operators,
14430
resulting
14431
in an AE_NO_RETURN_VALUE exception.
14432
14433
Fixed a problem with constructs of the form Store(Index(...),...). The
14434
reference object returned from Index was inadvertently resolved to an
14435
actual
14436
value. This problem was introduced in version 20050114 when the behavior
14437
of
14438
Store() was modified to restrict the object types that can be used as the
14439
source operand (to match the ACPI specification.)
14440
14441
Reduced excessive stack use within the AcpiGetObjectInfo procedure.
14442
14443
Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
14444
14445
Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
14446
14447
Code and Data Size: Current and previous core subsystem library sizes are
14448
shown below. These are the code and data sizes for the acpica.lib
14449
produced
14450
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14451
any ACPI driver or OSPM code. The debug version of the code includes the
14452
debug output trace mechanism and has a much larger code and data size.
14453
Note
14454
that these values will vary depending on the efficiency of the compiler
14455
and
14456
the compiler options used during generation.
14457
14458
Previous Release:
14459
Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
14460
Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
14461
Current Release:
14462
Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
14463
Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
14464
14465
14466
2) iASL Compiler/Disassembler:
14467
14468
Fixed a code generation problem in the constant folding optimization code
14469
where incorrect code was generated if a constant was reduced to a buffer
14470
object (i.e., a reduced type 5 opcode.)
14471
14472
Fixed a typechecking problem for the ToBuffer operator. Caused by an
14473
incorrect return type in the internal opcode information table.
14474
14475
----------------------------------------
14476
25 January 2005. Summary of changes for version 20050125:
14477
14478
1) ACPI CA Core Subsystem:
14479
14480
Fixed a recently introduced problem with the Global Lock where the
14481
underlying semaphore was not created. This problem was introduced in
14482
version 20050114, and caused an AE_AML_NO_OPERAND exception during an
14483
Acquire() operation on _GL.
14484
14485
The local object cache is now optional, and is disabled by default. Both
14486
AcpiExec and the iASL compiler enable the cache because they run in user
14487
mode and this enhances their performance. #define
14488
ACPI_ENABLE_OBJECT_CACHE
14489
to enable the local cache.
14490
14491
Fixed an issue in the internal function AcpiUtEvaluateObject concerning
14492
the
14493
optional "implicit return" support where an error was returned if no
14494
return
14495
object was expected, but one was implicitly returned. AE_OK is now
14496
returned
14497
in this case and the implicitly returned object is deleted.
14498
AcpiUtEvaluateObject is only occasionally used, and only to execute
14499
reserved
14500
methods such as _STA and _INI where the return type is known up front.
14501
14502
Fixed a few issues with the internal convert-to-integer code. It now
14503
returns
14504
an error if an attempt is made to convert a null string, a string of only
14505
blanks/tabs, or a zero-length buffer. This affects both implicit
14506
conversion
14507
and explicit conversion via the ToInteger() operator.
14508
14509
The internal debug code in AcpiUtAcquireMutex has been commented out. It
14510
is
14511
not needed for normal operation and should increase the performance of
14512
the
14513
entire subsystem. The code remains in case it is needed for debug
14514
purposes
14515
again.
14516
14517
The AcpiExec source and makefile are included in the Unix/Linux package
14518
for
14519
the first time.
14520
14521
Code and Data Size: Current and previous core subsystem library sizes are
14522
shown below. These are the code and data sizes for the acpica.lib
14523
produced
14524
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14525
any ACPI driver or OSPM code. The debug version of the code includes the
14526
debug output trace mechanism and has a much larger code and data size.
14527
Note
14528
that these values will vary depending on the efficiency of the compiler
14529
and
14530
the compiler options used during generation.
14531
14532
Previous Release:
14533
Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
14534
Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
14535
Current Release:
14536
Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
14537
Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
14538
14539
2) iASL Compiler/Disassembler:
14540
14541
Switch/Case support: A warning is now issued if the type of the Switch
14542
value
14543
cannot be determined at compile time. For example, Switch(Arg0) will
14544
generate the warning, and the type is assumed to be an integer. As per
14545
the
14546
ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14547
the
14548
warning.
14549
14550
Switch/Case support: Implemented support for buffer and string objects as
14551
the switch value. This is an ACPI 3.0 feature, now that LEqual supports
14552
buffers and strings.
14553
14554
Switch/Case support: The emitted code for the LEqual() comparisons now
14555
uses
14556
the switch value as the first operand, not the second. The case value is
14557
now
14558
the second operand, and this allows the case value to be implicitly
14559
converted to the type of the switch value, not the other way around.
14560
14561
Switch/Case support: Temporary variables are now emitted immediately
14562
within
14563
the control method, not at the global level. This means that there are
14564
now
14565
36 temps available per-method, not 36 temps per-module as was the case
14566
with
14567
the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14568
14569
----------------------------------------
14570
14 January 2005. Summary of changes for version 20050114:
14571
14572
Added 2005 copyright to all module headers. This affects every module in
14573
the core subsystem, iASL compiler, and the utilities.
14574
14575
1) ACPI CA Core Subsystem:
14576
14577
Fixed an issue with the String-to-Buffer conversion code where the string
14578
null terminator was not included in the buffer after conversion, but
14579
there
14580
is existing ASL that assumes the string null terminator is included. This
14581
is
14582
the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14583
introduced in the previous version when the code was updated to correctly
14584
set the converted buffer size as per the ACPI specification. The ACPI
14585
spec
14586
is ambiguous and will be updated to specify that the null terminator must
14587
be
14588
included in the converted buffer. This also affects the ToBuffer() ASL
14589
operator.
14590
14591
Fixed a problem with the Mid() ASL/AML operator where it did not work
14592
correctly on Buffer objects. Newly created sub-buffers were not being
14593
marked
14594
as initialized.
14595
14596
14597
Fixed a problem in AcpiTbFindTable where incorrect string compares were
14598
performed on the OemId and OemTableId table header fields. These fields
14599
are
14600
not null terminated, so strncmp is now used instead of strcmp.
14601
14602
Implemented a restriction on the Store() ASL/AML operator to align the
14603
behavior with the ACPI specification. Previously, any object could be
14604
used
14605
as the source operand. Now, the only objects that may be used are
14606
Integers,
14607
Buffers, Strings, Packages, Object References, and DDB Handles. If
14608
necessary, the original behavior can be restored by enabling the
14609
EnableInterpreterSlack flag.
14610
14611
Enhanced the optional "implicit return" support to allow an implicit
14612
return
14613
value from methods that are invoked externally via the AcpiEvaluateObject
14614
interface. This enables implicit returns from the _STA and _INI methods,
14615
for example.
14616
14617
Changed the Revision() ASL/AML operator to return the current version of
14618
the
14619
AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14620
returned
14621
the supported ACPI version (This is the function of the _REV method).
14622
14623
Updated the _REV predefined method to return the currently supported
14624
version
14625
of ACPI, now 3.
14626
14627
Implemented batch mode option for the AcpiExec utility (-b).
14628
14629
Code and Data Size: Current and previous core subsystem library sizes are
14630
shown below. These are the code and data sizes for the acpica.lib
14631
produced
14632
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14633
any ACPI driver or OSPM code. The debug version of the code includes the
14634
debug output trace mechanism and has a much larger code and data size.
14635
Note
14636
that these values will vary depending on the efficiency of the compiler
14637
and
14638
the compiler options used during generation.
14639
14640
Previous Release:
14641
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14642
Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
14643
Current Release:
14644
Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
14645
Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
14646
14647
----------------------------------------
14648
10 December 2004. Summary of changes for version 20041210:
14649
14650
ACPI 3.0 support is nearing completion in both the iASL compiler and the
14651
ACPI CA core subsystem.
14652
14653
1) ACPI CA Core Subsystem:
14654
14655
Fixed a problem in the ToDecimalString operator where the resulting
14656
string
14657
length was incorrectly calculated. The length is now calculated exactly,
14658
eliminating incorrect AE_STRING_LIMIT exceptions.
14659
14660
Fixed a problem in the ToHexString operator to allow a maximum 200
14661
character
14662
string to be produced.
14663
14664
Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14665
copy
14666
routine where the length of the resulting buffer was not truncated to the
14667
new size (if the target buffer already existed).
14668
14669
Code and Data Size: Current and previous core subsystem library sizes are
14670
shown below. These are the code and data sizes for the acpica.lib
14671
produced
14672
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14673
any ACPI driver or OSPM code. The debug version of the code includes the
14674
debug output trace mechanism and has a much larger code and data size.
14675
Note
14676
that these values will vary depending on the efficiency of the compiler
14677
and
14678
the compiler options used during generation.
14679
14680
Previous Release:
14681
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14682
Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
14683
Current Release:
14684
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14685
Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
14686
14687
14688
2) iASL Compiler/Disassembler:
14689
14690
Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14691
ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14692
Includes support in the disassembler.
14693
14694
Implemented support for the new (ACPI 3.0) parameter to the Register
14695
macro,
14696
AccessSize.
14697
14698
Fixed a problem where the _HE resource name for the Interrupt macro was
14699
referencing bit 0 instead of bit 1.
14700
14701
Implemented check for maximum 255 interrupts in the Interrupt macro.
14702
14703
Fixed a problem with the predefined resource descriptor names where
14704
incorrect AML code was generated if the offset within the resource buffer
14705
was 0 or 1. The optimizer shortened the AML code to a single byte opcode
14706
but did not update the surrounding package lengths.
14707
14708
Changes to the Dma macro: All channels within the channel list must be
14709
in
14710
the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
14711
optional (default is BusMaster).
14712
14713
Implemented check for maximum 7 data bytes for the VendorShort macro.
14714
14715
The ReadWrite parameter is now optional for the Memory32 and similar
14716
macros.
14717
14718
----------------------------------------
14719
03 December 2004. Summary of changes for version 20041203:
14720
14721
1) ACPI CA Core Subsystem:
14722
14723
The low-level field insertion/extraction code (exfldio) has been
14724
completely
14725
rewritten to eliminate unnecessary complexity, bugs, and boundary
14726
conditions.
14727
14728
Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14729
ToDecimalString
14730
operators where the input operand could be inadvertently deleted if no
14731
conversion was necessary (e.g., if the input to ToInteger was an Integer
14732
object.)
14733
14734
Fixed a problem with the ToDecimalString and ToHexString where an
14735
incorrect
14736
exception code was returned if the resulting string would be > 200 chars.
14737
AE_STRING_LIMIT is now returned.
14738
14739
Fixed a problem with the Concatenate operator where AE_OK was always
14740
returned, even if the operation failed.
14741
14742
Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14743
semaphores to be allocated.
14744
14745
Code and Data Size: Current and previous core subsystem library sizes are
14746
shown below. These are the code and data sizes for the acpica.lib
14747
produced
14748
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14749
any ACPI driver or OSPM code. The debug version of the code includes the
14750
debug output trace mechanism and has a much larger code and data size.
14751
Note
14752
that these values will vary depending on the efficiency of the compiler
14753
and
14754
the compiler options used during generation.
14755
14756
Previous Release:
14757
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
14758
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
14759
Current Release:
14760
Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
14761
Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
14762
14763
14764
2) iASL Compiler/Disassembler:
14765
14766
Fixed typechecking for the ObjectType and SizeOf operators. Problem was
14767
recently introduced in 20041119.
14768
14769
Fixed a problem with the ToUUID macro where the upper nybble of each
14770
buffer
14771
byte was inadvertently set to zero.
14772
14773
----------------------------------------
14774
19 November 2004. Summary of changes for version 20041119:
14775
14776
1) ACPI CA Core Subsystem:
14777
14778
Fixed a problem in the internal ConvertToInteger routine where new
14779
integers
14780
were not truncated to 32 bits for 32-bit ACPI tables. This routine
14781
converts
14782
buffers and strings to integers.
14783
14784
Implemented support to store a value to an Index() on a String object.
14785
This
14786
is an ACPI 2.0 feature that had not yet been implemented.
14787
14788
Implemented new behavior for storing objects to individual package
14789
elements
14790
(via the Index() operator). The previous behavior was to invoke the
14791
implicit
14792
conversion rules if an object was already present at the index. The new
14793
behavior is to simply delete any existing object and directly store the
14794
new
14795
object. Although the ACPI specification seems unclear on this subject,
14796
other
14797
ACPI implementations behave in this manner. (This is the root of the
14798
AE_BAD_HEX_CONSTANT issue.)
14799
14800
Modified the RSDP memory scan mechanism to support the extended checksum
14801
for
14802
ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14803
RSDP signature is found with a valid checksum.
14804
14805
Code and Data Size: Current and previous core subsystem library sizes are
14806
shown below. These are the code and data sizes for the acpica.lib
14807
produced
14808
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14809
any ACPI driver or OSPM code. The debug version of the code includes the
14810
debug output trace mechanism and has a much larger code and data size.
14811
Note
14812
that these values will vary depending on the efficiency of the compiler
14813
and
14814
the compiler options used during generation.
14815
14816
Previous Release:
14817
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
14818
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
14819
Current Release:
14820
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
14821
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
14822
14823
14824
2) iASL Compiler/Disassembler:
14825
14826
Fixed a missing semicolon in the aslcompiler.y file.
14827
14828
----------------------------------------
14829
05 November 2004. Summary of changes for version 20041105:
14830
14831
1) ACPI CA Core Subsystem:
14832
14833
Implemented support for FADT revision 2. This was an interim table
14834
(between
14835
ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14836
14837
Implemented optional support to allow uninitialized LocalX and ArgX
14838
variables in a control method. The variables are initialized to an
14839
Integer
14840
object with a value of zero. This support is enabled by setting the
14841
AcpiGbl_EnableInterpreterSlack flag to TRUE.
14842
14843
Implemented support for Integer objects for the SizeOf operator. Either
14844
4
14845
or 8 is returned, depending on the current integer size (32-bit or 64-
14846
bit,
14847
depending on the parent table revision).
14848
14849
Fixed a problem in the implementation of the SizeOf and ObjectType
14850
operators
14851
where the operand was resolved to a value too early, causing incorrect
14852
return values for some objects.
14853
14854
Fixed some possible memory leaks during exceptional conditions.
14855
14856
Code and Data Size: Current and previous core subsystem library sizes are
14857
shown below. These are the code and data sizes for the acpica.lib
14858
produced
14859
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14860
any ACPI driver or OSPM code. The debug version of the code includes the
14861
debug output trace mechanism and has a much larger code and data size.
14862
Note
14863
that these values will vary depending on the efficiency of the compiler
14864
and
14865
the compiler options used during generation.
14866
14867
Previous Release:
14868
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14869
Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
14870
Current Release:
14871
Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
14872
Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
14873
14874
14875
2) iASL Compiler/Disassembler:
14876
14877
Implemented support for all ACPI 3.0 reserved names and methods.
14878
14879
Implemented all ACPI 3.0 grammar elements in the front-end, including
14880
support for semicolons.
14881
14882
Implemented the ACPI 3.0 Function() and ToUUID() macros
14883
14884
Fixed a problem in the disassembler where a Scope() operator would not be
14885
emitted properly if the target of the scope was in another table.
14886
14887
----------------------------------------
14888
15 October 2004. Summary of changes for version 20041015:
14889
14890
Note: ACPI CA is currently undergoing an in-depth and complete formal
14891
evaluation to test/verify the following areas. Other suggestions are
14892
welcome. This will result in an increase in the frequency of releases and
14893
the number of bug fixes in the next few months.
14894
- Functional tests for all ASL/AML operators
14895
- All implicit/explicit type conversions
14896
- Bit fields and operation regions
14897
- 64-bit math support and 32-bit-only "truncated" math support
14898
- Exceptional conditions, both compiler and interpreter
14899
- Dynamic object deletion and memory leaks
14900
- ACPI 3.0 support when implemented
14901
- External interfaces to the ACPI subsystem
14902
14903
14904
1) ACPI CA Core Subsystem:
14905
14906
Fixed two alignment issues on 64-bit platforms - within debug statements
14907
in
14908
AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14909
Address
14910
field within the non-aligned ACPI generic address structure.
14911
14912
Fixed a problem in the Increment and Decrement operators where incorrect
14913
operand resolution could result in the inadvertent modification of the
14914
original integer when the integer is passed into another method as an
14915
argument and the arg is then incremented/decremented.
14916
14917
Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14918
bit
14919
BCD number were truncated during conversion.
14920
14921
Fixed a problem in the ToDecimal operator where the length of the
14922
resulting
14923
string could be set incorrectly too long if the input operand was a
14924
Buffer
14925
object.
14926
14927
Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14928
(0)
14929
within a buffer would prematurely terminate a compare between buffer
14930
objects.
14931
14932
Added a check for string overflow (>200 characters as per the ACPI
14933
specification) during the Concatenate operator with two string operands.
14934
14935
Code and Data Size: Current and previous core subsystem library sizes are
14936
shown below. These are the code and data sizes for the acpica.lib
14937
produced
14938
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14939
any ACPI driver or OSPM code. The debug version of the code includes the
14940
debug output trace mechanism and has a much larger code and data size.
14941
Note
14942
that these values will vary depending on the efficiency of the compiler
14943
and
14944
the compiler options used during generation.
14945
14946
Previous Release:
14947
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14948
Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
14949
Current Release:
14950
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14951
Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
14952
14953
14954
14955
2) iASL Compiler/Disassembler:
14956
14957
Allow the use of the ObjectType operator on uninitialized Locals and Args
14958
(returns 0 as per the ACPI specification).
14959
14960
Fixed a problem where the compiler would fault if there was a syntax
14961
error
14962
in the FieldName of all of the various CreateXXXField operators.
14963
14964
Disallow the use of lower case letters within the EISAID macro, as per
14965
the
14966
ACPI specification. All EISAID strings must be of the form "UUUNNNN"
14967
Where
14968
U is an uppercase letter and N is a hex digit.
14969
14970
14971
----------------------------------------
14972
06 October 2004. Summary of changes for version 20041006:
14973
14974
1) ACPI CA Core Subsystem:
14975
14976
Implemented support for the ACPI 3.0 Timer operator. This ASL function
14977
implements a 64-bit timer with 100 nanosecond granularity.
14978
14979
Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14980
implement the ACPI 3.0 Timer operator. This allows the host OS to
14981
implement
14982
the timer with the best clock available. Also, it keeps the core
14983
subsystem
14984
out of the clock handling business, since the host OS (usually) performs
14985
this function.
14986
14987
Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14988
functions use a 64-bit address which is part of the packed ACPI Generic
14989
Address Structure. Since the structure is non-aligned, the alignment
14990
macros
14991
are now used to extract the address to a local variable before use.
14992
14993
Fixed a problem where the ToInteger operator assumed all input strings
14994
were
14995
hexadecimal. The operator now handles both decimal strings and hex
14996
strings
14997
(prefixed with "0x").
14998
14999
Fixed a problem where the string length in the string object created as a
15000
result of the internal ConvertToString procedure could be incorrect. This
15001
potentially affected all implicit conversions and also the
15002
ToDecimalString
15003
and ToHexString operators.
15004
15005
Fixed two problems in the ToString operator. If the length parameter was
15006
zero, an incorrect string object was created and the value of the input
15007
length parameter was inadvertently changed from zero to Ones.
15008
15009
Fixed a problem where the optional ResourceSource string in the
15010
ExtendedIRQ
15011
resource macro was ignored.
15012
15013
Simplified the interfaces to the internal division functions, reducing
15014
code
15015
size and complexity.
15016
15017
Code and Data Size: Current and previous core subsystem library sizes are
15018
shown below. These are the code and data sizes for the acpica.lib
15019
produced
15020
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15021
any ACPI driver or OSPM code. The debug version of the code includes the
15022
debug output trace mechanism and has a much larger code and data size.
15023
Note
15024
that these values will vary depending on the efficiency of the compiler
15025
and
15026
the compiler options used during generation.
15027
15028
Previous Release:
15029
Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
15030
Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
15031
Current Release:
15032
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
15033
Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
15034
15035
15036
2) iASL Compiler/Disassembler:
15037
15038
Implemented support for the ACPI 3.0 Timer operator.
15039
15040
Fixed a problem where the Default() operator was inadvertently ignored in
15041
a
15042
Switch/Case block. This was a problem in the translation of the Switch
15043
statement to If...Else pairs.
15044
15045
Added support to allow a standalone Return operator, with no parentheses
15046
(or
15047
operands).
15048
15049
Fixed a problem with code generation for the ElseIf operator where the
15050
translated Else...If parse tree was improperly constructed leading to the
15051
loss of some code.
15052
15053
----------------------------------------
15054
22 September 2004. Summary of changes for version 20040922:
15055
15056
1) ACPI CA Core Subsystem:
15057
15058
Fixed a problem with the implementation of the LNot() operator where
15059
"Ones"
15060
was not returned for the TRUE case. Changed the code to return Ones
15061
instead
15062
of (!Arg) which was usually 1. This change affects iASL constant folding
15063
for
15064
this operator also.
15065
15066
Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
15067
not
15068
initialized properly -- Now zero the entire buffer in this case where the
15069
buffer already exists.
15070
15071
Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
15072
Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
15073
related code considerably. This will require changes/updates to all OS
15074
interface layers (OSLs.)
15075
15076
Implemented a new external interface, AcpiInstallExceptionHandler, to
15077
allow
15078
a system exception handler to be installed. This handler is invoked upon
15079
any
15080
run-time exception that occurs during control method execution.
15081
15082
Added support for the DSDT in AcpiTbFindTable. This allows the
15083
DataTableRegion() operator to access the local copy of the DSDT.
15084
15085
Code and Data Size: Current and previous core subsystem library sizes are
15086
shown below. These are the code and data sizes for the acpica.lib
15087
produced
15088
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15089
any ACPI driver or OSPM code. The debug version of the code includes the
15090
debug output trace mechanism and has a much larger code and data size.
15091
Note
15092
that these values will vary depending on the efficiency of the compiler
15093
and
15094
the compiler options used during generation.
15095
15096
Previous Release:
15097
Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
15098
Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
15099
Current Release:
15100
Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
15101
Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
15102
15103
15104
2) iASL Compiler/Disassembler:
15105
15106
Fixed a problem with constant folding and the LNot operator. LNot was
15107
returning 1 in the TRUE case, not Ones as per the ACPI specification.
15108
This
15109
could result in the generation of an incorrect folded/reduced constant.
15110
15111
End-Of-File is now allowed within a "//"-style comment. A parse error no
15112
longer occurs if such a comment is at the very end of the input ASL
15113
source
15114
file.
15115
15116
Implemented the "-r" option to override the Revision in the table header.
15117
The initial use of this option will be to simplify the evaluation of the
15118
AML
15119
interpreter by allowing a single ASL source module to be compiled for
15120
either
15121
32-bit or 64-bit integers.
15122
15123
15124
----------------------------------------
15125
27 August 2004. Summary of changes for version 20040827:
15126
15127
1) ACPI CA Core Subsystem:
15128
15129
- Implemented support for implicit object conversion in the non-numeric
15130
logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
15131
and
15132
LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
15133
the second operand is implicitly converted on the fly to match the type
15134
of
15135
the first operand. For example:
15136
15137
LEqual (Source1, Source2)
15138
15139
Source1 and Source2 must each evaluate to an integer, a string, or a
15140
buffer.
15141
The data type of Source1 dictates the required type of Source2. Source2
15142
is
15143
implicitly converted if necessary to match the type of Source1.
15144
15145
- Updated and corrected the behavior of the string conversion support.
15146
The
15147
rules concerning conversion of buffers to strings (according to the ACPI
15148
specification) are as follows:
15149
15150
ToDecimalString - explicit byte-wise conversion of buffer to string of
15151
decimal values (0-255) separated by commas. ToHexString - explicit byte-
15152
wise
15153
conversion of buffer to string of hex values (0-FF) separated by commas.
15154
ToString - explicit byte-wise conversion of buffer to string. Byte-by-
15155
byte
15156
copy with no transform except NULL terminated. Any other implicit buffer-
15157
to-
15158
string conversion - byte-wise conversion of buffer to string of hex
15159
values
15160
(0-FF) separated by spaces.
15161
15162
- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
15163
15164
- Fixed a problem in AcpiNsGetPathnameLength where the returned length
15165
was
15166
one byte too short in the case of a node in the root scope. This could
15167
cause a fault during debug output.
15168
15169
- Code and Data Size: Current and previous core subsystem library sizes
15170
are
15171
shown below. These are the code and data sizes for the acpica.lib
15172
produced
15173
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15174
any ACPI driver or OSPM code. The debug version of the code includes the
15175
debug output trace mechanism and has a much larger code and data size.
15176
Note
15177
that these values will vary depending on the efficiency of the compiler
15178
and
15179
the compiler options used during generation.
15180
15181
Previous Release:
15182
Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
15183
Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
15184
Current Release:
15185
Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
15186
Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
15187
15188
15189
2) iASL Compiler/Disassembler:
15190
15191
- Fixed a Linux generation error.
15192
15193
15194
----------------------------------------
15195
16 August 2004. Summary of changes for version 20040816:
15196
15197
1) ACPI CA Core Subsystem:
15198
15199
Designed and implemented support within the AML interpreter for the so-
15200
called "implicit return". This support returns the result of the last
15201
ASL
15202
operation within a control method, in the absence of an explicit Return()
15203
operator. A few machines depend on this behavior, even though it is not
15204
explicitly supported by the ASL language. It is optional support that
15205
can
15206
be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
15207
15208
Removed support for the PCI_Config address space from the internal low
15209
level
15210
hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
15211
support was not used internally, and would not work correctly anyway
15212
because
15213
the PCI bus number and segment number were not supported. There are
15214
separate interfaces for PCI configuration space access because of the
15215
unique
15216
interface.
15217
15218
Code and Data Size: Current and previous core subsystem library sizes are
15219
shown below. These are the code and data sizes for the acpica.lib
15220
produced
15221
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15222
any ACPI driver or OSPM code. The debug version of the code includes the
15223
debug output trace mechanism and has a much larger code and data size.
15224
Note
15225
that these values will vary depending on the efficiency of the compiler
15226
and
15227
the compiler options used during generation.
15228
15229
Previous Release:
15230
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
15231
Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
15232
Current Release:
15233
Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
15234
Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
15235
15236
15237
2) iASL Compiler/Disassembler:
15238
15239
Fixed a problem where constants in ASL expressions at the root level (not
15240
within a control method) could be inadvertently truncated during code
15241
generation. This problem was introduced in the 20040715 release.
15242
15243
15244
----------------------------------------
15245
15 July 2004. Summary of changes for version 20040715:
15246
15247
1) ACPI CA Core Subsystem:
15248
15249
Restructured the internal HW GPE interfaces to pass/track the current
15250
state
15251
of interrupts (enabled/disabled) in order to avoid possible deadlock and
15252
increase flexibility of the interfaces.
15253
15254
Implemented a "lexicographical compare" for String and Buffer objects
15255
within
15256
the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
15257
-
15258
as per further clarification to the ACPI specification. Behavior is
15259
similar
15260
to C library "strcmp".
15261
15262
Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
15263
external function. In the 32-bit non-debug case, the stack use has been
15264
reduced from 168 bytes to 32 bytes.
15265
15266
Deployed a new run-time configuration flag,
15267
AcpiGbl_EnableInterpreterSlack,
15268
whose purpose is to allow the AML interpreter to forgive certain bad AML
15269
constructs. Default setting is FALSE.
15270
15271
Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
15272
IO
15273
support code. If enabled, it allows field access to go beyond the end of
15274
a
15275
region definition if the field is within the region length rounded up to
15276
the
15277
next access width boundary (a common coding error.)
15278
15279
Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
15280
ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
15281
these
15282
symbols are lowercase by the latest version of the AcpiSrc tool.
15283
15284
The prototypes for the PCI interfaces in acpiosxf.h have been updated to
15285
rename "Register" to simply "Reg" to prevent certain compilers from
15286
complaining.
15287
15288
Code and Data Size: Current and previous core subsystem library sizes are
15289
shown below. These are the code and data sizes for the acpica.lib
15290
produced
15291
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15292
any ACPI driver or OSPM code. The debug version of the code includes the
15293
debug output trace mechanism and has a much larger code and data size.
15294
Note
15295
that these values will vary depending on the efficiency of the compiler
15296
and
15297
the compiler options used during generation.
15298
15299
Previous Release:
15300
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
15301
Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
15302
Current Release:
15303
Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
15304
Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
15305
15306
15307
2) iASL Compiler/Disassembler:
15308
15309
Implemented full support for Package objects within the Case() operator.
15310
Note: The Break() operator is currently not supported within Case blocks
15311
(TermLists) as there is some question about backward compatibility with
15312
ACPI
15313
1.0 interpreters.
15314
15315
15316
Fixed a problem where complex terms were not supported properly within
15317
the
15318
Switch() operator.
15319
15320
Eliminated extraneous warning for compiler-emitted reserved names of the
15321
form "_T_x". (Used in Switch/Case operators.)
15322
15323
Eliminated optimization messages for "_T_x" objects and small constants
15324
within the DefinitionBlock operator.
15325
15326
15327
----------------------------------------
15328
15 June 2004. Summary of changes for version 20040615:
15329
15330
1) ACPI CA Core Subsystem:
15331
15332
Implemented support for Buffer and String objects (as per ACPI 2.0) for
15333
the
15334
following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
15335
LLessEqual.
15336
15337
All directory names in the entire source package are lower case, as they
15338
were in earlier releases.
15339
15340
Implemented "Disassemble" command in the AML debugger that will
15341
disassemble
15342
a single control method.
15343
15344
Code and Data Size: Current and previous core subsystem library sizes are
15345
shown below. These are the code and data sizes for the acpica.lib
15346
produced
15347
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15348
any ACPI driver or OSPM code. The debug version of the code includes the
15349
debug output trace mechanism and has a much larger code and data size.
15350
Note
15351
that these values will vary depending on the efficiency of the compiler
15352
and
15353
the compiler options used during generation.
15354
15355
Previous Release:
15356
Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
15357
Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
15358
15359
Current Release:
15360
Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
15361
Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
15362
15363
15364
2) iASL Compiler/Disassembler:
15365
15366
Implemented support for Buffer and String objects (as per ACPI 2.0) for
15367
the
15368
following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
15369
LLessEqual.
15370
15371
All directory names in the entire source package are lower case, as they
15372
were in earlier releases.
15373
15374
Fixed a fault when using the -g or -d<nofilename> options if the FADT was
15375
not found.
15376
15377
Fixed an issue with the Windows version of the compiler where later
15378
versions
15379
of Windows place the FADT in the registry under the name "FADT" and not
15380
"FACP" as earlier versions did. This applies when using the -g or -
15381
d<nofilename> options. The compiler now looks for both strings as
15382
necessary.
15383
15384
Fixed a problem with compiler namepath optimization where a namepath
15385
within
15386
the Scope() operator could not be optimized if the namepath was a subpath
15387
of
15388
the current scope path.
15389
15390
----------------------------------------
15391
27 May 2004. Summary of changes for version 20040527:
15392
15393
1) ACPI CA Core Subsystem:
15394
15395
Completed a new design and implementation for EBDA (Extended BIOS Data
15396
Area)
15397
support in the RSDP scan code. The original code improperly scanned for
15398
the
15399
EBDA by simply scanning from memory location 0 to 0x400. The correct
15400
method
15401
is to first obtain the EBDA pointer from within the BIOS data area, then
15402
scan 1K of memory starting at the EBDA pointer. There appear to be few
15403
if
15404
any machines that place the RSDP in the EBDA, however.
15405
15406
Integrated a fix for a possible fault during evaluation of BufferField
15407
arguments. Obsolete code that was causing the problem was removed.
15408
15409
Found and fixed a problem in the Field Support Code where data could be
15410
corrupted on a bit field read that starts on an aligned boundary but does
15411
not end on an aligned boundary. Merged the read/write "datum length"
15412
calculation code into a common procedure.
15413
15414
Rolled in a couple of changes to the FreeBSD-specific header.
15415
15416
15417
Code and Data Size: Current and previous core subsystem library sizes are
15418
shown below. These are the code and data sizes for the acpica.lib
15419
produced
15420
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15421
any ACPI driver or OSPM code. The debug version of the code includes the
15422
debug output trace mechanism and has a much larger code and data size.
15423
Note
15424
that these values will vary depending on the efficiency of the compiler
15425
and
15426
the compiler options used during generation.
15427
15428
Previous Release:
15429
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
15430
Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
15431
Current Release:
15432
Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
15433
Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
15434
15435
15436
2) iASL Compiler/Disassembler:
15437
15438
Fixed a generation warning produced by some overly-verbose compilers for
15439
a
15440
64-bit constant.
15441
15442
----------------------------------------
15443
14 May 2004. Summary of changes for version 20040514:
15444
15445
1) ACPI CA Core Subsystem:
15446
15447
Fixed a problem where hardware GPE enable bits sometimes not set properly
15448
during and after GPE method execution. Result of 04/27 changes.
15449
15450
Removed extra "clear all GPEs" when sleeping/waking.
15451
15452
Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
15453
AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
15454
to
15455
the new AcpiEv* calls as appropriate.
15456
15457
ACPI_OS_NAME was removed from the OS-specific headers. The default name
15458
is
15459
now "Microsoft Windows NT" for maximum compatibility. However this can
15460
be
15461
changed by modifying the acconfig.h file.
15462
15463
Allow a single invocation of AcpiInstallNotifyHandler for a handler that
15464
traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
15465
15466
Run _INI methods on ThermalZone objects. This is against the ACPI
15467
specification, but there is apparently ASL code in the field that has
15468
these
15469
_INI methods, and apparently "other" AML interpreters execute them.
15470
15471
Performed a full 16/32/64 bit lint that resulted in some small changes.
15472
15473
Added a sleep simulation command to the AML debugger to test sleep code.
15474
15475
Code and Data Size: Current and previous core subsystem library sizes are
15476
shown below. These are the code and data sizes for the acpica.lib
15477
produced
15478
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15479
any ACPI driver or OSPM code. The debug version of the code includes the
15480
debug output trace mechanism and has a much larger code and data size.
15481
Note
15482
that these values will vary depending on the efficiency of the compiler
15483
and
15484
the compiler options used during generation.
15485
15486
Previous Release:
15487
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
15488
Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
15489
Current Release:
15490
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
15491
Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
15492
15493
----------------------------------------
15494
27 April 2004. Summary of changes for version 20040427:
15495
15496
1) ACPI CA Core Subsystem:
15497
15498
Completed a major overhaul of the GPE handling within ACPI CA. There are
15499
now three types of GPEs: wake-only, runtime-only, and combination
15500
wake/run.
15501
The only GPEs allowed to be combination wake/run are for button-style
15502
devices such as a control-method power button, control-method sleep
15503
button,
15504
or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
15505
not
15506
referenced by any _PRW methods are marked for "runtime" and hardware
15507
enabled. Any GPE that is referenced by a _PRW method is marked for
15508
"wake"
15509
(and disabled at runtime). However, at sleep time, only those GPEs that
15510
have been specifically enabled for wake via the AcpiEnableGpe interface
15511
will
15512
actually be hardware enabled.
15513
15514
A new external interface has been added, AcpiSetGpeType(), that is meant
15515
to
15516
be used by device drivers to force a GPE to a particular type. It will
15517
be
15518
especially useful for the drivers for the button devices mentioned above.
15519
15520
Completed restructuring of the ACPI CA initialization sequence so that
15521
default operation region handlers are installed before GPEs are
15522
initialized
15523
and the _PRW methods are executed. This will prevent errors when the
15524
_PRW
15525
methods attempt to access system memory or I/O space.
15526
15527
GPE enable/disable no longer reads the GPE enable register. We now keep
15528
the
15529
enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
15530
thus no longer depend on the hardware to maintain these bits.
15531
15532
Always clear the wake status and fixed/GPE status bits before sleep, even
15533
for state S5.
15534
15535
Improved the AML debugger output for displaying the GPE blocks and their
15536
current status.
15537
15538
Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15539
where
15540
x = 0,1,2,3,4.
15541
15542
Fixed a problem where the physical address was incorrectly calculated
15543
when
15544
the Load() operator was used to directly load from an Operation Region
15545
(vs.
15546
loading from a Field object.) Also added check for minimum table length
15547
for
15548
this case.
15549
15550
Fix for multiple mutex acquisition. Restore original thread SyncLevel on
15551
mutex release.
15552
15553
Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15554
consistency with the other fields returned.
15555
15556
Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
15557
structure for each GPE in the system, so the size of this structure is
15558
important.
15559
15560
CPU stack requirement reduction: Cleaned up the method execution and
15561
object
15562
evaluation paths so that now a parameter structure is passed, instead of
15563
copying the various method parameters over and over again.
15564
15565
In evregion.c: Correctly exit and reenter the interpreter region if and
15566
only if dispatching an operation region request to a user-installed
15567
handler.
15568
Do not exit/reenter when dispatching to a default handler (e.g., default
15569
system memory or I/O handlers)
15570
15571
15572
Notes for updating drivers for the new GPE support. The following
15573
changes
15574
must be made to ACPI-related device drivers that are attached to one or
15575
more
15576
GPEs: (This information will be added to the ACPI CA Programmer
15577
Reference.)
15578
15579
1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15580
must
15581
explicitly call AcpiEnableGpe.
15582
2) There is a new interface called AcpiSetGpeType. This should be called
15583
before enabling the GPE. Also, this interface will automatically disable
15584
the GPE if it is currently enabled.
15585
3) AcpiEnableGpe no longer supports a GPE type flag.
15586
15587
Specific drivers that must be changed:
15588
1) EC driver:
15589
AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15590
AeGpeHandler, NULL);
15591
AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15592
AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15593
15594
2) Button Drivers (Power, Lid, Sleep):
15595
Run _PRW method under parent device
15596
If _PRW exists: /* This is a control-method button */
15597
Extract GPE number and possibly GpeDevice
15598
AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
15599
AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
15600
15601
For all other devices that have _PRWs, we automatically set the GPE type
15602
to
15603
ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15604
This
15605
must be done on a selective basis, usually requiring some kind of user
15606
app
15607
to allow the user to pick the wake devices.
15608
15609
15610
Code and Data Size: Current and previous core subsystem library sizes are
15611
shown below. These are the code and data sizes for the acpica.lib
15612
produced
15613
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15614
any ACPI driver or OSPM code. The debug version of the code includes the
15615
debug output trace mechanism and has a much larger code and data size.
15616
Note
15617
that these values will vary depending on the efficiency of the compiler
15618
and
15619
the compiler options used during generation.
15620
15621
Previous Release:
15622
Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
15623
Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
15624
Current Release:
15625
15626
Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
15627
Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
15628
15629
15630
15631
----------------------------------------
15632
02 April 2004. Summary of changes for version 20040402:
15633
15634
1) ACPI CA Core Subsystem:
15635
15636
Fixed an interpreter problem where an indirect store through an ArgX
15637
parameter was incorrectly applying the "implicit conversion rules" during
15638
the store. From the ACPI specification: "If the target is a method local
15639
or
15640
argument (LocalX or ArgX), no conversion is performed and the result is
15641
stored directly to the target". The new behavior is to disable implicit
15642
conversion during ALL stores to an ArgX.
15643
15644
Changed the behavior of the _PRW method scan to ignore any and all errors
15645
returned by a given _PRW. This prevents the scan from aborting from the
15646
failure of any single _PRW.
15647
15648
Moved the runtime configuration parameters from the global init procedure
15649
to
15650
static variables in acglobal.h. This will allow the host to override the
15651
default values easily.
15652
15653
Code and Data Size: Current and previous core subsystem library sizes are
15654
shown below. These are the code and data sizes for the acpica.lib
15655
produced
15656
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15657
any ACPI driver or OSPM code. The debug version of the code includes the
15658
debug output trace mechanism and has a much larger code and data size.
15659
Note
15660
that these values will vary depending on the efficiency of the compiler
15661
and
15662
the compiler options used during generation.
15663
15664
Previous Release:
15665
Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
15666
Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
15667
Current Release:
15668
Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
15669
Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
15670
15671
15672
2) iASL Compiler/Disassembler:
15673
15674
iASL now fully disassembles SSDTs. However, External() statements are
15675
not
15676
generated automatically for unresolved symbols at this time. This is a
15677
planned feature for future implementation.
15678
15679
Fixed a scoping problem in the disassembler that occurs when the type of
15680
the
15681
target of a Scope() operator is overridden. This problem caused an
15682
incorrectly nested internal namespace to be constructed.
15683
15684
Any warnings or errors that are emitted during disassembly are now
15685
commented
15686
out automatically so that the resulting file can be recompiled without
15687
any
15688
hand editing.
15689
15690
----------------------------------------
15691
26 March 2004. Summary of changes for version 20040326:
15692
15693
1) ACPI CA Core Subsystem:
15694
15695
Implemented support for "wake" GPEs via interaction between GPEs and the
15696
_PRW methods. Every GPE that is pointed to by one or more _PRWs is
15697
identified as a WAKE GPE and by default will no longer be enabled at
15698
runtime. Previously, we were blindly enabling all GPEs with a
15699
corresponding
15700
_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15701
We
15702
believe this has been the cause of thousands of "spurious" GPEs on some
15703
systems.
15704
15705
This new GPE behavior is can be reverted to the original behavior (enable
15706
ALL GPEs at runtime) via a runtime flag.
15707
15708
Fixed a problem where aliased control methods could not access objects
15709
properly. The proper scope within the namespace was not initialized
15710
(transferred to the target of the aliased method) before executing the
15711
target method.
15712
15713
Fixed a potential race condition on internal object deletion on the
15714
return
15715
object in AcpiEvaluateObject.
15716
15717
Integrated a fix for resource descriptors where both _MEM and _MTP were
15718
being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
15719
wide, 0x0F instead of 0x03.)
15720
15721
Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15722
preventing
15723
a
15724
fault in some cases.
15725
15726
Updated Notify() values for debug statements in evmisc.c
15727
15728
Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15729
15730
Code and Data Size: Current and previous core subsystem library sizes are
15731
shown below. These are the code and data sizes for the acpica.lib
15732
produced
15733
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15734
any ACPI driver or OSPM code. The debug version of the code includes the
15735
debug output trace mechanism and has a much larger code and data size.
15736
Note
15737
that these values will vary depending on the efficiency of the compiler
15738
and
15739
the compiler options used during generation.
15740
15741
Previous Release:
15742
15743
Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
15744
Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
15745
Current Release:
15746
Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
15747
Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
15748
15749
----------------------------------------
15750
11 March 2004. Summary of changes for version 20040311:
15751
15752
1) ACPI CA Core Subsystem:
15753
15754
Fixed a problem where errors occurring during the parse phase of control
15755
method execution did not abort cleanly. For example, objects created and
15756
installed in the namespace were not deleted. This caused all subsequent
15757
invocations of the method to return the AE_ALREADY_EXISTS exception.
15758
15759
Implemented a mechanism to force a control method to "Serialized"
15760
execution
15761
if the method attempts to create namespace objects. (The root of the
15762
AE_ALREADY_EXISTS problem.)
15763
15764
Implemented support for the predefined _OSI "internal" control method.
15765
Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15766
and
15767
"Windows 2001.1", and can be easily upgraded for new strings as
15768
necessary.
15769
This feature will allow "other" operating systems to execute the fully
15770
tested, "Windows" code path through the ASL code
15771
15772
Global Lock Support: Now allows multiple acquires and releases with any
15773
internal thread. Removed concept of "owning thread" for this special
15774
mutex.
15775
15776
Fixed two functions that were inappropriately declaring large objects on
15777
the
15778
CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
15779
during
15780
method execution considerably.
15781
15782
Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15783
S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15784
15785
Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15786
defined on the machine.
15787
15788
Implemented two runtime options: One to force all control method
15789
execution
15790
to "Serialized" to mimic Windows behavior, another to disable _OSI
15791
support
15792
if it causes problems on a given machine.
15793
15794
Code and Data Size: Current and previous core subsystem library sizes are
15795
shown below. These are the code and data sizes for the acpica.lib
15796
produced
15797
by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15798
any ACPI driver or OSPM code. The debug version of the code includes the
15799
debug output trace mechanism and has a much larger code and data size.
15800
Note
15801
that these values will vary depending on the efficiency of the compiler
15802
and
15803
the compiler options used during generation.
15804
15805
Previous Release:
15806
Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
15807
Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
15808
Current Release:
15809
Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
15810
Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
15811
15812
2) iASL Compiler/Disassembler:
15813
15814
Fixed an array size problem for FreeBSD that would cause the compiler to
15815
fault.
15816
15817
----------------------------------------
15818
20 February 2004. Summary of changes for version 20040220:
15819
15820
15821
1) ACPI CA Core Subsystem:
15822
15823
Implemented execution of _SxD methods for Device objects in the
15824
GetObjectInfo interface.
15825
15826
Fixed calls to _SST method to pass the correct arguments.
15827
15828
Added a call to _SST on wake to restore to "working" state.
15829
15830
Check for End-Of-Buffer failure case in the WalkResources interface.
15831
15832
Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15833
structures to the beginning of the file.
15834
15835
After wake, clear GPE status register(s) before enabling GPEs.
15836
15837
After wake, clear/enable power button. (Perhaps we should clear/enable
15838
all
15839
fixed events upon wake.)
15840
15841
Fixed a couple of possible memory leaks in the Namespace manager.
15842
15843
Integrated latest acnetbsd.h file.
15844
15845
----------------------------------------
15846
11 February 2004. Summary of changes for version 20040211:
15847
15848
15849
1) ACPI CA Core Subsystem:
15850
15851
Completed investigation and implementation of the call-by-reference
15852
mechanism for control method arguments.
15853
15854
Fixed a problem where a store of an object into an indexed package could
15855
fail if the store occurs within a different method than the method that
15856
created the package.
15857
15858
Fixed a problem where the ToDecimal operator could return incorrect
15859
results.
15860
15861
Fixed a problem where the CopyObject operator could fail on some of the
15862
more
15863
obscure objects (e.g., Reference objects.)
15864
15865
Improved the output of the Debug object to display buffer, package, and
15866
index objects.
15867
15868
Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15869
return
15870
the expected result.
15871
15872
Added permanent ACPI_REPORT_ERROR macros for all instances of the
15873
ACPI_AML_INTERNAL exception.
15874
15875
Integrated latest version of acfreebsd.h
15876
15877
----------------------------------------
15878
16 January 2004. Summary of changes for version 20040116:
15879
15880
The purpose of this release is primarily to update the copyright years in
15881
each module, thus causing a huge number of diffs. There are a few small
15882
functional changes, however.
15883
15884
1) ACPI CA Core Subsystem:
15885
15886
Improved error messages when there is a problem finding one or more of
15887
the
15888
required base ACPI tables
15889
15890
Reintroduced the definition of APIC_HEADER in actbl.h
15891
15892
Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15893
15894
Removed extraneous reference to NewObj in dsmthdat.c
15895
15896
2) iASL compiler
15897
15898
Fixed a problem introduced in December that disabled the correct
15899
disassembly
15900
of Resource Templates
15901
15902
15903
----------------------------------------
15904
03 December 2003. Summary of changes for version 20031203:
15905
15906
1) ACPI CA Core Subsystem:
15907
15908
Changed the initialization of Operation Regions during subsystem
15909
init to perform two entire walks of the ACPI namespace; The first
15910
to initialize the regions themselves, the second to execute the
15911
_REG methods. This fixed some interdependencies across _REG
15912
methods found on some machines.
15913
15914
Fixed a problem where a Store(Local0, Local1) could simply update
15915
the object reference count, and not create a new copy of the
15916
object if the Local1 is uninitialized.
15917
15918
Implemented support for the _SST reserved method during sleep
15919
transitions.
15920
15921
Implemented support to clear the SLP_TYP and SLP_EN bits when
15922
waking up, this is apparently required by some machines.
15923
15924
When sleeping, clear the wake status only if SleepState is not S5.
15925
15926
Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15927
pointer arithmetic advanced a string pointer too far.
15928
15929
Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15930
could be returned if the requested table has not been loaded.
15931
15932
Within the support for IRQ resources, restructured the handling of
15933
the active and edge/level bits.
15934
15935
Fixed a few problems in AcpiPsxExecute() where memory could be
15936
leaked under certain error conditions.
15937
15938
Improved error messages for the cases where the ACPI mode could
15939
not be entered.
15940
15941
Code and Data Size: Current and previous core subsystem library
15942
sizes are shown below. These are the code and data sizes for the
15943
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15944
these values do not include any ACPI driver or OSPM code. The
15945
debug version of the code includes the debug output trace
15946
mechanism and has a much larger code and data size. Note that
15947
these values will vary depending on the efficiency of the compiler
15948
and the compiler options used during generation.
15949
15950
Previous Release (20031029):
15951
Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
15952
Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
15953
Current Release:
15954
Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
15955
Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
15956
15957
2) iASL Compiler/Disassembler:
15958
15959
Implemented a fix for the iASL disassembler where a bad index was
15960
generated. This was most noticeable on 64-bit platforms
15961
15962
15963
----------------------------------------
15964
29 October 2003. Summary of changes for version 20031029:
15965
15966
1) ACPI CA Core Subsystem:
15967
15968
15969
Fixed a problem where a level-triggered GPE with an associated
15970
_Lxx control method was incorrectly cleared twice.
15971
15972
Fixed a problem with the Field support code where an access can
15973
occur beyond the end-of-region if the field is non-aligned but
15974
extends to the very end of the parent region (resulted in an
15975
AE_AML_REGION_LIMIT exception.)
15976
15977
Fixed a problem with ACPI Fixed Events where an RT Clock handler
15978
would not get invoked on an RTC event. The RTC event bitmasks for
15979
the PM1 registers were not being initialized properly.
15980
15981
Implemented support for executing _STA and _INI methods for
15982
Processor objects. Although this is currently not part of the
15983
ACPI specification, there is existing ASL code that depends on the
15984
init-time execution of these methods.
15985
15986
Implemented and deployed a GetDescriptorName function to decode
15987
the various types of internal descriptors. Guards against null
15988
descriptors during debug output also.
15989
15990
Implemented and deployed a GetNodeName function to extract the 4-
15991
character namespace node name. This function simplifies the debug
15992
and error output, as well as guarding against null pointers during
15993
output.
15994
15995
Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15996
simplify the debug and error output of 64-bit integers. This
15997
macro replaces the HIDWORD and LODWORD macros for dumping these
15998
integers.
15999
16000
Updated the implementation of the Stall() operator to only call
16001
AcpiOsStall(), and also return an error if the operand is larger
16002
than 255. This preserves the required behavior of not
16003
relinquishing the processor, as would happen if AcpiOsSleep() was
16004
called for "long stalls".
16005
16006
Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
16007
initialized are now treated as NOOPs.
16008
16009
Cleaned up a handful of warnings during 64-bit generation.
16010
16011
Fixed a reported error where and incorrect GPE number was passed
16012
to the GPE dispatch handler. This value is only used for error
16013
output, however. Used this opportunity to clean up and streamline
16014
the GPE dispatch code.
16015
16016
Code and Data Size: Current and previous core subsystem library
16017
sizes are shown below. These are the code and data sizes for the
16018
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16019
these values do not include any ACPI driver or OSPM code. The
16020
16021
debug version of the code includes the debug output trace
16022
mechanism and has a much larger code and data size. Note that
16023
these values will vary depending on the efficiency of the compiler
16024
and the compiler options used during generation.
16025
16026
Previous Release (20031002):
16027
Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
16028
Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
16029
Current Release:
16030
Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
16031
Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
16032
16033
16034
2) iASL Compiler/Disassembler:
16035
16036
Updated the iASL compiler to return an error if the operand to the
16037
Stall() operator is larger than 255.
16038
16039
16040
----------------------------------------
16041
02 October 2003. Summary of changes for version 20031002:
16042
16043
16044
1) ACPI CA Core Subsystem:
16045
16046
Fixed a problem with Index Fields where the index was not
16047
incremented for fields that require multiple writes to the
16048
index/data registers (Fields that are wider than the data
16049
register.)
16050
16051
Fixed a problem with all Field objects where a write could go
16052
beyond the end-of-field if the field was larger than the access
16053
granularity and therefore required multiple writes to complete the
16054
request. An extra write beyond the end of the field could happen
16055
inadvertently.
16056
16057
Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
16058
would incorrectly be returned if the width of the Data Register
16059
was larger than the specified field access width.
16060
16061
Completed fixes for LoadTable() and Unload() and verified their
16062
operation. Implemented full support for the "DdbHandle" object
16063
throughout the ACPI CA subsystem.
16064
16065
Implemented full support for the MADT and ECDT tables in the ACPI
16066
CA header files. Even though these tables are not directly
16067
consumed by ACPI CA, the header definitions are useful for ACPI
16068
device drivers.
16069
16070
Integrated resource descriptor fixes posted to the Linux ACPI
16071
list. This included checks for minimum descriptor length, and
16072
support for trailing NULL strings within descriptors that have
16073
optional string elements.
16074
16075
Code and Data Size: Current and previous core subsystem library
16076
sizes are shown below. These are the code and data sizes for the
16077
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16078
these values do not include any ACPI driver or OSPM code. The
16079
debug version of the code includes the debug output trace
16080
mechanism and has a much larger code and data size. Note that
16081
these values will vary depending on the efficiency of the compiler
16082
and the compiler options used during generation.
16083
16084
Previous Release (20030918):
16085
Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
16086
Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
16087
Current Release:
16088
Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
16089
Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
16090
16091
16092
2) iASL Compiler:
16093
16094
Implemented detection of non-ASCII characters within the input
16095
source ASL file. This catches attempts to compile binary (AML)
16096
files early in the compile, with an informative error message.
16097
16098
Fixed a problem where the disassembler would fault if the output
16099
filename could not be generated or if the output file could not be
16100
opened.
16101
16102
----------------------------------------
16103
18 September 2003. Summary of changes for version 20030918:
16104
16105
16106
1) ACPI CA Core Subsystem:
16107
16108
Found and fixed a longstanding problem with the late execution of
16109
the various deferred AML opcodes (such as Operation Regions,
16110
Buffer Fields, Buffers, and Packages). If the name string
16111
specified for the name of the new object placed the object in a
16112
scope other than the current scope, the initialization/execution
16113
of the opcode failed. The solution to this problem was to
16114
implement a mechanism where the late execution of such opcodes
16115
does not attempt to lookup/create the name a second time in an
16116
incorrect scope. This fixes the "region size computed
16117
incorrectly" problem.
16118
16119
Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
16120
Global Lock AE_BAD_PARAMETER error.
16121
16122
Fixed several 64-bit issues with prototypes, casting and data
16123
types.
16124
16125
Removed duplicate prototype from acdisasm.h
16126
16127
Fixed an issue involving EC Operation Region Detach (Shaohua Li)
16128
16129
Code and Data Size: Current and previous core subsystem library
16130
sizes are shown below. These are the code and data sizes for the
16131
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16132
these values do not include any ACPI driver or OSPM code. The
16133
debug version of the code includes the debug output trace
16134
mechanism and has a much larger code and data size. Note that
16135
these values will vary depending on the efficiency of the compiler
16136
and the compiler options used during generation.
16137
16138
Previous Release:
16139
16140
Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
16141
Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
16142
Current Release:
16143
Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
16144
Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
16145
16146
16147
2) Linux:
16148
16149
Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
16150
correct sleep time in seconds.
16151
16152
----------------------------------------
16153
14 July 2003. Summary of changes for version 20030619:
16154
16155
1) ACPI CA Core Subsystem:
16156
16157
Parse SSDTs in order discovered, as opposed to reverse order
16158
(Hrvoje Habjanic)
16159
16160
Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
16161
Klausner,
16162
Nate Lawson)
16163
16164
16165
2) Linux:
16166
16167
Dynamically allocate SDT list (suggested by Andi Kleen)
16168
16169
proc function return value cleanups (Andi Kleen)
16170
16171
Correctly handle NMI watchdog during long stalls (Andrew Morton)
16172
16173
Make it so acpismp=force works (reported by Andrew Morton)
16174
16175
16176
----------------------------------------
16177
19 June 2003. Summary of changes for version 20030619:
16178
16179
1) ACPI CA Core Subsystem:
16180
16181
Fix To/FromBCD, eliminating the need for an arch-specific #define.
16182
16183
Do not acquire a semaphore in the S5 shutdown path.
16184
16185
Fix ex_digits_needed for 0. (Takayoshi Kochi)
16186
16187
Fix sleep/stall code reversal. (Andi Kleen)
16188
16189
Revert a change having to do with control method calling
16190
semantics.
16191
16192
2) Linux:
16193
16194
acpiphp update (Takayoshi Kochi)
16195
16196
Export acpi_disabled for sonypi (Stelian Pop)
16197
16198
Mention acpismp=force in config help
16199
16200
Re-add acpitable.c and acpismp=force. This improves backwards
16201
16202
compatibility and also cleans up the code to a significant degree.
16203
16204
Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
16205
16206
----------------------------------------
16207
22 May 2003. Summary of changes for version 20030522:
16208
16209
1) ACPI CA Core Subsystem:
16210
16211
Found and fixed a reported problem where an AE_NOT_FOUND error
16212
occurred occasionally during _BST evaluation. This turned out to
16213
be an Owner ID allocation issue where a called method did not get
16214
a new ID assigned to it. Eventually, (after 64k calls), the Owner
16215
ID UINT16 would wraparound so that the ID would be the same as the
16216
caller's and the called method would delete the caller's
16217
namespace.
16218
16219
Implemented extended error reporting for control methods that are
16220
aborted due to a run-time exception. Output includes the exact
16221
AML instruction that caused the method abort, a dump of the method
16222
locals and arguments at the time of the abort, and a trace of all
16223
nested control method calls.
16224
16225
Modified the interpreter to allow the creation of buffers of zero
16226
length from the AML code. Implemented new code to ensure that no
16227
attempt is made to actually allocate a memory buffer (of length
16228
zero) - instead, a simple buffer object with a NULL buffer pointer
16229
and length zero is created. A warning is no longer issued when
16230
the AML attempts to create a zero-length buffer.
16231
16232
Implemented a workaround for the "leading asterisk issue" in
16233
_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
16234
asterisk is automatically removed if present in any HID, UID, or
16235
CID strings. The iASL compiler will still flag this asterisk as
16236
an error, however.
16237
16238
Implemented full support for _CID methods that return a package of
16239
multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
16240
now additionally returns a device _CID list if present. This
16241
required a change to the external interface in order to pass an
16242
ACPI_BUFFER object as a parameter since the _CID list is of
16243
variable length.
16244
16245
Fixed a problem with the new AE_SAME_HANDLER exception where
16246
handler initialization code did not know about this exception.
16247
16248
Code and Data Size: Current and previous core subsystem library
16249
sizes are shown below. These are the code and data sizes for the
16250
acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16251
these values do not include any ACPI driver or OSPM code. The
16252
debug version of the code includes the debug output trace
16253
mechanism and has a much larger code and data size. Note that
16254
these values will vary depending on the efficiency of the compiler
16255
and the compiler options used during generation.
16256
16257
Previous Release (20030509):
16258
Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
16259
Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
16260
Current Release:
16261
Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
16262
Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
16263
16264
16265
2) Linux:
16266
16267
Fixed a bug in which we would reinitialize the ACPI interrupt
16268
after it was already working, thus disabling all ACPI and the IRQs
16269
for any other device sharing the interrupt. (Thanks to Stian
16270
Jordet)
16271
16272
Toshiba driver update (John Belmonte)
16273
16274
Return only 0 or 1 for our interrupt handler status (Andrew
16275
Morton)
16276
16277
16278
3) iASL Compiler:
16279
16280
Fixed a reported problem where multiple (nested) ElseIf()
16281
statements were not handled correctly by the compiler, resulting
16282
in incorrect warnings and incorrect AML code. This was a problem
16283
in both the ASL parser and the code generator.
16284
16285
16286
4) Documentation:
16287
16288
Added changes to existing interfaces, new exception codes, and new
16289
text concerning reference count object management versus garbage
16290
collection.
16291
16292
----------------------------------------
16293
09 May 2003. Summary of changes for version 20030509.
16294
16295
16296
1) ACPI CA Core Subsystem:
16297
16298
Changed the subsystem initialization sequence to hold off
16299
installation of address space handlers until the hardware has been
16300
initialized and the system has entered ACPI mode. This is because
16301
the installation of space handlers can cause _REG methods to be
16302
run. Previously, the _REG methods could potentially be run before
16303
ACPI mode was enabled.
16304
16305
Fixed some memory leak issues related to address space handler and
16306
notify handler installation. There were some problems with the
16307
reference count mechanism caused by the fact that the handler
16308
objects are shared across several namespace objects.
16309
16310
Fixed a reported problem where reference counts within the
16311
namespace were not properly updated when named objects created by
16312
method execution were deleted.
16313
16314
Fixed a reported problem where multiple SSDTs caused a deletion
16315
issue during subsystem termination. Restructured the table data
16316
structures to simplify the linked lists and the related code.
16317
16318
Fixed a problem where the table ID associated with secondary
16319
tables (SSDTs) was not being propagated into the namespace objects
16320
created by those tables. This would only present a problem for
16321
tables that are unloaded at run-time, however.
16322
16323
Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
16324
type as the length parameter (instead of UINT32).
16325
16326
Solved a long-standing problem where an ALREADY_EXISTS error
16327
appears on various systems. This problem could happen when there
16328
are multiple PCI_Config operation regions under a single PCI root
16329
bus. This doesn't happen very frequently, but there are some
16330
systems that do this in the ASL.
16331
16332
Fixed a reported problem where the internal DeleteNode function
16333
was incorrectly handling the case where a namespace node was the
16334
first in the parent's child list, and had additional peers (not
16335
the only child, but first in the list of children.)
16336
16337
Code and Data Size: Current core subsystem library sizes are shown
16338
below. These are the code and data sizes for the acpica.lib
16339
produced by the Microsoft Visual C++ 6.0 compiler, and these
16340
values do not include any ACPI driver or OSPM code. The debug
16341
version of the code includes the debug output trace mechanism and
16342
has a much larger code and data size. Note that these values will
16343
vary depending on the efficiency of the compiler and the compiler
16344
options used during generation.
16345
16346
Previous Release
16347
Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
16348
Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
16349
Current Release:
16350
Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
16351
Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
16352
16353
16354
2) Linux:
16355
16356
Allow ":" in OS override string (Ducrot Bruno)
16357
16358
Kobject fix (Greg KH)
16359
16360
16361
3 iASL Compiler/Disassembler:
16362
16363
Fixed a problem in the generation of the C source code files (AML
16364
is emitted in C source statements for BIOS inclusion) where the
16365
Ascii dump that appears within a C comment at the end of each line
16366
could cause a compile time error if the AML sequence happens to
16367
have an open comment or close comment sequence embedded.
16368
16369
16370
----------------------------------------
16371
24 April 2003. Summary of changes for version 20030424.
16372
16373
16374
1) ACPI CA Core Subsystem:
16375
16376
Support for big-endian systems has been implemented. Most of the
16377
support has been invisibly added behind big-endian versions of the
16378
ACPI_MOVE_* macros.
16379
16380
Fixed a problem in AcpiHwDisableGpeBlock() and
16381
AcpiHwClearGpeBlock() where an incorrect offset was passed to the
16382
low level hardware write routine. The offset parameter was
16383
actually eliminated from the low level read/write routines because
16384
they had become obsolete.
16385
16386
Fixed a problem where a handler object was deleted twice during
16387
the removal of a fixed event handler.
16388
16389
16390
2) Linux:
16391
16392
A fix for SMP systems with link devices was contributed by
16393
16394
Compaq's Dan Zink.
16395
16396
(2.5) Return whether we handled the interrupt in our IRQ handler.
16397
(Linux ISRs no longer return void, so we can propagate the handler
16398
return value from the ACPI CA core back to the OS.)
16399
16400
16401
16402
3) Documentation:
16403
16404
The ACPI CA Programmer Reference has been updated to reflect new
16405
interfaces and changes to existing interfaces.
16406
16407
----------------------------------------
16408
28 March 2003. Summary of changes for version 20030328.
16409
16410
1) ACPI CA Core Subsystem:
16411
16412
The GPE Block Device support has been completed. New interfaces
16413
are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
16414
interfaces (enable, disable, clear, getstatus) have been split
16415
into separate interfaces for Fixed Events and General Purpose
16416
Events (GPEs) in order to support GPE Block Devices properly.
16417
16418
Fixed a problem where the error message "Failed to acquire
16419
semaphore" would appear during operations on the embedded
16420
controller (EC).
16421
16422
Code and Data Size: Current core subsystem library sizes are shown
16423
below. These are the code and data sizes for the acpica.lib
16424
produced by the Microsoft Visual C++ 6.0 compiler, and these
16425
values do not include any ACPI driver or OSPM code. The debug
16426
version of the code includes the debug output trace mechanism and
16427
has a much larger code and data size. Note that these values will
16428
vary depending on the efficiency of the compiler and the compiler
16429
options used during generation.
16430
16431
Previous Release
16432
Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
16433
Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
16434
Current Release:
16435
Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
16436
Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
16437
16438
16439
----------------------------------------
16440
28 February 2003. Summary of changes for version 20030228.
16441
16442
16443
1) ACPI CA Core Subsystem:
16444
16445
The GPE handling and dispatch code has been completely overhauled
16446
in preparation for support of GPE Block Devices (ID ACPI0006).
16447
This affects internal data structures and code only; there should
16448
be no differences visible externally. One new file has been
16449
added, evgpeblk.c
16450
16451
The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
16452
fields that are used to determine the GPE block lengths. The
16453
REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
16454
structures are ignored. This is per the ACPI specification but it
16455
isn't very clear. The full 256 Block 0/1 GPEs are now supported
16456
(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
16457
16458
In the SCI interrupt handler, removed the read of the PM1_CONTROL
16459
register to look at the SCI_EN bit. On some machines, this read
16460
causes an SMI event and greatly slows down SCI events. (This may
16461
in fact be the cause of slow battery status response on some
16462
systems.)
16463
16464
Fixed a problem where a store of a NULL string to a package object
16465
could cause the premature deletion of the object. This was seen
16466
during execution of the battery _BIF method on some systems,
16467
resulting in no battery data being returned.
16468
16469
Added AcpiWalkResources interface to simplify parsing of resource
16470
lists.
16471
16472
Code and Data Size: Current core subsystem library sizes are shown
16473
below. These are the code and data sizes for the acpica.lib
16474
produced by the Microsoft Visual C++ 6.0 compiler, and these
16475
values do not include any ACPI driver or OSPM code. The debug
16476
version of the code includes the debug output trace mechanism and
16477
has a much larger code and data size. Note that these values will
16478
vary depending on the efficiency of the compiler and the compiler
16479
options used during generation.
16480
16481
Previous Release
16482
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
16483
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
16484
Current Release:
16485
Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
16486
Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
16487
16488
16489
2) Linux
16490
16491
S3 fixes (Ole Rohne)
16492
16493
Update ACPI PHP driver with to use new acpi_walk_resource API
16494
(Bjorn Helgaas)
16495
16496
Add S4BIOS support (Pavel Machek)
16497
16498
Map in entire table before performing checksum (John Stultz)
16499
16500
Expand the mem= cmdline to allow the specification of reserved and
16501
ACPI DATA blocks (Pavel Machek)
16502
16503
Never use ACPI on VISWS
16504
16505
Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16506
16507
Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16508
causing us to think that some systems support C2 when they really
16509
don't.
16510
16511
Do not count processor objects for non-present CPUs (Thanks to
16512
Dominik Brodowski)
16513
16514
16515
3) iASL Compiler:
16516
16517
Fixed a problem where ASL include files could not be found and
16518
opened.
16519
16520
Added support for the _PDC reserved name.
16521
16522
16523
----------------------------------------
16524
22 January 2003. Summary of changes for version 20030122.
16525
16526
16527
1) ACPI CA Core Subsystem:
16528
16529
Added a check for constructs of the form: Store (Local0, Local0)
16530
where Local0 is not initialized. Apparently, some BIOS
16531
programmers believe that this is a NOOP. Since this store doesn't
16532
do anything anyway, the new prototype behavior will ignore this
16533
error. This is a case where we can relax the strict checking in
16534
the interpreter in the name of compatibility.
16535
16536
16537
2) Linux
16538
16539
The AcpiSrc Source Conversion Utility has been released with the
16540
Linux package for the first time. This is the utility that is
16541
used to convert the ACPI CA base source code to the Linux version.
16542
16543
(Both) Handle P_BLK lengths shorter than 6 more gracefully
16544
16545
(Both) Move more headers to include/acpi, and delete an unused
16546
header.
16547
16548
(Both) Move drivers/acpi/include directory to include/acpi
16549
16550
(Both) Boot functions don't use cmdline, so don't pass it around
16551
16552
(Both) Remove include of unused header (Adrian Bunk)
16553
16554
(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
16555
the
16556
former now also includes the latter, acpiphp.h only needs the one,
16557
now.
16558
16559
(2.5) Make it possible to select method of bios restoring after S3
16560
resume. [=> no more ugly ifdefs] (Pavel Machek)
16561
16562
(2.5) Make proc write interfaces work (Pavel Machek)
16563
16564
(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
16565
16566
(2.5) Break out ACPI Perf code into its own module, under cpufreq
16567
(Dominik Brodowski)
16568
16569
(2.4) S4BIOS support (Ducrot Bruno)
16570
16571
(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
16572
Visinoni)
16573
16574
16575
3) iASL Compiler:
16576
16577
Added support to disassemble SSDT and PSDTs.
16578
16579
Implemented support to obtain SSDTs from the Windows registry if
16580
available.
16581
16582
16583
----------------------------------------
16584
09 January 2003. Summary of changes for version 20030109.
16585
16586
1) ACPI CA Core Subsystem:
16587
16588
Changed the behavior of the internal Buffer-to-String conversion
16589
function. The current ACPI specification states that the contents
16590
of the buffer are "converted to a string of two-character
16591
hexadecimal numbers, each separated by a space". Unfortunately,
16592
this definition is not backwards compatible with existing ACPI 1.0
16593
implementations (although the behavior was not defined in the ACPI
16594
1.0 specification). The new behavior simply copies data from the
16595
buffer to the string until a null character is found or the end of
16596
the buffer is reached. The new String object is always null
16597
terminated. This problem was seen during the generation of _BIF
16598
battery data where incorrect strings were returned for battery
16599
type, etc. This will also require an errata to the ACPI
16600
specification.
16601
16602
Renamed all instances of NATIVE_UINT and NATIVE_INT to
16603
ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16604
16605
Copyright in all module headers (both Linux and non-Linux) has be
16606
updated to 2003.
16607
16608
Code and Data Size: Current core subsystem library sizes are shown
16609
below. These are the code and data sizes for the acpica.lib
16610
produced by the Microsoft Visual C++ 6.0 compiler, and these
16611
values do not include any ACPI driver or OSPM code. The debug
16612
version of the code includes the debug output trace mechanism and
16613
has a much larger code and data size. Note that these values will
16614
vary depending on the efficiency of the compiler and the compiler
16615
options used during generation.
16616
16617
Previous Release
16618
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
16619
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
16620
Current Release:
16621
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
16622
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
16623
16624
16625
2) Linux
16626
16627
Fixed an oops on module insertion/removal (Matthew Tippett)
16628
16629
(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16630
16631
(2.5) Replace pr_debug (Randy Dunlap)
16632
16633
(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16634
16635
(Both) Eliminate spawning of thread from timer callback, in favor
16636
of schedule_work()
16637
16638
(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16639
16640
(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16641
16642
(Both) Add missing statics to button.c (Pavel Machek)
16643
16644
Several changes have been made to the source code translation
16645
utility that generates the Linux Code in order to make the code
16646
more "Linux-like":
16647
16648
All typedefs on structs and unions have been removed in keeping
16649
with the Linux coding style.
16650
16651
Removed the non-Linux SourceSafe module revision number from each
16652
module header.
16653
16654
Completed major overhaul of symbols to be lowercase for linux.
16655
Doubled the number of symbols that are lowercase.
16656
16657
Fixed a problem where identifiers within procedure headers and
16658
within quotes were not fully lower cased (they were left with a
16659
starting capital.)
16660
16661
Some C macros whose only purpose is to allow the generation of 16-
16662
bit code are now completely removed in the Linux code, increasing
16663
readability and maintainability.
16664
16665
----------------------------------------
16666
16667
12 December 2002. Summary of changes for version 20021212.
16668
16669
16670
1) ACPI CA Core Subsystem:
16671
16672
Fixed a problem where the creation of a zero-length AML Buffer
16673
would cause a fault.
16674
16675
Fixed a problem where a Buffer object that pointed to a static AML
16676
buffer (in an ACPI table) could inadvertently be deleted, causing
16677
memory corruption.
16678
16679
Fixed a problem where a user buffer (passed in to the external
16680
ACPI CA interfaces) could be overwritten if the buffer was too
16681
small to complete the operation, causing memory corruption.
16682
16683
Fixed a problem in the Buffer-to-String conversion code where a
16684
string of length one was always returned, regardless of the size
16685
of the input Buffer object.
16686
16687
Removed the NATIVE_CHAR data type across the entire source due to
16688
lack of need and lack of consistent use.
16689
16690
Code and Data Size: Current core subsystem library sizes are shown
16691
below. These are the code and data sizes for the acpica.lib
16692
produced by the Microsoft Visual C++ 6.0 compiler, and these
16693
values do not include any ACPI driver or OSPM code. The debug
16694
version of the code includes the debug output trace mechanism and
16695
has a much larger code and data size. Note that these values will
16696
vary depending on the efficiency of the compiler and the compiler
16697
options used during generation.
16698
16699
Previous Release
16700
Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
16701
Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
16702
Current Release:
16703
Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
16704
Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
16705
16706
16707
----------------------------------------
16708
05 December 2002. Summary of changes for version 20021205.
16709
16710
1) ACPI CA Core Subsystem:
16711
16712
Fixed a problem where a store to a String or Buffer object could
16713
cause corruption of the DSDT if the object type being stored was
16714
the same as the target object type and the length of the object
16715
being stored was equal to or smaller than the original (existing)
16716
target object. This was seen to cause corruption of battery _BIF
16717
buffers if the _BIF method modified the buffer on the fly.
16718
16719
Fixed a problem where an internal error was generated if a control
16720
method invocation was used in an OperationRegion, Buffer, or
16721
Package declaration. This was caused by the deferred parsing of
16722
the control method and thus the deferred creation of the internal
16723
method object. The solution to this problem was to create the
16724
internal method object at the moment the method is encountered in
16725
the first pass - so that subsequent references to the method will
16726
able to obtain the required parameter count and thus properly
16727
parse the method invocation. This problem presented itself as an
16728
AE_AML_INTERNAL during the pass 1 parse phase during table load.
16729
16730
Fixed a problem where the internal String object copy routine did
16731
not always allocate sufficient memory for the target String object
16732
and caused memory corruption. This problem was seen to cause
16733
"Allocation already present in list!" errors as memory allocation
16734
became corrupted.
16735
16736
Implemented a new function for the evaluation of namespace objects
16737
that allows the specification of the allowable return object
16738
types. This simplifies a lot of code that checks for a return
16739
object of one or more specific objects returned from the
16740
evaluation (such as _STA, etc.) This may become and external
16741
function if it would be useful to ACPI-related drivers.
16742
16743
Completed another round of prefixing #defines with "ACPI_" for
16744
clarity.
16745
16746
Completed additional code restructuring to allow more modular
16747
linking for iASL compiler and AcpiExec. Several files were split
16748
creating new files. New files: nsparse.c dsinit.c evgpe.c
16749
16750
Implemented an abort mechanism to terminate an executing control
16751
method via the AML debugger. This feature is useful for debugging
16752
control methods that depend (wait) for specific hardware
16753
responses.
16754
16755
Code and Data Size: Current core subsystem library sizes are shown
16756
below. These are the code and data sizes for the acpica.lib
16757
produced by the Microsoft Visual C++ 6.0 compiler, and these
16758
values do not include any ACPI driver or OSPM code. The debug
16759
version of the code includes the debug output trace mechanism and
16760
has a much larger code and data size. Note that these values will
16761
vary depending on the efficiency of the compiler and the compiler
16762
options used during generation.
16763
16764
Previous Release
16765
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
16766
Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
16767
Current Release:
16768
Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
16769
Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
16770
16771
16772
2) iASL Compiler/Disassembler
16773
16774
Fixed a compiler code generation problem for "Interrupt" Resource
16775
Descriptors. If specified in the ASL, the optional "Resource
16776
Source Index" and "Resource Source" fields were not inserted into
16777
the correct location within the AML resource descriptor, creating
16778
an invalid descriptor.
16779
16780
Fixed a disassembler problem for "Interrupt" resource descriptors.
16781
The optional "Resource Source Index" and "Resource Source" fields
16782
were ignored.
16783
16784
16785
----------------------------------------
16786
22 November 2002. Summary of changes for version 20021122.
16787
16788
16789
1) ACPI CA Core Subsystem:
16790
16791
Fixed a reported problem where an object stored to a Method Local
16792
or Arg was not copied to a new object during the store - the
16793
object pointer was simply copied to the Local/Arg. This caused
16794
all subsequent operations on the Local/Arg to also affect the
16795
original source of the store operation.
16796
16797
Fixed a problem where a store operation to a Method Local or Arg
16798
was not completed properly if the Local/Arg contained a reference
16799
(from RefOf) to a named field. The general-purpose store-to-
16800
namespace-node code is now used so that this case is handled
16801
automatically.
16802
16803
Fixed a problem where the internal object copy routine would cause
16804
a protection fault if the object being copied was a Package and
16805
contained either 1) a NULL package element or 2) a nested sub-
16806
package.
16807
16808
Fixed a problem with the GPE initialization that resulted from an
16809
ambiguity in the ACPI specification. One section of the
16810
specification states that both the address and length of the GPE
16811
block must be zero if the block is not supported. Another section
16812
implies that only the address need be zero if the block is not
16813
supported. The code has been changed so that both the address and
16814
the length must be non-zero to indicate a valid GPE block (i.e.,
16815
if either the address or the length is zero, the GPE block is
16816
invalid.)
16817
16818
Code and Data Size: Current core subsystem library sizes are shown
16819
below. These are the code and data sizes for the acpica.lib
16820
produced by the Microsoft Visual C++ 6.0 compiler, and these
16821
values do not include any ACPI driver or OSPM code. The debug
16822
version of the code includes the debug output trace mechanism and
16823
has a much larger code and data size. Note that these values will
16824
vary depending on the efficiency of the compiler and the compiler
16825
options used during generation.
16826
16827
Previous Release
16828
Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
16829
Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
16830
Current Release:
16831
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
16832
Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
16833
16834
16835
2) Linux
16836
16837
Cleaned up EC driver. Exported an external EC read/write
16838
interface. By going through this, other drivers (most notably
16839
sonypi) will be able to serialize access to the EC.
16840
16841
16842
3) iASL Compiler/Disassembler
16843
16844
Implemented support to optionally generate include files for both
16845
ASM and C (the -i switch). This simplifies BIOS development by
16846
automatically creating include files that contain external
16847
declarations for the symbols that are created within the
16848
16849
(optionally generated) ASM and C AML source files.
16850
16851
16852
----------------------------------------
16853
15 November 2002. Summary of changes for version 20021115.
16854
16855
1) ACPI CA Core Subsystem:
16856
16857
Fixed a memory leak problem where an error during resolution of
16858
16859
method arguments during a method invocation from another method
16860
failed to cleanup properly by deleting all successfully resolved
16861
argument objects.
16862
16863
Fixed a problem where the target of the Index() operator was not
16864
correctly constructed if the source object was a package. This
16865
problem has not been detected because the use of a target operand
16866
with Index() is very rare.
16867
16868
Fixed a problem with the Index() operator where an attempt was
16869
made to delete the operand objects twice.
16870
16871
Fixed a problem where an attempt was made to delete an operand
16872
twice during execution of the CondRefOf() operator if the target
16873
did not exist.
16874
16875
Implemented the first of perhaps several internal create object
16876
functions that create and initialize a specific object type. This
16877
consolidates duplicated code wherever the object is created, thus
16878
shrinking the size of the subsystem.
16879
16880
Implemented improved debug/error messages for errors that occur
16881
during nested method invocations. All executing method pathnames
16882
are displayed (with the error) as the call stack is unwound - thus
16883
simplifying debug.
16884
16885
Fixed a problem introduced in the 10/02 release that caused
16886
premature deletion of a buffer object if a buffer was used as an
16887
ASL operand where an integer operand is required (Thus causing an
16888
implicit object conversion from Buffer to Integer.) The change in
16889
the 10/02 release was attempting to fix a memory leak (albeit
16890
incorrectly.)
16891
16892
Code and Data Size: Current core subsystem library sizes are shown
16893
below. These are the code and data sizes for the acpica.lib
16894
produced by the Microsoft Visual C++ 6.0 compiler, and these
16895
values do not include any ACPI driver or OSPM code. The debug
16896
version of the code includes the debug output trace mechanism and
16897
has a much larger code and data size. Note that these values will
16898
vary depending on the efficiency of the compiler and the compiler
16899
options used during generation.
16900
16901
Previous Release
16902
Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
16903
Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
16904
Current Release:
16905
Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
16906
Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
16907
16908
16909
2) Linux
16910
16911
Changed the implementation of the ACPI semaphores to use down()
16912
instead of down_interruptable(). It is important that the
16913
execution of ACPI control methods not be interrupted by signals.
16914
Methods must run to completion, or the system may be left in an
16915
unknown/unstable state.
16916
16917
Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16918
(Shawn Starr)
16919
16920
16921
3) iASL Compiler/Disassembler
16922
16923
16924
Changed the default location of output files. All output files
16925
are now placed in the current directory by default instead of in
16926
the directory of the source file. This change may affect some
16927
existing makefiles, but it brings the behavior of the compiler in
16928
line with other similar tools. The location of the output files
16929
can be overridden with the -p command line switch.
16930
16931
16932
----------------------------------------
16933
11 November 2002. Summary of changes for version 20021111.
16934
16935
16936
0) ACPI Specification 2.0B is released and is now available at:
16937
http://www.acpi.info/index.html
16938
16939
16940
1) ACPI CA Core Subsystem:
16941
16942
Implemented support for the ACPI 2.0 SMBus Operation Regions.
16943
This includes the early detection and handoff of the request to
16944
the SMBus region handler (avoiding all of the complex field
16945
support code), and support for the bidirectional return packet
16946
from an SMBus write operation. This paves the way for the
16947
development of SMBus drivers in each host operating system.
16948
16949
Fixed a problem where the semaphore WAIT_FOREVER constant was
16950
defined as 32 bits, but must be 16 bits according to the ACPI
16951
specification. This had the side effect of causing ASL
16952
Mutex/Event timeouts even though the ASL code requested a wait
16953
forever. Changed all internal references to the ACPI timeout
16954
parameter to 16 bits to prevent future problems. Changed the name
16955
of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16956
16957
Code and Data Size: Current core subsystem library sizes are shown
16958
below. These are the code and data sizes for the acpica.lib
16959
produced by the Microsoft Visual C++ 6.0 compiler, and these
16960
values do not include any ACPI driver or OSPM code. The debug
16961
version of the code includes the debug output trace mechanism and
16962
has a much larger code and data size. Note that these values will
16963
vary depending on the efficiency of the compiler and the compiler
16964
options used during generation.
16965
16966
Previous Release
16967
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
16968
Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
16969
Current Release:
16970
Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
16971
Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
16972
16973
16974
2) Linux
16975
16976
Module loading/unloading fixes (John Cagle)
16977
16978
16979
3) iASL Compiler/Disassembler
16980
16981
Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16982
16983
Implemented support for the disassembly of all SMBus protocol
16984
keywords (SMBQuick, SMBWord, etc.)
16985
16986
----------------------------------------
16987
01 November 2002. Summary of changes for version 20021101.
16988
16989
16990
1) ACPI CA Core Subsystem:
16991
16992
Fixed a problem where platforms that have a GPE1 block but no GPE0
16993
block were not handled correctly. This resulted in a "GPE
16994
overlap" error message. GPE0 is no longer required.
16995
16996
Removed code added in the previous release that inserted nodes
16997
into the namespace in alphabetical order. This caused some side-
16998
effects on various machines. The root cause of the problem is
16999
still under investigation since in theory, the internal ordering
17000
of the namespace nodes should not matter.
17001
17002
17003
Enhanced error reporting for the case where a named object is not
17004
found during control method execution. The full ACPI namepath
17005
(name reference) of the object that was not found is displayed in
17006
this case.
17007
17008
Note: as a result of the overhaul of the namespace object types in
17009
the previous release, the namespace nodes for the predefined
17010
scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
17011
instead of ACPI_TYPE_ANY. This simplifies the namespace
17012
management code but may affect code that walks the namespace tree
17013
looking for specific object types.
17014
17015
Code and Data Size: Current core subsystem library sizes are shown
17016
below. These are the code and data sizes for the acpica.lib
17017
produced by the Microsoft Visual C++ 6.0 compiler, and these
17018
values do not include any ACPI driver or OSPM code. The debug
17019
version of the code includes the debug output trace mechanism and
17020
has a much larger code and data size. Note that these values will
17021
vary depending on the efficiency of the compiler and the compiler
17022
options used during generation.
17023
17024
Previous Release
17025
Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
17026
Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
17027
Current Release:
17028
Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
17029
Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
17030
17031
17032
2) Linux
17033
17034
Fixed a problem introduced in the previous release where the
17035
Processor and Thermal objects were not recognized and installed in
17036
/proc. This was related to the scope type change described above.
17037
17038
17039
3) iASL Compiler/Disassembler
17040
17041
Implemented the -g option to get all of the required ACPI tables
17042
from the registry and save them to files (Windows version of the
17043
compiler only.) The required tables are the FADT, FACS, and DSDT.
17044
17045
Added ACPI table checksum validation during table disassembly in
17046
order to catch corrupted tables.
17047
17048
17049
----------------------------------------
17050
22 October 2002. Summary of changes for version 20021022.
17051
17052
1) ACPI CA Core Subsystem:
17053
17054
Implemented a restriction on the Scope operator that the target
17055
must already exist in the namespace at the time the operator is
17056
encountered (during table load or method execution). In other
17057
words, forward references are not allowed and Scope() cannot
17058
create a new object. This changes the previous behavior where the
17059
interpreter would create the name if not found. This new behavior
17060
correctly enables the search-to-root algorithm during namespace
17061
lookup of the target name. Because of this upsearch, this fixes
17062
the known Compaq _SB_.OKEC problem and makes both the AML
17063
interpreter and iASL compiler compatible with other ACPI
17064
implementations.
17065
17066
Completed a major overhaul of the internal ACPI object types for
17067
the ACPI Namespace and the associated operand objects. Many of
17068
these types had become obsolete with the introduction of the two-
17069
pass namespace load. This cleanup simplifies the code and makes
17070
the entire namespace load mechanism much clearer and easier to
17071
understand.
17072
17073
Improved debug output for tracking scope opening/closing to help
17074
diagnose scoping issues. The old scope name as well as the new
17075
scope name are displayed. Also improved error messages for
17076
problems with ASL Mutex objects and error messages for GPE
17077
problems.
17078
17079
Cleaned up the namespace dump code, removed obsolete code.
17080
17081
All string output (for all namespace/object dumps) now uses the
17082
common ACPI string output procedure which handles escapes properly
17083
and does not emit non-printable characters.
17084
17085
Fixed some issues with constants in the 64-bit version of the
17086
local C library (utclib.c)
17087
17088
17089
2) Linux
17090
17091
EC Driver: No longer attempts to acquire the Global Lock at
17092
interrupt level.
17093
17094
17095
3) iASL Compiler/Disassembler
17096
17097
Implemented ACPI 2.0B grammar change that disallows all Type 1 and
17098
2 opcodes outside of a control method. This means that the
17099
"executable" operators (versus the "namespace" operators) cannot
17100
be used at the table level; they can only be used within a control
17101
method.
17102
17103
Implemented the restriction on the Scope() operator where the
17104
target must already exist in the namespace at the time the
17105
operator is encountered (during ASL compilation). In other words,
17106
forward references are not allowed and Scope() cannot create a new
17107
object. This makes the iASL compiler compatible with other ACPI
17108
implementations and makes the Scope() implementation adhere to the
17109
ACPI specification.
17110
17111
Fixed a problem where namepath optimization for the Alias operator
17112
was optimizing the wrong path (of the two namepaths.) This caused
17113
a "Missing alias link" error message.
17114
17115
Fixed a problem where an "unknown reserved name" warning could be
17116
incorrectly generated for names like "_SB" when the trailing
17117
underscore is not used in the original ASL.
17118
17119
Fixed a problem where the reserved name check did not handle
17120
NamePaths with multiple NameSegs correctly. The first nameseg of
17121
the NamePath was examined instead of the last NameSeg.
17122
17123
17124
----------------------------------------
17125
17126
02 October 2002. Summary of changes for this release.
17127
17128
17129
1) ACPI CA Core Subsystem version 20021002:
17130
17131
Fixed a problem where a store/copy of a string to an existing
17132
string did not always set the string length properly in the String
17133
object.
17134
17135
Fixed a reported problem with the ToString operator where the
17136
behavior was identical to the ToHexString operator instead of just
17137
simply converting a raw buffer to a string data type.
17138
17139
Fixed a problem where CopyObject and the other "explicit"
17140
conversion operators were not updating the internal namespace node
17141
type as part of the store operation.
17142
17143
Fixed a memory leak during implicit source operand conversion
17144
where the original object was not deleted if it was converted to a
17145
new object of a different type.
17146
17147
Enhanced error messages for all problems associated with namespace
17148
lookups. Common procedure generates and prints the lookup name as
17149
well as the formatted status.
17150
17151
Completed implementation of a new design for the Alias support
17152
within the namespace. The existing design did not handle the case
17153
where a new object was assigned to one of the two names due to the
17154
use of an explicit conversion operator, resulting in the two names
17155
pointing to two different objects. The new design simply points
17156
the Alias name to the original name node - not to the object.
17157
This results in a level of indirection that must be handled in the
17158
name resolution mechanism.
17159
17160
Code and Data Size: Current core subsystem library sizes are shown
17161
below. These are the code and data sizes for the acpica.lib
17162
produced by the Microsoft Visual C++ 6.0 compiler, and these
17163
values do not include any ACPI driver or OSPM code. The debug
17164
version of the code includes the debug output trace mechanism and
17165
has a larger code and data size. Note that these values will vary
17166
depending on the efficiency of the compiler and the compiler
17167
options used during generation.
17168
17169
Previous Release
17170
Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
17171
Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
17172
Current Release:
17173
Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
17174
Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
17175
17176
17177
2) Linux
17178
17179
Initialize thermal driver's timer before it is used. (Knut
17180
Neumann)
17181
17182
Allow handling negative celsius values. (Kochi Takayoshi)
17183
17184
Fix thermal management and make trip points. R/W (Pavel Machek)
17185
17186
Fix /proc/acpi/sleep. (P. Christeas)
17187
17188
IA64 fixes. (David Mosberger)
17189
17190
Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
17191
17192
Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
17193
Brodowski)
17194
17195
17196
3) iASL Compiler/Disassembler
17197
17198
Clarified some warning/error messages.
17199
17200
17201
----------------------------------------
17202
18 September 2002. Summary of changes for this release.
17203
17204
17205
1) ACPI CA Core Subsystem version 20020918:
17206
17207
Fixed a reported problem with reference chaining (via the Index()
17208
and RefOf() operators) in the ObjectType() and SizeOf() operators.
17209
The definition of these operators includes the dereferencing of
17210
all chained references to return information on the base object.
17211
17212
Fixed a problem with stores to indexed package elements - the
17213
existing code would not complete the store if an "implicit
17214
conversion" was not performed. In other words, if the existing
17215
object (package element) was to be replaced completely, the code
17216
didn't handle this case.
17217
17218
Relaxed typechecking on the ASL "Scope" operator to allow the
17219
target name to refer to an object of type Integer, String, or
17220
Buffer, in addition to the scoping object types (Device,
17221
predefined Scopes, Processor, PowerResource, and ThermalZone.)
17222
This allows existing AML code that has workarounds for a bug in
17223
Windows to function properly. A warning is issued, however. This
17224
affects both the AML interpreter and the iASL compiler. Below is
17225
an example of this type of ASL code:
17226
17227
Name(DEB,0x00)
17228
Scope(DEB)
17229
{
17230
17231
Fixed some reported problems with 64-bit integer support in the
17232
local implementation of C library functions (clib.c)
17233
17234
17235
2) Linux
17236
17237
Use ACPI fix map region instead of IOAPIC region, since it is
17238
undefined in non-SMP.
17239
17240
Ensure that the SCI has the proper polarity and trigger, even on
17241
systems that do not have an interrupt override entry in the MADT.
17242
17243
2.5 big driver reorganization (Pat Mochel)
17244
17245
Use early table mapping code from acpitable.c (Andi Kleen)
17246
17247
New blacklist entries (Andi Kleen)
17248
17249
Blacklist improvements. Split blacklist code out into a separate
17250
file. Move checking the blacklist to very early. Previously, we
17251
would use ACPI tables, and then halfway through init, check the
17252
blacklist -- too late. Now, it's early enough to completely fall-
17253
back to non-ACPI.
17254
17255
17256
3) iASL Compiler/Disassembler version 20020918:
17257
17258
Fixed a problem where the typechecking code didn't know that an
17259
alias could point to a method. In other words, aliases were not
17260
being dereferenced during typechecking.
17261
17262
17263
----------------------------------------
17264
29 August 2002. Summary of changes for this release.
17265
17266
1) ACPI CA Core Subsystem Version 20020829:
17267
17268
If the target of a Scope() operator already exists, it must be an
17269
object type that actually opens a scope -- such as a Device,
17270
Method, Scope, etc. This is a fatal runtime error. Similar error
17271
check has been added to the iASL compiler also.
17272
17273
Tightened up the namespace load to disallow multiple names in the
17274
same scope. This previously was allowed if both objects were of
17275
the same type. (i.e., a lookup was the same as entering a new
17276
name).
17277
17278
17279
2) Linux
17280
17281
Ensure that the ACPI interrupt has the proper trigger and
17282
polarity.
17283
17284
local_irq_disable is extraneous. (Matthew Wilcox)
17285
17286
Make "acpi=off" actually do what it says, and not use the ACPI
17287
interpreter *or* the tables.
17288
17289
Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
17290
Takayoshi)
17291
17292
17293
3) iASL Compiler/Disassembler Version 20020829:
17294
17295
Implemented namepath optimization for name declarations. For
17296
example, a declaration like "Method (\_SB_.ABCD)" would get
17297
optimized to "Method (ABCD)" if the declaration is within the
17298
\_SB_ scope. This optimization is in addition to the named
17299
reference path optimization first released in the previous
17300
version. This would seem to complete all possible optimizations
17301
for namepaths within the ASL/AML.
17302
17303
If the target of a Scope() operator already exists, it must be an
17304
object type that actually opens a scope -- such as a Device,
17305
Method, Scope, etc.
17306
17307
Implemented a check and warning for unreachable code in the same
17308
block below a Return() statement.
17309
17310
Fixed a problem where the listing file was not generated if the
17311
compiler aborted if the maximum error count was exceeded (200).
17312
17313
Fixed a problem where the typechecking of method return values was
17314
broken. This includes the check for a return value when the
17315
method is invoked as a TermArg (a return value is expected.)
17316
17317
Fixed a reported problem where EOF conditions during a quoted
17318
string or comment caused a fault.
17319
17320
17321
----------------------------------------
17322
15 August 2002. Summary of changes for this release.
17323
17324
1) ACPI CA Core Subsystem Version 20020815:
17325
17326
Fixed a reported problem where a Store to a method argument that
17327
contains a reference did not perform the indirect store correctly.
17328
This problem was created during the conversion to the new
17329
reference object model - the indirect store to a method argument
17330
code was not updated to reflect the new model.
17331
17332
Reworked the ACPI mode change code to better conform to ACPI 2.0,
17333
handle corner cases, and improve code legibility (Kochi Takayoshi)
17334
17335
Fixed a problem with the pathname parsing for the carat (^)
17336
prefix. The heavy use of the carat operator by the new namepath
17337
optimization in the iASL compiler uncovered a problem with the AML
17338
interpreter handling of this prefix. In the case where one or
17339
more carats precede a single nameseg, the nameseg was treated as
17340
standalone and the search rule (to root) was inadvertently
17341
applied. This could cause both the iASL compiler and the
17342
interpreter to find the wrong object or to miss the error that
17343
should occur if the object does not exist at that exact pathname.
17344
17345
Found and fixed the problem where the HP Pavilion DSDT would not
17346
load. This was a relatively minor tweak to the table loading code
17347
(a problem caused by the unexpected encounter with a method
17348
invocation not within a control method), but it does not solve the
17349
overall issue of the execution of AML code at the table level.
17350
This investigation is still ongoing.
17351
17352
Code and Data Size: Current core subsystem library sizes are shown
17353
below. These are the code and data sizes for the acpica.lib
17354
produced by the Microsoft Visual C++ 6.0 compiler, and these
17355
values do not include any ACPI driver or OSPM code. The debug
17356
version of the code includes the debug output trace mechanism and
17357
has a larger code and data size. Note that these values will vary
17358
depending on the efficiency of the compiler and the compiler
17359
options used during generation.
17360
17361
Previous Release
17362
Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
17363
Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
17364
Current Release:
17365
Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
17366
Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
17367
17368
17369
2) Linux
17370
17371
Remove redundant slab.h include (Brad Hards)
17372
17373
Fix several bugs in thermal.c (Herbert Nachtnebel)
17374
17375
Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
17376
17377
Change acpi_system_suspend to use updated irq functions (Pavel
17378
Machek)
17379
17380
Export acpi_get_firmware_table (Matthew Wilcox)
17381
17382
Use proper root proc entry for ACPI (Kochi Takayoshi)
17383
17384
Fix early-boot table parsing (Bjorn Helgaas)
17385
17386
17387
3) iASL Compiler/Disassembler
17388
17389
Reworked the compiler options to make them more consistent and to
17390
use two-letter options where appropriate. We were running out of
17391
sensible letters. This may break some makefiles, so check the
17392
current options list by invoking the compiler with no parameters.
17393
17394
Completed the design and implementation of the ASL namepath
17395
optimization option for the compiler. This option optimizes all
17396
references to named objects to the shortest possible path. The
17397
first attempt tries to utilize a single nameseg (4 characters) and
17398
the "search-to-root" algorithm used by the interpreter. If that
17399
cannot be used (because either the name is not in the search path
17400
or there is a conflict with another object with the same name),
17401
the pathname is optimized using the carat prefix (usually a
17402
shorter string than specifying the entire path from the root.)
17403
17404
Implemented support to obtain the DSDT from the Windows registry
17405
(when the disassembly option is specified with no input file).
17406
Added this code as the implementation for AcpiOsTableOverride in
17407
the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
17408
utility) to scan memory for the DSDT to the AcpiOsTableOverride
17409
function in the DOS OSL to make the disassembler truly OS
17410
independent.
17411
17412
Implemented a new option to disassemble and compile in one step.
17413
When used without an input filename, this option will grab the
17414
DSDT from the local machine, disassemble it, and compile it in one
17415
step.
17416
17417
Added a warning message for invalid escapes (a backslash followed
17418
by any character other than the allowable escapes). This catches
17419
the quoted string error "\_SB_" (which should be "\\_SB_" ).
17420
17421
Also, there are numerous instances in the ACPI specification where
17422
this error occurs.
17423
17424
Added a compiler option to disable all optimizations. This is
17425
basically the "compatibility mode" because by using this option,
17426
the AML code will come out exactly the same as other ASL
17427
compilers.
17428
17429
Added error messages for incorrectly ordered dependent resource
17430
functions. This includes: missing EndDependentFn macro at end of
17431
dependent resource list, nested dependent function macros (both
17432
start and end), and missing StartDependentFn macro. These are
17433
common errors that should be caught at compile time.
17434
17435
Implemented _OSI support for the disassembler and compiler. _OSI
17436
must be included in the namespace for proper disassembly (because
17437
the disassembler must know the number of arguments.)
17438
17439
Added an "optimization" message type that is optional (off by
17440
default). This message is used for all optimizations - including
17441
constant folding, integer optimization, and namepath optimization.
17442
17443
----------------------------------------
17444
25 July 2002. Summary of changes for this release.
17445
17446
17447
1) ACPI CA Core Subsystem Version 20020725:
17448
17449
The AML Disassembler has been enhanced to produce compilable ASL
17450
code and has been integrated into the iASL compiler (see below) as
17451
well as the single-step disassembly for the AML debugger and the
17452
disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
17453
resource templates and macros are fully supported. The
17454
disassembler has been tested on over 30 different AML files,
17455
producing identical AML when the resulting disassembled ASL file
17456
is recompiled with the same ASL compiler.
17457
17458
Modified the Resource Manager to allow zero interrupts and zero
17459
dma channels during the GetCurrentResources call. This was
17460
causing problems on some platforms.
17461
17462
Added the AcpiOsRedirectOutput interface to the OSL to simplify
17463
output redirection for the AcpiOsPrintf and AcpiOsVprintf
17464
interfaces.
17465
17466
Code and Data Size: Current core subsystem library sizes are shown
17467
below. These are the code and data sizes for the acpica.lib
17468
produced by the Microsoft Visual C++ 6.0 compiler, and these
17469
values do not include any ACPI driver or OSPM code. The debug
17470
version of the code includes the debug output trace mechanism and
17471
has a larger code and data size. Note that these values will vary
17472
depending on the efficiency of the compiler and the compiler
17473
options used during generation.
17474
17475
Previous Release
17476
Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
17477
Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
17478
Current Release:
17479
Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
17480
Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
17481
17482
17483
2) Linux
17484
17485
Fixed a panic in the EC driver (Dominik Brodowski)
17486
17487
Implemented checksum of the R/XSDT itself during Linux table scan
17488
(Richard Schaal)
17489
17490
17491
3) iASL compiler
17492
17493
The AML disassembler is integrated into the compiler. The "-d"
17494
option invokes the disassembler to completely disassemble an
17495
input AML file, producing as output a text ASL file with the
17496
extension ".dsl" (to avoid name collisions with existing .asl
17497
source files.) A future enhancement will allow the disassembler
17498
to obtain the BIOS DSDT from the registry under Windows.
17499
17500
Fixed a problem with the VendorShort and VendorLong resource
17501
descriptors where an invalid AML sequence was created.
17502
17503
Implemented a fix for BufferData term in the ASL parser. It was
17504
inadvertently defined twice, allowing invalid syntax to pass and
17505
causing reduction conflicts.
17506
17507
Fixed a problem where the Ones opcode could get converted to a
17508
value of zero if "Ones" was used where a byte, word or dword value
17509
was expected. The 64-bit value is now truncated to the correct
17510
size with the correct value.
17511
17512
17513
17514
----------------------------------------
17515
02 July 2002. Summary of changes for this release.
17516
17517
17518
1) ACPI CA Core Subsystem Version 20020702:
17519
17520
The Table Manager code has been restructured to add several new
17521
features. Tables that are not required by the core subsystem
17522
(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17523
validated in any way and are returned from AcpiGetFirmwareTable if
17524
requested. The AcpiOsTableOverride interface is now called for
17525
each table that is loaded by the subsystem in order to allow the
17526
host to override any table it chooses. Previously, only the DSDT
17527
could be overridden. Added one new files, tbrsdt.c and
17528
tbgetall.c.
17529
17530
Fixed a problem with the conversion of internal package objects to
17531
external objects (when a package is returned from a control
17532
method.) The return buffer length was set to zero instead of the
17533
proper length of the package object.
17534
17535
Fixed a reported problem with the use of the RefOf and DeRefOf
17536
operators when passing reference arguments to control methods. A
17537
new type of Reference object is used internally for references
17538
produced by the RefOf operator.
17539
17540
Added additional error messages in the Resource Manager to explain
17541
AE_BAD_DATA errors when they occur during resource parsing.
17542
17543
Split the AcpiEnableSubsystem into two primitives to enable a
17544
finer granularity initialization sequence. These two calls should
17545
be called in this order: AcpiEnableSubsystem (flags),
17546
AcpiInitializeObjects (flags). The flags parameter remains the
17547
same.
17548
17549
17550
2) Linux
17551
17552
Updated the ACPI utilities module to understand the new style of
17553
fully resolved package objects that are now returned from the core
17554
subsystem. This eliminates errors of the form:
17555
17556
ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
17557
acpi_utils-0430 [145] acpi_evaluate_reference:
17558
Invalid element in package (not a device reference)
17559
17560
The method evaluation utility uses the new buffer allocation
17561
scheme instead of calling AcpiEvaluate Object twice.
17562
17563
Added support for ECDT. This allows the use of the Embedded
17564
17565
Controller before the namespace has been fully initialized, which
17566
is necessary for ACPI 2.0 support, and for some laptops to
17567
initialize properly. (Laptops using ECDT are still rare, so only
17568
limited testing was performed of the added functionality.)
17569
17570
Fixed memory leaks in the EC driver.
17571
17572
Eliminated a brittle code structure in acpi_bus_init().
17573
17574
Eliminated the acpi_evaluate() helper function in utils.c. It is
17575
no longer needed since acpi_evaluate_object can optionally
17576
allocate memory for the return object.
17577
17578
Implemented fix for keyboard hang when getting battery readings on
17579
some systems (Stephen White)
17580
17581
PCI IRQ routing update (Dominik Brodowski)
17582
17583
Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17584
support
17585
17586
----------------------------------------
17587
11 June 2002. Summary of changes for this release.
17588
17589
17590
1) ACPI CA Core Subsystem Version 20020611:
17591
17592
Fixed a reported problem where constants such as Zero and One
17593
appearing within _PRT packages were not handled correctly within
17594
the resource manager code. Originally reported against the ASL
17595
compiler because the code generator now optimizes integers to
17596
their minimal AML representation (i.e. AML constants if possible.)
17597
The _PRT code now handles all AML constant opcodes correctly
17598
(Zero, One, Ones, Revision).
17599
17600
Fixed a problem with the Concatenate operator in the AML
17601
interpreter where a buffer result object was incorrectly marked as
17602
not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17603
17604
All package sub-objects are now fully resolved before they are
17605
returned from the external ACPI interfaces. This means that name
17606
strings are resolved to object handles, and constant operators
17607
(Zero, One, Ones, Revision) are resolved to Integers.
17608
17609
Implemented immediate resolution of the AML Constant opcodes
17610
(Zero, One, Ones, Revision) to Integer objects upon detection
17611
within the AML stream. This has simplified and reduced the
17612
generated code size of the subsystem by eliminating about 10
17613
switch statements for these constants (which previously were
17614
contained in Reference objects.) The complicating issues are that
17615
the Zero opcode is used as a "placeholder" for unspecified
17616
optional target operands and stores to constants are defined to be
17617
no-ops.
17618
17619
Code and Data Size: Current core subsystem library sizes are shown
17620
below. These are the code and data sizes for the acpica.lib
17621
produced by the Microsoft Visual C++ 6.0 compiler, and these
17622
values do not include any ACPI driver or OSPM code. The debug
17623
version of the code includes the debug output trace mechanism and
17624
has a larger code and data size. Note that these values will vary
17625
depending on the efficiency of the compiler and the compiler
17626
options used during generation.
17627
17628
Previous Release
17629
Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
17630
Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
17631
Current Release:
17632
Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
17633
Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
17634
17635
17636
2) Linux
17637
17638
17639
Added preliminary support for obtaining _TRA data for PCI root
17640
bridges (Bjorn Helgaas).
17641
17642
17643
3) iASL Compiler Version X2046:
17644
17645
Fixed a problem where the "_DDN" reserved name was defined to be a
17646
control method with one argument. There are no arguments, and
17647
_DDN does not have to be a control method.
17648
17649
Fixed a problem with the Linux version of the compiler where the
17650
source lines printed with error messages were the wrong lines.
17651
This turned out to be the "LF versus CR/LF" difference between
17652
Windows and Unix. This appears to be the longstanding issue
17653
concerning listing output and error messages.
17654
17655
Fixed a problem with the Linux version of compiler where opcode
17656
names within error messages were wrong. This was caused by a
17657
slight difference in the output of the Flex tool on Linux versus
17658
Windows.
17659
17660
Fixed a problem with the Linux compiler where the hex output files
17661
contained some garbage data caused by an internal buffer overrun.
17662
17663
17664
----------------------------------------
17665
17 May 2002. Summary of changes for this release.
17666
17667
17668
1) ACPI CA Core Subsystem Version 20020517:
17669
17670
Implemented a workaround to an BIOS bug discovered on the HP
17671
OmniBook where the FADT revision number and the table size are
17672
inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
17673
behavior is to fallback to using only the ACPI 1.0 fields of the
17674
FADT if the table is too small to be a ACPI 2.0 table as claimed
17675
by the revision number. Although this is a BIOS bug, this is a
17676
case where the workaround is simple enough and with no side
17677
effects, so it seemed prudent to add it. A warning message is
17678
issued, however.
17679
17680
Implemented minimum size checks for the fixed-length ACPI tables -
17681
- the FADT and FACS, as well as consistency checks between the
17682
revision number and the table size.
17683
17684
Fixed a reported problem in the table override support where the
17685
new table pointer was incorrectly treated as a physical address
17686
instead of a logical address.
17687
17688
Eliminated the use of the AE_AML_ERROR exception and replaced it
17689
with more descriptive codes.
17690
17691
Fixed a problem where an exception would occur if an ASL Field was
17692
defined with no named Field Units underneath it (used by some
17693
index fields).
17694
17695
Code and Data Size: Current core subsystem library sizes are shown
17696
below. These are the code and data sizes for the acpica.lib
17697
produced by the Microsoft Visual C++ 6.0 compiler, and these
17698
values do not include any ACPI driver or OSPM code. The debug
17699
version of the code includes the debug output trace mechanism and
17700
has a larger code and data size. Note that these values will vary
17701
depending on the efficiency of the compiler and the compiler
17702
options used during generation.
17703
17704
Previous Release
17705
Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
17706
Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
17707
Current Release:
17708
Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
17709
Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
17710
17711
17712
17713
2) Linux
17714
17715
Much work done on ACPI init (MADT and PCI IRQ routing support).
17716
(Paul D. and Dominik Brodowski)
17717
17718
Fix PCI IRQ-related panic on boot (Sam Revitch)
17719
17720
Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17721
17722
Fix "MHz" typo (Dominik Brodowski)
17723
17724
Fix RTC year 2000 issue (Dominik Brodowski)
17725
17726
Preclude multiple button proc entries (Eric Brunet)
17727
17728
Moved arch-specific code out of include/platform/aclinux.h
17729
17730
3) iASL Compiler Version X2044:
17731
17732
Implemented error checking for the string used in the EISAID macro
17733
(Usually used in the definition of the _HID object.) The code now
17734
strictly enforces the PnP format - exactly 7 characters, 3
17735
uppercase letters and 4 hex digits.
17736
17737
If a raw string is used in the definition of the _HID object
17738
(instead of the EISAID macro), the string must contain all
17739
alphanumeric characters (e.g., "*PNP0011" is not allowed because
17740
of the asterisk.)
17741
17742
Implemented checking for invalid use of ACPI reserved names for
17743
most of the name creation operators (Name, Device, Event, Mutex,
17744
OperationRegion, PowerResource, Processor, and ThermalZone.)
17745
Previously, this check was only performed for control methods.
17746
17747
Implemented an additional check on the Name operator to emit an
17748
error if a reserved name that must be implemented in ASL as a
17749
control method is used. We know that a reserved name must be a
17750
method if it is defined with input arguments.
17751
17752
The warning emitted when a namespace object reference is not found
17753
during the cross reference phase has been changed into an error.
17754
The "External" directive should be used for names defined in other
17755
modules.
17756
17757
17758
4) Tools and Utilities
17759
17760
The 16-bit tools (adump16 and aexec16) have been regenerated and
17761
tested.
17762
17763
Fixed a problem with the output of both acpidump and adump16 where
17764
the indentation of closing parentheses and brackets was not
17765
17766
aligned properly with the parent block.
17767
17768
17769
----------------------------------------
17770
03 May 2002. Summary of changes for this release.
17771
17772
17773
1) ACPI CA Core Subsystem Version 20020503:
17774
17775
Added support a new OSL interface that allows the host operating
17776
17777
system software to override the DSDT found in the firmware -
17778
AcpiOsTableOverride. With this interface, the OSL can examine the
17779
version of the firmware DSDT and replace it with a different one
17780
if desired.
17781
17782
Added new external interfaces for accessing ACPI registers from
17783
device drivers and other system software - AcpiGetRegister and
17784
AcpiSetRegister. This was simply an externalization of the
17785
existing AcpiHwBitRegister interfaces.
17786
17787
Fixed a regression introduced in the previous build where the
17788
ASL/AML CreateField operator always returned an error,
17789
"destination must be a NS Node".
17790
17791
Extended the maximum time (before failure) to successfully enable
17792
ACPI mode to 3 seconds.
17793
17794
Code and Data Size: Current core subsystem library sizes are shown
17795
below. These are the code and data sizes for the acpica.lib
17796
produced by the Microsoft Visual C++ 6.0 compiler, and these
17797
values do not include any ACPI driver or OSPM code. The debug
17798
version of the code includes the debug output trace mechanism and
17799
has a larger code and data size. Note that these values will vary
17800
depending on the efficiency of the compiler and the compiler
17801
options used during generation.
17802
17803
Previous Release
17804
Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
17805
Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
17806
Current Release:
17807
Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
17808
Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
17809
17810
17811
2) Linux
17812
17813
Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17814
free. While 3 out of 4 of our in-house systems work fine, the last
17815
one still hangs when testing the LAPIC timer.
17816
17817
Renamed many files in 2.5 kernel release to omit "acpi_" from the
17818
name.
17819
17820
Added warning on boot for Presario 711FR.
17821
17822
Sleep improvements (Pavel Machek)
17823
17824
ACPI can now be built without CONFIG_PCI enabled.
17825
17826
IA64: Fixed memory map functions (JI Lee)
17827
17828
17829
3) iASL Compiler Version X2043:
17830
17831
Added support to allow the compiler to be integrated into the MS
17832
VC++ development environment for one-button compilation of single
17833
files or entire projects -- with error-to-source-line mapping.
17834
17835
Implemented support for compile-time constant folding for the
17836
Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17837
specification. This allows the ASL writer to use expressions
17838
instead of Integer/Buffer/String constants in terms that must
17839
evaluate to constants at compile time and will also simplify the
17840
emitted AML in any such sub-expressions that can be folded
17841
(evaluated at compile-time.) This increases the size of the
17842
compiler significantly because a portion of the ACPI CA AML
17843
interpreter is included within the compiler in order to pre-
17844
evaluate constant expressions.
17845
17846
17847
Fixed a problem with the "Unicode" ASL macro that caused the
17848
compiler to fault. (This macro is used in conjunction with the
17849
_STR reserved name.)
17850
17851
Implemented an AML opcode optimization to use the Zero, One, and
17852
Ones opcodes where possible to further reduce the size of integer
17853
constants and thus reduce the overall size of the generated AML
17854
code.
17855
17856
Implemented error checking for new reserved terms for ACPI version
17857
2.0A.
17858
17859
Implemented the -qr option to display the current list of ACPI
17860
reserved names known to the compiler.
17861
17862
Implemented the -qc option to display the current list of ASL
17863
operators that are allowed within constant expressions and can
17864
therefore be folded at compile time if the operands are constants.
17865
17866
17867
4) Documentation
17868
17869
Updated the Programmer's Reference for new interfaces, data types,
17870
and memory allocation model options.
17871
17872
Updated the iASL Compiler User Reference to apply new format and
17873
add information about new features and options.
17874
17875
----------------------------------------
17876
19 April 2002. Summary of changes for this release.
17877
17878
1) ACPI CA Core Subsystem Version 20020419:
17879
17880
The source code base for the Core Subsystem has been completely
17881
cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17882
versions. The Lint option files used are included in the
17883
/acpi/generate/lint directory.
17884
17885
Implemented enhanced status/error checking across the entire
17886
Hardware manager subsystem. Any hardware errors (reported from
17887
the OSL) are now bubbled up and will abort a running control
17888
method.
17889
17890
17891
Fixed a problem where the per-ACPI-table integer width (32 or 64)
17892
was stored only with control method nodes, causing a fault when
17893
non-control method code was executed during table loading. The
17894
solution implemented uses a global variable to indicate table
17895
width across the entire ACPI subsystem. Therefore, ACPI CA does
17896
not support mixed integer widths across different ACPI tables
17897
(DSDT, SSDT).
17898
17899
Fixed a problem where NULL extended fields (X fields) in an ACPI
17900
2.0 ACPI FADT caused the table load to fail. Although the
17901
existing ACPI specification is a bit fuzzy on this topic, the new
17902
behavior is to fall back on a ACPI 1.0 field if the corresponding
17903
ACPI 2.0 X field is zero (even though the table revision indicates
17904
a full ACPI 2.0 table.) The ACPI specification will be updated to
17905
clarify this issue.
17906
17907
Fixed a problem with the SystemMemory operation region handler
17908
where memory was always accessed byte-wise even if the AML-
17909
specified access width was larger than a byte. This caused
17910
problems on systems with memory-mapped I/O. Memory is now
17911
accessed with the width specified. On systems that do not support
17912
non-aligned transfers, a check is made to guarantee proper address
17913
alignment before proceeding in order to avoid an AML-caused
17914
alignment fault within the kernel.
17915
17916
17917
Fixed a problem with the ExtendedIrq resource where only one byte
17918
of the 4-byte Irq field was extracted.
17919
17920
Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
17921
function was out of date and required a rewrite.
17922
17923
Code and Data Size: Current core subsystem library sizes are shown
17924
below. These are the code and data sizes for the acpica.lib
17925
produced by the Microsoft Visual C++ 6.0 compiler, and these
17926
values do not include any ACPI driver or OSPM code. The debug
17927
version of the code includes the debug output trace mechanism and
17928
has a larger code and data size. Note that these values will vary
17929
depending on the efficiency of the compiler and the compiler
17930
options used during generation.
17931
17932
Previous Release
17933
Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
17934
Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
17935
Current Release:
17936
Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
17937
Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
17938
17939
17940
2) Linux
17941
17942
PCI IRQ routing fixes (Dominik Brodowski)
17943
17944
17945
3) iASL Compiler Version X2042:
17946
17947
Implemented an additional compile-time error check for a field
17948
unit whose size + minimum access width would cause a run-time
17949
access beyond the end-of-region. Previously, only the field size
17950
itself was checked.
17951
17952
The Core subsystem and iASL compiler now share a common parse
17953
object in preparation for compile-time evaluation of the type
17954
3/4/5 ASL operators.
17955
17956
17957
----------------------------------------
17958
Summary of changes for this release: 03_29_02
17959
17960
1) ACPI CA Core Subsystem Version 20020329:
17961
17962
Implemented support for late evaluation of TermArg operands to
17963
Buffer and Package objects. This allows complex expressions to be
17964
used in the declarations of these object types.
17965
17966
Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
17967
1.0, if the field was larger than 32 bits, it was returned as a
17968
buffer - otherwise it was returned as an integer. In ACPI 2.0,
17969
the field is returned as a buffer only if the field is larger than
17970
64 bits. The TableRevision is now considered when making this
17971
conversion to avoid incompatibility with existing ASL code.
17972
17973
Implemented logical addressing for AcpiOsGetRootPointer. This
17974
allows an RSDP with either a logical or physical address. With
17975
this support, the host OS can now override all ACPI tables with
17976
one logical RSDP. Includes implementation of "typed" pointer
17977
support to allow a common data type for both physical and logical
17978
pointers internally. This required a change to the
17979
AcpiOsGetRootPointer interface.
17980
17981
Implemented the use of ACPI 2.0 Generic Address Structures for all
17982
GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
17983
mapped I/O for these ACPI features.
17984
17985
Initialization now ignores not only non-required tables (All
17986
tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17987
not validate the table headers of unrecognized tables.
17988
17989
Fixed a problem where a notify handler could only be
17990
installed/removed on an object of type Device. All "notify"
17991
17992
objects are now supported -- Devices, Processor, Power, and
17993
Thermal.
17994
17995
Removed most verbosity from the ACPI_DB_INFO debug level. Only
17996
critical information is returned when this debug level is enabled.
17997
17998
Code and Data Size: Current core subsystem library sizes are shown
17999
below. These are the code and data sizes for the acpica.lib
18000
produced by the Microsoft Visual C++ 6.0 compiler, and these
18001
values do not include any ACPI driver or OSPM code. The debug
18002
version of the code includes the debug output trace mechanism and
18003
has a larger code and data size. Note that these values will vary
18004
depending on the efficiency of the compiler and the compiler
18005
options used during generation.
18006
18007
Previous Release
18008
Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
18009
Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
18010
Current Release:
18011
Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
18012
Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
18013
18014
18015
2) Linux:
18016
18017
The processor driver (acpi_processor.c) now fully supports ACPI
18018
2.0-based processor performance control (e.g. Intel(R)
18019
SpeedStep(TM) technology) Note that older laptops that only have
18020
the Intel "applet" interface are not supported through this. The
18021
'limit' and 'performance' interface (/proc) are fully functional.
18022
[Note that basic policy for controlling performance state
18023
transitions will be included in the next version of ospmd.] The
18024
idle handler was modified to more aggressively use C2, and PIIX4
18025
errata handling underwent a complete overhaul (big thanks to
18026
Dominik Brodowski).
18027
18028
Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
18029
based devices in the ACPI namespace are now dynamically bound
18030
(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
18031
This allows, among other things, ACPI to resolve bus numbers for
18032
subordinate PCI bridges.
18033
18034
Enhanced PCI IRQ routing to get the proper bus number for _PRT
18035
entries defined underneath PCI bridges.
18036
18037
Added IBM 600E to bad bios list due to invalid _ADR value for
18038
PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
18039
18040
In the process of adding full MADT support (e.g. IOAPIC) for IA32
18041
(acpi.c, mpparse.c) -- stay tuned.
18042
18043
Added back visual differentiation between fixed-feature and
18044
control-method buttons in dmesg. Buttons are also subtyped (e.g.
18045
button/power/PWRF) to simplify button identification.
18046
18047
We no longer use -Wno-unused when compiling debug. Please ignore
18048
any "_THIS_MODULE defined but not used" messages.
18049
18050
Can now shut down the system using "magic sysrq" key.
18051
18052
18053
3) iASL Compiler version 2041:
18054
18055
Fixed a problem where conversion errors for hex/octal/decimal
18056
constants were not reported.
18057
18058
Implemented a fix for the General Register template Address field.
18059
This field was 8 bits when it should be 64.
18060
18061
Fixed a problem where errors/warnings were no longer being emitted
18062
within the listing output file.
18063
18064
Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
18065
exactly 4 characters, alphanumeric only.
18066
18067
18068
18069
18070
----------------------------------------
18071
Summary of changes for this release: 03_08_02
18072
18073
18074
1) ACPI CA Core Subsystem Version 20020308:
18075
18076
Fixed a problem with AML Fields where the use of the "AccessAny"
18077
keyword could cause an interpreter error due to attempting to read
18078
or write beyond the end of the parent Operation Region.
18079
18080
Fixed a problem in the SystemMemory Operation Region handler where
18081
an attempt was made to map memory beyond the end of the region.
18082
This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
18083
errors on some Linux systems.
18084
18085
Fixed a problem where the interpreter/namespace "search to root"
18086
algorithm was not functioning for some object types. Relaxed the
18087
internal restriction on the search to allow upsearches for all
18088
external object types as well as most internal types.
18089
18090
18091
2) Linux:
18092
18093
We now use safe_halt() macro versus individual calls to sti | hlt.
18094
18095
Writing to the processor limit interface should now work. "echo 1"
18096
will increase the limit, 2 will decrease, and 0 will reset to the
18097
18098
default.
18099
18100
18101
3) ASL compiler:
18102
18103
Fixed segfault on Linux version.
18104
18105
18106
----------------------------------------
18107
Summary of changes for this release: 02_25_02
18108
18109
1) ACPI CA Core Subsystem:
18110
18111
18112
Fixed a problem where the GPE bit masks were not initialized
18113
properly, causing erratic GPE behavior.
18114
18115
Implemented limited support for multiple calling conventions. The
18116
code can be generated with either the VPL (variable parameter
18117
list, or "C") convention, or the FPL (fixed parameter list, or
18118
"Pascal") convention. The core subsystem is about 3.4% smaller
18119
when generated with FPL.
18120
18121
18122
2) Linux
18123
18124
Re-add some /proc/acpi/event functionality that was lost during
18125
the rewrite
18126
18127
Resolved issue with /proc events for fixed-feature buttons showing
18128
up as the system device.
18129
18130
Fixed checks on C2/C3 latencies to be inclusive of maximum values.
18131
18132
Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
18133
18134
Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
18135
18136
Fixed limit interface & usage to fix bugs with passive cooling
18137
hysterisis.
18138
18139
Restructured PRT support.
18140
18141
18142
----------------------------------------
18143
Summary of changes for this label: 02_14_02
18144
18145
18146
1) ACPI CA Core Subsystem:
18147
18148
Implemented support in AcpiLoadTable to allow loading of FACS and
18149
FADT tables.
18150
18151
Support for the now-obsolete interim 0.71 64-bit ACPI tables has
18152
been removed. All 64-bit platforms should be migrated to the ACPI
18153
2.0 tables. The actbl71.h header has been removed from the source
18154
tree.
18155
18156
All C macros defined within the subsystem have been prefixed with
18157
"ACPI_" to avoid collision with other system include files.
18158
18159
Removed the return value for the two AcpiOsPrint interfaces, since
18160
it is never used and causes lint warnings for ignoring the return
18161
value.
18162
18163
Added error checking to all internal mutex acquire and release
18164
calls. Although a failure from one of these interfaces is
18165
probably a fatal system error, these checks will cause the
18166
immediate abort of the currently executing method or interface.
18167
18168
Fixed a problem where the AcpiSetCurrentResources interface could
18169
fault. This was a side effect of the deployment of the new memory
18170
allocation model.
18171
18172
Fixed a couple of problems with the Global Lock support introduced
18173
in the last major build. The "common" (1.0/2.0) internal FACS was
18174
being overwritten with the FACS signature and clobbering the
18175
Global Lock pointer. Also, the actual firmware FACS was being
18176
unmapped after construction of the "common" FACS, preventing
18177
access to the actual Global Lock field within it. The "common"
18178
internal FACS is no longer installed as an actual ACPI table; it
18179
is used simply as a global.
18180
18181
Code and Data Size: Current core subsystem library sizes are shown
18182
below. These are the code and data sizes for the acpica.lib
18183
produced by the Microsoft Visual C++ 6.0 compiler, and these
18184
values do not include any ACPI driver or OSPM code. The debug
18185
version of the code includes the debug output trace mechanism and
18186
has a larger code and data size. Note that these values will vary
18187
depending on the efficiency of the compiler and the compiler
18188
options used during generation.
18189
18190
Previous Release (02_07_01)
18191
Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
18192
Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
18193
Current Release:
18194
Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
18195
Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
18196
18197
18198
2) Linux
18199
18200
Updated Linux-specific code for core macro and OSL interface
18201
changes described above.
18202
18203
Improved /proc/acpi/event. It now can be opened only once and has
18204
proper poll functionality.
18205
18206
Fixed and restructured power management (acpi_bus).
18207
18208
Only create /proc "view by type" when devices of that class exist.
18209
18210
Fixed "charging/discharging" bug (and others) in acpi_battery.
18211
18212
Improved thermal zone code.
18213
18214
18215
3) ASL Compiler, version X2039:
18216
18217
18218
Implemented the new compiler restriction on ASL String hex/octal
18219
escapes to non-null, ASCII values. An error results if an invalid
18220
value is used. (This will require an ACPI 2.0 specification
18221
change.)
18222
18223
AML object labels that are output to the optional C and ASM source
18224
are now prefixed with both the ACPI table signature and table ID
18225
to help guarantee uniqueness within a large BIOS project.
18226
18227
18228
----------------------------------------
18229
Summary of changes for this label: 02_01_02
18230
18231
1) ACPI CA Core Subsystem:
18232
18233
ACPI 2.0 support is complete in the entire Core Subsystem and the
18234
ASL compiler. All new ACPI 2.0 operators are implemented and all
18235
other changes for ACPI 2.0 support are complete. With
18236
simultaneous code and data optimizations throughout the subsystem,
18237
ACPI 2.0 support has been implemented with almost no additional
18238
cost in terms of code and data size.
18239
18240
Implemented a new mechanism for allocation of return buffers. If
18241
the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
18242
be allocated on behalf of the caller. Consolidated all return
18243
buffer validation and allocation to a common procedure. Return
18244
buffers will be allocated via the primary OSL allocation interface
18245
since it appears that a separate pool is not needed by most users.
18246
If a separate pool is required for these buffers, the caller can
18247
still use the original mechanism and pre-allocate the buffer(s).
18248
18249
Implemented support for string operands within the DerefOf
18250
operator.
18251
18252
Restructured the Hardware and Event managers to be table driven,
18253
simplifying the source code and reducing the amount of generated
18254
code.
18255
18256
Split the common read/write low-level ACPI register bitfield
18257
procedure into a separate read and write, simplifying the code
18258
considerably.
18259
18260
Obsoleted the AcpiOsCallocate OSL interface. This interface was
18261
used only a handful of times and didn't have enough critical mass
18262
for a separate interface. Replaced with a common calloc procedure
18263
in the core.
18264
18265
Fixed a reported problem with the GPE number mapping mechanism
18266
that allows GPE1 numbers to be non-contiguous with GPE0.
18267
Reorganized the GPE information and shrunk a large array that was
18268
originally large enough to hold info for all possible GPEs (256)
18269
to simply large enough to hold all GPEs up to the largest GPE
18270
number on the machine.
18271
18272
Fixed a reported problem with resource structure alignment on 64-
18273
bit platforms.
18274
18275
Changed the AcpiEnableEvent and AcpiDisableEvent external
18276
interfaces to not require any flags for the common case of
18277
enabling/disabling a GPE.
18278
18279
Implemented support to allow a "Notify" on a Processor object.
18280
18281
Most TBDs in comments within the source code have been resolved
18282
and eliminated.
18283
18284
18285
Fixed a problem in the interpreter where a standalone parent
18286
prefix (^) was not handled correctly in the interpreter and
18287
debugger.
18288
18289
Removed obsolete and unnecessary GPE save/restore code.
18290
18291
Implemented Field support in the ASL Load operator. This allows a
18292
table to be loaded from a named field, in addition to loading a
18293
table directly from an Operation Region.
18294
18295
Implemented timeout and handle support in the external Global Lock
18296
interfaces.
18297
18298
Fixed a problem in the AcpiDump utility where pathnames were no
18299
longer being generated correctly during the dump of named objects.
18300
18301
Modified the AML debugger to give a full display of if/while
18302
predicates instead of just one AML opcode at a time. (The
18303
predicate can have several nested ASL statements.) The old method
18304
was confusing during single stepping.
18305
18306
Code and Data Size: Current core subsystem library sizes are shown
18307
below. These are the code and data sizes for the acpica.lib
18308
produced by the Microsoft Visual C++ 6.0 compiler, and these
18309
values do not include any ACPI driver or OSPM code. The debug
18310
version of the code includes the debug output trace mechanism and
18311
has a larger code and data size. Note that these values will vary
18312
depending on the efficiency of the compiler and the compiler
18313
options used during generation.
18314
18315
Previous Release (12_18_01)
18316
Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
18317
Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
18318
Current Release:
18319
Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
18320
Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
18321
18322
2) Linux
18323
18324
Implemented fix for PIIX reverse throttling errata (Processor
18325
driver)
18326
18327
Added new Limit interface (Processor and Thermal drivers)
18328
18329
New thermal policy (Thermal driver)
18330
18331
Many updates to /proc
18332
18333
Battery "low" event support (Battery driver)
18334
18335
Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
18336
18337
IA32 - IA64 initialization unification, no longer experimental
18338
18339
Menuconfig options redesigned
18340
18341
3) ASL Compiler, version X2037:
18342
18343
Implemented several new output features to simplify integration of
18344
AML code into firmware: 1) Output the AML in C source code with
18345
labels for each named ASL object. The original ASL source code
18346
is interleaved as C comments. 2) Output the AML in ASM source code
18347
with labels and interleaved ASL source. 3) Output the AML in
18348
raw hex table form, in either C or ASM.
18349
18350
Implemented support for optional string parameters to the
18351
LoadTable operator.
18352
18353
Completed support for embedded escape sequences within string
18354
literals. The compiler now supports all single character escapes
18355
as well as the Octal and Hex escapes. Note: the insertion of a
18356
null byte into a string literal (via the hex/octal escape) causes
18357
the string to be immediately terminated. A warning is issued.
18358
18359
Fixed a problem where incorrect AML was generated for the case
18360
where an ASL namepath consists of a single parent prefix (
18361
18362
) with no trailing name segments.
18363
18364
The compiler has been successfully generated with a 64-bit C
18365
compiler.
18366
18367
18368
18369
18370
----------------------------------------
18371
Summary of changes for this label: 12_18_01
18372
18373
1) Linux
18374
18375
Enhanced blacklist with reason and severity fields. Any table's
18376
signature may now be used to identify a blacklisted system.
18377
18378
Call _PIC control method to inform the firmware which interrupt
18379
model the OS is using. Turn on any disabled link devices.
18380
18381
Cleaned up busmgr /proc error handling (Andreas Dilger)
18382
18383
2) ACPI CA Core Subsystem:
18384
18385
Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
18386
while loop)
18387
18388
Completed implementation of the ACPI 2.0 "Continue",
18389
"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
18390
operators. All new ACPI 2.0 operators are now implemented in both
18391
the ASL compiler and the AML interpreter. The only remaining ACPI
18392
2.0 task is support for the String data type in the DerefOf
18393
operator. Fixed a problem with AcquireMutex where the status code
18394
was lost if the caller had to actually wait for the mutex.
18395
18396
Increased the maximum ASL Field size from 64K bits to 4G bits.
18397
18398
Completed implementation of the external Global Lock interfaces --
18399
AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
18400
Handler parameters were added.
18401
18402
Completed another pass at removing warnings and issues when
18403
compiling with 64-bit compilers. The code now compiles cleanly
18404
with the Intel 64-bit C/C++ compiler. Most notably, the pointer
18405
add and subtract (diff) macros have changed considerably.
18406
18407
18408
Created and deployed a new ACPI_SIZE type that is 64-bits wide on
18409
64-bit platforms, 32-bits on all others. This type is used
18410
wherever memory allocation and/or the C sizeof() operator is used,
18411
and affects the OSL memory allocation interfaces AcpiOsAllocate
18412
and AcpiOsCallocate.
18413
18414
Implemented sticky user breakpoints in the AML debugger.
18415
18416
Code and Data Size: Current core subsystem library sizes are shown
18417
below. These are the code and data sizes for the acpica.lib
18418
produced by the Microsoft Visual C++ 6.0 compiler, and these
18419
values do not include any ACPI driver or OSPM code. The debug
18420
version of the code includes the debug output trace mechanism and
18421
has a larger code and data size. Note that these values will vary
18422
depending on the efficiency of the compiler and the compiler
18423
options used during generation.
18424
18425
Previous Release (12_05_01)
18426
Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
18427
Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
18428
Current Release:
18429
Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
18430
Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
18431
18432
3) ASL Compiler, version X2034:
18433
18434
Now checks for (and generates an error if detected) the use of a
18435
Break or Continue statement without an enclosing While statement.
18436
18437
18438
Successfully generated the compiler with the Intel 64-bit C
18439
compiler.
18440
18441
----------------------------------------
18442
Summary of changes for this label: 12_05_01
18443
18444
1) ACPI CA Core Subsystem:
18445
18446
The ACPI 2.0 CopyObject operator is fully implemented. This
18447
operator creates a new copy of an object (and is also used to
18448
bypass the "implicit conversion" mechanism of the Store operator.)
18449
18450
The ACPI 2.0 semantics for the SizeOf operator are fully
18451
implemented. The change is that performing a SizeOf on a
18452
reference object causes an automatic dereference of the object to
18453
the actual value before the size is evaluated. This behavior was
18454
undefined in ACPI 1.0.
18455
18456
The ACPI 2.0 semantics for the Extended IRQ resource descriptor
18457
have been implemented. The interrupt polarity and mode are now
18458
independently set.
18459
18460
Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
18461
appearing in Package objects were not properly converted to
18462
integers when the internal Package was converted to an external
18463
object (via the AcpiEvaluateObject interface.)
18464
18465
Fixed a problem with the namespace object deletion mechanism for
18466
objects created by control methods. There were two parts to this
18467
problem: 1) Objects created during the initialization phase method
18468
parse were not being deleted, and 2) The object owner ID mechanism
18469
to track objects was broken.
18470
18471
Fixed a problem where the use of the ASL Scope operator within a
18472
control method would result in an invalid opcode exception.
18473
18474
Fixed a problem introduced in the previous label where the buffer
18475
length required for the _PRT structure was not being returned
18476
correctly.
18477
18478
Code and Data Size: Current core subsystem library sizes are shown
18479
below. These are the code and data sizes for the acpica.lib
18480
produced by the Microsoft Visual C++ 6.0 compiler, and these
18481
values do not include any ACPI driver or OSPM code. The debug
18482
version of the code includes the debug output trace mechanism and
18483
has a larger code and data size. Note that these values will vary
18484
depending on the efficiency of the compiler and the compiler
18485
options used during generation.
18486
18487
Previous Release (11_20_01)
18488
Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
18489
Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
18490
18491
Current Release:
18492
Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
18493
Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
18494
18495
2) Linux:
18496
18497
Updated all files to apply cleanly against 2.4.16.
18498
18499
Added basic PCI Interrupt Routing Table (PRT) support for IA32
18500
(acpi_pci.c), and unified the PRT code for IA32 and IA64. This
18501
version supports both static and dynamic PRT entries, but dynamic
18502
entries are treated as if they were static (not yet
18503
reconfigurable). Architecture- specific code to use this data is
18504
absent on IA32 but should be available shortly.
18505
18506
Changed the initialization sequence to start the ACPI interpreter
18507
(acpi_init) prior to initialization of the PCI driver (pci_init)
18508
in init/main.c. This ordering is required to support PRT and
18509
facilitate other (future) enhancement. A side effect is that the
18510
ACPI bus driver and certain device drivers can no longer be loaded
18511
as modules.
18512
18513
Modified the 'make menuconfig' options to allow PCI Interrupt
18514
Routing support to be included without the ACPI Bus and other
18515
device drivers.
18516
18517
3) ASL Compiler, version X2033:
18518
18519
Fixed some issues with the use of the new CopyObject and
18520
DataTableRegion operators. Both are fully functional.
18521
18522
----------------------------------------
18523
Summary of changes for this label: 11_20_01
18524
18525
20 November 2001. Summary of changes for this release.
18526
18527
1) ACPI CA Core Subsystem:
18528
18529
Updated Index support to match ACPI 2.0 semantics. Storing a
18530
Integer, String, or Buffer to an Index of a Buffer will store only
18531
the least-significant byte of the source to the Indexed buffer
18532
byte. Multiple writes are not performed.
18533
18534
Fixed a problem where the access type used in an AccessAs ASL
18535
operator was not recorded correctly into the field object.
18536
18537
Fixed a problem where ASL Event objects were created in a
18538
signalled state. Events are now created in an unsignalled state.
18539
18540
The internal object cache is now purged after table loading and
18541
initialization to reduce the use of dynamic kernel memory -- on
18542
the assumption that object use is greatest during the parse phase
18543
of the entire table (versus the run-time use of individual control
18544
methods.)
18545
18546
ACPI 2.0 variable-length packages are now fully operational.
18547
18548
Code and Data Size: Code and Data optimizations have permitted new
18549
feature development with an actual reduction in the library size.
18550
Current core subsystem library sizes are shown below. These are
18551
the code and data sizes for the acpica.lib produced by the
18552
Microsoft Visual C++ 6.0 compiler, and these values do not include
18553
any ACPI driver or OSPM code. The debug version of the code
18554
includes the debug output trace mechanism and has a larger code
18555
and data size. Note that these values will vary depending on the
18556
efficiency of the compiler and the compiler options used during
18557
generation.
18558
18559
Previous Release (11_09_01):
18560
Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
18561
Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
18562
18563
Current Release:
18564
Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
18565
Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
18566
18567
2) Linux:
18568
18569
Enhanced the ACPI boot-time initialization code to allow the use
18570
of Local APIC tables for processor enumeration on IA-32, and to
18571
pave the way for a fully MPS-free boot (on SMP systems) in the
18572
near future. This functionality replaces
18573
arch/i386/kernel/acpitables.c, which was introduced in an earlier
18574
2.4.15-preX release. To enable this feature you must add
18575
"acpi_boot=on" to the kernel command line -- see the help entry
18576
for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
18577
the works...
18578
18579
Restructured the configuration options to allow boot-time table
18580
parsing support without inclusion of the ACPI Interpreter (and
18581
other) code.
18582
18583
NOTE: This release does not include fixes for the reported events,
18584
power-down, and thermal passive cooling issues (coming soon).
18585
18586
3) ASL Compiler:
18587
18588
Added additional typechecking for Fields within restricted access
18589
Operation Regions. All fields within EC and CMOS regions must be
18590
declared with ByteAcc. All fields within SMBus regions must be
18591
declared with the BufferAcc access type.
18592
18593
Fixed a problem where the listing file output of control methods
18594
no longer interleaved the actual AML code with the ASL source
18595
code.
18596
18597
18598
18599
18600
----------------------------------------
18601
Summary of changes for this label: 11_09_01
18602
18603
1) ACPI CA Core Subsystem:
18604
18605
Implemented ACPI 2.0-defined support for writes to fields with a
18606
Buffer, String, or Integer source operand that is smaller than the
18607
target field. In these cases, the source operand is zero-extended
18608
to fill the target field.
18609
18610
Fixed a problem where a Field starting bit offset (within the
18611
parent operation region) was calculated incorrectly if the
18612
18613
alignment of the field differed from the access width. This
18614
affected CreateWordField, CreateDwordField, CreateQwordField, and
18615
possibly other fields that use the "AccessAny" keyword.
18616
18617
Fixed a problem introduced in the 11_02_01 release where indirect
18618
stores through method arguments did not operate correctly.
18619
18620
2) Linux:
18621
18622
Implemented boot-time ACPI table parsing support
18623
(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
18624
facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18625
legacy BIOS interfaces (e.g. MPS) for the configuration of system
18626
processors, memory, and interrupts during setup_arch(). Note that
18627
this patch does not include the required architecture-specific
18628
changes required to apply this information -- subsequent patches
18629
will be posted for both IA32 and IA64 to achieve this.
18630
18631
Added low-level sleep support for IA32 platforms, courtesy of Pat
18632
Mochel. This allows IA32 systems to transition to/from various
18633
sleeping states (e.g. S1, S3), although the lack of a centralized
18634
driver model and power-manageable drivers will prevent its
18635
(successful) use on most systems.
18636
18637
Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18638
submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18639
tables" option, etc.
18640
18641
Increased the default timeout for the EC driver from 1ms to 10ms
18642
(1000 cycles of 10us) to try to address AE_TIME errors during EC
18643
transactions.
18644
18645
----------------------------------------
18646
Summary of changes for this label: 11_02_01
18647
18648
1) ACPI CA Core Subsystem:
18649
18650
ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18651
(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18652
implemented.
18653
18654
OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18655
changes to support ACPI 2.0 Qword field access. Read/Write
18656
PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18657
accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
18658
the value parameter for the address space handler interface is now
18659
an ACPI_INTEGER. OSL implementations of these interfaces must now
18660
handle the case where the Width parameter is 64.
18661
18662
Index Fields: Fixed a problem where unaligned bit assembly and
18663
disassembly for IndexFields was not supported correctly.
18664
18665
Index and Bank Fields: Nested Index and Bank Fields are now
18666
supported. During field access, a check is performed to ensure
18667
that the value written to an Index or Bank register is not out of
18668
the range of the register. The Index (or Bank) register is
18669
written before each access to the field data. Future support will
18670
include allowing individual IndexFields to be wider than the
18671
DataRegister width.
18672
18673
Fields: Fixed a problem where the AML interpreter was incorrectly
18674
attempting to write beyond the end of a Field/OpRegion. This was
18675
a boundary case that occurred when a DWORD field was written to a
18676
BYTE access OpRegion, forcing multiple writes and causing the
18677
interpreter to write one datum too many.
18678
18679
Fields: Fixed a problem with Field/OpRegion access where the
18680
starting bit address of a field was incorrectly calculated if the
18681
current access type was wider than a byte (WordAcc, DwordAcc, or
18682
QwordAcc).
18683
18684
Fields: Fixed a problem where forward references to individual
18685
FieldUnits (individual Field names within a Field definition) were
18686
not resolved during the AML table load.
18687
18688
Fields: Fixed a problem where forward references from a Field
18689
definition to the parent Operation Region definition were not
18690
resolved during the AML table load.
18691
18692
Fields: Duplicate FieldUnit names within a scope are now detected
18693
during AML table load.
18694
18695
Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18696
returned an incorrect name for the root node.
18697
18698
Code and Data Size: Code and Data optimizations have permitted new
18699
feature development with an actual reduction in the library size.
18700
Current core subsystem library sizes are shown below. These are
18701
the code and data sizes for the acpica.lib produced by the
18702
Microsoft Visual C++ 6.0 compiler, and these values do not include
18703
any ACPI driver or OSPM code. The debug version of the code
18704
includes the debug output trace mechanism and has a larger code
18705
and data size. Note that these values will vary depending on the
18706
efficiency of the compiler and the compiler options used during
18707
generation.
18708
18709
Previous Release (10_18_01):
18710
Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
18711
Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
18712
18713
Current Release:
18714
Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
18715
Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
18716
18717
2) Linux:
18718
18719
Improved /proc processor output (Pavel Machek) Re-added
18720
MODULE_LICENSE("GPL") to all modules.
18721
18722
3) ASL Compiler version X2030:
18723
18724
Duplicate FieldUnit names within a scope are now detected and
18725
flagged as errors.
18726
18727
4) Documentation:
18728
18729
Programmer Reference updated to reflect OSL and address space
18730
handler interface changes described above.
18731
18732
----------------------------------------
18733
Summary of changes for this label: 10_18_01
18734
18735
ACPI CA Core Subsystem:
18736
18737
Fixed a problem with the internal object reference count mechanism
18738
that occasionally caused premature object deletion. This resolves
18739
all of the outstanding problem reports where an object is deleted
18740
in the middle of an interpreter evaluation. Although this problem
18741
only showed up in rather obscure cases, the solution to the
18742
problem involved an adjustment of all reference counts involving
18743
objects attached to namespace nodes.
18744
18745
Fixed a problem with Field support in the interpreter where
18746
writing to an aligned field whose length is an exact multiple (2
18747
or greater) of the field access granularity would cause an attempt
18748
to write beyond the end of the field.
18749
18750
The top level AML opcode execution functions within the
18751
interpreter have been renamed with a more meaningful and
18752
consistent naming convention. The modules exmonad.c and
18753
exdyadic.c were eliminated. New modules are exoparg1.c,
18754
exoparg2.c, exoparg3.c, and exoparg6.c.
18755
18756
Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18757
18758
Fixed a problem where the AML debugger was causing some internal
18759
objects to not be deleted during subsystem termination.
18760
18761
Fixed a problem with the external AcpiEvaluateObject interface
18762
where the subsystem would fault if the named object to be
18763
evaluated referred to a constant such as Zero, Ones, etc.
18764
18765
Fixed a problem with IndexFields and BankFields where the
18766
subsystem would fault if the index, data, or bank registers were
18767
not defined in the same scope as the field itself.
18768
18769
Added printf format string checking for compilers that support
18770
this feature. Corrected more than 50 instances of issues with
18771
format specifiers within invocations of ACPI_DEBUG_PRINT
18772
throughout the core subsystem code.
18773
18774
The ASL "Revision" operator now returns the ACPI support level
18775
implemented in the core - the value "2" since the ACPI 2.0 support
18776
is more than 50% implemented.
18777
18778
Enhanced the output of the AML debugger "dump namespace" command
18779
to output in a more human-readable form.
18780
18781
Current core subsystem library code sizes are shown below. These
18782
18783
are the code and data sizes for the acpica.lib produced by the
18784
Microsoft Visual C++ 6.0 compiler, and these values do not include
18785
any ACPI driver or OSPM code. The debug version of the code
18786
includes the full debug trace mechanism -- leading to a much
18787
18788
larger code and data size. Note that these values will vary
18789
depending on the efficiency of the compiler and the compiler
18790
options used during generation.
18791
18792
Previous Label (09_20_01):
18793
Non-Debug Version: 65K Code, 5K Data, 70K Total
18794
Debug Version: 138K Code, 58K Data, 196K Total
18795
18796
This Label:
18797
18798
Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
18799
Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
18800
18801
Linux:
18802
18803
Implemented a "Bad BIOS Blacklist" to track machines that have
18804
known ASL/AML problems.
18805
18806
Enhanced the /proc interface for the thermal zone driver and added
18807
support for _HOT (the critical suspend trip point). The 'info'
18808
file now includes threshold/policy information, and allows setting
18809
of _SCP (cooling preference) and _TZP (polling frequency) values
18810
to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18811
frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18812
preference to the passive/quiet mode (if supported by the ASL).
18813
18814
Implemented a workaround for a gcc bug that resuted in an OOPs
18815
when loading the control method battery driver.
18816
18817
----------------------------------------
18818
Summary of changes for this label: 09_20_01
18819
18820
ACPI CA Core Subsystem:
18821
18822
The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18823
modified to allow individual GPE levels to be flagged as wake-
18824
enabled (i.e., these GPEs are to remain enabled when the platform
18825
sleeps.)
18826
18827
The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18828
support wake-enabled GPEs. This means that upon entering the
18829
sleep state, all GPEs that are not wake-enabled are disabled.
18830
When leaving the sleep state, these GPEs are re-enabled.
18831
18832
A local double-precision divide/modulo module has been added to
18833
enhance portability to OS kernels where a 64-bit math library is
18834
not available. The new module is "utmath.c".
18835
18836
Several optimizations have been made to reduce the use of CPU
18837
stack. Originally over 2K, the maximum stack usage is now below
18838
2K at 1860 bytes (1.82k)
18839
18840
Fixed a problem with the AcpiGetFirmwareTable interface where the
18841
root table pointer was not mapped into a logical address properly.
18842
18843
Fixed a problem where a NULL pointer was being dereferenced in the
18844
interpreter code for the ASL Notify operator.
18845
18846
Fixed a problem where the use of the ASL Revision operator
18847
returned an error. This operator now returns the current version
18848
of the ACPI CA core subsystem.
18849
18850
Fixed a problem where objects passed as control method parameters
18851
to AcpiEvaluateObject were always deleted at method termination.
18852
However, these objects may end up being stored into the namespace
18853
by the called method. The object reference count mechanism was
18854
applied to these objects instead of a force delete.
18855
18856
Fixed a problem where static strings or buffers (contained in the
18857
AML code) that are declared as package elements within the ASL
18858
code could cause a fault because the interpreter would attempt to
18859
delete them. These objects are now marked with the "static
18860
object" flag to prevent any attempt to delete them.
18861
18862
Implemented an interpreter optimization to use operands directly
18863
from the state object instead of extracting the operands to local
18864
variables. This reduces stack use and code size, and improves
18865
performance.
18866
18867
The module exxface.c was eliminated as it was an unnecessary extra
18868
layer of code.
18869
18870
Current core subsystem library code sizes are shown below. These
18871
are the code and data sizes for the acpica.lib produced by the
18872
Microsoft Visual C++ 6.0 compiler, and these values do not include
18873
any ACPI driver or OSPM code. The debug version of the code
18874
includes the full debug trace mechanism -- leading to a much
18875
larger code and data size. Note that these values will vary
18876
depending on the efficiency of the compiler and the compiler
18877
options used during generation.
18878
18879
Non-Debug Version: 65K Code, 5K Data, 70K Total
18880
(Previously 69K) Debug Version: 138K Code, 58K Data, 196K
18881
Total (Previously 195K)
18882
18883
Linux:
18884
18885
Support for ACPI 2.0 64-bit integers has been added. All ACPI
18886
Integer objects are now 64 bits wide
18887
18888
All Acpi data types and structures are now in lower case. Only
18889
Acpi macros are upper case for differentiation.
18890
18891
Documentation:
18892
18893
Changes to the external interfaces as described above.
18894
18895
----------------------------------------
18896
Summary of changes for this label: 08_31_01
18897
18898
ACPI CA Core Subsystem:
18899
18900
A bug with interpreter implementation of the ASL Divide operator
18901
was found and fixed. The implicit function return value (not the
18902
explicit store operands) was returning the remainder instead of
18903
the quotient. This was a longstanding bug and it fixes several
18904
known outstanding issues on various platforms.
18905
18906
The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18907
been further optimized for size. There are 700 invocations of the
18908
DEBUG_PRINT macro alone, so each optimization reduces the size of
18909
the debug version of the subsystem significantly.
18910
18911
A stack trace mechanism has been implemented. The maximum stack
18912
usage is about 2K on 32-bit platforms. The debugger command "stat
18913
stack" will display the current maximum stack usage.
18914
18915
All public symbols and global variables within the subsystem are
18916
now prefixed with the string "Acpi". This keeps all of the
18917
symbols grouped together in a kernel map, and avoids conflicts
18918
with other kernel subsystems.
18919
18920
Most of the internal fixed lookup tables have been moved into the
18921
code segment via the const operator.
18922
18923
Several enhancements have been made to the interpreter to both
18924
reduce the code size and improve performance.
18925
18926
Current core subsystem library code sizes are shown below. These
18927
are the code and data sizes for the acpica.lib produced by the
18928
Microsoft Visual C++ 6.0 compiler, and these values do not include
18929
any ACPI driver or OSPM code. The debug version of the code
18930
includes the full debug trace mechanism which contains over 700
18931
invocations of the DEBUG_PRINT macro, 500 function entry macro
18932
invocations, and over 900 function exit macro invocations --
18933
leading to a much larger code and data size. Note that these
18934
values will vary depending on the efficiency of the compiler and
18935
the compiler options used during generation.
18936
18937
Non-Debug Version: 64K Code, 5K Data, 69K Total
18938
Debug Version: 137K Code, 58K Data, 195K Total
18939
18940
Linux:
18941
18942
Implemented wbinvd() macro, pending a kernel-wide definition.
18943
18944
Fixed /proc/acpi/event to handle poll() and short reads.
18945
18946
ASL Compiler, version X2026:
18947
18948
Fixed a problem introduced in the previous label where the AML
18949
18950
code emitted for package objects produced packages with zero
18951
length.
18952
18953
----------------------------------------
18954
Summary of changes for this label: 08_16_01
18955
18956
ACPI CA Core Subsystem:
18957
18958
The following ACPI 2.0 ASL operators have been implemented in the
18959
AML interpreter (These are already supported by the Intel ASL
18960
compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
18961
ToBuffer. Support for 64-bit AML constants is implemented in the
18962
AML parser, debugger, and disassembler.
18963
18964
The internal memory tracking mechanism (leak detection code) has
18965
been upgraded to reduce the memory overhead (a separate tracking
18966
block is no longer allocated for each memory allocation), and now
18967
supports all of the internal object caches.
18968
18969
The data structures and code for the internal object caches have
18970
been coelesced and optimized so that there is a single cache and
18971
memory list data structure and a single group of functions that
18972
implement generic cache management. This has reduced the code
18973
size in both the debug and release versions of the subsystem.
18974
18975
The DEBUG_PRINT macro(s) have been optimized for size and replaced
18976
by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
18977
different, because it generates a single call to an internal
18978
function. This results in a savings of about 90 bytes per
18979
invocation, resulting in an overall code and data savings of about
18980
16% in the debug version of the subsystem.
18981
18982
Linux:
18983
18984
Fixed C3 disk corruption problems and re-enabled C3 on supporting
18985
machines.
18986
18987
Integrated low-level sleep code by Patrick Mochel.
18988
18989
Further tweaked source code Linuxization.
18990
18991
Other minor fixes.
18992
18993
ASL Compiler:
18994
18995
Support for ACPI 2.0 variable length packages is fixed/completed.
18996
18997
Fixed a problem where the optional length parameter for the ACPI
18998
2.0 ToString operator.
18999
19000
Fixed multiple extraneous error messages when a syntax error is
19001
detected within the declaration line of a control method.
19002
19003
----------------------------------------
19004
Summary of changes for this label: 07_17_01
19005
19006
ACPI CA Core Subsystem:
19007
19008
Added a new interface named AcpiGetFirmwareTable to obtain any
19009
ACPI table via the ACPI signature. The interface can be called at
19010
any time during kernel initialization, even before the kernel
19011
virtual memory manager is initialized and paging is enabled. This
19012
allows kernel subsystems to obtain ACPI tables very early, even
19013
before the ACPI CA subsystem is initialized.
19014
19015
Fixed a problem where Fields defined with the AnyAcc attribute
19016
could be resolved to the incorrect address under the following
19017
conditions: 1) the field width is larger than 8 bits and 2) the
19018
parent operation region is not defined on a DWORD boundary.
19019
19020
Fixed a problem where the interpreter is not being locked during
19021
namespace initialization (during execution of the _INI control
19022
methods), causing an error when an attempt is made to release it
19023
later.
19024
19025
ACPI 2.0 support in the AML Interpreter has begun and will be
19026
ongoing throughout the rest of this year. In this label, The Mod
19027
operator is implemented.
19028
19029
Added a new data type to contain full PCI addresses named
19030
ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
19031
and Function values.
19032
19033
Linux:
19034
19035
Enhanced the Linux version of the source code to change most
19036
capitalized ACPI type names to lowercase. For example, all
19037
instances of ACPI_STATUS are changed to acpi_status. This will
19038
result in a large diff, but the change is strictly cosmetic and
19039
aligns the CA code closer to the Linux coding standard.
19040
19041
OSL Interfaces:
19042
19043
The interfaces to the PCI configuration space have been changed to
19044
add the PCI Segment number and to split the single 32-bit combined
19045
DeviceFunction field into two 16-bit fields. This was
19046
accomplished by moving the four values that define an address in
19047
PCI configuration space (segment, bus, device, and function) to
19048
the new ACPI_PCI_ID structure.
19049
19050
The changes to the PCI configuration space interfaces led to a
19051
reexamination of the complete set of address space access
19052
interfaces for PCI, I/O, and Memory. The previously existing 18
19053
interfaces have proven difficult to maintain (any small change
19054
must be propagated across at least 6 interfaces) and do not easily
19055
allow for future expansion to 64 bits if necessary. Also, on some
19056
systems, it would not be appropriate to demultiplex the access
19057
width (8, 16, 32,or 64) before calling the OSL if the
19058
corresponding native OS interfaces contain a similar access width
19059
parameter. For these reasons, the 18 address space interfaces
19060
have been replaced by these 6 new ones:
19061
19062
AcpiOsReadPciConfiguration
19063
AcpiOsWritePciConfiguration
19064
AcpiOsReadMemory
19065
AcpiOsWriteMemory
19066
AcpiOsReadPort
19067
AcpiOsWritePort
19068
19069
Added a new interface named AcpiOsGetRootPointer to allow the OSL
19070
to perform the platform and/or OS-specific actions necessary to
19071
obtain the ACPI RSDP table pointer. On IA-32 platforms, this
19072
interface will simply call down to the CA core to perform the low-
19073
memory search for the table. On IA-64, the RSDP is obtained from
19074
EFI. Migrating this interface to the OSL allows the CA core to
19075
19076
remain OS and platform independent.
19077
19078
Added a new interface named AcpiOsSignal to provide a generic
19079
"function code and pointer" interface for various miscellaneous
19080
signals and notifications that must be made to the host OS. The
19081
first such signals are intended to support the ASL Fatal and
19082
Breakpoint operators. In the latter case, the AcpiOsBreakpoint
19083
interface has been obsoleted.
19084
19085
The definition of the AcpiFormatException interface has been
19086
changed to simplify its use. The caller no longer must supply a
19087
buffer to the call; A pointer to a const string is now returned
19088
directly. This allows the call to be easily used in printf
19089
statements, etc. since the caller does not have to manage a local
19090
buffer.
19091
19092
19093
ASL Compiler, Version X2025:
19094
19095
The ACPI 2.0 Switch/Case/Default operators have been implemented
19096
and are fully functional. They will work with all ACPI 1.0
19097
interpreters, since the operators are simply translated to If/Else
19098
pairs.
19099
19100
The ACPI 2.0 ElseIf operator is implemented and will also work
19101
with 1.0 interpreters, for the same reason.
19102
19103
Implemented support for ACPI 2.0 variable-length packages. These
19104
packages have a separate opcode, and their size is determined by
19105
the interpreter at run-time.
19106
19107
Documentation The ACPI CA Programmer Reference has been updated to
19108
reflect the new interfaces and changes to existing interfaces.
19109
19110
------------------------------------------
19111
Summary of changes for this label: 06_15_01
19112
19113
ACPI CA Core Subsystem:
19114
19115
Fixed a problem where a DWORD-accessed field within a Buffer
19116
object would get its byte address inadvertently rounded down to
19117
the nearest DWORD. Buffers are always Byte-accessible.
19118
19119
ASL Compiler, version X2024:
19120
19121
Fixed a problem where the Switch() operator would either fault or
19122
hang the compiler. Note however, that the AML code for this ACPI
19123
2.0 operator is not yet implemented.
19124
19125
Compiler uses the new AcpiOsGetTimer interface to obtain compile
19126
timings.
19127
19128
Implementation of the CreateField operator automatically converts
19129
a reference to a named field within a resource descriptor from a
19130
byte offset to a bit offset if required.
19131
19132
Added some missing named fields from the resource descriptor
19133
support. These are the names that are automatically created by the
19134
compiler to reference fields within a descriptor. They are only
19135
valid at compile time and are not passed through to the AML
19136
interpreter.
19137
19138
Resource descriptor named fields are now typed as Integers and
19139
subject to compile-time typechecking when used in expressions.
19140
19141
------------------------------------------
19142
Summary of changes for this label: 05_18_01
19143
19144
ACPI CA Core Subsystem:
19145
19146
Fixed a couple of problems in the Field support code where bits
19147
from adjacent fields could be returned along with the proper field
19148
bits. Restructured the field support code to improve performance,
19149
readability and maintainability.
19150
19151
New DEBUG_PRINTP macro automatically inserts the procedure name
19152
into the output, saving hundreds of copies of procedure name
19153
strings within the source, shrinking the memory footprint of the
19154
debug version of the core subsystem.
19155
19156
Source Code Structure:
19157
19158
The source code directory tree was restructured to reflect the
19159
current organization of the component architecture. Some files
19160
and directories have been moved and/or renamed.
19161
19162
Linux:
19163
19164
Fixed leaking kacpidpc processes.
19165
19166
Fixed queueing event data even when /proc/acpi/event is not
19167
opened.
19168
19169
ASL Compiler, version X2020:
19170
19171
Memory allocation performance enhancement - over 24X compile time
19172
improvement on large ASL files. Parse nodes and namestring
19173
buffers are now allocated from a large internal compiler buffer.
19174
19175
The temporary .SRC file is deleted unless the "-s" option is
19176
specified
19177
19178
The "-d" debug output option now sends all output to the .DBG file
19179
instead of the console.
19180
19181
"External" second parameter is now optional
19182
19183
"ElseIf" syntax now properly allows the predicate
19184
19185
Last operand to "Load" now recognized as a Target operand
19186
19187
Debug object can now be used anywhere as a normal object.
19188
19189
ResourceTemplate now returns an object of type BUFFER
19190
19191
EISAID now returns an object of type INTEGER
19192
19193
"Index" now works with a STRING operand
19194
19195
"LoadTable" now accepts optional parameters
19196
19197
"ToString" length parameter is now optional
19198
19199
"Interrupt (ResourceType," parse error fixed.
19200
19201
"Register" with a user-defined region space parse error fixed
19202
19203
Escaped backslash at the end of a string ("\\") scan/parse error
19204
fixed
19205
19206
"Revision" is now an object of type INTEGER.
19207
19208
19209
19210
------------------------------------------
19211
Summary of changes for this label: 05_02_01
19212
19213
Linux:
19214
19215
/proc/acpi/event now blocks properly.
19216
19217
Removed /proc/sys/acpi. You can still dump your DSDT from
19218
/proc/acpi/dsdt.
19219
19220
ACPI CA Core Subsystem:
19221
19222
Fixed a problem introduced in the previous label where some of the
19223
"small" resource descriptor types were not recognized.
19224
19225
Improved error messages for the case where an ASL Field is outside
19226
the range of the parent operation region.
19227
19228
ASL Compiler, version X2018:
19229
19230
19231
Added error detection for ASL Fields that extend beyond the length
19232
of the parent operation region (only if the length of the region
19233
is known at compile time.) This includes fields that have a
19234
minimum access width that is smaller than the parent region, and
19235
individual field units that are partially or entirely beyond the
19236
extent of the parent.
19237
19238
19239
19240
------------------------------------------
19241
Summary of changes for this label: 04_27_01
19242
19243
ACPI CA Core Subsystem:
19244
19245
Fixed a problem where the namespace mutex could be released at the
19246
wrong time during execution of AcpiRemoveAddressSpaceHandler.
19247
19248
Added optional thread ID output for debug traces, to simplify
19249
debugging of multiple threads. Added context switch notification
19250
when the debug code realizes that a different thread is now
19251
executing ACPI code.
19252
19253
Some additional external data types have been prefixed with the
19254
string "ACPI_" for consistency. This may effect existing code.
19255
The data types affected are the external callback typedefs - e.g.,
19256
19257
WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
19258
19259
Linux:
19260
19261
Fixed an issue with the OSL semaphore implementation where a
19262
thread was waking up with an error from receiving a SIGCHLD
19263
signal.
19264
19265
Linux version of ACPI CA now uses the system C library for string
19266
manipulation routines instead of a local implementation.
19267
19268
Cleaned up comments and removed TBDs.
19269
19270
ASL Compiler, version X2017:
19271
19272
Enhanced error detection and reporting for all file I/O
19273
operations.
19274
19275
Documentation:
19276
19277
Programmer Reference updated to version 1.06.
19278
19279
19280
19281
------------------------------------------
19282
Summary of changes for this label: 04_13_01
19283
19284
ACPI CA Core Subsystem:
19285
19286
Restructured support for BufferFields and RegionFields.
19287
BankFields support is now fully operational. All known 32-bit
19288
limitations on field sizes have been removed. Both BufferFields
19289
and (Operation) RegionFields are now supported by the same field
19290
management code.
19291
19292
Resource support now supports QWORD address and IO resources. The
19293
16/32/64 bit address structures and the Extended IRQ structure
19294
have been changed to properly handle Source Resource strings.
19295
19296
A ThreadId of -1 is now used to indicate a "mutex not acquired"
19297
condition internally and must never be returned by AcpiOsThreadId.
19298
This reserved value was changed from 0 since Unix systems allow a
19299
thread ID of 0.
19300
19301
Linux:
19302
19303
Driver code reorganized to enhance portability
19304
19305
Added a kernel configuration option to control ACPI_DEBUG
19306
19307
Fixed the EC driver to honor _GLK.
19308
19309
ASL Compiler, version X2016:
19310
19311
Fixed support for the "FixedHw" keyword. Previously, the FixedHw
19312
address space was set to 0, not 0x7f as it should be.
19313
19314
------------------------------------------
19315
Summary of changes for this label: 03_13_01
19316
19317
ACPI CA Core Subsystem:
19318
19319
During ACPI initialization, the _SB_._INI method is now run if
19320
present.
19321
19322
Notify handler fix - notifies are deferred until the parent method
19323
completes execution. This fixes the "mutex already acquired"
19324
issue seen occasionally.
19325
19326
Part of the "implicit conversion" rules in ACPI 2.0 have been
19327
found to cause compatibility problems with existing ASL/AML. The
19328
convert "result-to-target-type" implementation has been removed
19329
for stores to method Args and Locals. Source operand conversion
19330
is still fully implemented. Possible changes to ACPI 2.0
19331
specification pending.
19332
19333
Fix to AcpiRsCalculatePciRoutingTableLength to return correct
19334
length.
19335
19336
Fix for compiler warnings for 64-bit compiles.
19337
19338
Linux:
19339
19340
/proc output aligned for easier parsing.
19341
19342
Release-version compile problem fixed.
19343
19344
New kernel configuration options documented in Configure.help.
19345
19346
IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
19347
context" message.
19348
19349
OSPM:
19350
19351
Power resource driver integrated with bus manager.
19352
19353
Fixed kernel fault during active cooling for thermal zones.
19354
19355
Source Code:
19356
19357
The source code tree has been restructured.
19358
19359
19360
19361
------------------------------------------
19362
Summary of changes for this label: 03_02_01
19363
19364
Linux OS Services Layer (OSL):
19365
19366
Major revision of all Linux-specific code.
19367
19368
Modularized all ACPI-specific drivers.
19369
19370
Added new thermal zone and power resource drivers.
19371
19372
Revamped /proc interface (new functionality is under /proc/acpi).
19373
19374
New kernel configuration options.
19375
19376
Linux known issues:
19377
19378
New kernel configuration options not documented in Configure.help
19379
yet.
19380
19381
19382
Module dependencies not currently implemented. If used, they
19383
should be loaded in this order: busmgr, power, ec, system,
19384
processor, battery, ac_adapter, button, thermal.
19385
19386
Modules will not load if CONFIG_MODVERSION is set.
19387
19388
IBM 600E - entering S5 may reboot instead of shutting down.
19389
19390
IBM 600E - Sleep button may generate "Invalid <NULL> context"
19391
message.
19392
19393
Some systems may fail with "execution mutex already acquired"
19394
message.
19395
19396
ACPI CA Core Subsystem:
19397
19398
Added a new OSL Interface, AcpiOsGetThreadId. This was required
19399
for the deadlock detection code. Defined to return a non-zero, 32-
19400
bit thread ID for the currently executing thread. May be a non-
19401
zero constant integer on single-thread systems.
19402
19403
Implemented deadlock detection for internal subsystem mutexes. We
19404
may add conditional compilation for this code (debug only) later.
19405
19406
ASL/AML Mutex object semantics are now fully supported. This
19407
includes multiple acquires/releases by owner and support for the
19408
19409
Mutex SyncLevel parameter.
19410
19411
A new "Force Release" mechanism automatically frees all ASL
19412
Mutexes that have been acquired but not released when a thread
19413
exits the interpreter. This forces conformance to the ACPI spec
19414
("All mutexes must be released when an invocation exits") and
19415
prevents deadlocked ASL threads. This mechanism can be expanded
19416
(later) to monitor other resource acquisitions if OEM ASL code
19417
continues to misbehave (which it will).
19418
19419
Several new ACPI exception codes have been added for the Mutex
19420
support.
19421
19422
Recursive method calls are now allowed and supported (the ACPI
19423
spec does in fact allow recursive method calls.) The number of
19424
recursive calls is subject to the restrictions imposed by the
19425
SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
19426
parameter.
19427
19428
Implemented support for the SyncLevel parameter for control
19429
methods (ACPI 2.0 feature)
19430
19431
Fixed a deadlock problem when multiple threads attempted to use
19432
the interpreter.
19433
19434
Fixed a problem where the string length of a String package
19435
element was not always set in a package returned from
19436
AcpiEvaluateObject.
19437
19438
Fixed a problem where the length of a String package element was
19439
not always included in the length of the overall package returned
19440
from AcpiEvaluateObject.
19441
19442
Added external interfaces (Acpi*) to the ACPI debug memory
19443
manager. This manager keeps a list of all outstanding
19444
allocations, and can therefore detect memory leaks and attempts to
19445
free memory blocks more than once. Useful for code such as the
19446
power manager, etc. May not be appropriate for device drivers.
19447
Performance with the debug code enabled is slow.
19448
19449
The ACPI Global Lock is now an optional hardware element.
19450
19451
ASL Compiler Version X2015:
19452
19453
Integrated changes to allow the compiler to be generated on
19454
multiple platforms.
19455
19456
Linux makefile added to generate the compiler on Linux
19457
19458
Source Code:
19459
19460
All platform-specific headers have been moved to their own
19461
subdirectory, Include/Platform.
19462
19463
New source file added, Interpreter/ammutex.c
19464
19465
New header file, Include/acstruct.h
19466
19467
Documentation:
19468
19469
The programmer reference has been updated for the following new
19470
interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
19471
19472
------------------------------------------
19473
Summary of changes for this label: 02_08_01
19474
19475
Core ACPI CA Subsystem: Fixed a problem where an error was
19476
incorrectly returned if the return resource buffer was larger than
19477
the actual data (in the resource interfaces).
19478
19479
References to named objects within packages are resolved to the
19480
19481
full pathname string before packages are returned directly (via
19482
the AcpiEvaluateObject interface) or indirectly via the resource
19483
interfaces.
19484
19485
Linux OS Services Layer (OSL):
19486
19487
Improved /proc battery interface.
19488
19489
19490
Added C-state debugging output and other miscellaneous fixes.
19491
19492
ASL Compiler Version X2014:
19493
19494
All defined method arguments can now be used as local variables,
19495
including the ones that are not actually passed in as parameters.
19496
The compiler tracks initialization of the arguments and issues an
19497
exception if they are used without prior assignment (just like
19498
locals).
19499
19500
The -o option now specifies a filename prefix that is used for all
19501
output files, including the AML output file. Otherwise, the
19502
default behavior is as follows: 1) the AML goes to the file
19503
specified in the DSDT. 2) all other output files use the input
19504
source filename as the base.
19505
19506
------------------------------------------
19507
Summary of changes for this label: 01_25_01
19508
19509
Core ACPI CA Subsystem: Restructured the implementation of object
19510
store support within the interpreter. This includes support for
19511
the Store operator as well as any ASL operators that include a
19512
target operand.
19513
19514
Partially implemented support for Implicit Result-to-Target
19515
conversion. This is when a result object is converted on the fly
19516
to the type of an existing target object. Completion of this
19517
support is pending further analysis of the ACPI specification
19518
concerning this matter.
19519
19520
CPU-specific code has been removed from the subsystem (hardware
19521
directory).
19522
19523
New Power Management Timer functions added
19524
19525
Linux OS Services Layer (OSL): Moved system state transition code
19526
to the core, fixed it, and modified Linux OSL accordingly.
19527
19528
Fixed C2 and C3 latency calculations.
19529
19530
19531
We no longer use the compilation date for the version message on
19532
initialization, but retrieve the version from AcpiGetSystemInfo().
19533
19534
Incorporated for fix Sony VAIO machines.
19535
19536
Documentation: The Programmer Reference has been updated and
19537
reformatted.
19538
19539
19540
ASL Compiler: Version X2013: Fixed a problem where the line
19541
numbering and error reporting could get out of sync in the
19542
presence of multiple include files.
19543
19544
------------------------------------------
19545
Summary of changes for this label: 01_15_01
19546
19547
Core ACPI CA Subsystem:
19548
19549
Implemented support for type conversions in the execution of the
19550
ASL Concatenate operator (The second operand is converted to
19551
match the type of the first operand before concatenation.)
19552
19553
Support for implicit source operand conversion is partially
19554
implemented. The ASL source operand types Integer, Buffer, and
19555
String are freely interchangeable for most ASL operators and are
19556
converted by the interpreter on the fly as required. Implicit
19557
Target operand conversion (where the result is converted to the
19558
target type before storing) is not yet implemented.
19559
19560
Support for 32-bit and 64-bit BCD integers is implemented.
19561
19562
Problem fixed where a field read on an aligned field could cause a
19563
read past the end of the field.
19564
19565
New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19566
does not return a value, but the caller expects one. (The ASL
19567
compiler flags this as a warning.)
19568
19569
ASL Compiler:
19570
19571
Version X2011:
19572
1. Static typechecking of all operands is implemented. This
19573
prevents the use of invalid objects (such as using a Package where
19574
an Integer is required) at compile time instead of at interpreter
19575
run-time.
19576
2. The ASL source line is printed with ALL errors and warnings.
19577
3. Bug fix for source EOF without final linefeed.
19578
4. Debug option is split into a parse trace and a namespace trace.
19579
5. Namespace output option (-n) includes initial values for
19580
integers and strings.
19581
6. Parse-only option added for quick syntax checking.
19582
7. Compiler checks for duplicate ACPI name declarations
19583
19584
Version X2012:
19585
1. Relaxed typechecking to allow interchangeability between
19586
strings, integers, and buffers. These types are now converted by
19587
the interpreter at runtime.
19588
2. Compiler reports time taken by each internal subsystem in the
19589
debug output file.
19590
19591
19592
------------------------------------------
19593
Summary of changes for this label: 12_14_00
19594
19595
ASL Compiler:
19596
19597
This is the first official release of the compiler. Since the
19598
compiler requires elements of the Core Subsystem, this label
19599
synchronizes everything.
19600
19601
------------------------------------------
19602
Summary of changes for this label: 12_08_00
19603
19604
19605
Fixed a problem where named references within the ASL definition
19606
of both OperationRegions and CreateXXXFields did not work
19607
properly. The symptom was an AE_AML_OPERAND_TYPE during
19608
initialization of the region/field. This is similar (but not
19609
related internally) to the problem that was fixed in the last
19610
label.
19611
19612
Implemented both 32-bit and 64-bit support for the BCD ASL
19613
functions ToBCD and FromBCD.
19614
19615
Updated all legal headers to include "2000" in the copyright
19616
years.
19617
19618
------------------------------------------
19619
Summary of changes for this label: 12_01_00
19620
19621
Fixed a problem where method invocations within the ASL definition
19622
of both OperationRegions and CreateXXXFields did not work
19623
properly. The symptom was an AE_AML_OPERAND_TYPE during
19624
initialization of the region/field:
19625
19626
nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19627
[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19628
(0x3005)
19629
19630
Fixed a problem where operators with more than one nested
19631
subexpression would fail. The symptoms were varied, by mostly
19632
AE_AML_OPERAND_TYPE errors. This was actually a rather serious
19633
problem that has gone unnoticed until now.
19634
19635
Subtract (Add (1,2), Multiply (3,4))
19636
19637
Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19638
previous build (The prefix part of a relative path was handled
19639
incorrectly).
19640
19641
Fixed a problem where Operation Region initialization failed if
19642
the operation region name was a "namepath" instead of a simple
19643
"nameseg". Symptom was an AE_NO_OPERAND error.
19644
19645
Fixed a problem where an assignment to a local variable via the
19646
indirect RefOf mechanism only worked for the first such
19647
assignment. Subsequent assignments were ignored.
19648
19649
------------------------------------------
19650
Summary of changes for this label: 11_15_00
19651
19652
ACPI 2.0 table support with backwards support for ACPI 1.0 and the
19653
0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
19654
the AML interpreter does NOT have support for the new 2.0 ASL
19655
grammar terms at this time.
19656
19657
All ACPI hardware access is via the GAS structures in the ACPI 2.0
19658
FADT.
19659
19660
All physical memory addresses across all platforms are now 64 bits
19661
wide. Logical address width remains dependent on the platform
19662
(i.e., "void *").
19663
19664
AcpiOsMapMemory interface changed to a 64-bit physical address.
19665
19666
The AML interpreter integer size is now 64 bits, as per the ACPI
19667
2.0 specification.
19668
19669
For backwards compatibility with ACPI 1.0, ACPI tables with a
19670
revision number less than 2 use 32-bit integers only.
19671
19672
Fixed a problem where the evaluation of OpRegion operands did not
19673
always resolve them to numbers properly.
19674
19675
------------------------------------------
19676
Summary of changes for this label: 10_20_00
19677
19678
Fix for CBN_._STA issue. This fix will allow correct access to
19679
CBN_ OpRegions when the _STA returns 0x8.
19680
19681
Support to convert ACPI constants (Ones, Zeros, One) to actual
19682
values before a package object is returned
19683
19684
Fix for method call as predicate to if/while construct causing
19685
incorrect if/while behavior
19686
19687
Fix for Else block package lengths sometimes calculated wrong (if
19688
block > 63 bytes)
19689
19690
Fix for Processor object length field, was always zero
19691
19692
Table load abort if FACP sanity check fails
19693
19694
Fix for problem with Scope(name) if name already exists
19695
19696
Warning emitted if a named object referenced cannot be found
19697
(resolved) during method execution.
19698
19699
19700
19701
19702
19703
------------------------------------------
19704
Summary of changes for this label: 9_29_00
19705
19706
New table initialization interfaces: AcpiInitializeSubsystem no
19707
longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19708
necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19709
>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19710
AcpiLoadTables
19711
19712
Note: These interface changes require changes to all existing OSDs
19713
19714
The PCI_Config default address space handler is always installed
19715
at the root namespace object.
19716
19717
-------------------------------------------
19718
Summary of changes for this label: 09_15_00
19719
19720
The new initialization architecture is implemented. New
19721
interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19722
AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19723
19724
(Namespace is automatically loaded when a table is loaded)
19725
19726
The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
19727
52 bytes to 32 bytes. There is usually one of these for every
19728
namespace object, so the memory savings is significant.
19729
19730
Implemented just-in-time evaluation of the CreateField operators.
19731
19732
Bug fixes for IA-64 support have been integrated.
19733
19734
Additional code review comments have been implemented
19735
19736
The so-called "third pass parse" has been replaced by a final walk
19737
through the namespace to initialize all operation regions (address
19738
spaces) and fields that have not yet been initialized during the
19739
execution of the various _INI and REG methods.
19740
19741
New file - namespace/nsinit.c
19742
19743
-------------------------------------------
19744
Summary of changes for this label: 09_01_00
19745
19746
Namespace manager data structures have been reworked to change the
19747
primary object from a table to a single object. This has
19748
resulted in dynamic memory savings of 3X within the namespace and
19749
2X overall in the ACPI CA subsystem.
19750
19751
Fixed problem where the call to AcpiEvFindPciRootBuses was
19752
inadvertently left commented out.
19753
19754
Reduced the warning count when generating the source with the GCC
19755
compiler.
19756
19757
Revision numbers added to each module header showing the
19758
SourceSafe version of the file. Please refer to this version
19759
number when giving us feedback or comments on individual modules.
19760
19761
The main object types within the subsystem have been renamed to
19762
clarify their purpose:
19763
19764
ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19765
ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19766
ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19767
19768
NOTE: no changes to the initialization sequence are included in
19769
this label.
19770
19771
-------------------------------------------
19772
Summary of changes for this label: 08_23_00
19773
19774
Fixed problem where TerminateControlMethod was being called
19775
multiple times per method
19776
19777
Fixed debugger problem where single stepping caused a semaphore to
19778
be oversignalled
19779
19780
Improved performance through additional parse object caching -
19781
added ACPI_EXTENDED_OP type
19782
19783
-------------------------------------------
19784
Summary of changes for this label: 08_10_00
19785
19786
Parser/Interpreter integration: Eliminated the creation of
19787
complete parse trees for ACPI tables and control methods.
19788
Instead, parse subtrees are created and then deleted as soon as
19789
they are processed (Either entered into the namespace or executed
19790
by the interpreter). This reduces the use of dynamic kernel
19791
memory significantly. (about 10X)
19792
19793
Exception codes broken into classes and renumbered. Be sure to
19794
recompile all code that includes acexcep.h. Hopefully we won't
19795
have to renumber the codes again now that they are split into
19796
classes (environment, programmer, AML code, ACPI table, and
19797
internal).
19798
19799
Fixed some additional alignment issues in the Resource Manager
19800
subcomponent
19801
19802
Implemented semaphore tracking in the AcpiExec utility, and fixed
19803
several places where mutexes/semaphores were being unlocked
19804
without a corresponding lock operation. There are no known
19805
semaphore or mutex "leaks" at this time.
19806
19807
Fixed the case where an ASL Return operator is used to return an
19808
unnamed package.
19809
19810
-------------------------------------------
19811
Summary of changes for this label: 07_28_00
19812
19813
Fixed a problem with the way addresses were calculated in
19814
AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
19815
manifested itself when a Field was created with WordAccess or
19816
DwordAccess, but the field unit defined within the Field was less
19817
19818
than a Word or Dword.
19819
19820
Fixed a problem in AmlDumpOperands() module's loop to pull
19821
operands off of the operand stack to display information. The
19822
problem manifested itself as a TLB error on 64-bit systems when
19823
accessing an operand stack with two or more operands.
19824
19825
Fixed a problem with the PCI configuration space handlers where
19826
context was getting confused between accesses. This required a
19827
change to the generic address space handler and address space
19828
setup definitions. Handlers now get both a global handler context
19829
(this is the one passed in by the user when executing
19830
AcpiInstallAddressSpaceHandler() and a specific region context
19831
that is unique to each region (For example, the _ADR, _SEG and
19832
_BBN values associated with a specific region). The generic
19833
function definitions have changed to the following:
19834
19835
typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19836
UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19837
*HandlerContext, // This used to be void *Context void
19838
*RegionContext); // This is an additional parameter
19839
19840
typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19841
RegionHandle, UINT32 Function, void *HandlerContext, void
19842
**RegionContext); // This used to be **ReturnContext
19843
19844
-------------------------------------------
19845
Summary of changes for this label: 07_21_00
19846
19847
Major file consolidation and rename. All files within the
19848
interpreter have been renamed as well as most header files. This
19849
was done to prevent collisions with existing files in the host
19850
OSs -- filenames such as "config.h" and "global.h" seem to be
19851
quite common. The VC project files have been updated. All
19852
makefiles will require modification.
19853
19854
The parser/interpreter integration continues in Phase 5 with the
19855
implementation of a complete 2-pass parse (the AML is parsed
19856
twice) for each table; This avoids the construction of a huge
19857
parse tree and therefore reduces the amount of dynamic memory
19858
required by the subsystem. Greater use of the parse object cache
19859
means that performance is unaffected.
19860
19861
Many comments from the two code reviews have been rolled in.
19862
19863
The 64-bit alignment support is complete.
19864
19865
-------------------------------------------
19866
Summary of changes for this label: 06_30_00
19867
19868
With a nod and a tip of the hat to the technology of yesteryear,
19869
we've added support in the source code for 80 column output
19870
devices. The code is now mostly constrained to 80 columns or
19871
less to support environments and editors that 1) cannot display
19872
or print more than 80 characters on a single line, and 2) cannot
19873
disable line wrapping.
19874
19875
A major restructuring of the namespace data structure has been
19876
completed. The result is 1) cleaner and more
19877
understandable/maintainable code, and 2) a significant reduction
19878
in the dynamic memory requirement for each named ACPI object
19879
(almost half).
19880
19881
-------------------------------------------
19882
Summary of changes for this label: 06_23_00
19883
19884
Linux support has been added. In order to obtain approval to get
19885
the ACPI CA subsystem into the Linux kernel, we've had to make
19886
quite a few changes to the base subsystem that will affect all
19887
users (all the changes are generic and OS- independent). The
19888
effects of these global changes have been somewhat far reaching.
19889
Files have been merged and/or renamed and interfaces have been
19890
renamed. The major changes are described below.
19891
19892
Osd* interfaces renamed to AcpiOs* to eliminate namespace
19893
pollution/confusion within our target kernels. All OSD
19894
interfaces must be modified to match the new naming convention.
19895
19896
Files merged across the subsystem. A number of the smaller source
19897
and header files have been merged to reduce the file count and
19898
increase the density of the existing files. There are too many
19899
to list here. In general, makefiles that call out individual
19900
files will require rebuilding.
19901
19902
Interpreter files renamed. All interpreter files now have the
19903
prefix am* instead of ie* and is*.
19904
19905
Header files renamed: The acapi.h file is now acpixf.h. The
19906
acpiosd.h file is now acpiosxf.h. We are removing references to
19907
the acronym "API" since it is somewhat windowsy. The new name is
19908
"external interface" or xface or xf in the filenames.j
19909
19910
19911
All manifest constants have been forced to upper case (some were
19912
mixed case.) Also, the string "ACPI_" has been prepended to many
19913
(not all) of the constants, typedefs, and structs.
19914
19915
The globals "DebugLevel" and "DebugLayer" have been renamed
19916
"AcpiDbgLevel" and "AcpiDbgLayer" respectively.
19917
19918
All other globals within the subsystem are now prefixed with
19919
"AcpiGbl_" Internal procedures within the subsystem are now
19920
prefixed with "Acpi" (with only a few exceptions). The original
19921
two-letter abbreviation for the subcomponent remains after "Acpi"
19922
- for example, CmCallocate became AcpiCmCallocate.
19923
19924
Added a source code translation/conversion utility. Used to
19925
generate the Linux source code, it can be modified to generate
19926
other types of source as well. Can also be used to cleanup
19927
existing source by removing extraneous spaces and blank lines.
19928
Found in tools/acpisrc/*
19929
19930
OsdUnMapMemory was renamed to OsdUnmapMemory and then
19931
AcpiOsUnmapMemory. (UnMap became Unmap).
19932
19933
A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19934
When set to one, this indicates that the caller wants to use the
19935
19936
semaphore as a mutex, not a counting semaphore. ACPI CA uses
19937
both types. However, implementers of this call may want to use
19938
different OS primitives depending on the type of semaphore
19939
requested. For example, some operating systems provide separate
19940
19941
"mutex" and "semaphore" interfaces - where the mutex interface is
19942
much faster because it doesn't have all the overhead of a full
19943
semaphore implementation.
19944
19945
Fixed a deadlock problem where a method that accesses the PCI
19946
address space can block forever if it is the first access to the
19947
space.
19948
19949
-------------------------------------------
19950
Summary of changes for this label: 06_02_00
19951
19952
Support for environments that cannot handle unaligned data
19953
accesses (e.g. firmware and OS environments devoid of alignment
19954
handler technology namely SAL/EFI and the IA-64 Linux kernel) has
19955
been added (via configurable macros) in these three areas: -
19956
Transfer of data from the raw AML byte stream is done via byte
19957
moves instead of word/dword/qword moves. - External objects are
19958
aligned within the user buffer, including package elements (sub-
19959
objects). - Conversion of name strings to UINT32 Acpi Names is now
19960
done byte-wise.
19961
19962
The Store operator was modified to mimic Microsoft's
19963
implementation when storing to a Buffer Field.
19964
19965
Added a check of the BM_STS bit before entering C3.
19966
19967
The methods subdirectory has been obsoleted and removed. A new
19968
file, cmeval.c subsumes the functionality.
19969
19970
A 16-bit (DOS) version of AcpiExec has been developed. The
19971
makefile is under the acpiexec directory.
19972
19973