arch/x86: Restore forwarding table on resume for non EARLY_EBDA_INIT
In commitc06a3f72
(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 commitf46a9a0d
(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 <furquan@chromium.org> Reviewed-on: https://review.coreboot.org/22207 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
504d1eff4b
commit
2d65d20436
|
@ -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. */
|
||||
|
|
Loading…
Reference in New Issue