From owner-freebsd-hardware Fri Jun 27 02:42:16 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id CAA13832 for hardware-outgoing; Fri, 27 Jun 1997 02:42:16 -0700 (PDT) Received: from Sisyphos.MI.Uni-Koeln.DE (Sisyphos.MI.Uni-Koeln.DE [134.95.212.10]) by hub.freebsd.org (8.8.5/8.8.5) with SMTP id CAA13824 for ; Fri, 27 Jun 1997 02:42:12 -0700 (PDT) Received: from x14.mi.uni-koeln.de (annexr3-6.slip.Uni-Koeln.DE) by Sisyphos.MI.Uni-Koeln.DE with SMTP id AA11228 (5.67b/IDA-1.5 for ); Fri, 27 Jun 1997 11:41:54 +0200 Received: (from se@localhost) by x14.mi.uni-koeln.de (8.8.5/8.6.9) id LAA11044; Fri, 27 Jun 1997 11:40:22 +0200 (CEST) X-Face: " Date: Fri, 27 Jun 1997 11:40:22 +0200 From: Stefan Esser To: dg@root.com Cc: Jon Inouye , "Jordan K. Hubbard" , freebsd-hardware@FreeBSD.ORG Subject: Re: IRQ assignment for PII motherboards References: <199706270107.SAA10980@implode.root.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.74 In-Reply-To: <199706270107.SAA10980@implode.root.com>; from David Greenman on Thu, Jun 26, 1997 at 06:07:09PM -0700 Sender: owner-hardware@FreeBSD.ORG X-Loop: FreeBSD.org Precedence: bulk On Jun 26, David Greenman wrote: > I was able to get the Pro/100B, in a system with a pair of ahc3940's, to > get assigned to a non-shared interrupt by playing around with which slots > the cards were plugged into. It took about 3 tries to find the right order > (including leaving a slot empty), but I finally found an arrangement that > worked. My understanding is that the shared irq assignment isn't a function > of the BIOS, but rather a function of the slot the card is in and how it > is wired compared to the others. The motherboard I did this in wasn't made > by Intel, but the same principles should still apply. Interrupts should not be shared, unless at least one PCI card in the system either: 1) contains a PCI to PCI bridge, or 2) contains a multi-function PCI chip. The PCI spec requires all other cards to only use PCI IntA, if an interrupt line is required at all, and I know of no current 4 slot PCI motherboard, that can't assign a unique IRQ to the PCI IntA pin of each slot. As has been discussed before, the IntA pin of each slot is wired to IntB of its one neighbor, and IntD of the other one. (Or, perhaps easier to understand: IntB of the slot is wired to IntA of its one neighbor and IntC of its other neighbor.) This is repeated for all slots, and thus a safe way to force use of shared interrupts is to place any PCI card between two AH3940 cards :) Int A B C D Slot 1 o o o o- to IntA of slot 4 / / / / Slot 2 o o o o- to IntA of slot 1 / / / / Slot 3 o o o o- to IntA of slot 2 / / / / Slot 4 o o o o- to IntA of slot 3 / (from IntD of Slot 4) As also has been discussed before, there are no INTR_FAST support in the current PCI code (the flag has just not been passed down to the low level code, and nobody ever bothered to make PCI interrupt handlers conform to the very strict requirements of a fast interrupt handler ...). This means, that PCI interrupts may introduce higher latencies than highly optimized interrupt handlers for some ISA devices. This can be fixed (and the PCI interrupt registration code in -current allows to specify the INTR_FAST flag), but there will be some additional work required to make this work for the shared+fast case ... Regards, STefan