All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Lu, Aaron" <Aaron.Lu@amd.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Lin Ming <ming.m.lin@intel.com>, Len Brown <lenb@kernel.org>,
	linux-acpi <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Zhang Rui <rui.zhang@intel.com>,
	"Huang, Ying" <ying.huang@intel.com>
Subject: Re: [PATCH v2] ACPI: D3 states cleanup
Date: Sat, 21 Apr 2012 01:36:36 +0000	[thread overview]
Message-ID: <BF35EBA5-A9E1-47C4-A2E2-197C8FE457F5@amd.com> (raw)
In-Reply-To: <201204201312.54949.rjw@sisk.pl>


在 2012-4-20,下午7:08,"Rafael J. Wysocki" <rjw@sisk.pl> 写道:

> On Friday, April 20, 2012, Aaron Lu wrote:
>> Hi,
>> 
>> On Fri, Apr 20, 2012 at 01:37:35PM +0800, Lin Ming wrote:
>>>>>>> There are two ACPI D3 states defined now:
>>>>>>> ACPI_STATE_D3 and ACPI_STATE_D3_COLD.
>>>>>>> 
>>>>>>> But the uses of these states are not clear/correct in some code.
>>>>>>> For example, some code refer ACPI_STATE_D3 as D3hot and others refer
>>>>>>> it as D3cold.
>>>>>>> 
>>>>>>> This patch introduces ACPI_STATE_D3_HOT to refer to ACPI D3hot state.
>>>>>>> And changes ACPI_STATE_D3 to refer to ACPI D3cold state only.
>>>>>>> Also redefines ACPI_STATE_D3_COLD the same as ACPI_STATE_D3.
>>>>>>> 
>>>>>> 
>>>>>> With this patch now, if a device has _PS3, then we will set its D3hot
>>>>>> flag valid. This doesn't feel right to me, since per our discussion the
>>>>>> other day, we should assume _PS3 will put the device into D3cold.
>>>>>> 
>>>>>> Or do you mean: if _PS3 is available, then both D3hot and D3cold is
>>>>>> valid from the perspective of acpi, it is the individual driver's
>>>>>> responsibility to decide which state is actually valid and will be used.
>>>>> 
>>>>> Right.
>>>>> 
>>>>> ACPI_STATE_D3(same as ACPI_STATE_D3_COLD now) is always valid.
>>>>> 
>>>> 
>>>> I mean, if _PS3 is available, can we say D3hot is valid?
>>> 
>>> Yes.
>>> 
>> 
>> OK, now I'm confused...
>> 
>> First, let me try to clarify the meaning of acpi power state's valid
>> flag.
>> 
>> By valid, I suppose it means the device can be in that state, instead of
>> we have a way to program this device to go into that state.
>> 
>> e.g. D0 is valid means the device can be in D0 state, and D3_cold is
>> valid means the device can be in D3_cold state. We unconditionally set
>> these two states as valid, because we know every device supports these
>> two states. But we might not be able to put the device into that state
>> in software, since we might not have _PS0 or _PS3 control methods for it.
>> 
>> And if we do have the _PSx or _PRx control methods, we knows we have a
>> way to put the device into that state, and hence the device should be
>> able to support that power state, so we will set that state as valid too.
>> 
>> Is this correct?
>> 
>> For D3hot, obviously not all device supports this state, so we will need
>> to figure it out through the acpi table.
>> I remembered Rafael said the following words the other day in a reply to
>> my evaluate_ps3_when_entering_d3_cold_patch:
>> 
>> -----------------------------------------------------------------------
>> I'd rather say that with _PR3 we have the opportunity to avoid removing
>> power completely from the device.  In other words, D3_hot is supported (and
>> it is supported _only_ in that case).
>> -----------------------------------------------------------------------
>> 
>> So I think here is a problem, that if a device has only _PS3, why should
>> we say D3hot is supported? Is there a reason for this that I missed?
> 
> OK, I agree.  We need to special case the situation in which _PR3 is not
> present, but _PS3 is.  IOW, we should do something like this in the loop in
> acpi_bus_get_power_flags():
> 
> 
>        /* State is valid if we have some power control */
>        if (ps->resources.count
>            || (ps->flags.explicit_set && i < ACPI_STATE_D3))
>            ps->flags.valid = 1;
> 

Looks good to me, thanks.

-Aaron


WARNING: multiple messages have this Message-ID (diff)
From: "Lu, Aaron" <Aaron.Lu@amd.com>
To: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Lin Ming <ming.m.lin@intel.com>, Len Brown <lenb@kernel.org>,
	linux-acpi <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Zhang Rui <rui.zhang@intel.com>,
	"Huang, Ying" <ying.huang@intel.com>
Subject: Re: [PATCH v2] ACPI: D3 states cleanup
Date: Sat, 21 Apr 2012 01:36:36 +0000	[thread overview]
Message-ID: <BF35EBA5-A9E1-47C4-A2E2-197C8FE457F5@amd.com> (raw)
In-Reply-To: <201204201312.54949.rjw@sisk.pl>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="gb2312", Size: 3575 bytes --]


ÔÚ 2012-4-20£¬ÏÂÎç7:08£¬"Rafael J. Wysocki" <rjw@sisk.pl> дµÀ£º

> On Friday, April 20, 2012, Aaron Lu wrote:
>> Hi,
>> 
>> On Fri, Apr 20, 2012 at 01:37:35PM +0800, Lin Ming wrote:
>>>>>>> There are two ACPI D3 states defined now:
>>>>>>> ACPI_STATE_D3 and ACPI_STATE_D3_COLD.
>>>>>>> 
>>>>>>> But the uses of these states are not clear/correct in some code.
>>>>>>> For example, some code refer ACPI_STATE_D3 as D3hot and others refer
>>>>>>> it as D3cold.
>>>>>>> 
>>>>>>> This patch introduces ACPI_STATE_D3_HOT to refer to ACPI D3hot state.
>>>>>>> And changes ACPI_STATE_D3 to refer to ACPI D3cold state only.
>>>>>>> Also redefines ACPI_STATE_D3_COLD the same as ACPI_STATE_D3.
>>>>>>> 
>>>>>> 
>>>>>> With this patch now, if a device has _PS3, then we will set its D3hot
>>>>>> flag valid. This doesn't feel right to me, since per our discussion the
>>>>>> other day, we should assume _PS3 will put the device into D3cold.
>>>>>> 
>>>>>> Or do you mean: if _PS3 is available, then both D3hot and D3cold is
>>>>>> valid from the perspective of acpi, it is the individual driver's
>>>>>> responsibility to decide which state is actually valid and will be used.
>>>>> 
>>>>> Right.
>>>>> 
>>>>> ACPI_STATE_D3(same as ACPI_STATE_D3_COLD now) is always valid.
>>>>> 
>>>> 
>>>> I mean, if _PS3 is available, can we say D3hot is valid?
>>> 
>>> Yes.
>>> 
>> 
>> OK, now I'm confused...
>> 
>> First, let me try to clarify the meaning of acpi power state's valid
>> flag.
>> 
>> By valid, I suppose it means the device can be in that state, instead of
>> we have a way to program this device to go into that state.
>> 
>> e.g. D0 is valid means the device can be in D0 state, and D3_cold is
>> valid means the device can be in D3_cold state. We unconditionally set
>> these two states as valid, because we know every device supports these
>> two states. But we might not be able to put the device into that state
>> in software, since we might not have _PS0 or _PS3 control methods for it.
>> 
>> And if we do have the _PSx or _PRx control methods, we knows we have a
>> way to put the device into that state, and hence the device should be
>> able to support that power state, so we will set that state as valid too.
>> 
>> Is this correct?
>> 
>> For D3hot, obviously not all device supports this state, so we will need
>> to figure it out through the acpi table.
>> I remembered Rafael said the following words the other day in a reply to
>> my evaluate_ps3_when_entering_d3_cold_patch:
>> 
>> -----------------------------------------------------------------------
>> I'd rather say that with _PR3 we have the opportunity to avoid removing
>> power completely from the device.  In other words, D3_hot is supported (and
>> it is supported _only_ in that case).
>> -----------------------------------------------------------------------
>> 
>> So I think here is a problem, that if a device has only _PS3, why should
>> we say D3hot is supported? Is there a reason for this that I missed?
> 
> OK, I agree.  We need to special case the situation in which _PR3 is not
> present, but _PS3 is.  IOW, we should do something like this in the loop in
> acpi_bus_get_power_flags():
> 
> 
>        /* State is valid if we have some power control */
>        if (ps->resources.count
>            || (ps->flags.explicit_set && i < ACPI_STATE_D3))
>            ps->flags.valid = 1;
> 

Looks good to me, thanks.

-Aaron

ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

  parent reply	other threads:[~2012-04-21  1:37 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-20  1:19 [PATCH v2] ACPI: D3 states cleanup Lin Ming
2012-04-20  2:23 ` Aaron Lu
2012-04-20  2:23   ` Aaron Lu
2012-04-20  3:19   ` Lin Ming
2012-04-20  5:23     ` Aaron Lu
2012-04-20  5:23       ` Aaron Lu
2012-04-20  5:37       ` Lin Ming
2012-04-20  7:47         ` Aaron Lu
2012-04-20  7:47           ` Aaron Lu
2012-04-20 11:12           ` Rafael J. Wysocki
2012-04-20 15:14             ` Lin Ming
2012-04-20 15:14               ` Lin Ming
2012-04-22 11:54               ` Rafael J. Wysocki
2012-04-21  1:36             ` Lu, Aaron [this message]
2012-04-21  1:36               ` Lu, Aaron

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=BF35EBA5-A9E1-47C4-A2E2-197C8FE457F5@amd.com \
    --to=aaron.lu@amd.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ming.m.lin@intel.com \
    --cc=rjw@sisk.pl \
    --cc=rui.zhang@intel.com \
    --cc=ying.huang@intel.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.