Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 9 Dec 2009 17:30:18 GMT
From:      dfilter@FreeBSD.ORG (dfilter service)
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: sparc64/121539: commit references a PR
Message-ID:  <200912091730.nB9HUIWt013428@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR sparc64/121539; it has been noted by GNATS.

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: sparc64/121539: commit references a PR
Date: Wed,  9 Dec 2009 17:23:18 +0000 (UTC)

 Author: mav
 Date: Wed Dec  9 17:23:08 2009
 New Revision: 200298
 URL: http://svn.freebsd.org/changeset/base/200298
 
 Log:
   MFC r200121:
   Do not ignore device interrupt if bus mastering is still active. It is
   normal in case of media read error and some ATAPI cases, when transfer size
   is unknown beforehand. PCI ATA BM specification tells that in case of such
   underrun driver should just manually stop DMA engine. DMA engine should
   same time guarantie that all bus mastering transfers completed at the moment
   when driver reads interrupt flag asserted.
   This change fixes interrupt storms and command timeouts in many cases.
   
   PR:             kern/103602, sparc64/121539, kern/133122, kern/139654
 
 Modified:
   stable/7/sys/dev/ata/ata-pci.c
 Directory Properties:
   stable/7/sys/   (props changed)
   stable/7/sys/contrib/pf/   (props changed)
 
 Modified: stable/7/sys/dev/ata/ata-pci.c
 ==============================================================================
 --- stable/7/sys/dev/ata/ata-pci.c	Wed Dec  9 17:20:10 2009	(r200297)
 +++ stable/7/sys/dev/ata/ata-pci.c	Wed Dec  9 17:23:08 2009	(r200298)
 @@ -445,8 +445,7 @@ ata_pci_status(device_t dev)
  		    (ch->dma->flags & ATA_DMA_ACTIVE))) {
  	int bmstat = ATA_IDX_INB(ch, ATA_BMSTAT_PORT) & ATA_BMSTAT_MASK;
  
 -	if ((bmstat & (ATA_BMSTAT_ACTIVE | ATA_BMSTAT_INTERRUPT)) !=
 -	    ATA_BMSTAT_INTERRUPT)
 +	if ((bmstat & ATA_BMSTAT_INTERRUPT) == 0)
  	    return 0;
  	ATA_IDX_OUTB(ch, ATA_BMSTAT_PORT, bmstat & ~ATA_BMSTAT_ERROR);
  	DELAY(1);
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 



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