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???"