-
Notifications
You must be signed in to change notification settings - Fork 0
/
changes.txt
19785 lines (15293 loc) · 780 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
----------------------------------------
28 June 2023. Summary of changes for version 20230628:
0) Global changes:
Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: ?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag to Timer (since there are no runtime arguments). Reported by: Abhishek Mainkar [email protected].
Added a define for size of acpi_srat_generic_affinity DeviceHandle. Replaced a magic number with a define. The Linux kernel code will utilize this. Reported by Dave Jiang [email protected].
Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
1) ACPICA kernel-resident subsystem:
Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang [email protected].
Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang [email protected].
1) ACPICA kernel-resident subsystem:
Fix GCC 12 dangling-pointer warning. We're storing a persistent pointer to an ephemeral local variable which technically is a dangling pointer and the compiler is correct. However, since we never indirect the pointer, this is a safe operation and we can suppress the warning.
Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly so we must include it explicitly or we won't have the type definition for uintptr_t.
2) iASL Compiler/Disassembler and ACPICA tools:.
IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table is updated with new nodes. Add compile and dump functionality for these new structures.
AcpiExec: Added a new command, ?interrupt?. The Interrupt command simulates an interrupt with a IntID (GSIV) equal to the first argument of the call/invocation. The acpiexec code simulates the behavior by OSPM: execute the _EVT method of the GED device associated with that IntID. Submitted by: Jose Marinho [email protected].
AcpiExec: Detect GED device and keep track of _EVT. The GED device is described by a _HID of ACPI0013. This code traverses the namespace identifying all GED devices. For each GED device in the namespace we record the Interrupt object and the _EVT method. This information is used when an interrupt is simulated via the ?interrupt? command. Submitted by: Jose Marinho [email protected].
----------------------------------------
31 March 2023. Summary of changes for version 20230331:
This release is available at https://acpica.org/downloads
0) Global changes:
Update all copyright notices to the year 2023. This effects all source
modules, as well as utility signons.
Add OS-specific support for Zephyr RTOS.
Fix miscellaneous code that accesses various objects.
Remove some dead code.
Add C ?Flexible Array? support.
Add support for 64 bit LoongArch compilation.
Add first batch of RISC-V related definitions.
Performed a global automated update to remove tabs, fix indentation
issues, etc.
1) ACPICA kernel-resident subsystem:
hwvalid: Drop port I/O validation.
2) ACPICA tools and utilities:
iASL: Added full macro support in the preprocessor. Example:
#define ABCD(a,b,c,d) a+b+c-d
Known macro support limitations (at this time):
No support for multi-line #define macros (backslash continuation
lines)
No support for the C-style ternary operator
No support for the stringizing operator (#)
No support for the concatenation (token pasting) operator (##)
No support for variable number of macro arguments
Add support for AMD Secure Processor Table (ASPT) version 1.
Add support for Arm's MPAM ACPI table version 2.
ACPI 6.5: MADT: add support for trace buffer extension in GICC.
Headers: Delete bogus NodeArray array of pointers from AEST table.
PHAT table support is still ongoing.
----------------------------------------
20 October 2022. Summary of changes for version 20221020:
This release is available at https://acpica.org/downloads
0) Global changes:
Allow disabling of -Werror. For distro maintainers having `-Werror` can
delay update of GCC. Since every GCC release might add new warnings that
were not yet captured, it might break the build of packages. With this
change, distros can now build with `NOWERROR=TRUE` instead of patching
either the errors or the makefiles. The default behavior keeps on using
`-Werror`.
1) ACPICA kernel-resident subsystem:
Added support for FFH Operation Region special context data. FFH(Fixed
Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
first approach[1]. It requires special context data similar to GPIO and
Generic Serial Bus as it needs to know platform specific offset and
length.
Reverted this commit "executer/exsystem: Warn about sleeps greater than
10 ms." Due to user complaints about valid sleeps greater than 10ms seen
in some existing machines -- generating lots of warnings.
Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
EBDA region must be at least 1KiB in size. Because this is not
guaranteed, it might happen that while scanning the memory for RSDP
pointer, the kernel touches memory above 640KiB. This is unwanted as the
VGA memory range may not be decoded or even present when running under
virtualization.
Check that EBDA pointer is in valid memory. If the memory at 0x40e is
uninitialized, the retrieved physical memory address of EBDA may be
beyond the low memory (i.e. above 640K). If so, the kernel may
unintentionally access the VGA memory, that might not be decoded or even
present in case of virtualization.
2) iASL Compiler/Disassembler and ACPICA tools:
Completed the existing partial support for the CDAT "table". Although
this isn't technically an ACPI table (It doesn't go into the XSDT), it is
possible to support this table in the Data Table compiler. Created one
new file, "utilities/utcksum.c", used to centralize checksum
generation/validation into one location. Includes changes to makefiles
and MSVC project files.
Updated support for the IORT table - update to version E.e
Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
iASL: Added CCEL table to both compiler/disassembler.
iASL: NHLT table: Fixed compilation of optional undocumented fields
iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
("iASL: Add CCEL table to both compiler/disassembler") introduced the
iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
table member reference. To fix it, change ACPI_TDEL_OFFSET with
ACPI_CCEL_OFFSET.
----------------------------------------
31 March 2022. Summary of changes for version 20220331:
0) Global changes:
Update all copyright notices to the year 2022. This effects all source
modules, as well as utility signons.
1) ACPICA kernel-resident subsystem:
For the ASL Sleep() operator, issue a warning if the sleep value is
greater than 10 Milliseconds. Quick boottime is important, so warn about
sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
ms, so excessive delays should be called out. 10 ms is chosen randomly,
but three of such delays would already make up ten percent of the
boottime.
Namespace: Avoid attempting to walk the Namespace if the Namespace does
not exist.
AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
pass/fail integer. Now load returns a pass/fail integer, as well as
storing the return value in an optional 2nd argument.
Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
"performing pointer subtraction with a null pointer has undefined
behavior" compiler warnings, use uintptr_t and offsetof() that are always
available during Linux kernel builds to define ACPI_UINTPTR_T and the
ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
in the Linux kernel.
Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
by superm1.
executer/exsystem: Inform users about ACPI spec violation for the Stall()
operator. Values greater than 100 microseconds violate the ACPI
specification, so warn users about it. From the ACPI Specification
version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
> The implementation of Stall is OS-specific, but must not relinquish
> control of the processor. Because of this, delays longer than 100
> microseconds must use Sleep instead of Stall.
2) iASL Compiler/Disassembler and ACPICA tools:
Data Table Compiler/Disassembler: Add support for the APMT table - ARM
Performance Monitoring Unit table. Submitted by @bwicaksononv.
Data Table Compiler/Disassembler: For MADT, add support for the OEM-
defined subtables (Types 0x80-0x7F).
Data Table Compiler: Fixed a problem with support for the SDEV table,
where a subtable Length was not computed correctly.
Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
Acpi table support.
Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
add template. Submitted by MasterDrogo.
Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
readability of the code.
iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
Undocumented bytes at the end of Endpoint Descriptor can be present
independently of Linux-specific structures. Their size can also vary.
iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
bytes of size and then an amount of bytes specified by size. All of the
terminators that I've seen had a size equal to 4, but theoretically it
can vary.
iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
iASL: Remove a remark due to excessive output. Removed a remark for
duplicate Offset() operators, due to a user complaint.
----------------------------------------
17 December 2021. Summary of changes for version 20211217:
1) ACPICA kernel-resident subsystem:
Hardware: Do not flush CPU cache when entering S4 and S5. According to
ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
the sleep state. Blind cache flush on entering S5 causes problems for
TDX.
Avoid subobject buffer overflow when validating RSDP signature. Since the
Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
it is only to a 4-char array, and so trying to read past the 4th
character, as will be done when it is an RSDP, reads beyond the bounds of
the accessed member. Contributed by jrtc27.
Add support for PCC Opregion special context data. PCC Opregion added in
ACPIC 6.3 requires special context data similar to GPIO and Generic
Serial Bus as it needs to know the internal PCC buffer and its length as
well as the PCC channel index when the opregion handler is being executed
by the OSPM. Adds support for the special context data needed by PCC
Opregion. Submitted by Sudeep Holla <[email protected]>
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Completed compiler support for the NHLT ACPI table.
iASL/NHLT table: Fixed a reported problem where a fault would occur
during disassembly of a "Linux-Specific" section if the "Specific Data"
part was not present.
iASL: Added full support (compiler and disassembler) for the AGDI ACPI
table. Contributed by: Ilkka Koskinen <[email protected]>.
iASL: Added full support for the TDEL ACPI table.
iASL table compiler: FADT support updates:
1) Allow the 32-bit DSDT address to be zero.
2) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
iASL: Fix unaligned accesses to local cache allocations. Contributed by
jrtc27.
iASL: Open binary input files in binary mode, not text mode Affects
binary input AML files, as well as binary data table files, for
disassembly.
----------------------------------------
30 September 2021. Summary of changes for version 20210930:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Hardware: Avoid evaluating methods too early during system resume. During
wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
and it tries to get memory from the OS in order to evaluate a control
method, but if KFENCE is enabled in the Linux kernel, the memory
allocation attempt causes an IRQ work to be queued and a self-IPI to be
sent to the CPU running the code which requires the memory controller to
be ready, so if that happens too early in the wakeup path, it doesn't
work.
Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
upfront, when preparing to enter a given sleep state, and saving the data
obtained by it for later use during system wakeup.
Added a new _OSI string, "Windows 2020". Posted by superm1.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
objects:
New/latest rules: Under a Device Object:
1) If _PRS is present, must have _CRS and _SRS
2) If _SRS is present, must have _PRS (_PRS requires _CRS and
_SRS)
3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
requires _CRS and _SRS)
4) If _SRS is present, probably should have a _DIS (Remark only)
iASL table disassembler: Added disassembly support for the NHLT ACPI
table. Note: support for Vendor-defined microphone arrays and SNR
extensions are not supported at this time -- mostly due to a lack of
example tables. Actual compiler support for NHLT is forthcoming.
Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
uses the same subtable structure as the existing Generic Initiator
Affinity type.
Added the flag for online capable in the MADT, introduced in ACPI 6.3.
Posted by superm1.
3) ACPICA documentation: Updated the legal info (that appears at the
start of the Documents) to clarify distribution rights that are granted.
----------------------------------------
30 July 2021. Summary of changes for version 20210730:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
2) iASL Compiler/Disassembler and ACPICA tools:
iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
Under the Device Object:
1) If _DIS is present, must have a _CRS and _SRS
2) If _PRS is present, must have a _CRS, _DIS, and _SRS
3) If _SRS is present, must have a _CRS and _DIS
A warning will be issued for each of these cases.
Note: For existing ASL/projects, these warnings may be disabled by
specifying this on the command line:
"-vw 3141"
iASL Table Disassembler/Table compiler: Fix for WPBT table with no
command-line arguments. Handle the case where the Command-line
Arguments table field does not exist (zero).
Headers: Add new DBG2 Serial Port Subtypes
The Microsoft Debug Port Table 2 (DBG2) specification revision
September 21, 2020 comprises additional Serial Port Subtypes [1].
Reflect that in the actbl1.h header file. Submitted by:
semihalf-wojtas-marcin
iASL: Add full support for the AEST table (data compiler)
Includes support in the table compiler and the disassembler.
Add PRMT module header to facilitate parsing.
This structure is used in to parse PRMT in other Operating Systems
that relies on using subtable headers in order to parse ACPI tables.
Although the PRMT doesn't have "subtables" it has a list of module
information structures that act as subtables.
iASL: Table disassembler: Add missing strings to decode subtable types.
Includes the MADT and CEDT tables.
----------------------------------------
04 June 2021. Summary of changes for version 20210604:
1) ACPICA kernel-resident subsystem:
Cleaned up (delete) the context mutex during local address handler object
deletion.
Fixed a memory leak caused by the _CID repair function.
Added support for PlatformRtMechanism OperationRegion handler. Adds a new
utility function, AcpiUtConvertUuidToString. Writing a buffer to a
PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
input buffer contains 26 bytes containing 9 bytes of status, a command
byte and a 16-byte UUID. This change will simply pass this incoming
buffer to a handler registered by the OS.
2) iASL Compiler/Disassembler and ACPICA tools:
Added full support for the PRMT ACPI table (Platform Runtime Mechanism
Table). Includes support in the iASL compiler, the disassembler, and the
template generator.
Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
table.
Added full support for the SVKL (Storage Volume Key Location Table) ACPI
table. Header file support from Kuppuswamy Sathyanarayanan
Completed full support for the IVRS (I/O Virtualization Reporting
Structure) ACPI table. Added compiler support for IVRS, updated
disassembler support. Adds a new utility, UtIsIdInteger, to determine if
a HID/CID is an integer or a string.
Headers: Added more structs to the CEDT table: CXL fixed memory window
structure.
ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
----------------------------------------
31 March 2021. Summary of changes for version 20210331:
This release is available at https://acpica.org/downloads, and includes
all ACPI 6.4 support
1) ACPICA kernel-resident subsystem:
ACPI 6.4: iASL: deprecate DDBHandleObj keyword
Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
allocating an object using kmalloc(), but then frees it
using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
Fixed a race condition in generic serial bus operation region handler.
Fixed by Hans de Goede.
2) iASL Compiler/Disassembler and ACPICA tools:
ACPI 6.4: NFIT: add Location Cookie field
ACPI 6.4: HMAT: add new fields/flags
ACPI 6.4: Add new flags in SRAT
ACPI 6.4: add SDEV secure access components
ACPI 6.4: add Csi2Bus resource template
ACPI 6.4: add support for PHAT table
ACPI 6.4: add support for PMTT table
Add disassembly support for the IVRS table. Compilation of the table is
not yet complete.
Fixed a potential infinite loop due to type mismatch. The for-loop is
using a UINT8 counter and comparing the upper
limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
will wrap around to zero and the loop will never exit. I suspect
the AslGbl_ExpectedMessagesIndex is never that high, but fixing
this does future proof the code and cleans up static analysis
warnings.Colin King.
iASL/TableCompiler: update it with IORT table E.b revision changes. From
shamiali2008.
iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
off-by: Jean-Philippe Brucker.
iASL/TableCompiler: Add compilation support for CEDT table. Also, update
the CEDT template.
----------------------------------------
05 January 2021. Summary of changes for version 20210105:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Updated all copyrights to 2021. This affects all ACPICA source code
modules.
2) iASL Compiler/Disassembler and ACPICA tools:
ASL test suite (ASLTS): Updated all copyrights to 2021.
Tools and utilities: Updated all signon copyrights to 2021.
iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
MTMR. Al Stone.
----------------------------------------
17 December 2020. Summary of changes for version 20201217:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Note: The implementation of ACPI 6.4 is underway, and is expected to be
mostly finished next month, when ACPI 6.4 is released.
From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
enable this.
AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
These included a few casts, as well as a null pointer check.
Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
implicit fallthrough, as well as __attribute__((__fallthrough__)) and
comments to explicitly denote that cases of fallthrough were intentional.
Clang also supports this warning and statement attribute, but not the
comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
of GCC. With assistance from @nickdesaulniers.
2) iASL Compiler/Disassembler and ACPICA tools:
Added improvement to method call analysis by saving the return type and
relaxing certain cases of type checking.
iASL Table Compiler: Improved info messages. Added a message to the -T
option for when the default template (DSDT) is used.
Also added a note for when multiple SSDTs are created with a DSDT that
the SSDTs are created in the same file as the DSDT.
----------------------------------------
13 November 2020. Summary of changes for version 20201113:
This release is available at https://acpica.org/downloads
1) ACPICA kernel-resident subsystem:
Interpreter: fixed a memory leak by using use existing buffer in _HID
repair. There was a memory leak that occurred when a _CID object is
defined as a package containing string objects. When _CID is checked for
any possible repairs, it calls a helper function to repair _HID (because
_CID basically contains multiple _HID entries). The _HID repair function
assumes that string objects are standalone objects that are not contained
inside of any packages. The _HID repair function replaced the string
object with a brand new object and attempted to delete the old object by
decrementing the reference count of the old object. Strings inside of
packages have a reference count of 2 so the _HID repair function leaves
this object in a dangling state and causes a memory leak. Instead of
allocating a brand new object and removing the old object, use the
existing object when repairing the _HID object.
Added function trace macros to improve namespace debugging. The namespace
repair mechanism does not have function tracing macros. Add several trace
macros to improve debuggability.
Handle "orphan" _REG methods for GPIO OpRegions. Before this change
AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
to potential issues with checks for OpRegion availability, or in other
words checks if _REG has been called for the OpRegion which the ACPI code
wants to use. Except for the "orphan" EC handling, ACPICA core does not
call _REG on an ACPI node which does not define an OpRegion matching the
type being registered; and the reference design DSDT, from which most
Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
were assigned ACPI controlled functions in the reference design. Together
this leads to the perfect storm, at least on the Cherry Trail based
Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
and has added the Cherry Trail specific UserDefined(0x93) opregion to its
GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
availability check for the standard GeneralPurposeIo OpRegion. This
clearly is a bug in the DSDT, but this does work under Windows. This
issue leads to the intel vbtn driver reporting the device always being in
tablet-mode at boot, even if it is in laptop mode. Which in turn causes
userspace to ignore touchpad events. So in other words, this issue causes
the touchpad to not work at boot. This change fixes this by extending the
"orphan" _REG method handling to also apply to GPIO address-space
handlers.
2) iASL Compiler/Disassembler and ACPICA tools:
iASL: Added more info to namespace dump file (-ln option). In a separate
section of the dump file (after the main namespace dump), emit the full
pathname for each namespace node, its type, and the ASL filename and line
number where it is declared.
AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
is omitted, all iASL exceptions are displayed.
iASL: Use StringLiteral instead of StringData for some ASL macros. The
use of the stringData rule allows for some "string" oriented opcodes
(Such as ToString, ToHexString, etc.) None of which make sense with the
macros in question. This change modifies the StringData part of the rule
for these macros to a simple string literal - thus disallowing the use
of ToString, ToHexString, etc.
The following ASL operators (macros) are affected:
EisaId
Fprintf
Printf
ToUuid
Unicode
Note: The MS compiler requires the use of string literals for these
operators also.
iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
the list of "known" UUIDs for the input to the ToUUID macro.
Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
NFIT table.
----------------------------------------
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
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: added a remark for an attempt to create a nameseg or namestring
containing lower-case letters. This should prevent declaring multiple
namesegs or namestrings in an attempt to refer to different objects (with
different cases), but actually refer to the same object(s).
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 <[email protected]>
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
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 <[email protected]>.
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