diff options
author | Sunil V L <sunilvl@ventanamicro.com> | 2022-10-04 14:53:50 +0530 |
---|---|---|
committer | Alistair Francis <alistair.francis@wdc.com> | 2022-10-14 14:29:50 +1000 |
commit | 90e26984eede1f4303572a39ee328f4c23b276a0 (patch) | |
tree | 93aef5616b4896b177c4c9810f0f88333341796f /hw | |
parent | 785a7383dd4832cc772a2c5483bd6fa40ee51302 (diff) | |
download | qemu-90e26984eede1f4303572a39ee328f4c23b276a0.zip qemu-90e26984eede1f4303572a39ee328f4c23b276a0.tar.gz qemu-90e26984eede1f4303572a39ee328f4c23b276a0.tar.bz2 |
hw/riscv: virt: Move create_fw_cfg() prior to loading kernel
To enable both -kernel and -pflash options, the fw_cfg needs to be
created prior to loading the kernel.
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-3-sunilvl@ventanamicro.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
Diffstat (limited to 'hw')
-rw-r--r-- | hw/riscv/virt.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index befa9d2..de2efcc 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1267,6 +1267,13 @@ static void virt_machine_done(Notifier *notifier, void *data) RISCV64_BIOS_BIN, start_addr, NULL); } + /* + * Init fw_cfg. Must be done before riscv_load_fdt, otherwise the device + * tree cannot be altered and we get FDT_ERR_NOSPACE. + */ + s->fw_cfg = create_fw_cfg(machine); + rom_set_fw(s->fw_cfg); + if (machine->kernel_filename) { kernel_start_addr = riscv_calc_kernel_start_addr(&s->soc[0], firmware_end_addr); @@ -1300,13 +1307,6 @@ static void virt_machine_done(Notifier *notifier, void *data) start_addr = virt_memmap[VIRT_FLASH].base; } - /* - * Init fw_cfg. Must be done before riscv_load_fdt, otherwise the device - * tree cannot be altered and we get FDT_ERR_NOSPACE. - */ - s->fw_cfg = create_fw_cfg(machine); - rom_set_fw(s->fw_cfg); - /* Compute the fdt load address in dram */ fdt_load_addr = riscv_load_fdt(memmap[VIRT_DRAM].base, machine->ram_size, machine->fdt); |