linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCHSET] libata: reimplement reset sequencing
@ 2007-02-02  7:50 Tejun Heo
  2007-02-02  7:50 ` [PATCH 2/4] libata: improve 0xff status handling Tejun Heo
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Tejun Heo @ 2007-02-02  7:50 UTC (permalink / raw)
  To: jeff, alan, ric, edmudama, linux-ide, htejun

Hello,

Currently reset is driven by ata_eh_reset().  Reset can be tried upto
ATA_EH_RESET_TRIES times and each reset try can take a very long time
- several minutes under certain circumstances.

For boot and loading detections, the initial reset succeeds most of
the time.  However, after errors and hotplugging events, controllers
and devices show widely different behaviors.  For hotplugs, we rely
heavily on the wait performed in ->prereset().  For other error
conditions, we just take long time if things don't succeed at the
first try.

This patchset reimplements reset sequencing such that resets are
retried with more reasonable timing while not upsetting devices too
much with frequent resets.  e.g. spinup wait is completely replaced by
carefully spaced reset tries.

ATA controllers and devices vary greatly in how they behave when
things are not normal.  It's just not scaleable to try to fine-tune
each LLD's reset methods such that the initial try succeeds most of
the time (because failure takes too long).  This patchset allows LLDs
with good enough reset methods which may fail occasionally to work
well enough.

I've tested the change on about a dozen controllers with more than a
dozen ATA/ATAPI devices.  The result was very positive.  It was not
optimal on all of the cases but all were definitely acceptable (maybe
5s to 15s longer than optimal).

Combined with posted timeout adjustment and speed down improvement,
this should make libata EH behave much better.

This patchset is against

upstream (eb0e63cca36a3389f0ccab4584f6d479b983fad5)
+ [1] pata_platform-fix-devres-conversion
+ [2] libata-convert-to-iomap
+ [3] put-some-intelligence-into-speeddown patchset
+ [4] add-150ms-between-completion-of-hardreset-and-status-checking
+ [5] sata_inic162x-fix-a-few-glitches-in-hardreset

Thanks.

--
tejun

[1] http://article.gmane.org/gmane.linux.kernel/488509
[2] sorry, no archive, message was too large
[3] http://thread.gmane.org/gmane.linux.ide/15596
[4] http://article.gmane.org/gmane.linux.ide/15582
[5] http://article.gmane.org/gmane.linux.ide/15583



^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2007-03-07 11:45 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-02  7:50 [PATCHSET] libata: reimplement reset sequencing Tejun Heo
2007-02-02  7:50 ` [PATCH 2/4] libata: improve 0xff status handling Tejun Heo
2007-02-02  7:50 ` [PATCH 1/4] libata: add deadline support to prereset and reset methods Tejun Heo
2007-03-07 11:45   ` Jeff Garzik
2007-02-02  7:50 ` [PATCH 4/4] libata: reimplement reset sequencing Tejun Heo
2007-02-02  7:50 ` [PATCH 3/4] libata: improve ata_std_prereset() Tejun Heo

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).