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

If the annoyance/problem is related to debugging your driver, you can
disable the other device on your test system using the device mangler.

/simgr

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Tim Roberts
Sent: Thursday, February 24, 2005 9:26 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?

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.


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

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

I think it is annoying from performance point of view. It hearts code/cache
locality obviously. Also, the driver’s ISR at least need to check registers
for possible pending interrupts. It generates “memory read” cycle(s) on the
bus which has higher priority than “read line” and “read multiple”
therefore; in-progress long burst could be disturbed.

There’s no real good solution unless the HW/driver/OS/Motherboard support
MSI.

Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com

-----Original Message-----
From: Tim Roberts [mailto:xxxxx@probo.com]
Sent: February 24, 2005 9:26 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?

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.


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

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

If you have control over the system BIOS you could certainly have the
system BIOS ACPI code restrict your device to a single interrupt with
the interrupt routing tables allowing no other slot or device.

MSI is NOT the only solution for this. There are device side solutions
as well.

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Calvin Guan
Sent: Friday, February 25, 2005 7:55 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] Is there any way that I can prevent my driver’s ISR
f rom being ca lled because of the interrupt from the other IRQ-shared
devi ces?

I think it is annoying from performance point of view. It hearts
code/cache
locality obviously. Also, the driver’s ISR at least need to check
registers
for possible pending interrupts. It generates “memory read” cycle(s) on
the
bus which has higher priority than “read line” and “read multiple”
therefore; in-progress long burst could be disturbed.

There’s no real good solution unless the HW/driver/OS/Motherboard
support
MSI.

Calvin Guan Software Engineer
ATI Technologies Inc. www.ati.com

-----Original Message-----
From: Tim Roberts [mailto:xxxxx@probo.com]
Sent: February 24, 2005 9:26 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?

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.


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

You are currently subscribed to ntdev as: xxxxx@ati.com
To unsubscribe send a blank email to xxxxx@lists.osr.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

Thanks all of you who have helped me out there.

My decision is make my device to share IRQ with a device with less frequent
interrupt activity.

Thanks,
zhonghsheng

-----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@exgate.tek.com
To unsubscribe send a blank email to xxxxx@lists.osr.com