0x19C.50 Stx S3S4Restart
- Nick Kuo
- BSOD Analysis
- 21 Feb, 2024
6: kd> .bugcheck
Bugcheck code 0000019C
Arguments 00000000`00000050 ffff800b`a18fa380 00000000`00000000 00000000`00000000
6: kd> .thread ffff800b`a18fa380
Implicit thread is now ffff800b`a18fa380
6: kd> k
*** Stack trace for last set context - .thread/.cxr resets it
# Child-SP RetAddr Call Site
00 ffffa083`e2305f30 fffff806`1e26c9d5 nt!KiSwapContext+0x76 [minkernel\ntos\ke\amd64\ctxswap.asm @ 134]
01 ffffa083`e2306070 fffff806`1e26ebb7 nt!KiSwapThread+0xab5 [minkernel\ntos\ke\thredsup.c @ 14700]
02 ffffa083`e23061c0 fffff806`1e270ad6 nt!KiCommitThreadWait+0x137 [minkernel\ntos\ke\waitsup.c @ 795]
03 ffffa083`e2306270 fffff806`1e231a63 nt!KeWaitForSingleObject+0x256 [minkernel\ntos\ke\wait.c @ 867]
04 ffffa083`e2306610 fffff806`217e49c8 nt!KeWaitForMultipleObjects+0x5d3 [minkernel\ntos\ke\wait.c @ 350]
05 ffffa083`e2306870 fffff806`217e5485 dxgmms2!VidSchWaitForEvents+0xb0 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 8520]
06 ffffa083`e23068e0 fffff806`217ec2b6 dxgmms2!VidSchSuspendResumeDevice+0x335 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 4209]
07 ffffa083`e23069e0 fffff806`218804ac dxgmms2!VidSchiSuspendResumeDevicesForPowerTransition+0x96 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 29008]
08 ffffa083`e2306a40 fffff806`24828bb7 dxgmms2!VidSchSuspendAdapter+0x4c [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 2303]
09 (Inline Function) --------`-------- dxgkrnl!VIDSCH_EXPORT::VidSchSuspendAdapter+0x21 [onecoreuap\windows\core\dxkernel\dxgkrnl\inc\mmsthunk.hxx @ 182]
0a ffffa083`e2306b00 fffff806`24828e85 dxgkrnl!ADAPTER_RENDER::SuspendScheduler+0x7b [onecoreuap\windows\core\dxkernel\dxgkrnl\core\adapterrender.cxx @ 2982]
0b ffffa083`e2306b40 fffff806`2483ac7a dxgkrnl!ADAPTER_RENDER::FlushScheduler+0x11d [onecoreuap\windows\core\dxkernel\dxgkrnl\core\adapterrender.cxx @ 2814]
0c ffffa083`e2306bc0 fffff806`2483aace dxgkrnl!DXGADAPTER::AcquireCoreSync+0xa2 [onecoreuap\windows\core\dxkernel\dxgkrnl\core\adapter.cxx @ 3669]
0d ffffa083`e2306c20 fffff806`2483945c dxgkrnl!DxgkAcquireAdapterCoreSync+0x62 [onecoreuap\windows\core\dxkernel\dxgkrnl\core\adapterport.cxx @ 450]
0e ffffa083`e2306ca0 fffff806`24882349 dxgkrnl!DpiAcquireCoreSyncAccessSafe+0xe8 [onecoreuap\windows\core\dxkernel\dxgkrnl\port\dpsup.cxx @ 241]
0f ffffa083`e2306ce0 fffff806`2481efa8 dxgkrnl!DxgkPowerOnOffMonitor+0x3cd [onecoreuap\windows\core\dxkernel\dxgkrnl\port\dpfdo.cxx @ 11011]
10 ffffa083`e2306e10 fffff806`2486c08f dxgkrnl!DpiGdoDispatchInternalIoctl+0x578 [onecoreuap\windows\core\dxkernel\dxgkrnl\port\dpgdo.cxx @ 1297]
11 ffffa083`e2306ec0 fffff806`1e2ebef5 dxgkrnl!DpiDispatchInternalIoctl+0xff [onecoreuap\windows\core\dxkernel\dxgkrnl\port\dpport.cxx @ 2788]
12 (Inline Function) --------`-------- nt!IopfCallDriver+0x40 [minkernel\ntos\io\iomgr\mp\objfre\amd64\iomgr.h @ 3709]
13 ffffa083`e2306ff0 fffff640`bce87260 nt!IofCallDriver+0x55 [minkernel\ntos\io\iomgr\iosubs.c @ 3384]
14 ffffa083`e2307030 fffff640`bcecee60 win32kbase!GreDeviceIoControlImpl+0x100
15 ffffa083`e23070d0 fffff640`bcecebff win32kbase!DrvSetWddmDeviceMonitorPowerState+0x240
16 ffffa083`e2307180 fffff640`bce7dbbb win32kbase!DrvSetMonitorPowerState+0x2f
17 ffffa083`e23071b0 fffff640`bce7cd26 win32kbase!PowerOnMonitor+0x21b
18 ffffa083`e2307220 fffff640`bce7c8e4 win32kbase!xxxUserPowerEventCalloutWorker+0x33e
19 ffffa083`e2307330 fffff640`bd205392 win32kbase!xxxUserPowerCalloutWorker+0x264
1a ffffa083`e2307400 fffff640`bdaa6ed5 win32kfull!NtUserUserPowerCalloutWorker+0x22
1b ffffa083`e2307430 fffff806`1e42bbe8 win32k!NtUserUserPowerCalloutWorker+0x15
1c ffffa083`e2307460 00007ff8`84b2c8f4 nt!KiSystemServiceCopyEnd+0x28 [minkernel\ntos\ke\amd64\trap.asm @ 3605]
1d 000000bc`bc33fae8 00007ff8`843339b6 win32u!NtUserUserPowerCalloutWorker+0x14
1e 000000bc`bc33faf0 00007ff8`870aaa65 winsrvext!PowerNotificationThread+0x66
1f 000000bc`bc33fb20 00000000`00000000 ntdll!RtlUserThreadStart+0x35 [minkernel\ntdll\rtlstrt.c @ 1162]
Start with dxgmms2!VidSchSuspendResumeDevice
6: kd> x dxgmms2!VidSchWaitForEvents
fffff806`217e4918 dxgmms2!VidSchWaitForEvents (struct _VIDSCH_GLOBAL *, unsigned long, void **, union _LARGE_INTEGER *, unsigned char)
Check RD for length and R8 for waiting objects (Guessed, but most likely correct?)

6: kd> .frame /c /r 6
06 ffffa083`e23068e0 fffff806`217ec2b6 dxgmms2!VidSchSuspendResumeDevice+0x335 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 4209]
rax=0000000000000000 rbx=ffff800ba15425e0 rcx=0000000000000000
rdx=0000000000000000 rsi=ffff800ba1542628 rdi=0000000000000001
rip=fffff806217e5485 rsp=ffffa083e23068e0 rbp=ffffa083e2306979
r8=0000000000000000 r9=0000000000000000 r10=0000000000000000
r11=0000000000000000 r12=0000000000000001 r13=ffff800ba1542628
r14=ffff800ba8f19000 r15=ffff800ba8f19601
WaitingEventCount=1, WaitingEvents**=ffffa083e23069e0`
6: kd> dq ffffa083`e23069e0
ffffa083`e23069e0 ffffa083`e2306918
WaitingEvent=ffffa083`e2306918. Validated with !thread.
6: kd> !thread ffff800b`a18fa380
THREAD ffff800ba18fa380 Cid 0668.083c Teb: 000000bcbbf34000 Win32Thread: ffff800baa4d1f30 WAIT: (Executive) KernelMode Non-Alertable
ffffa083e2306918 SynchronizationEvent
Now, identify the event name. RBP+67h is the address to the waiting event list.

6: kd> .frame 0n6;dv /t /v
06 ffffa083`e23068e0 fffff806`217ec2b6 dxgmms2!VidSchSuspendResumeDevice+0x335 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 4209]
@rbx struct _VIDSCH_DEVICE * pVidSchDevice = 0xffff800b`a15425e0
@r15b bool bSuspend = true
@r12b bool bPowerTransition = true
ffffa083`e23069f8 _VIDSCH_SUSPENDRESUME_MODE SuspendMode = SuspendResumeAllContexts (0n0)
ffffa083`e23069e8 bool requireSchedulerWorkerThreadAction = true
@r14 struct _VIDSCH_GLOBAL * pVidSchGlobal = 0xffff800b`a8f19000
ffffa083`e2306930 struct _KLOCK_QUEUE_HANDLE LockHandle = struct _KLOCK_QUEUE_HANDLE
ffffa083`e2306910 bool bContextMadeReady = false
ffffa083`e2306911 bool noOpResume = false
@rsi struct _LIST_ENTRY * p = 0xffff800b`a1542628 [ 0xffff800b`9a6d3478 - 0xffff800b`a10e3b78 ]
<unavailable> struct _VIDSCH_CONTEXT * pVidSchContext = <value unavailable>
ffffa083`e23069e0 void *[1] WaitingEvent = void *[1]
ffffa083`e2306950 struct _VIDSCH_DEVICE_COMMAND_DATA Command = struct _VIDSCH_DEVICE_COMMAND_DATA
ffffa083`e2306918 struct _KEVENT CompletionEvent = struct _KEVENT
It is called “CompletionEvent” Inspect live, it is set by a thread in _VIDSCH_GLOBAL WorkerThread field
6: kd> !thread 0xffff800ba6b11500
THREAD ffff800ba6b11500 Cid 0004.0620 Teb: 0000000000000000 Win32Thread: 0000000000000000 RUNNING on processor 5
Not impersonating
DeviceMap ffffb38509c04c10
Owning Process ffff800b89fa9040 Image: System
Attached Process N/A Image: N/A
Wait Start TickCount 21183 Ticks: 1 (0:00:00:00.015)
Context Switch Count 14537 IdealProcessor: 13
UserTime 00:00:00.000
KernelTime 00:00:00.468
Win32 Start Address dxgmms2!VidSchiWorkerThread (0xfffff80621886af0)
Stack Init ffffa083e1e3f5f0 Current ffffa083e1e3e270
Base ffffa083e1e40000 Limit ffffa083e1e39000 Call 0000000000000000
Priority 16 BasePriority 16 PriorityDecrement 0 IoPriority 2 PagePriority 5
Child-SP RetAddr : Args to Child : Call Site
ffffa083`e1e3e9a0 fffff806`1e20eda7 : ffffa083`e1e3ebe0 00000000`000002bc 00000000`0102362f ffff800b`91d48000 : nt!HalpTimerStallExecutionProcessor+0xf8 [minkernel\hals\lib\timers\common\timer.c @ 2834]
ffffa083`e1e3ea40 fffff806`7885342e : 00000000`00000000 ffff800b`974fed80 00000000`00002259 fffff806`78901f83 : nt!KeStallExecutionProcessor+0x27 [minkernel\hals\lib\timers\common\timer.c @ 971]
ffffa083`e1e3ea70 fffff806`78901e62 : 00000000`00000000 00000000`00000000 ffff800b`9e00b1b0 fffff806`788001b1 : amdkmdag!nsGS::IWrapperOsKrnl::DelayInMicroSecond+0x2e [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\gs\src\os\IWrapperOsKrnl.cpp @ 142]
ffffa083`e1e3eaa0 fffff806`78800d0a : ffff800b`9e003008 00000000`00002259 ffff800b`9e00d3c0 ffff800b`9e00b1b0 : amdkmdag!nsHW::CO_TtlMgr::CosCbDelayInUs+0x42 [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\hw\src\components\TtlMgrCosIF.cpp @ 606]
ffffa083`e1e3ead0 fffff806`7880010f : ffff800b`9e003008 00000000`00002259 ffffa083`e1e3ed90 ffff800b`9e00b1b0 : amdkmdag!psp_ring_read_hw_status_regs_3_1+0x4e [c:\constructicon\builds\gfx\one\23.40\drivers\swip\psp\src\3_1\psp_ring_3_1.c @ 622]
(Inline Function) --------`-------- : --------`-------- --------`-------- --------`-------- --------`-------- : amdkmdag!psp_internal_collect_dbg_info+0x117 (Inline Function @ fffff806`7880010f) [c:\constructicon\builds\gfx\one\23.40\drivers\swip\psp\src\psp_diag.c @ 92]
ffffa083`e1e3eb00 fffff806`787ff7e0 : 00000000`00000002 ffffa083`e1e3ec10 ffffa083`00000000 fffff806`00000000 : amdkmdag!psp_collect_diag_info+0x17b [c:\constructicon\builds\gfx\one\23.40\drivers\swip\psp\src\psp_diag.c @ 139]
ffffa083`e1e3eb80 fffff806`787e3910 : 00000000`00000000 fffff806`787f1667 00000000`00000001 ffffa083`e1e3ec10 : amdkmdag!psp_event_notification+0x6c [c:\constructicon\builds\gfx\one\23.40\drivers\swip\psp\src\psp.c @ 1319]
ffffa083`e1e3ebb0 fffff806`787cf6af : ffffa083`00000003 00000000`00000001 ffff800b`00000000 ffff800b`91fb0ac0 : amdkmdag!ipi_psp_notify_event+0x1f8 [c:\constructicon\builds\gfx\one\23.40\drivers\ttl\src\ipi\ipi_psp.c @ 624]
ffffa083`e1e3ec30 fffff806`787d1beb : 00000000`00000001 ffffa083`e1e3ecf0 00000000`00000008 ffff800b`9a6d6840 : amdkmdag!IpiExecuteSwipEntryPoint+0x3df [c:\constructicon\builds\gfx\one\23.40\drivers\ttl\src\ipi\ttl_ipi.c @ 996]
ffffa083`e1e3ec80 fffff806`787d1878 : 00000000`00000000 ffffa083`e1e3ed90 ffffa083`e1e3eda0 00000000`00000000 : amdkmdag!TlsExecuteIpEntrySeq+0x31b [c:\constructicon\builds\gfx\one\23.40\drivers\ttl\src\tls\ttl_tls.c @ 405]
ffffa083`e1e3ed30 fffff806`787d757d : 00000000`00000004 00000000`00000002 ffffa083`e1e3ee40 ffff9059`c2900028 : amdkmdag!TlsExecuteEventSeq+0x50 [c:\constructicon\builds\gfx\one\23.40\drivers\ttl\src\tls\ttl_tls.c @ 223]
ffffa083`e1e3ed60 fffff806`78879376 : 00000000`0000000e 00000000`00000005 00000a00`00000000 00000000`00000000 : amdkmdag!TtlRtsCollectDbgInfo+0x35 [c:\constructicon\builds\gfx\one\23.40\drivers\ttl\src\ttl_rts.c @ 5009]
ffffa083`e1e3ed90 fffff806`7884ace1 : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : amdkmdag!nsHW::CO_TtlMgr::CollectTtlDbgInfo+0x26 [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\hw\src\components\CO_TtlMgr.cpp @ 4255]
(Inline Function) --------`-------- : --------`-------- --------`-------- --------`-------- --------`-------- : amdkmdag!nsGS::CS_Oca::CollectDbgInfoFromObservers+0x4f (Inline Function @ fffff806`7884ace1) [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\gs\src\value\CS_Oca.cpp @ 370]
(Inline Function) --------`-------- : --------`-------- --------`-------- --------`-------- --------`-------- : amdkmdag!nsGS::CS_Oca::CollectDbgInfo_Internal+0x5f (Inline Function @ fffff806`7884ace1) [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\gs\src\value\CS_Oca.cpp @ 352]
ffffa083`e1e3edc0 fffff806`788a7ef6 : fffff806`7884ac70 ffff800b`9623bd70 00000000`0000139f fffff806`7884b8f4 : amdkmdag!nsGS::CS_Oca::CollectDbgInfo+0x71 [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\gs\src\value\CS_Oca.cpp @ 343]
ffffa083`e1e3ee10 fffff806`788445e0 : 00000000`c0000001 00000000`00000000 ffffa083`e1e3f038 ffffa083`e1e3f038 : amdkmdag!nsUSR::CS_OsOcaMgr::CollectDbgInfo+0x96 [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\usr\src\privateFeatures\osFeatures\CS_OsOcaMgr.cpp @ 225]
ffffa083`e1e3ee60 fffff806`78334e2a : ffff800b`939a9000 fffff806`78a5cc18 ffffb385`0c3df8d0 00000000`00000012 : amdkmdag!CO_Dispatcher::DdiCollectDbgInfo+0x30 [c:\constructicon\builds\gfx\one\23.40\drivers\kgd\gmx\layers\CO_Dispatcher.cpp @ 3641]
ffffa083`e1e3ee90 fffff806`2495d495 : ffff800b`9e3fd650 00000000`0000139f ffffa083`e1e3ef79 00000000`00000000 : amdkmdag!Dispatch_CollectDbgInfo+0xfa [c:\constructicon\builds\gfx\one\23.40\drivers\kmd\src\dispatcher_interfaces.cpp @ 2886]
ffffa083`e1e3ef00 fffff806`249a00a7 : ffffb385`1ece8550 ffff800b`a8f17000 ffffb385`1ece8550 ffff800b`a8f17000 : dxgkrnl!DXGADAPTER::_DdiCollectDbgInfoNoLocks+0xe5 [onecoreuap\windows\core\dxkernel\dxgkrnl\core\adapterddi.cxx @ 2638]
(Inline Function) --------`-------- : --------`-------- --------`-------- --------`-------- --------`-------- : dxgkrnl!DXGADAPTER::DdiCollectDbgInfo+0x15 (Inline Function @ fffff806`249a00a7) [onecoreuap\windows\core\dxkernel\dxgkrnl\core\adapterddi.cxx @ 2618]
ffffa083`e1e3efe0 fffff806`2180b91f : 00000000`c54b87df ffff800b`a8f19bd0 ffff800b`acfbe010 ffff800b`a8e7e000 : dxgkrnl!TdrCollectDbgInfoStage1+0x3b7 [onecoreuap\windows\core\dxkernel\dxgkrnl\core\dxgtdr.cxx @ 1315]
ffffa083`e1e3f120 fffff806`218d5299 : ffff800b`a8e7e000 00000000`00000000 ffff800b`a8f19000 ffff800b`a8e7e001 : dxgmms2!VidSchiResetEngine+0x303 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 17807]
ffffa083`e1e3f2d0 fffff806`2189fe83 : ffff800b`a8f19000 00000000`00000000 00000000`00000000 00000000`00000000 : dxgmms2!VidSchiResetEngines+0xb1 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 18103]
ffffa083`e1e3f320 fffff806`217f9597 : ffff9d89`00000000 00000000`00000000 00000000`000051fd 00000000`00989680 : dxgmms2!VidSchiCheckHwProgress+0x31c93 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 5679]
ffffa083`e1e3f3a0 fffff806`21879a8d : ffff800b`a8e7e000 ffff800b`a8e7e000 ffff800b`a8f19000 ffff800b`a8e81be0 : dxgmms2!VidSchWaitForEvents+0x14c7f [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 8566]
ffffa083`e1e3f410 fffff806`217e6e58 : ffffa083`e1e3f440 ffff800b`a8f19000 ffff800b`a195d7a0 ffff800b`9165eb30 : dxgmms2!VidSchiSwitchNodeFromContext+0x11d [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidsch.cxx @ 12443]
ffffa083`e1e3f470 fffff806`21886dbb : ffff800b`aa0f6820 ffff800b`a8f19000 ffff800b`aa1838b0 ffff800b`aa0ee820 : dxgmms2!VidSchiSwitchFromSuspendedDevices+0x158 [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 27096]
(Inline Function) --------`-------- : --------`-------- --------`-------- --------`-------- --------`-------- : dxgmms2!VidSchiSubmitDeviceCommand+0x1f (Inline Function @ fffff806`21886dbb) [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 2797]
(Inline Function) --------`-------- : --------`-------- --------`-------- --------`-------- --------`-------- : dxgmms2!VidSchiSubmitQueueCommand+0x153 (Inline Function @ fffff806`21886dbb) [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 2220]
ffffa083`e1e3f4e0 fffff806`21886bba : 00000000`00000000 fffff806`21886af0 ffff800b`a8f19000 00000000`00050217 : dxgmms2!VidSchiRun_PriorityTable+0x1ab [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 1055]
ffffa083`e1e3f530 fffff806`1e307167 : ffff800b`a6b11500 fffff806`00000001 ffff800b`a8f19000 005fe07f`b8bbbdff : dxgmms2!VidSchiWorkerThread+0xca [onecoreuap\windows\core\dxkernel\dxgkrnl\dxgmms2\vidsch\vidschi.cxx @ 584]
ffffa083`e1e3f570 fffff806`1e41bb94 : ffffe601`8bf5c180 ffff800b`a6b11500 fffff806`1e307110 03b9cf8b`4c10538b : nt!PspSystemThreadStartup+0x57 [minkernel\ntos\ps\psexec.c @ 10885]
ffffa083`e1e3f5c0 00000000`00000000 : ffffa083`e1e40000 ffffa083`e1e39000 00000000`00000000 00000000`00000000 : nt!KiStartSystemThread+0x34 [minkernel\ntos\ke\amd64\threadbg.asm @ 83]