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: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?410F961B.1080104>