ACPI: save NVS memory for Lenovo G50-45
authorZhang Rui <rui.zhang@intel.com>
Tue, 4 Apr 2017 19:32:29 +0000 (19:32 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 12 Apr 2017 10:41:21 +0000 (12:41 +0200)
[ Upstream commit cbc00c1310d34139a63946482b40a6b261a03fb9 ]

In commit 821d6f0359b0 (ACPI / sleep: Do not save NVS for new machines to
accelerate S3), to optimize S3 suspend/resume speed, code is introduced
to ignore NVS memory saving during S3 for all the platforms later than
2012.

But, Lenovo G50-45, a platform released in 2015, still needs NVS memory
saving during S3. A quirk is introduced for this platform.

Link: https://bugzilla.kernel.org/show_bug.cgi?id=189431
Tested-by: Przemek <soprwa@gmail.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
[ rjw: Drop unnecessary code ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Sasha Levin <alexander.levin@verizon.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/acpi/sleep.c

index 54abb26..a4327af 100644 (file)
@@ -130,6 +130,12 @@ void __init acpi_nvs_nosave_s3(void)
        nvs_nosave_s3 = true;
 }
 
+static int __init init_nvs_save_s3(const struct dmi_system_id *d)
+{
+       nvs_nosave_s3 = false;
+       return 0;
+}
+
 /*
  * ACPI 1.0 wants us to execute _PTS before suspending devices, so we allow the
  * user to request that behavior by using the 'acpi_old_suspend_ordering'
@@ -324,6 +330,19 @@ static struct dmi_system_id acpisleep_dmi_table[] __initdata = {
                DMI_MATCH(DMI_PRODUCT_NAME, "K54HR"),
                },
        },
+       /*
+        * https://bugzilla.kernel.org/show_bug.cgi?id=189431
+        * Lenovo G50-45 is a platform later than 2012, but needs nvs memory
+        * saving during S3.
+        */
+       {
+       .callback = init_nvs_save_s3,
+       .ident = "Lenovo G50-45",
+       .matches = {
+               DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
+               DMI_MATCH(DMI_PRODUCT_NAME, "80E3"),
+               },
+       },
        {},
 };