The ancient 16MB Lexar PIO-only CF-Card did not fare so well.
It crapped out similar to how Mathieu reported,
with lots of HSM errors on WRITEs. READs were fine, though.
HOTPLUGGING NOW:
[ 461.060770] ata11: exception Emask 0x10 SAct 0x0 SErr 0x4010000 action 0xe frozen
[ 461.060774] ata11: edma_err_cause=00000010 pp_flags=00000000, dev connect
[ 461.060778] ata11: SError: { PHYRdyChg DevExch }
[ 461.060785] ata11: hard resetting link
[ 461.816019] ata11: SATA link down (SStatus 0 SControl 300)
[ 461.816026] ata11: EH complete
[ 464.644462] ata12: exception Emask 0x10 SAct 0x0 SErr 0x4010000 action 0xe frozen
[ 464.644465] ata12: edma_err_cause=00000010 pp_flags=00000000, dev connect
[ 464.644469] ata12: SError: { PHYRdyChg DevExch }
[ 464.644475] ata12: hard resetting link
[ 465.524031] ata12: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 465.552206] ata12.00: CFA: LEXAR ATA_FLASH, V1.00, max PIO3
[ 465.552210] ata12.00: 32128 sectors, multi 0: LBA
[ 465.552225] ata12.00: applying bridge limits
[ 465.564244] ata12.00: configured for PIO3 (device error ignored)
[ 465.588253] ata12.00: configured for PIO3 (device error ignored)
[ 465.588258] ata12: EH complete
[ 465.588360] scsi 11:0:0:0: Direct-Access ATA LEXAR ATA_FLASH V1.0 PQ: 0 ANSI: 5
[ 465.588501] sd 11:0:0:0: [sdb] 32128 512-byte hardware sectors: (16.4 MB/15.6 MiB)
[ 465.588521] sd 11:0:0:0: [sdb] Write Protect is off
[ 465.588524] sd 11:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 465.588555] sd 11:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 465.588661] sd 11:0:0:0: [sdb] 32128 512-byte hardware sectors: (16.4 MB/15.6 MiB)
[ 465.588680] sd 11:0:0:0: [sdb] Write Protect is off
[ 465.588683] sd 11:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[ 465.588713] sd 11:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
[ 465.588717] sdb:<4>ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.617448] sdb1
[ 465.617586] sd 11:0:0:0: [sdb] Attached SCSI removable disk
[ 465.617665] sd 11:0:0:0: Attached scsi generic sg2 type 0
UBUNTU NOW TRIES TO AUTOMOUNT THE PARTITIONS:
[ 465.632756] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.646726] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.654445] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.662477] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.670420] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.688374] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.694437] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.702436] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
[ 465.710438] ata12: sata_mv: attempting PIO w/multiple DRQ: this may fail due to h/w errata
OKAY, MOUNTED. NOW WE TRY TO WRITE/SYNC SOME DATA:
[ 511.784629] ata12.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ 511.784634] ata12.00: edma_err_cause=00001000 pp_flags=00000000
[ 511.784640] ata12.00: cmd 30/00:01:41:00:00/00:00:00:00:00/e0 tag 0 pio 512 out
[ 511.784642] res 58/00:01:41:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation)
[ 511.784645] ata12.00: status: { DRDY DRQ }
[ 511.784651] ata12: hard resetting link
[ 512.260030] ata12: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 512.300230] ata12.00: configured for PIO3 (device error ignored)
[ 512.324235] ata12.00: configured for PIO3 (device error ignored)
[ 512.324242] ata12: EH complete
[ 512.332131] ata12.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ 512.332134] ata12.00: edma_err_cause=00001000 pp_flags=00000000
[ 512.332140] ata12.00: cmd 30/00:01:41:00:00/00:00:00:00:00/e0 tag 0 pio 512 out
[ 512.332141] res 58/00:01:41:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation)
[ 512.332145] ata12.00: status: { DRDY DRQ }
[ 512.332149] ata12: hard resetting link
[ 512.808029] ata12: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 512.848229] ata12.00: configured for PIO3 (device error ignored)
[ 512.872229] ata12.00: configured for PIO3 (device error ignored)
[ 512.872236] ata12: EH complete
[ 512.880136] ata12.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ 512.880140] ata12.00: edma_err_cause=00001000 pp_flags=00000000
[ 512.880145] ata12.00: cmd 30/00:01:41:00:00/00:00:00:00:00/e0 tag 0 pio 512 out
[ 512.880147] res 58/00:01:41:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation)
[ 512.880150] ata12.00: status: { DRDY DRQ }
[ 512.880154] ata12: hard resetting link
[ 513.356029] ata12: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
[ 513.396229] ata12.00: configured for PIO3 (device error ignored)
[ 513.420229] ata12.00: configured for PIO3 (device error ignored)
[ 513.420237] ata12: EH complete
[ 513.428128] ata12: limiting SATA link speed to 1.5 Gbps
[ 513.428132] ata12.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ 513.428135] ata12.00: edma_err_cause=00001000 pp_flags=00000000
[ 513.428140] ata12.00: cmd 30/00:01:41:00:00/00:00:00:00:00/e0 tag 0 pio 512 out
[ 513.428142] res 58/00:01:41:00:00/00:00:00:00:00/e0 Emask 0x2 (HSM violation)
On the surface of things, I'd say that, yes, this is the multiple-DRQ
errata biting us. The Marvell chips don't synchronize ATA status
register updates correctly with DRQ and interrupts. So a special
polling sequence is supposed to be required to make it all play nicely.
And the current sata_mv doesn't do that (yet).
So I suppose we'll have to clone ata_pio_task() and ata_sff_hsm_move()
and hack them for the funky Marvell errata to get this to work correctly.
That's a LOT of code, which is why I was/am hesitant to do it before now.
Anyone else want to have a go at it?
I can describe the exact protocol sequence required
for avoiding the errata issues.
--
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