From: Jeff Garzik <jgarzik@pobox.com>
To: Tejun Heo <htejun@gmail.com>
Cc: albertcc@tw.ibm.com, liml@rtr.ca, linux-ide@vger.kernel.org
Subject: Re: [RFC/PATCHSET] libata: new reset mechanism
Date: Mon, 19 Dec 2005 00:20:52 -0500 [thread overview]
Message-ID: <43A64334.7010500@pobox.com> (raw)
In-Reply-To: <20051218133305.GA31571@htj.dyndns.org>
Tejun Heo wrote:
> Hello, all.
>
> Currently libata uses ->phy_reset to reset ports. However,
> ->phy_reset is tightly woven into probing process (directly
> manipulating device[]->class and disabling ports on failure) and thus
> awkward to use for error handling or other purposes.
>
> Another problem with the current scheme is that libata doesn't have
> much control over reset process, which isn't very nice for both
> initialization and error handling.
>
> This patchset implements new reset mechanism. The new mechanism can
> peacefully live side-by-side with ->phy_reset mechanism and low level
> drivers can be converted gradually. This patchset converts sata_sil,
> sata_sil24, ata_piix and ahci as a start.
>
> This patchset is composed of the following 14 patches.
>
> #01-03 : implement new reset mechanism and standard callbacks
> #04 : preparation for low level driver conversion
> #05 : convert sata_sil
> #06-07 : convert sata_sil24 and add hardreset
> #08-09 : convert ata_piix
> #10-14 : convert ahci and add softreset
Hard and soft reset should be implemented as
qc = ata_qc_new_init()
qc->tf.protocol = ATA_PROT_HARD_RESET;
... ata_qc_issue() ...
which automatically takes advantage of the ability to specify a behavior
using the qc_prep/qc_issue driver hooks. The ATA passthru CDB supports
this method of programming (hard and soft reset are specified
protocols), and this is very similar to how the SiI 3124 behaves. Other
FIS-based controllers will implement qc_issue/qc_prep such that they
send two Control FIS's. Taskfile-based controllers use the currently
implemented method.
On a separate note, E.D.D. support can probably be dropped. No driver
uses it AFAIK. It was only used during development and in the early
libata days.
Further, we should lean towards avoiding hard reset, and issuing SRST
most of the time, even for drivers currently doing hard reset (COMRESET).
Jeff
next prev parent reply other threads:[~2005-12-19 5:21 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-12-18 13:33 [RFC/PATCHSET] libata: new reset mechanism Tejun Heo
2005-12-18 13:36 ` [PATCH 01/14] libata: modify ata_dev_try_classify Tejun Heo
2005-12-18 13:38 ` [PATCH 02/14] libata: implement new reset mechanism Tejun Heo
2005-12-19 5:31 ` Jeff Garzik
2005-12-19 6:33 ` Tejun Heo
2005-12-18 13:40 ` [PATCH 03/14] libata: implement standard reset methods Tejun Heo
2005-12-18 13:41 ` [PATCH 04/14] libata: export ata_busy_sleep() Tejun Heo
2005-12-18 13:42 ` [PATCH 05/14] sata_sil: convert to new reset mechanism Tejun Heo
2005-12-18 13:43 ` [PATCH 06/14] sata_sil24: " Tejun Heo
2005-12-18 13:44 ` [PATCH 07/14] sata_sil24: add hardreset Tejun Heo
2005-12-18 13:46 ` [PATCH 08/14] ata_piix: convert pata to new reset mechanism Tejun Heo
2005-12-18 13:47 ` [PATCH 09/14] ata_piix: convert sata " Tejun Heo
2005-12-18 13:48 ` [PATCH 10/14] ahci: separate out ahci_stop/start_engine() Tejun Heo
2005-12-19 5:33 ` Jeff Garzik
2005-12-19 6:05 ` Tejun Heo
2005-12-18 13:49 ` [PATCH 11/14] ahci: convert to new reset mechanism Tejun Heo
2005-12-19 5:33 ` Jeff Garzik
2005-12-19 6:07 ` Tejun Heo
2005-12-18 13:50 ` [PATCH 12/14] ahci: separate out ahci_cmd_prep() Tejun Heo
2005-12-19 5:34 ` Jeff Garzik
2005-12-18 13:51 ` [PATCH 13/14] ahci: add constants for SRST Tejun Heo
2005-12-19 5:35 ` Jeff Garzik
2005-12-18 13:51 ` [PATCH 14/14] ahci: add softreset Tejun Heo
2005-12-19 5:36 ` Jeff Garzik
2005-12-19 6:12 ` Tejun Heo
2005-12-19 6:40 ` Jeff Garzik
2005-12-19 7:13 ` Tejun Heo
2006-01-29 5:11 ` Jeff Garzik
2005-12-19 5:20 ` Jeff Garzik [this message]
2005-12-19 6:03 ` [RFC/PATCHSET] libata: new reset mechanism Tejun Heo
2006-01-29 5:20 ` Jeff Garzik
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=43A64334.7010500@pobox.com \
--to=jgarzik@pobox.com \
--cc=albertcc@tw.ibm.com \
--cc=htejun@gmail.com \
--cc=liml@rtr.ca \
--cc=linux-ide@vger.kernel.org \
/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).