On Thu, Jul 6, 2023 at 1:59 PM Guenter Roeck <li...@roeck-us.net> wrote: > > If the devicetree is created before machine initialization is complete, > it misses dynamic devices. Specifically, the tpm device is not added > to the devicetree file and is therefore not instantiated in Linux. > Load/create devicetree in virt_machine_done() to solve the problem. > > Cc: Daniel Henrique Barboza <dbarb...@ventanamicro.com> > Cc: Alistair Francis <alistai...@gmail.com> > Cc: Daniel Henrique Barboza <dbarboza@ventanamicro.c> > Fixes: 325b7c4e75 hw/riscv: Enable TPM backends > Signed-off-by: Guenter Roeck <li...@roeck-us.net>
Reviewed-by: Alistair Francis <alistair.fran...@wdc.com> Alistair > --- > v2: Handle devicetree (load & create) entirely in machine_done function. > > hw/riscv/virt.c | 22 +++++++++++----------- > 1 file changed, 11 insertions(+), 11 deletions(-) > > diff --git a/hw/riscv/virt.c b/hw/riscv/virt.c > index ed4c27487e..1c4bd823df 100644 > --- a/hw/riscv/virt.c > +++ b/hw/riscv/virt.c > @@ -1248,6 +1248,17 @@ static void virt_machine_done(Notifier *notifier, void > *data) > uint64_t kernel_entry = 0; > BlockBackend *pflash_blk0; > > + /* load/create device tree */ > + if (machine->dtb) { > + machine->fdt = load_device_tree(machine->dtb, &s->fdt_size); > + if (!machine->fdt) { > + error_report("load_device_tree() failed"); > + exit(1); > + } > + } else { > + create_fdt(s, memmap); > + } > + > /* > * Only direct boot kernel is currently supported for KVM VM, > * so the "-bios" parameter is not supported when KVM is enabled. > @@ -1508,17 +1519,6 @@ static void virt_machine_init(MachineState *machine) > } > virt_flash_map(s, system_memory); > > - /* load/create device tree */ > - if (machine->dtb) { > - machine->fdt = load_device_tree(machine->dtb, &s->fdt_size); > - if (!machine->fdt) { > - error_report("load_device_tree() failed"); > - exit(1); > - } > - } else { > - create_fdt(s, memmap); > - } > - > s->machine_done.notify = virt_machine_done; > qemu_add_machine_init_done_notifier(&s->machine_done); > } > -- > 2.39.2 >