Date: Fri, 9 Feb 1996 10:13:19 -0700 (MST) From: Terry Lambert <terry@lambert.org> To: luigi@labinfo.iet.unipi.it (Luigi Rizzo) Cc: se@zpr.uni-koeln.de, hackers@FreeBSD.org Subject: Re: scanpci.c and pci-related stuff Message-ID: <199602091713.KAA10691@phaeton.artisoft.com> In-Reply-To: <199602091530.QAA02610@labinfo.iet.unipi.it> from "Luigi Rizzo" at Feb 9, 96 04:30:12 pm
next in thread | previous in thread | raw e-mail | index | archive | help
> > Please describe the situation where the same > > IRQ was used for two PCI devices. > > I have two identical PC-net PCI boards, plugged in adjacent slots. > On one particular motherboard they are both configured with IRQ10, on a > similar motherboard one gets IRQ10, the other IRQ11 Apparantly, the motherboards are not that similar... > Also, at times I'd like to free some specific IRQs. As an example: here > I have a system with the following devices: > > sio0,1,2 (irq 3, 4, 5) > lpt0 (irq7) > ed0 (irq10, PCI) > meteor (irq9,PCI) > vga (irq11, PCI) > > and I'd like to put in a scanner (can use irq3,5,10) and an SB16. > I must free irq10, and possibly irq9 as well. Make sure the ISA portion of your motherboard is PlugNPlay capable and that *all* your ISA cards are PlugNPlay cards, and you won't have this problem. In general, there are three interrupts, A, B, and C, assignable for PCI. What ISA interupts these get set to depends on the PCI bridge chipset configuration, which depends on hardware or software switches (very board dependent). The problem you are seeing is typical of internal-ISA-bridged-to-PCI motherboards. An internal-PCI-bridged-to-ISA (for instance, using the chipset DEC uses in the Alpha 21064 evaluation board or the one that Motorolla uses in the Ultra 603/604 PPC evaluation board instead of an Intrel chipset would fix the problem. Use the Apple chipset, and you will get 6 PCI slots without PCI-PCI bridging). In other words, the problem is inherent to you having ISA slots. I'd guess that the board where multiple PCI's are getting assigned the same interrupt is a "Genuine Intel" motherboard, probably a Zappa. The PCI motherboards from the Intel OEM products division assign the same interrupt to all PCI slots. It is up to the interrupt handling in your OS software to realize that this is allowable (but never desirable, Intel, if you are listening) under the spec to require the OS to demux PCI interrupts. In general, there are Intel motherboards that "Do The Right Thing", but Intel typically does not sell them (as Rod Grimes about this one). I recommend against Intel OEM Products Division boards. In your example where the PCI interrupt is "reassigned", what is happening is that the PCI configuration is defaulted in the driver, then read from the PCI -- that is, it is a driver reconfiguration, not a PCI reconfiguration. What you thought was happening is not what actually happened. Without a drive specific to the bridge chip set (and without the capability built into the chipset itself), it's not possible to reassign interrupts once they have been assigend by the conflict resoloution code on the PCI motherboard. The typical conflict case is with PCI-PCI conflicts for pre-2.0 spec motherboards and/or cards (the best example from "the FreeBSD chronicles" is the BusLogic PCI board, which used multiple memory windows but an Intel Zappa with Saturn II ISA->PCI bridge couldn't resolve the conflicts without a BIOS upgrade to PCI 2.0 -- and the hardware couldn't handle the upgrade). This type of confligt is *impossible* to resolve without a BIOS and/or hardware patch. Your problem sounds more like a configuration/interrupt code problem; I don't know the current status of PCI interrupt multiplexing in the FreeBSD kernel (you'd have to have -current to find out yourself), but I suspect that you want to change jumpers on the motherboard or modify a CMOS setup for the PCI on the motherboard to fix your problem. Stephan might have more information on this for specific hardware... Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602091713.KAA10691>