Skip site navigation (1)Skip section navigation (2)
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>