arch/x86: remove CAR global migration when postcar stage is used

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 <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/19215
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Tested-by: build bot (Jenkins)
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
Aaron Durbin 2017-04-07 15:20:14 -05:00
parent acc599b839
commit bc17cdef0d
4 changed files with 13 additions and 1 deletions

View File

@ -200,6 +200,7 @@ config VERSTAGE_ADDR
# from a program loaded in RAM and subsequently loading ramstage. # from a program loaded in RAM and subsequently loading ramstage.
config POSTCAR_STAGE config POSTCAR_STAGE
def_bool n def_bool n
select NO_CAR_GLOBAL_MIGRATION
config VERSTAGE_DEBUG_SPINLOOP config VERSTAGE_DEBUG_SPINLOOP
bool bool

View File

@ -34,7 +34,7 @@ asm(".previous");
* accessed unconditionally because cbmem is never initialized until romstage * accessed unconditionally because cbmem is never initialized until romstage
* when dram comes up. * 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) static inline void *car_get_var_ptr(void *var)
{ {
return var; return var;

View File

@ -10,6 +10,15 @@ config CACHE_AS_RAM
bool bool
default !ROMCC 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 config DCACHE_RAM_BASE
hex hex

View File

@ -1,6 +1,8 @@
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32)$(CONFIG_ARCH_ROMSTAGE_X86_64),y) 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 romstage-$(CONFIG_CACHE_AS_RAM) += car.c
endif endif
endif
subdirs-$(CONFIG_PARALLEL_MP) += name subdirs-$(CONFIG_PARALLEL_MP) += name
ramstage-$(CONFIG_PARALLEL_MP) += mp_init.c ramstage-$(CONFIG_PARALLEL_MP) += mp_init.c