forked from ahs3/acpica-tools
/
changes.txt
16095 lines (12539 loc) · 609 KB
/
changes.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
----------------------------------------
24 November 2015. Summary of changes for version 20151124:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Fixed a possible regression for a previous update to FADT handling. The
FADT no longer has a fixed table ID, causing some issues with code that
was hardwired to a specific ID. Lv Zheng.
Fixed a problem where the method auto-serialization could interfere with
the current SyncLevel. This change makes the auto-serialization support
transparent to the SyncLevel support and management.
Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
interface is intended for early access to the namespace during the
initial namespace device discovery walk. The _SUB method has been seen to
access operation regions in some cases, causing errors because the
operation regions are not fully initialized.
AML Debugger: Fixed some issues with the terminate/quit/exit commands
that can cause faults. Lv Zheng.
AML Debugger: Add thread ID support so that single-step mode only applies
to the AML Debugger thread. This prevents runtime errors within some
kernels. Lv Zheng.
Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
methods that are invoked by this interface are optional, removed warnings
emitted for the case where one or more of these methods do not exist.
ACPICA BZ 1208, original change by Prarit Bhargava.
Made a major pass through the entire ACPICA source code base to
standardize formatting that has diverged a bit over time. There are no
functional changes, but this will of course cause quite a few code
differences from the previous ACPICA release.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
Previous Release:
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2) iASL Compiler/Disassembler and Tools:
iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
definition blocks within a single ASL file and the resulting AML file.
Support for this type of file was also added to the various tools that
use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
example code below shows two definition blocks within the same file:
DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
0x12345678)
{
}
DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
{
}
iASL: Enhanced typechecking for the Name() operator. All expressions for
the value of the named object must be reduced/folded to a single constant
at compile time, as per the ACPI specification (the AML definition of
Name()).
iASL: Fixed some code indentation issues for the -ic and -ia options (C
and assembly headers). Now all emitted code correctly begins in column 1.
iASL: Added an error message for an attempt to open a Scope() on an
object defined in an SSDT. The DSDT is always loaded into the namespace
first, so any attempt to open a Scope on an SSDT object will fail at
runtime.
----------------------------------------
30 September 2015. Summary of changes for version 20150930:
1) ACPICA kernel-resident subsystem:
Debugger: Implemented several changes and bug fixes to assist support for
the in-kernel version of the AML debugger. Lv Zheng.
- Fix the "predefined" command for in-kernel debugger.
- Do not enter debug command loop for the help and version commands.
- Disallow "execute" command during execution/single-step of a method.
Interpreter: Updated runtime typechecking for all operators that have
target operands. The operand is resolved and validated that it is legal.
For example, the target cannot be a non-data object such as a Device,
Mutex, ThermalZone, etc., as per the ACPI specification.
Debugger: Fixed the double-mutex user I/O handshake to work when local
deadlock detection is enabled.
Debugger: limited display of method locals and arguments (LocalX and
ArgX) to only those that have actually been initialized. This prevents
lines of extraneous output.
Updated the definition of the NFIT table to correct the bit polarity of
one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
Previous Release:
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Improved the compile-time typechecking for operands of many of the
ASL operators:
-- Added an option to disable compiler operand/operator typechecking (-
ot).
-- For the following operators, the TermArg operands are now validated
when possible to be Integer data objects: BankField, OperationRegion,
DataTableRegion, Buffer, and Package.
-- Store (Source, Target): Both the source and target operands are
resolved and checked that the operands are both legal. For example,
neither operand can be a non-data object such as a Device, Mutex,
ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
operator can be used to store an object to any type of target object.
-- Store (Source, Target): If the source is a Package object, the target
must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
is a Package, the source must also be a Package.
-- Store (Source, Target): A warning is issued if the source and target
resolve to the identical named object.
-- Store (Source, <method invocation>): An error is generated for the
target method invocation, as this construct is not supported by the AML
interpreter.
-- For all ASL math and logic operators, the target operand must be a
data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
includes the function return value also.
-- External declarations are also included in the typechecking where
possible. External objects defined using the UnknownObj keyword cannot be
typechecked, however.
iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
operator:
- Legacy code: Index(PKG1, 3)
- New ASL+ code: PKG1[3]
This completes the ACPI 6.0 ASL+ support as it was the only operator not
supported.
iASL: Fixed the file suffix for the preprocessor output file (.i). Two
spaces were inadvertently appended to the filename, causing file access
and deletion problems on some systems.
ASL Test Suite (ASLTS): Updated the master makefile to generate all
possible compiler output files when building the test suite -- thus
exercising these features of the compiler. These files are automatically
deleted when the test suite exits.
----------------------------------------
18 August 2015. Summary of changes for version 20150818:
1) ACPICA kernel-resident subsystem:
Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
Zheng. ACPICA BZ 1186.
Completed development to ensure that the ACPICA Disassembler and Debugger
are fully standalone components of ACPICA. Removed cross-component
dependences. Lv Zheng.
The max-number-of-AML-loops is now runtime configurable (previously was
compile-time only). This is essentially a loop timeout to force-abort
infinite AML loops. ACPCIA BZ 1192.
Debugger: Cleanup output to dump ACPI names and namepaths without any
trailing underscores. Lv Zheng. ACPICA BZ 1135.
Removed unnecessary conditional compilations across the Debugger and
Disassembler components where entire modules could be left uncompiled.
The aapits test is deprecated and has been removed from the ACPICA git
tree. The test has never been completed and has not been maintained, thus
becoming rather useless. ACPICA BZ 1015, 794.
A batch of small changes to close bugzilla and other reports:
- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
Moore.
- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
ACPICA BZ 1184.
- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
operators.
- Debugger: Split debugger initialization/termination interfaces. Lv
Zheng.
- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
identification.
- AcpiExec: Add debug message during _REG method phase during table
load/init.
- AcpiNames: Fix a regression where some output was missing and no longer
emitted.
- Debugger: General cleanup and simplification. Lv Zheng.
- Disassembler: Cleanup use of several global option variables. Lv Zheng.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
Previous Release:
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2) iASL Compiler/Disassembler and Tools:
AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
were not handled properly and caused load errors. Now, properly invoke
and use the ACPICA auto-reallocate mechanism for ACPI table data
structures. ACPICA BZ 1188
AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
BZ 1190.
AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
executed during initialization. ACPICA BZ 1187, 1189.
iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
that corresponds to each disassembled ASL statement, to simplify
debugging. ACPICA BZ 1191.
Debugger: Add option to the "objects" command to display a summary of the
current namespace objects (Object type and count). This is displayed if
the command is entered with no arguments.
AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
----------------------------------------
17 July 2015. Summary of changes for version 20150717:
1) ACPICA kernel-resident subsystem:
Improved the partitioning between the Debugger and Disassembler
components. This allows the Debugger to be used standalone within kernel
code without the Disassembler (which is used for single stepping also).
This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
Debugger: Implemented a new command to trace the execution of control
methods (Trace). This is especially useful for the in-kernel version of
the debugger when file I/O may not be available for method trace output.
See the ACPICA reference for more information. Lv Zheng.
Moved all C library prototypes (used for the local versions of these
functions when requested) to a new header, acclib.h
Cleaned up the use of non-ANSI C library functions. These functions are
implemented locally in ACPICA. Moved all such functions to a common
source file, utnonansi.c
Debugger: Fixed a problem with the "!!" command (get last command
executed) where the debugger could enter an infinite loop and eventually
crash.
Removed the use of local macros that were used for some of the standard C
library functions to automatically cast input parameters. This mostly
affected the is* functions where the input parameter is defined to be an
int. This required a few modifications to the main ACPICA source code to
provide casting for these functions and eliminate possible compiler
warnings for these parameters.
Across the source code, added additional status/error checking to resolve
issues discovered by static source code analysis tools such as Coverity.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
Previous Release:
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a regression where the device map file feature no longer
worked properly when used in conjunction with the disassembler. It only
worked properly with the compiler itself.
iASL: Implemented a new warning for method LocalX variables that are set
but never used (similar to a C compiler such as gcc). This also applies
to ArgX variables that are not defined by the parent method, and are
instead (legally) used as local variables.
iASL/Preprocessor: Finished the pass-through of line numbers from the
preprocessor to the compiler. This ensures that compiler errors/warnings
have the correct original line numbers and filenames, regardless of any
#include files.
iASL/Preprocessor: Fixed a couple of issues with comment handling and the
pass-through of comments to the preprocessor output file (which becomes
the compiler input file). Also fixed a problem with // comments that
appear after a math expression.
iASL: Added support for the TCPA server table to the table compiler and
template generator. (The client table was already previously supported)
iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
identify the iASL compiler.
Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
multiple times. The new names are ACPI_SIGN_NEGATIVE and
ACPI_SIGN_POSITIVE.
AcpiHelp: Update to expand help messages for the iASL preprocessor
directives.
----------------------------------------
19 June 2015. Summary of changes for version 20150619:
Two regressions in version 20150616 have been addressed:
Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
etc.) This update changes ACPICA to only use the standard headers for
functions, or the prototypes for the local versions of the C library
functions. Across the source code, this required some additional casts
for some Clib invocations for portability. Moved all local prototypes to
a new file, acclib.h
Fixes several problems with recent changes to the handling of the FACS
table that could cause some systems not to boot.
----------------------------------------
16 June 2015. Summary of changes for version 20150616:
1) ACPICA kernel-resident subsystem:
Across the entire ACPICA source code base, the various macros for the C
library functions (such as ACPI_STRLEN, etc.) have been removed and
replaced by the standard C library names (strlen, etc.) The original
purpose for these macros is no longer applicable. This simplification
reduces the number of macros used in the ACPICA source code
significantly, improving readability and maintainability.
Implemented support for a new ACPI table, the OSDT. This table, the
"override" SDT, can be loaded directly by the host OS at boot time. It
enables the replacement of existing namespace objects that were installed
via the DSDT and/or SSDTs. The primary purpose for this is to replace
buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
Moore.
Added support for systems with (improperly) two FACS tables -- a "32-bit"
table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
X field). This change will support both automatically. There continues to
be systems found with this issue. This support requires a change to the
AcpiSetFirmwareWakingVector interface. Also, a public global variable has
been added to allow the host to select which FACS is desired
(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
details Lv Zheng.
Added a new feature to allow for systems that do not contain an FACS.
Although this is already supported on hardware-reduced platforms, the
feature has been extended for all platforms. The reasoning is that we do
not want to abort the entire ACPICA initialization just because the
system is seriously buggy and has no FACS.
Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
not correctly transcribed from the ACPI specification in ACPICA version
20150515.
Implemented support for the _CLS object in the AcpiGetObjectInfo external
interface.
Updated the definitions of the TCPA and TPM2 ACPI tables to the more
recent TCG ACPI Specification, December 14, 2014. Table disassembler and
compiler also updated. Note: The TCPA "server" table is not supported by
the disassembler/table-compiler at this time.
ACPI 6.0: Added definitions for the new GIC version field in the MADT.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
Previous Release:
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
2) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a problem with the new symbolic operator disassembler
where incorrect ASL code could be emitted in some cases for the "non-
commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
ShiftRight. The actual problem cases seem to be rather unusual in common
ASL code, however. David Box.
Modified the linux version of acpidump to obtain ACPI tables from not
just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
Zheng.
iASL: Fixed a problem where the user preprocessor output file (.i)
contained extra data that was not expected. The compiler was using this
file as a temporary file and passed through #line directives in order to
keep compiler error messages in sync with the input file and line number
across multiple include files. The (.i) is no longer a temporary file as
the compiler uses a new, different file for the original purpose.
iASL: Fixed a problem where comments within the original ASL source code
file were not passed through to the preprocessor output file, nor any
listing files.
iASL: Fixed some issues for the handling of the "#include" preprocessor
directive and the similar (but not the same) "Include" ASL operator.
iASL: Add support for the new OSDT in both the disassembler and compiler.
iASL: Fixed a problem with the constant folding support where a Buffer
object could be incorrectly generated (incorrectly formed) during a
conversion to a Store() operator.
AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
description text for the _REV predefined name. _REV now permanently
returns 2, as per the ACPI 6.0 specification.
Debugger: Enhanced the output of the Debug ASL object for references
produced by the Index operator. For Buffers and strings, only output the
actual byte pointed to by the index. For packages, only print the single
package element decoded by the index. Previously, the entire
buffer/string/package was emitted.
iASL/Table-compiler: Fixed a regression where the "generic" data types
were no longer recognized, causing errors.
----------------------------------------
15 May 2015. Summary of changes for version 20150515:
This release implements most of ACPI 6.0 as described below.
1) ACPICA kernel-resident subsystem:
Implemented runtime argument checking and return value checking for all
new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
Previous Release:
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
2) iASL Compiler/Disassembler and Tools:
iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
names (argument count validation and return value typechecking.)
iASL disassembler and table compiler: implemented support for all new
ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
tables: FADT, MADT.
iASL preprocessor: Added a new directive to enable inclusion of binary
blobs into ASL code. The new directive is #includebuffer. It takes a
binary file as input and emits a named ascii buffer object into the ASL
code.
AcpiHelp: Added support for all new ACPI 6.0 predefined names.
AcpiHelp: Added a new option, -d, to display all iASL preprocessor
directives.
AcpiHelp: Added a new option, -t, to display all known/supported ACPI
tables.
----------------------------------------
10 April 2015. Summary of changes for version 20150410:
Reverted a change introduced in version 20150408 that caused
a regression in the disassembler where incorrect operator
symbols could be emitted.
----------------------------------------
08 April 2015. Summary of changes for version 20150408:
1) ACPICA kernel-resident subsystem:
Permanently set the return value for the _REV predefined name. It now
returns 2 (was 5). This matches other ACPI implementations. _REV will be
deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
for ACPI 2.0 and later. It should never be used to differentiate or
identify operating systems.
Added the "Windows 2015" string to the _OSI support. ACPICA will now
return TRUE to a query with this string.
Fixed several issues with the local version of the printf function.
Added the C99 compiler option (-std=c99) to the Unix makefiles.
Current Release:
Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
Previous Release:
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented an enhancement to the constant folding feature to
transform the parse tree to a simple Store operation whenever possible:
Add (2, 3, X) ==> is converted to: Store (5, X)
X = 2 + 3 ==> is converted to: Store (5, X)
Updated support for the SLIC table (Software Licensing Description Table)
in both the Data Table compiler and the disassembler. The SLIC table
support now conforms to "Microsoft Software Licensing Tables (SLIC and
MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
following the ACPI header is now defined to be "Proprietary Data", and as
such, can only be entered or displayed as a hex data block.
Implemented full support for the MSDM table as described in the document
above. Note: The format of MSDM is similar to SLIC. Any MSDM data
following the ACPI header is defined to be "Proprietary Data", and can
only be entered or displayed as a hex data block.
Implemented the -Pn option for the iASL Table Compiler (was only
implemented for the ASL compiler). This option disables the iASL
preprocessor.
Disassembler: For disassembly of Data Tables, added a comment field
around the Ascii equivalent data that is emitted as part of the "Raw
Table Data" block. This prevents the iASL Preprocessor from possible
confusion if/when the table is compiled.
Disassembler: Added an option (-df) to force the disassembler to assume
that the table being disassembled contains valid AML. This feature is
useful for disassembling AML files that contain ACPI signatures other
than DSDT or SSDT (such as OEMx or other signatures).
Changes for the EFI version of the tools:
1) Fixed a build error/issue
2) Fixed a cast warning
iASL: Fixed a path issue with the __FILE__ operator by making the
directory prefix optional within the internal SplitInputFilename
function.
Debugger: Removed some unused global variables.
Tests: Updated the makefile for proper generation of the AAPITS suite.
----------------------------------------
04 February 2015. Summary of changes for version 20150204:
ACPICA kernel-resident subsystem:
Updated all ACPICA copyrights and signons to 2014. Added the 2014
copyright to all module headers and signons, including the standard Linux
header. This affects virtually every file in the ACPICA core subsystem,
iASL compiler, all ACPICA utilities, and the test suites.
Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
A raw gpe handling mechanism was created to allow better handling of GPE
storms that aren't easily managed by the normal handler. The raw handler
allows disabling/renabling of the the GPE so that interrupt storms can be
avoided in cases where events cannot be timely serviced. In this
scenario, handlers should use the AcpiSetGpe() API to disable/enable the
GPE. This API will leave the reference counts undisturbed, thereby
preventing unintentional clearing of the GPE when the intent in only to
temporarily disable it. Raw handlers allow enabling and disabling of a
GPE by removing GPE register locking. As such, raw handlers much provide
their own locks while using GPE API's to protect access to GPE data
structures.
Lv Zheng
Events: Always modify GPE registers under the GPE lock.
Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
values. Reported as bug by joe.liu@apple.com.
Unix makefiles: Separate option to disable optimizations and
_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
NOOPT disable option and creates a separate flag (NOFORTIFY) for this
purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
errors when building ACPICA. This allows disabling the option without
also having to disable optimazations.
David Box
Current Release:
Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
----------------------------------------
07 November 2014. Summary of changes for version 20141107:
This release is available at https://acpica.org/downloads
This release introduces and implements language extensions to ASL that
provide support for symbolic ("C-style") operators and expressions. These
language extensions are known collectively as ASL+.
1) iASL Compiler/Disassembler and Tools:
Disassembler: Fixed a problem with disassembly of the UartSerialBus
macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
Box.
Disassembler: Fixed the Unicode macro support to add escape sequences.
All non-printable ASCII values are emitted as escape sequences, as well
as the standard escapes for quote and backslash. Ensures that the
disassembled macro can be correctly recompiled.
iASL: Added Printf/Fprintf macros for formatted output. These macros are
translated to existing AML Concatenate and Store operations. Printf
writes to the ASL Debug object. Fprintf allows the specification of an
ASL name as the target. Only a single format specifier is required, %o,
since the AML interpreter dynamically converts objects to the required
type. David E. Box.
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate
(Concatenate (Concatenate (Concatenate ("", Arg0),
": Unexpected value for "), Arg1), ", "), Arg2),
" at line "), Arg3), Debug)
(new) Printf ("%o: Unexpected value for %o, %o at line %o",
Arg0, Arg1, Arg2, Arg3)
(old) Store (Concatenate (Concatenate (Concatenate (Concatenate
("", Arg1), ": "), Arg0), " Successful"), STR1)
(new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
ASL parse tree before the AML code is generated. This allows blocks of
ASL code to be removed in order to help locate and identify problem
devices and/or code. David E. Box.
AcpiExec: Added support (-fi) for an optional namespace object
initialization file. This file specifies initial values for namespace
objects as necessary for debugging and testing different ASL code paths
that may be taken as a result of BIOS options.
2) Overview of symbolic operator support for ASL (ASL+)
-------------------------------------------------------
As an extension to the ASL language, iASL implements support for symbolic
(C-style) operators for math and logical expressions. This can greatly
simplify ASL code as well as improve both readability and
maintainability. These language extensions can exist concurrently with
all legacy ASL code and expressions.
The symbolic extensions are 100% compatible with existing AML
interpreters, since no new AML opcodes are created. To implement the
extensions, the iASL compiler transforms the symbolic expressions into
the legacy ASL/AML equivalents at compile time.
Full symbolic expressions are supported, along with the standard C
precedence and associativity rules.
Full disassembler support for the symbolic expressions is provided, and
creates an automatic migration path for existing ASL code to ASL+ code
via the disassembly process. By default, the disassembler now emits ASL+
code with symbolic expressions. An option (-dl) is provided to force the
disassembler to emit legacy ASL code if desired.
Below is the complete list of the currently supported symbolic operators
with examples. See the iASL User Guide for additional information.
ASL+ Syntax Legacy ASL Equivalent
----------- ---------------------
// Math operators
Z = X + Y Add (X, Y, Z)
Z = X - Y Subtract (X, Y, Z)
Z = X * Y Multiply (X, Y, Z)
Z = X / Y Divide (X, Y, , Z)
Z = X % Y Mod (X, Y, Z)
Z = X << Y ShiftLeft (X, Y, Z)
Z = X >> Y ShiftRight (X, Y, Z)
Z = X & Y And (X, Y, Z)
Z = X | Y Or (X, Y, Z)
Z = X ^ Y Xor (X, Y, Z)
Z = ~X Not (X, Z)
X++ Increment (X)
X-- Decrement (X)
// Logical operators
(X == Y) LEqual (X, Y)
(X != Y) LNotEqual (X, Y)
(X < Y) LLess (X, Y)
(X > Y) LGreater (X, Y)
(X <= Y) LLessEqual (X, Y)
(X >= Y) LGreaterEqual (X, Y)
(X && Y) LAnd (X, Y)
(X || Y) LOr (X, Y)
(!X) LNot (X)
// Assignment and compound assignment operations
X = Y Store (Y, X)
X += Y Add (X, Y, X)
X -= Y Subtract (X, Y, X)
X *= Y Multiply (X, Y, X)
X /= Y Divide (X, Y, , X)
X %= Y Mod (X, Y, X)
X <<= Y ShiftLeft (X, Y, X)
X >>= Y ShiftRight (X, Y, X)
X &= Y And (X, Y, X)
X |= Y Or (X, Y, X)
X ^= Y Xor (X, Y, X)
3) ASL+ Examples:
-----------------
Legacy ASL:
If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
0x03FB),
0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
{
And (MEMB, 0xFFFFFFF0, SRMB)
Store (MEMB, Local2)
Store (PDBM, Local1)
And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
Store (SRMB, MEMB)
Or (PDBM, 0x02, PDBM)
}
ASL+ version:
If (((R510 & 0x03FB) == 0x02E0) ||
((R520 & 0x03FB) == 0x02E0) ||
((R530 & 0x03FB) == 0x02E0) ||
((R540 & 0x03FB) == 0x02E0))
{
SRMB = (MEMB & 0xFFFFFFF0)
Local2 = MEMB
Local1 = PDBM
PDBM &= 0xFFFFFFFFFFFFFFF9
MEMB = SRMB
PDBM |= 0x02
}
Legacy ASL:
Store (0x1234, Local1)
Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
Store (Index (PKG1, 0x03), Local6)
Store (Add (Local3, Local2), Debug)
Add (Local1, 0x0F, Local2)
Add (Local1, Multiply (Local2, Local3), Local2)
Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
ASL+ version:
Local1 = 0x1234
Local3 = (((Local1 + TEST) + 0x20) * Local2)
Local3 = (Local2 * ((Local1 + TEST) + 0x20))
Local3 = (Local1 + (TEST + (0x20 * Local2)))
Local6 = Index (PKG1, 0x03)
Debug = (Local3 + Local2)
Local2 = (Local1 + 0x0F)
Local2 = (Local1 + (Local2 * Local3))
Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
----------------------------------------
26 September 2014. Summary of changes for version 20140926:
1) ACPICA kernel-resident subsystem:
Updated the GPIO operation region handler interface (GeneralPurposeIo).
In order to support GPIO Connection objects with multiple pins, along
with the related Field objects, the following changes to the interface
have been made: The Address is now defined to be the offset in bits of
the field unit from the previous invocation of a Connection. It can be
viewed as a "Pin Number Index" into the connection resource descriptor.
The BitWidth is the exact bit width of the field. It is usually one bit,
but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
additional information and examples.
GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
corresponding _Lxx/_Exx methods are disabled (they may have been enabled
by the firmware), so that they cannot fire until they are enabled via
AcpiUpdateAllGpes. Rafael J. Wysocki.
Added a new return flag for the Event/GPE status interfaces --
AcpiGetEventStatus and AcpiGetGpeStatus. The new
ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
GPE currently has a handler associated with it, and can thus actually
affect the system. Lv Zheng.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
Previous Release:
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2) iASL Compiler/Disassembler and Tools:
iASL: Fixed a memory allocation/free regression introduced in 20140828
that could cause the compiler to crash. This was introduced inadvertently
during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
1113.
iASL: Removed two error messages that have been found to create false
positives, until they can be fixed and fully validated (ACPICA BZ 1112):
1) Illegal forward reference within a method
2) Illegal reference across two methods
iASL: Implemented a new option (-lm) to create a hardware mapping file
that summarizes all GPIO, I2C, SPI, and UART connections. This option
works for both the compiler and disassembler. See the iASL compiler user
guide for additional information and examples (section 6.4.6).
AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
version 2. This corrects the AE_BAD_HEADER exception seen on systems with
a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
unless STDIN is actually a terminal. Assists with batch-mode processing.
ACPICA BZ 1114.
Disassembler/AcpiHelp: Added another large group of recognized _HID
values.
----------------------------------------
28 August 2014. Summary of changes for version 20140828:
1) ACPICA kernel-resident subsystem:
Fixed a problem related to the internal use of the Timer() operator where
a 64-bit divide could cause an attempted link to a double-precision math
library. This divide is not actually necessary, so the code was
restructured to eliminate it. Lv Zheng.
ACPI 5.1: Added support for the runtime validation of the _DSD package
(similar to the iASL support).
ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
Example Code and Data Size: These are the sizes for the OS-independent
acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
debug version of the code includes the debug output trace mechanism and
has a much larger code and data size.
Current Release:
Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
Previous Release:
Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
2) iASL Compiler/Disassembler and Tools:
AcpiExec: Fixed a problem on unix systems where the original terminal
state was not always properly restored upon exit. Seen when using the -v
option. ACPICA BZ 1104.
iASL: Fixed a problem with the validation of the ranges/length within the
Memory24 resource descriptor. There was a boundary condition when the
range was equal to the (length -1) caused by the fact that these values
are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
Disassembler: Fixed a problem with the GpioInt descriptor interrupt
polarity
flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
is
now supported properly.
ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
in the disassembler, data table compiler, and table template generator.
iASL: Added a requirement for Device() objects that one of either a _HID
or _ADR must exist within the scope of a Device, as per the ACPI
specification. Remove a similar requirement that was incorrectly in place
for the _DSD object.
iASL: Added error detection for illegal named references within control
methods that would cause runtime failures. Now trapped as errors are: 1)
References to objects within a non-parent control method. 2) Forward
references (within a method) -- for control methods, AML interpreters use
a one-pass parse of control methods. ACPICA BZ 1008.
iASL: Added error checking for dependencies related to the _PSx power
methods. ACPICA BZ 1029.
1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
_PS3.
2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
scope.
iASL and table compiler: Cleanup miscellaneous memory leaks by fully
deploying the existing object and string caches and adding new caches for
the table compiler.
iASL: Split the huge parser source file into multiple subfiles to improve
manageability. Generation now requires the M4 macro preprocessor, which
is part of the Bison distribution on both unix and windows platforms.
AcpiSrc: Fixed and removed all extraneous warnings generated during
entire ACPICA source code scan and/or conversion.
----------------------------------------
24 July 2014. Summary of changes for version 20140724:
The ACPI 5.1 specification has been released and is available at:
http://uefi.org/specs/access
0) ACPI 5.1 support in ACPICA:
ACPI 5.1 is fully supported in ACPICA as of this release.
New predefined names. Support includes iASL and runtime ACPICA
validation.
_CCA (Cache Coherency Attribute).
_DSD (Device-Specific Data). David Box.
Modifications to existing ACPI tables. Support includes headers, iASL
Data Table compiler, disassembler, and the template generator.
FADT - New fields and flags. Graeme Gregory.
GTDT - One new subtable and new fields. Tomasz Nowicki.
MADT - Two new subtables. Tomasz Nowicki.
PCCT - One new subtable.
Miscellaneous.
New notification type for System Resource Affinity change events.
1) ACPICA kernel-resident subsystem:
Fixed a regression introduced in 20140627 where a fault can happen during
the deletion of Alias AML namespace objects. The problem affected both
the core ACPICA and the ACPICA tools including iASL and AcpiExec.
Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
simple mechanism to enable wake GPEs that have no associated handler or
control method. Rafael Wysocki.
Updated the AcpiEnableGpe interface to disallow the enable if there is no
handler or control method associated with the particular GPE. This will
help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
Updated GPE handling and dispatch by disabling the GPE before clearing
the status bit for edge-triggered GPEs. Lv Zheng.