* [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).