x86: fsp: Save usable RAM and hob_list in the handoff area

The useable RAM is calculated when the RAM is inited. Save this value so
that it can be easily used in U-Boot proper.

Also save a pointer to the hob list so that it is accessible (before
relocation only) in U-Boot proper. This avoids having to scan it in SPL,
for everything U-Boot proper might need later.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
[bmeng: guard handoff_arch_save() with IS_ENABLED(CONFIG_USE_HOB)]
Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
Simon Glass 2019-09-25 08:11:41 -06:00 committed by Bin Meng
parent 12c81b2f41
commit c3863eadbc
3 changed files with 24 additions and 0 deletions

View File

@ -6,6 +6,7 @@
#include <common.h>
#include <dm.h>
#include <errno.h>
#include <handoff.h>
#include <asm/cpu_common.h>
#include <asm/intel_regs.h>
#include <asm/lapic.h>
@ -21,6 +22,11 @@ int arch_cpu_init(void)
{
int ret;
#if CONFIG_IS_ENABLED(HANDOFF) && IS_ENABLED(CONFIG_USE_HOB)
struct spl_handoff *ho = gd->spl_handoff;
gd->arch.hob_list = ho->arch.hob_list;
#endif
ret = x86_cpu_reinit_f();
return ret;

View File

@ -9,7 +9,15 @@
#ifndef __x86_asm_handoff_h
#define __x86_asm_handoff_h
/**
* struct arch_spl_handoff - architecture-specific handoff info
*
* @usable_ram_top: Value returned by board_get_usable_ram_top() in SPL
* @hob_list: Start of FSP hand-off blocks (HOBs)
*/
struct arch_spl_handoff {
ulong usable_ram_top;
void *hob_list;
};
#endif

View File

@ -88,3 +88,13 @@ unsigned int install_e820_map(unsigned int max_entries,
return num_entries;
}
#if CONFIG_IS_ENABLED(HANDOFF) && IS_ENABLED(CONFIG_USE_HOB)
int handoff_arch_save(struct spl_handoff *ho)
{
ho->arch.usable_ram_top = fsp_get_usable_lowmem_top(gd->arch.hob_list);
ho->arch.hob_list = gd->arch.hob_list;
return 0;
}
#endif