All of lore.kernel.org
 help / color / mirror / Atom feed
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: Sun, 29 Jan 2006 00:20:52 -0500	[thread overview]
Message-ID: <43DC50B4.6040902@pobox.com> (raw)
In-Reply-To: <43A64D42.2080700@gmail.com>

Tejun Heo wrote:
> Jeff Garzik wrote:
>> 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.
> 
> 
> I don't really agree with you.  IMHO, resets are too different from 
> standard qc execution (ie. standard ATA command execution) to be a qc 
> protocol.  Also, how are we gonna represent host reset with qc?  I like 
> the "everything via qc" idea but I think making resets protocols of qc 
> is pushing too far.  Please consider...
> 
> * If we go with qc_prep/issue, we don't have context while executing 
> resets.  Even though SATA is pretty much event-driven, many controllers 
> still need quite some amount of polling during resets.  Even though a 
> controller can be reset using interrupts/events, the code will be much 
> more complex.  I think it's MUCH better to perform resets with context.
> 
> * If we perform resets with context, we can use ata_exec_internal() 
> while performing resets.  If a controller can perform resets by issuing 
> qc's or wants to do some post-reset configuration commands, it can do so 
> by simply invoking ata_exec_internal().  If resets become qc protocols, 
> we'll need to dance _really_ hard to do anything similar.  Please 
> consider the state of IDE driver regarding resets / reconfiguration.
> 
> * Resets must be followed by a series of configuration commands.  i.e. 
> we need context after performing reset anyway.  So, the context needs to 
> be there whether or not resets are performed with contexts.

That's fine, we can do without it for now.  I definitely want to see 
that portion of the ATA passthru SCSI command supported.  The spec lists 
soft and hard reset among the protocols.  You could just hard-code a 
call to the libata reset machinery for those two protocols.  Handle it 
in the simulator.

	Jeff



      reply	other threads:[~2006-01-29  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 ` [RFC/PATCHSET] libata: new reset mechanism Jeff Garzik
2005-12-19  6:03   ` Tejun Heo
2006-01-29  5:20     ` Jeff Garzik [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=43DC50B4.6040902@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.