All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhang Rui <rui.zhang@intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Lin Ming <ming.m.lin@intel.com>, Jeff Garzik <jgarzik@pobox.com>,
	Alan Stern <stern@rowland.harvard.edu>, Tejun Heo <tj@kernel.org>,
	Len Brown <lenb@kernel.org>,
	linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org,
	ACPI Devel Mailing List <linux-acpi@vger.kernel.org>
Subject: Re: [RFC PATCH 1/6] ACPI: Introduce ACPI D3_COLD state support
Date: Tue, 14 Feb 2012 15:07:08 +0800	[thread overview]
Message-ID: <1329203228.19384.35.camel@rui.sh.intel.com> (raw)
In-Reply-To: <201202132125.15537.rjw@sisk.pl>

Hi, Rafael,

On 一, 2012-02-13 at 21:25 +0100, Rafael J. Wysocki wrote:
> On Monday, February 13, 2012, Lin Ming wrote:
> > From: Zhang Rui <rui.zhang@intel.com>
> > 
> > If a device has _PR3._ON, it means the device supports D3_HOT.
> > If a device has _PR3._OFF, it means the device supports D3_COLD.
> > Add the ability to validate and enter D3_COLD state in ACPI.
> > 
> > Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> 
> This is supposed to be ACPI 5.0 support, right?
> 
No, D3_HOT is introduced in ACPI spec 4.0.
According to the spec, _PR3 is used for devices that support both
D3(D3_COLD) and D3HOT.

The confusion here is that Linux D3 equals ACPICA D3HOT and Linux
D3_COLD equals ACPICA D3.
For example, when enter Linux ACPI D3, the reference count of ACPI Power
Resources in _PR3 is increased by one.

> So can anyone please tell me what part of the ACPI 5.0 spec is the
> basis of this patch, because I can't see that immediately?
> 
> The only places where D3Cold is _mentioned_ are Section 7.2.12 (_PRE, which
> appears to be new in 5.0), Section 7.2.20 (_S0W), Section 7.2.21 (_S1W),
> Section 7.2.22 (_S2W), Section 7.2.23 (_S3W) and Section 7.2.24 (_S4W).
> None of them mentions those _PR3._ON and _PR3._OFF things above.
> 
> Moreover, my understanding of the spec is that D3Cold means all of the
> power resources returned by _PR3 are "off" (whereas some of them will be
> "on" in D3hot).
> 
Agreed.

> > ---
> >  drivers/acpi/power.c |    4 ++--
> >  drivers/acpi/scan.c  |   10 +++++++++-
> >  2 files changed, 11 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
> > index 9ac2a9f..0d681fb 100644
> > --- a/drivers/acpi/power.c
> > +++ b/drivers/acpi/power.c
> > @@ -500,14 +500,14 @@ int acpi_power_transition(struct acpi_device *device, int state)
> >  {
> >  	int result;
> >  
> > -	if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3))
> > +	if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3_COLD))
> >  		return -EINVAL;
> >  
> >  	if (device->power.state == state)
> >  		return 0;
> >  
> >  	if ((device->power.state < ACPI_STATE_D0)
> > -	    || (device->power.state > ACPI_STATE_D3))
> > +	    || (device->power.state > ACPI_STATE_D3_COLD))
> >  		return -ENODEV;
> >  
> >  	/* TBD: Resources must be ordered. */
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> > index 8ab80ba..a9d4391 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -881,8 +881,16 @@ static int acpi_bus_get_power_flags(struct acpi_device *device)
> >  
> >  			device->power.flags.power_resources = 1;
> >  			ps->flags.valid = 1;
> > -			for (j = 0; j < ps->resources.count; j++)
> > +			for (j = 0; j < ps->resources.count; j++) {
> >  				acpi_bus_add_power_resource(ps->resources.handles[j]);
> > +				/* Check for D3_COLD support. _PR3._OFF equals D3_COLD ? */
> > +				if (i == ACPI_STATE_D3) {
> > +					if (j == 0)
> > +						device->power.states[ACPI_STATE_D3_COLD].flags.valid = 1;
> > +					status = acpi_get_handle(ps->resources.handles[j], "_OFF",  &handle);
> > +					device->power.states[ACPI_STATE_D3_COLD].flags.valid &= ACPI_SUCCESS(status);
> > +				}
> > +			}
> 
> Sorry, but this doesn't make sense to me.  Power resources always have
> the _OFF method, right?
> 
I'm not sure. I thought I had seen ACPI Power Resources without _OFF
control method somewhere in bugzilla, but I can not find it out now.

Hmm, how about set D3_COLD support if _PR3 exists, but leave a warning
message if _OFF doesn't exist, for now?

thanks,
rui


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

WARNING: multiple messages have this Message-ID (diff)
From: Zhang Rui <rui.zhang@intel.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Lin Ming <ming.m.lin@intel.com>, Jeff Garzik <jgarzik@pobox.com>,
	Alan Stern <stern@rowland.harvard.edu>, Tejun Heo <tj@kernel.org>,
	Len Brown <lenb@kernel.org>,
	linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org,
	linux-scsi@vger.kernel.org, linux-pm@vger.kernel.org,
	ACPI Devel Mailing List <linux-acpi@vger.kernel.org>
Subject: Re: [RFC PATCH 1/6] ACPI: Introduce ACPI D3_COLD state support
Date: Tue, 14 Feb 2012 15:07:08 +0800	[thread overview]
Message-ID: <1329203228.19384.35.camel@rui.sh.intel.com> (raw)
In-Reply-To: <201202132125.15537.rjw@sisk.pl>

Hi, Rafael,

On 一, 2012-02-13 at 21:25 +0100, Rafael J. Wysocki wrote:
> On Monday, February 13, 2012, Lin Ming wrote:
> > From: Zhang Rui <rui.zhang@intel.com>
> > 
> > If a device has _PR3._ON, it means the device supports D3_HOT.
> > If a device has _PR3._OFF, it means the device supports D3_COLD.
> > Add the ability to validate and enter D3_COLD state in ACPI.
> > 
> > Signed-off-by: Zhang Rui <rui.zhang@intel.com>
> 
> This is supposed to be ACPI 5.0 support, right?
> 
No, D3_HOT is introduced in ACPI spec 4.0.
According to the spec, _PR3 is used for devices that support both
D3(D3_COLD) and D3HOT.

The confusion here is that Linux D3 equals ACPICA D3HOT and Linux
D3_COLD equals ACPICA D3.
For example, when enter Linux ACPI D3, the reference count of ACPI Power
Resources in _PR3 is increased by one.

> So can anyone please tell me what part of the ACPI 5.0 spec is the
> basis of this patch, because I can't see that immediately?
> 
> The only places where D3Cold is _mentioned_ are Section 7.2.12 (_PRE, which
> appears to be new in 5.0), Section 7.2.20 (_S0W), Section 7.2.21 (_S1W),
> Section 7.2.22 (_S2W), Section 7.2.23 (_S3W) and Section 7.2.24 (_S4W).
> None of them mentions those _PR3._ON and _PR3._OFF things above.
> 
> Moreover, my understanding of the spec is that D3Cold means all of the
> power resources returned by _PR3 are "off" (whereas some of them will be
> "on" in D3hot).
> 
Agreed.

> > ---
> >  drivers/acpi/power.c |    4 ++--
> >  drivers/acpi/scan.c  |   10 +++++++++-
> >  2 files changed, 11 insertions(+), 3 deletions(-)
> > 
> > diff --git a/drivers/acpi/power.c b/drivers/acpi/power.c
> > index 9ac2a9f..0d681fb 100644
> > --- a/drivers/acpi/power.c
> > +++ b/drivers/acpi/power.c
> > @@ -500,14 +500,14 @@ int acpi_power_transition(struct acpi_device *device, int state)
> >  {
> >  	int result;
> >  
> > -	if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3))
> > +	if (!device || (state < ACPI_STATE_D0) || (state > ACPI_STATE_D3_COLD))
> >  		return -EINVAL;
> >  
> >  	if (device->power.state == state)
> >  		return 0;
> >  
> >  	if ((device->power.state < ACPI_STATE_D0)
> > -	    || (device->power.state > ACPI_STATE_D3))
> > +	    || (device->power.state > ACPI_STATE_D3_COLD))
> >  		return -ENODEV;
> >  
> >  	/* TBD: Resources must be ordered. */
> > diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
> > index 8ab80ba..a9d4391 100644
> > --- a/drivers/acpi/scan.c
> > +++ b/drivers/acpi/scan.c
> > @@ -881,8 +881,16 @@ static int acpi_bus_get_power_flags(struct acpi_device *device)
> >  
> >  			device->power.flags.power_resources = 1;
> >  			ps->flags.valid = 1;
> > -			for (j = 0; j < ps->resources.count; j++)
> > +			for (j = 0; j < ps->resources.count; j++) {
> >  				acpi_bus_add_power_resource(ps->resources.handles[j]);
> > +				/* Check for D3_COLD support. _PR3._OFF equals D3_COLD ? */
> > +				if (i == ACPI_STATE_D3) {
> > +					if (j == 0)
> > +						device->power.states[ACPI_STATE_D3_COLD].flags.valid = 1;
> > +					status = acpi_get_handle(ps->resources.handles[j], "_OFF",  &handle);
> > +					device->power.states[ACPI_STATE_D3_COLD].flags.valid &= ACPI_SUCCESS(status);
> > +				}
> > +			}
> 
> Sorry, but this doesn't make sense to me.  Power resources always have
> the _OFF method, right?
> 
I'm not sure. I thought I had seen ACPI Power Resources without _OFF
control method somewhere in bugzilla, but I can not find it out now.

Hmm, how about set D3_COLD support if _PR3 exists, but leave a warning
message if _OFF doesn't exist, for now?

thanks,
rui



  reply	other threads:[~2012-02-14  7:07 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-13  9:11 [RFC] ACPI D3Cold state and SATA ZPODD support Lin Ming
2012-02-13  9:11 ` [RFC PATCH 1/6] ACPI: Introduce ACPI D3_COLD state support Lin Ming
2012-02-13 20:25   ` Rafael J. Wysocki
2012-02-14  7:07     ` Zhang Rui [this message]
2012-02-14  7:07       ` Zhang Rui
2012-02-14 22:29       ` Rafael J. Wysocki
2012-02-14 22:29         ` Rafael J. Wysocki
2012-02-16  7:08         ` Zhang Rui
2012-02-16  7:08           ` Zhang Rui
2012-02-17 22:23           ` Rafael J. Wysocki
2012-02-17 22:23             ` Rafael J. Wysocki
2012-02-20  5:39             ` Zhang Rui
2012-02-20  5:39               ` Zhang Rui
2012-02-13  9:11 ` [RFC PATCH 2/6] ACPI: Reference devices in ACPI Power Resource Lin Ming
2012-02-13 20:48   ` Rafael J. Wysocki
2012-02-14  7:59     ` Zhang Rui
2012-02-14 22:36       ` Rafael J. Wysocki
2012-02-16  7:18         ` Zhang Rui
2012-02-16 15:13           ` Alan Stern
2012-02-16 15:13             ` Alan Stern
2012-02-17  1:12             ` Lin Ming
2012-02-17 22:37               ` Rafael J. Wysocki
2012-02-17  7:05             ` Zhang, Rui
2012-02-17 15:07               ` Alan Stern
2012-02-21 14:07                 ` Lin Ming
2012-02-21 16:06                   ` Alan Stern
2012-02-23 13:41                     ` Lin Ming
2012-02-23 13:41                       ` Lin Ming
2012-02-23 18:10                       ` Alan Stern
2012-02-17 22:34           ` Rafael J. Wysocki
2012-02-20  5:43             ` Zhang Rui
2012-02-13  9:11 ` [RFC PATCH 3/6] ACPI: Runtime resume all devices covered by a power resource Lin Ming
2012-02-13  9:11 ` [RFC PATCH 4/6] PM / Runtime: Introduce flag can_power_off Lin Ming
2012-02-13 15:01   ` Alan Stern
2012-02-13 15:01     ` Alan Stern
2012-02-13 19:38     ` Rafael J. Wysocki
2012-02-13 20:41       ` Alan Stern
2012-02-13 20:41         ` Alan Stern
2012-02-13 20:50         ` Rafael J. Wysocki
2012-02-14  7:11         ` Zhang Rui
2012-02-14  7:11           ` Zhang Rui
2012-02-14 22:38           ` Rafael J. Wysocki
2012-02-14  6:17       ` Zhang Rui
2012-02-14 22:39         ` Rafael J. Wysocki
2012-02-16  7:41           ` Zhang Rui
2012-02-17 23:54             ` Rafael J. Wysocki
2012-02-18 12:54               ` huang ying
2012-02-18 20:35                 ` Rafael J. Wysocki
2012-02-20  3:23               ` Zhang Rui
2012-02-20 23:13                 ` Rafael J. Wysocki
2012-02-21  1:13                   ` Zhang Rui
2012-02-21 21:43                     ` Rafael J. Wysocki
2012-02-22  0:57                       ` Zhang Rui
2012-02-14  6:07     ` Zhang Rui
2012-02-14  6:07       ` Zhang Rui
2012-02-13  9:11 ` [RFC PATCH 5/6] PCI: Move acpi_dev_run_wake to acpi core Lin Ming
2012-02-13 20:49   ` Rafael J. Wysocki
2012-02-13  9:11 ` [RFC PATCH 6/6] libata: add ZPODD support Lin Ming
2012-02-15  6:06   ` Aaron Lu
2012-02-15  6:06     ` Aaron Lu
2012-02-15  6:46     ` Lin Ming
2012-02-15  7:18       ` Aaron Lu
2012-02-15  7:18         ` 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=1329203228.19384.35.camel@rui.sh.intel.com \
    --to=rui.zhang@intel.com \
    --cc=jgarzik@pobox.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux-scsi@vger.kernel.org \
    --cc=ming.m.lin@intel.com \
    --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 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.