CBMEM console: Fix buffer without EARLY_CBMEM_INIT

On S3 resume, CBMEM_ID_CONSOLE from previous boot is found in ramstage,
even when romstage did not create it. So buffer did not get cleared
on S3 resume path.

Also do not allocate for preram_cbmem_console in CAR when there
are no means to back it up to ram.

Change-Id: I175cebbb938adf2a7414703fefffb8da796e9fa9
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/10301
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Tested-by: build bot (Jenkins)
This commit is contained in:
Kyösti Mälkki 2015-05-26 06:46:41 +03:00 committed by Aaron Durbin
parent e03441753c
commit 1de648e272
2 changed files with 3 additions and 6 deletions

View File

@ -65,7 +65,7 @@ SECTIONS
* statically checked because the cache-as-ram region usage is * statically checked because the cache-as-ram region usage is
* cpu/chipset dependent. */ * cpu/chipset dependent. */
_preram_cbmem_console = .; _preram_cbmem_console = .;
_epreram_cbmem_console = . + 0xc00; _epreram_cbmem_console = . + (CONFIG_LATE_CBMEM_INIT ? 0 : 0xc00);
} }
/* Global variables are not allowed in romstage /* Global variables are not allowed in romstage

View File

@ -225,11 +225,8 @@ void cbmemc_reinit(void)
/* Need to reset the newly added cbmem console in ramstage /* Need to reset the newly added cbmem console in ramstage
* when there was no console in preram environment. */ * when there was no console in preram environment. */
if (ENV_RAMSTAGE) { if (ENV_RAMSTAGE && IS_ENABLED(CONFIG_LATE_CBMEM_INIT))
cbm_cons_p = cbmem_find(CBMEM_ID_CONSOLE); flags |= CBMEMC_RESET;
if (cbm_cons_p == NULL)
flags |= CBMEMC_RESET;
}
/* If CBMEM entry already existed, old contents is not altered. */ /* If CBMEM entry already existed, old contents is not altered. */
cbm_cons_p = cbmem_add(CBMEM_ID_CONSOLE, size); cbm_cons_p = cbmem_add(CBMEM_ID_CONSOLE, size);