From b6a0fe59fc19301090c928661904b290ce004ad0 Mon Sep 17 00:00:00 2001 From: Kyösti Mälkki Date: Sat, 15 Jul 2017 13:03:11 +0300 Subject: AGESA boards: Fix regressions with LATE_CBMEM_INIT MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some configurations of AGESA boards fail to boot after commit 61be360 AGESA: Fix UMA calculations Implementation of cbmem_find() for ENV_ROMSTAGE expects that CBMEM has already been initialized. In the case of LATE_CBMEM_INIT boards, this is not the case and cbmem_top() returned NULL prior to the offending commmit. By definition LATE_CBMEM_INIT does not have known cbmem_top() in ENV_ROMSTAGE except for possible ACPI S3 resume path. Change-Id: Icb8f44661d479e5ad43b123600305dcbc3ce11e1 Signed-off-by: Kyösti Mälkki Reviewed-on: https://review.coreboot.org/20590 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel Reviewed-by: Martin Roth Reviewed-by: Aaron Durbin --- src/arch/x86/cbmem.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src') diff --git a/src/arch/x86/cbmem.c b/src/arch/x86/cbmem.c index 57ed83b5ca..6a353bd324 100644 --- a/src/arch/x86/cbmem.c +++ b/src/arch/x86/cbmem.c @@ -45,6 +45,10 @@ void set_late_cbmem_top(uintptr_t ramtop) /* Top of CBMEM is at highest usable DRAM address below 4GiB. */ uintptr_t __attribute__((weak)) restore_cbmem_top(void) { + if (IS_ENABLED(CONFIG_LATE_CBMEM_INIT) && ENV_ROMSTAGE) + if (!acpi_is_wakeup_s3()) + return 0; + return restore_top_of_low_cacheable(); } -- cgit v1.2.3