All of lore.kernel.org
 help / color / mirror / Atom feed
From: Prarit Bhargava <prarit@redhat.com>
To: Ocean HY1 He <hehy1@lenovo.com>, "jcm@redhat.com" <jcm@redhat.com>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	David Tanaka <dtanaka@lenovo.com>,
	Nagananda Chumbalkar <nchumbalkar@lenovo.com>,
	"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
	"lenb@kernel.org" <lenb@kernel.org>,
	"wefu@redhat.com" <wefu@redhat.com>
Subject: Re: [PATCH] ACPI: Execute the _PTS method when system reboot
Date: Tue, 31 May 2016 05:59:38 -0400	[thread overview]
Message-ID: <574D608A.1070102@redhat.com> (raw)
In-Reply-To: <BCBE834BAC19744BA2C3AC4D68DBF2198D85B47D@CNMAILEX03.lenovo.com>



On 05/29/2016 11:28 PM, Ocean HY1 He wrote:
>> -----Original Message-----
>> From: Prarit Bhargava [mailto:prarit@redhat.com]
>> Sent: Tuesday, May 24, 2016 6:16 PM
>> To: Ocean HY1 He; jcm@redhat.com
>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David Tanaka;
>> Nagananda Chumbalkar; rjw@rjwysocki.net; lenb@kernel.org;
>> wefu@redhat.com
>> Subject: Re: [PATCH] ACPI: Execute the _PTS method when system reboot
>>
>>
>>
>> On 05/24/2016 02:41 AM, Ocean HY1 He wrote:
>>> Hi Prarit and Jon,
>>>
>>> How do you think of this?
>>>
>>> Thanks.
>>>
>>> Ocean He / 何海洋
>>> SW Development Dept.
>>> Beijing Design Center
>>> Enterprise Product Group
>>> Mobile: 18911778926
>>> E-mail: hehy1@lenovo.com
>>> No.6 Chuang Ye Road, Haidian District, Beijing, China 100085
>>>
>>> -----Original Message-----
>>> From: Ocean HY1 He
>>> Sent: Monday, May 16, 2016 11:04 AM
>>> To: rjw@rjwysocki.net; lenb@kernel.org
>>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David
>> Tanaka; Nagananda Chumbalkar
>>> Subject: RE: [PATCH] ACPI: Execute the _PTS method when system
>> reboot
>>>
>>> To whom may concern,
>>>
>>> A Lenovo feature depends on _PTS method execution when reboot. And
>> after check the ACPI spec, I think _PTS should be exectued when reboo.
>> This patch could fix the problem.
>>>
>>> Any comments of this patch? Many thanks!
>>>
>>> Ocean He / 何海洋
>>> SW Development Dept.
>>> Beijing Design Center
>>> Enterprise Product Group
>>> Mobile: 18911778926
>>> E-mail: hehy1@lenovo.com
>>> No.6 Chuang Ye Road, Haidian District, Beijing, China 100085
>>>
>>> -----Original Message-----
>>> From: Ocean HY1 He
>>> Sent: Monday, May 09, 2016 1:50 PM
>>> To: rjw@rjwysocki.net; lenb@kernel.org
>>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David
>> Tanaka; Ocean HY1 He; Nagananda Chumbalkar
>>> Subject: [PATCH] ACPI: Execute the _PTS method when system reboot
>>>
>>> The _PTS control method is defined in the section 7.4.1 of acpi 6.0
>>> spec. The _PTS control method is executed by the OS during the sleep
>>> transition process for S1, S2, S3, S4, and for orderly S5 shutdown.
>>> The sleeping state value (For example, 1, 2, 3, 4 or 5 for the S5
>>> soft-off state) is passed to the _PTS control method. This method
>>> is called after OSPM has notified native device drivers of the sleep
>>> state transition and before the OSPM has had a chance to fully
>>> prepare the system for a sleep state transition.
>>>
>>> The _PTS control method provides the BIOS a mechanism for performing
>>> some housekeeping, such as writing the sleep type value to the
>> embedded
>>> controller, before entering the system sleeping state.
>>>
>>> According to section 7.5 of acpi 6.0 spec, _PTS should run after _TTS.
>>>
>>> Thus, a _PTS block notifier is added to the reboot notifier list so that
>>> the _PTS object will also be evaluated when the system reboot.
>>>
>>> Signed-off-by: Ocean He <hehy1@lenovo.com>
>>> Signed-off-by: Nagananda Chumbalkar <nchumbalkar@lenovo.com>
>>> ---
>>>  drivers/acpi/sleep.c | 27 +++++++++++++++++++++++++++
>>>  1 file changed, 27 insertions(+)
>>>
>>> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
>>> index 2a8b596..8b290fb 100644
>>> --- a/drivers/acpi/sleep.c
>>> +++ b/drivers/acpi/sleep.c
>>> @@ -55,6 +55,26 @@ static struct notifier_block tts_notifier = {
>>>  	.priority	= 0,
>>>  };
>>>
>>> +static int pts_notify_reboot(struct notifier_block *this,
>>> +			unsigned long code, void *x)
>>> +{
>>> +	acpi_status status;
>>> +
>>> +	status = acpi_execute_simple_method(NULL, "\\_PTS",
>> ACPI_STATE_S5);
>>> +	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
>>> +		/* It won't break anything. */
>>> +		printk(KERN_NOTICE "Failure in evaluating _PTS object\n");
>>
>> ^^^^
>> 	pr_debug("No _PTS object found.\n");
>>
>> It isn't a warning or error, so don't put the word "Failure" in there.
>>
>> Beyond that, looks entirely reasonable to me.
>>
>> P.
>>
> Hi Prarit,
> 
> The message outputs when _PTS is found but fail to execute. I copy this code
> from existed function acpi_sleep_tts_switch(). I just wants to keep new codes
> as the same style as existed codes. Make sense? ;-)

Not really.  "Failure" is something that QE groups look for when testing,
debugging, or verifying.  This message implies something went wrong when the
_PTS object is an optional implementation of ACPI.

P.

> 
> Ocean.
>>
>>> +	}
>>> +
>>> +	return NOTIFY_DONE;
>>> +}
>>> +
>>> +static struct notifier_block pts_notifier = {
>>> +	.notifier_call	= pts_notify_reboot,
>>> +	.next		= NULL,
>>> +	.priority	= 0,
>>> +};
>>> +
>>>  static int acpi_sleep_prepare(u32 acpi_state)
>>>  {
>>>  #ifdef CONFIG_ACPI_SLEEP
>>> @@ -896,5 +916,12 @@ int __init acpi_sleep_init(void)
>>>  	 * object can also be evaluated when the system enters S5.
>>>  	 */
>>>  	register_reboot_notifier(&tts_notifier);
>>> +
>>> +	/*
>>> +	 * According to section 7.5 of acpi 6.0 spec, _PTS should run after
>>> +	 * _TTS when the system enters S5.
>>> +	 */
>>> +	register_reboot_notifier(&pts_notifier);
>>> +
>>>  	return 0;
>>>  }
>>>
--
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: Prarit Bhargava <prarit@redhat.com>
To: Ocean HY1 He <hehy1@lenovo.com>, "jcm@redhat.com" <jcm@redhat.com>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	David Tanaka <dtanaka@lenovo.com>,
	Nagananda Chumbalkar <nchumbalkar@lenovo.com>,
	"rjw@rjwysocki.net" <rjw@rjwysocki.net>,
	"lenb@kernel.org" <lenb@kernel.org>,
	"wefu@redhat.com" <wefu@redhat.com>
Subject: Re: [PATCH] ACPI: Execute the _PTS method when system reboot
Date: Tue, 31 May 2016 05:59:38 -0400	[thread overview]
Message-ID: <574D608A.1070102@redhat.com> (raw)
In-Reply-To: <BCBE834BAC19744BA2C3AC4D68DBF2198D85B47D@CNMAILEX03.lenovo.com>



On 05/29/2016 11:28 PM, Ocean HY1 He wrote:
>> -----Original Message-----
>> From: Prarit Bhargava [mailto:prarit@redhat.com]
>> Sent: Tuesday, May 24, 2016 6:16 PM
>> To: Ocean HY1 He; jcm@redhat.com
>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David Tanaka;
>> Nagananda Chumbalkar; rjw@rjwysocki.net; lenb@kernel.org;
>> wefu@redhat.com
>> Subject: Re: [PATCH] ACPI: Execute the _PTS method when system reboot
>>
>>
>>
>> On 05/24/2016 02:41 AM, Ocean HY1 He wrote:
>>> Hi Prarit and Jon,
>>>
>>> How do you think of this?
>>>
>>> Thanks.
>>>
>>> Ocean He / 何海洋
>>> SW Development Dept.
>>> Beijing Design Center
>>> Enterprise Product Group
>>> Mobile: 18911778926
>>> E-mail: hehy1@lenovo.com
>>> No.6 Chuang Ye Road, Haidian District, Beijing, China 100085
>>>
>>> -----Original Message-----
>>> From: Ocean HY1 He
>>> Sent: Monday, May 16, 2016 11:04 AM
>>> To: rjw@rjwysocki.net; lenb@kernel.org
>>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David
>> Tanaka; Nagananda Chumbalkar
>>> Subject: RE: [PATCH] ACPI: Execute the _PTS method when system
>> reboot
>>>
>>> To whom may concern,
>>>
>>> A Lenovo feature depends on _PTS method execution when reboot. And
>> after check the ACPI spec, I think _PTS should be exectued when reboo.
>> This patch could fix the problem.
>>>
>>> Any comments of this patch? Many thanks!
>>>
>>> Ocean He / 何海洋
>>> SW Development Dept.
>>> Beijing Design Center
>>> Enterprise Product Group
>>> Mobile: 18911778926
>>> E-mail: hehy1@lenovo.com
>>> No.6 Chuang Ye Road, Haidian District, Beijing, China 100085
>>>
>>> -----Original Message-----
>>> From: Ocean HY1 He
>>> Sent: Monday, May 09, 2016 1:50 PM
>>> To: rjw@rjwysocki.net; lenb@kernel.org
>>> Cc: linux-acpi@vger.kernel.org; linux-kernel@vger.kernel.org; David
>> Tanaka; Ocean HY1 He; Nagananda Chumbalkar
>>> Subject: [PATCH] ACPI: Execute the _PTS method when system reboot
>>>
>>> The _PTS control method is defined in the section 7.4.1 of acpi 6.0
>>> spec. The _PTS control method is executed by the OS during the sleep
>>> transition process for S1, S2, S3, S4, and for orderly S5 shutdown.
>>> The sleeping state value (For example, 1, 2, 3, 4 or 5 for the S5
>>> soft-off state) is passed to the _PTS control method. This method
>>> is called after OSPM has notified native device drivers of the sleep
>>> state transition and before the OSPM has had a chance to fully
>>> prepare the system for a sleep state transition.
>>>
>>> The _PTS control method provides the BIOS a mechanism for performing
>>> some housekeeping, such as writing the sleep type value to the
>> embedded
>>> controller, before entering the system sleeping state.
>>>
>>> According to section 7.5 of acpi 6.0 spec, _PTS should run after _TTS.
>>>
>>> Thus, a _PTS block notifier is added to the reboot notifier list so that
>>> the _PTS object will also be evaluated when the system reboot.
>>>
>>> Signed-off-by: Ocean He <hehy1@lenovo.com>
>>> Signed-off-by: Nagananda Chumbalkar <nchumbalkar@lenovo.com>
>>> ---
>>>  drivers/acpi/sleep.c | 27 +++++++++++++++++++++++++++
>>>  1 file changed, 27 insertions(+)
>>>
>>> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
>>> index 2a8b596..8b290fb 100644
>>> --- a/drivers/acpi/sleep.c
>>> +++ b/drivers/acpi/sleep.c
>>> @@ -55,6 +55,26 @@ static struct notifier_block tts_notifier = {
>>>  	.priority	= 0,
>>>  };
>>>
>>> +static int pts_notify_reboot(struct notifier_block *this,
>>> +			unsigned long code, void *x)
>>> +{
>>> +	acpi_status status;
>>> +
>>> +	status = acpi_execute_simple_method(NULL, "\\_PTS",
>> ACPI_STATE_S5);
>>> +	if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
>>> +		/* It won't break anything. */
>>> +		printk(KERN_NOTICE "Failure in evaluating _PTS object\n");
>>
>> ^^^^
>> 	pr_debug("No _PTS object found.\n");
>>
>> It isn't a warning or error, so don't put the word "Failure" in there.
>>
>> Beyond that, looks entirely reasonable to me.
>>
>> P.
>>
> Hi Prarit,
> 
> The message outputs when _PTS is found but fail to execute. I copy this code
> from existed function acpi_sleep_tts_switch(). I just wants to keep new codes
> as the same style as existed codes. Make sense? ;-)

Not really.  "Failure" is something that QE groups look for when testing,
debugging, or verifying.  This message implies something went wrong when the
_PTS object is an optional implementation of ACPI.

P.

> 
> Ocean.
>>
>>> +	}
>>> +
>>> +	return NOTIFY_DONE;
>>> +}
>>> +
>>> +static struct notifier_block pts_notifier = {
>>> +	.notifier_call	= pts_notify_reboot,
>>> +	.next		= NULL,
>>> +	.priority	= 0,
>>> +};
>>> +
>>>  static int acpi_sleep_prepare(u32 acpi_state)
>>>  {
>>>  #ifdef CONFIG_ACPI_SLEEP
>>> @@ -896,5 +916,12 @@ int __init acpi_sleep_init(void)
>>>  	 * object can also be evaluated when the system enters S5.
>>>  	 */
>>>  	register_reboot_notifier(&tts_notifier);
>>> +
>>> +	/*
>>> +	 * According to section 7.5 of acpi 6.0 spec, _PTS should run after
>>> +	 * _TTS when the system enters S5.
>>> +	 */
>>> +	register_reboot_notifier(&pts_notifier);
>>> +
>>>  	return 0;
>>>  }
>>>

  reply	other threads:[~2016-05-31  9:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-09  5:50 [PATCH] ACPI: Execute the _PTS method when system reboot Ocean HY1 He
2016-05-16  3:04 ` Ocean HY1 He
2016-05-24  6:41 ` Ocean HY1 He
2016-05-24 10:15   ` Prarit Bhargava
2016-05-24 10:15     ` Prarit Bhargava
2016-05-30  3:28     ` Ocean HY1 He
2016-05-31  9:59       ` Prarit Bhargava [this message]
2016-05-31  9:59         ` Prarit Bhargava
2016-06-21 23:56 ` Rafael J. Wysocki
2016-06-23 12:55   ` Ocean HY1 He
2016-06-23 13:12     ` Rafael J. Wysocki
2016-06-24  2:59       ` Ocean HY1 He
2016-06-24 12:36         ` Rafael J. Wysocki
2016-06-24  0:30     ` Zheng, Lv
2016-06-24  2:06       ` Ocean HY1 He

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=574D608A.1070102@redhat.com \
    --to=prarit@redhat.com \
    --cc=dtanaka@lenovo.com \
    --cc=hehy1@lenovo.com \
    --cc=jcm@redhat.com \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nchumbalkar@lenovo.com \
    --cc=rjw@rjwysocki.net \
    --cc=wefu@redhat.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.