Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Mar 2001 13:51:44 -0700
From:      "Justin T. Gibbs" <gibbs@scsiguy.com>
To:        Alexander Leidinger <Alexander@leidinger.net>
Cc:        current@freebsd.org
Subject:   Re: aic7880 prints some timeouts after recent commit (yesterday) 
Message-ID:  <200103122051.f2CKpis38370@aslan.scsiguy.com>
In-Reply-To: Your message of "Mon, 12 Mar 2001 15:44:36 %2B0100." <200103121444.f2CEicK04384@Magelan.Leidinger.net> 

next in thread | previous in thread | raw e-mail | index | archive | help
>Hi,
>
>dmesg and the output of "ident /sys/dev/aic7xxx/*" and pciconf is
>attached (BTW: the -v options to pciconf isn't documented in the
>synopsis section of the man page).
>
>Do you need more information, e.g. the output of a verbose boot?
>
>Bye,
>Alexander.

I wish I had a system that exhibited this problem.  Unfortunately
I don't, so it has been difficult to get the workaround for this
particular hardware bug correct.

Can you see if this patch works for you?

--
Justin


Index: aic7xxx.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/aic7xxx/aic7xxx.c,v
retrieving revision 1.41.2.17
diff -c -r1.41.2.17 aic7xxx.c
*** aic7xxx.c	2001/03/12 14:57:40	1.41.2.17
--- aic7xxx.c	2001/03/12 20:30:40
***************
*** 2006,2018 ****
  ahc_lookup_phase_entry(int phase)
  {
  	struct ahc_phase_table_entry *entry;
! 	int i;
  
  	/*
  	 * num_phases doesn't include the default entry which
  	 * will be returned if the phase doesn't match.
  	 */
! 	for (i = 0, entry = ahc_phase_table; i < num_phases; i++) {
  		if (phase == entry->phase)
  			break;
  	}
--- 2006,2019 ----
  ahc_lookup_phase_entry(int phase)
  {
  	struct ahc_phase_table_entry *entry;
! 	struct ahc_phase_table_entry *last_entry;
  
  	/*
  	 * num_phases doesn't include the default entry which
  	 * will be returned if the phase doesn't match.
  	 */
! 	last_entry = &ahc_phase_table[num_phases];
! 	for (entry = ahc_phase_table; entry <= last_entry; entry++) {
  		if (phase == entry->phase)
  			break;
  	}
Index: aic7xxx.seq
===================================================================
RCS file: /usr/cvs/src/sys/dev/aic7xxx/aic7xxx.seq,v
retrieving revision 1.94.2.11
diff -c -r1.94.2.11 aic7xxx.seq
*** aic7xxx.seq	2001/03/12 14:57:43	1.94.2.11
--- aic7xxx.seq	2001/03/12 20:47:35
***************
*** 2076,2082 ****
  			test	DFSTATUS, HDONE	jnz dma_scb_hang_dma_done;
  			test	DFSTATUS, HDONE	jnz dma_scb_hang_dma_done;
  			test	DFSTATUS, HDONE	jnz dma_scb_hang_dma_done;
- 			test	DFSTATUS, HDONE	jnz dma_scb_hang_dma_done;
  			/*
  			 * The PCI module no longer intends to perform
  			 * a PCI transaction and HDONE has not come true.
--- 2076,2081 ----
***************
*** 2102,2107 ****
--- 2101,2107 ----
  			 */
  			not	SINDEX;
  			add	A, 5, SINDEX;
+ 			cmp	A, 4	je dma_finish;
  			jmp	dma_scb_hang_fifo;
  dma_scb_hang_dma_done:
  			and	DFCNTRL, ~HDMAEN;

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200103122051.f2CKpis38370>