amd/common/psp: Add BootDone command
After the PSP receives the MboxBiosCmdBootDone, it will no longer honor any command where the command-response buffer exists outside of SMM memory. Add the command and automatically execute it before booting the payload. BUG=b:69971683 TEST=Boot Kahlee and observe console log Change-Id: I8258a9e2f2627bf24342f927a3e7f49b49dc1d88 Signed-off-by: Marshall Dawson <marshalldawson3rd@gmail.com> Reviewed-on: https://review.coreboot.org/22787 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
parent
66dd399ac2
commit
d1cc3c213f
|
@ -18,6 +18,7 @@
|
|||
#include <region_file.h>
|
||||
#include <timer.h>
|
||||
#include <device/pci_def.h>
|
||||
#include <bootstate.h>
|
||||
#include <console/console.h>
|
||||
#include <amdblocks/psp.h>
|
||||
|
||||
|
@ -184,6 +185,34 @@ int psp_notify_dram(void)
|
|||
return cmd_status;
|
||||
}
|
||||
|
||||
/*
|
||||
* Notify the PSP that the system is completing the boot process. Upon
|
||||
* receiving this command, the PSP will only honor commands where the buffer
|
||||
* is in SMM space.
|
||||
*/
|
||||
static void psp_notify_boot_done(void *unused)
|
||||
{
|
||||
int cmd_status;
|
||||
struct mbox_default_buffer buffer = {
|
||||
.header = {
|
||||
.size = sizeof(buffer)
|
||||
}
|
||||
};
|
||||
|
||||
printk(BIOS_DEBUG, "PSP: Notify that POST is finishing... ");
|
||||
|
||||
cmd_status = send_psp_command(MBOX_BIOS_CMD_BOOT_DONE, &buffer);
|
||||
|
||||
/* buffer's status shouldn't change but report it if it does */
|
||||
if (rd_resp_sts(&buffer))
|
||||
printk(BIOS_DEBUG, "buffer status=0x%x ",
|
||||
rd_resp_sts(&buffer));
|
||||
if (cmd_status)
|
||||
printk(BIOS_DEBUG, "%s\n", status_to_string(cmd_status));
|
||||
else
|
||||
printk(BIOS_DEBUG, "OK\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Tell the PSP to load a firmware blob from a location in the BIOS image.
|
||||
*/
|
||||
|
@ -238,3 +267,6 @@ int psp_load_named_blob(int type, const char *name)
|
|||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY,
|
||||
psp_notify_boot_done, NULL);
|
||||
|
|
Loading…
Reference in New Issue