Hello all
I have pcie switch device (1-3) , and I wrote small filter driver for it.
My driver is UpperFilter over the pci.sys driver and it handles configuration and management of the PCIe switch device.
My device (PCIE switch) request one interrupt line (actually it support MSI but BIOS/OS does not configure it for MSI and that different mystery)
I create an interrupt object on my DeviceAdd routine .
status = WdfInterruptCreate(
device,
&interruptConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&filterExt->WdfInterrupt
);
When I connect one device to my down stream port I can get interrupts from my device and access its internal configuration.
But when trying to connect my switch to PCIe extension board with 2 switches (1-1 and 1-8) while on the extension board I have NIC,SATA,GPU , my driver stop to get interrupts.
Mean my device generate the interrupt but I don’t get it in the driver .
From my driver log (attached below) I can see that the PrepareHardware function is called few times each time with different memory assignments.
Each time the PnP call ReleaseHW and PrepareHW.
I can also see that in the last call the interrupt setting is also changed.
Any idea why I don’t get my interrupts ?
Do I need to reconnect my interrupt every time the OS change my resource list ?
Can I force the OS to assigned me MSI and not interrupt ?
Thanks
Yossi
–> FilterEvtDevicePrepareHardware
Memory mapped CSR:(ff6f0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff6e0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff700000:0) Length:(1048576)
Unhandled resource type (0x81)
Memory mapped CSR:(ff000000:0) Length:(4194304)
Unhandled resource type (0x81)
I/O mapped CSR: (d000) Length: (4096)
Unhandled resource type (0x81)
Interrupt level: 0x9, Vector: 0xa2
–> FilterEvtInterruptEnable
<– FilterEvtInterruptEnable
–> FilterEvtInterruptDisable
<– FilterEvtInterruptDisable
–> FilterEvtDeviceReleaseHardware
Memory mapped CSR:(ff6f0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff6e0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff700000:0) Length:(1048576)
Unhandled resource type (0x81)
Memory mapped CSR:(ff000000:0) Length:(4194304)
Unhandled resource type (0x81)
I/O mapped CSR: (d000) Length: (4096)
Unhandled resource type (0x81)
Interrupt level: 0x9, Vector: 0xa2
<– FilterEvtDeviceReleaseHardware
–> FilterEvtDevicePrepareHardware
Memory mapped CSR:(ff5f0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff5e0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff600000:0) Length:(2097152)
Unhandled resource type (0x81)
Memory mapped CSR:(ff000000:0) Length:(4194304)
Unhandled resource type (0x81)
I/O mapped CSR: (d000) Length: (4096)
Unhandled resource type (0x81)
Interrupt level: 0x9, Vector: 0xa2
–> FilterEvtInterruptEnable
<– FilterEvtInterruptEnable
–> FilterEvtInterruptDisable
<– FilterEvtInterruptDisable
–> FilterEvtDeviceReleaseHardware
Memory mapped CSR:(ff5f0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff5e0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff600000:0) Length:(2097152)
Unhandled resource type (0x81)
Memory mapped CSR:(ff000000:0) Length:(4194304)
Unhandled resource type (0x81)
I/O mapped CSR: (d000) Length: (4096)
Unhandled resource type (0x81)
Interrupt level: 0x9, Vector: 0xa2
<– FilterEvtDeviceReleaseHardware
–> FilterEvtDevicePrepareHardware
Memory mapped CSR:(ff4f0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff4e0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff500000:0) Length:(3145728)
Unhandled resource type (0x81)
Memory mapped CSR:(ff000000:0) Length:(4194304)
Unhandled resource type (0x81)
I/O mapped CSR: (d000) Length: (4096)
Unhandled resource type (0x81)
Interrupt level: 0x9, Vector: 0xa2
–> FilterEvtInterruptEnable
<– FilterEvtInterruptEnable
…
Here is the GPU driver loading !!!
…
–> FilterEvtInterruptDisable
<– FilterEvtInterruptDisable
–> FilterEvtDeviceReleaseHardware
Memory mapped CSR:(ff4f0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff4e0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(ff500000:0) Length:(3145728)
Unhandled resource type (0x81)
Memory mapped CSR:(ff000000:0) Length:(4194304)
Unhandled resource type (0x81)
I/O mapped CSR: (d000) Length: (4096)
Unhandled resource type (0x81)
Interrupt level: 0x9, Vector: 0xa2
<– FilterEvtDeviceReleaseHardware
–> FilterEvtDevicePrepareHardware
Memory mapped CSR:(fdaf0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(fdae0000:0) Length:(65536)
Unhandled resource type (0x81)
Memory mapped CSR:(fcc00000:0) Length:(14680064)
Unhandled resource type (0x81)
Memory mapped CSR:(e0000000:0) Length:(268435456)
Unhandled resource type (0x81)
I/O mapped CSR: (c000) Length: (8192)
Unhandled resource type (0x81)
Interrupt level: 0x7, Vector: 0x82
–> FilterEvtInterruptEnable
<– FilterEvtInterruptEnable
E