Interrupt collision

Could anybody explain me following thing. I write driver for some PnP
hardware. PnP drvier. PnP Manager provides my driver with resources
which device need to work: I/O range, IRQ. But IRQ the same as my
video card occupies. And when I try to connect to IRQ my video card
fails so system crashes.
Should I use resources that PnP gave me. Or simply call previous
(video card) interrupt routine? And how can I do that?
A matter of course I can’t plug my device into other PCI slot.
Thanks.

-MB

Shared interrupts, it’s a feature. The registered ISR’s for a given IRQ
will be chained and called until one of them returns TRUE which
indicates the ISR handled the interrupt.

Yes, you should use the resources the PNP gave you.

Pete

Peter Scott
xxxxx@KernelDrivers.com
www.KernelDrivers.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav Kraev
Sent: Monday, October 27, 1997 8:39 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Interrupt collision

Could anybody explain me following thing. I write driver for some PnP
hardware. PnP drvier. PnP Manager provides my driver with resources
which device need to work: I/O range, IRQ. But IRQ the same as my
video card occupies. And when I try to connect to IRQ my video card
fails so system crashes.
Should I use resources that PnP gave me. Or simply call previous
(video card) interrupt routine? And how can I do that?
A matter of course I can’t plug my device into other PCI slot.
Thanks.

-MB


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

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

Three possibilities come to mind:

  1. your driver’s ISR is broken and does not correctly return TRUE/FALSE from
    the ISR, or did not mark the interrupt as shareable.

  2. your platform bios is broken: try this on another platform.

  3. your video driver is broken: replace the video card with a different
    manufacturer’s device.

I vote for (1). New code is crappy code.

You can only use the resources that PnP gave you. You cannot call another
driver’s interrupt routine from your driver. You must return TRUE from your
ISR if and only if you detected and handled an interrupt condition on your
hardware.

=====================
Mark Roddy

-----Original Message-----
From: Stanislav Kraev [mailto:xxxxx@gtn.ru]
Sent: Monday, October 27, 1997 10:39 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] Interrupt collision

Could anybody explain me following thing. I write driver for
some PnP hardware. PnP drvier. PnP Manager provides my driver
with resources which device need to work: I/O range, IRQ. But
IRQ the same as my video card occupies. And when I try to
connect to IRQ my video card fails so system crashes. Should
I use resources that PnP gave me. Or simply call previous
(video card) interrupt routine? And how can I do that? A
matter of course I can’t plug my device into other PCI slot. Thanks.

-MB


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 get it. Thanks. But how could I know that that’s my IRQ, not other
(video card for example)?
Another question. Must my driver do some special code for creating IRQ
chain?

-MB

PS> Shared interrupts, it’s a feature. The registered ISR’s for a given IRQ
PS> will be chained and called until one of them returns TRUE which
PS> indicates the ISR handled the interrupt.

PS> Yes, you should use the resources the PNP gave you.

PS> Pete

PS> Peter Scott
PS> xxxxx@KernelDrivers.com
PS> www.KernelDrivers.com

PS> -----Original Message-----
PS> From: xxxxx@lists.osr.com
PS> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav Kraev
PS> Sent: Monday, October 27, 1997 8:39 AM
PS> To: Windows System Software Devs Interest List
PS> Subject: [ntdev] Interrupt collision

PS> Could anybody explain me following thing. I write driver for some PnP
PS> hardware. PnP drvier. PnP Manager provides my driver with resources
PS> which device need to work: I/O range, IRQ. But IRQ the same as my
PS> video card occupies. And when I try to connect to IRQ my video card
PS> fails so system crashes.
PS> Should I use resources that PnP gave me. Or simply call previous
PS> (video card) interrupt routine? And how can I do that?
PS> A matter of course I can’t plug my device into other PCI slot.
PS> Thanks.

PS> -MB

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

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

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

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

At 07:03 PM 10/27/1997 +0300, you wrote:

I get it. Thanks. But how could I know that that’s my IRQ, not other
(video card for example)?
Another question. Must my driver do some special code for creating IRQ
chain?

No, you simply need to poll a register on your device (interrupt status
register) to see if your device created the interrupt. If not, return false
from your ISR to indicate that your device did not generate the interrupt.
Windows will then pass the IRQ request down to the next driver for that
interrupt.

If your device has no means to tell if it has generated an interrupt, then
it probably needs to be re-designed to add one.

Russ Poffenberger
NPTest, Inc.
xxxxx@NPTest.com

Your hardware *must* provide interrupt status information that informs your
driver that it has requested an interrupt. If it does not provide such
information then your hardware is broken and must be fixed.

=====================
Mark Roddy

-----Original Message-----
From: Stanislav Kraev [mailto:xxxxx@gtn.ru]
Sent: Monday, October 27, 1997 11:04 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: Interrupt collision

I get it. Thanks. But how could I know that that’s my IRQ,
not other (video card for example)? Another question. Must my
driver do some special code for creating IRQ chain?

-MB

PS> Shared interrupts, it’s a feature. The registered ISR’s
for a given
PS> IRQ will be chained and called until one of them returns
TRUE which
PS> indicates the ISR handled the interrupt.

PS> Yes, you should use the resources the PNP gave you.

PS> Pete

PS> Peter Scott
PS> xxxxx@KernelDrivers.com
PS> www.KernelDrivers.com

PS> -----Original Message-----
PS> From: xxxxx@lists.osr.com
PS> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav
PS> Kraev
PS> Sent: Monday, October 27, 1997 8:39 AM
PS> To: Windows System Software Devs Interest List
PS> Subject: [ntdev] Interrupt collision

PS> Could anybody explain me following thing. I write driver for some
PS> PnP hardware. PnP drvier. PnP Manager provides my driver with
PS> resources which device need to work: I/O range, IRQ. But IRQ the
PS> same as my video card occupies. And when I try to connect
to IRQ my
PS> video card fails so system crashes. Should I use
resources that PnP
PS> gave me. Or simply call previous (video card) interrupt
routine? And
PS> how can I do that? A matter of course I can’t plug my device into
PS> other PCI slot. Thanks.

PS> -MB

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

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

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

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

As Mark indicated, make sure you mark it as shareable. No other work is
needed to chain the ISR’s, just don’t return true if it is not your
hardware interrupting.

As to how to determine if it is your hardware that is interrupting?
Well, check your hardware and see if it has interrupted.

Pete

Peter Scott
xxxxx@KernelDrivers.com
www.KernelDrivers.com

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav Kraev
Sent: Monday, October 27, 1997 9:04 AM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: Interrupt collision

I get it. Thanks. But how could I know that that’s my IRQ, not other
(video card for example)?
Another question. Must my driver do some special code for creating IRQ
chain?

-MB

PS> Shared interrupts, it’s a feature. The registered ISR’s for a given
IRQ
PS> will be chained and called until one of them returns TRUE which
PS> indicates the ISR handled the interrupt.

PS> Yes, you should use the resources the PNP gave you.

PS> Pete

PS> Peter Scott
PS> xxxxx@KernelDrivers.com
PS> www.KernelDrivers.com

PS> -----Original Message-----
PS> From: xxxxx@lists.osr.com
PS> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav
Kraev
PS> Sent: Monday, October 27, 1997 8:39 AM
PS> To: Windows System Software Devs Interest List
PS> Subject: [ntdev] Interrupt collision

PS> Could anybody explain me following thing. I write driver for some
PnP
PS> hardware. PnP drvier. PnP Manager provides my driver with resources
PS> which device need to work: I/O range, IRQ. But IRQ the same as my
PS> video card occupies. And when I try to connect to IRQ my video card
PS> fails so system crashes.
PS> Should I use resources that PnP gave me. Or simply call previous
PS> (video card) interrupt routine? And how can I do that?
PS> A matter of course I can’t plug my device into other PCI slot.
PS> Thanks.

PS> -MB

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

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

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

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

Shared interrupt. That was the problem. And what about returning TRUE.
Can it be that 2 devices simultaneously raised IRQ? I mean should I
return FALSE even if my device has set IRQ so other devices could
process their own?

PS> As Mark indicated, make sure you mark it as shareable. No other work is
PS> needed to chain the ISR’s, just don’t return true if it is not your
PS> hardware interrupting.

PS> As to how to determine if it is your hardware that is interrupting?
PS> Well, check your hardware and see if it has interrupted.

PS> Pete

PS> Peter Scott
PS> xxxxx@KernelDrivers.com
PS> www.KernelDrivers.com

PS> -----Original Message-----
PS> From: xxxxx@lists.osr.com
PS> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav Kraev
PS> Sent: Monday, October 27, 1997 9:04 AM
PS> To: Windows System Software Devs Interest List
PS> Subject: [ntdev] RE: Interrupt collision

PS> I get it. Thanks. But how could I know that that’s my IRQ, not other
PS> (video card for example)?
PS> Another question. Must my driver do some special code for creating IRQ
PS> chain?

PS> -MB

PS>> Shared interrupts, it’s a feature. The registered ISR’s for a given
PS> IRQ
PS>> will be chained and called until one of them returns TRUE which
PS>> indicates the ISR handled the interrupt.

PS>> Yes, you should use the resources the PNP gave you.

PS>> Pete

PS>> Peter Scott
PS>> xxxxx@KernelDrivers.com
PS>> www.KernelDrivers.com

PS>> -----Original Message-----
PS>> From: xxxxx@lists.osr.com
PS>> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav
PS> Kraev
PS>> Sent: Monday, October 27, 1997 8:39 AM
PS>> To: Windows System Software Devs Interest List
PS>> Subject: [ntdev] Interrupt collision

PS>> Could anybody explain me following thing. I write driver for some
PS> PnP
PS>> hardware. PnP drvier. PnP Manager provides my driver with resources
PS>> which device need to work: I/O range, IRQ. But IRQ the same as my
PS>> video card occupies. And when I try to connect to IRQ my video card
PS>> fails so system crashes.
PS>> Should I use resources that PnP gave me. Or simply call previous
PS>> (video card) interrupt routine? And how can I do that?
PS>> A matter of course I can’t plug my device into other PCI slot.
PS>> Thanks.

PS>> -MB

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

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

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

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

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

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

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

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

Something is strange with your IoConnectInterrupt parameter. PCI devices
must specify LevelSensitive. Is it so for your device?

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

----- Original Message -----
From: “Stanislav Kraev”
To: “Windows System Software Devs Interest List”
Sent: Monday, October 27, 1997 6:38 PM
Subject: [ntdev] Interrupt collision

> Could anybody explain me following thing. I write driver for some PnP
> hardware. PnP drvier. PnP Manager provides my driver with resources
> which device need to work: I/O range, IRQ. But IRQ the same as my
> video card occupies. And when I try to connect to IRQ my video card
> fails so system crashes.
> Should I use resources that PnP gave me. Or simply call previous
> (video card) interrupt routine? And how can I do that?
> A matter of course I can’t plug my device into other PCI slot.
> Thanks.
>
> -MB
>
>
> —
> Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com
> To unsubscribe send a blank email to xxxxx@lists.osr.com

After your ISR claimed the interrupt by returning TRUE from ISR, Kernel
won’t call the next ISR in the chain. If there’s other pending interrupt in
the ISR chain, the CPU will get interrupted again as soon as the HAL EOI
handler re-enable the interrupt. So devices won’t miss interrupts in this
case.

Calvin Guan, Software Developer xxxxx@nospam.ati.com
SW2D-Radeon NT Core Drivers
ATI Technologies Inc.
1 Commerce Valley Drive East
Markham, Ontario, Canada L3T 7X6
Tel: (905) 882-2600 Ext. 8654
Find a driver: http://www.ati.com/support/driver.html

-----Original Message-----
From: Stanislav Kraev [mailto:xxxxx@gtn.ru]
Sent: Monday, October 27, 1997 12:01 PM
To: Windows System Software Devs Interest List
Subject: [ntdev] RE: Interrupt collision

Shared interrupt. That was the problem. And what about returning TRUE.
Can it be that 2 devices simultaneously raised IRQ? I mean should I
return FALSE even if my device has set IRQ so other devices could
process their own?

PS> As Mark indicated, make sure you mark it as shareable. No other work is
PS> needed to chain the ISR’s, just don’t return true if it is not your
PS> hardware interrupting.

PS> As to how to determine if it is your hardware that is interrupting?
PS> Well, check your hardware and see if it has interrupted.

PS> Pete

PS> Peter Scott
PS> xxxxx@KernelDrivers.com
PS> www.KernelDrivers.com

PS> -----Original Message-----
PS> From: xxxxx@lists.osr.com
PS> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav Kraev
PS> Sent: Monday, October 27, 1997 9:04 AM
PS> To: Windows System Software Devs Interest List
PS> Subject: [ntdev] RE: Interrupt collision

PS> I get it. Thanks. But how could I know that that’s my IRQ, not other
PS> (video card for example)?
PS> Another question. Must my driver do some special code for creating IRQ
PS> chain?

PS> -MB

PS>> Shared interrupts, it’s a feature. The registered ISR’s for a given
PS> IRQ
PS>> will be chained and called until one of them returns TRUE which
PS>> indicates the ISR handled the interrupt.

PS>> Yes, you should use the resources the PNP gave you.

PS>> Pete

PS>> Peter Scott
PS>> xxxxx@KernelDrivers.com
PS>> www.KernelDrivers.com

PS>> -----Original Message-----
PS>> From: xxxxx@lists.osr.com
PS>> [mailto:xxxxx@lists.osr.com] On Behalf Of Stanislav
PS> Kraev
PS>> Sent: Monday, October 27, 1997 8:39 AM
PS>> To: Windows System Software Devs Interest List
PS>> Subject: [ntdev] Interrupt collision

PS>> Could anybody explain me following thing. I write driver for some
PS> PnP
PS>> hardware. PnP drvier. PnP Manager provides my driver with resources
PS>> which device need to work: I/O range, IRQ. But IRQ the same as my
PS>> video card occupies. And when I try to connect to IRQ my video card
PS>> fails so system crashes.
PS>> Should I use resources that PnP gave me. Or simply call previous
PS>> (video card) interrupt routine? And how can I do that?
PS>> A matter of course I can’t plug my device into other PCI slot.
PS>> Thanks.

PS>> -MB

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

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

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

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

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

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

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

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

> Another question. Must my driver do some special code for creating IRQ

chain?

Just the following:

  • first determine whether it is really your piece of hardware who interrupts
  • if no - return FALSE ASAP
  • otherwise, you must prevent your piece of hardware from asserting the INTA#
    any more by writing to some registers, and return TRUE. You can also do any
    processing that you want in this case, including queuing a DPC.

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

>

Shared interrupt. That was the problem. And what about
returning TRUE. Can it be that 2 devices simultaneously
raised IRQ? I mean should I return FALSE even if my device
has set IRQ so other devices could process their own?

Yes two devices can simultaneously assert an interrupt. If your device
handles an interrupt request it MUST return TRUE from its ISR, otherwise it
MUST return FALSE. Your driver must also cause its hardware to de-assert the
interrupt if it handled the interrupt. In the case of two or more
simultaneous interrupts on a shared vector for a PCI-type bus, the OS will
called chained ISRs until one returns TRUE, and the bus will continue to
assert an interrupt, causing the OS interrupt processing to repeat itself,
until all devices asserting interrupts have been processed and told to
shutup. Eventually this will run all ISRs for a vector.

=====================
Mark Roddy

Great thanks. All your answears fully represent my problem.

  • MB

>
> Shared interrupt. That was the problem. And what about
> returning TRUE. Can it be that 2 devices simultaneously
> raised IRQ? I mean should I return FALSE even if my device
> has set IRQ so other devices could process their own?
>
RM> Yes two devices can simultaneously assert an interrupt. If your device
RM> handles an interrupt request it MUST return TRUE from its ISR, otherwise it
RM> MUST return FALSE. Your driver must also cause its hardware to de-assert the
RM> interrupt if it handled the interrupt. In the case of two or more
RM> simultaneous interrupts on a shared vector for a PCI-type bus, the OS will
RM> called chained ISRs until one returns TRUE, and the bus will continue to
RM> assert an interrupt, causing the OS interrupt processing to repeat itself,
RM> until all devices asserting interrupts have been processed and told to
RM> shutup. Eventually this will run all ISRs for a vector.

RM> =====================
RM> Mark Roddy

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

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

How about spurious interrupts? If no one is gonna return TRUE, will it hang
the system?

From: “Roddy, Mark”
>Reply-To: “Windows System Software Devs Interest List”
>
>To: “Windows System Software Devs Interest List”
>Subject: [ntdev] RE: Interrupt collision
>Date: Mon, 27 Oct 2003 12:25:32 -0500
>
> >
> > Shared interrupt. That was the problem. And what about
> > returning TRUE. Can it be that 2 devices simultaneously
> > raised IRQ? I mean should I return FALSE even if my device
> > has set IRQ so other devices could process their own?
> >
>Yes two devices can simultaneously assert an interrupt. If your device
>handles an interrupt request it MUST return TRUE from its ISR, otherwise it
>MUST return FALSE. Your driver must also cause its hardware to de-assert
>the
>interrupt if it handled the interrupt. In the case of two or more
>simultaneous interrupts on a shared vector for a PCI-type bus, the OS will
>called chained ISRs until one returns TRUE, and the bus will continue to
>assert an interrupt, causing the OS interrupt processing to repeat itself,
>until all devices asserting interrupts have been processed and told to
>shutup. Eventually this will run all ISRs for a vector.
>
>
>
>
>=====================
>Mark Roddy
>
>
>—
>Questions? First check the Kernel Driver FAQ at
>http://www.osronline.com/article.cfm?id=256
>
>You are currently subscribed to ntdev as: xxxxx@hotmail.com
>To unsubscribe send a blank email to xxxxx@lists.osr.com

_________________________________________________________________
See when your friends are online with MSN Messenger 6.0. Download it now
FREE! http://msnmessenger-download.com

Yes, exactly. Some device or system component generated the ‘spurious’
interrupt, right? If no driver claims to be responsible for the interrupt,
there’s no driver to tell its hardware to ‘shut up’, so the interrupt
remains asserted.

Tom

Tom Stonecypher
www.iStreamConsulting.com

“Ta H.” wrote in message news:xxxxx@ntdev…
>
> How about spurious interrupts? If no one is gonna return TRUE, will it
hang
> the system?
>
>
> >From: “Roddy, Mark”
> >Reply-To: “Windows System Software Devs Interest List”
> >
> >To: “Windows System Software Devs Interest List”
> >Subject: [ntdev] RE: Interrupt collision
> >Date: Mon, 27 Oct 2003 12:25:32 -0500
> >
> > >
> > > Shared interrupt. That was the problem. And what about
> > > returning TRUE. Can it be that 2 devices simultaneously
> > > raised IRQ? I mean should I return FALSE even if my device
> > > has set IRQ so other devices could process their own?
> > >
> >Yes two devices can simultaneously assert an interrupt. If your device
> >handles an interrupt request it MUST return TRUE from its ISR, otherwise
it
> >MUST return FALSE. Your driver must also cause its hardware to de-assert
> >the
> >interrupt if it handled the interrupt. In the case of two or more
> >simultaneous interrupts on a shared vector for a PCI-type bus, the OS
will
> >called chained ISRs until one returns TRUE, and the bus will continue to
> >assert an interrupt, causing the OS interrupt processing to repeat
itself,
> >until all devices asserting interrupts have been processed and told to
> >shutup. Eventually this will run all ISRs for a vector.
> >
> >
> >
> >
> >=====================
> >Mark Roddy
> >
> >
> >—
> >Questions? First check the Kernel Driver FAQ at
> >http://www.osronline.com/article.cfm?id=256
> >
> >You are currently subscribed to ntdev as: xxxxx@hotmail.com
> >To unsubscribe send a blank email to xxxxx@lists.osr.com
>
> _________________________________________________________________
> See when your friends are online with MSN Messenger 6.0. Download it now
> FREE! http://msnmessenger-download.com
>
>
>