-
Notifications
You must be signed in to change notification settings - Fork 2
/
changes.txt
19201 lines (14865 loc) · 736 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
----------------------------------------
25 September 2020. Summary of changes for version 20200925:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Preserve memory opregion mappings. The ACPICA's strategy with respect to
the handling of memory mappings associated with memory operation regions
is to avoid mapping the entire region at once which may be problematic at
least in principle (for example, it may lead to conflicts with
overlapping mappings having different attributes created by drivers). It
may also be wasteful, because memory opregions on some systems take up
vastchunks of address space while the fields in those regions actually
accessed by AML are sparsely distributed.
For this reason, a one-page "window" is mapped for a given opregion on
the first memory access through it and if that "window" does not cover an
address range accessed through that opregion subsequently, it is unmapped
and a new "window" is mapped to replace it. Next, if the new "window" is
not sufficient to access memory through the opregion in question in the
future, it will be replaced with yet another "window" and so on. That
may lead to a suboptimal sequence of memory mapping and unmapping
operations, for example if two fields in one opregion separated from each
other by a sufficiently wide chunk of unused address space are accessed
in an alternating pattern.
Added support for 64 bit risc-v compilation. Useful for acpica tools and
incorporating ACPICA into the Firmware Test Suite. Colin Ian King
<colin.king@canonical.com>.
Added support for SMBus predefined names (from SMBus Control Method
Interface Specification, Version 1.0, December 10, 1999. New predefined
names:
_SBA
_SBI
_SBR
_SBT
_SBW
AML Disassembler: Added a new command, "All <NameSeg". This command will
evaluate all objects in the current namespace whose NameString contains
the input NameSeg as the last element of the NameString. Useful for
debugging.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: fixed a crash that occurred when predefined objects return packages
with lengths that exceed the initializer list.
iASL: added more detail to external resolution error message when
compiling multiple definition blocks.
iASL: improve alias analysis by saving object type. If the alias is a
method type, the parameter count is also recorded.
AcpiExec: Increase the default loop timeout value. Was 1 second, is now
10 seconds. Prevents unnecessary timeouts when executing control methods
from the command line.
AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
list. Includes:
Memory Device
Generic Buttons Device
NVDIMM Root Device
Control Method Battery
Device Graphs for _DSD method
Hierarchical Data Extension
....ARM CoreSight Graph
----------------------------------------
17 July 2020. Summary of changes for version 20200717:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Do not increment OperationRegion reference counts for field units. Recent
server firmware has revealed that this reference count can overflow on
large servers that declare many field units (thousands) under the same
OperationRegion. This occurs because each field unit declaration will add
a reference count to the source OperationRegion. This release solves the
reference count overflow for OperationRegion objects by preventing
fieldUnits from incrementing their parent OperationRegion's reference
count.
Replaced one-element arrays with flexible-arrays, which were introduced
in C99.
Restored the readme file containing the directions for generation of
ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
located at: generate/msvc2017/readme.txt
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Fixed a regression found in version 20200214. Prevent iASL from
emitting an extra byte of garbage data when control methods declared a
single parameter type without using braces. This extra byte is known to
cause a blue screen on the Windows AML interpreter.
iASL: Made a change to allow external declarations to specify the type of
a named object even when some name segments are not defined.
This change allows the following ASL code to compile (When DEV0 is not
defined or not defined yet):
External (\_SB.DEV0.OBJ1, IntObj)
External (\_SB.DEV0, DeviceObj)
iASL: Fixed a problem where method names in "Alias ()" statement could be
misinterpreted. They are now interpreted correctly as method invocations.
iASL: capture a method parameter count (Within the Method info segment,
as well as the argument node) when using parameter type lists.
----------------------------------------
28 May 2020. Summary of changes for version 20200528:
1) ACPICA kernel-resident subsystem:
Removed old/obsolete Visual Studio files which were used to build the
Windows versions of the ACPICA tools. Since we have moved to Visual
Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
project files. The new subdirectory and solution file are located at:
acpica/generate/msvc2017/AcpiComponents.sln
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: added support for a new OperationRegion Address Space (subtype):
PlatformRtMechanism. Support for this new keyword is being released for
early prototyping. It will appear in the next release of the ACPI
specification.
iASL: do not optimize the NameString parameter of the CondRefOf operator.
In the previous iASL compiler release, the NameString parameter of the
CondRefOf was optimized. There is evidence that some implementations of
the AML interpreter do not perform the recursive search-to-parent search
during the execution of the CondRefOf operator. Therefore, the CondRefOf
operator behaves differently when the NameString parameter is a single
name segment (a NameSeg) as opposed to a full NamePath (starting at the
root scope) or a NameString containing parent prefixes.
iASL: Prevent an inadvertent remark message. This change prevents a
remark if within a control method the following exist:
1) An Operation Region is defined, and
2) A Field operator is defined that refers to the region.
This happens because at the top level, the Field operator does not
actually create a new named object, it simply references the operation
region.
Removed support for the acpinames utility. The acpinames was a simple
utility used to populate and display the ACPI namespace without executing
any AML code. However, ACPICA now supports executable opcodes outside of
control methods. This means that executable AML opcodes such as If and
Store opcodes need to be executed during table load. Therefore, acpinames
would need to be updated to match the same behavior as the acpiexec
utility and since acpiexec can already dump the entire namespace (via the
'namespace' command), we no longer have the need to maintain acpinames.
In order to dump the contents of the ACPI namespace using acpiexec,
execute the following command from the command line:
acpiexec -b "n" [aml files]
----------------------------------------
30 April 2020. Summary of changes for version 20200430:
1) ACPICA kernel-resident subsystem:
Cleaned up the coding style of a couple of global variables
(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
AcpiProtocolLengths was made static, and the definition of
AcpiGbl_NextCmdNum was moved to acglobal.h.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL DataTable Compiler: Fixed a segfault on errors that aren't directly
associated with a field.
Disassembler: has been made more resilient so that it will continue to
parse AML even if the AML generates ACPI namespace errors. This enables
iASL to disassemble some AML that may have been compiled using older
versions of iASL that no longer compile with newer versions of iASL.
iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
was a mixup where _NIG required one parameter and _NIH required zero
parameters. This change swaps these parameter requirements. Now it is
required that _NIH must be called with one parameter and _NIG requires
zero parameters.
iASL: Allow use of undefined externals as long as they are protected by
an if (CondRefOf (...)) block when compiling multiple definition blocks.
iASL: Fixed the type override behavior of named objects that are declared
as External. External declarations will no longer override the type of
the actual definition if it already exists.
AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
command line wildcard support on Windows. Note: the AcpiNames utility is
essentially redundant with the AcpiExec utility (using the "namespace"
command) and is therefore deprecated. It will be removed in future
releases of ACPICA.
Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
operators. The disassembler is intended to emit existing ASL code as-is.
Therefore, error messages emitted during disassembly should be ignored or
handled in a way such that the disassembler can continue to parse the
AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
parsing for create operators in order to complete parsing ASL termlists.
iASL DataTable Compiler: IVRS table: fix potentially uninitialized
variable warning. Some compilers catch potential uninitialized variables.
This is done by examining branches of if/else statements. This change
replaces an "else if" with an "else" to fix the uninitialized variable
warning.
----------------------------------------
26 March 2020. Summary of changes for version 20200326:
1) ACPICA kernel-resident subsystem:
Performed a code clean-up to prevent build errors on early versions of
GCC-10.
Added the NHLT table signature. iASL data table compiler/disassembler
support for this table is coming soon.
2) iASL Compiler/Disassembler and ACPICA tools:
AcpiExec: Fixed several problems with the namespace initialization file
(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
errors, several seg faults, and enhancements to line parsing within the
init file. In addition, each object found in the init file and it's new
value is displayed, as well as any such entries that do not have a
corresponding name in the namespace. For reference, the syntax for the
various supported data types are presented below:
PCHG 0x777788889999BBBB // Integer
\DEV1.STR1 "XYZ" // String
BUF1 (88 99 AA) // Buffer
PKG1 [0x1111 0x2222] // Package
\BF1 0x7980 // BufferField
RCRV 0x0123456789ABCDEF // Field Unit
iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
can be used anywhere in a given ASL file to configure iASL to expect an
iASL compiler error code on the line where this macro was placed. If the
error code does not exist, an error is generated. This is intended to be
used for ACPICA's ASL test suite, but can be used by ASL developers as
well.
iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
IVRS table parsing supported only IVHD type 10h structures. Parsing an
IVHD type 11h caused the iasl to report unknown subtable type. Add
necessary structure definition for IVHD type 11h and apply correct
parsing method based on subtable type. Micha? ?ygowski.
iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
According to AMD IOMMU Specification Revision 3.05 the reserved field
should be IOMMU Feature Reporting. Change the name of the field to the
correct one. Micha? ?ygowski.
acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
based on suggestions by David Seifert and Benjamin Berg.
iASL: table compiler: removed an unused variable (DtCompilerParserResult)
causing linking errors. Patch based on suggestions by David Seifert and
Benjamin Berg.
iASL: table compiler: make LexBuffer static to avoid linking errors in
newer compilers. Patch based on suggestions by David Seifert and Benjamin
Berg.
iASL: fixed type matching between External and Named objects. External
object types can only be expressed with ACPI object type values that are
defined in the ACPI spec. However, iASL uses ACPI object type values that
are local to ACPICA in addition to the values defined in the ACPI spec.
This change implements type matching to map some object type values
specific to ACPICA to ones that are defined in the ACPI spec.
iASL: Dropped the type mismatch compiler error that can arise from
External declarations to a warning. This warning can occur when there is
a type difference between the external declaration and the actual object
declaration (when compiling multiple files/modules simultaneously).
iASL: removed an incorrect error message regarding externals. This change
removes an incorrect error that is emitted when a duplicate external
declaration does not contain a type that opens a scope. This is incorrect
because the duplicate external with conflicting types are already caught
by iASL and it doesn't make any sense to enforce what this conflicting
type should be.
AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
surrounded by parens. Otherwise, a logical statement that applies a
logical not operator to this macro could result in a computation that
applies the operator to the left side of the logical and but not the
right. Reported-by: John Levon <john.levon@joyent.com>
Fixed a problem with the local version of sprint(): On 32-bit, the
provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
String + Size will wrap, meaning End < Start, and
AcpiUtBoundStringOutput() will never output anything as a result. The
symptom seen of this was acpixtract failing to output anything -- with a
custom build that included utprint.c. Signed-off-by: John Levon
<john.levon@joyent.com>
iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
ACPI specification.
----------------------------------------
14 February 2020. Summary of changes for version 20200214:
1) ACPICA kernel-resident subsystem:
Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered
in a guest when it receives a sleep trigger from the hypervisor. When the
guest resumes from this power state, it does not see the SleepEnabled
bit. In other words, the sleepHibernation (S4) is triggered in a guest
when it receives a sleep trigger from the hypervisor. When the guest
resumes from this power state, it does not see the SleepEnabled bit. In
other words, the sleep button is not enabled on waking from an S4 state.
This causes subsequent invocation of sleep state to fail since the
guest.button is not enabled on waking from an S4 state. This causes
subsequent invocation of sleep state to fail in the guest. Fix this
problem by enabling the sleep button in ACPI legacy wake. From Anchal
Agarwal <anchalag@amazon.com>.
Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
for checking the status bits of all enabled GPEs in one go. It is needed
to distinguish spurious SCIs from genuine ones when deciding whether or
not to wake up the system from suspend-to-idle.
Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
using HOST in their environment to represent the host name for their
machines. Avoid this problem by renaming this variable from HOST to
ACPI_HOST.
MSVC 2017 project files: Enable multiprocessor generation to improve
build performance.
Added a macro to get the byte width of a Generic Address structure. New
ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Implemented full support for the (optional, rarely used) ReturnType
and ParameterTypesList for the Method, Function, and External operators.
For Method declarations, the number of individual ParameterTypes must
match the declaration of the number of arguments (NumArgs). This also
Fixes a problem with the External operator where extra/extraneous bytes
were emitted in the AML code if the optional ReturnType/ParameterTypes
were specified for a MethodObj declaration.
New error message:
1) Method NumArgs count does not match length of ParameterTypes list
iASL: Implemented detection of type mismatches between External
declarations and named object declarations. Also, detect type mismatches
between multiple External declarations of the same Name.
New error messages:
1) Type mismatch between external declaration and actual object
declaration detected
2) Type mismatch between multiple external declarations detected
iASL: Implemented new error messages for External operators that specify
a ReturnType and/or ParameterTypesList for any object type other than
control methods (MethodObj).
New error messages:
1) Return type is only allowed for Externals declared as MethodObj
2) Parameter type is only allowed for Externals declared as MethodObj
iASL: Implemented two new remark/warning messages for ASL code that
creates named objects from within a control method. This is very
inefficient since the named object must be created and deleted each time
the method is executed.
New messages:
1) Creation of named objects within a method is highly inefficient, use
globals or method local variables instead (remark)
2) Static OperationRegion should be declared outside control method
(warning)
iASL: Improved illegal forward reference detection by adding support to
detect forward-reference method invocations.
iASL: Detect and issue an error message for NameStrings that contain too
many individual NameSegs (>255). This is an AML limitation that is
defined in the ACPI specification.
New message:
1) NameString contains too many NameSegs (>255)
acpidump: windows: use GetSystemFirmwareTable API for all tables except
SSDT. By using this API, acpidump is able to get all tables in the XSDT
iASL: Removed unused parser file and updated msvc2017 project files.
Removed the obsolete AslCompiler.y from the repository.
iASL: msvc2017: Fixed macros in the file dependency list to prevent
unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
Disassembler: Prevent spilling error messages to the output file. All
errors are directed to the console instead. These error messages
prevented re-compilation of the resulting disassembled ASL output file
(.DSL).
----------------------------------------
10 January 2020. Summary of changes for version 20200110:
1) ACPICA kernel-resident subsystem:
Updated all copyrights to 2020. This affects all ACPICA source code
modules.
2) iASL Compiler/Disassembler and ACPICA tools:
ASL test suite (ASLTS): Updated all copyrights to 2020.
Tools and utilities: Updated all signon copyrights to 2020.
iASL: fix forward reference analysis for field declarations. Fixes
forward reference analysis for field declarations by searching the
parent scope for the named object when the object is not present in
the current scope.
iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
full pathname of the name that already exists is printed.
iASL: Enhance duplicate Case() detection for buffers. Add check for
buffers with no initializer list (these buffers will be filled with
zeros at runtime.)
----------------------------------------
13 December 2019. Summary of changes for version 20191213:
1) ACPICA kernel-resident subsystem:
Return a Buffer object for all fields created via the CreateField
operator. Previously, an Integer would be returned if the size of
the field was less than or equal to the current size of an Integer.
Although this goes against the ACPI specification, it provides
compatibility with other ACPI implementations. Also updated the
ASLTS test suite to reflect this new behavior.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Implemented detection of (and throw an error for) duplicate
values for Case statements within a single Switch statement. Duplicate
Integers, Strings, and Buffers are supported.
iASL: Fix error logging issue during multiple file compilation --
Switch to the correct input file during error node creation.
iASL: For duplicate named object creation, now emit an error instead
of a warning - since this will cause a runtime error.
AcpiSrc: Add unix line-ending support for non-Windows builds.
iASL: Add an error condition for an attempt to create a NameString
with > 255 NameSegs (the max allowable via the AML definition).
----------------------------------------
18 October 2019. Summary of changes for version 20191018:
1) ACPICA kernel-resident subsystem:
Debugger: added a new command: ?Fields [address space ID]?. This command
dumps the contents of all field units that are defined within the
namespace with a particular address space ID.
Modified the external interface AcpiLoadTable() to return a table index.
This table index can be used for unloading a table for debugging.
ACPI_STATUS
AcpiLoadTable (
ACPI_TABLE_HEADER *Table,
UINT32 *TableIndex))
Implemented a new external interface: AcpiUnloadTable() This new function
takes a table index as an argument and unloads the table. Useful for
debugging only.
ACPI_STATUS
AcpiUnloadTable (
UINT32 TableIndex))
Ported the AcpiNames utility to use the new table initialization
sequence. The utility was broken before this change. Also, it was
required to include most of the AML interpreter into the utility in order
to process table initialization (module-level code execution.)
Update for results from running Clang V8.0.1. This fixes all "dead
assignment" warnings. There are still several "Dereference of NULL
pointer" warnings, but these have been found to be false positive
warnings.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: numerous table compiler changes to ensure that the usage of
yacc/bison syntax is POSIX-compliant.
iASL/disassembler: several simple bug fixes in the data table
disassembler.
Acpiexec: expanded the initialization file (the -fi option) to initialize
strings, buffers, packages, and field units.
----------------------------------------
16 August 2019. Summary of changes for version 20190816:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Modified the OwnerId mechanism to allow for more Owner Ids. The previous
limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
exceptions on machines with a large number of initialization threads,
many CPU cores and nested initialization control methods.
Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
checking if the given GPE (as represented by a GPE device handle and a
GPE number) is currently active and dispatching it (if that's the case)
outside of interrupt context.
Table load: exit the interpreter before initializing objects within the
new table This prevents re-acquiring the interpreter lock when loading
tables
Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
uk Kim
Macros: removed pointer math on a null pointer. Causes warnings on some
compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
instead of using arithmetic.
Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
across all "printf-like" internal functions. Also, cleanup all calls to
such functions (both in 32-bit mode and 64-bit mode) now that they are
analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: implemented a new data table compiler flex/bison front-end. This
change is internal and is not intended to result in changes to the
compiled code. This new compiler front-end can be invoked using the -tp
option for now, until the old mechanism is removed.
ASLTS: Implemented a new data table compiler test suite. This test suite
generates all table templates and compile/disassemble/re-compile/binary-
compare each file.
iASL: return -1 if AML files were not generated due to compiler errors
iASL: added a warning on use of the now-legacy ASL Processor () keyword.
iASL: added an error on _UID object declaration that returns a String
within a Processor () declaration. A _UID for a processor must be an
Integer.
iASL: added a null terminator to name strings that consist only of
multiple parent prefixes (^)
iASL: added support to compile both ASL and data table files in a single
command.
Updated the tool generation project files that were recently migrated to
MSVC 2017 to eliminate all new warnings. The new project files appear in
the directory \acpica\generate\msvc2017. This change effectively
deprecates the older project files in \acpica\generate\msvc9.
----------------------------------------
03 July 2019. Summary of changes for version 20190703:
1) ACPICA kernel-resident subsystem:
Remove legacy module-level support code. There were still some remnants
of the legacy module-level code executions. Since we no longer support
this option, this is essentially dead code and has been removed from the
ACPICA source.
iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
scope. If these named objects are declared outside the root scope, they
will not be invoked by any host Operating System.
Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
one) can be enabled in two situations. First, the GPEs with existing _Lxx
and _Exx methods are enabled implicitly by ACPICA during system
initialization. Second, the GPEs without these methods (like GPEs listed
by _PRW objects for wakeup devices) need to be enabled directly by the
code that is going to use them (e.g. ACPI power management or device
drivers).
In the former case, if the status of a given GPE is set to start with,
its handler method (either _Lxx or _Exx) needs to be invoked to take care
of the events (possibly) signaled before the GPE was enabled. In the
latter case, however, the first caller of AcpiEnableGpe() for a given GPE
should not be expected to care about any events that might be signaled
through it earlier. In that case, it is better to clear the status of
the GPE before enabling it, to prevent stale events from triggering
unwanted actions (like spurious system resume, for example).
For this reason, modify AcpiEvAddGpeReference() to take an additional
boolean argument indicating whether or not the GPE status needs to be
cleared when its reference counter changes from zero to one and make
AcpiEnableGpe() pass TRUE to it through that new argument.
2) iASL Compiler/Disassembler and ACPICA tools:
The tool generation process has been migrated to MSVC 2017, and all
project files have been upgraded. The new project files appear in the
directory \acpica\generate\msvc2017. This change effectively deprecates
the older project files in \acpica\generate\msvc9.
iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
scope. If these named objects are declared outside the root scope, they
will not be invoked by any host Operating System
----------------------------------------
09 May 2019. Summary of changes for version 20190509:
1) ACPICA kernel-resident subsystem:
Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
them") that causes problems with Thunderbolt controllers to occur if a
dock device is connected at init time (the xhci_hcd and thunderbolt
modules crash which prevents peripherals connected through them from
working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
Dispatch active GPEs at init time") to get undone, so the problem
addressed by commit ecc1165b8b74 appears again as a result of it.
2) iASL Compiler/Disassembler and ACPICA tools:
Reverted iASL: Additional forward reference detection. This change
reverts forward reference detection for field declarations. The feature
unintentionally emitted AML bytecode with incorrect package lengths for
some ASL code related to Fields and OperationRegions. This malformed AML
can cause systems to crash
during boot. The malformed AML bytecode is emitted in iASL version
20190329 and 20190405.
iASL: improve forward reference detection. This change improves forward
reference detection for named objects inside of scopes. If a parse object
has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
a named object that is declared later in the AML bytecode. This is
allowed if the reference is inside of a method and the declaration is
outside of a method like so:
DefinitionBlock(...)
{
Method (TEST)
{
Return (NUM0)
}
Name (NUM0,0)
}
However, if the declaration and reference are both in the same method or
outside any methods, this is a forward reference and should be marked as
an error because it would result in runtime errors.
DefinitionBlock(...)
{
Name (BUFF, Buffer (NUM0) {}) // Forward reference
Name (NUM0, 0x0)
Method (TEST)
{
Local0 = NUM1
Name (NUM1, 0x1) // Forward reference
return (Local0)
}
}
iASL: Implemented additional buffer overflow analysis for BufferField
declarations. Check if a buffer index argument to a create buffer field
operation is beyond the end of the target buffer.
This affects these AML operators:
AML_CREATE_FIELD_OP
AML_CREATE_BIT_FIELD_OP
AML_CREATE_BYTE_FIELD_OP
AML_CREATE_WORD_FIELD_OP
AML_CREATE_DWORD_FIELD_OP
AML_CREATE_QWORD_FIELD_OP
There are three conditions that must be satisfied in order to allow this
validation at compile time:
1) The length of the target buffer must be an integer constant
2) The index specified in the create* must be an integer constant
3) For CreateField, the bit length argument must be non-zero.
Example:
Name (BUF1, Buffer() {1,2})
CreateField (BUF1, 7, 9, CF03) // 3: ERR
dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
Error 6165 - ^ Buffer index beyond end of
target buffer
----------------------------------------
05 April 2019. Summary of changes for version 20190405:
1) ACPICA kernel-resident subsystem:
Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
unconditionally clearing ACPI IRQs during suspend/resume") was added
earlier to stop clearing of event status bits unconditionally on suspend
and resume paths. Though this change fixed an issue on suspend path, it
introduced regressions on several resume paths. In the case of S0ix,
events are enabled as part of device suspend path. If status bits for the
events are set when they are enabled, it could result in premature wake
from S0ix. If status is cleared for any event that is being enabled so
that any stale events are cleared out. In case of S0ix, events are
enabled as part of device suspend path. If status bits for the events are
set when they are enabled, it could result in premature wake from S0ix.
This change ensures that status is cleared for any event that is being
enabled so that any stale events are cleared out.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Implemented an enhanced multiple file compilation that combines
named objects from all input files to a single namespace. With this
feature, any unresolved external declarations as well as duplicate named
object declarations can be detected during compilation rather than
generating errors much later at runtime. The following commands are
examples that utilize this feature:
iasl dsdt.asl ssdt.asl
iasl dsdt.asl ssdt1.asl ssdt2.asl
iasl dsdt.asl ssdt*.asl
----------------------------------------
29 March 2019. Summary of changes for version 20190329:
1) ACPICA kernel-resident subsystem:
Namespace support: Remove the address nodes from global list after method
termination. The global address list contains pointers to namespace nodes
that represent Operation Regions. This change properly removes Operation
Region namespace nodes that are declared dynamically during method
execution.
Linux: Use a different debug default than ACPICA. There was a divergence
between Linux and the ACPICA codebases. In order to resolve this
divergence, Linux now declares its own debug default in aclinux.h
Renamed some internal macros to improve code understanding and
maintenance. The macros below all operate on single 4-character ACPI
NameSegs, not generic strings (old -> new):
ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
table.
Test suite: Update makefiles, add PCC operation region support
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented additional illegal forward reference detection. Now
detect and emit an error upon detection of a forward reference from a
Field to an Operation Region. This will fail at runtime if allowed to
pass the compiler.
AcpiExec: Add an address list check for dynamic Operation Regions. This
feature performs a sanity test for each node the global address list.
This is done in order to ensure that all dynamic operation regions are
properly removed from the global address list and no dangling pointers
are left behind.
Disassembler: Improved generation of resource pathnames. This change
improves the code that generates resource descriptor and resource tag
pathnames. The original code used a bunch of str* C library functions
that caused warnings on some compilers.
iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
function can overwrite buffers if the calling code is not very careful.
In the case of generating a module/table header, use of memmove is a
better implementation.
3) Status of new features that have not been completed at this time:
iASL: Implementing an enhanced multiple file compilation into a single
namespace feature (Status): This feature will be released soon, and
allows multiple ASL files to be compiled into the same single namespace.
By doing so, any unresolved external declarations as well as duplicate
named object declarations can be detected during compilation (rather than
later during runtime). The following commands are examples that utilize
this feature:
iasl dsdt.asl ssdt.asl
iasl dsdt.asl ssdt1.asl ssdt2.asl
iasl dsdt.asl ssdt*.asl
ASL tutorial status: Feedback is being gathered internally and the
current plan is to publish this tutorial on the ACPICA website after a
final review by a tech writer.
----------------------------------------
15 February 2019. Summary of changes for version 20190215:
0) Support for ACPI specification version 6.3:
Add PCC operation region support for the AML interpreter. This adds PCC
operation region support in the AML interpreter and a default handler for
acpiexec. The change also renames the PCC region address space keyword to
PlatformCommChannel.
Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
These methods provide OSPM with health information and device boot
status.
PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
defines if the trigger needs to be invoked by OSPM before or at the end
of kernel crash dump processing/handling operation.
SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
is used for describing devices such as heterogeneous processors,
accelerators, GPUs, and IO devices with integrated compute or DMA
engines.
MADT: Add support for statistical profiling in GICC. Statistical
profiling extension (SPE) is an architecture-specific feature for ARM.
MADT: Add online capable flag. If this bit is set, system hardware
supports enabling this processor during OS runtime.
New Error Disconnect Recover Notification value. There are a number of
scenarios where system Firmware in collaboration with hardware may
disconnect one or more devices from the rest of the system for purposes
of error containment. Firmware can use this new notification value to
alert OSPM of such a removal.
PPTT: New additional fields in Processor Structure Flags. These flags
provide more information about processor topology.
NFIT/Disassembler: Change a field name from "Address Range" to "Region
Type".
HMAT updates: make several existing fields to be reserved as well as
rename subtable 0 to "memory proximity domain attributes".
GTDT: Add support for new GTDT Revision 3. This revision adds information
for the EL2 timer.
iASL: Update the HMAT example template for new fields.
iASL: Add support for the new revision of the GTDT (Rev 3).
1) ACPICA kernel-resident subsystem:
AML Parser: fix the main AML parse loop to correctly skip erroneous
extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
byte extended opcodes. If an error occurs during an AML table load, the
AML parser will continue loading the table by skipping the offending
opcode. This implements a "load table at any cost" philosophy.
2) iASL Compiler/Disassembler and Tools:
iASL: Add checks for illegal object references, such as a reference
outside of method to an object within a method. Such an object is only
temporary.
iASL: Emit error for creation of a zero-length operation region. Such a
region is rather pointless. If encountered, a runtime error is also
implemented in the interpreter.
Debugger: Fix a possible fault with the "test objects" command.
iASL: Makefile: support parent directory filenames containing embedded
spaces.
iASL: Update the TPM2 template to revision 4.
iASL: Add the ability to report specific warnings or remarks as errors.
Disassembler: Disassemble OEMx tables as actual AML byte code.
Previously, these tables were treated as "unknown table".
iASL: Add definition and disassembly for TPM2 revision 3.
iASL: Add support for TPM2 rev 3 compilation.
----------------------------------------
08 January 2019. Summary of changes for version 20190108:
1) ACPICA kernel-resident subsystem:
Updated all copyrights to 2019. This affects all source code modules.
2) iASL Compiler/Disassembler and Tools:
ASL test suite (ASLTS): Updated all copyrights to 2019.
Tools: Updated all signon copyrights to 2019.
AcpiExec: Added a new option to dump extra information concerning any
memory leaks detected by the internal object/cache tracking mechanism. -
va
iASL: Updated the table template for the TPM2 table to the newest version
of the table (Revision 4)
----------------------------------------
13 December 2018. Summary of changes for version 20181213:
1) ACPICA Kernel-resident Subsystem:
Fixed some buffer length issues with the GenericSerialBus, related to two
of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
which are rarely seen in the field. For these, the LEN field of the ASL
buffer is now ignored. Hans de Goede
Implemented a new object evaluation trace mechanism for control methods
and data objects. This includes nested control methods. It is
particularly useful for examining the ACPI execution during system
initialization since the output is relatively terse. The flag below
enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
#define ACPI_LV_EVALUATION 0x00080000
Examples:
Enter evaluation : _SB.PCI0._INI (Method)
Exit evaluation : _SB.PCI0._INI
Enter evaluation : _OSI (Method)
Exit evaluation : _OSI
Enter evaluation : _SB.PCI0.TEST (Method)
Nested method call : _SB.PCI0.NST1
Exit nested method : _SB.PCI0.NST1
Exit evaluation : _SB.PCI0.TEST
Added two recently-defined _OSI strings. See
https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
osi.
"Windows 2018"
"Windows 2018.2"
Update for buffer-to-string conversions via the ToHexString ASL operator.
A "0x" is now prepended to each of the hex values in the output string.
This provides compatibility with other ACPI implementations. The ACPI
specification is somewhat vague on this issue.
Example output string after conversion:
"0x01,0x02,0x03,0x04,0x05,0x06"
Return a run-time error for TermArg expressions within individual package
elements. Although this is technically supported by the ASL grammar,
other ACPI implementations do not support this either. Also, this fixes a
fault if this type of construct is ever encountered (it never has been).
2) iASL Compiler/Disassembler and Tools:
iASL: Implemented a new compile option (-ww) that will promote individual
warnings and remarks to errors. This is intended to enhance the firmware