All of lore.kernel.org
 help / color / mirror / Atom feed
From: Bin Meng <bmeng.cn@gmail.com>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 20/22] x86: acpi: Fix Windows S3 resume failure
Date: Tue, 25 Apr 2017 09:51:02 +0800	[thread overview]
Message-ID: <CAEUhbmV0qYVXy4tA5P6KoUTsHMqSwYQ+5Ff0FFLoDTNiLQqNdw@mail.gmail.com> (raw)
In-Reply-To: <CAPnjgZ175V=qswr_+pFf4w53rT+2YR-aF0o2K3BzbyAKEeaxtg@mail.gmail.com>

Hi Simon,

On Mon, Apr 24, 2017 at 11:38 AM, Simon Glass <sjg@chromium.org> wrote:
> Hi Bin,
>
> On 21 April 2017 at 08:24, Bin Meng <bmeng.cn@gmail.com> wrote:
>> U-Boot sets up the real mode interrupt handler stubs starting from
>> address 0x1000. In most cases, the first 640K (0x00000 - 0x9ffff)
>> system memory is reported as system RAM in E820 table to the OS.
>> (see install_e820_map() implementation for each platform). So OS
>> can use these memories whatever it wants.
>>
>> If U-Boot is in an S3 resume path, care must be taken not to corrupt
>> these memorie otherwise OS data gets lost. Testing shows that, on
>> Microsoft Windows 10 on Intel Baytrail its wake up vector happens to
>> be installed at the same address 0x1000. While on Linux its wake up
>> vector does not overlap this memory range, but after resume kernel
>> checks low memory range per config option CONFIG_X86_RESERVE_LOW
>> which is 64K by default to see whether a memory corruption occurs
>> during the suspend/resume (it's harmless, but warnings are shown
>> in the kernel dmesg logs).
>>
>> We cannot simply mark the these memory as reserved in E820 table
>> because such configuration makes GRUB complain: unable to allocate
>> real mode page. Hence we choose to back up these memories to the
>> place where we reserved on our stack for our S3 resume work.
>> Before jumping to OS wake up vector, we need restore the original
>> content there.
>>
>> Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
>>
>> ---
>>
>> Changes in v2:
>> - new patch "Fix Windows S3 resume failure"
>>
>>  arch/x86/cpu/cpu.c                 |  8 +++++--
>>  arch/x86/include/asm/acpi_s3.h     | 16 +++++++++++++
>>  arch/x86/include/asm/global_data.h |  1 +
>>  arch/x86/lib/acpi_s3.c             | 48 ++++++++++++++++++++++++++++++++++++++
>>  4 files changed, 71 insertions(+), 2 deletions(-)
>
> Reviewed-by: Simon Glass <sjg@chromium.org>
>
> But can you use a #define for the 0x1000 address?
>

Will prepare another patch to change this globally.

Regards,
Bin

  reply	other threads:[~2017-04-25  1:51 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-21 14:24 [U-Boot] [PATCH v2 00/22] x86: Add ACPI S3 resume support Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 01/22] x86: acpi: Add Kconfig option and header file for ACPI resume Bin Meng
2017-04-26  7:33   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 02/22] x86: baytrail: acpi: Add APIs for determining/clearing sleep state Bin Meng
2017-04-26  7:33   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 03/22] x86: Add post codes for OS resume Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 04/22] x86: fsp: acpi: Pass different boot mode to FSP init Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 05/22] x86: Store and display previous sleep state Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 06/22] x86: baytrail: Conditionally report S3 in the ACPI table Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 07/22] x86: fsp: Mark memory used by U-Boot as reserved in the E820 table for S3 Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 08/22] x86: acpi: Add wake up assembly stub Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 09/22] x86: acpi: Add one API to find OS wakeup vector Bin Meng
2017-04-24  3:38   ` Simon Glass
2017-04-26  7:34     ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 10/22] x86: acpi: Resume OS if resume vector is found Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 11/22] x86: Add an early CMOS access library Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 12/22] x86: fsp: Save stack address to CMOS for next S3 boot Bin Meng
2017-04-26  7:34   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 13/22] x86: Do not clear high table area for S3 Bin Meng
2017-04-24  3:38   ` Simon Glass
2017-04-26  7:35     ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 14/22] x86: Adjust board_final_cleanup() order Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 15/22] x86: apci: Change PM1_CNT register access to RMW Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 16/22] x86: acpi: Make enter_acpi_mode() public Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 17/22] x86: acpi: Refactor acpi_resume() Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 18/22] x86: acpi: Turn on ACPI mode for S3 Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 19/22] x86: pci: Allow conditionally run VGA rom in S3 Bin Meng
2017-04-24  3:38   ` Simon Glass
2017-04-26  7:35     ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 20/22] x86: acpi: Fix Windows S3 resume failure Bin Meng
2017-04-24  3:38   ` Simon Glass
2017-04-25  1:51     ` Bin Meng [this message]
2017-04-26  7:35     ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 21/22] x86: minnowmax: Enable ACPI S3 resume Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-21 14:24 ` [U-Boot] [PATCH v2 22/22] x86: Document ACPI S3 support Bin Meng
2017-04-26  7:35   ` Bin Meng
2017-04-24  9:28 ` [U-Boot] [PATCH v2 00/22] x86: Add ACPI S3 resume support Stefan Roese
2017-04-25  8:02   ` Bin Meng
2017-04-25  8:51     ` Stefan Roese
2017-04-25  9:34       ` Bin Meng
2017-04-25 11:11         ` Stefan Roese
2017-04-26  4:21           ` Bin Meng
2017-04-26  5:24             ` Stefan Roese
2017-04-26  7:37               ` Bin Meng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAEUhbmV0qYVXy4tA5P6KoUTsHMqSwYQ+5Ff0FFLoDTNiLQqNdw@mail.gmail.com \
    --to=bmeng.cn@gmail.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.