Is there any way that I can prevent my driver's ISR from being ca lled because of the interrupt from

I am working on a PCI device driver for Windows XP. My device is sharing IRQ
with another device on the PCI bus, such as ethernet controller. Whenever
the ethernet control raises the interrupt, the ISR routine in my driver is
called too. Of course my device is not going to do anything, but it is
really annoying especially when the other device is very interrupt-active
(like ethernet controller).

Is there any way that I can prevent my driver’s ISR from being called
because of the interrupt from the other device?

Thanks,

Zhongsheng Wang
PSPL Software Design Engineer
Phone: (503)627-5260
Fax: (503)627-5622
Email: xxxxx@tek.com

xxxxx@exgate.tek.com wrote:

I am working on a PCI device driver for Windows XP. My device is sharing IRQ
with another device on the PCI bus, such as ethernet controller. Whenever
the ethernet control raises the interrupt, the ISR routine in my driver is
called too. Of course my device is not going to do anything, but it is
really annoying especially when the other device is very interrupt-active
(like ethernet controller).

Is there any way that I can prevent my driver’s ISR from being called
because of the interrupt from the other device?

No.

Why is it annoying? Your ISR runs, decides it has no pending
interrupts, and returns.

Well, maybe. Try putting your device in different slots. But you may end up sharing the IRQ with the same device or some other device. I assume it’s annoying because you are debugging and maybe you have some debug statements in your ISR. However, you need to be able to handle this situation. You will never be able to avoid it reliably in the field.

xxxxx@lists.osr.com wrote: -----

To: "Windows System Software Devs Interest List"
From: xxxxx@exgate.tek.com
Sent by: xxxxx@lists.osr.com
Date: 02/24/2005 09:09PM
Subject: [ntdev] Is there any way that I can prevent my driver's ISR from being ca lled because of the interrupt from the other IRQ-shared devices?

I am working on a PCI device driver for Windows XP. My device is sharing IRQ
with another device on the PCI bus, such as ethernet controller. Whenever
the ethernet control raises the interrupt, the ISR routine in my driver is
called too. Of course my device is not going to do anything, but it is
really annoying especially when the other device is very interrupt-active
(like ethernet controller).

Is there any way that I can prevent my driver's ISR from being called
because of the interrupt from the other device?

Thanks,

Zhongsheng Wang
PSPL Software Design Engineer
Phone: (503)627-5260
Fax: (503)627-5622
Email: xxxxx@tek.com

---
Questions? First check the Kernel Driver FAQ at http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@attotech.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

> Is there any way that I can prevent my driver’s ISR from being called

because of the interrupt from the other device?

No. According to PCI spec, you must quickly poll your device to determine
whether it is really you who interrupts, and quickly return FALSE if not so.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

Actually, I disagree. If you can find me a spot that says that a PCI
device must poll the device to determine if it interrupted, I’d be
curious to see that.

All of that being said - the easiest and most correct way of doing this
in a driver is to do exactly what Maxim and others have said - check
your device as quickly as possible and bail out.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Maxim S. Shatskih
Sent: Friday, February 25, 2005 12:25 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Is there any way that I can prevent my driver’s ISR
from being ca lled because of the interrupt from the other IRQ-shared
devices?

Is there any way that I can prevent my driver’s ISR from being called
because of the interrupt from the other device?

No. According to PCI spec, you must quickly poll your device to
determine
whether it is really you who interrupts, and quickly return FALSE if not
so.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@nvidia.com
To unsubscribe send a blank email to xxxxx@lists.osr.com

>Actually, I disagree. If you can find me a spot that says that a PCI

device must poll the device to determine if it interrupted, I’d be

PCI interrupts are shared open-collector wires. So, several devices can signal
the same interrupt wire. Polling in ISR is the only chance of getting out of
this mess.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com

You just have to check status - that doesn’t mean you have to put a read
transaction on the PCI bus to do so.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Maxim S. Shatskih
Sent: Friday, February 25, 2005 4:10 PM
To: Windows System Software Devs Interest List
Subject: Re: [ntdev] Is there any way that I can prevent my driver’s ISR
from being ca lled because of the interrupt from the other IRQ-shared
devices?

Actually, I disagree. If you can find me a spot that says that a PCI
device must poll the device to determine if it interrupted, I’d be

PCI interrupts are shared open-collector wires. So, several devices can
signal
the same interrupt wire. Polling in ISR is the only chance of getting
out of
this mess.

Maxim Shatskih, Windows DDK MVP
StorageCraft Corporation
xxxxx@storagecraft.com
http://www.storagecraft.com


Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256

You are currently subscribed to ntdev as: xxxxx@nvidia.com
To unsubscribe send a blank email to xxxxx@lists.osr.com