linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: jgarzik@pobox.com, albertcc@tw.ibm.com, linux-ide@vger.kernel.org
Subject: Re: [PATCH 09/15] libata: implement ata_down_xfermask_limit()
Date: Sat, 01 Apr 2006 09:11:43 +0900	[thread overview]
Message-ID: <442DC53F.7020907@gmail.com> (raw)
In-Reply-To: <1143844292.15646.4.camel@localhost.localdomain>

Alan Cox wrote:
> On Sad, 2006-04-01 at 01:38 +0900, Tejun Heo wrote:
>> Implement ata_down_xfermask_limit().  This function manipulates
>> @dev->pio/mwdma/udma_mask such that the next lower transfer mode is
>> selected.  This will be used by ata_bus_probe() rewrite and later by
>> EH speeding down.
> 
> This will need care. If it is called during a transfer mode change on
> error we should document that this function will only be called after
> the host_set has been quiesced, otherwise drivers that peek a lot at
> their ap-> mode settings at runtime (eg on an IRQ occuring during a
> speed change down) are going to burned badly.
> 
> It would be nice to see a description of the locking model for a
> changedown at this point.
> 

For new EH, every driver is responsible to freeze itself whenever it
enters an unknown state. While frozen, a low level driver is required to
either 1. plug interrupt completely from the port or 2. ignore interrupt
from the port without any side effect (ACK and clear interrupts
unconditionally). Once frozen, only reset can thaw the frozen state.

So, if anything which violates HSM occurs, LLDD freezes the port and EH
gets invoked. EH kicks in, resets the port and reconfigure transfer mode
if necessary. The EH revive routine looks pretty much like the new
ata_bus_probe() except that it uses ata_dev_revalidate in place of
ata_dev_read_id().

Thanks.

-- 
tejun

  reply	other threads:[~2006-04-01  0:11 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-31 16:38 [PATCHSET] libata: improve ata_bus_probe failure handling Tejun Heo
2006-03-31 16:38 ` [PATCH 02/15] libata: make ata_bus_probe() return negative errno on failure Tejun Heo
2006-03-31 16:38 ` [PATCH 03/15] libata: separate out ata_spd_string() Tejun Heo
2006-03-31 16:38 ` [PATCH 01/15] libata: fix ata_set_mode() return value Tejun Heo
2006-04-01 17:34   ` Jeff Garzik
2006-03-31 16:38 ` [PATCH 04/15] libata: convert do_probe_reset() to ata_do_reset() Tejun Heo
2006-03-31 16:38 ` [PATCH 05/15] libata: implement ata_dev_enabled and disabled() Tejun Heo
2006-04-01 17:29   ` Jeff Garzik
2006-04-02  0:54     ` Tejun Heo
2006-03-31 16:38 ` [PATCH 06/15] libata: make ata_set_mode() handle no-device case properly Tejun Heo
2006-03-31 16:38 ` [PATCH 08/15] libata: don't disable devices from ata_set_mode() Tejun Heo
2006-04-01 19:46   ` Jeff Garzik
2006-03-31 16:38 ` [PATCH 10/15] libata: add dev->sata_spd_limit and helpers Tejun Heo
2006-04-01 19:51   ` Jeff Garzik
2006-04-02  1:00     ` Tejun Heo
2006-04-02  8:12       ` Jeff Garzik
2006-03-31 16:38 ` [PATCH 11/15] libata: preserve SATA SPD setting over hard resets Tejun Heo
2006-04-01 19:52   ` Jeff Garzik
2006-03-31 16:38 ` [PATCH 07/15] libata: reorganize ata_set_mode() Tejun Heo
2006-03-31 16:38 ` [PATCH 09/15] libata: implement ata_down_xfermask_limit() Tejun Heo
2006-03-31 22:31   ` Alan Cox
2006-04-01  0:11     ` Tejun Heo [this message]
2006-04-01 19:47   ` Jeff Garzik
2006-04-02  0:55     ` Tejun Heo
2006-04-02  6:58       ` Tejun Heo
2006-04-02  8:07         ` Jeff Garzik
2006-03-31 16:38 ` [PATCH 13/15] libata: add 1s sleep between resets Tejun Heo
2006-04-01 19:57   ` Jeff Garzik
2006-04-02  1:07     ` Tejun Heo
2006-03-31 16:38 ` [PATCH 14/15] libata: improve ata_bus_probe() Tejun Heo
2006-04-01 19:58   ` Jeff Garzik
2006-03-31 16:38 ` [PATCH 15/15] libata: consider disabled devices in ata_dev_xfermask() Tejun Heo
2006-04-01 20:00   ` Jeff Garzik
2006-04-02  1:09     ` Tejun Heo
2006-03-31 16:38 ` [PATCH 12/15] libata: use SATA speeding down in ata_drive_probe_reset() Tejun Heo
2006-04-01 19:56   ` Jeff Garzik
2006-04-02  1:05     ` Tejun Heo

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=442DC53F.7020907@gmail.com \
    --to=htejun@gmail.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=albertcc@tw.ibm.com \
    --cc=jgarzik@pobox.com \
    --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).