Date: Sun, 30 Apr 1995 18:49:30 +0200 From: se@MI.Uni-Koeln.DE (Stefan Esser) To: Bill Fenner <fenner@parc.xerox.com> Cc: current@FreeBSD.org Subject: Re: NCR assertion fails? Message-ID: <199504301649.AA20198@FileServ1.MI.Uni-Koeln.DE> In-Reply-To: Bill Fenner <fenner@parc.xerox.com> "Re: NCR assertion fails?" (Apr 30, 2:54)
next in thread | previous in thread | raw e-mail | index | archive | help
On Apr 30, 2:54, Bill Fenner wrote: } Subject: Re: NCR assertion fails? } It turns out that my bogus interrupt scheme was causing problems, perhaps } because the NCR driver didn't like shared interrupts, perhaps because I } had jumpered the NCR card to interrupt B so that it wouldn't lock up on } probe. I finally got my Plato motherboard to assign two different } interrupts to the two cards, and now I am getting 3MB/sec reads =) Ok. Should have read all replies first. Your problem wasn't caused by sharing interrupts, but by using the PCI IntB line. PCI is designed to work with multi function cards (e.g. SCSI + Ethernet on one card, even implemented on the same chip). And only if there is more than one interrupt source do you use not PCI IntA, but also IntB ... The NCR is a single function chip and always should use IntA only. This is even hard coded into some PCI configuration space register on the chip: ncr0 <ncr 53c810 scsi> rev 1 int a irq 9 on pci0:14 ^^^^^ reg20: virtual=0xf2aa2800 physical=0xffbff800 size=0x100 using shared irq 9. By making it drive the PCI IntB line, without having any IRQ line actually connected, the NCR was unable to issue any interrupts. This lead to timeouts and command failure in the initialisation phase, were the CPU still is involved in the transfers. As soon as the system was going multi user, the NCR did all the processing on its own, and thus there were no more timeouts. But since it took the CPU upto 1 second (the command timeout value) to check for command completion by polling the device, you got that 1 transfer per second performance (50KB/s). Anyway: I guess some comments on PCI setup rules ought to go into the FAQ, I guess: 1) Bus master slots required for most devices (which) 2) Only PCI IntA used by currently supported PCI cards 3) Shared interrupts supported, but shouldn't be used if there are plenty of free IRQs to assigne to PCI 4) PCI interrupts are assigned to slots on all currently sold motherboards. Level interrupts are used by all PCI devices supported in FreeBSD. I'll try to find time to write something about this before 2.1 comes out ... But if anybody wants to beat me on that :) STefan -- Stefan Esser Internet: <se@ZPR.Uni-Koeln.DE> Zentrum fuer Paralleles Rechnen Tel: +49 221 4706017 Universitaet zu Koeln FAX: +49 221 4705160 Weyertal 80 50931 Koeln
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199504301649.AA20198>