payload loading: remove passing of struct payload
There's no need to keep track of struct payload within the boot state machine. It is completely contained within the payload loader module. Change-Id: I16fcecf43d7fb41fc311955fdb82eabbd5c96b11 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: http://review.coreboot.org/8836 Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
This commit is contained in:
parent
fcfdff84f4
commit
ebf2ed4621
|
@ -104,14 +104,11 @@ struct payload {
|
|||
void *entry;
|
||||
};
|
||||
|
||||
/*
|
||||
* Load payload into memory and return pointer to payload structure. Returns
|
||||
* NULL on error.
|
||||
*/
|
||||
struct payload *payload_load(void);
|
||||
/* Load payload into memory in preparation to run. */
|
||||
void payload_load(void);
|
||||
|
||||
/* Run the loaded payload. */
|
||||
void payload_run(const struct payload *payload);
|
||||
void payload_run(void);
|
||||
|
||||
/* Mirror the payload to be loaded. */
|
||||
void mirror_payload(struct payload *payload);
|
||||
|
|
|
@ -227,26 +227,16 @@ static boot_state_t bs_write_tables(void *arg)
|
|||
|
||||
static boot_state_t bs_payload_load(void *arg)
|
||||
{
|
||||
struct payload *payload;
|
||||
|
||||
timestamp_add_now(TS_LOAD_PAYLOAD);
|
||||
|
||||
payload = payload_load();
|
||||
|
||||
if (! payload)
|
||||
die("Could not load payload\n");
|
||||
|
||||
/* Pass the payload to the next state. */
|
||||
boot_states[BS_PAYLOAD_BOOT].arg = payload;
|
||||
payload_load();
|
||||
|
||||
return BS_PAYLOAD_BOOT;
|
||||
}
|
||||
|
||||
static boot_state_t bs_payload_boot(void *arg)
|
||||
{
|
||||
struct payload *payload = arg;
|
||||
|
||||
payload_run(payload);
|
||||
payload_run();
|
||||
|
||||
printk(BIOS_EMERG, "Boot failed");
|
||||
/* Returning from this state will fail because the following signals
|
||||
|
|
|
@ -44,7 +44,7 @@ void __attribute__((weak)) mirror_payload(struct payload *payload)
|
|||
return;
|
||||
}
|
||||
|
||||
struct payload *payload_load(void)
|
||||
void payload_load(void)
|
||||
{
|
||||
int i;
|
||||
void *entry;
|
||||
|
@ -65,24 +65,22 @@ struct payload *payload_load(void)
|
|||
}
|
||||
|
||||
if (i == ARRAY_SIZE(payload_ops))
|
||||
return NULL;
|
||||
goto out;
|
||||
|
||||
mirror_payload(payload);
|
||||
|
||||
entry = selfload(payload);
|
||||
|
||||
if (entry == NULL)
|
||||
return NULL;
|
||||
|
||||
payload->entry = entry;
|
||||
|
||||
return payload;
|
||||
out:
|
||||
if (payload->entry == NULL)
|
||||
die("Payload not loaded.\n");
|
||||
}
|
||||
|
||||
void payload_run(const struct payload *payload)
|
||||
void payload_run(void)
|
||||
{
|
||||
if (payload == NULL)
|
||||
return;
|
||||
const struct payload *payload = &global_payload;
|
||||
|
||||
/* Reset to booting from this image as late as possible */
|
||||
boot_successful();
|
||||
|
|
Loading…
Reference in New Issue