summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2012-01-18 10:05:18 -0800
committerStefan Reinauer <stefan.reinauer@coreboot.org>2012-03-30 17:52:11 +0200
commit67e6c2aaf4d4194dac824014197cc684af9750f5 (patch)
tree296b63385c53e83dbcff34f0f80aaf59a2685b68 /src
parentb4aaaa7632116c2fe466095d0cd3cc1247344ca6 (diff)
Don't re-init EBDA in S3 resume path.
I forgot to implement this the first time around. It does not seem to cause noticeable problems but in heavy suspend/resume testing I saw a suspicious crash in the kernel when trying to bring one of the CPUs back online. Change-Id: I950ac260f251e2683693d9bd20a0dd5e041aa26e Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: http://review.coreboot.org/770 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/arch/x86/lib/ebda.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/arch/x86/lib/ebda.c b/src/arch/x86/lib/ebda.c
index faf1451a2f..fb407b6ac8 100644
--- a/src/arch/x86/lib/ebda.c
+++ b/src/arch/x86/lib/ebda.c
@@ -23,9 +23,18 @@
#include <string.h>
#include <arch/io.h>
#include <arch/ebda.h>
+#if CONFIG_HAVE_ACPI_RESUME
+#include <arch/acpi.h>
+#endif
void setup_ebda(u32 low_memory_size, u16 ebda_segment, u16 ebda_size)
{
+#if CONFIG_HAVE_ACPI_RESUME
+ /* Skip in S3 resume path */
+ if (acpi_slp_type == 3)
+ return;
+#endif
+
if (!low_memory_size || !ebda_segment || !ebda_size)
return;