IRQ sharing?

Simple question: does QNX 4.25 support IRQ sharing? Due to a change with
our PC supplier, we now run into IRQ conflicts (on the PCI bus)that in the
past we were mostly able to avoid. I’m sure that we have had systems that
had conflicts in the past that worked just fine, but the question is were
we just lucky? I know the hardware deals with it, but what about the OS?

TIA!

JJ <jason.johnson@fkilogistex.com> wrote:

Simple question: does QNX 4.25 support IRQ sharing? Due to a change with
our PC supplier, we now run into IRQ conflicts (on the PCI bus)that in the
past we were mostly able to avoid. I’m sure that we have had systems that
had conflicts in the past that worked just fine, but the question is were
we just lucky? I know the hardware deals with it, but what about the OS?

In general, yes, but it is a slightly complicated question.

The core OS provides the tools that allow drivers to share IRQs (on the
PCI bus). It allows multiple drivers to register for the same IRQ, and
will call the handler from each one. Then, each driver must be properly
coded to acknowledge and clear, or mask, its hardware’s interrupt request
at interrupt time.

To my knowledge, at least QNX supplied network and filesystem drivers
do this properly. I think our serial drivers are fine as well. I
don’t know about console, but I don’t think IRQ 1 is usually shared
anyway.

Any third party driver for a PCI card SHOULD be coded to properly share
interrupts, as it is nearly impossible to control whether or not the
PCI BIOS will allocate a shared interrupt to a particular device.

-David

David Gibbs
QNX Training Services
dagibbs@qnx.com

Thanks David!

David Gibbs wrote:

JJ <> jason.johnson@fkilogistex.com> > wrote:

Simple question: does QNX 4.25 support IRQ sharing? Due to a change with
our PC supplier, we now run into IRQ conflicts (on the PCI bus)that in the
past we were mostly able to avoid. I’m sure that we have had systems that
had conflicts in the past that worked just fine, but the question is were
we just lucky? I know the hardware deals with it, but what about the OS?

In general, yes, but it is a slightly complicated question.

The core OS provides the tools that allow drivers to share IRQs (on the
PCI bus). It allows multiple drivers to register for the same IRQ, and
will call the handler from each one. Then, each driver must be properly
coded to acknowledge and clear, or mask, its hardware’s interrupt request
at interrupt time.

To my knowledge, at least QNX supplied network and filesystem drivers
do this properly. I think our serial drivers are fine as well. I
don’t know about console, but I don’t think IRQ 1 is usually shared
anyway.

Any third party driver for a PCI card SHOULD be coded to properly share
interrupts, as it is nearly impossible to control whether or not the
PCI BIOS will allocate a shared interrupt to a particular device.

-David

David Gibbs
QNX Training Services
dagibbs@qnx.com