Hello,
I’m working on a KMDF driver for a PCI device. When trying to install my driver (under XP), I get “This device cannot start.” (code 10). I’ve checked my EvtDevicePrepareHardware call and its returning success. Somewhere after that callback, IRP_MN_START_DEVICE must have been failed. I checked setupapi.log and the only thing I saw was the error CM_PROB_FAILED_START, but that doesn’t tell me anything. Any ideas on how to debug this? (Btw, The driver installs and works fine on a different CPU/chipset.)
Thanks in advance,
Josh
Why didn’t you mention windbg? If you haven’t used it, begin there and
return after you have done so. If you have used it, describe what happened
for DriverEntry, AddDevice, and then the various starts, stops and pauses
that may occur as the OS brings up your device and others.
Don’t complain that you have only one computer. If you want to write
drivers you need at least two and access to a dozen or more computers is
desirable.
wrote in message news:xxxxx@ntdev…
> Hello,
>
> I’m working on a KMDF driver for a PCI device. When trying to install my
> driver (under XP), I get “This device cannot start.” (code 10). I’ve
> checked my EvtDevicePrepareHardware call and its returning success.
> Somewhere after that callback, IRP_MN_START_DEVICE must have been failed.
> I checked setupapi.log and the only thing I saw was the error
> CM_PROB_FAILED_START, but that doesn’t tell me anything. Any ideas on how
> to debug this? (Btw, The driver installs and works fine on a different
> CPU/chipset.)
>
> Thanks in advance,
> Josh
>
Yes, I forgot to mention windbg. I am using it and it shows me that DriverEntry, EvtDeviceAdd, and EvtDevicePrepareHardware are all called successfully. The next thing I see is a call to EvtDeviceReleaseHardware. So far, windbg hasn’t shown me anything.
Btw, I’m not complaining about only having one computer. I’m encountering this problem because I’m testing my driver with an Intel demo board. The driver has worked fine on a different CPU/chipset combo. I’m trying to figure out why it is failing in this situation.
Thanks,
Josh
Put a bp on your EvtDeviceReleaseHardware and when it fires, run !wdflogdump and see if anything in the log indicates an error leading to this. also, in the same context run !devstack and then !devnode and send the output of !devnode. That should give you the state history according to the pnp manager as well as any problems it thinks occurred.
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@rtd.com
Sent: Thursday, February 07, 2008 12:16 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Driver installation error with KMDF
Yes, I forgot to mention windbg. I am using it and it shows me that DriverEntry, EvtDeviceAdd, and EvtDevicePrepareHardware are all called successfully. The next thing I see is a call to EvtDeviceReleaseHardware. So far, windbg hasn’t shown me anything.
Btw, I’m not complaining about only having one computer. I’m encountering this problem because I’m testing my driver with an Intel demo board. The driver has worked fine on a different CPU/chipset combo. I’m trying to figure out why it is failing in this situation.
Thanks,
Josh
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Thanks Doron, I’ll try that out and see if I find anything.
Thanks,
Josh
I tried to use “bm” to set a breakpoint for my callback, but it says it can’t find the symbol. (I’m not very experienced with using windbg.) I installed the checked build of my driver and I pointed windbg to my driver’s symbol files. Any help?
Thanks,
Josh
You should see if symbols are loaded properly (!lmi ). You can also see all symbols (x !*) in your driver as well. I tend to use ‘bp’ or ‘bu’ vs bm
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@rtd.com
Sent: Friday, February 08, 2008 10:27 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Driver installation error with KMDF
I tried to use “bm” to set a breakpoint for my callback, but it says it can’t find the symbol. (I’m not very experienced with using windbg.) I installed the checked build of my driver and I pointed windbg to my driver’s symbol files. Any help?
Thanks,
Josh
—
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
I tried !lmi but it couldn’t find my driver. Is the fact that my driver isn’t actually loaded (because of the error) causing a problem? Appreciate the help, btw.
Thanks,
Josh
!lmi only works for a loaded driver. If you want to set breakpoints /before/ your driver loads, use the bu command (and specify the fully qualified name, eg bu driver!DriverEntry or somesuch)
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@rtd.com
Sent: Friday, February 08, 2008 12:03 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Driver installation error with KMDF
I tried !lmi but it couldn’t find my driver. Is the fact that my driver isn’t actually loaded (because of the error) causing a problem? Appreciate the help, btw.
Thanks,
Josh
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
“bp FunctionName” is OK
The working way of handling your symbols (unlike MS’s) is:
- create a directory
- on each rebuild, copy the .PDB there
- in WinDbg’s Symbol Path, set it before the MS’s symbol server
To test the thing work, use:
.reload /f MyDriver.sys
and, if did not produce any errors, use:
x MyDriver!*
this - if OK - should dump all globals in the binary.
–
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
wrote in message news:xxxxx@ntdev…
> I tried to use “bm” to set a breakpoint for my callback, but it says it can’t
find the symbol. (I’m not very experienced with using windbg.) I installed the
checked build of my driver and I pointed windbg to my driver’s symbol files.
Any help?
>
> Thanks,
> Josh
>
Thanks for the help everyone. I was able to run !wdflogdump. Everything seems to be going fine until this “FxInterrupt::Connect - IoConnectInterrupt(Ex) Failed 0xc000000d(STATUS_INVALID_PARAMETER), vector 0x163, IRQL 0x5, Mode 0x0”. Any ideas on why the interrupt couldn’t be connected? (BTW, This is a PCI device running on XP SP2, on a Intel 915GME chipset (it has PCI-Express) using KMDF 1.5.)
Thanks again,
Josh
This error directly from the API itself, KMDF does not return this value. Perhaps Jake can give some advise on how to debug this further with respect to what the bios and pci driver are doing
D
The guy who integrated a lot of Jake’s interrupt code into KMDF
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@rtd.com
Sent: Monday, February 11, 2008 7:00 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Driver installation error with KMDF
Thanks for the help everyone. I was able to run !wdflogdump. Everything seems to be going fine until this “FxInterrupt::Connect - IoConnectInterrupt(Ex) Failed 0xc000000d(STATUS_INVALID_PARAMETER), vector 0x163, IRQL 0x5, Mode 0x0”. Any ideas on why the interrupt couldn’t be connected? (BTW, This is a PCI device running on XP SP2, on a Intel 915GME chipset (it has PCI-Express) using KMDF 1.5.)
Thanks again,
Josh
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Thanks Doron, I appreciate it.
>The guy who integrated a lot of Jake’s interrupt code into KMDF
Am I correct that KMDF contains some code from IoConnectInterrupt(Ex)
integrated to it? or is KMDF just a wrapper around IoConnectInterrupt(Ex)?
–
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
KMDF does not contain any of the implementation of IoConnectInterrupt or the Ex version. While at the end of the day, KMDF does call this api to connect the api, it is not purely a wrapper around it either. Kdmf integrates the interrupt’s state with the rest of the pnp/power state and also does automatic resource mapping from the translated assigned resources to manage the interrupt’s connect values.
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Maxim S. Shatskih
Sent: Monday, February 11, 2008 11:10 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] RE:Driver installation error with KMDF
The guy who integrated a lot of Jake’s interrupt code into KMDF
Am I correct that KMDF contains some code from IoConnectInterrupt(Ex)
integrated to it? or is KMDF just a wrapper around IoConnectInterrupt(Ex)?
–
Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Doron, how can i get ahold of Jake? Will he send to this list or should I email him directly?
Thanks,
Josh
I would let him (or someone else in the kernel team) respond to the list
d
-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@rtd.com
Sent: Monday, February 11, 2008 11:45 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] Driver installation error with KMDF
Doron, how can i get ahold of Jake? Will he send to this list or should I email him directly?
Thanks,
Josh
NTDEV is sponsored by OSR
For our schedule of WDF, WDM, debugging and other seminars visit:
http://www.osr.com/seminars
To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer
Josh,
I don’t have great suggestions for you. But here’s what I can tell you. IoConnectInterrupt in XP returned STATUS_INVALID_PARAMETER for basically any kind of failure. The reasons it can fail are:
- The processor set passed to it is bogus.
- Other parameters like SynchronizationIrql are incompatible with each other.
- The vector passed to it is already connected to another driver in an incompatible way
- The I/O APIC entry the device is connected to is already connected to another device in an incompatible way.
Pieces of info that would be helpful:
- The parameters passed by KMDF to IoConnectInterrupt
- !devnode e
- !arbiter 4
- !acpiirqarb
- !ioapic
Dave
Thanks for the help Dave. I don’t know how to get the parameters for IoConnectInterrupt or how to get the device node address for !devnode. I did, however, run the last three commands while at a breakpoint for my EvtDeviceReleaseHardware callback. I don’t really know what to look for, but hopefully you do. Here is what I got:
kd> !arbiter 4
DEVNODE 8564d008 (HTREE\ROOT\0)
Interrupt Arbiter “RootIRQ” at 80558860
Allocated ranges:
0000000000000000 - 0000000000000000 B 8564dcf0
0000000000000001 - 0000000000000001 B 8564dcf0
0000000000000002 - 0000000000000002 B 8564dcf0
0000000000000003 - 0000000000000003 B 8564dcf0
0000000000000004 - 0000000000000004 B 8564dcf0
0000000000000005 - 0000000000000005 B 8564dcf0
0000000000000006 - 0000000000000006 B 8564dcf0
0000000000000007 - 0000000000000007 B 8564dcf0
0000000000000008 - 0000000000000008 B 8564dcf0
0000000000000009 - 0000000000000009 B 8564dcf0
000000000000000a - 000000000000000a B 8564dcf0
000000000000000b - 000000000000000b B 8564dcf0
000000000000000c - 000000000000000c B 8564dcf0
000000000000000d - 000000000000000d B 8564dcf0
000000000000000e - 000000000000000e B 8564dcf0
000000000000000f - 000000000000000f B 8564dcf0
0000000000000010 - 0000000000000010 B 8564dcf0
0000000000000011 - 0000000000000011 B 8564dcf0
0000000000000012 - 0000000000000012 B 8564dcf0
0000000000000013 - 0000000000000013 B 8564dcf0
0000000000000014 - 0000000000000014 B 8564dcf0
0000000000000015 - 0000000000000015 B 8564dcf0
0000000000000016 - 0000000000000016 B 8564dcf0
0000000000000017 - 0000000000000017 B 8564dcf0
0000000000000018 - 0000000000000018 B 8564dcf0
0000000000000019 - 0000000000000019 B 8564dcf0
000000000000001a - 000000000000001a B 8564dcf0
000000000000001b - 000000000000001b B 8564dcf0
000000000000001c - 000000000000001c B 8564dcf0
000000000000001d - 000000000000001d B 8564dcf0
000000000000001e - 000000000000001e B 8564dcf0
000000000000001f - 000000000000001f B 8564dcf0
0000000000000020 - 0000000000000020 B 8564dcf0
0000000000000021 - 0000000000000021 B 8564dcf0
0000000000000022 - 0000000000000022 B 8564dcf0
0000000000000023 - 0000000000000023 B 8564dcf0
0000000000000024 - 0000000000000024 B 8564dcf0
0000000000000025 - 0000000000000025 B 8564dcf0
0000000000000026 - 0000000000000026 B 8564dcf0
0000000000000027 - 0000000000000027 B 8564dcf0
0000000000000028 - 0000000000000028 B 8564dcf0
0000000000000029 - 0000000000000029 B 8564dcf0
000000000000002a - 000000000000002a B 8564dcf0
000000000000002b - 000000000000002b B 8564dcf0
000000000000002c - 000000000000002c B 8564dcf0
000000000000002d - 000000000000002d B 8564dcf0
000000000000002e - 000000000000002e B 8564dcf0
000000000000002f - 000000000000002f B 8564dcf0
00000000000000ff - 00000000000000ff B 8564dcf0
00000000000001b1 - 00000000000001b1 S 85682738 (ACPI)
Possible allocation:
< none >
DEVNODE 85649648 (ACPI_HAL\PNP0C08\0)
Interrupt Arbiter “ACPI_IRQ” at bafcf380
Allocated ranges:
0000000000000001 - 0000000000000001 855ebf18 (i8042prt)
0000000000000002 - 0000000000000002 B 855d72a0
0000000000000003 - 0000000000000003 855ebab8 (Serial)
0000000000000004 - 0000000000000004 B 8564dcf0
0000000000000008 - 0000000000000008 855eb030
0000000000000009 - 0000000000000009 S 85682738 (ACPI)
000000000000000c - 000000000000000c 855ebe00 (i8042prt)
000000000000000d - 000000000000000d B 855ebbd0
000000000000000e - 000000000000000e 8562a1a8 (atapi)
000000000000000f - 000000000000000f 8566b030 (atapi)
0000000000000010 - 0000000000000010 S
0000000000000010 - 0000000000000010 S 856632b8 (ialm)
0000000000000010 - 0000000000000010 S 85612b18 (usbuhci)
0000000000000012 - 0000000000000012 S 85612e50 (usbuhci)
0000000000000013 - 0000000000000013
0000000000000013 - 0000000000000013 SC 85613b18 (usbuhci)
0000000000000013 - 0000000000000013 C 855d7030 (RTDGPD)
0000000000000014 - 0000000000000014 S 855d7cf8 (E100B)
0000000000000017 - 0000000000000017 S
0000000000000017 - 0000000000000017 S 85613e50 (usbuhci)
0000000000000017 - 0000000000000017 S 856127e0 (usbehci)
Possible allocation:
< none >
kd> !acpiirqarb
ACPI IRQ Arbiter: ffffffffbafcf380 Extension: ffffffff856858d8
Link nodes in use: (list head at 856858d8856858d8 )
IRQ Hash Table (at ffffffffe142f318 ):
0001 Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
0002 Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
0003 Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
0004 Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
0008 Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
0009 Count/temp: 00/01 Flags: (level high) TempFlags(level high)
000c Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
000d Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
000e Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
000f Count/temp: 00/01 Flags: (edge high) TempFlags(edge high)
0010 Count/temp: 00/02 Flags: (level low) TempFlags(level low)
0012 Count/temp: 00/01 Flags: (level low) TempFlags(level low)
0013 Count/temp: 00/02 Flags: (level low) TempFlags(level low)
0014 Count/temp: 00/01 Flags: (level low) TempFlags(level low)
0017 Count/temp: 00/02 Flags: (level low) TempFlags(level low)
kd> !ioapic
IoApic @ FEC00000 ID:1 (20) Arb:170020
Inti00.: 00010aff Vec:FF res010 Lg:da0f0000 edg high masked
Inti01.: 00000993 Vec:93 LowestDl Lg:01000000 edg high
Inti02.: 00010bff Vec:FF remoterd Lg:da0f0000 edg high masked
Inti03.: 000009b2 Vec:B2 LowestDl Lg:01000000 edg high
Inti04.: 00010aff Vec:FF res010 Lg:da0f0000 edg high masked
Inti05.: 00010aff Vec:FF res010 Lg:da2c0000 edg high masked
Inti06.: 00010aff Vec:FF res010 Lg:da2f0000 edg high masked
Inti07.: 00010aff Vec:FF res010 Lg:fb0f0000 edg high masked
Inti08.: 000008d1 Vec:D1 FixedDel Lg:01000000 edg high
Inti09.: 0000d9b1 Vec:B1 LowestDl Lg:01000000-Pend lvl high rirr
Inti0A.: 00010aff Vec:FF res010 Lg:9e0f0000 edg high masked
Inti0B.: 00010eff Vec:FF res110 Lg:d62f0000 edg high masked
Inti0C.: 000009a3 Vec:A3 LowestDl Lg:01000000 edg high
Inti0D.: 00010aff Vec:FF res010 Lg:da0f0000 edg high masked
Inti0E.: 00000962 Vec:62 LowestDl Lg:01000000 edg high
Inti0F.: 00000982 Vec:82 LowestDl Lg:01000000 edg high
Inti10.: 0000a983 Vec:83 LowestDl Lg:01000000 lvl low
Inti11.: 00010aff Vec:FF res010 Lg:da0f0000 edg high masked
Inti12.: 0000a9b4 Vec:B4 LowestDl Lg:01000000 lvl low
Inti13.: 0000a963 Vec:63 LowestDl Lg:01000000 lvl low
Inti14.: 0000a9a4 Vec:A4 LowestDl Lg:01000000 lvl low
Inti15.: 000104ff Vec:FF NMI PhysDest:DA edg high masked
Inti16.: 00010aff Vec:FF res010 Lg:da0f0000 edg high masked
Inti17.: 0000a973 Vec:73 LowestDl Lg:01000000 lvl low
IoApic @ FEC80000 ID:FF (FF) Arb:FFFFFFFF
The version register claims there are 255 redir entries. Since this exceeds
the maximum in the specification, this device is probably not an IO APIC.
IoApic @ FEC81000 ID:FF (FF) Arb:FFFFFFFF
The version register claims there are 255 redir entries. Since this exceeds
the maximum in the specification, this device is probably not an IO APIC.
Thanks,
Josh
I got the out from !devnode. Here it is:
kd> !devnode 0x855d7a58 e
DevNode 0x855d7a58 for PDO 0x855d7030
Parent 0x855f8948 Sibling 0x855d7938 Child 0000000000
InstancePath is “PCI\VEN_1435&DEV_7820&SUBSYS_905610B5&REV_00\4&3ae5ecd5&0&18F0”
ServiceName is “RTDGPD”
State = DeviceNodeResourcesAssigned (0x304)
Previous State = DeviceNodeDriversAdded (0x303)
StateHistory[10] = DeviceNodeDriversAdded (0x303)
StateHistory[09] = DeviceNodeInitialized (0x302)
StateHistory[08] = DeviceNodeUninitialized (0x301)
StateHistory[07] = DeviceNodeRemoved (0x312)
StateHistory[06] = DeviceNodeStartCompletion (0x306)
StateHistory[05] = DeviceNodeAwaitingQueuedRemoval (0x30f)
StateHistory[04] = DeviceNodeStartCompletion (0x306)
StateHistory[03] = DeviceNodeResourcesAssigned (0x304)
StateHistory[02] = DeviceNodeDriversAdded (0x303)
StateHistory[01] = DeviceNodeInitialized (0x302)
StateHistory[00] = DeviceNodeUninitialized (0x301)
StateHistory[19] = Unknown State (0x0)
StateHistory[18] = Unknown State (0x0)
StateHistory[17] = Unknown State (0x0)
StateHistory[16] = Unknown State (0x0)
StateHistory[15] = Unknown State (0x0)
StateHistory[14] = Unknown State (0x0)
StateHistory[13] = Unknown State (0x0)
StateHistory[12] = Unknown State (0x0)
StateHistory[11] = Unknown State (0x0)
Flags (0x00000030) DNF_ENUMERATED, DNF_IDS_QUERIED
CmResourceList at 0xe12cfa08 Version 0.0 Interface 0x5 Bus #0x1
Entry 0 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
Range starts at 0x00000000ff7ffc00 for 0x200 bytes
Entry 1 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data - {0x00000001, 0000000000, 0000000000}
Entry 2 - Port (0x1) Device Exclusive (0x1)
Flags (0x31) - PORT_MEMORY PORT_IO 16_BIT_DECODE POSITIVE_DECODE
Range starts at 0xd800 for 0x100 bytes
Entry 3 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data - {0x00000001, 0x00000001, 0000000000}
Entry 4 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
Range starts at 0x00000000ff7fc000 for 0x2000 bytes
Entry 5 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data - {0x00000001, 0x00000002, 0000000000}
Entry 6 - Interrupt (0x2) Device Exclusive (0x1)
Flags (0000) - LEVEL_SENSITIVE
Level 0x13, Vector 0x13, Affinity 0xffffffff
TranslatedResourceList at 0xe12d0dc8 Version 0.0 Interface 0x5 Bus #0x1
Entry 0 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
Range starts at 0x00000000ff7ffc00 for 0x200 bytes
Entry 1 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data - {0x00000001, 0000000000, 0000000000}
Entry 2 - Port (0x1) Device Exclusive (0x1)
Flags (0x31) - PORT_MEMORY PORT_IO 16_BIT_DECODE POSITIVE_DECODE
Range starts at 0xd800 for 0x100 bytes
Entry 3 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data - {0x00000001, 0x00000001, 0000000000}
Entry 4 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
Range starts at 0x00000000ff7fc000 for 0x2000 bytes
Entry 5 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data - {0x00000001, 0x00000002, 0000000000}
Entry 6 - Interrupt (0x2) Device Exclusive (0x1)
Flags (0000) - LEVEL_SENSITIVE
Level 0x5, Vector 0x163, Affinity 0x1
IoResList at 0xe12cd4b0 : Interface 0x5 Bus 0x1 Slot 0x3
Alternative 0 (Version 1.1)
Preferred Descriptor 0 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
0x000200 byte range with alignment 0x000001
ff7ffc00 - 0xff7ffdff
Alternative Descriptor 1 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
0x000200 byte range with alignment 0x000200
0 - 0xffffffff
Descriptor 2 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data: : 0x1 0x0 0x0
Preferred Descriptor 3 - Port (0x1) Device Exclusive (0x1)
Flags (0x31) - PORT_IO 16_BIT_DECODE POSITIVE_DECODE
0x000100 byte range with alignment 0x000001
d800 - 0xd8ff
Alternative Descriptor 4 - Port (0x1) Device Exclusive (0x1)
Flags (0x31) - PORT_IO 16_BIT_DECODE POSITIVE_DECODE
0x000100 byte range with alignment 0x000100
0 - 0xffffffff
Descriptor 5 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data: : 0x1 0x1 0x0
Preferred Descriptor 6 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
0x002000 byte range with alignment 0x000001
ff7fc000 - 0xff7fdfff
Alternative Descriptor 7 - Memory (0x3) Device Exclusive (0x1)
Flags (0000) - READ_WRITE
0x002000 byte range with alignment 0x002000
0 - 0xffffffff
Descriptor 8 - DevicePrivate (0x81) Device Exclusive (0x1)
Flags (0000) -
Data: : 0x1 0x2 0x0
Descriptor 9 - Interrupt (0x2) Device Exclusive (0x1)
Flags (0000) - LEVEL_SENSITIVE
0x0 - 0xff
Thanks,
Josh