Re: sata_sil data corruption

Doug McLain
2005-02-21T14:02:04Z

The sata_sil driver is without a doubt, totally hosed. I, along with
some others I've found on this list and google, are also getting kernel
oops and hard freezes while loading this driver, with confirmed good
hardware.

PALFFY Daniel wrote:
> On Sat, 19 Feb 2005, Jeff Garzik wrote:
>
>
>>PALFFY Daniel wrote:
>>
>>>Hi,
>>>
>>>I'm trying to set up a machine with a si3112a controller (lspci: 1095:3112
>>>(rev 01) Subsystem: 1095:6112, cheap PCI card) and a ST3200822AS Rev:
>>>3.01 disk and I see continuous silent data corruption while reading the
>>>disk. Writing seems to be ok. I have 2.6.10-ac1 built with conservative
>>>options (UP, no PREEMPT, 8k stack, no regparm). After seeing problems I
>>>tried to blacklist my drive to do MOD15, but it didn't help.
>>>
>>>Finally I did
>>>
>>> unsigned long long i = 0;
>>> while (write(1, &i, sizeof(i)) != -1) i++;
>>>
>>>to the only primary partition while running sata_sil. Reading it back with
>>>
>>> unsigned long long i=0, j;
>>> while (read(0, &j, sizeof(i)) == sizeof(i)) {
>>> if (j != i) fprintf(stderr, "diff at %llx: read: %llx\n", i, j);
>>> i++;
>>> }
>>>
>>>gives similar results, but always different:
>>>diff at 5efff: read: 5ef24
>>>diff at 7ffff: read: 7ff08
>>>diff at 8ffff: read: 8ff51
>>>diff at 97fff: read: 97f00
>>>diff at affff: read: aff00
>>>diff at bffff: read: bffac
>>>diff at dffff: read: dff00
>>>diff at efffe: read: eff00
>>>diff at effff: read: eff00
>>>diff at fffbf: read: fffff
>>>and so on.
>>>
>>>Reading back the same data with the ide siimage driver worked for at least
>>>500MB without corrupted data, but dma doesn't work with that driver, this
>>>is logged on about the first read attempt:
>>>
>>>hde: dma_intr: bad DMA status (dma_stat=76)
>>>hde: dma_intr: status=0x50 { DriveReady SeekComplete }
>>>
>>>ide: failed opcode was: unknown
>>>hde: DMA disabled
>>>ide2: reset phy, status=0x00000113, siimage_reset
>>>ide2: reset: success
>>>
>>>The machine is an old Compaq Prosignia 200, with a p2 300 and
>>>0000:00:00.0 Host bridge: Intel Corp. 440FX - 82441FX PMC [Natoma] (rev 02)
>>>chipset. Relevant parts from dmesg:
>>>
>>>sata_sil:
>>>
>>>libata version 1.10 loaded.
>>>sata_sil version 0.8
>>>ata1: SATA max UDMA/100 cmd 0xC886A080 ctl 0xC886A08A bmdma 0xC886A000 irq 10
>>>ata2: SATA max UDMA/100 cmd 0xC886A0C0 ctl 0xC886A0CA bmdma 0xC886A008 irq 10
>>>ata1: dev 0 cfg 49:2f00 82:346b 83:7d01 84:4003 85:3469 86:3c01 87:4003 88:207f
>>>ata1: dev 0 ATA, max UDMA/133, 390721968 sectors: lba48
>>>ata1(0): applying Seagate errata fix
>>>ata1: dev 0 configured for UDMA/100
>>>scsi1 : sata_sil
>>>ata2: no device found (phy stat 00000000)
>>>scsi2 : sata_sil
>>> Vendor: ATA Model: ST3200822AS Rev: 3.01
>>> Type: Direct-Access ANSI SCSI revision: 05
>>>SCSI device sdb: 390721968 512-byte hdwr sectors (200050 MB)
>>>SCSI device sdb: drive cache: write back
>>>
>>>siimage:
>>>
>>>SiI3112 Serial ATA: IDE controller at PCI slot 0000:00:0a.0
>>>SiI3112 Serial ATA: chipset revision 1
>>>SiI3112 Serial ATA: 100% native mode on irq 10
>>> ide2: MMIO-DMA , BIOS settings: hde:DMA, hdf:DMA
>>> ide3: MMIO-DMA , BIOS settings: hdg:pio, hdh:pio
>>>Probing IDE interface ide2...
>>>hde: ST3200822AS, ATA DISK drive
>>>hde: applying pessimistic Seagate errata fix
>>>ide2 at 0xc886a080-0xc886a087,0xc886a08a on irq 10
>>>hde: max request size: 7KiB
>>>hde: 390721968 sectors (200049 MB) w/8192KiB Cache, CHS=24321/255/63
>>>hde: cache flushes supported
>>> hde:<3>hde: dma_intr: bad DMA status (dma_stat=76)
>>>hde: dma_intr: status=0x50 { DriveReady SeekComplete }
>>>
>>>ide: failed opcode was: unknown
>>> hde1
>>>Probing IDE interface ide3...
>>>hdg: no response (status = 0xfe)
>>>hde: dma_intr: bad DMA status (dma_stat=76)
>>>hde: dma_intr: status=0x50 { DriveReady SeekComplete }
>>>
>>>ide: failed opcode was: unknown
>
>
> Hi,
>
>
>>Don't use --two-- drivers for the same hardware.
>>
>>Can you re-test with siimage disabled?
>
>
> Of course it was disabled while testing sata_sil and vice-versa. I've just
> tried that driver to test if the hardware was faulty. Since then, I've
> tested the same disk/controller combo in a BX based PentiumII system, and
> it worked perfectly fine, but in the Compaq machine it still failed with
> 2.6.10-ac10. So I think it might be some low-level hardware
> incompatibility...
>
> --
> Daniel
> ...and Linux for all.
>
> -
> To unsubscribe from this list: send the line "unsubscribe linux-ide" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>

--