lib/imd_cbmem.c: Drop CAR_GLOBAL_MIGRATION support
Change-Id: Id409f9abf33c851b6d08903bc111a6b8ec6bf8cf Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/c/coreboot/+/37032 Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
d20b0a842b
commit
462a7daeec
1 changed files with 2 additions and 33 deletions
|
@ -22,28 +22,6 @@
|
||||||
#include <imd.h>
|
#include <imd.h>
|
||||||
#include <lib.h>
|
#include <lib.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <arch/early_variables.h>
|
|
||||||
|
|
||||||
/*
|
|
||||||
* We need special handling on x86 where CAR global migration is employed. One
|
|
||||||
* cannot use true globals in that circumstance because CAR is where the globals
|
|
||||||
* are backed -- creating a circular dependency. For non CAR platforms globals
|
|
||||||
* are free to be used as well as any stages that are purely executing out of
|
|
||||||
* RAM. For CAR platforms that don't migrate globals the as-linked globals can
|
|
||||||
* be used, but they need special decoration using CAR_GLOBAL. That ensures
|
|
||||||
* proper object placement in conjunction with the linker.
|
|
||||||
*
|
|
||||||
* For the CAR global migration platforms we have to always try to partially
|
|
||||||
* recover CBMEM from cbmem_top() whenever we try to access it. In other
|
|
||||||
* environments we're not so constrained and just keep the backing imd struct
|
|
||||||
* in a global. This also means that we can easily tell whether CBMEM has
|
|
||||||
* explicitly been initialized or recovered yet on those platforms, and don't
|
|
||||||
* need to put the burden on board or chipset code to tell us by returning
|
|
||||||
* NULL from cbmem_top() before that point.
|
|
||||||
*/
|
|
||||||
#define CAN_USE_GLOBALS \
|
|
||||||
(!CONFIG(ARCH_X86) || ENV_RAMSTAGE || ENV_POSTCAR || \
|
|
||||||
!CONFIG(CAR_GLOBAL_MIGRATION))
|
|
||||||
|
|
||||||
/* The program loader passes on cbmem_top and the program entry point
|
/* The program loader passes on cbmem_top and the program entry point
|
||||||
has to fill in the _cbmem_top_ptr symbol based on the calling arguments. */
|
has to fill in the _cbmem_top_ptr symbol based on the calling arguments. */
|
||||||
|
@ -67,11 +45,8 @@ void *cbmem_top(void)
|
||||||
|
|
||||||
static inline struct imd *cbmem_get_imd(void)
|
static inline struct imd *cbmem_get_imd(void)
|
||||||
{
|
{
|
||||||
if (CAN_USE_GLOBALS) {
|
static struct imd imd_cbmem;
|
||||||
static struct imd imd_cbmem CAR_GLOBAL;
|
return &imd_cbmem;
|
||||||
return &imd_cbmem;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline const struct cbmem_entry *imd_to_cbmem(const struct imd_entry *e)
|
static inline const struct cbmem_entry *imd_to_cbmem(const struct imd_entry *e)
|
||||||
|
@ -115,12 +90,6 @@ static struct imd *imd_init_backing_with_recover(struct imd *backing)
|
||||||
struct imd *imd;
|
struct imd *imd;
|
||||||
|
|
||||||
imd = imd_init_backing(backing);
|
imd = imd_init_backing(backing);
|
||||||
if (!CAN_USE_GLOBALS) {
|
|
||||||
/* Always partially recover if we can't keep track of whether
|
|
||||||
* we have already initialized CBMEM in this stage. */
|
|
||||||
imd_handle_init(imd, cbmem_top());
|
|
||||||
imd_handle_init_partial_recovery(imd);
|
|
||||||
}
|
|
||||||
|
|
||||||
return imd;
|
return imd;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue