Message ID | 20220906090219.412517-3-sunilvl@ventanamicro.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | hw/riscv: virt: Enable booting S-mode firmware from pflash | expand |
On Tue, Sep 6, 2022 at 11:44 AM Sunil V L <sunilvl@ventanamicro.com> wrote: > > 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> Alistair > --- > hw/riscv/virt.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index ff8c0df5cd..b6bbf03f61 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -1251,6 +1251,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); > @@ -1284,13 +1291,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); > -- > 2.25.1 > >
diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c index ff8c0df5cd..b6bbf03f61 100644 --- a/hw/riscv/virt.c +++ b/hw/riscv/virt.c @@ -1251,6 +1251,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); @@ -1284,13 +1291,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);