Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 03 Aug 2004 16:41:47 +0300
From:      Ville-Pertti Keinonen <will+freebsd-current@will.iki.fi>
To:        Daniel Eriksson <daniel_k_eriksson@telia.com>
Cc:        freebsd-current@freebsd.org
Subject:   Re: ATA driver races with interrupts
Message-ID:  <410F961B.1080104@will.iki.fi>
In-Reply-To: <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAA0VcX9IoJqUaXPS8MjT1PdsKAAAAQAAAAw/30wgQ6akmrPyldIrxIFQEAAAAA@telia.com>
References:  <!~!UENERkVCMDkAAQACAAAAAAAAAAAAAAAAABgAAAAAAAAA0VcX9IoJqUaXPS8MjT1PdsKAAAAQAAAAw/30wgQ6akmrPyldIrxIFQEAAAAA@telia.com>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help
This is a multi-part message in MIME format.
--------------090100050901050504070405
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Daniel Eriksson wrote:

>Just tested this, and everything seems to work perfectly fine with only one
>disc attached. Stresstest works, SMART works, ...
>
>I've only tested it on one of the channels so far though, but I'm confident
>it will work on the other channel as well since I've used that channel in
>single-drive-configuration in the past without problems.
>  
>
The attached patch should enable serialization for the controller, which 
is the only completely reliable fix (without chipset documentation) 
according to Søren.  Obviously it reduces performance since it doesn't 
allow both channels to operate simultaneously.


--------------090100050901050504070405
Content-Type: text/plain;
 name="sataser.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
 filename="sataser.diff"

Index: ata-chipset.c
===================================================================
RCS file: /cvs/freebsd/src/sys/dev/ata/ata-chipset.c,v
retrieving revision 1.77
diff -u -r1.77 ata-chipset.c
--- ata-chipset.c	30 Jul 2004 13:33:09 -0000	1.77
+++ ata-chipset.c	3 Aug 2004 13:32:04 -0000
@@ -2602,6 +2602,7 @@
     if (ctlr->chip->max_dma >= ATA_SA150) {
 	pci_write_config(dev, PCIR_COMMAND,
 			 pci_read_config(dev, PCIR_COMMAND, 2) & ~0x0400, 2);
+	ctlr->locking = ata_serialize;
 	ctlr->setmode = ata_sata_setmode;
 	return 0;
     }

--------------090100050901050504070405--



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?410F961B.1080104>