soc/amd/common/block/psp: Unmap EFS region after use
EFS header is mapped during PSP verstage and bootblock to read some SPI configuration. After use it is left unmapped. Unmap the EFS region after use. BUG=b:240664755 TEST=Build and boot to OS in Skyrim with unsigned PSP verstage. Change-Id: I865f45a3d25bc639eb8435b54aa80895ec4afd27 Signed-off-by: Karthikeyan Ramasubramanian <kramasub@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/75455 Reviewed-by: Raul Rangel <rrangel@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
d6f73972cf
commit
49d8aa7043
|
@ -7,31 +7,25 @@
|
||||||
#include <device/mmio.h>
|
#include <device/mmio.h>
|
||||||
#include <types.h>
|
#include <types.h>
|
||||||
|
|
||||||
static struct embedded_firmware *efs;
|
|
||||||
|
|
||||||
bool efs_is_valid(void)
|
|
||||||
{
|
|
||||||
if (!efs)
|
|
||||||
efs = rdev_mmap(boot_device_ro(), EFS_OFFSET, sizeof(*efs));
|
|
||||||
|
|
||||||
if (!efs || efs->signature != EMBEDDED_FW_SIGNATURE)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool read_efs_spi_settings(uint8_t *mode, uint8_t *speed)
|
bool read_efs_spi_settings(uint8_t *mode, uint8_t *speed)
|
||||||
{
|
{
|
||||||
if (!efs_is_valid())
|
bool ret = false;
|
||||||
|
struct embedded_firmware *efs;
|
||||||
|
|
||||||
|
efs = rdev_mmap(boot_device_ro(), EFS_OFFSET, sizeof(*efs));
|
||||||
|
if (!efs)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
if (efs->signature == EMBEDDED_FW_SIGNATURE) {
|
||||||
#ifndef SPI_MODE_FIELD
|
#ifndef SPI_MODE_FIELD
|
||||||
printk(BIOS_ERR, "Unknown cpu in psp_efs.h\n");
|
printk(BIOS_ERR, "Unknown cpu in psp_efs.h\n");
|
||||||
printk(BIOS_ERR, "SPI speed/mode not set.\n");
|
printk(BIOS_ERR, "SPI speed/mode not set.\n");
|
||||||
return false;
|
|
||||||
#else
|
#else
|
||||||
*mode = efs->SPI_MODE_FIELD;
|
*mode = efs->SPI_MODE_FIELD;
|
||||||
*speed = efs->SPI_SPEED_FIELD;
|
*speed = efs->SPI_SPEED_FIELD;
|
||||||
return true;
|
ret = true;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
rdev_munmap(boot_device_ro(), efs);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue