From owner-freebsd-questions Tue Mar 12 07:38:01 1996 Return-Path: owner-questions Received: (from root@localhost) by freefall.freebsd.org (8.7.3/8.7.3) id HAA22877 for questions-outgoing; Tue, 12 Mar 1996 07:38:01 -0800 (PST) Received: from localhost.cdrom.com (localhost.cdrom.com [127.0.0.1]) by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id HAA22856 Tue, 12 Mar 1996 07:37:54 -0800 (PST) Message-Id: <199603121537.HAA22856@freefall.freebsd.org> X-Authentication-Warning: freefall.freebsd.org: Host localhost.cdrom.com [127.0.0.1] didn't use HELO protocol To: Jaye Mathisen cc: "Rodney W. Grimes" , se@ZPR.Uni-Koeln.DE, questions@freebsd.org Subject: Re: NCR disk controller, hp disk In-reply-to: Your message of "Tue, 12 Mar 1996 00:14:43 PST." Date: Tue, 12 Mar 1996 07:37:53 -0800 From: "Justin T. Gibbs" Sender: owner-questions@freebsd.org X-Loop: FreeBSD.org Precedence: bulk > >Hmmm, I'm running with QUEUE_FULL_SUPPORTED against my RAID box and it >works OK. I did see a queue full condition one time, but upgrading to >latest -current (as of back then) fixed it. I thought that your RAID box wasn't working with the aic7xxx driver... >Oh shoot. I just built a kernel tonight with -current, and now it's >barfing when trying to sense the drive geometry. A kernel from a few >days ago works fine. I get an invalid SCB error or somesuch... Yeah, I know. I sent Satoshi a patch to try and see what it was I broke. It seems to be solely a problem with aic7880 based cards. I haven't heard back from him yet. Perhaps you can try the following patch and see what's printed out? -- Justin T. Gibbs =========================================== FreeBSD: Turning PCs into workstations =========================================== Index: i386/scsi/aic7xxx.c =================================================================== RCS file: /usr/cvs/src/sys/i386/scsi/aic7xxx.c,v retrieving revision 1.57 diff -c -r1.57 aic7xxx.c *** aic7xxx.c 1996/03/11 02:48:41 1.57 --- aic7xxx.c 1996/03/11 17:19:02 *************** *** 1162,1181 **** u_char channel; PAUSE_SEQUENCER(ahc); channel = inb(SBLKCTL + iobase); ! if( !(inb(SCSISEQ + iobase ) & SCSIRSTO) && (ahc->flags & AHC_TWIN) ) { /* Its on the other bus */ channel ^= SELBUSB; } ahc_reset_channel(ahc, ! channel & SELBUSB ? 'B' : 'A', SCB_LIST_NULL, XS_BUSY, /* Initiate Reset */FALSE); - ahc_run_done_queue(ahc); } ! if (status & SELTO) { u_char waiting; u_char flags; xs->error = XS_TIMEOUT; --- 1162,1183 ---- u_char channel; PAUSE_SEQUENCER(ahc); channel = inb(SBLKCTL + iobase); ! if(!(inb(SCSISEQ + iobase ) & SCSIRSTO) && (ahc->flags & AHC_TWIN) ) { /* Its on the other bus */ channel ^= SELBUSB; } + channel = channel & SELBUSB ? 'B' : 'A'; + printf("ahc%d: Someone reset channel %c\n", + channel); ahc_reset_channel(ahc, ! channel, SCB_LIST_NULL, XS_BUSY, /* Initiate Reset */FALSE); } ! else if (status & SELTO) { u_char waiting; u_char flags; xs->error = XS_TIMEOUT; *************** *** 2359,2365 **** { ahc_reset_current_bus(iobase); } ! outb(CLRSINT1 + iobase, CLRSCSIRSTI); outb(SBLKCTL + iobase, sblkctl); UNPAUSE_SEQUENCER(ahc); } --- 2361,2368 ---- { ahc_reset_current_bus(iobase); } ! outb(CLRSINT1 + iobase, CLRSCSIRSTI|CLRSELTIMEO); ! outb(CLRINT + iobase, CLRSCSIINT); outb(SBLKCTL + iobase, sblkctl); UNPAUSE_SEQUENCER(ahc); } *************** *** 2369,2375 **** { ahc_reset_current_bus(iobase); } ! outb(CLRSINT1 + iobase, CLRSCSIRSTI); RESTART_SEQUENCER(ahc); } ahc_run_done_queue(ahc); --- 2372,2379 ---- { ahc_reset_current_bus(iobase); } ! outb(CLRSINT1 + iobase, CLRSCSIRSTI|CLRSELTIMEO); ! outb(CLRINT + iobase, CLRSCSIINT); RESTART_SEQUENCER(ahc); } ahc_run_done_queue(ahc);