linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Aaron Lu <aaron.lu@intel.com>
To: Tejun Heo <tj@kernel.org>
Cc: Jeff Garzik <jgarzik@pobox.com>,
	James Bottomley <James.Bottomley@hansenpartnership.com>,
	"Rafael J. Wysocki" <rjw@sisk.pl>,
	Alan Stern <stern@rowland.harvard.edu>,
	Aaron Lu <aaron.lwe@gmail.com>, Jeff Wu <jeff.wu@amd.com>,
	linux-ide@vger.kernel.org, linux-pm@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-acpi@vger.kernel.org
Subject: Re: [PATCH v12 4/9] libata: check zero power ready status for ZPODD
Date: Fri, 11 Jan 2013 10:00:59 +0800	[thread overview]
Message-ID: <20130111020059.GA26270@aaronlu.sh.intel.com> (raw)
In-Reply-To: <20130110195231.GI20454@htj.dyndns.org>

Hi Tejun,

On Thu, Jan 10, 2013 at 11:52:31AM -0800, Tejun Heo wrote:
> Hello, Aaron.
> 
> On Thu, Jan 10, 2013 at 05:24:25PM +0800, Aaron Lu wrote:
> > +/*
> > + * Update the zpodd->zp_ready field. This field will only be set
> > + * if the ODD has stayed in ZP ready state for zpodd_poweroff_delay
> > + * time, and will be used to decide if power off is allowed. If it
> > + * is set, it will be cleared during resume from powered off state.
> > + */
> > +void zpodd_on_suspend(struct ata_device *dev)
> > +{
> > +	struct zpodd *zpodd = dev->zpodd;
> > +	unsigned long expires;
> > +
> > +	if (!zpready(dev)) {
> > +		zpodd->zp_sampled = false;
> > +		return;
> > +	}
> > +
> > +	if (!zpodd->zp_sampled) {
> > +		zpodd->zp_sampled = true;
> > +		zpodd->last_ready = jiffies;
> > +		return;
> 
> Is the above return necessary?  Can't we just fall through and always
> check the actual condition?

The zpready(dev) function will check the actual condition by issuing a
TUR and check the returned sense code. And the zp_sampled serves as an
indication if this is the first time we sensed the ODD in ZP ready
status.

The zpodd_on_suspend works like this:

check ZP ready status by calling zpready(dev)
  if not, clear zp_sampled and zp_ready
  return

ODD is ZP ready

check if this is the first time we sensed it is ZP ready
  if not, set the zp_sampled flag and record timestamp
  return

This is not the first time we sensed ZP ready for the ODD

check if the ODD has been in this state long enough
  if not, return

The ODD has been in ZP ready state long enough
  set the zp_ready flag, the zpodd_zpready will use that flag

Done.

Does this work flow look OK?

BTW, I just realized I mistakenly removed the clear of zp_ready in v12
when zpready(dev) returns false, I thought it is not necessary since
each time we set that flag, the ODD will be powered off and the flag
will always be cleared during resume time in post_poweron. But when
qos_no_poweroff is set, this is not the case and can cause problem when
ODD is not in ZP ready state and user cleared the qos_no_poweroff flag.
I'll add a comment for this in next version to avoid making this mistake
again in the future...

Thanks,
Aaron

> 
> > +	}
> > +
> > +	expires = zpodd->last_ready +
> > +		  msecs_to_jiffies(zpodd_poweroff_delay * 1000);
> > +	if (time_before(jiffies, expires))
> > +		return;
> > +
> > +	zpodd->zp_ready = true;
> > +}
> 
> Thanks.
> 
> -- 
> tejun

  reply	other threads:[~2013-01-11  2:00 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-01-10  9:24 [PATCH v12 0/9] ZPODD Patches Aaron Lu
2013-01-10  9:24 ` [PATCH v12 1/9] scsi: sr: support runtime pm Aaron Lu
2013-01-10  9:24 ` [PATCH v12 2/9] libata: identify and init ZPODD devices Aaron Lu
2013-01-10 19:47   ` Tejun Heo
2013-01-10  9:24 ` [PATCH v12 3/9] libata: move acpi notification code to zpodd Aaron Lu
2013-01-10 19:48   ` Tejun Heo
2013-01-10  9:24 ` [PATCH v12 4/9] libata: check zero power ready status for ZPODD Aaron Lu
2013-01-10 19:52   ` Tejun Heo
2013-01-11  2:00     ` Aaron Lu [this message]
2013-01-10  9:24 ` [PATCH v12 5/9] libata: handle power transition of ODD Aaron Lu
2013-01-10 19:54   ` Tejun Heo
2013-01-10  9:24 ` [PATCH v12 6/9] libata: expose pm qos flags for ata device Aaron Lu
2013-01-10 19:55   ` Tejun Heo
2013-01-10  9:24 ` [PATCH v12 7/9] libata: scsi: no poll when ODD is powered off Aaron Lu
2013-01-10 19:56   ` Tejun Heo
2013-01-11  2:11     ` Aaron Lu
2013-01-11  2:17       ` Tejun Heo
2013-01-11  3:16         ` Aaron Lu
2013-01-11 18:44           ` Tejun Heo
2013-01-14 18:01             ` Jeff Garzik
2013-01-15  7:12               ` Aaron Lu
2013-01-10  9:24 ` [PATCH v12 8/9] libata: do not suspend port if normal ODD is attached Aaron Lu
2013-01-10 19:57   ` Tejun Heo
2013-01-10  9:24 ` [PATCH v12 9/9] scsi: remove can_power_off flag from scsi_device Aaron Lu

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=20130111020059.GA26270@aaronlu.sh.intel.com \
    --to=aaron.lu@intel.com \
    --cc=James.Bottomley@hansenpartnership.com \
    --cc=aaron.lwe@gmail.com \
    --cc=jeff.wu@amd.com \
    --cc=jgarzik@pobox.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=rjw@sisk.pl \
    --cc=stern@rowland.harvard.edu \
    --cc=tj@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).