All of lore.kernel.org
 help / color / mirror / Atom feed
* [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI S3 resume
@ 2017-10-12 12:07 Bin Meng
  2017-10-12 12:07 ` [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during " Bin Meng
  2017-10-13 11:09 ` [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI " Stefan Roese
  0 siblings, 2 replies; 6+ messages in thread
From: Bin Meng @ 2017-10-12 12:07 UTC (permalink / raw)
  To: u-boot

It was observed that when booting a Ubuntu 16.04 kernel, doing ACPI
S3 suspend/resume sometimes causes the Ubuntu kernel hang forever.
The issue is however not reproduced with a kernel built from i386/
x86_64 defconfig configuration.

The unstability is actually caused by unexpected interrupts being
generated during the S3 resume. For some unknown reason, FSP (gold4)
for BayTrail configures the GPIO DFX5 PAD to enable level interrupt
(bit 24 and 25). As this pin keeps generating interrupts during an
S3 resume, and there is no IRQ requester in the kernel to handle it,
the kernel seems to hang and does not continue resuming.

Clear the mysterious interrupt bits for this pin.

Reported-by: Stefan Roese <sr@denx.de>
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 arch/x86/cpu/baytrail/valleyview.c | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)

diff --git a/arch/x86/cpu/baytrail/valleyview.c b/arch/x86/cpu/baytrail/valleyview.c
index c58f6a8..9af1bda 100644
--- a/arch/x86/cpu/baytrail/valleyview.c
+++ b/arch/x86/cpu/baytrail/valleyview.c
@@ -10,6 +10,13 @@
 #include <asm/irq.h>
 #include <asm/mrccache.h>
 #include <asm/post.h>
+#include <asm/arch/iomap.h>
+
+/* GPIO SUS */
+#define GPIO_SUS_PAD_BASE	(IO_BASE_ADDRESS + IO_BASE_OFFSET_GPSSUS)
+#define GPIO_SUS_DFX5_CONF0	0x150
+#define BYT_TRIG_LVL		BIT(24)
+#define BYT_TRIG_POS		BIT(25)
 
 #ifndef CONFIG_EFI_APP
 int arch_cpu_init(void)
@@ -33,6 +40,21 @@ int arch_misc_init(void)
 	mrccache_save();
 #endif
 
+	/*
+	 * For some unknown reason, FSP (gold4) for BayTrail configures
+	 * the GPIO DFX5 PAD to enable level interrupt (bit 24 and 25).
+	 * This does not cause any issue when Linux kernel runs w/ or w/o
+	 * the pinctrl driver for BayTrail. However this causes unstable
+	 * S3 resume if the pinctrl driver is included in the kernel build.
+	 * As this pin keeps generating interrupts during an S3 resume,
+	 * and there is no IRQ requester in the kernel to handle it, the
+	 * kernel seems to hang and does not continue resuming.
+	 *
+	 * Clear the mysterious interrupt bits for this pin.
+	 */
+	clrbits_le32(GPIO_SUS_PAD_BASE + GPIO_SUS_DFX5_CONF0,
+		     BYT_TRIG_LVL | BYT_TRIG_POS);
+
 	return 0;
 }
 
-- 
2.7.4

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

* [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during S3 resume
  2017-10-12 12:07 [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI S3 resume Bin Meng
@ 2017-10-12 12:07 ` Bin Meng
  2017-10-13 11:09   ` Stefan Roese
  2017-10-13 11:09 ` [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI " Stefan Roese
  1 sibling, 1 reply; 6+ messages in thread
From: Bin Meng @ 2017-10-12 12:07 UTC (permalink / raw)
  To: u-boot

This is only needed when graphics console is used. For kernel with
native graphics driver, this can be turned off to speed up.

Change this option's default to n in the Kconfig.

Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
---

 arch/x86/Kconfig | 1 -
 1 file changed, 1 deletion(-)

diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 38a6187..c869ae2 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -677,7 +677,6 @@ config HAVE_ACPI_RESUME
 config S3_VGA_ROM_RUN
 	bool "Re-run VGA option ROMs on S3 resume"
 	depends on HAVE_ACPI_RESUME
-	default y if HAVE_ACPI_RESUME
 	help
 	  Execute VGA option ROMs in U-Boot when resuming from S3. Normally
 	  this is needed when graphics console is being used in the kernel.
-- 
2.7.4

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

* [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI S3 resume
  2017-10-12 12:07 [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI S3 resume Bin Meng
  2017-10-12 12:07 ` [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during " Bin Meng
@ 2017-10-13 11:09 ` Stefan Roese
  2017-10-19  3:36   ` Bin Meng
  1 sibling, 1 reply; 6+ messages in thread
From: Stefan Roese @ 2017-10-13 11:09 UTC (permalink / raw)
  To: u-boot

On 12.10.2017 14:07, Bin Meng wrote:
> It was observed that when booting a Ubuntu 16.04 kernel, doing ACPI
> S3 suspend/resume sometimes causes the Ubuntu kernel hang forever.
> The issue is however not reproduced with a kernel built from i386/
> x86_64 defconfig configuration.
> 
> The unstability is actually caused by unexpected interrupts being
> generated during the S3 resume. For some unknown reason, FSP (gold4)
> for BayTrail configures the GPIO DFX5 PAD to enable level interrupt
> (bit 24 and 25). As this pin keeps generating interrupts during an
> S3 resume, and there is no IRQ requester in the kernel to handle it,
> the kernel seems to hang and does not continue resuming.
> 
> Clear the mysterious interrupt bits for this pin.

Thanks for working on this. This must have been very tough to debug
and fix.

> Reported-by: Stefan Roese <sr@denx.de>
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>

Tested-by: Stefan Roese <sr@denx.de>
Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

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

* [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during S3 resume
  2017-10-12 12:07 ` [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during " Bin Meng
@ 2017-10-13 11:09   ` Stefan Roese
  2017-10-19  3:36     ` Bin Meng
  0 siblings, 1 reply; 6+ messages in thread
From: Stefan Roese @ 2017-10-13 11:09 UTC (permalink / raw)
  To: u-boot

On 12.10.2017 14:07, Bin Meng wrote:
> This is only needed when graphics console is used. For kernel with
> native graphics driver, this can be turned off to speed up.
> 
> Change this option's default to n in the Kconfig.
> 
> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
> ---
> 
>   arch/x86/Kconfig | 1 -
>   1 file changed, 1 deletion(-)
> 
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index 38a6187..c869ae2 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -677,7 +677,6 @@ config HAVE_ACPI_RESUME
>   config S3_VGA_ROM_RUN
>   	bool "Re-run VGA option ROMs on S3 resume"
>   	depends on HAVE_ACPI_RESUME
> -	default y if HAVE_ACPI_RESUME
>   	help
>   	  Execute VGA option ROMs in U-Boot when resuming from S3. Normally
>   	  this is needed when graphics console is being used in the kernel.
> 

Reviewed-by: Stefan Roese <sr@denx.de>

Thanks,
Stefan

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

* [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI S3 resume
  2017-10-13 11:09 ` [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI " Stefan Roese
@ 2017-10-19  3:36   ` Bin Meng
  0 siblings, 0 replies; 6+ messages in thread
From: Bin Meng @ 2017-10-19  3:36 UTC (permalink / raw)
  To: u-boot

On Fri, Oct 13, 2017 at 7:09 PM, Stefan Roese <sr@denx.de> wrote:
> On 12.10.2017 14:07, Bin Meng wrote:
>>
>> It was observed that when booting a Ubuntu 16.04 kernel, doing ACPI
>> S3 suspend/resume sometimes causes the Ubuntu kernel hang forever.
>> The issue is however not reproduced with a kernel built from i386/
>> x86_64 defconfig configuration.
>>
>> The unstability is actually caused by unexpected interrupts being
>> generated during the S3 resume. For some unknown reason, FSP (gold4)
>> for BayTrail configures the GPIO DFX5 PAD to enable level interrupt
>> (bit 24 and 25). As this pin keeps generating interrupts during an
>> S3 resume, and there is no IRQ requester in the kernel to handle it,
>> the kernel seems to hang and does not continue resuming.
>>
>> Clear the mysterious interrupt bits for this pin.
>
>
> Thanks for working on this. This must have been very tough to debug
> and fix.
>
>> Reported-by: Stefan Roese <sr@denx.de>
>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>
>
> Tested-by: Stefan Roese <sr@denx.de>
> Reviewed-by: Stefan Roese <sr@denx.de>

applied to u-boot-x86, thanks!

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

* [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during S3 resume
  2017-10-13 11:09   ` Stefan Roese
@ 2017-10-19  3:36     ` Bin Meng
  0 siblings, 0 replies; 6+ messages in thread
From: Bin Meng @ 2017-10-19  3:36 UTC (permalink / raw)
  To: u-boot

On Fri, Oct 13, 2017 at 7:09 PM, Stefan Roese <sr@denx.de> wrote:
> On 12.10.2017 14:07, Bin Meng wrote:
>>
>> This is only needed when graphics console is used. For kernel with
>> native graphics driver, this can be turned off to speed up.
>>
>> Change this option's default to n in the Kconfig.
>>
>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>> ---
>>
>>   arch/x86/Kconfig | 1 -
>>   1 file changed, 1 deletion(-)
>>
>> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
>> index 38a6187..c869ae2 100644
>> --- a/arch/x86/Kconfig
>> +++ b/arch/x86/Kconfig
>> @@ -677,7 +677,6 @@ config HAVE_ACPI_RESUME
>>   config S3_VGA_ROM_RUN
>>         bool "Re-run VGA option ROMs on S3 resume"
>>         depends on HAVE_ACPI_RESUME
>> -       default y if HAVE_ACPI_RESUME
>>         help
>>           Execute VGA option ROMs in U-Boot when resuming from S3.
>> Normally
>>           this is needed when graphics console is being used in the
>> kernel.
>>
>
> Reviewed-by: Stefan Roese <sr@denx.de>
>

applied to u-boot-x86, thanks!

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

end of thread, other threads:[~2017-10-19  3:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-10-12 12:07 [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI S3 resume Bin Meng
2017-10-12 12:07 ` [U-Boot] [PATCH 2/2] x86: Turn off running VGA ROM during " Bin Meng
2017-10-13 11:09   ` Stefan Roese
2017-10-19  3:36     ` Bin Meng
2017-10-13 11:09 ` [U-Boot] [PATCH 1/2] x86: baytrail: Fix unstable ACPI " Stefan Roese
2017-10-19  3:36   ` Bin Meng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.