Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 10 Feb 1996 01:02:54 +0100
From:      se@zpr.uni-koeln.de (Stefan Esser)
To:        Terry Lambert <terry@lambert.org>
Cc:        hackers@freebsd.org
Subject:   Re: PCI problem
Message-ID:  <199602100002.AA20999@Sysiphos>
In-Reply-To: Terry Lambert <terry@lambert.org> "Re: PCI problem" (Feb  9, 12:54)

next in thread | previous in thread | raw e-mail | index | archive | help
On Feb 9, 12:54, Terry Lambert wrote:
} Subject: Re: PCI problem
} > As you can see, the two network cards share the same int line, even
} > though the kernel believes they are at int 11 and 10 respectively.
} > 
} > Any ideas on what can be going on ? The motherboard is an Intel Zappa.
} 
} Yeah.  The kernel is wrong.  The PCI bus is right.

True.

} The cards have the same interrupt assigned by the PCI BIOS.  It is the
} responsibility of the OS to understand PCI interrrupt multiplexing and
} Deal With It(tm).

Yes. And every good OS does :)

} Very few OS's currently do this because almost all motherboard
} manufacturers except the Intel OEM products division consider it
} a mistake to not have an interrupt per PCI slot.

No, that's wrong (sorry ...)

If you have two cards in neighbour slots and one of them
is either a multi-function PCI device or contains a PCI 
to PCI bridge, then just about every PCI motherboard will 
have to assign the same IRQ multiple times. This is caused
by having IntA of one slot be connected to IntB of one 
neighbour.

} You will need to specifically override one of the cards idea of the
} "correct" interrupt (some PCI card hardware supports jumpering of ISA
} interrupts), you will need to override the single interrupt assignment
} on the motherboard (not possible on some Intel boards), or you will
} need to modify the interrupt handling mechanism (if it hasn't already
} been done) to support demuxxing the cards.  In the last case, it is
} correct for the cards to have the same interrupt.

FreeBSD got code for shared PCI interrupts for one year
now. And that code is known to work just fine ...

The problem is that the Lance PCI cards aren't fully
supported (their PCI features, that is). And they call 
the ISA register_intr() function, which doesn't know 
anything about shared interrupts ...

As long as their is no /sys/pci/lnc.c with a wrapper 
that just reads teh configuration registers, registers
a PCI interrupt handler and then calls the attach code
in the ISA Lance driver, the card will be limited by
ISA constraints ...

Regards, STefan
-- 
 Stefan Esser, Zentrum fuer Paralleles Rechnen		Tel:	+49 221 4706021
 Universitaet zu Koeln, Weyertal 80, 50931 Koeln	FAX:	+49 221 4705160
 ==============================================================================
 http://www.zpr.uni-koeln.de/~se			  <se@ZPR.Uni-Koeln.DE>



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199602100002.AA20999>