arch/x86 cbmem: Drop tests for LATE_CBMEM_INIT
Remove all cases in code where we tested for EARLY_CBMEM_INIT or LATE_CBMEM_INIT being set. This also removes all references to LATE_CBMEM_INIT in comments. Change-Id: I4e47fb5c8a947d268f4840cfb9c0d3596fb9ab39 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/c/26827 Reviewed-by: Nico Huber <nico.h@gmx.de> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
8616442150
commit
513a1a81f7
|
@ -43,7 +43,7 @@
|
|||
* in size. Therefore place them at the beginning .car.data section
|
||||
* so that multiple stages (romstage and verstage) have a consistent
|
||||
* link address of these shared objects. */
|
||||
PRERAM_CBMEM_CONSOLE(., (CONFIG_LATE_CBMEM_INIT ? 0 : CONFIG_PRERAM_CBMEM_CONSOLE_SIZE))
|
||||
PRERAM_CBMEM_CONSOLE(., CONFIG_PRERAM_CBMEM_CONSOLE_SIZE)
|
||||
#if IS_ENABLED(CONFIG_PAGING_IN_CACHE_AS_RAM)
|
||||
. = ALIGN(32);
|
||||
/* Page directory pointer table resides here. There are 4 8-byte entries
|
||||
|
|
|
@ -15,55 +15,23 @@
|
|||
#include <cbmem.h>
|
||||
#include <arch/acpi.h>
|
||||
|
||||
#if IS_ENABLED(CONFIG_LATE_CBMEM_INIT)
|
||||
|
||||
void __weak backup_top_of_low_cacheable(uintptr_t ramtop)
|
||||
{
|
||||
/* Do nothing. Chipset may have implementation to save ramtop in NVRAM.
|
||||
*/
|
||||
}
|
||||
|
||||
uintptr_t __weak restore_top_of_low_cacheable(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* LATE_CBMEM_INIT */
|
||||
|
||||
#if IS_ENABLED(CONFIG_CBMEM_TOP_BACKUP)
|
||||
|
||||
static void *cbmem_top_backup;
|
||||
|
||||
void set_late_cbmem_top(uintptr_t ramtop)
|
||||
{
|
||||
backup_top_of_low_cacheable(ramtop);
|
||||
if (ENV_RAMSTAGE)
|
||||
cbmem_top_backup = (void *)ramtop;
|
||||
}
|
||||
|
||||
/* Top of CBMEM is at highest usable DRAM address below 4GiB. */
|
||||
uintptr_t __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();
|
||||
}
|
||||
|
||||
void *cbmem_top(void)
|
||||
{
|
||||
uintptr_t top_backup;
|
||||
static void *cbmem_top_backup;
|
||||
void *top_backup;
|
||||
|
||||
if (ENV_RAMSTAGE && cbmem_top_backup != NULL)
|
||||
return cbmem_top_backup;
|
||||
|
||||
top_backup = restore_cbmem_top();
|
||||
/* Top of CBMEM is at highest usable DRAM address below 4GiB. */
|
||||
top_backup = (void *)restore_top_of_low_cacheable();
|
||||
|
||||
if (ENV_RAMSTAGE)
|
||||
cbmem_top_backup = (void *)top_backup;
|
||||
cbmem_top_backup = top_backup;
|
||||
|
||||
return (void *)top_backup;
|
||||
return top_backup;
|
||||
}
|
||||
|
||||
#endif /* CBMEM_TOP_BACKUP */
|
||||
|
|
|
@ -270,11 +270,6 @@ struct postcar_frame {
|
|||
*/
|
||||
int postcar_frame_init(struct postcar_frame *pcf, size_t stack_size);
|
||||
|
||||
/*
|
||||
* Initialize postcar_frame object with a fixed stacktop in low memory.
|
||||
*/
|
||||
void postcar_frame_init_lowmem(struct postcar_frame *pcf);
|
||||
|
||||
/*
|
||||
* Add variable MTRR covering the provided range with MTRR type.
|
||||
*/
|
||||
|
|
|
@ -60,16 +60,6 @@ int postcar_frame_init(struct postcar_frame *pcf, size_t stack_size)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* For use with LATE_CBMEM_INIT boards only, with a fixed stacktop in
|
||||
* low memory.
|
||||
*/
|
||||
void postcar_frame_init_lowmem(struct postcar_frame *pcf)
|
||||
{
|
||||
postcar_frame_prepare(pcf);
|
||||
pcf->stack = CONFIG_RAMTOP;
|
||||
}
|
||||
|
||||
void postcar_frame_add_mtrr(struct postcar_frame *pcf,
|
||||
uintptr_t addr, size_t size, int type)
|
||||
{
|
||||
|
|
|
@ -35,8 +35,7 @@ static int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
|
|||
|
||||
static inline int get_log_level(void)
|
||||
{
|
||||
if (!IS_ENABLED(CONFIG_LATE_CBMEM_INIT) &&
|
||||
car_get_var(console_inited) == 0)
|
||||
if (car_get_var(console_inited) == 0)
|
||||
return -1;
|
||||
if (CONSOLE_LEVEL_CONST)
|
||||
return get_console_loglevel();
|
||||
|
@ -79,8 +78,7 @@ asmlinkage void console_init(void)
|
|||
|
||||
console_hw_init();
|
||||
|
||||
if (!IS_ENABLED(CONFIG_LATE_CBMEM_INIT))
|
||||
car_set_var(console_inited, 1);
|
||||
car_set_var(console_inited, 1);
|
||||
|
||||
printk(BIOS_NOTICE, "\n\ncoreboot-%s%s %s " ENV_STRING " starting...\n",
|
||||
coreboot_version, coreboot_extra_version, coreboot_build);
|
||||
|
|
|
@ -156,15 +156,8 @@ void cbmem_add_records_to_cbtable(struct lb_header *header);
|
|||
* value stored in nvram to enable early recovery on S3 path.
|
||||
*/
|
||||
#if IS_ENABLED(CONFIG_ARCH_X86)
|
||||
/* Note that with LATE_CBMEM_INIT, restore_top_of_low_cacheable()
|
||||
* may conditionally return 0 when the sleep type is non S3,
|
||||
* i.e. cold and warm boots would return NULL also for cbmem_top. */
|
||||
void backup_top_of_low_cacheable(uintptr_t ramtop);
|
||||
uintptr_t restore_top_of_low_cacheable(void);
|
||||
uintptr_t restore_cbmem_top(void);
|
||||
|
||||
/* Deprecated, only use with LATE_CBMEM_INIT. */
|
||||
void set_late_cbmem_top(uintptr_t ramtop);
|
||||
#endif
|
||||
|
||||
/*
|
||||
|
|
|
@ -22,11 +22,8 @@ void cbmemc_init(void);
|
|||
void cbmemc_tx_byte(unsigned char data);
|
||||
|
||||
#define __CBMEM_CONSOLE_ENABLE__ (IS_ENABLED(CONFIG_CONSOLE_CBMEM) && \
|
||||
(ENV_RAMSTAGE || ENV_VERSTAGE || ENV_POSTCAR || \
|
||||
(IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) && \
|
||||
(ENV_ROMSTAGE || \
|
||||
(ENV_BOOTBLOCK && IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE))))\
|
||||
))
|
||||
(ENV_RAMSTAGE || ENV_VERSTAGE || ENV_POSTCAR || ENV_ROMSTAGE || \
|
||||
(ENV_BOOTBLOCK && IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE))))
|
||||
|
||||
#if __CBMEM_CONSOLE_ENABLE__
|
||||
static inline void __cbmemc_init(void) { cbmemc_init(); }
|
||||
|
|
|
@ -19,8 +19,7 @@
|
|||
|
||||
#include <commonlib/timestamp_serialized.h>
|
||||
|
||||
#if IS_ENABLED(CONFIG_COLLECT_TIMESTAMPS) && (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) \
|
||||
|| !defined(__PRE_RAM__))
|
||||
#if IS_ENABLED(CONFIG_COLLECT_TIMESTAMPS)
|
||||
/*
|
||||
* timestamp_init() needs to be called once for each of these cases:
|
||||
* 1. __PRE_RAM__ (bootblock, romstage, verstage, etc) and
|
||||
|
@ -59,8 +58,6 @@ uint32_t get_us_since_boot(void);
|
|||
|
||||
/**
|
||||
* Workaround for guard combination above.
|
||||
* Looks like CONFIG_EARLY_CBMEM_INIT selects
|
||||
* timestamp.c to be build.
|
||||
*/
|
||||
#if IS_ENABLED(CONFIG_COLLECT_TIMESTAMPS)
|
||||
/* Implemented by the architecture code */
|
||||
|
|
|
@ -43,9 +43,7 @@ bootblock-$(CONFIG_GENERIC_GPIO_LIB) += gpio.c
|
|||
bootblock-y += libgcc.c
|
||||
bootblock-$(CONFIG_GENERIC_UDELAY) += timer.c
|
||||
|
||||
ifeq ($(CONFIG_EARLY_CBMEM_INIT),y)
|
||||
bootblock-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||
endif
|
||||
|
||||
bootblock-$(CONFIG_CONSOLE_CBMEM) += cbmem_console.c
|
||||
bootblock-y += delay.c
|
||||
|
@ -97,10 +95,8 @@ ramstage-y += romstage_stack.c
|
|||
romstage-y += stack.c
|
||||
ramstage-y += rtc.c
|
||||
|
||||
ifeq ($(CONFIG_EARLY_CBMEM_INIT),y)
|
||||
romstage-$(CONFIG_COLLECT_TIMESTAMPS) += timestamp.c
|
||||
romstage-$(CONFIG_CONSOLE_CBMEM) += cbmem_console.c
|
||||
endif
|
||||
|
||||
romstage-y += compute_ip_checksum.c
|
||||
ifeq ($(CONFIG_COMPILER_GCC),y)
|
||||
|
|
|
@ -17,9 +17,6 @@
|
|||
#include <bootstate.h>
|
||||
#include <rules.h>
|
||||
#include <symbols.h>
|
||||
#if IS_ENABLED(CONFIG_ARCH_X86) && !IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
||||
#include <arch/acpi.h>
|
||||
#endif
|
||||
|
||||
void cbmem_run_init_hooks(int is_recovery)
|
||||
{
|
||||
|
@ -40,16 +37,3 @@ void cbmem_run_init_hooks(int is_recovery)
|
|||
void __weak cbmem_fail_resume(void)
|
||||
{
|
||||
}
|
||||
|
||||
#if ENV_RAMSTAGE && !IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
||||
static void init_cbmem_post_device(void *unused)
|
||||
{
|
||||
if (acpi_is_wakeup())
|
||||
cbmem_initialize();
|
||||
else
|
||||
cbmem_initialize_empty();
|
||||
}
|
||||
|
||||
BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY,
|
||||
init_cbmem_post_device, NULL);
|
||||
#endif
|
||||
|
|
|
@ -63,17 +63,13 @@ static struct cbmem_console *cbmem_console_p CAR_GLOBAL;
|
|||
#else
|
||||
|
||||
/*
|
||||
* When running from RAM, a lot of console output is generated before CBMEM is
|
||||
* When running from RAM, some console output is generated before CBMEM is
|
||||
* reinitialized. This static buffer is used to store that output temporarily,
|
||||
* to be concatenated with the CBMEM console buffer contents accumulated
|
||||
* during the ROM stage, once CBMEM becomes available at RAM stage.
|
||||
*/
|
||||
|
||||
#if IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
||||
#define STATIC_CONSOLE_SIZE 1024
|
||||
#else
|
||||
#define STATIC_CONSOLE_SIZE CONFIG_CONSOLE_CBMEM_BUFFER_SIZE
|
||||
#endif
|
||||
static u8 static_console[STATIC_CONSOLE_SIZE];
|
||||
#endif
|
||||
|
||||
|
|
|
@ -458,12 +458,10 @@ void main(void)
|
|||
post_code(POST_CONSOLE_READY);
|
||||
|
||||
/*
|
||||
* CBMEM needs to be recovered in the EARLY_CBMEM_INIT case because
|
||||
* timestamps, APCI, etc rely on the cbmem infrastructure being
|
||||
* around. Explicitly recover it.
|
||||
* CBMEM needs to be recovered because timestamps, APCI, etc rely on
|
||||
* the cbmem infrastructure being around. Explicitly recover it.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT))
|
||||
cbmem_initialize();
|
||||
cbmem_initialize();
|
||||
|
||||
/* Record current time, try to locate timestamps in CBMEM. */
|
||||
timestamp_init(timestamp_get());
|
||||
|
|
|
@ -64,7 +64,7 @@ static inline const struct imd_entry *cbmem_to_imd(const struct cbmem_entry *e)
|
|||
}
|
||||
|
||||
/* These are the different situations to handle:
|
||||
* CONFIG_EARLY_CBMEM_INIT:
|
||||
*
|
||||
* In ramstage cbmem_initialize() attempts a recovery of the
|
||||
* cbmem region set up by romstage. It uses cbmem_top() as the
|
||||
* starting point of recovery.
|
||||
|
@ -116,11 +116,8 @@ void __weak cbmem_top_init(void)
|
|||
static void cbmem_top_init_once(void)
|
||||
{
|
||||
/* Call one-time hook on expected cbmem init during boot. This sequence
|
||||
assumes first init call is in romstage for early cbmem init and
|
||||
ramstage for late cbmem init. */
|
||||
if (IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) && !ENV_ROMSTAGE)
|
||||
return;
|
||||
if (IS_ENABLED(CONFIG_LATE_CBMEM_INIT) && !ENV_RAMSTAGE)
|
||||
assumes first init call is in romstage. */
|
||||
if (!ENV_ROMSTAGE)
|
||||
return;
|
||||
|
||||
cbmem_top_init();
|
||||
|
|
|
@ -136,8 +136,7 @@ void run_ramstage(void)
|
|||
* firmware path on resume.
|
||||
*/
|
||||
if (IS_ENABLED(CONFIG_ARCH_X86) &&
|
||||
!IS_ENABLED(CONFIG_NO_STAGE_CACHE) &&
|
||||
IS_ENABLED(CONFIG_EARLY_CBMEM_INIT))
|
||||
!IS_ENABLED(CONFIG_NO_STAGE_CACHE))
|
||||
run_ramstage_from_resume(&ramstage);
|
||||
|
||||
if (prog_locate(&ramstage))
|
||||
|
|
|
@ -218,10 +218,10 @@ void timestamp_init(uint64_t base)
|
|||
return;
|
||||
}
|
||||
|
||||
/* In the EARLY_CBMEM_INIT case timestamps could have already been
|
||||
* recovered. In those circumstances honor the cache which sits in BSS
|
||||
/* Timestamps could have already been recovered.
|
||||
* In those circumstances honor the cache which sits in BSS
|
||||
* as it has already been initialized. */
|
||||
if (ENV_RAMSTAGE && IS_ENABLED(CONFIG_EARLY_CBMEM_INIT) &&
|
||||
if (ENV_RAMSTAGE &&
|
||||
ts_cache->cache_state != TIMESTAMP_CACHE_UNINITIALIZED)
|
||||
return;
|
||||
|
||||
|
@ -271,10 +271,10 @@ static void timestamp_sync_cache_to_cbmem(int is_recovery)
|
|||
|
||||
/*
|
||||
* There's no need to worry about the base_time fields being out of
|
||||
* sync because only the following configurations are used/supported:
|
||||
* sync because only the following configuration is used/supported:
|
||||
*
|
||||
* 1. Timestamps get initialized before ramstage, which implies
|
||||
* CONFIG_EARLY_CBMEM_INIT and CBMEM initialization in romstage.
|
||||
* Timestamps get initialized before ramstage, which implies
|
||||
* CBMEM initialization in romstage.
|
||||
* This requires the board to define a TIMESTAMP() region in its
|
||||
* memlayout.ld (default on x86). The base_time from timestamp_init()
|
||||
* (usually called from bootblock.c on most non-x86 boards) persists
|
||||
|
@ -283,18 +283,12 @@ static void timestamp_sync_cache_to_cbmem(int is_recovery)
|
|||
* sync, which will adjust the timestamps in there to the correct
|
||||
* base_time (from CBMEM) with the timestamp_add_table_entry() below.
|
||||
*
|
||||
* 2. Timestamps only get initialized in ramstage *and*
|
||||
* CONFIG_LATE_CBMEM_INIT is set. main() will call timestamp_init()
|
||||
* very early (before any timestamps get logged) to set a base_time
|
||||
* in the BSS cache, which will later get synced over to CBMEM.
|
||||
*
|
||||
* If you try to initialize timestamps before ramstage but don't define
|
||||
* a TIMESTAMP region, all operations will fail (safely), and coreboot
|
||||
* will behave as if timestamps only get initialized in ramstage.
|
||||
*
|
||||
* If CONFIG_EARLY_CBMEM_INIT is set but timestamps only get
|
||||
* initialized in ramstage, the base_time from timestamp_init() will
|
||||
* get ignored and all timestamps will be 0-based.
|
||||
* If timestamps only get initialized in ramstage, the base_time from
|
||||
* timestamp_init() will get ignored and all timestamps will be 0-based.
|
||||
*/
|
||||
for (i = 0; i < ts_cache_table->num_entries; i++) {
|
||||
struct timestamp_entry *tse = &ts_cache_table->entries[i];
|
||||
|
|
Loading…
Reference in New Issue