All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tejun Heo <htejun@gmail.com>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: mlord@pobox.com, albertcc@tw.ibm.com, alan@lxorguk.ukuu.org.uk,
	axboe@suse.de, forrest.zhao@intel.com, linux-ide@vger.kernel.org
Subject: Re: [PATCH 13/14] libata-hp-prep: add prereset() method and implement ata_std_prereset()
Date: Tue, 23 May 2006 07:44:36 -0700	[thread overview]
Message-ID: <44731FD4.6050008@gmail.com> (raw)
In-Reply-To: <446DE24E.4070501@pobox.com>

Jeff Garzik wrote:
>> +static void ata_wait_spinup(struct ata_port *ap)
>> +{
>> +    struct ata_eh_context *ehc = &ap->eh_context;
>> +    unsigned long end, secs;
>> +    int rc;
>> +
>> +    /* first, debounce */
>> +    rc = sata_phy_debounce(ap, sata_deb_timing_eh);
> 
> unconditionally calls a sata_xxx function, and so "sata_wait_spinup" 
> naming is preferred.

Waiting for spinup is common operation for both PATA and SATA although I 
don't know how many PATA controllers support hotplug.  The following 
code pattern is used a lot to avoid explicit support testing in the 
caller.  ie. The function which uses optional controller feature is 
responsible for testing whether it is implemented by the controller.

rc = sata_xxx(args);
if (rc && rc != -EOPNOTSUPP) {
	/* handle error */
}

Also, if we rename this function to sata_wait_spinup() because it calls 
sata_*() unconditionally then ata_std_prereset() should be renamed to 
sata_std_prereset() as it calls sata_wait_spinup() unconditionally.

>> +    /* if debounced successfully and offline, no need to wait */
>> +    if (rc == 0 && ata_port_offline(ap))
>> +        return;
> 
> ISTR ata_port_offline being SATA-specific too, but anyway...  :)

ata_port_offline() applies to both PATA and SATA.  It's just that the 
current implmentation always returns 0 for PATA.  Well, I don't know. 
Maybe we should rename all those to sata_*() and rename them again when 
actual PATA support is implemented.

>> +    /* okay, let's give the drive time to spin up */
>> +    end = ehc->i.hotplug_timestamp + ATA_SPINUP_WAIT * HZ / 1000;
>> +    secs = ((end - jiffies) + HZ - 1) / HZ;
>> +
>> +    if (time_after(jiffies, end))
>> +        return;
>> +
>> +    if (secs > 5)
>> +        ata_port_printk(ap, KERN_INFO, "waiting for device to spin up "
>> +                "(%lu secs)\n", secs);
>> +
>> +    schedule_timeout_uninterruptible(end - jiffies);
> 
> BTW:  Medium-term, re-read Hale Landis's ATADRVR probe code 
> (http://www.ata-atapi.com/) to make sure the PATA probe path is still 
> intact.

Will do.

-- 
tejun


  reply	other threads:[~2006-05-23 21:55 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-19 13:16 [PATCHSET 01/03] prep for hotplug support, take 3 Tejun Heo
2006-05-19 13:16 ` [PATCH 03/14] libata-hp-prep: make some ata_device fields persistent Tejun Heo
2006-05-19 15:00   ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 01/14] libata-hp-prep: add flags and eh_info/context fields for hotplug Tejun Heo
2006-05-19 14:58   ` Jeff Garzik
2006-05-19 15:17     ` Tejun Heo
2006-05-19 15:28       ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 04/14] libata-hp-prep: update ata_scsi_find_dev() and friends Tejun Heo
2006-05-19 15:03   ` Jeff Garzik
2006-05-23 14:25     ` Tejun Heo
2006-05-26  7:07       ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 02/14] libata-hp-prep: implement ata_dev_init() Tejun Heo
2006-05-19 13:16 ` [PATCH 05/14] libata-hp-prep: use __ata_scsi_find_dev() Tejun Heo
2006-05-19 13:16 ` [PATCH 07/14] libata-hp-prep: store attached SCSI device Tejun Heo
2006-05-19 15:04   ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 06/14] libata-hp-prep: implement ap->hw_sata_spd_limit Tejun Heo
2006-05-19 13:16 ` [PATCH 09/14] libata-hp-prep: make probing related functions global Tejun Heo
2006-05-19 13:16 ` [PATCH 12/14] libata-hp-prep: implement ata_noop_check_status() Tejun Heo
2006-05-19 15:12   ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 11/14] libata-hp-prep: make ops->tf_read() optional Tejun Heo
2006-05-19 15:11   ` Jeff Garzik
2006-05-23 16:04     ` Tejun Heo
2006-05-19 13:16 ` [PATCH 08/14] libata-hp-prep: add ata_hotplug_wq Tejun Heo
2006-05-19 13:16 ` [PATCH 14/14] libata-hp-prep: implement followup softreset handling Tejun Heo
2006-05-19 15:21   ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 10/14] libata-hp-prep: implement sata_phy_debounce() Tejun Heo
2006-05-19 15:07   ` Jeff Garzik
2006-05-19 13:16 ` [PATCH 13/14] libata-hp-prep: add prereset() method and implement ata_std_prereset() Tejun Heo
2006-05-19 15:20   ` Jeff Garzik
2006-05-23 14:44     ` Tejun Heo [this message]
2006-05-23 22:29       ` Alan Cox
2006-05-29  2:14         ` Tejun Heo
  -- strict thread matches above, loose matches on Subject: below --
2006-05-19 13:06 [PATCH 12/14] libata-hp-prep: implement ata_noop_check_status() Tejun Heo
2006-05-19 13:06 ` [PATCH 13/14] libata-hp-prep: add prereset() method and implement ata_std_prereset() Tejun Heo
2006-05-11 15:11 [PATCHSET 07/11] prep LLDDs for hotplug support, take 1 Tejun Heo
2006-05-11 15:12 ` [PATCH 13/14] libata-hp-prep: add prereset() method and implement ata_std_prereset() Tejun Heo
2006-05-11 15:02 [PATCHSET 06/11] prep for hotplug support, take 2 Tejun Heo
2006-05-11 15:02 ` [PATCH 13/14] libata-hp-prep: add prereset() method and implement ata_std_prereset() 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=44731FD4.6050008@gmail.com \
    --to=htejun@gmail.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=albertcc@tw.ibm.com \
    --cc=axboe@suse.de \
    --cc=forrest.zhao@intel.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-ide@vger.kernel.org \
    --cc=mlord@pobox.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 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.