Date: Tue, 12 Mar 1996 07:37:53 -0800 From: "Justin T. Gibbs" <gibbs@freefall.freebsd.org> To: Jaye Mathisen <mrcpu@cdsnet.net> Cc: "Rodney W. Grimes" <rgrimes@gndrsh.aac.dev.com>, se@ZPR.Uni-Koeln.DE, questions@freebsd.org Subject: Re: NCR disk controller, hp disk Message-ID: <199603121537.HAA22856@freefall.freebsd.org> In-Reply-To: Your message of "Tue, 12 Mar 1996 00:14:43 PST." <Pine.BSF.3.91.960312001300.12818p-100000@schizo.cdsnet.net>
next in thread | previous in thread | raw e-mail | index | archive | help
> >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);
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603121537.HAA22856>