Skip to content

Instantly share code, notes, and snippets.

@kuruczgy
Last active October 3, 2024 10:51
Show Gist options
  • Save kuruczgy/4c7b0ca5d1daf8aaa1bbd326af2df1c6 to your computer and use it in GitHub Desktop.
Save kuruczgy/4c7b0ca5d1daf8aaa1bbd326af2df1c6 to your computer and use it in GitHub Desktop.
How to get ACPI execution traces on Windows ARM
  1. Set up WinDbg for kernel debugging, see this article: https://konradybcio.pl/windbg/
  2. Download DebugView, extract it and start Dbgview64a.exe as administrator.
  3. In the menu, enable Capture > Capture Kernel. Make sure Options > Force Carriage Returns is turned off, as this messes up the output. (You might want to also turn off the Capture > Capture (Global) Win32 options, they seem to make DebugView crash more often.)
  4. In WinDgb, type the following commands:
    !amli dns x
    !amli set traceon
    !amli set spewon
    The !amli dns x is just a bogus command and will fail, but it seems to be required to load the ACPI Debugger, and without it the subsequent commands will fail.
  5. Observe the output in DebugView. I recommend saving the output to a text file and viewing it in a proper text editor. You can find an example dump below.
00000001 0.00000000 ffffd10dc982b2cb: }
00000002 0.00002570 AMLI: FFFFD10DBC510080: \_SB.GIO0._EVT(0x340)
00000003 0.00004020
00000004 0.00004870 ffffd10dc981194a: {
00000005 0.00007940 ffffd10dc981194a: | While(One)
00000006 0.00008870 ffffd10dc981194e: | {
00000007 0.00012600 ffffd10dc981194e: | | Name(_T_0,0x0)
00000008 0.00016860 ffffd10dc9811955: | | Store(Arg0=0x340,_T_0)=0x340
00000009 0.00021430 ffffd10dc981195b: | | If(LEqual(_T_0=0x340,0x140)=0x0)
00000010 0.00022520 ffffd10dc9811a34: | | {
00000011 0.00027170 ffffd10dc9811a34: | | | If(LEqual(_T_0=0x340,0x340)=0xffffffffffffffff)
00000012 0.00028420 ffffd10dc9811a3f: | | | {
00000013 0.00039660 ffffd10dc9811a3f: | | | | If(LEqual(\_SB_.LID0.LIDS=0x0,Zero)=0xffffffffffffffff)
00000014 0.00041080 ffffd10dc9811a53: | | | | {
00000015 0.00078790 ffffd10dc9811a53: | | | | | Store(\_SB_.GIO0.LIDR=0x0,\_SB_.LID0.LIDB)=0x0
00000016 0.00089880 ffffd10dc9811a72: | | | | | Store(\_SB_.GIO0.LIDR=0x0,\_SB_.GPU0.LIDB)=0x0
00000017 0.00094250 ffffd10dc9811a91: | | | | | Notify(\_SB_.LID0,0x80)
00000018 0.00095700 ffffd10dc9811a9e: | | | | }
00000019 0.00096960 ffffd10dc9811a9e: | | | }
00000020 0.00098050 ffffd10dc9811b36: | | }
00000021 0.00099380 ffffd10dc9811b36: | | Break
00000022 0.00100300 ffffd10dc9811b37: | }
00000023 0.00109940 ffffd10dc9811b37: }
00000024 0.00110360 AMLI: FFFFD10DBC510080: \_SB.LID0._LID()
00000025 0.00111000
00000026 0.00111690 ffffd10dc985efb2: {
00000027 0.00113840 ffffd10dc985efb2: | Return(LIDB=0x0)
00000028 0.09432340 ffffd10dc985efb7: }
00000029 0.09433630 AMLI: FFFFD10DBC564080: \_SB.SDC2._STA()
00000030 0.09438650
00000031 0.09439910 ffffd10dc97145d2: {
00000032 0.09442800 ffffd10dc97145d2: | Return(0xf)
00000033 0.09449540 ffffd10dc97145d5: }
00000034 0.09450070 AMLI: FFFFD10DBD5EF080: \_SB.SDC2._STA()
00000035 0.09451830
00000036 0.09452580 ffffd10dc97145d2: {
00000037 0.09454230 ffffd10dc97145d2: | Return(0xf)
00000038 0.78991580 ffffd10dc97145d5: }
00000039 0.78991961 AMLI: FFFFD10DBC563080: \_SB.SDC2._STA()
00000040 0.78993171
00000041 0.78993648 ffffd10dc97145d2: {
00000042 0.78994262 ffffd10dc97145d2: | Return(0xf)
00000043 0.78995150 ffffd10dc97145d5: }
00000044 0.78995228 AMLI: FFFFD10DBD5EF080: \_SB.SDC2._DIS()
00000045 0.78995591
00000046 0.78995740 ffffd10dc971444a: {
00000047 0.78996319 ffffd10dc971444a: }
00000048 0.78996378 AMLI: FFFFD10DBD5EF080: \_SB.SDC2._STA()
00000049 0.78996593
00000050 0.78996730 ffffd10dc97145d2: {
00000051 0.78997070 ffffd10dc97145d2: | Return(0xf)
00000052 2.10104609 ffffd10dc97145d5: }
00000053 2.10106349 AMLI: FFFFD10DBC564080: \_SB.GPU0._STA()
00000054 2.10109448
00000055 2.10110450 ffffd10dc980e55a: {
00000056 2.10113335 ffffd10dc980e55a: | Return(0xf)
00000057 2.10118008 ffffd10dc980e55d: }
00000058 2.10118389 AMLI: FFFFD10DBD5EF080: \_SB.GPU0._STA()
00000059 2.10120034
00000060 2.10120726 ffffd10dc980e55a: {
00000061 2.10122323 ffffd10dc980e55a: | Return(0xf)
00000062 2.13318229 ffffd10dc980e55d: }
00000063 2.13319755 AMLI: FFFFD10DDD395500: \_SB.GPU0._STA()
00000064 2.13325334
00000065 2.13326120 ffffd10dc980e55a: {
00000066 2.13328528 ffffd10dc980e55a: | Return(0xf)
00000067 2.13333797 ffffd10dc980e55d: }
00000068 2.13334107 AMLI: FFFFD10DBD5EF080: \_SB.GPU0._STA()
00000069 2.13335323
00000070 2.13335848 ffffd10dc980e55a: {
00000071 2.13336968 ffffd10dc980e55a: | Return(0xf)
00000072 2.22573709 ffffd10dc980e55d: }
00000073 2.22575307 AMLI: FFFFD10DBC510080: \_SB.GIO0._EVT(0x340)
00000074 2.22576165
00000075 2.22576451 ffffd10dc981194a: {
00000076 2.22577882 ffffd10dc981194a: | While(One)
00000077 2.22578168 ffffd10dc981194e: | {
00000078 2.22580028 ffffd10dc981194e: | | Name(_T_0,0x0)
00000079 2.22581840 ffffd10dc9811955: | | Store(Arg0=0x340,_T_0)=0x340
00000080 2.22590971 ffffd10dc981195b: | | If(LEqual(_T_0=0x340,0x140)=0x0)
00000081 2.22591329 ffffd10dc9811a34: | | {
00000082 2.22592878 ffffd10dc9811a34: | | | If(LEqual(_T_0=0x340,0x340)=0xffffffffffffffff)
00000083 2.22593284 ffffd10dc9811a3f: | | | {
00000084 2.22600484 ffffd10dc9811a3f: | | | | If(LEqual(\_SB_.LID0.LIDS=0x0,Zero)=0xffffffffffffffff)
00000085 2.22600961 ffffd10dc9811a53: | | | | {
00000086 2.22626138 ffffd10dc9811a53: | | | | | Store(\_SB_.GIO0.LIDR=0x1,\_SB_.LID0.LIDB)=0x1
00000087 2.22630930 ffffd10dc9811a72: | | | | | Store(\_SB_.GIO0.LIDR=0x1,\_SB_.GPU0.LIDB)=0x1
00000088 2.22633076 ffffd10dc9811a91: | | | | | Notify(\_SB_.LID0,0x80)
00000089 2.22633553 ffffd10dc9811a9e: | | | | }
00000090 2.22633958 ffffd10dc9811a9e: | | | }
00000091 2.22634315 ffffd10dc9811b36: | | }
00000092 2.22634912 ffffd10dc9811b36: | | Break
00000093 2.22635198 ffffd10dc9811b37: | }
00000094 2.22641730 ffffd10dc9811b37: }
00000095 2.22641850 AMLI: FFFFD10DBC510080: \_SB.LID0._LID()
00000096 2.22642088
00000097 2.22642303 ffffd10dc985efb2: {
00000098 2.22643113 ffffd10dc985efb2: | Return(LIDB=0x1)
00000099 2.32370734 ffffd10dc985efb7: }
00000100 2.32371283 AMLI: FFFFD10DBC563080: \_SB.SDC2._STA()
00000101 2.32372665
00000102 2.32373190 ffffd10dc97145d2: {
00000103 2.32374430 ffffd10dc97145d2: | Return(0xf)
00000104 2.32377195 ffffd10dc97145d5: }
00000105 2.32377481 AMLI: FFFFD10DBD5EF080: \_SB.SDC2._STA()
00000106 2.32378244
00000107 2.32378531 ffffd10dc97145d2: {
00000108 2.32379246 ffffd10dc97145d2: | Return(0xf)
00000109 2.38135934 ffffd10dc97145d5: }
00000110 2.38137603 AMLI: FFFFD10DBC564080: \_SB.SDC2._STA()
00000111 2.38140321
00000112 2.38141370 ffffd10dc97145d2: {
00000113 2.38144279 ffffd10dc97145d2: | Return(0xf)
00000114 2.38147950 ffffd10dc97145d5: }
00000115 2.38148355 AMLI: FFFFD10DBD5EF080: \_SB.SDC2._DIS()
00000116 2.38150167
00000117 2.38150883 ffffd10dc971444a: {
00000118 2.38153839 ffffd10dc971444a: }
00000119 2.38154197 AMLI: FFFFD10DBD5EF080: \_SB.SDC2._STA()
00000120 2.38155270
00000121 2.38156009 ffffd10dc97145d2: {
00000122 2.38157630 ffffd10dc97145d2: | Return(0xf)
00000123 2.74847031 ffffd10dc97145d5: }
00000124 2.74847531 AMLI: FFFFD10DDD395500: \_SB.ADSP.ADCM.AUCD.QCRT._STA()
00000125 2.74848914
00000126 2.74849391 ffffd10dc98014aa: {
00000127 2.74850488 ffffd10dc98014aa: | Return(0xf)
00000128 2.74853802 ffffd10dc98014ad: }
00000129 2.74854088 AMLI: FFFFD10DBD5EF080: \_SB.ADSP.ADCM.AUCD.QCRT._STA()
00000130 2.74854684
00000131 2.74854946 ffffd10dc98014aa: {
00000132 2.74855566 ffffd10dc98014aa: | Return(0xf)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment