diff mbox

ACPI/NVS: Not save NVS region for new machines to accelerate S3

Message ID 1405662922-23606-1-git-send-email-tianyu.lan@intel.com (mailing list archive)
State Changes Requested, archived
Headers show

Commit Message

lan,Tianyu July 18, 2014, 5:55 a.m. UTC
NVS region is saved and restored unconditionally for machines without
nvs_nosave quirk during S3. Tested some new machines and the operation
is not necessary. Saving NVS region also affects S2RAM speed. The time of
NVS saving and restoring depends on the size of NVS region and it consumes
7~10ms normally.

This patch is to make machines produced from 2012 to now not saving NVS region
to accelerate S3.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 drivers/acpi/sleep.c | 5 +++++
 1 file changed, 5 insertions(+)

Comments

Chen Gong July 18, 2014, 8 a.m. UTC | #1
On Fri, Jul 18, 2014 at 01:55:22PM +0800, Lan Tianyu wrote:
> Date:	Fri, 18 Jul 2014 13:55:22 +0800
> From: Lan Tianyu <tianyu.lan@intel.com>
> To: rjw@rjwysocki.net, lenb@kernel.org
> Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
>  linux-kernel@vger.kernel.org
> Subject: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>  accelerate S3
> X-Mailer: git-send-email 1.7.9.5
> 
> NVS region is saved and restored unconditionally for machines without
> nvs_nosave quirk during S3. Tested some new machines and the operation
> is not necessary. Saving NVS region also affects S2RAM speed. The time of
> NVS saving and restoring depends on the size of NVS region and it consumes
> 7~10ms normally.
> 
> This patch is to make machines produced from 2012 to now not saving NVS region
> to accelerate S3.
> 
The year 2012 is a mandatory value in the spec?
lan,Tianyu July 21, 2014, 2:14 a.m. UTC | #2
On 2014?07?18? 16:00, Chen, Gong wrote:
> On Fri, Jul 18, 2014 at 01:55:22PM +0800, Lan Tianyu wrote:
>> Date:	Fri, 18 Jul 2014 13:55:22 +0800
>> From: Lan Tianyu <tianyu.lan@intel.com>
>> To: rjw@rjwysocki.net, lenb@kernel.org
>> Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
>>  linux-kernel@vger.kernel.org
>> Subject: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>>  accelerate S3
>> X-Mailer: git-send-email 1.7.9.5
>>
>> NVS region is saved and restored unconditionally for machines without
>> nvs_nosave quirk during S3. Tested some new machines and the operation
>> is not necessary. Saving NVS region also affects S2RAM speed. The time of
>> NVS saving and restoring depends on the size of NVS region and it consumes
>> 7~10ms normally.
>>
>> This patch is to make machines produced from 2012 to now not saving NVS region
>> to accelerate S3.
>>
> The year 2012 is a mandatory value in the spec?
> 

No, spec indicates that this is only required for S4 and commit 2a6b697
added this behavior because this can fix S3 bug on some machines. But
this isn't necessary for all machines and waster time for S3. So this
patch is to add time base quirk to change default behavior for new machines.
Chen Gong July 21, 2014, 5:01 a.m. UTC | #3
On Mon, Jul 21, 2014 at 10:14:31AM +0800, Lan Tianyu wrote:
> Date: Mon, 21 Jul 2014 10:14:31 +0800
> From: Lan Tianyu <tianyu.lan@intel.com>
> To: rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org,
>  linux-kernel@vger.kernel.org, gong.chen@linux.intel.com
> Subject: Re: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>  accelerate S3
> User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120714
>  Thunderbird/14.0
> 
> On 2014?07?18? 16:00, Chen, Gong wrote:
> > On Fri, Jul 18, 2014 at 01:55:22PM +0800, Lan Tianyu wrote:
> >> Date:	Fri, 18 Jul 2014 13:55:22 +0800
> >> From: Lan Tianyu <tianyu.lan@intel.com>
> >> To: rjw@rjwysocki.net, lenb@kernel.org
> >> Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
> >>  linux-kernel@vger.kernel.org
> >> Subject: [PATCH] ACPI/NVS: Not save NVS region for new machines to
> >>  accelerate S3
> >> X-Mailer: git-send-email 1.7.9.5
> >>
> >> NVS region is saved and restored unconditionally for machines without
> >> nvs_nosave quirk during S3. Tested some new machines and the operation
> >> is not necessary. Saving NVS region also affects S2RAM speed. The time of
> >> NVS saving and restoring depends on the size of NVS region and it consumes
> >> 7~10ms normally.
> >>
> >> This patch is to make machines produced from 2012 to now not saving NVS region
> >> to accelerate S3.
> >>
> > The year 2012 is a mandatory value in the spec?
> > 
> 
> No, spec indicates that this is only required for S4 and commit 2a6b697
> added this behavior because this can fix S3 bug on some machines. But
> this isn't necessary for all machines and waster time for S3. So this
> patch is to add time base quirk to change default behavior for new machines.
> 
If so, I don't think a hard-coded valud in the kernel is a good idea.
Why not providing a quirk via a command line parameter or module parameter.
lan,Tianyu July 21, 2014, 5:54 a.m. UTC | #4
On 2014?07?21? 13:01, Chen, Gong wrote:
> On Mon, Jul 21, 2014 at 10:14:31AM +0800, Lan Tianyu wrote:
>> Date: Mon, 21 Jul 2014 10:14:31 +0800
>> From: Lan Tianyu <tianyu.lan@intel.com>
>> To: rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org,
>>  linux-kernel@vger.kernel.org, gong.chen@linux.intel.com
>> Subject: Re: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>>  accelerate S3
>> User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120714
>>  Thunderbird/14.0
>>
>> On 2014?07?18? 16:00, Chen, Gong wrote:
>>> On Fri, Jul 18, 2014 at 01:55:22PM +0800, Lan Tianyu wrote:
>>>> Date:	Fri, 18 Jul 2014 13:55:22 +0800
>>>> From: Lan Tianyu <tianyu.lan@intel.com>
>>>> To: rjw@rjwysocki.net, lenb@kernel.org
>>>> Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
>>>>  linux-kernel@vger.kernel.org
>>>> Subject: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>>>>  accelerate S3
>>>> X-Mailer: git-send-email 1.7.9.5
>>>>
>>>> NVS region is saved and restored unconditionally for machines without
>>>> nvs_nosave quirk during S3. Tested some new machines and the operation
>>>> is not necessary. Saving NVS region also affects S2RAM speed. The time of
>>>> NVS saving and restoring depends on the size of NVS region and it consumes
>>>> 7~10ms normally.
>>>>
>>>> This patch is to make machines produced from 2012 to now not saving NVS region
>>>> to accelerate S3.
>>>>
>>> The year 2012 is a mandatory value in the spec?
>>>
>>
>> No, spec indicates that this is only required for S4 and commit 2a6b697
>> added this behavior because this can fix S3 bug on some machines. But
>> this isn't necessary for all machines and waster time for S3. So this
>> patch is to add time base quirk to change default behavior for new machines.
>>
> If so, I don't think a hard-coded valud in the kernel is a good idea.
> Why not providing a quirk via a command line parameter or module parameter.
> 

There is already a kernel command "acpi_sleep=nonvs_s3" to do that. But
this needs to be set by user. Otherwise, saving/restoring NVS region
also breaks system suspend on some machines and we have added 14
nonvs quirks in the acpisleep_dmi_table.

From the spec side, it's not necessary and the default behavior should
follow spec. For some special machines which need saving/restoring NVS
region to workaround system suspend, it should be dealt with quirk and
do it when necessary. To avoid regressions on the old machines, the
change only applies to new machines. Other side, not saving/restoring
NVS is also helpful to accelerate S3.
Chen Gong July 21, 2014, 6:25 a.m. UTC | #5
On Mon, Jul 21, 2014 at 01:54:56PM +0800, Lan Tianyu wrote:
> Date: Mon, 21 Jul 2014 13:54:56 +0800
> From: Lan Tianyu <tianyu.lan@intel.com>
> To: rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org,
>  linux-kernel@vger.kernel.org, gong.chen@linux.intel.com
> Subject: Re: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>  accelerate S3
> User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120714
>  Thunderbird/14.0
> 
> On 2014?07?21? 13:01, Chen, Gong wrote:
> > On Mon, Jul 21, 2014 at 10:14:31AM +0800, Lan Tianyu wrote:
> >> Date: Mon, 21 Jul 2014 10:14:31 +0800
> >> From: Lan Tianyu <tianyu.lan@intel.com>
> >> To: rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org,
> >>  linux-kernel@vger.kernel.org, gong.chen@linux.intel.com
> >> Subject: Re: [PATCH] ACPI/NVS: Not save NVS region for new machines to
> >>  accelerate S3
> >> User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120714
> >>  Thunderbird/14.0
> >>
> >> On 2014?07?18? 16:00, Chen, Gong wrote:
> >>> On Fri, Jul 18, 2014 at 01:55:22PM +0800, Lan Tianyu wrote:
> >>>> Date:	Fri, 18 Jul 2014 13:55:22 +0800
> >>>> From: Lan Tianyu <tianyu.lan@intel.com>
> >>>> To: rjw@rjwysocki.net, lenb@kernel.org
> >>>> Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
> >>>>  linux-kernel@vger.kernel.org
> >>>> Subject: [PATCH] ACPI/NVS: Not save NVS region for new machines to
> >>>>  accelerate S3
> >>>> X-Mailer: git-send-email 1.7.9.5
> >>>>
> >>>> NVS region is saved and restored unconditionally for machines without
> >>>> nvs_nosave quirk during S3. Tested some new machines and the operation
> >>>> is not necessary. Saving NVS region also affects S2RAM speed. The time of
> >>>> NVS saving and restoring depends on the size of NVS region and it consumes
> >>>> 7~10ms normally.
> >>>>
> >>>> This patch is to make machines produced from 2012 to now not saving NVS region
> >>>> to accelerate S3.
> >>>>
> >>> The year 2012 is a mandatory value in the spec?
> >>>
> >>
> >> No, spec indicates that this is only required for S4 and commit 2a6b697
> >> added this behavior because this can fix S3 bug on some machines. But
> >> this isn't necessary for all machines and waster time for S3. So this
> >> patch is to add time base quirk to change default behavior for new machines.
> >>
> > If so, I don't think a hard-coded valud in the kernel is a good idea.
> > Why not providing a quirk via a command line parameter or module parameter.
> > 
> 
> There is already a kernel command "acpi_sleep=nonvs_s3" to do that. But
> this needs to be set by user. Otherwise, saving/restoring NVS region
> also breaks system suspend on some machines and we have added 14
> nonvs quirks in the acpisleep_dmi_table.
> 
14 quriks! What a terrible BIOS, isn't it? It's time to cleanup so
many hacks. I'm not ACPI expert, but such yet another hack is not
acceptable from my point of view.
lan,Tianyu July 21, 2014, 7:37 a.m. UTC | #6
On 2014?07?21? 14:25, Chen, Gong wrote:
> On Mon, Jul 21, 2014 at 01:54:56PM +0800, Lan Tianyu wrote:
>> Date: Mon, 21 Jul 2014 13:54:56 +0800
>> From: Lan Tianyu <tianyu.lan@intel.com>
>> To: rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org,
>>  linux-kernel@vger.kernel.org, gong.chen@linux.intel.com
>> Subject: Re: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>>  accelerate S3
>> User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120714
>>  Thunderbird/14.0
>>
>> On 2014?07?21? 13:01, Chen, Gong wrote:
>>> On Mon, Jul 21, 2014 at 10:14:31AM +0800, Lan Tianyu wrote:
>>>> Date: Mon, 21 Jul 2014 10:14:31 +0800
>>>> From: Lan Tianyu <tianyu.lan@intel.com>
>>>> To: rjw@rjwysocki.net, lenb@kernel.org, linux-acpi@vger.kernel.org,
>>>>  linux-kernel@vger.kernel.org, gong.chen@linux.intel.com
>>>> Subject: Re: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>>>>  accelerate S3
>>>> User-Agent: Mozilla/5.0 (X11; Linux i686 on x86_64; rv:14.0) Gecko/20120714
>>>>  Thunderbird/14.0
>>>>
>>>> On 2014?07?18? 16:00, Chen, Gong wrote:
>>>>> On Fri, Jul 18, 2014 at 01:55:22PM +0800, Lan Tianyu wrote:
>>>>>> Date:	Fri, 18 Jul 2014 13:55:22 +0800
>>>>>> From: Lan Tianyu <tianyu.lan@intel.com>
>>>>>> To: rjw@rjwysocki.net, lenb@kernel.org
>>>>>> Cc: Lan Tianyu <tianyu.lan@intel.com>, linux-acpi@vger.kernel.org,
>>>>>>  linux-kernel@vger.kernel.org
>>>>>> Subject: [PATCH] ACPI/NVS: Not save NVS region for new machines to
>>>>>>  accelerate S3
>>>>>> X-Mailer: git-send-email 1.7.9.5
>>>>>>
>>>>>> NVS region is saved and restored unconditionally for machines without
>>>>>> nvs_nosave quirk during S3. Tested some new machines and the operation
>>>>>> is not necessary. Saving NVS region also affects S2RAM speed. The time of
>>>>>> NVS saving and restoring depends on the size of NVS region and it consumes
>>>>>> 7~10ms normally.
>>>>>>
>>>>>> This patch is to make machines produced from 2012 to now not saving NVS region
>>>>>> to accelerate S3.
>>>>>>
>>>>> The year 2012 is a mandatory value in the spec?
>>>>>
>>>>
>>>> No, spec indicates that this is only required for S4 and commit 2a6b697
>>>> added this behavior because this can fix S3 bug on some machines. But
>>>> this isn't necessary for all machines and waster time for S3. So this
>>>> patch is to add time base quirk to change default behavior for new machines.
>>>>
>>> If so, I don't think a hard-coded valud in the kernel is a good idea.
>>> Why not providing a quirk via a command line parameter or module parameter.
>>>
>>
>> There is already a kernel command "acpi_sleep=nonvs_s3" to do that. But
>> this needs to be set by user. Otherwise, saving/restoring NVS region
>> also breaks system suspend on some machines and we have added 14
>> nonvs quirks in the acpisleep_dmi_table.
>>
> 14 quriks! What a terrible BIOS, isn't it? It's time to cleanup so
> many hacks.

If change the default behavior for old machines, that may cause some
regressions and need to add new quirks to save/restore nvs region again.

> I'm not ACPI expert, but such yet another hack is not
> acceptable from my point of view.
>
Rafael J. Wysocki July 22, 2014, 11:40 p.m. UTC | #7
On Friday, July 18, 2014 01:55:22 PM Lan Tianyu wrote:
> NVS region is saved and restored unconditionally for machines without
> nvs_nosave quirk during S3. Tested some new machines and the operation
> is not necessary. Saving NVS region also affects S2RAM speed. The time of
> NVS saving and restoring depends on the size of NVS region and it consumes
> 7~10ms normally.
> 
> This patch is to make machines produced from 2012 to now not saving NVS region
> to accelerate S3.
> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> ---
>  drivers/acpi/sleep.c | 5 +++++
>  1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
> index b3e3cc7..896d8be 100644
> --- a/drivers/acpi/sleep.c
> +++ b/drivers/acpi/sleep.c
> @@ -322,7 +322,12 @@ static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
>  
>  static void acpi_sleep_dmi_check(void)
>  {
> +	int year;
> +
>  	dmi_check_system(acpisleep_dmi_table);
> +
> +	if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year >= 2012)
> +		acpi_nvs_nosave_s3();

I'd prefer the ordering here to be different so that individual quirks
could be used to change the date-based wholesale behavior.

>  }
>  
>  /**
>
lan,Tianyu July 23, 2014, 5:35 a.m. UTC | #8
On 2014?07?23? 07:40, Rafael J. Wysocki wrote:
> On Friday, July 18, 2014 01:55:22 PM Lan Tianyu wrote:
>> NVS region is saved and restored unconditionally for machines without
>> nvs_nosave quirk during S3. Tested some new machines and the operation
>> is not necessary. Saving NVS region also affects S2RAM speed. The time of
>> NVS saving and restoring depends on the size of NVS region and it consumes
>> 7~10ms normally.
>>
>> This patch is to make machines produced from 2012 to now not saving NVS region
>> to accelerate S3.
>>
>> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
>> ---
>>  drivers/acpi/sleep.c | 5 +++++
>>  1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
>> index b3e3cc7..896d8be 100644
>> --- a/drivers/acpi/sleep.c
>> +++ b/drivers/acpi/sleep.c
>> @@ -322,7 +322,12 @@ static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
>>  
>>  static void acpi_sleep_dmi_check(void)
>>  {
>> +	int year;
>> +
>>  	dmi_check_system(acpisleep_dmi_table);
>> +
>> +	if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year >= 2012)
>> +		acpi_nvs_nosave_s3();
> 
> I'd prefer the ordering here to be different so that individual quirks
> could be used to change the date-based wholesale behavior.

Ok. I will update soon.

> 
>>  }
>>  
>>  /**
>>
>
diff mbox

Patch

diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c
index b3e3cc7..896d8be 100644
--- a/drivers/acpi/sleep.c
+++ b/drivers/acpi/sleep.c
@@ -322,7 +322,12 @@  static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
 
 static void acpi_sleep_dmi_check(void)
 {
+	int year;
+
 	dmi_check_system(acpisleep_dmi_table);
+
+	if (dmi_get_date(DMI_BIOS_DATE, &year, NULL, NULL) && year >= 2012)
+		acpi_nvs_nosave_s3();
 }
 
 /**