Date: Fri, 17 Mar 1995 22:57:15 +0100 From: se@MI.Uni-Koeln.DE (Stefan Esser) To: current@FreeBSD.org Subject: Re: Sharing interrupts with PCI devices? Message-ID: <199503172157.AA02658@FileServ2.MI.Uni-Koeln.DE> In-Reply-To: "Justin T. Gibbs" <gibbs@estienne.cs.berkeley.edu> "Re: Sharing interrupts with PCI devices?" (Mar 17, 12:27)
next in thread | previous in thread | raw e-mail | index | archive | help
On Mar 17, 12:27, "Justin T. Gibbs" wrote: } Subject: Re: Sharing interrupts with PCI devices? } > } >PCI interrupts can be shared, but ISA } >interrupts will have to be assigned } >uniquely as before. } > } } Why can't we chain them? I thought that the PCI spec allowed for PCI } devices to share ISA irqs. This would require further changes in the ISA interrupt code. And ISA interrupts are Edge Triggered on most systems, and that isn't a good base for shared interrupts ... Shared interrupts are a requirement for PCI, if you want to deal with 4 channel Ethernet cards, or with PCI to PCI bridges in general. The PCI shared interrupt code can be implemented architecture independent (i.e. is not bound to PC compatible hardware), while moving that code into the ISA tree means it sure can't be used for other machines with PCI bus, and will have to be reimplemented. I can live without shared ISA interrupts, but we need them for PCI. } >The PCI code generally finds the IRQ } >line the PCI interrupt is routed to } >by a PCI BIOS call, or (as the current } >BSD code does) in a PCI configuration } >space register. } } I take it that both methods return the same result. Yes. Else there was something severely wrong with your BIOS. } >The NCR driver doesn't install an } >interrupt handler if the IRQ found } >this way is '0'. It works in a polled } >mode instead. There is nothing to } >prevent you from making the driver } >configuration depend on the IRQ being } >specified. So it's in fact quite easy } >to selectively disable the aic7870 in } >the above mentioned case ... } } So how do I enforce an irq? Can I just specify it in the } kernel config file? My irq comes out as 10 for both the } onboard controller and the separate 294x. It is possible to specify the IRQ in the kernel config file, but you don't want to do that. You expect the PCI BIOS to do the complete PCI chip set initialisation, including the PCI Int to IRQ routing. The BIOS puts the IRQ value it has prepared for some PCI device into a special configuration space register, were the driver reads it. The Int to IRQ routing is implemented quite differerently in the many PCI chip sets currently on the market. Most let you specify one IRQ for the PCI IntA line, but completely ignore IntB to IntD. If both your AIC devices are mapped to use IRQ 10 (you are using the pci_map_int() call, which will use the BIOS supplied value), then this is what you specified in the BIOS. I don't know which motherboard you use, but it may help, if you send me the boot message log. Regards, STefan -- Stefan Esser Internet: <se@ZPR.Uni-Koeln.DE> Zentrum fuer Paralleles Rechnen Tel: +49 221 4706019 Universitaet zu Koeln FAX: +49 221 4705160 Weyertal 80 50931 Koeln
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199503172157.AA02658>