summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2019-01-09 18:30:33 +0100
committerNico Huber <nico.h@gmx.de>2019-01-11 13:43:55 +0000
commit804adaa1f1bcd60aa038688108bae3c69a5ee157 (patch)
tree965b5820f1357c46c2c0c4a232892ce40a40c2c4
parentc6bf74ec757b4445a14179a9960d4532fd0eb479 (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.c4
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);