linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] ACPI / LPSS: Ensure LPIOEP is always set on resume
@ 2018-09-01 17:59 William Lieurance
  2018-09-03  2:38 ` Zhang Rui
  0 siblings, 1 reply; 3+ messages in thread
From: William Lieurance @ 2018-09-01 17:59 UTC (permalink / raw)
  Cc: william.lieurance, Rafael J. Wysocki, Len Brown, linux-acpi,
	linux-kernel

For some number of systems with lpss_quirks enabled, on boot the system
goes through an acpi_lpss_resume() without a corresponding
acpi_lpss_suspend() having been called.  In that case, it requires the
IOSF write to LPSS_IOSF_UNIT_LPIOEP / LPSS_IOSF_GPIODEF0 in order to
continue booting successfully.

Signed-off-by: William Lieurance <william.lieurance@namikoda.com>
---
 drivers/acpi/acpi_lpss.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 9706613eecf9..c7790ba943d4 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -939,14 +939,14 @@ static void lpss_iosf_exit_d3_state(void)
 
 	mutex_lock(&lpss_iosf_mutex);
 
+	iosf_mbi_modify(LPSS_IOSF_UNIT_LPIOEP, MBI_CR_WRITE,
+			LPSS_IOSF_GPIODEF0, value1, mask1);
+
 	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);
-
 	iosf_mbi_modify(LPSS_IOSF_UNIT_LPIO2, MBI_CFG_WRITE,
 			LPSS_IOSF_PMCSR, value2, mask2);
 
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] ACPI / LPSS: Ensure LPIOEP is always set on resume
  2018-09-01 17:59 [PATCH] ACPI / LPSS: Ensure LPIOEP is always set on resume William Lieurance
@ 2018-09-03  2:38 ` Zhang Rui
  2018-09-04  7:17   ` [PATCH] ACPI / LPSS: Force lpss quirks on boot Zhang Rui
  0 siblings, 1 reply; 3+ messages in thread
From: Zhang Rui @ 2018-09-03  2:38 UTC (permalink / raw)
  To: William Lieurance; +Cc: Rafael J. Wysocki, Len Brown, linux-acpi, linux-kernel

Hi, William,

On 六, 2018-09-01 at 12:59 -0500, William Lieurance wrote:
> For some number of systems with lpss_quirks enabled, on boot the
> system
> goes through an acpi_lpss_resume() without a corresponding
> acpi_lpss_suspend() having been called.

I read the code but didn't find out why this could happen, but if it is
true, please check if the below patch helps

From 27fda1ab0d800966b0ec1c444fe356812bd2f04e Mon Sep 17 00:00:00 2001
From: Zhang Rui <rui.zhang@intel.com>
Date: Mon, 3 Sep 2018 10:00:07 +0800
Subject: [PATCH] ACPI / LPSS: Force lpss quirks on boot

Commit 12864ff8545f ("ACPI / LPSS: Avoid PM quirks on suspend and resume
from hibernation") bypasses lpss quirks for S3 and S4, by setting a flag
for S3/S4 in acpi_lpss_suspend(), and check that flag in
acpi_lpss_resume().

But this overlooks the boot case where acpi_lpss_resume() may get called
without a corresponding acpi_lpss_suspend() having been called.

Thus force setting the flag during boot.

Fixes: 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation)
Link: https://bugzilla.kernel.org/show_bug.cgi?id=200989
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/acpi/acpi_lpss.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 9706613..bf64cfa 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -879,7 +879,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 bool lpss_iosf_d3_entered = true;
 
 static void lpss_iosf_enter_d3_state(void)
 {
-- 
2.7.4



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH] ACPI / LPSS: Force lpss quirks on boot
  2018-09-03  2:38 ` Zhang Rui
@ 2018-09-04  7:17   ` Zhang Rui
  0 siblings, 0 replies; 3+ messages in thread
From: Zhang Rui @ 2018-09-04  7:17 UTC (permalink / raw)
  To: William Lieurance; +Cc: Rafael J. Wysocki, Len Brown, linux-acpi, linux-kernel

On 一, 2018-09-03 at 10:38 +0800, Zhang Rui wrote:
> Hi, William,
> 
> On 六, 2018-09-01 at 12:59 -0500, William Lieurance wrote:
> > 
> > For some number of systems with lpss_quirks enabled, on boot the
> > system
> > goes through an acpi_lpss_resume() without a corresponding
> > acpi_lpss_suspend() having been called.
> I read the code but didn't find out why this could happen, but if it
> is
> true, please check if the below patch helps
> 
> From 27fda1ab0d800966b0ec1c444fe356812bd2f04e Mon Sep 17 00:00:00
> 2001
> From: Zhang Rui <rui.zhang@intel.com>
> Date: Mon, 3 Sep 2018 10:00:07 +0800
> Subject: [PATCH] ACPI / LPSS: Force lpss quirks on boot
> 
> Commit 12864ff8545f ("ACPI / LPSS: Avoid PM quirks on suspend and
> resume
> from hibernation") bypasses lpss quirks for S3 and S4, by setting a
> flag
> for S3/S4 in acpi_lpss_suspend(), and check that flag in
> acpi_lpss_resume().
> 
> But this overlooks the boot case where acpi_lpss_resume() may get
> called
> without a corresponding acpi_lpss_suspend() having been called.
> 
> Thus force setting the flag during boot.
> 
> Fixes: 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and
> resume from hibernation)
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=200989
> Signed-off-by: Zhang Rui <rui.zhang@intel.com>

According to https://bugzilla.kernel.org/show_bug.cgi?id=200989#c6,
the patch has been confirmed to fix the problem.
Don't know why the patch does not show up in patchwork.
Let me resend.

From f07303f10e41c2b61d0d4da5f74e98a3bf8e7147 Mon Sep 17 00:00:00 2001
From: Zhang Rui <rui.zhang@intel.com>
Date: Mon, 3 Sep 2018 10:00:07 +0800
Subject: [PATCH] ACPI / LPSS: Force lpss quirks on boot

Commit 12864ff8545f ("ACPI / LPSS: Avoid PM quirks on suspend and resume
from hibernation") bypasses lpss quirks for S3 and S4, by setting a flag
for S3/S4 in acpi_lpss_suspend(), and check that flag in
acpi_lpss_resume().

But this overlooks the boot case where acpi_lpss_resume() may get called
without a corresponding acpi_lpss_suspend() having been called.

Thus force setting the flag during boot.

Fixes: 12864ff8545f (ACPI / LPSS: Avoid PM quirks on suspend and resume from hibernation)
Link: https://bugzilla.kernel.org/show_bug.cgi?id=200989
Reported-and-tested-by: William Lieurance <william.lieurance@namikoda.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
---
 drivers/acpi/acpi_lpss.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/acpi_lpss.c b/drivers/acpi/acpi_lpss.c
index 9706613..bf64cfa 100644
--- a/drivers/acpi/acpi_lpss.c
+++ b/drivers/acpi/acpi_lpss.c
@@ -879,7 +879,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 bool lpss_iosf_d3_entered = true;
 
 static void lpss_iosf_enter_d3_state(void)
 {
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-09-04  7:17 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-01 17:59 [PATCH] ACPI / LPSS: Ensure LPIOEP is always set on resume William Lieurance
2018-09-03  2:38 ` Zhang Rui
2018-09-04  7:17   ` [PATCH] ACPI / LPSS: Force lpss quirks on boot Zhang Rui

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).