linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Mark Lord <liml@rtr.ca>
To: Mathieu GELI <mathieu.geli@gmail.com>
Cc: Robert Hancock <hancockrwd@gmail.com>, linux-ide@vger.kernel.org
Subject: Re: CF to SATA bridge support
Date: Sat, 29 Aug 2009 12:10:22 -0400	[thread overview]
Message-ID: <4A9952EE.8080701@rtr.ca> (raw)
In-Reply-To: <4A995070.4020108@rtr.ca>

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.

      reply	other threads:[~2009-08-29 16:10 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-08-07 17:59 CF to SATA bridge support Mathieu GELI
2009-08-08  3:21 ` Robert Hancock
2009-08-08 18:35   ` Mathieu GELI
2009-08-09 16:23     ` Mathieu GELI
2009-08-10 13:33       ` Mark Lord
2009-08-29 13:48         ` Mark Lord
2009-08-29 14:22           ` Mark Lord
2009-08-29 15:47             ` Mark Lord
2009-08-29 15:59           ` Mark Lord
2009-08-29 16:10             ` Mark Lord [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4A9952EE.8080701@rtr.ca \
    --to=liml@rtr.ca \
    --cc=hancockrwd@gmail.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=mathieu.geli@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).