PnP Manager Redistributes System Resources

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

It’s hard to tell what’s wrong here.
You have a whole bunch of self-made (or inherited from Hfa?) devices
and unknown BIOS.
Generally, PCIe interrupts are controlled by two fields in the
config space: the legacy PCI IRQ number and MSI capability field.
When you get MSI, the legacy IRQ field is zeroed.
It can also help to check with analyzer, if the root
complex receives any irq message (legacy or msi) from the device.

Good luck.
–PA

Yossi Leybovich wrote:

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

Hi

I checked with analyzer and the device does generate interrupts, and it gets to the root complex
Still my ISR never called

Interesting observation is:
When I enable my device to support MSI (by setting MSISupport field in the registry) I do get the interrupt from my device.

Yossi

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336377-
xxxxx@lists.osr.com] On Behalf Of Pavel A.
Sent: Wednesday, September 10, 2008 10:33 AM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] PnP Manager Redistributes System Resources

It’s hard to tell what’s wrong here.
You have a whole bunch of self-made (or inherited from Hfa?) devices
and unknown BIOS.
Generally, PCIe interrupts are controlled by two fields in the
config space: the legacy PCI IRQ number and MSI capability field.
When you get MSI, the legacy IRQ field is zeroed.
It can also help to check with analyzer, if the root
complex receives any irq message (legacy or msi) from the device.

Good luck.
–PA

Yossi Leybovich wrote:
>
> 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
>


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

Yossi Leybovich wrote:

Hi

I checked with analyzer and the device does generate interrupts, and it gets to the root complex

Are the interrupt messages that you see in analyzer, MSI or INTx type ?

-PA

Still my ISR never called

Interesting observation is:
When I enable my device to support MSI (by setting MSISupport field in the registry) I do get the interrupt from my device.

Yossi

> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-336377-
> xxxxx@lists.osr.com] On Behalf Of Pavel A.
> Sent: Wednesday, September 10, 2008 10:33 AM
> To: Windows System Software Devs Interest List
> Subject: Re:[ntdev] PnP Manager Redistributes System Resources
>
> It’s hard to tell what’s wrong here.
> You have a whole bunch of self-made (or inherited from Hfa?) devices
> and unknown BIOS.
> Generally, PCIe interrupts are controlled by two fields in the
> config space: the legacy PCI IRQ number and MSI capability field.
> When you get MSI, the legacy IRQ field is zeroed.
> It can also help to check with analyzer, if the root
> complex receives any irq message (legacy or msi) from the device.
>
> Good luck.
> --PA
>
>
> Yossi Leybovich wrote:
>> 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
>>

When I am not setting the MSISupport in registry I do see the INTx msg from the device (over the analyzer)
But my ISR never called

After enabling MSI on my device my ISR is called

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336405-
xxxxx@lists.osr.com] On Behalf Of Pavel A.
Sent: Wednesday, September 10, 2008 6:34 PM
To: Windows System Software Devs Interest List
Subject: Re:[ntdev] PnP Manager Redistributes System Resources

Yossi Leybovich wrote:
> Hi
>
> I checked with analyzer and the device does generate interrupts, and
it gets to the root complex

Are the interrupt messages that you see in analyzer, MSI or INTx type ?

-PA

> Still my ISR never called
>
> Interesting observation is:
> When I enable my device to support MSI (by setting MSISupport field in
the registry) I do get the interrupt from my device.
>
>
> Yossi
>
>> -----Original Message-----
>> From: xxxxx@lists.osr.com [mailto:bounce-336377-
>> xxxxx@lists.osr.com] On Behalf Of Pavel A.
>> Sent: Wednesday, September 10, 2008 10:33 AM
>> To: Windows System Software Devs Interest List
>> Subject: Re:[ntdev] PnP Manager Redistributes System Resources
>>
>> It’s hard to tell what’s wrong here.
>> You have a whole bunch of self-made (or inherited from Hfa?) devices
>> and unknown BIOS.
>> Generally, PCIe interrupts are controlled by two fields in the
>> config space: the legacy PCI IRQ number and MSI capability field.
>> When you get MSI, the legacy IRQ field is zeroed.
>> It can also help to check with analyzer, if the root
>> complex receives any irq message (legacy or msi) from the device.
>>
>> Good luck.
>> --PA
>>
>>
>> Yossi Leybovich wrote:
>>> 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
>>>


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

Yossi,

Can you describe the device topology a little further? Are you connecting to the upstream port of your switch or the downstream port of your switch? One possible problem is that interrupt swizzling is not happening properly - the hardware isn’t following the PCI-PCI bridge rules for converting INTx messages on the downstream side to the upstream side.

Dave

My topology is DEL M1330 aptop with Express-card

Connect to :
My device PCIe switch 1-3 which is connected to cyclone extension board (2 switches 1-1 and 1-8)
I connect GPU,NIC and SATA controller on the extension board.
I have Upper filter driver on my US bridge .
My device ask for one interrupt-line INTA and as you can see from my previous mails the system configure it (in prepareHW)
I created interrupt object and the frame work should connect it to my device interrupt vector.

Although I can see INTA msg flow up from my US port to the Host my ISR never called.
I think that interrupt swizling work fine as I can see my device generate INTA (as expected)

I notice that if I connect only one device (NIC or GPU or SATA) to the extension board my ISR is called
by the OS but when I connect 2 devices GPU and NIC my ISR never called.
I mention during machine boot I can see that Vista reassigned my device resources (memory and interrupt ) few times.
I suspect that in the last reassignment (when it change the interrupt vector) Vista failed to connect my interrupt object

Does someone from MS can confirm that after rebalancing of resources the frame work will reconnect interrupt object ?

Here is my topology.

My device 1-3 PCIe switch
|-------|

US
____________________
-------
DS
-------
===================
Cyclone PCIe
extender board
1-1-1-8
US
-------
-------
DS
-------
-------
US
-------
____________________
-------
DS
-------
GPU NIC SATA

10x
Yossi

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336465-
xxxxx@lists.osr.com] On Behalf Of xxxxx@microsoft.com
Sent: Thursday, September 11, 2008 3:52 AM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] PnP Manager Redistributes System Resources

Yossi,

Can you describe the device topology a little further? Are you
connecting to the upstream port of your switch or the downstream port of
your switch? One possible problem is that interrupt swizzling is not
happening properly - the hardware isn’t following the PCI-PCI bridge
rules for converting INTx messages on the downstream side to the
upstream side.

Dave


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, Yossi. One thing springs to mind. When PnP rebalances resources, it is up to the driver to disconnect its interrupt and reconnect it with the new resources. PnP does not do this for you. I’m not very familiar with KMDF so I can’t speak to specific routines. But it is possible that your ISR is connected to a stale IDT entry, which would cause this problem. If you do !idt and compare the IDT entry that your ISR is connected to with the “Vector” given to you in your resource descriptors, you might find a discrepancy.

Dave

That make sense I will check that .
AFAIK and read in the KMDF , all I need to do is to create interrupt object the framework will connect it
Maybe there is mis-behavior in vista when it rebalancing interrupt resources

I will check the idt issue

10x
Yossi

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336560-
xxxxx@lists.osr.com] On Behalf Of xxxxx@microsoft.com
Sent: Thursday, September 11, 2008 6:23 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] PnP Manager Redistributes System Resources

Thanks, Yossi. One thing springs to mind. When PnP rebalances
resources, it is up to the driver to disconnect its interrupt and
reconnect it with the new resources. PnP does not do this for you. I’m
not very familiar with KMDF so I can’t speak to specific routines. But
it is possible that your ISR is connected to a stale IDT entry, which
would cause this problem. If you do !idt and compare the IDT entry that
your ISR is connected to with the “Vector” given to you in your resource
descriptors, you might find a discrepancy.

Dave


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

Kmdf does disconnect the interrupt on a pnp rebalance. You can put a bp on

Wdf01000!FxInterrupt::Disconnect

to verify. You could also put bps on
ntoskrnl!IoDisconnectInterrrupt
and
ntoskrnl!IoDisconnectInterrruptEx

to be completely paranoid about it

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Yossi Leybovich
Sent: Thursday, September 11, 2008 9:38 AM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] PnP Manager Redistributes System Resources

That make sense I will check that .
AFAIK and read in the KMDF , all I need to do is to create interrupt object the framework will connect it
Maybe there is mis-behavior in vista when it rebalancing interrupt resources

I will check the idt issue

10x
Yossi

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336560-
xxxxx@lists.osr.com] On Behalf Of xxxxx@microsoft.com
Sent: Thursday, September 11, 2008 6:23 PM
To: Windows System Software Devs Interest List
Subject: RE:[ntdev] PnP Manager Redistributes System Resources

Thanks, Yossi. One thing springs to mind. When PnP rebalances
resources, it is up to the driver to disconnect its interrupt and
reconnect it with the new resources. PnP does not do this for you. I’m
not very familiar with KMDF so I can’t speak to specific routines. But
it is possible that your ISR is connected to a stale IDT entry, which
would cause this problem. If you do !idt and compare the IDT entry that
your ISR is connected to with the “Vector” given to you in your resource
descriptors, you might find a discrepancy.

Dave


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


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

Hi Doron

Can you specify the connect function as well ?
I want to see if it disconnect from the first interrupt allocation and connect to the new interrupt allocation

is it:

Wdf01000!FxInterrupt::Connect

ntoskrnl!IoConnectInterrrupt
ntoskrnl!IoConnectInterrruptEx

y

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336602-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Thursday, September 11, 2008 11:15 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] PnP Manager Redistributes System Resources

Kmdf does disconnect the interrupt on a pnp rebalance. You can put a bp
on

Wdf01000!FxInterrupt::Disconnect

to verify. You could also put bps on
ntoskrnl!IoDisconnectInterrrupt
and
ntoskrnl!IoDisconnectInterrruptEx

to be completely paranoid about it

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336572-
xxxxx@lists.osr.com] On Behalf Of Yossi Leybovich
Sent: Thursday, September 11, 2008 9:38 AM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] PnP Manager Redistributes System Resources

That make sense I will check that .
AFAIK and read in the KMDF , all I need to do is to create interrupt
object the framework will connect it
Maybe there is mis-behavior in vista when it rebalancing interrupt
resources

I will check the idt issue

10x
Yossi

> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-336560-
> xxxxx@lists.osr.com] On Behalf Of xxxxx@microsoft.com
> Sent: Thursday, September 11, 2008 6:23 PM
> To: Windows System Software Devs Interest List
> Subject: RE:[ntdev] PnP Manager Redistributes System Resources
>
> Thanks, Yossi. One thing springs to mind. When PnP rebalances
> resources, it is up to the driver to disconnect its interrupt and
> reconnect it with the new resources. PnP does not do this for you.
I’m
> not very familiar with KMDF so I can’t speak to specific routines.
But
> it is possible that your ISR is connected to a stale IDT entry, which
> would cause this problem. If you do !idt and compare the IDT entry
that
> your ISR is connected to with the “Vector” given to you in your
resource
> descriptors, you might find a discrepancy.
>
> Dave
>
>
> —
> 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


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


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

yup

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Yossi Leybovich
Sent: Friday, September 12, 2008 1:47 AM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] PnP Manager Redistributes System Resources

Hi Doron

Can you specify the connect function as well ?
I want to see if it disconnect from the first interrupt allocation and connect to the new interrupt allocation

is it:

Wdf01000!FxInterrupt::Connect

ntoskrnl!IoConnectInterrrupt
ntoskrnl!IoConnectInterrruptEx

y

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336602-
xxxxx@lists.osr.com] On Behalf Of Doron Holan
Sent: Thursday, September 11, 2008 11:15 PM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] PnP Manager Redistributes System Resources

Kmdf does disconnect the interrupt on a pnp rebalance. You can put a bp
on

Wdf01000!FxInterrupt::Disconnect

to verify. You could also put bps on
ntoskrnl!IoDisconnectInterrrupt
and
ntoskrnl!IoDisconnectInterrruptEx

to be completely paranoid about it

d

-----Original Message-----
From: xxxxx@lists.osr.com [mailto:bounce-336572-
xxxxx@lists.osr.com] On Behalf Of Yossi Leybovich
Sent: Thursday, September 11, 2008 9:38 AM
To: Windows System Software Devs Interest List
Subject: RE: RE:[ntdev] PnP Manager Redistributes System Resources

That make sense I will check that .
AFAIK and read in the KMDF , all I need to do is to create interrupt
object the framework will connect it
Maybe there is mis-behavior in vista when it rebalancing interrupt
resources

I will check the idt issue

10x
Yossi

> -----Original Message-----
> From: xxxxx@lists.osr.com [mailto:bounce-336560-
> xxxxx@lists.osr.com] On Behalf Of xxxxx@microsoft.com
> Sent: Thursday, September 11, 2008 6:23 PM
> To: Windows System Software Devs Interest List
> Subject: RE:[ntdev] PnP Manager Redistributes System Resources
>
> Thanks, Yossi. One thing springs to mind. When PnP rebalances
> resources, it is up to the driver to disconnect its interrupt and
> reconnect it with the new resources. PnP does not do this for you.
I’m
> not very familiar with KMDF so I can’t speak to specific routines.
But
> it is possible that your ISR is connected to a stale IDT entry, which
> would cause this problem. If you do !idt and compare the IDT entry
that
> your ISR is connected to with the “Vector” given to you in your
resource
> descriptors, you might find a discrepancy.
>
> Dave
>
>
> —
> 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


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


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


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