From 2d65d2043664fc5b04a59ac1a1b18282228e1b41 Mon Sep 17 00:00:00 2001 From: Furquan Shaikh Date: Sat, 28 Oct 2017 00:09:33 -0700 Subject: arch/x86: Restore forwarding table on resume for non EARLY_EBDA_INIT In commit c06a3f72 (arch/x86: initialize EBDA in S3 and S0/S5 path), BDA and EBDA are wiped in the resume path. It results in coreboot forwarding table address being wiped out since it is stored in the BDA. This issue was resolved for platforms using EARLY_EBDA_INIT in commit f46a9a0d (arch/x86: restore forwarding table on resume for EARLY_EBDA_INIT). However platforms that do not use EARLY_EBDA_INIT still run into the same issue and hence cbmem does not work on resume. This change fixes the issue by using the stash/restore of forwarding table address for all platforms using BDA. BUG=b:68412690 TEST=Verified that cbmem works on S3 resume for coral. Change-Id: I42ae2ccb0b4ce8e989b1032d82b9bb34d0d84db0 Signed-off-by: Furquan Shaikh Reviewed-on: https://review.coreboot.org/22207 Tested-by: build bot (Jenkins) Reviewed-by: Patrick Georgi Reviewed-by: Aaron Durbin --- src/arch/x86/tables.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/arch/x86') diff --git a/src/arch/x86/tables.c b/src/arch/x86/tables.c index fc5870d9f4..057f6654d4 100644 --- a/src/arch/x86/tables.c +++ b/src/arch/x86/tables.c @@ -216,7 +216,6 @@ static void stash_forwarding_table(uintptr_t addr, size_t sz) memcpy(cbmem_addr, (void *)addr, sz); } -#if IS_ENABLED(CONFIG_EARLY_EBDA_INIT) static void restore_forwarding_table(void *dest) { const struct cbmem_entry *fwd_entry; @@ -233,7 +232,6 @@ static void restore_forwarding_table(void *dest) BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, restore_forwarding_table, (void *)FORWARDING_TABLE_ADDR); -#endif void arch_write_tables(uintptr_t coreboot_table) { @@ -256,8 +254,7 @@ void arch_write_tables(uintptr_t coreboot_table) sz = write_coreboot_forwarding_table(forwarding_table, coreboot_table); - if (IS_ENABLED(CONFIG_EARLY_EBDA_INIT)) - stash_forwarding_table(forwarding_table, sz); + stash_forwarding_table(forwarding_table, sz); forwarding_table += sz; /* Align up to page boundary for historical consistency. */ -- cgit v1.2.3