coreboot: add vboot_handoff to coreboot tables
The vboot_handoff structure contians the VbInitParams as well as the shared vboot data. In order for the boot loader to find it, the structure address and size needs to be obtained from the coreboot tables. Change-Id: I6573d479009ccbf373a7325f861bebe8dc9f5cf8 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/2857 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
committed by
Stefan Reinauer
parent
d02bb62a4f
commit
dd32a31fba
@@ -36,6 +36,7 @@
|
||||
#endif
|
||||
#if CONFIG_CHROMEOS
|
||||
#include <arch/acpi.h>
|
||||
#include <vendorcode/google/chromeos/chromeos.h>
|
||||
#include <vendorcode/google/chromeos/gnvs.h>
|
||||
#endif
|
||||
|
||||
@@ -219,7 +220,27 @@ static void lb_vbnv(struct lb_header *header)
|
||||
vbnv->vbnv_start = CONFIG_VBNV_OFFSET + 14;
|
||||
vbnv->vbnv_size = CONFIG_VBNV_SIZE;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if CONFIG_VBOOT_VERIFY_FIRMWARE
|
||||
static void lb_vboot_handoff(struct lb_header *header)
|
||||
{
|
||||
void *addr;
|
||||
uint32_t size;
|
||||
struct lb_vboot_handoff* vbho;
|
||||
|
||||
if (vboot_get_handoff_info(&addr, &size))
|
||||
return;
|
||||
|
||||
vbho = (struct lb_vboot_handoff *)lb_new_record(header);
|
||||
vbho->tag = LB_TAB_VBOOT_HANDOFF;
|
||||
vbho->size = sizeof(*vbho);
|
||||
vbho->vboot_handoff_addr = addr;
|
||||
vbho->vboot_handoff_size = size;
|
||||
}
|
||||
#else
|
||||
static inline void lb_vboot_handoff(struct lb_header *header) {}
|
||||
#endif /* CONFIG_VBOOT_VERIFY_FIRMWARE */
|
||||
#endif /* CONFIG_CHROMEOS */
|
||||
|
||||
static void add_cbmem_pointers(struct lb_header *header)
|
||||
{
|
||||
@@ -697,6 +718,9 @@ unsigned long write_coreboot_table(
|
||||
|
||||
/* pass along VBNV offsets in CMOS */
|
||||
lb_vbnv(head);
|
||||
|
||||
/* pass along the vboot_handoff address. */
|
||||
lb_vboot_handoff(head);
|
||||
#endif
|
||||
add_cbmem_pointers(head);
|
||||
|
||||
|
Reference in New Issue
Block a user