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>
