now random kernel panics with aic7xxx driver 6.2.4 in kernel 2.4.12

Justin T. Gibbs gibbs at scsiguy.com
Thu Oct 25 10:31:56 EST 2001


>Hi Justin,
>
>Well, the idea of passing tag_info to the aic7xxx did help me boot but now
>I am getting random kernel panics.  So I upgraded to your latest 6.2.4
>with Ben's 2.4.12 and overnight when no activity was present, I got a
>panic.

I haven't forgotten about this problem... just been dragged off onto
another fire for a few days.

Can you apply this patch and reproduce the problem again?  Hopefully
this additional diagnostic information will help me understand the
problem.

--
Justin

diff -c -r aic7xxx/aic7xxx.c /usr/src/sys/dev/aic7xxx/aic7xxx.c
*** aic7xxx/aic7xxx.c	Wed Oct 24 17:19:14 2001
--- /usr/src/sys/dev/aic7xxx/aic7xxx.c	Wed Oct 24 18:28:48 2001
***************
*** 6302,6308 ****
  	printf("ACCUM = 0x%x, SINDEX = 0x%x, DINDEX = 0x%x, ARG_2 = 0x%x\n",
  	       ahc_inb(ahc, ACCUM), ahc_inb(ahc, SINDEX), ahc_inb(ahc, DINDEX),
  	       ahc_inb(ahc, ARG_2));
! 	printf("HCNT = 0x%x\n", ahc_inb(ahc, HCNT));
  	printf("SCSISEQ = 0x%x, SBLKCTL = 0x%x\n",
  	       ahc_inb(ahc, SCSISEQ), ahc_inb(ahc, SBLKCTL));
  	printf(" DFCNTRL = 0x%x, DFSTATUS = 0x%x\n",
--- 6302,6309 ----
  	printf("ACCUM = 0x%x, SINDEX = 0x%x, DINDEX = 0x%x, ARG_2 = 0x%x\n",
  	       ahc_inb(ahc, ACCUM), ahc_inb(ahc, SINDEX), ahc_inb(ahc, DINDEX),
  	       ahc_inb(ahc, ARG_2));
! 	printf("HCNT = 0x%x SCBPTR = 0x%x\n", ahc_inb(ahc, HCNT),
! 	       ahc_inb(ahc, SCBPTR));
  	printf("SCSISEQ = 0x%x, SBLKCTL = 0x%x\n",
  	       ahc_inb(ahc, SCSISEQ), ahc_inb(ahc, SBLKCTL));
  	printf(" DFCNTRL = 0x%x, DFSTATUS = 0x%x\n",
***************
*** 6375,6380 ****
--- 6376,6392 ----
  	}
  	printf("\n");

+ 	printf("Sequencer SCB Info: ");
+ 	for (i = 0; i < ahc->scb_data->maxhscbs; i++) {
+ 		ahc_outb(ahc, SCBPTR, i);
+ 		printf("%d(c 0x%x, s 0x%x, l %d, t 0x%x) ",
+ 		       i, ahc_inb(ahc, SCB_CONTROL),
+ 		       ahc_inb(ahc, SCB_SCSIID),
+ 		       ahc_inb(ahc, SCB_LUN),
+ 		       ahc_inb(ahc, SCB_TAG));
+ 	}
+ 	printf("\n");
+
  	printf("Pending list: ");
  	i = 0;
  	LIST_FOREACH(scb, &ahc->pending_scbs, pending_links) {
***************
*** 6382,6388 ****
  			break;
  		if (scb != LIST_FIRST(&ahc->pending_scbs))
  			printf(", ");
! 		printf("%d", scb->hscb->tag);
  		if ((ahc->flags & AHC_PAGESCBS) == 0) {
  			ahc_outb(ahc, SCBPTR, scb->hscb->tag);
  			printf("(0x%x, 0x%x)", ahc_inb(ahc, SCB_CONTROL),
--- 6394,6401 ----
  			break;
  		if (scb != LIST_FIRST(&ahc->pending_scbs))
  			printf(", ");
! 		printf("%d(c 0x%x, s 0x%x, l %d)", scb->hscb->tag,
! 		       scb->hscb->control, scb->hscb->scsiid, scb->hscb->lun);
  		if ((ahc->flags & AHC_PAGESCBS) == 0) {
  			ahc_outb(ahc, SCBPTR, scb->hscb->tag);
  			printf("(0x%x, 0x%x)", ahc_inb(ahc, SCB_CONTROL),

** Sent via the linuxppc-dev mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-dev mailing list