ACPI!StartTimeSlicePassive函数里面处理节点Device (P2P0)的子节点Device (S1F0)的_ADR

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....\......

相关推荐
sitelist3 天前
hal!HalGetBusDataByOffset函数分析得到Device (P2P0)PCI设备空间前4个字节不是0xFFFF说明PCI设备存在--非常重要
halgetbusdata·busdatabyoffset·device-p2p0·0xffff