ACPI!StartTimeSlicePassive函数里面处理节点Device (P2P0)的子节点Device (S1F0)的_ADR
第0部分:
Scope (PCI0)
{
dsdt.dsl:5026: Device (EXPL)
dsdt.dsl:5099: Device (DMAR)
dsdt.dsl:5134: Device (VMGC)
dsdt.dsl:6096: Device (P2P0)
dsdt.dsl:6306: Device (S1F0)
dsdt.dsl:6338: Device (S2F0)
dsdt.dsl:6370: Device (S3F0)
dsdt.dsl:6402: Device (S4F0)
dsdt.dsl:6434: Device (S5F0)
dsdt.dsl:6466: Device (S6F0)
dsdt.dsl:6498: Device (S7F0)
dsdt.dsl:6530: Device (S8F0)
dsdt.dsl:6562: Device (S9F0)
dsdt.dsl:6594: Device (S10F)
dsdt.dsl:6626: Device (S11F)
Device (P2P0)
{
Name (_ADR, 0x00110000) // _ADR: Address
Device (S1F0)
{
Name (_ADR, Zero) // _ADR: Address
Name (_SUN, 0x20) // _SUN: Slot User Number
OperationRegion (REGS, PCI_Config, 0x00, 0x04)
Field (REGS, DWordAcc, NoLock, Preserve)
{
ID, 32
}
第一部分:
1: kd> g
Breakpoint 38 hit
eax=f7420495 ebx=00000000 ecx=f743a928 edx=00000000 esi=f743a9b8 edi=f743b318
eip=f7420495 esp=f791ad68 ebp=f791adac iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
ACPI!StartTimeSlicePassive:
f7420495 55 push ebp
1: kd> g
Breakpoint 39 hit
eax=89876010 ebx=89876000 ecx=f743a934 edx=00000000 esi=f743a928 edi=f743a934
eip=f741d710 esp=f791ad38 ebp=f791ad4c iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
ACPI!RunContext:
f741d710 55 push ebp
1: kd> kc
00 ACPI!RunContext
01 ACPI!DispatchCtxtQueue
02 ACPI!StartTimeSlicePassive
03 ACPI!ACPIWorker
04 nt!PspSystemThreadStartup
05 nt!KiThreadStartup
1: kd> dv
pctxt = 0x89876000
pctxtSave = 0xf741d711
pkthSave = 0x00000008
rc = 0n-1987616768
1: kd> dx -r1 ((ACPI!_ctxt *)0x89876000)
((ACPI!_ctxt *)0x89876000) : 0x89876000 [Type: _ctxt *]
+0x000\] dwSig : 0x54585443 \[Type: unsigned long
+0x004\] pbCtxtEnd : 0x89878000 : 0x43 \[Type: unsigned char \*
+0x008\] listCtxt \[Type: _List
+0x010\] listQueue \[Type: _List
+0x018\] pplistCtxtQueue : 0x0 \[Type: _List \* \*
+0x01c\] plistResources : 0x0 \[Type: _List \*
+0x020\] dwfCtxt : 0x128 \[Type: unsigned long
+0x024\] pnsObj : 0x8996d4d4 \[Type: _NSObj \*
+0x028\] pnsScope : 0x8996d4d4 \[Type: _NSObj \*
+0x02c\] powner : 0x0 \[Type: _objowner \*
+0x030\] pcall : 0x0 \[Type: _call \*
+0x034\] pnctxt : 0x0 \[Type: _nestedctxt \*
+0x038\] dwSyncLevel : 0x0 \[Type: unsigned long
+0x03c\] pbOp : 0x0 \[Type: unsigned char \*
+0x040\] Result \[Type: _ObjData
+0x054\] pfnAsyncCallBack : 0xf7407364 \[Type: void (__cdecl\*)(_NSObj \*,long,_ObjData \*,void \*)
+0x058\] pdataCallBack : 0x898a8aa4 \[Type: _ObjData \*
+0x05c\] pvContext : 0x898a8a78 \[Type: void \*
+0x060\] Timer \[Type: _KTIMER
+0x088\] Dpc \[Type: _KDPC
+0x0a8\] pheapCurrent : 0x898760bc \[Type: _heap \*
+0x0ac\] CtxtData \[Type: _ctxtdata
+0x0bc\] LocalHeap \[Type: _heap
1: kd> dx -r1 ((ACPI!_NSObj *)0x8996d4d4)
((ACPI!_NSObj *)0x8996d4d4) : 0x8996d4d4 [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x8996d45c \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x5244415f \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x8996d45c \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x0 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x8996d4d4
8996d4d4 1c d8 96 89 18 d5 96 89-5c d4 96 89 00 00 00 00 ........\.......
8996d4e4 5f 41 44 52 30 f3 9a 89-5c d4 96 89 00 00 01 00 _ADR0...\.......
8996d4f4 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996d504 00 00 00 00 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
8996d514 00 90 96 89 d4 d4 96 89-b8 d5 96 89 5c d4 96 89 ............\...
8996d524 00 00 00 00 5f 53 55 4e-30 f3 9a 89 d4 d4 96 89 ...._SUN0.......
8996d534 00 00 01 00 00 00 00 00-20 00 00 00 00 00 00 00 ........ .......
8996d544 00 00 00 00 00 00 00 00-00 00 00 00 48 4f 52 47 ............HORG
1: kd> db 0x8996d45c
8996d45c 98 d2 96 89 60 d8 96 89-78 cd 96 89 d4 d4 96 89 ....`...x.......
8996d46c 53 31 46 30 30 f3 9a 89-98 d2 96 89 00 00 06 00 S1F00...........
8996d47c 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996d48c 88 8c 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...
8996d49c 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................
8996d4ac 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996d4bc 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
8996d4cc 44 00 00 00 00 90 96 89-1c d8 96 89 18 d5 96 89 D...............
1: kd> dx -r1 ((ACPI!_NSObj *)0x8996d45c)
((ACPI!_NSObj *)0x8996d45c) : 0x8996d45c [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x8996cd78 \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x8996d4d4 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x30463153 \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x8996d298 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x89968c88 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> dx -r1 ((ACPI!_NSObj *)0x8996d45c)
((ACPI!_NSObj *)0x8996d45c) : 0x8996d45c [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x8996cd78 \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x8996d4d4 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x30463153 \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x8996d298 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x89968c88 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x8996cd78
8996cd78 38 cc 96 89 88 4f 97 89-ac ff 9a 89 f0 cd 96 89 8....O..........
8996cd88 50 32 50 30 30 f3 9a 89-38 cc 96 89 00 00 06 00 P2P00...8.......
8996cd98 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cda8 a0 8e 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...
8996cdb8 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................
8996cdc8 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cdd8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
8996cde8 44 00 00 00 00 90 96 89-b0 4b 97 89 b4 ce 96 89 D........K......
第二部分:
1: kd> g
Breakpoint 45 hit
eax=00000000 ebx=f743a948 ecx=f743a948 edx=00002700 esi=89876000 edi=89877fe4
eip=f741d82f esp=f791ad14 ebp=f791ad34 iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
ACPI!RunContext+0x11f:
f741d82f ff570c call dword ptr [edi+0Ch] ds:0023:89877ff0={ACPI!ProcessEvalObj (f741ef2b)}
1: kd> g
1: kd> g
Breakpoint 11 hit
eax=00000001 ebx=f743a948 ecx=89876000 edx=00002700 esi=89876000 edi=89877fe4
eip=f741d852 esp=f791ad1c ebp=f791ad34 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!RunContext+0x142:
f741d852 e83bceffff call ACPI!AcquireMutex (f741a692)
1: kd> dv rc
rc = 0n0
1: kd> kc
00 ACPI!AsyncCallBack
01 ACPI!RunContext
02 ACPI!DispatchCtxtQueue
03 ACPI!StartTimeSlicePassive
04 ACPI!ACPIWorker
05 nt!PspSystemThreadStartup
06 nt!KiThreadStartup
1: kd> dv
pctxt = 0x89876000
rcCtxt = 0n0
pfnAsyncCallBack = 0x89876000
pdataCallBack = 0x00000008
1: kd> kc
00 ACPI!IsPciDeviceWorker
01 ACPI!ACPIGetWorkerForInteger
02 ACPI!AsyncCallBack
03 ACPI!RunContext
04 ACPI!DispatchCtxtQueue
05 ACPI!StartTimeSlicePassive
06 ACPI!ACPIWorker
07 nt!PspSystemThreadStartup
08 nt!KiThreadStartup
1: kd> kv
ChildEBP RetAddr Args to Child
00 f791acb0 f7407433 8996d4d4 00000000 00000000 ACPI!IsPciDeviceWorker (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 1324]
01 f791acd8 f741f89b 8996d4d4 00000000 898a8aa4 ACPI!ACPIGetWorkerForInteger+0xcf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\nt\get.c @ 4814]
02 f791ad10 f741d905 f7407364 00000000 f743a934 ACPI!AsyncCallBack+0xe7 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sync.c @ 81]
03 f791ad34 f742042d 00000000 f7433d3c f743a928 ACPI!RunContext+0x1f5 (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\ctxt.c @ 649]
04 f791ad4c f74204ec f743a950 f743b318 f743a9b8 ACPI!DispatchCtxtQueue+0xaf (FPO: [Non-Fpo]) (CONV: cdecl) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 150]
05 f791ad64 f74133c5 f743a928 00000000 89981ca0 ACPI!StartTimeSlicePassive+0x57 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 107]
06 f791adac 80d391f0 00000000 00000000 00000000 ACPI!ACPIWorker+0xbf (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\worker.c @ 302]
07 f791addc 80b00d52 f7413306 00000000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]
08 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]
1: kd> dv
AcpiObject = 0x8996d4d4
Status = 0n0
Result = 0x00000000
Context = 0x898a8088
1: kd> dx -r1 ((ACPI!_NSObj *)0x8996d4d4)
((ACPI!_NSObj *)0x8996d4d4) : 0x8996d4d4 [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x8996d45c \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x5244415f \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x8996d45c \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x0 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> dt IS_PCI_DEVICE_STATE 0x898a8088
ACPI!IS_PCI_DEVICE_STATE
+0x000 AcpiObject : 0x8996d45c _NSObj
+0x004 Flags : 0x89
+0x008 Adr : 0
+0x00c Hid : (null)
+0x010 Cid : (null)
+0x014 IsPciDeviceResult : 0 ''
+0x018 RunCompletion : 0n0
+0x01c CompletionHandler : 0xf740d44a void ACPI!GetOpRegionScopeWorker+0
+0x020 CompletionContext : 0x89906e58 Void
+0x024 Result : 0x89906e64 ""
1: kd> u f740d44a
ACPI!GetOpRegionScopeWorker [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 2060]:
f740d44a 55 push ebp
f740d44b 8bec mov ebp,esp
f740d44d 53 push ebx
f740d44e 56 push esi
f740d44f 8b7514 mov esi,dword ptr [ebp+14h]
f740d452 85f6 test esi,esi
f740d454 57 push edi
f740d455 7516 jne ACPI!GetOpRegionScopeWorker+0x23 (f740d46d)
windbg> .open -a fffffffff740d44a
1: kd> dt OP_REGION_SCOPE_STATE 0x89906e58
ACPI!OP_REGION_SCOPE_STATE
+0x000 OpRegion : 0x8996d5b8 _NSObj
+0x004 Parent : 0x8996d45c _NSObj
+0x008 Flags : 0x800
+0x00c IsPciDeviceResult : 0 ''
+0x010 RunCompletion : 0n0
+0x014 CompletionHandler : 0xf740d62c void ACPI!PciConfigSpaceHandlerWorker+0
+0x018 CompletionContext : 0x898a8a10 Void
+0x01c PciObj : 0x8996d5e8 -> (null)
1: kd> u f740d62c
ACPI!PciConfigSpaceHandlerWorker [d:\srv03rtm\base\busdrv\acpi\driver\nt\pciopregion.c @ 544]:
f740d62c 55 push ebp
f740d62d 8bec mov ebp,esp
f740d62f 83ec44 sub esp,44h
f740d632 a1a88c43f7 mov eax,dword ptr [ACPI!__security_cookie (f7438ca8)]
f740d637 53 push ebx
f740d638 8b5d14 mov ebx,dword ptr [ebp+14h]
f740d63b 56 push esi
f740d63c 57 push edi
windbg> .open -a fffffffff740d62c
1: kd> dt PCI_CONFIG_STATE 0x898a8a10
ACPI!PCI_CONFIG_STATE
+0x000 AccessType : 0
+0x004 OpRegion : 0x8996d5b8 _NSObj
+0x008 Address : 0
+0x00c Size : 4
+0x010 Data : 0x897e5de0 -> 0
+0x014 Context : 0
+0x018 CompletionHandler : 0xf7420914 Void
+0x01c CompletionContext : 0x897e40ac Void
+0x020 PciObj : 0x8996d45c _NSObj
+0x024 ParentObj : (null)
+0x028 CompletionHandlerType : 0
+0x02c Flags : 0x1000
+0x030 RunCompletion : 0n0
+0x034 Slot : _PCI_SLOT_NUMBER
+0x038 Bus : 0 ''
+0x039 IsPciDeviceResult : 0 ''
1: kd> u 0xf7420914
ACPI!RestartCtxtCallback [d:\srv03rtm\base\busdrv\acpi\driver\amlinew\sched.c @ 401]:
f7420914 55 push ebp
f7420915 8bec mov ebp,esp
f7420917 56 push esi
f7420918 8b7508 mov esi,dword ptr [ebp+8]
f742091b 57 push edi
f742091c 6a01 push 1
f742091e bf603f43f7 mov edi,offset ACPI!`string' (f7433f60)
f7420923 57 push edi
第三部分:看看当前节点的父设备是不是一个PCI设备,再次阻塞
//
// If we got here, it has an _ADR. Check to see if the
// parent device is a PCI device.
//
if (!(state->Flags & PCISUPP_CHECKED_PARENT)) {
state->Flags |= PCISUPP_CHECKED_PARENT;
state->IsPciDeviceResult = FALSE;
status = IsPciDevice(state->AcpiObject->pnsParent,
IsPciDeviceWorker,
(PVOID)state,
&state->IsPciDeviceResult);
if (status == STATUS_PENDING) {
return status;
}
if (!NT_SUCCESS(status)) {
*state->Result = FALSE;
goto IsPciDeviceExit;
}
}
1: kd> g
Breakpoint 59 hit
eax=8996d45c ebx=00000000 ecx=8996d45c edx=00002707 esi=898a8088 edi=00000103
eip=f740d3b2 esp=f791ac90 ebp=f791acb0 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
ACPI!IsPciDevice:
f740d3b2 55 push ebp
1: kd> kc
00 ACPI!IsPciDevice
01 ACPI!IsPciDeviceWorker
02 ACPI!ACPIGetWorkerForInteger
03 ACPI!AsyncCallBack
04 ACPI!RunContext
05 ACPI!DispatchCtxtQueue
06 ACPI!StartTimeSlicePassive
07 ACPI!ACPIWorker
08 nt!PspSystemThreadStartup
09 nt!KiThreadStartup
1: kd> g
Breakpoint 60 hit
eax=8996cd78 ebx=00000000 ecx=898a809c edx=89859ea0 esi=898a8088 edi=89859ec8
eip=f740d146 esp=f791ac74 ebp=f791ac8c iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
ACPI!IsPciDeviceWorker:
f740d146 55 push ebp
1: kd> kc
00 ACPI!IsPciDeviceWorker
01 ACPI!IsPciDevice
02 ACPI!IsPciDeviceWorker
03 ACPI!ACPIGetWorkerForInteger
04 ACPI!AsyncCallBack
05 ACPI!RunContext
06 ACPI!DispatchCtxtQueue
07 ACPI!StartTimeSlicePassive
08 ACPI!ACPIWorker
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup
1: kd> dv
AcpiObject = 0x8996cd78
Status = 0n0
Result = 0x00000000
Context = 0x89859ea0
1: kd> db 0x8996cd78
8996cd78 38 cc 96 89 88 4f 97 89-ac ff 9a 89 f0 cd 96 89 8....O..........
8996cd88 50 32 50 30 30 f3 9a 89-38 cc 96 89 00 00 06 00 P2P00...8.......
8996cd98 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cda8 a0 8e 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...
8996cdb8 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................
8996cdc8 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cdd8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
8996cde8 44 00 00 00 00 90 96 89-b0 4b 97 89 b4 ce 96 89 D........K......
1: kd> g
Breakpoint 71 hit
eax=89859ea8 ebx=00000000 ecx=8996cd78 edx=89859ea0 esi=89859ea0 edi=00000103
eip=f74076b8 esp=f791ac3c ebp=f791ac70 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!ACPIGet:
f74076b8 55 push ebp
1: kd> g
Breakpoint 33 hit
eax=8996cdf0 ebx=f743b938 ecx=89859e84 edx=00000000 esi=89859e58 edi=89859e60
eip=f7415242 esp=f791abe0 ebp=f791ac38 iopl=0 nv up ei pl nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202
ACPI!AMLIAsyncEvalObject:
f7415242 55 push ebp
1: kd> g
Breakpoint 37 hit
eax=8996cdf0 ebx=00000000 ecx=8996cdf0 edx=00000000 esi=8996cdf0 edi=89859e98
eip=f741f8c9 esp=f791abac ebp=f791abdc iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
ACPI!AsyncEvalObject:
f741f8c9 55 push ebp
1: kd> g
Breakpoint 42 hit
eax=00000000 ebx=8996ce0c ecx=8996ce0c edx=89782fe4 esi=f7438ca8 edi=00000000
eip=f74207d4 esp=f791ab88 ebp=f791aba8 iopl=0 nv up ei ng nz ac pe cy
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000297
ACPI!RestartContext:
f74207d4 55 push ebp
1: kd> dv
pctxt = 0x89781000
fDelayExecute = 0x00 ''
1: kd> g
Breakpoint 65 hit
eax=00008004 ebx=89876000 ecx=8997e000 edx=00002707 esi=f743a928 edi=f743a934
eip=f742042d esp=f791ad3c ebp=f791ad4c iopl=0 nv up ei pl zr na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246
ACPI!DispatchCtxtQueue+0xaf:
f742042d 57 push edi
1: kd> x acpi!greadyqueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
+0x000\] dwfCtxtQ : 0x0 \[Type: unsigned long
+0x004\] pkthCurrent : 0x0 \[Type: _KTHREAD \*
+0x008\] pctxtCurrent : 0x0 \[Type: _ctxt \*
+0x00c\] plistCtxtQ : 0x89878010 \[Type: _List \*
+0x010\] dwmsTimeSliceLength : 0x64 \[Type: unsigned long
+0x014\] dwmsTimeSliceInterval : 0x64 \[Type: unsigned long
+0x018\] pfnPauseCallback : 0x0 \[Type: void (__cdecl\*)(void \*)
+0x01c\] PauseCBContext : 0x0 \[Type: void \*
+0x020\] mutCtxtQ \[Type: _mutex
+0x028\] Timer \[Type: _KTIMER
+0x050\] DpcStartTimeSlice \[Type: _KDPC
+0x070\] DpcExpireTimeSlice \[Type: _KDPC
+0x090\] WorkItem \[Type: _WORK_QUEUE_ITEM
1: kd> dx -r1 ((ACPI!_List *)0x89878010)
((ACPI!_List *)0x89878010) : 0x89878010 [Type: _List *]
+0x000\] plistPrev : 0x89781010 \[Type: _List \*
+0x004\] plistNext : 0x8987a010 \[Type: _List \*
第四部分:S1F0又阻塞了,继续处理S2F0
1: kd> g
Breakpoint 39 hit
eax=89878010 ebx=89878000 ecx=00008004 edx=00002707 esi=f743a928 edi=f743a934
eip=f741d710 esp=f791ad38 ebp=f791ad4c iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000206
ACPI!RunContext:
f741d710 55 push ebp
1: kd> kc
00 ACPI!RunContext
01 ACPI!DispatchCtxtQueue
02 ACPI!StartTimeSlicePassive
03 ACPI!ACPIWorker
04 nt!PspSystemThreadStartup
05 nt!KiThreadStartup
1: kd> dv
pctxt = 0x89878000
pctxtSave = 0xf741d711
pkthSave = 0x00000008
rc = 0n-1987608576
1: kd> dx -r1 ((ACPI!_ctxt *)0x89878000)
((ACPI!_ctxt *)0x89878000) : 0x89878000 [Type: _ctxt *]
+0x000\] dwSig : 0x54585443 \[Type: unsigned long
+0x004\] pbCtxtEnd : 0x8987a000 : 0x43 \[Type: unsigned char \*
+0x008\] listCtxt \[Type: _List
+0x010\] listQueue \[Type: _List
+0x018\] pplistCtxtQueue : 0x0 \[Type: _List \* \*
+0x01c\] plistResources : 0x0 \[Type: _List \*
+0x020\] dwfCtxt : 0x128 \[Type: unsigned long
+0x024\] pnsObj : 0x8996d8a4 \[Type: _NSObj \*
+0x028\] pnsScope : 0x8996d8a4 \[Type: _NSObj \*
+0x02c\] powner : 0x0 \[Type: _objowner \*
+0x030\] pcall : 0x0 \[Type: _call \*
+0x034\] pnctxt : 0x0 \[Type: _nestedctxt \*
+0x038\] dwSyncLevel : 0x0 \[Type: unsigned long
+0x03c\] pbOp : 0x0 \[Type: unsigned char \*
+0x040\] Result \[Type: _ObjData
+0x054\] pfnAsyncCallBack : 0xf7407364 \[Type: void (__cdecl\*)(_NSObj \*,long,_ObjData \*,void \*)
+0x058\] pdataCallBack : 0x898a8b74 \[Type: _ObjData \*
+0x05c\] pvContext : 0x898a8b48 \[Type: void \*
+0x060\] Timer \[Type: _KTIMER
+0x088\] Dpc \[Type: _KDPC
+0x0a8\] pheapCurrent : 0x898780bc \[Type: _heap \*
+0x0ac\] CtxtData \[Type: _ctxtdata
+0x0bc\] LocalHeap \[Type: _heap
1: kd> dx -r1 ((ACPI!_NSObj *)0x8996d8a4)
((ACPI!_NSObj *)0x8996d8a4) : 0x8996d8a4 [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x8996d860 \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x5244415f \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x8996d860 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x0 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x8996d8a4
8996d8a4 f4 db 96 89 e8 d8 96 89-60 d8 96 89 00 00 00 00 ........`.......
8996d8b4 5f 41 44 52 30 f3 9a 89-60 d8 96 89 00 00 01 00 _ADR0...`.......
8996d8c4 00 00 00 00 00 00 01 00-00 00 00 00 00 00 00 00 ................
8996d8d4 00 00 00 00 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
8996d8e4 00 90 96 89 a4 d8 96 89-88 d9 96 89 60 d8 96 89 ............`...
8996d8f4 00 00 00 00 5f 53 55 4e-30 f3 9a 89 a4 d8 96 89 ...._SUN0.......
8996d904 00 00 01 00 00 00 00 00-21 00 00 00 00 00 00 00 ........!.......
8996d914 00 00 00 00 00 00 00 00-00 00 00 00 48 4f 52 47 ............HORG
1: kd> db 0x8996d860
8996d860 5c d4 96 89 38 dc 96 89-78 cd 96 89 a4 d8 96 89 \...8...x.......
8996d870 53 32 46 30 30 f3 9a 89-1c d8 96 89 00 00 06 00 S2F00...........
8996d880 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996d890 88 8a 96 89 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
8996d8a0 00 90 96 89 f4 db 96 89-e8 d8 96 89 60 d8 96 89 ............`...
8996d8b0 00 00 00 00 5f 41 44 52-30 f3 9a 89 60 d8 96 89 ...._ADR0...`...
8996d8c0 00 00 01 00 00 00 00 00-00 00 01 00 00 00 00 00 ................
8996d8d0 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
1: kd> x acpi!greadyqueue
f743a928 ACPI!gReadyQueue = struct _ctxtq
1: kd> dx -r1 (*((ACPI!_ctxtq *)0xf743a928))
(*((ACPI!_ctxtq *)0xf743a928)) [Type: _ctxtq]
+0x000\] dwfCtxtQ : 0x0 \[Type: unsigned long
+0x004\] pkthCurrent : 0x0 \[Type: _KTHREAD \*
+0x008\] pctxtCurrent : 0x0 \[Type: _ctxt \*
+0x00c\] plistCtxtQ : 0x8987a010 \[Type: _List \*
+0x010\] dwmsTimeSliceLength : 0x64 \[Type: unsigned long
+0x014\] dwmsTimeSliceInterval : 0x64 \[Type: unsigned long
+0x018\] pfnPauseCallback : 0x0 \[Type: void (__cdecl\*)(void \*)
+0x01c\] PauseCBContext : 0x0 \[Type: void \*
+0x020\] mutCtxtQ \[Type: _mutex
+0x028\] Timer \[Type: _KTIMER
+0x050\] DpcStartTimeSlice \[Type: _KDPC
+0x070\] DpcExpireTimeSlice \[Type: _KDPC
+0x090\] WorkItem \[Type: _WORK_QUEUE_ITEM
1: kd> dx -r1 ((ACPI!_List *)0x8987a010)
((ACPI!_List *)0x8987a010) : 0x8987a010 [Type: _List *]
+0x000\] plistPrev : 0x89781010 \[Type: _List \*
+0x004\] plistNext : 0x8987c010 \[Type: _List \*
1: kd> dx -r1 ((ACPI!_List *)0x89781010)
((ACPI!_List *)0x89781010) : 0x89781010 [Type: _List *]
+0x000\] plistPrev : 0x8985e010 \[Type: _List \*
+0x004\] plistNext : 0x8987a010 \[Type: _List \*
1: kd> dx -r1 ((ACPI!_List *)0x8985e010)
((ACPI!_List *)0x8985e010) : 0x8985e010 [Type: _List *]
+0x000\] plistPrev : 0x8985c010 \[Type: _List \*
+0x004\] plistNext : 0x89781010 \[Type: _List \*
第五部分:
1: kd> g
Breakpoint 60 hit
eax=f740d146 ebx=00000000 ecx=00000001 edx=00002707 esi=89900e30 edi=89900e5c
eip=f740d146 esp=f791acb4 ebp=f791acd8 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
ACPI!IsPciDeviceWorker:
f740d146 55 push ebp
1: kd> dv
AcpiObject = 0x899738bc
Status = 0n0
Result = 0x00000000
Context = 0x89900e78
1: kd> dx -r1 ((ACPI!_NSObj *)0x899738bc)
((ACPI!_NSObj *)0x899738bc) : 0x899738bc [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x89973878 \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x5244415f \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x89973878 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x0 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x899738bc
899738bc 0c 3c 97 89 00 39 97 89-78 38 97 89 00 00 00 00 .<...9..x8......
899738cc 5f 41 44 52 30 f3 9a 89-78 38 97 89 00 00 01 00 _ADR 0...x8......
899738dc 00 00 00 00 00 00 1a 00-00 00 00 00 00 00 00 00 ................
899738ec 00 00 00 00 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
899738fc 00 90 96 89 bc 38 97 89-a0 39 97 89 78 38 97 89 .....8...9..x8..
8997390c 00 00 00 00 5f 53 55 4e-30 f3 9a 89 bc 38 97 89 ...._SUN0....8..
8997391c 00 00 01 00 00 00 00 00-3a 00 00 00 00 00 00 00 ........:.......
8997392c 00 00 00 00 00 00 00 00-00 00 00 00 48 4f 52 47 ............HORG
1: kd> db 0x89973878
89973878 a0 34 97 89 50 3c 97 89-78 cd 96 89 bc 38 97 89 .4..P<..x....8..
89973888 53 32 37 46 30 f3 9a 89-34 38 97 89 00 00 06 00 S27F0...48......
89973898 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
899738a8 50 98 9a 89 00 00 00 00-48 4e 53 4f 44 00 00 00 P.......HNSOD...
899738b8 00 90 96 89 0c 3c 97 89-00 39 97 89 78 38 97 89 .....<...9..x8..
899738c8 00 00 00 00 5f 41 44 52-30 f3 9a 89 78 38 97 89 ...._ADR0...x8..
899738d8 00 00 01 00 00 00 00 00-00 00 1a 00 00 00 00 00 ................
899738e8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
1: kd> dx -r1 ((ACPI!_NSObj *)0x89973878)
((ACPI!_NSObj *)0x89973878) : 0x89973878 [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x8996cd78 \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x899738bc \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x46373253 \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x89973834 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x899a9850 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x8996cd78
8996cd78 38 cc 96 89 88 4f 97 89-ac ff 9a 89 f0 cd 96 89 8....O..........
8996cd88 50 32 50 30 30 f3 9a 89-38 cc 96 89 00 00 06 00 P2P00...8.......
8996cd98 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cda8 a0 8e 96 89 00 00 00 00-48 4f 52 47 34 00 00 00 ........HORG4...
8996cdb8 00 90 96 89 00 00 00 00-04 00 00 00 02 00 00 00 ................
8996cdc8 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
8996cdd8 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
8996cde8 44 00 00 00 00 90 96 89-b0 4b 97 89 b4 ce 96 89 D........K......
第六部分:
1: kd> g
Breakpoint 60 hit
eax=f740d146 ebx=00000000 ecx=00000001 edx=00002707 esi=899c5788 edi=899c57b4
eip=f740d146 esp=f791acb4 ebp=f791acd8 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000282
ACPI!IsPciDeviceWorker:
f740d146 55 push ebp
1: kd> dv
AcpiObject = 0x89946260
Status = 0n0
Result = 0x00000000
Context = 0x899c57d0
1: kd> db 0x89946260
89946260 a8 65 94 89 a4 62 94 89-e8 61 94 89 00 00 00 00 .e...b...a......
89946270 5f 41 44 52 30 f3 9a 89-e8 61 94 89 00 00 01 00 _ADR0....a......
89946280 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
89946290 00 00 00 00 00 00 00 00-48 4e 53 4f 44 00 00 00 ........HNSOD...
899462a0 00 20 94 89 60 62 94 89-44 63 94 89 e8 61 94 89 . ..`b..Dc...a..
899462b0 00 00 00 00 5f 53 55 4e-30 f3 9a 89 60 62 94 89 ...._SUN0...`b..
899462c0 00 00 01 00 00 00 00 00-a0 00 00 00 00 00 00 00 ................
899462d0 00 00 00 00 00 00 00 00-00 00 00 00 48 4d 45 54 ............HMET
1: kd> dx -r1 ((ACPI!_NSObj *)0x89946260)
((ACPI!_NSObj *)0x89946260) : 0x89946260 [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x899461e8 \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x0 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x5244415f \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x899461e8 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x0 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x899461e8
899461e8 a4 61 94 89 60 5d 94 89-1c 5d 94 89 60 62 94 89 .a..`]...]..`b..
899461f8 53 31 46 30 30 f3 9a 89-a4 61 94 89 00 00 06 00 S1F0 0....a......
89946208 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
89946218 40 02 94 89 00 00 00 00-48 4f 52 47 34 00 00 00 @.......HORG4...
89946228 00 20 94 89 00 00 00 00-04 00 00 00 02 00 00 00 . ..............
89946238 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
89946248 00 00 00 00 00 00 00 00-00 00 00 00 48 4e 53 4f ............HNSO
89946258 44 00 00 00 00 20 94 89-a8 65 94 89 a4 62 94 89 D.... ...e...b..
1: kd> dx -r1 ((ACPI!_NSObj *)0x899461e8)
((ACPI!_NSObj *)0x899461e8) : 0x899461e8 [Type: _NSObj *]
+0x000\] list \[Type: _List
+0x008\] pnsParent : 0x89945d1c \[Type: _NSObj \*
+0x00c\] pnsFirstChild : 0x89946260 \[Type: _NSObj \*
+0x010\] dwNameSeg : 0x30463153 \[Type: unsigned long
+0x014\] hOwner : 0x899af330 \[Type: void \*
+0x018\] pnsOwnedNext : 0x899461a4 \[Type: _NSObj \*
+0x01c\] ObjData \[Type: _ObjData
+0x030\] Context : 0x89940240 \[Type: void \*
+0x034\] dwRefCount : 0x0 \[Type: unsigned long
1: kd> db 0x89945d1c
89945d1c 1c 0f 96 89 ec 65 94 89-ac ff 9a 89 60 5d 94 89 .....e......`]..
89945d2c 50 45 34 30 30 f3 9a 89-d8 5c 94 89 00 00 06 00 PE400....\......
89945d3c 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
89945d4c 70 04 94 89 00 00 00 00-48 4e 53 4f 44 00 00 00 p.......HNSOD...
89945d5c 00 20 94 89 e8 61 94 89-04 5e 94 89 1c 5d 94 89 . ...a...^...]..
89945d6c 00 00 00 00 5f 41 44 52-30 f3 9a 89 1c 5d 94 89 ...._ADR0....]..
89945d7c 00 00 01 00 00 00 00 00-00 00 15 00 00 00 00 00 ................
89945d8c 00 00 00 00 00 00 00 00-00 00 00 00 48 50 4b 47 ............HPKG
1: kd> g
Breakpoint 60 hit
eax=89945d1c ebx=00000000 ecx=899c57e4 edx=89859858 esi=899c57d0 edi=89859880
eip=f740d146 esp=f791ac74 ebp=f791ac8c iopl=0 nv up ei ng nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000286
ACPI!IsPciDeviceWorker:
f740d146 55 push ebp
1: kd> kc
00 ACPI!IsPciDeviceWorker
01 ACPI!IsPciDevice
02 ACPI!IsPciDeviceWorker
03 ACPI!ACPIGetWorkerForInteger
04 ACPI!AsyncCallBack
05 ACPI!RunContext
06 ACPI!DispatchCtxtQueue
07 ACPI!StartTimeSlicePassive
08 ACPI!ACPIWorker
09 nt!PspSystemThreadStartup
0a nt!KiThreadStartup
1: kd> dv
AcpiObject = 0x89945d1c
Status = 0n0
Result = 0x00000000
Context = 0x89859858
1: kd> db 0x89945d1c
89945d1c 1c 0f 96 89 ec 65 94 89-ac ff 9a 89 60 5d 94 89 .....e......`]..
89945d2c 50 45 34 30 30 f3 9a 89-d8 5c 94 89 00 00 06 00 PE400....\......