From bc17cdef0d3370f10f43ef45272399e3103eb01b Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Fri, 7 Apr 2017 15:20:14 -0500 Subject: arch/x86: remove CAR global migration when postcar stage is used MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a platform is using postcar stage it's by definition not tearing down cache-as-ram from within romstage prior to loading ramstage. Because of this property there's no need to migrate CAR_GLOBAL variables to cbmem. Change-Id: I7c683e1937c3397cbbba15f0f5d4be9e624ac27f Signed-off-by: Aaron Durbin Reviewed-on: https://review.coreboot.org/19215 Reviewed-by: Paul Menzel Tested-by: build bot (Jenkins) Tested-by: Raptor Engineering Automated Test Stand Reviewed-by: Furquan Shaikh Reviewed-by: Kyösti Mälkki --- src/arch/x86/Kconfig | 1 + src/arch/x86/include/arch/early_variables.h | 2 +- src/cpu/Kconfig | 9 +++++++++ src/cpu/x86/Makefile.inc | 2 ++ 4 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig index c153a74388..0c8b97d2f3 100644 --- a/src/arch/x86/Kconfig +++ b/src/arch/x86/Kconfig @@ -200,6 +200,7 @@ config VERSTAGE_ADDR # from a program loaded in RAM and subsequently loading ramstage. config POSTCAR_STAGE def_bool n + select NO_CAR_GLOBAL_MIGRATION config VERSTAGE_DEBUG_SPINLOOP bool diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h index a21781996e..d0cfda75aa 100644 --- a/src/arch/x86/include/arch/early_variables.h +++ b/src/arch/x86/include/arch/early_variables.h @@ -34,7 +34,7 @@ asm(".previous"); * accessed unconditionally because cbmem is never initialized until romstage * when dram comes up. */ -#if ENV_VERSTAGE || ENV_BOOTBLOCK +#if ENV_VERSTAGE || ENV_BOOTBLOCK || IS_ENABLED(CONFIG_NO_CAR_GLOBAL_MIGRATION) static inline void *car_get_var_ptr(void *var) { return var; diff --git a/src/cpu/Kconfig b/src/cpu/Kconfig index 009d80cac1..915526b2dc 100644 --- a/src/cpu/Kconfig +++ b/src/cpu/Kconfig @@ -10,6 +10,15 @@ config CACHE_AS_RAM bool default !ROMCC +config NO_CAR_GLOBAL_MIGRATION + bool + default n + depends on CACHE_AS_RAM + help + This option is selected if there is no need to migrate CAR globals. + All stages which use CAR globals can directly access the variables + from their linked addresses. + config DCACHE_RAM_BASE hex diff --git a/src/cpu/x86/Makefile.inc b/src/cpu/x86/Makefile.inc index 1724a060b8..771784e6ff 100644 --- a/src/cpu/x86/Makefile.inc +++ b/src/cpu/x86/Makefile.inc @@ -1,6 +1,8 @@ ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32)$(CONFIG_ARCH_ROMSTAGE_X86_64),y) +ifneq ($(CONFIG_NO_CAR_GLOBAL_MIGRATION),y) romstage-$(CONFIG_CACHE_AS_RAM) += car.c endif +endif subdirs-$(CONFIG_PARALLEL_MP) += name ramstage-$(CONFIG_PARALLEL_MP) += mp_init.c -- cgit v1.2.3