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
next prev parent 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).