mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
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:
parent
12c81b2f41
commit
c3863eadbc
3 changed files with 24 additions and 0 deletions
|
@ -6,6 +6,7 @@
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <dm.h>
|
#include <dm.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <handoff.h>
|
||||||
#include <asm/cpu_common.h>
|
#include <asm/cpu_common.h>
|
||||||
#include <asm/intel_regs.h>
|
#include <asm/intel_regs.h>
|
||||||
#include <asm/lapic.h>
|
#include <asm/lapic.h>
|
||||||
|
@ -21,6 +22,11 @@ int arch_cpu_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
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();
|
ret = x86_cpu_reinit_f();
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -9,7 +9,15 @@
|
||||||
#ifndef __x86_asm_handoff_h
|
#ifndef __x86_asm_handoff_h
|
||||||
#define __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 {
|
struct arch_spl_handoff {
|
||||||
|
ulong usable_ram_top;
|
||||||
|
void *hob_list;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -88,3 +88,13 @@ unsigned int install_e820_map(unsigned int max_entries,
|
||||||
|
|
||||||
return num_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
|
||||||
|
|
Loading…
Add table
Reference in a new issue