ACPI!AcpiInitIrqArbiter函数分析中的HalPciInterfaceReadConfig

ACPI!AcpiInitIrqArbiter函数分析中的HalPciInterfaceReadConfig

THREAD 899a1020 Cid 0004.0008 Teb: 00000000 Win32Thread: 00000000 RUNNING on processor 0

IRP List:

899bf5b0: (0006,0190) Flags: 00000000 Mdl: 00000000

Not impersonating

DeviceMap e10003d8

Owning Process 899a2278 Image: System

Attached Process N/A Image: N/A

Wait Start TickCount 274650131 Ticks: 198 (0:00:00:03.093)

Context Switch Count 13 IdealProcessor: 0

UserTime 00:00:00.000

KernelTime 00:00:01.140

Stack Init f789b000 Current f789a124 Base f789b000 Limit f7898000 Call 00000000

Priority 31 BasePriority 8 PriorityDecrement 0 IoPriority 0 PagePriority 0

ChildEBP RetAddr

f789a0c0 804f14b2 hal!KfLowerIrql+0x30 (FPO: [0,0,0]) [d:\srv03rtm\base\hals\halmps\i386\mpirql.asm @ 344]

f789a0c8 804f1418 hal!HalpPCIReleaseSynchronzationType1+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halx86\i386\ixpcibus.c @ 1137]

f789a0f4 804f189e hal!HalpPCIConfig+0x60 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halx86\i386\ixpcibus.c @ 1079]

f789a114 804f2856 hal!HalpReadPCIConfig+0x46 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halx86\i386\ixpcibus.c @ 929]

f789a1a4 f744760d hal!HaliPciInterfaceReadConfig+0x32 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halx86\i386\pmpcisup.c @ 359]

f789a248 f7408a18 ACPI!AcpiInitIrqArbiter+0x297 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\irqarb.c @ 764]

f789a27c f744f51e ACPI!ACPIInitStartACPI+0xea (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\init.c @ 1276]

f789a2a8 f740410e ACPI!ACPIRootIrpStartDevice+0x134 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\root.c @ 1340]

f789a2dc 80a2675c ACPI!ACPIDispatchIrp+0x19e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\dispatch.c @ 690]

f789a2f8 80c95e00 nt!IofCallDriver+0x62 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\srv03rtm\base\ntos\io\iomgr\iosubs.c @ 2237]

f789a328 80c95f56 nt!IopSynchronousCall+0x1aa (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpirp.c @ 258]

f789a36c 80c8f415 nt!IopStartDevice+0x78 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpirp.c @ 334]

f789a388 80c94d55 nt!PipProcessStartPhase1+0x9d (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 5014]

f789a5d4 80a2dde9 nt!PipProcessDevNodeTree+0x1c7 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 4648]

f789a618 80a2e161 nt!PipDeviceActionWorker+0xcd (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 710]

f789a630 80e69358 nt!PipRequestDeviceAction+0x139 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 598]

f789a694 80e655c7 nt!IopInitializeBootDrivers+0x392 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpinit.c @ 1440]

f789a838 80e632fd nt!IoInitSystem+0x70b (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\iomgr\ioinit.c @ 665]

f789adac 80d391f0 nt!Phase1Initialization+0x9b3 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\init\init.c @ 2221]

f789addc 80b00d52 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]

00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]

NTSTATUS

AcpiInitIrqArbiter(

PDEVICE_OBJECT RootFdo

)

{

//

// Scan the machine looking at its initial configuration. If

// it a) has a cardbus controller and b) all the boot configs

// for PCI devices are the same, then record that boot config

// vector for use in AcpiArbGetNextAllocationRange.

//

// Note: This algorithm only scans the first PCI root and

// its children. The assumption is that multiple root machines

// will be running in APIC mode or have many different boot

// configs.

//

扫描机器,查看其初始配置。如果

a)它有一个卡总线控制器,并且

b)PCI设备的所有引导配置都相同,那么记录该引导配置向量,以在AcpiArbGetNextAllocationRange中使用。

注:此算法仅扫描第一个PCI根及其子节点。假设多台根机器将以APIC模式运行,或者具有许多不同的引导配置。

while (TRUE) {

pciSlot.u.AsULONG = 0;

for (deviceNum = 0; deviceNum < PCI_MAX_DEVICES; deviceNum++) {

for (funcNum = 0; funcNum < PCI_MAX_FUNCTION; funcNum++) {

pciSlot.u.bits.DeviceNumber = deviceNum;

pciSlot.u.bits.FunctionNumber = funcNum;

HalPciInterfaceReadConfig(NULL,

currentBus,

pciSlot.u.AsULONG,

pciData,

0,

PCI_COMMON_HDR_LENGTH);

1: kd> bp hal!HaliPciInterfaceReadConfig

1: kd> g

Breakpoint 91 hit

eax=804fb6c4 ebx=00000016 ecx=00000000 edx=00000c0a esi=00000000 edi=00000000

eip=804f2824 esp=f789a1a8 ebp=f789a248 iopl=0 nv up ei pl nz na po nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000202

hal!HaliPciInterfaceReadConfig:

804f2824 55 push ebp

0: kd> kc

00 hal!HaliPciInterfaceReadConfig

01 ACPI!AcpiInitIrqArbiter

02 ACPI!ACPIInitStartACPI

03 ACPI!ACPIRootIrpStartDevice

04 ACPI!ACPIDispatchIrp

05 nt!IofCallDriver

06 nt!IopSynchronousCall

07 nt!IopStartDevice

08 nt!PipProcessStartPhase1

09 nt!PipProcessDevNodeTree

0a nt!PipDeviceActionWorker

0b nt!PipRequestDeviceAction

0c nt!IopInitializeBootDrivers

0d nt!IoInitSystem

0e nt!Phase1Initialization

0f nt!PspSystemThreadStartup

10 nt!KiThreadStartup

0: kd> dv

Context = 0x00000000

BusOffset = 0x00 ''

Slot = 0x16

Buffer = 0xf789a204

Offset = 0

Length = 0x40

busHand = struct _BUS_HANDLER

0: kd> kv

ChildEBP RetAddr Args to Child

00 f789a1a4 f744760d 00000000 89996d00 00000016 hal!HaliPciInterfaceReadConfig (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\hals\halx86\i386\pmpcisup.c @ 321]

01 f789a248 f7408a18 0a000009 89981a18 00000000 ACPI!AcpiInitIrqArbiter+0x297 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\irqarb.c @ 764]

02 f789a27c f744f51e 89981b98 00000000 f744f3ea ACPI!ACPIInitStartACPI+0xea (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\init.c @ 1276]

03 f789a2a8 f740410e 89981b98 899bf500 89981b98 ACPI!ACPIRootIrpStartDevice+0x134 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\root.c @ 1340]

04 f789a2dc 80a2675c 89981b98 899bf5b0 899bf668 ACPI!ACPIDispatchIrp+0x19e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\busdrv\acpi\driver\nt\dispatch.c @ 690]

05 f789a2f8 80c95e00 f789a36c 899c1008 899c1de0 nt!IofCallDriver+0x62 (FPO: [Non-Fpo]) (CONV: fastcall) [d:\srv03rtm\base\ntos\io\iomgr\iosubs.c @ 2237]

06 f789a328 80c95f56 00000000 f789a348 00000000 nt!IopSynchronousCall+0x1aa (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpirp.c @ 258]

07 f789a36c 80c8f415 899c1de0 00000001 00000000 nt!IopStartDevice+0x78 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpirp.c @ 334]

08 f789a388 80c94d55 899c1de0 00000000 00000000 nt!PipProcessStartPhase1+0x9d (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 5014]

09 f789a5d4 80a2dde9 899c5ac8 00000000 899c4100 nt!PipProcessDevNodeTree+0x1c7 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 4648]

0a f789a618 80a2e161 00000000 00000000 800836b0 nt!PipDeviceActionWorker+0xcd (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 710]

0b f789a630 80e69358 00000000 00000005 00000000 nt!PipRequestDeviceAction+0x139 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpenum.c @ 598]

0c f789a694 80e655c7 80077000 f789a7dc 00034000 nt!IopInitializeBootDrivers+0x392 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\pnpmgr\pnpinit.c @ 1440]

0d f789a838 80e632fd 80077000 00000000 899a1020 nt!IoInitSystem+0x70b (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\io\iomgr\ioinit.c @ 665]

0e f789adac 80d391f0 80077000 00000000 00000000 nt!Phase1Initialization+0x9b3 (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\init\init.c @ 2221]

0f f789addc 80b00d52 80e6294a 80077000 00000000 nt!PspSystemThreadStartup+0x2e (FPO: [Non-Fpo]) (CONV: stdcall) [d:\srv03rtm\base\ntos\ps\create.c @ 2213]

10 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16 [d:\srv03rtm\base\ntos\ke\i386\threadbg.asm @ 81]

0: kd> bp f744760d

0: kd> g

Breakpoint 51 hit

eax=00000000 ebx=899295e0 ecx=00000100 edx=89946910 esi=00000000 edi=00000000

eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246

hal!HalGetBusDataByOffset:

804f25ee 55 push ebp

1: kd> dv

BusDataType = PCIConfiguration (0n4)

BusNumber = 0

SlotNumber = 0x16

Buffer = 0x89858e44

Offset = 0

Length = 4

bus = struct _BUS_HANDLER

1: kd> kc

00 hal!HalGetBusDataByOffset

01 ACPI!PciConfigSpaceHandlerWorker

02 ACPI!GetPciAddressWorker

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> gu

eax=00000004 ebx=899295e0 ecx=00000000 edx=00000000 esi=00000000 edi=00000000

eip=f740d8c7 esp=f791abf8 ebp=f791ac48 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!PciConfigSpaceHandlerWorker+0x29b:

f740d8c7 8bf0 mov esi,eax

1: kd> db 0x89858e44

89858e44 ad 15 a0 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

89858e54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

89858e64 71 9b 41 f7 b4 69 94 89-64 71 85 89 54 45 52 4d q.A..i..dq..TERM

89858e74 34 00 00 00 01 00 00 00-34 7a 42 f7 33 6a 94 89 4.......4zB.3j..

89858e84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

89858e94 01 00 00 00 02 00 00 00-64 71 85 89 1c 71 85 89 ........dq...q..

89858ea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

89858eb4 32 6a 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 2j..........p.C.

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=89928e58 ecx=00000100 edx=899471d8 esi=00000000 edi=00000000

eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246

hal!HalGetBusDataByOffset:

804f25ee 55 push ebp

1: kd> dv

BusDataType = PCIConfiguration (0n4)

BusNumber = 0

SlotNumber = 0x17

Buffer = 0x898a3e44

Offset = 0

Length = 4

bus = struct _BUS_HANDLER

1: kd> gu

eax=00000004 ebx=89928e58 ecx=00000000 edx=00000000 esi=00000000 edi=00000000

eip=f740d8c7 esp=f791abf8 ebp=f791ac48 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!PciConfigSpaceHandlerWorker+0x29b:

f740d8c7 8bf0 mov esi,eax

1: kd> db 0x898a3e44

898a3e44 ad 15 a0 07 00 00 00 00-00 00 00 00 20 00 00 00 ............ ...

898a3e54 03 00 00 00 41 43 46 55-18 00 00 00 03 00 01 00 ....ACFU........

898a3e64 71 9b 41 f7 7c 72 94 89-64 21 8a 89 54 45 52 4d q.A.|r..d!..TERM

898a3e74 34 00 00 00 01 00 00 00-34 7a 42 f7 fb 72 94 89 4.......4zB..r..

898a3e84 00 00 00 00 00 00 00 00-10 93 43 f7 00 00 00 00 ..........C.....

898a3e94 01 00 00 00 02 00 00 00-64 21 8a 89 1c 21 8a 89 ........d!...!..

898a3ea4 54 45 52 4d 34 00 00 00-01 00 00 00 34 7a 42 f7 TERM4.......4zB.

898a3eb4 fa 72 94 89 00 00 00 00-00 00 00 00 70 91 43 f7 .r..........p.C.

1: kd> g

Breakpoint 51 hit

eax=00000000 ebx=89928628 ecx=00000100 edx=89947aa0 esi=00000000 edi=00000000

eip=804f25ee esp=f791abdc ebp=f791ac48 iopl=0 nv up ei pl zr na pe nc

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000246

hal!HalGetBusDataByOffset:

804f25ee 55 push ebp

1: kd> dv

BusDataType = PCIConfiguration (0n4)

BusNumber = 0

SlotNumber = 0x18

Buffer = 0x895dde44

Offset = 0

Length = 4

bus = struct _BUS_HANDLER

1: kd> gu

Breakpoint 92 hit

eax=00000040 ebx=00000016 ecx=00000000 edx=00000cf8 esi=00000000 edi=00000000

eip=f744760d esp=f789a1c4 ebp=f789a248 iopl=0 nv up ei ng nz ac po cy

cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00000293

ACPI!AcpiInitIrqArbiter+0x297:

f744760d 66817dbcffff cmp word ptr [ebp-44h],0FFFFh ss:0010:f789a204=15ad

0: kd> dv

RootFdo = 0x0a000009

context = struct AMLISUPP_CONTEXT_PASSIVE

buffer = unsigned char [64] "???"

adjVector = 0xa000009

driverKeyHandle = 0x00000000

deviceNum = 0x16

lastBus = 0x0a ''

driverKey = ""

currentBus = 0x00 ''

pciSlot = struct _PCI_SLOT_NUMBER

regValue = 0x00000000

foundBootConfig = 0x01 ''

noBootConfigAgreement = 0x01 ''

flags = 0x16 ''

0: kd> dx -r1 (*((ACPI!unsigned char (*)[64])0xf789a204))

(*((ACPI!unsigned char (*)[64])0xf789a204)) [Type: unsigned char [64]]

0\] : 0xad \[Type: unsigned char

1\] : 0x15 \[Type: unsigned char

2\] : 0xa0 \[Type: unsigned char

3\] : 0x7 \[Type: unsigned char

4\] : 0x7 \[Type: unsigned char

5\] : 0x0 \[Type: unsigned char

6\] : 0x10 \[Type: unsigned char

7\] : 0x0 \[Type: unsigned char

8\] : 0x1 \[Type: unsigned char

9\] : 0x0 \[Type: unsigned char

10\] : 0x4 \[Type: unsigned char

11\] : 0x6 \[Type: unsigned char

12\] : 0x8 \[Type: unsigned char

13\] : 0x0 \[Type: unsigned char

14\] : 0x81 \[Type: unsigned char

15\] : 0x0 \[Type: unsigned char

16\] : 0x0 \[Type: unsigned char

17\] : 0x0 \[Type: unsigned char

18\] : 0x0 \[Type: unsigned char

19\] : 0x0 \[Type: unsigned char

20\] : 0x0 \[Type: unsigned char

21\] : 0x0 \[Type: unsigned char

22\] : 0x0 \[Type: unsigned char

23\] : 0x0 \[Type: unsigned char

24\] : 0x0 \[Type: unsigned char

25\] : 0xb \[Type: unsigned char

26\] : 0xb \[Type: unsigned char

27\] : 0x0 \[Type: unsigned char

28\] : 0x50 \[Type: unsigned char

29\] : 0x50 \[Type: unsigned char

30\] : 0x0 \[Type: unsigned char

31\] : 0x0 \[Type: unsigned char

32\] : 0x30 \[Type: unsigned char

33\] : 0xfd \[Type: unsigned char

34\] : 0x30 \[Type: unsigned char

35\] : 0xfd \[Type: unsigned char

36\] : 0x91 \[Type: unsigned char

37\] : 0xe7 \[Type: unsigned char

38\] : 0x91 \[Type: unsigned char

39\] : 0xe7 \[Type: unsigned char

40\] : 0x0 \[Type: unsigned char

41\] : 0x0 \[Type: unsigned char

42\] : 0x0 \[Type: unsigned char

43\] : 0x0 \[Type: unsigned char

44\] : 0x0 \[Type: unsigned char

45\] : 0x0 \[Type: unsigned char

46\] : 0x0 \[Type: unsigned char

47\] : 0x0 \[Type: unsigned char

48\] : 0x0 \[Type: unsigned char

49\] : 0x0 \[Type: unsigned char

50\] : 0x0 \[Type: unsigned char

51\] : 0x0 \[Type: unsigned char

52\] : 0x40 \[Type: unsigned char

53\] : 0x0 \[Type: unsigned char

54\] : 0x0 \[Type: unsigned char

55\] : 0x0 \[Type: unsigned char

56\] : 0x0 \[Type: unsigned char

57\] : 0x0 \[Type: unsigned char

58\] : 0x0 \[Type: unsigned char

59\] : 0x0 \[Type: unsigned char

60\] : 0xff \[Type: unsigned char

61\] : 0x0 \[Type: unsigned char

62\] : 0x4 \[Type: unsigned char

63\] : 0x0 \[Type: unsigned char

0: kd> dt PCI_COMMON_CONFIG 0xf789a204

hal!PCI_COMMON_CONFIG

+0x000 VendorID : 0x15ad

+0x002 DeviceID : 0x7a0

+0x004 Command : 7

+0x006 Status : 0x10

+0x008 RevisionID : 0x1 ''

+0x009 ProgIf : 0 ''

+0x00a SubClass : 0x4 ''

+0x00b BaseClass : 0x6 ''

+0x00c CacheLineSize : 0x8 ''

+0x00d LatencyTimer : 0 ''

+0x00e HeaderType : 0x81 ''

+0x00f BIST : 0 ''

+0x010 u : __unnamed

+0x040 DeviceSpecific : [192] "RE???"

0: kd> dt PCI_COMMON_CONFIG 0xf789a204 -r

hal!PCI_COMMON_CONFIG
+0x000 VendorID : 0x15ad
+0x002 DeviceID : 0x7a0

+0x004 Command : 7

+0x006 Status : 0x10

+0x008 RevisionID : 0x1 ''

+0x009 ProgIf : 0 ''

+0x00a SubClass : 0x4 ''

+0x00b BaseClass : 0x6 ''

+0x00c CacheLineSize : 0x8 ''

+0x00d LatencyTimer : 0 ''
+0x00e HeaderType : 0x81 ''

+0x00f BIST : 0 ''

+0x010 u : __unnamed

+0x000 type0 : _PCI_HEADER_TYPE_0

+0x000 BaseAddresses : [6] 0

+0x018 CIS : 0

+0x01c SubVendorID : 0

+0x01e SubSystemID : 0

+0x020 ROMBaseAddress : 0

+0x024 CapabilitiesPtr : 0x40 '@'

+0x025 Reserved1 : [3] ""

+0x028 Reserved2 : 0

+0x02c InterruptLine : 0xff ''

+0x02d InterruptPin : 0 ''

+0x02e MinimumGrant : 0x4 ''

+0x02f MaximumLatency : 0 ''

+0x000 type1 : _PCI_HEADER_TYPE_1

+0x000 BaseAddresses : [2] 0
+0x008 PrimaryBus : 0 ''
+0x009 SecondaryBus : 0xb ''
+0x00a SubordinateBus : 0xb ''

+0x00b SecondaryLatency : 0 ''

+0x00c IOBase : 0x50 'P'

+0x00d IOLimit : 0x50 'P'

+0x00e SecondaryStatus : 0

+0x010 MemoryBase : 0xfd30

+0x012 MemoryLimit : 0xfd30

+0x014 PrefetchBase : 0xe791

+0x016 PrefetchLimit : 0xe791

+0x018 PrefetchBaseUpper32 : 0

+0x01c PrefetchLimitUpper32 : 0

+0x020 IOBaseUpper16 : 0

+0x022 IOLimitUpper16 : 0

+0x024 CapabilitiesPtr : 0x40 '@'

+0x025 Reserved1 : [3] ""

+0x028 ROMBaseAddress : 0

+0x02c InterruptLine : 0xff ''

+0x02d InterruptPin : 0 ''

+0x02e BridgeControl : 4

+0x000 type2 : _PCI_HEADER_TYPE_2

+0x000 SocketRegistersBaseAddress : 0

+0x004 CapabilitiesPtr : 0 ''

+0x005 Reserved : 0 ''

+0x006 SecondaryStatus : 0

+0x008 PrimaryBus : 0 ''

+0x009 SecondaryBus : 0xb ''

+0x00a SubordinateBus : 0xb ''

+0x00b SecondaryLatency : 0 ''

+0x00c Range : [4] __unnamed

+0x02c InterruptLine : 0xff ''

+0x02d InterruptPin : 0 ''

+0x02e BridgeControl : 4

+0x040 DeviceSpecific : [192] "RE???"