Date: Mon, 21 Dec 1998 09:22:56 -0700 (MST) From: Kevin Van Maren <vanmaren@fast.cs.utah.edu> To: doconnor@gsoft.com.au, mike@smith.net.au Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: PCI IRQ mappings Message-ID: <199812211622.JAA01401@fast.cs.utah.edu>
next in thread | raw e-mail | index | archive | help
> Windows 9[58] take it upon themselves to manage resource allocation, > and they do this using int 1a functions 0xb10e and 0xb10f (get IRQ > routing information, set PCI IRQ). You also have to update the config > register on the PCI device. Yes, this should allow you to change the interrupt mapping. > This is the only way to do this correctly. Well, almost. The problem is that if the PCI interrupts ARE shared, then redirecting the IRQ for one board WILL also change the redirection for the other devices using the same interrupt pin -- they are connected at the motherboard/hardware level. So this does not allow you to make a device not share an interrupt. Intel's PCI chipsets only support redirecting 4 PCI interrupts to an "ISA" vector number. So if you want more than 4 interrupts for all your PCI devices, you are out of luck. Motherboard manufacturers just connect multiple interrupt sources together and feed them into the same interrupt pin. Those 4 interrupt pins are programmable to a variety of values. If you have 4 interrupts to dedicate to PCI devices, the BIOS will use 4 different interrupts (PCI IDE are a special case, btw). So the only way you would get shared PCI interrupts are a) you don't have enough interrupts for PCI devices, and the BIOS programmed multiple PCI IRQ redirection pins to the same value, but you can't do anything about it becaue you don't have a free interrupt, or b) the motherboard manufacturer physically connected the interrupt pins together, so changing the interrupt number will change it for both (all) devices using the same redirection pin, and it will still be a shared interrupt. To be PCI-compliant, the device MUST support the use of shared interrupts. It is amost never the case that the hardware is broken, but many drivers (especially for Windows) are. If the hardware is broken, complain bitterly to the vendor. If the driver is broken, complain bitterly to the driver writer. Kevin Van Maren To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812211622.JAA01401>