Mathieu GELI wrote:
Investigating the IORDY problem I did cross-build a custom 2.6.30.4 (from kernel.org) arm kernel and patched it accordingly to [1]. What results is : Compact Flash is now *detected* but when using it in real life (mkswap+swapon) things are getting bad. at boot time : [ 2.190000] SCSI subsystem initialized [ 2.410000] libata version 3.00 loaded. [ 2.460000] sata_mv sata_mv.0: version 1.28 [ 2.470000] sata_mv sata_mv.0: slots 32 ports 2 [ 2.480000] scsi0 : sata_mv [ 2.480000] scsi1 : sata_mv [ 2.480000] ata1: SATA max UDMA/133 irq 29 [ 2.490000] ata2: SATA max UDMA/133 irq 29 [ 3.000000] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.060000] ata1.00: CFA: LEXAR ATA FLASH, V2.02, max PIO4 [ 3.060000] ata1.00: 2003904 sectors, multi 0: LBA [ 3.070000] ata1.00: applying bridge limits [ 3.110000] ata1.00: configured for PIO4 [ 3.170000] ata1.00: configured for PIO4 [ 3.170000] ata1: EH complete [ 3.170000] scsi 0:0:0:0: Direct-Access ATA LEXAR ATA FLASH V2.0 PQ: 0 ANSI: 5 [ 3.690000] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 3.710000] ata2.00: ATA-7: SAMSUNG HD103UJ, 1AA01118, max UDMA7 [ 3.710000] ata2.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 31/32) [ 3.740000] ata2.00: configured for UDMA/133 [ 3.740000] scsi 1:0:0:0: Direct-Access ATA SAMSUNG HD103UJ 1AA0 PQ: 0 ANSI: 5 [ 5.750000] Driver 'sd' needs updating - please use bus_type methods [ 5.760000] sd 0:0:0:0: [sda] 2003904 512-byte hardware sectors: (1.02 GB/978 MiB) [ 5.760000] sd 0:0:0:0: [sda] Write Protect is off [ 5.770000] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 5.770000] sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 5.780000] sda:<4>ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 5.810000] sda1 [ 5.810000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 5.860000] sd 0:0:0:0: [sda] Attached SCSI removable disk [ 5.870000] sd 1:0:0:0: [sdb] 1953525168 512-byte hardware sectors: (1.00 TB/931 GiB) [ 5.880000] sd 1:0:0:0: [sdb] Write Protect is off [ 5.880000] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 5.880000] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 5.890000] sdb: sdb1 sdb2 [ 5.900000] sd 1:0:0:0: [sdb] Attached SCSI disk [ 6.870000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 6.880000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 6.900000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 6.920000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 6.940000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 6.960000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 6.980000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 7.010000] ata1: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata [ 7.890000] device-mapper: uevent: version 1.0.3 [...] and after swapon and running memory demanding application : [ 2149.180000] ata1: hard resetting link [ 2149.700000] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 310) [ 2149.780000] ata1.00: configured for PIO0 [ 2149.820000] ata1.00: configured for PIO0 [ 2149.820000] sd 0:0:0:0: [sda] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 2149.830000] sd 0:0:0:0: [sda] Sense Key : Aborted Command [current] [descriptor] [ 2149.830000] Descriptor sense data with sense descriptors (in hex): [ 2149.840000] 72 0b 47 00 00 00 00 0c 00 0a 80 00 00 00 00 00 [ 2149.850000] 00 00 80 f7 [ 2149.850000] sd 0:0:0:0: [sda] Add. Sense: Scsi parity error [ 2149.860000] end_request: I/O error, dev sda, sector 33015 [ 2149.860000] Write-error on swap-device (8:0:33023) [ 2149.870000] Write-error on swap-device (8:0:33031) [ 2149.870000] Write-error on swap-device (8:0:33039) [...] [ 2150.010000] Write-error on swap-device (8:0:33271) [ 2150.020000] ata1: EH complete [ 2150.060000] ata1.00: exception Emask 0x0 SAct 0x0 SErr 0x0 action 0x6 frozen [ 2150.070000] ata1.00: cmd 30/00:00:f7:81:00/00:00:00:00:00/e0 tag 0 pio 131072 out [ 2150.070000] res 58/00:00:f7:81:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation) [ 2150.080000] ata1.00: status: { DRDY DRQ } [ 2150.090000] ata1: hard resetting link While that's happening, userland is unresponsive. On a side note, just running hdparm on it doesn't trigger all those errors : $ sudo hdparm -tT /dev/sda /dev/sda: Timing cached reads: 160 MB in 2.02 seconds = 79.31 MB/sec Timing buffered disk reads: 14 MB in 3.39 seconds = 4.13 MB/sec
.. Those errors are on WRITEs, not READs, so no surprise that "hdparm -t" works. This could be an IORDY issue, or just due to how the the Marvell chips are buggy when doing PIO of more than a single sector. That was the only errata we didn't do a complete workaround for, because it's so ugly. :) I have a CF-to-SATA adapter due to arrive here from DealExtreme.com in the next week or so. Remind me, and I'll try it out on some of the Marvell cards here and see what happens. Cheers -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html