soc/intel/cmn/block/fast_spi: Lock DMA before exiting coreboot
Introduce a DMA lock mechanism to secure the Fast SPI DMA operations
during the payload boot phase. A new `fast_spi_dma_lock` function is
added to lock the DMA control register when the system enters the
payload boot state. This ensures that DMA operations are appropriately
secured, preventing any unintended data transfers post-boot.
TEST=On a Fatcat device with an FSP not locking down Fast SPI DMA,
coreboot logs show "Fast-SPI: DMA has been locked." and
/sys/devices/pci0000:00/0000:00:1f.5/config shows that bit 15 of
register FAST_SPI_DMA_CONTROL (0xbc) has been is set.
Change-Id: Ie4abbcfc798480319a32b0049e3559d623ef78ef
Signed-off-by: Jeremy Compostella <jeremy.compostella@intel.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/88488
Reviewed-by: Bora Guvendik <bora.guvendik@intel.com>
Reviewed-by: Wonkyu Kim <wonkyu.kim@intel.com>
Reviewed-by: Subrata Banik <subratabanik@google.com>
Reviewed-by: Kapil Porwal <kapilporwal@google.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
parent
c1d45ef93b
commit
9e41c7cec7
1 changed files with 14 additions and 0 deletions
|
|
@ -403,3 +403,17 @@ void spi_flash_dma_install_ops(struct xlate_region_device *mmap_xlate_rdev)
|
|||
fast_spi_dma_rdev_ro_ops.readat = fast_spi_dma_readat;
|
||||
mmap_xlate_rdev->rdev.ops = &fast_spi_dma_rdev_ro_ops;
|
||||
}
|
||||
|
||||
static void fast_spi_dma_lock(void *unused)
|
||||
{
|
||||
union fast_spi_dma_control control = {fast_spi_read(FAST_SPI_DMA_CONTROL)};
|
||||
if (control.fields.lock)
|
||||
return;
|
||||
|
||||
control.fields.lock = 1;
|
||||
fast_spi_write(FAST_SPI_DMA_CONTROL, control.data);
|
||||
|
||||
printk(BIOS_DEBUG, "Fast-SPI: driver locked DMA\n");
|
||||
}
|
||||
|
||||
BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY, fast_spi_dma_lock, NULL);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue