hw/riscv: virt: Enable booting S-mode firmware from pflash
authorSunil V L <sunilvl@ventanamicro.com>
Tue, 4 Oct 2022 09:23:51 +0000 (14:53 +0530)
committerAlistair Francis <alistair.francis@wdc.com>
Fri, 14 Oct 2022 04:29:50 +0000 (14:29 +1000)
commita5b0249dfef6d39d345ed7c9620a04bdb1c2ffb0
tree966c30581b5023a7f83f48d78bbf73ba0350e49d
parent90e26984eede1f4303572a39ee328f4c23b276a0
hw/riscv: virt: Enable booting S-mode firmware from pflash

To boot S-mode firmware payload like EDK2 from persistent
flash storage, qemu needs to pass the flash address as the
next_addr in fw_dynamic_info to the opensbi.

When both -kernel and -pflash options are provided in command line,
the kernel (and initrd if -initrd) will be copied to fw_cfg table.
The S-mode FW will load the kernel/initrd from fw_cfg table.

If only pflash is given but not -kernel, then it is the job of
of the S-mode firmware to locate and load the kernel.

In either case, update the kernel_entry with the flash address
so that the opensbi can jump to the entry point of the S-mode
firmware.

Signed-off-by: Sunil V L <sunilvl@ventanamicro.com>
Reviewed-by: Andrew Jones <ajones@ventanamicro.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-Id: <20221004092351.18209-4-sunilvl@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
hw/riscv/boot.c
hw/riscv/virt.c
include/hw/riscv/boot.h