[SRU] [Bionic/Cosmic] [PATCH 0/2] Fix regression on acpi-lpss

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

[SRU] [Bionic/Cosmic] [PATCH 0/2] Fix regression on acpi-lpss

Kai-Heng Feng
BugLink: https://bugs.launchpad.net/bugs/1774950

[Impact]
Systems with acpi-lpss can't do S3/S4 on Bionic.

[Test]
Users confirmed these patches work for them.

[Fix]
Commit a192aa923b66a (ACPI / LPSS: Consolidate runtime PM and system
sleep handling) applies quirks for both runtime and system suspend.
This causes problems for some systems, so avoid using quirks on S3 and
S4.

[Regression Potential]
Low. These patches are in upstream stable, and it brings back driver's
old behavior.

Rafael J. Wysocki (2):
  ACPI / LPSS: Avoid PM quirks on suspend and resume from S3
  ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation

 drivers/acpi/acpi_lpss.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[PATCH 1/2] ACPI / LPSS: Avoid PM quirks on suspend and resume from S3

Kai-Heng Feng
From: "Rafael J. Wysocki" <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1774950

It is reported that commit a192aa923b66a (ACPI / LPSS: Consolidate
runtime PM and system sleep handling) introduced a system suspend
regression on some machines, but the only functional change made by
it was to cause the PM quirks in the LPSS to also be used during
system suspend and resume.  While that should always work for
suspend-to-idle, it turns out to be problematic for S3
(suspend-to-RAM).

To address that issue restore the previous S3 suspend and resume
behavior of the LPSS to avoid applying PM quirks then.

Fixes: a192aa923b66a (ACPI / LPSS: Consolidate runtime PM and system sleep handling)
Link: https://bugs.launchpad.net/bugs/1774950
Reported-by: Kai-Heng Feng <[hidden email]>
Tested-by: Kai-Heng Feng <[hidden email]>
Signed-off-by: Rafael J. Wysocki <[hidden email]>
Reviewed-by: Ulf Hansson <[hidden email]>
Reviewed-by: Andy Shevchenko <[hidden email]>
Acked-by: Mika Westerberg <[hidden email]>
Cc: 4.15+ <[hidden email]> # 4.15+
(cherry picked from commit a09c591306881dfb04387c6ee7b7e2e4683fa531)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/acpi/acpi_lpss.c | 18 +++++++++++-------
 1 file changed, 11 insertions(+), 7 deletions(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index c71f5a2a592e..35dd15fce2fa 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -22,6 +22,7 @@
 #include <linux/pm_domain.h>
 #include <linux/pm_runtime.h>
 #include <linux/pwm.h>
+#include <linux/suspend.h>
 #include <linux/delay.h>
 
 #include "internal.h"
@@ -803,9 +804,10 @@ static void lpss_iosf_exit_d3_state(void)
  mutex_unlock(&lpss_iosf_mutex);
 }
 
-static int acpi_lpss_suspend(struct device *dev, bool wakeup)
+static int acpi_lpss_suspend(struct device *dev, bool runtime)
 {
  struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
+ bool wakeup = runtime || device_may_wakeup(dev);
  int ret;
 
  if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
@@ -818,13 +820,14 @@ static int acpi_lpss_suspend(struct device *dev, bool wakeup)
  * wrong status for devices being about to be powered off. See
  * lpss_iosf_enter_d3_state() for further information.
  */
- if (lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
+ if ((runtime || !pm_suspend_via_firmware()) &&
+    lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
  lpss_iosf_enter_d3_state();
 
  return ret;
 }
 
-static int acpi_lpss_resume(struct device *dev)
+static int acpi_lpss_resume(struct device *dev, bool runtime)
 {
  struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
  int ret;
@@ -833,7 +836,8 @@ static int acpi_lpss_resume(struct device *dev)
  * This call is kept first to be in symmetry with
  * acpi_lpss_runtime_suspend() one.
  */
- if (lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
+ if ((runtime || !pm_resume_via_firmware()) &&
+    lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
  lpss_iosf_exit_d3_state();
 
  ret = acpi_dev_resume(dev);
@@ -857,12 +861,12 @@ static int acpi_lpss_suspend_late(struct device *dev)
  return 0;
 
  ret = pm_generic_suspend_late(dev);
- return ret ? ret : acpi_lpss_suspend(dev, device_may_wakeup(dev));
+ return ret ? ret : acpi_lpss_suspend(dev, false);
 }
 
 static int acpi_lpss_resume_early(struct device *dev)
 {
- int ret = acpi_lpss_resume(dev);
+ int ret = acpi_lpss_resume(dev, false);
 
  return ret ? ret : pm_generic_resume_early(dev);
 }
@@ -877,7 +881,7 @@ static int acpi_lpss_runtime_suspend(struct device *dev)
 
 static int acpi_lpss_runtime_resume(struct device *dev)
 {
- int ret = acpi_lpss_resume(dev);
+ int ret = acpi_lpss_resume(dev, true);
 
  return ret ? ret : pm_generic_runtime_resume(dev);
 }
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

[PATCH 2/2] ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation

Kai-Heng Feng
In reply to this post by Kai-Heng Feng
From: "Rafael J. Wysocki" <[hidden email]>

BugLink: https://bugs.launchpad.net/bugs/1774950

Commit a09c59130688 (ACPI / LPSS: Avoid PM quirks on suspend and
resume from S3) modified the ACPI driver for Intel SoCs (LPSS) to
avoid applying PM quirks on suspend and resume from S3 to address
system-wide suspend and resume problems on some systems, but it is
reported that the same issue also affects hibernation, so extend
the approach used by that commit to cover hibernation as well.

Fixes: a09c59130688 (ACPI / LPSS: Avoid PM quirks on suspend and resume from S3)
Link: https://bugs.launchpad.net/bugs/1774950
Reported-by: Kai-Heng Feng <[hidden email]>
Cc: 4.15+ <[hidden email]> # 4.15+
Signed-off-by: Rafael J. Wysocki <[hidden email]>
Reviewed-by: Mika Westerberg <[hidden email]>
(cherry picked from commit 12864ff8545f6b8144fdf1bb89b5663357f29ec4)
Signed-off-by: Kai-Heng Feng <[hidden email]>
---
 drivers/acpi/acpi_lpss.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 35dd15fce2fa..8e37c2317e27 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -736,6 +736,7 @@ static void acpi_lpss_dismiss(struct device *dev)
 #define LPSS_GPIODEF0_DMA_LLP BIT(13)
 
 static DEFINE_MUTEX(lpss_iosf_mutex);
+static bool lpss_iosf_d3_entered;
 
 static void lpss_iosf_enter_d3_state(void)
 {
@@ -778,6 +779,9 @@ static void lpss_iosf_enter_d3_state(void)
 
  iosf_mbi_modify(LPSS_IOSF_UNIT_LPIOEP, MBI_CR_WRITE,
  LPSS_IOSF_GPIODEF0, value1, mask1);
+
+ lpss_iosf_d3_entered = true;
+
 exit:
  mutex_unlock(&lpss_iosf_mutex);
 }
@@ -792,6 +796,11 @@ static void lpss_iosf_exit_d3_state(void)
 
  mutex_lock(&lpss_iosf_mutex);
 
+ if (!lpss_iosf_d3_entered)
+ goto exit;
+
+ lpss_iosf_d3_entered = false;
+
  iosf_mbi_modify(LPSS_IOSF_UNIT_LPIOEP, MBI_CR_WRITE,
  LPSS_IOSF_GPIODEF0, value1, mask1);
 
@@ -801,13 +810,13 @@ static void lpss_iosf_exit_d3_state(void)
  iosf_mbi_modify(LPSS_IOSF_UNIT_LPIO1, MBI_CFG_WRITE,
  LPSS_IOSF_PMCSR, value2, mask2);
 
+exit:
  mutex_unlock(&lpss_iosf_mutex);
 }
 
-static int acpi_lpss_suspend(struct device *dev, bool runtime)
+static int acpi_lpss_suspend(struct device *dev, bool wakeup)
 {
  struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
- bool wakeup = runtime || device_may_wakeup(dev);
  int ret;
 
  if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
@@ -820,14 +829,14 @@ static int acpi_lpss_suspend(struct device *dev, bool runtime)
  * wrong status for devices being about to be powered off. See
  * lpss_iosf_enter_d3_state() for further information.
  */
- if ((runtime || !pm_suspend_via_firmware()) &&
+ if (acpi_target_system_state() == ACPI_STATE_S0 &&
     lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
  lpss_iosf_enter_d3_state();
 
  return ret;
 }
 
-static int acpi_lpss_resume(struct device *dev, bool runtime)
+static int acpi_lpss_resume(struct device *dev)
 {
  struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
  int ret;
@@ -836,8 +845,7 @@ static int acpi_lpss_resume(struct device *dev, bool runtime)
  * This call is kept first to be in symmetry with
  * acpi_lpss_runtime_suspend() one.
  */
- if ((runtime || !pm_resume_via_firmware()) &&
-    lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
+ if (lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
  lpss_iosf_exit_d3_state();
 
  ret = acpi_dev_resume(dev);
@@ -861,12 +869,12 @@ static int acpi_lpss_suspend_late(struct device *dev)
  return 0;
 
  ret = pm_generic_suspend_late(dev);
- return ret ? ret : acpi_lpss_suspend(dev, false);
+ return ret ? ret : acpi_lpss_suspend(dev, device_may_wakeup(dev));
 }
 
 static int acpi_lpss_resume_early(struct device *dev)
 {
- int ret = acpi_lpss_resume(dev, false);
+ int ret = acpi_lpss_resume(dev);
 
  return ret ? ret : pm_generic_resume_early(dev);
 }
@@ -881,7 +889,7 @@ static int acpi_lpss_runtime_suspend(struct device *dev)
 
 static int acpi_lpss_runtime_resume(struct device *dev)
 {
- int ret = acpi_lpss_resume(dev, true);
+ int ret = acpi_lpss_resume(dev);
 
  return ret ? ret : pm_generic_runtime_resume(dev);
 }
--
2.17.1


--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [PATCH 1/2] ACPI / LPSS: Avoid PM quirks on suspend and resume from S3

Colin King
In reply to this post by Kai-Heng Feng
On 01/08/18 09:17, Kai-Heng Feng wrote:

> From: "Rafael J. Wysocki" <[hidden email]>
>
> BugLink: https://bugs.launchpad.net/bugs/1774950
>
> It is reported that commit a192aa923b66a (ACPI / LPSS: Consolidate
> runtime PM and system sleep handling) introduced a system suspend
> regression on some machines, but the only functional change made by
> it was to cause the PM quirks in the LPSS to also be used during
> system suspend and resume.  While that should always work for
> suspend-to-idle, it turns out to be problematic for S3
> (suspend-to-RAM).
>
> To address that issue restore the previous S3 suspend and resume
> behavior of the LPSS to avoid applying PM quirks then.
>
> Fixes: a192aa923b66a (ACPI / LPSS: Consolidate runtime PM and system sleep handling)
> Link: https://bugs.launchpad.net/bugs/1774950
> Reported-by: Kai-Heng Feng <[hidden email]>
> Tested-by: Kai-Heng Feng <[hidden email]>
> Signed-off-by: Rafael J. Wysocki <[hidden email]>
> Reviewed-by: Ulf Hansson <[hidden email]>
> Reviewed-by: Andy Shevchenko <[hidden email]>
> Acked-by: Mika Westerberg <[hidden email]>
> Cc: 4.15+ <[hidden email]> # 4.15+
> (cherry picked from commit a09c591306881dfb04387c6ee7b7e2e4683fa531)
> Signed-off-by: Kai-Heng Feng <[hidden email]>
> ---
>  drivers/acpi/acpi_lpss.c | 18 +++++++++++-------
>  1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index c71f5a2a592e..35dd15fce2fa 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -22,6 +22,7 @@
>  #include <linux/pm_domain.h>
>  #include <linux/pm_runtime.h>
>  #include <linux/pwm.h>
> +#include <linux/suspend.h>
>  #include <linux/delay.h>
>  
>  #include "internal.h"
> @@ -803,9 +804,10 @@ static void lpss_iosf_exit_d3_state(void)
>   mutex_unlock(&lpss_iosf_mutex);
>  }
>  
> -static int acpi_lpss_suspend(struct device *dev, bool wakeup)
> +static int acpi_lpss_suspend(struct device *dev, bool runtime)
>  {
>   struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
> + bool wakeup = runtime || device_may_wakeup(dev);
>   int ret;
>  
>   if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
> @@ -818,13 +820,14 @@ static int acpi_lpss_suspend(struct device *dev, bool wakeup)
>   * wrong status for devices being about to be powered off. See
>   * lpss_iosf_enter_d3_state() for further information.
>   */
> - if (lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
> + if ((runtime || !pm_suspend_via_firmware()) &&
> +    lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
>   lpss_iosf_enter_d3_state();
>  
>   return ret;
>  }
>  
> -static int acpi_lpss_resume(struct device *dev)
> +static int acpi_lpss_resume(struct device *dev, bool runtime)
>  {
>   struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
>   int ret;
> @@ -833,7 +836,8 @@ static int acpi_lpss_resume(struct device *dev)
>   * This call is kept first to be in symmetry with
>   * acpi_lpss_runtime_suspend() one.
>   */
> - if (lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
> + if ((runtime || !pm_resume_via_firmware()) &&
> +    lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
>   lpss_iosf_exit_d3_state();
>  
>   ret = acpi_dev_resume(dev);
> @@ -857,12 +861,12 @@ static int acpi_lpss_suspend_late(struct device *dev)
>   return 0;
>  
>   ret = pm_generic_suspend_late(dev);
> - return ret ? ret : acpi_lpss_suspend(dev, device_may_wakeup(dev));
> + return ret ? ret : acpi_lpss_suspend(dev, false);
>  }
>  
>  static int acpi_lpss_resume_early(struct device *dev)
>  {
> - int ret = acpi_lpss_resume(dev);
> + int ret = acpi_lpss_resume(dev, false);
>  
>   return ret ? ret : pm_generic_resume_early(dev);
>  }
> @@ -877,7 +881,7 @@ static int acpi_lpss_runtime_suspend(struct device *dev)
>  
>  static int acpi_lpss_runtime_resume(struct device *dev)
>  {
> - int ret = acpi_lpss_resume(dev);
> + int ret = acpi_lpss_resume(dev, true);
>  
>   return ret ? ret : pm_generic_runtime_resume(dev);
>  }
>

Positive test results, and clean upstream cherry pick,

Acked-by: Colin Ian King <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK: [PATCH 2/2] ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation

Colin King
In reply to this post by Kai-Heng Feng
On 01/08/18 09:17, Kai-Heng Feng wrote:

> From: "Rafael J. Wysocki" <[hidden email]>
>
> BugLink: https://bugs.launchpad.net/bugs/1774950
>
> Commit a09c59130688 (ACPI / LPSS: Avoid PM quirks on suspend and
> resume from S3) modified the ACPI driver for Intel SoCs (LPSS) to
> avoid applying PM quirks on suspend and resume from S3 to address
> system-wide suspend and resume problems on some systems, but it is
> reported that the same issue also affects hibernation, so extend
> the approach used by that commit to cover hibernation as well.
>
> Fixes: a09c59130688 (ACPI / LPSS: Avoid PM quirks on suspend and resume from S3)
> Link: https://bugs.launchpad.net/bugs/1774950
> Reported-by: Kai-Heng Feng <[hidden email]>
> Cc: 4.15+ <[hidden email]> # 4.15+
> Signed-off-by: Rafael J. Wysocki <[hidden email]>
> Reviewed-by: Mika Westerberg <[hidden email]>
> (cherry picked from commit 12864ff8545f6b8144fdf1bb89b5663357f29ec4)
> Signed-off-by: Kai-Heng Feng <[hidden email]>
> ---
>  drivers/acpi/acpi_lpss.c | 26 +++++++++++++++++---------
>  1 file changed, 17 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
> index 35dd15fce2fa..8e37c2317e27 100644
> --- a/drivers/acpi/acpi_lpss.c
> +++ b/drivers/acpi/acpi_lpss.c
> @@ -736,6 +736,7 @@ static void acpi_lpss_dismiss(struct device *dev)
>  #define LPSS_GPIODEF0_DMA_LLP BIT(13)
>  
>  static DEFINE_MUTEX(lpss_iosf_mutex);
> +static bool lpss_iosf_d3_entered;
>  
>  static void lpss_iosf_enter_d3_state(void)
>  {
> @@ -778,6 +779,9 @@ static void lpss_iosf_enter_d3_state(void)
>  
>   iosf_mbi_modify(LPSS_IOSF_UNIT_LPIOEP, MBI_CR_WRITE,
>   LPSS_IOSF_GPIODEF0, value1, mask1);
> +
> + lpss_iosf_d3_entered = true;
> +
>  exit:
>   mutex_unlock(&lpss_iosf_mutex);
>  }
> @@ -792,6 +796,11 @@ static void lpss_iosf_exit_d3_state(void)
>  
>   mutex_lock(&lpss_iosf_mutex);
>  
> + if (!lpss_iosf_d3_entered)
> + goto exit;
> +
> + lpss_iosf_d3_entered = false;
> +
>   iosf_mbi_modify(LPSS_IOSF_UNIT_LPIOEP, MBI_CR_WRITE,
>   LPSS_IOSF_GPIODEF0, value1, mask1);
>  
> @@ -801,13 +810,13 @@ static void lpss_iosf_exit_d3_state(void)
>   iosf_mbi_modify(LPSS_IOSF_UNIT_LPIO1, MBI_CFG_WRITE,
>   LPSS_IOSF_PMCSR, value2, mask2);
>  
> +exit:
>   mutex_unlock(&lpss_iosf_mutex);
>  }
>  
> -static int acpi_lpss_suspend(struct device *dev, bool runtime)
> +static int acpi_lpss_suspend(struct device *dev, bool wakeup)
>  {
>   struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
> - bool wakeup = runtime || device_may_wakeup(dev);
>   int ret;
>  
>   if (pdata->dev_desc->flags & LPSS_SAVE_CTX)
> @@ -820,14 +829,14 @@ static int acpi_lpss_suspend(struct device *dev, bool runtime)
>   * wrong status for devices being about to be powered off. See
>   * lpss_iosf_enter_d3_state() for further information.
>   */
> - if ((runtime || !pm_suspend_via_firmware()) &&
> + if (acpi_target_system_state() == ACPI_STATE_S0 &&
>      lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
>   lpss_iosf_enter_d3_state();
>  
>   return ret;
>  }
>  
> -static int acpi_lpss_resume(struct device *dev, bool runtime)
> +static int acpi_lpss_resume(struct device *dev)
>  {
>   struct lpss_private_data *pdata = acpi_driver_data(ACPI_COMPANION(dev));
>   int ret;
> @@ -836,8 +845,7 @@ static int acpi_lpss_resume(struct device *dev, bool runtime)
>   * This call is kept first to be in symmetry with
>   * acpi_lpss_runtime_suspend() one.
>   */
> - if ((runtime || !pm_resume_via_firmware()) &&
> -    lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
> + if (lpss_quirks & LPSS_QUIRK_ALWAYS_POWER_ON && iosf_mbi_available())
>   lpss_iosf_exit_d3_state();
>  
>   ret = acpi_dev_resume(dev);
> @@ -861,12 +869,12 @@ static int acpi_lpss_suspend_late(struct device *dev)
>   return 0;
>  
>   ret = pm_generic_suspend_late(dev);
> - return ret ? ret : acpi_lpss_suspend(dev, false);
> + return ret ? ret : acpi_lpss_suspend(dev, device_may_wakeup(dev));
>  }
>  
>  static int acpi_lpss_resume_early(struct device *dev)
>  {
> - int ret = acpi_lpss_resume(dev, false);
> + int ret = acpi_lpss_resume(dev);
>  
>   return ret ? ret : pm_generic_resume_early(dev);
>  }
> @@ -881,7 +889,7 @@ static int acpi_lpss_runtime_suspend(struct device *dev)
>  
>  static int acpi_lpss_runtime_resume(struct device *dev)
>  {
> - int ret = acpi_lpss_resume(dev, true);
> + int ret = acpi_lpss_resume(dev);
>  
>   return ret ? ret : pm_generic_runtime_resume(dev);
>  }
>

Positive test results, and clean upstream cherry pick,

Acked-by: Colin Ian King <[hidden email]>

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team
Reply | Threaded
Open this post in threaded view
|

ACK/APPLIED[C/Unstable]: [SRU] [Bionic/Cosmic] [PATCH 0/2] Fix regression on acpi-lpss

Seth Forshee
In reply to this post by Kai-Heng Feng
On Wed, Aug 01, 2018 at 04:17:40PM +0800, Kai-Heng Feng wrote:

> BugLink: https://bugs.launchpad.net/bugs/1774950
>
> [Impact]
> Systems with acpi-lpss can't do S3/S4 on Bionic.
>
> [Test]
> Users confirmed these patches work for them.
>
> [Fix]
> Commit a192aa923b66a (ACPI / LPSS: Consolidate runtime PM and system
> sleep handling) applies quirks for both runtime and system suspend.
> This causes problems for some systems, so avoid using quirks on S3 and
> S4.
>
> [Regression Potential]
> Low. These patches are in upstream stable, and it brings back driver's
> old behavior.

Clean cherry picks, positive testing.

Acked-by: Seth Forshee <[hidden email]>

Patch 1 already made it to cosmic via upstream stable. Applied patch 2
to cosmic/master-next and unstable/master, thanks!

--
kernel-team mailing list
[hidden email]
https://lists.ubuntu.com/mailman/listinfo/kernel-team