Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Mar 1997 22:29:18 -0500
From:      "Louis A. Mamakos" <louie@TransSys.COM>
To:        Amancio Hasty <hasty@rah.star-gate.com>
Cc:        multimedia@freebsd.org
Subject:   Re: PCI shared IRQs? 
Message-ID:  <199703190329.WAA01841@whizzo.transsys.com>
In-Reply-To: Your message of "Tue, 18 Mar 1997 10:40:40 PST." <199703181840.KAA14284@rah.star-gate.com> 
References:  <199703181840.KAA14284@rah.star-gate.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> 
> Does anyone in the list know how pci.c manages to multiplex different
> devices using the same IRQ? 

The nitty-gritty is the dispatch routing in /sys/pci/pci.c pci_int(), which
walks the list of register interrupt handlers attached to each PCI 
interrupt.  

When the first driver registers for an interrupt, the interrupt handler points
directly to the driver.  When subsequent drivers register, then interrupt
handler points the dispatch routine and a list of interrupt handlers is
created, each of which is called.

The reason this can be made to work is that interrupts are level sensitive
on the PCI bus, rather than edge sensistive on the ISA.   Thus, a board will
continue to assert an interrupt until serviced.

louie





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703190329.WAA01841>