On 25 Jul 2002, at 1:30pm, Scott Garman wrote:
> I've been having a hard time trying to force my sound and network card
> to use different IRQs.

  Are they PCI cards?  If so, it doesn't work that way.

  PCI slots each have four interrupt lines assigned to them -- INT A, B, C,
and D.  Those interrupt lines are connected to a component called an APIC
(Advanced Programmable Interrupt Controller), which routes the PCI
interrupts to the interrupt pins on the microprocessor.  The routing between
slots, CPUs, and APICs is entirely dependent on the particular motherboard
you happen to have, and the capabilities of the APIC.

  In theory, none of this should matter, since PCI cards are *supposed* to
be able to share interrupts.  And, in general, they do so just fine.
However, one does encounter non-compliant cards from time to time.  Rather
more often, one encounters software (drivers, kernel-level resource
allocators, etc.) which cannot handle IRQ sharing.  Working around such
problems can range from difficult to impossible, depending on details.

> On bootup, my "ESCD" assigns most of my devices to either IRQ 10 or 11 ...

  ESCD = Extended System Configuration Data.  The ESCD is setup by the BIOS,
and includes things like IRQ mapping tables.  Problems with the ESCD being
incorrect are sometimes encountered, especially on early PCI systems with
buggy BIOSes.

> so my /proc/interrupts looks like:

  Keep in mind that /proc/interrupts just shows what IRQs the device driver
is *trying* to use.  If the device driver is using the wrong IRQ, the wrong
IRQ will be shown there as well.

  The "lspci" command can be useful.

> I've also tried assigning the IRQs via the BIOS, but that seems to do
> nothing either - the ESCD still piles almost everything on 10 and 11.

  The ESCD simply describes the system.  The the BIOS, the hardware, and/or
the operating system determines which IRQs get routed where.

> When I disable one or both of those IRQs in the BIOS, the devices won't
> be assigned an IRQ at all, and won't work.

   Most APICs are not completely flexible; they can route a particular PCI
interrupt line to maybe two or three different CPU interrupt lines.

> I've also tried swapping cards around on physical PCI slots, which will
> sometimes change IRQ assignments, but as I add all of my cards (SCSI,
> sound, network, etc), I still end up getting IRQ pileups.

  That is likely the way it is going to be.  If there is a PCI-to-PCI bridge
in your system (and there often will be), all the slots "past" the bridge
(moving "away" from the CPU) will appear on a single CPU IRQ line.  I have
seen systems where *all* PCI slots were wired to a *single* IRQ line.

> I would really like to learn more about how IRQ and IO assignment is done
> by BIOS and Linux, if anyone could point me to some good documentation.

  This is black magic.

-- 
Ben Scott <[EMAIL PROTECTED]>
| The opinions expressed in this message are those of the author and do not |
| necessarily represent the views or policy of any other person, entity or  |
| organization.  All information is provided without warranty of any kind.  |


*****************************************************************
To unsubscribe from this list, send mail to [EMAIL PROTECTED]
with the text 'unsubscribe gnhlug' in the message body.
*****************************************************************

Reply via email to