diff options
author | Arthur Heymans <arthur@aheymans.xyz> | 2019-01-09 18:30:33 +0100 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2019-01-11 13:43:55 +0000 |
commit | 804adaa1f1bcd60aa038688108bae3c69a5ee157 (patch) | |
tree | 965b5820f1357c46c2c0c4a232892ce40a40c2c4 | |
parent | c6bf74ec757b4445a14179a9960d4532fd0eb479 (diff) |
arch/x86/ebda: Don't trash the EBDA on the resume path
Clearing the EBDA was introduced with b4aaaa "Prepare the BIOS data
areas before device init." which states that the purpose of setting up
these area's is just to make sure they are sane. On the S3 path doing
this is not needed and can even thrash data set up by payloads (mostly
SeaBIOS) that used that memory.
Change-Id: I9c54156bd8247e8a34dec6edc27cfc2d33cde595
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-on: https://review.coreboot.org/c/30789
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
Reviewed-by: Nico Huber <nico.h@gmx.de>
-rw-r--r-- | src/arch/x86/ebda.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/arch/x86/ebda.c b/src/arch/x86/ebda.c index f6726cf1af..5ddb1d9288 100644 --- a/src/arch/x86/ebda.c +++ b/src/arch/x86/ebda.c @@ -17,6 +17,7 @@ #include <stdint.h> #include <string.h> #include <arch/io.h> +#include <arch/acpi.h> #include <arch/ebda.h> #include <commonlib/endian.h> #include <console/console.h> @@ -104,6 +105,9 @@ void setup_ebda(u32 low_memory_size, u16 ebda_segment, u16 ebda_size) void setup_default_ebda(void) { + if (acpi_is_wakeup_s3()) + return; + setup_ebda(DEFAULT_EBDA_LOWMEM, DEFAULT_EBDA_SEGMENT, DEFAULT_EBDA_SIZE); |