diff options
Diffstat (limited to 'hw')
-rw-r--r-- | hw/arm/virt.c | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 8ba50ad6c2..9b55ef05a6 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -76,6 +76,8 @@ typedef struct { typedef struct { MachineState parent; + VirtGuestInfo acpi_guest_info; + Notifier machine_done; bool secure; bool highmem; int32_t gic_version; @@ -1197,12 +1199,13 @@ static void virt_build_smbios(VirtGuestInfo *guest_info) } static -void virt_guest_info_machine_done(Notifier *notifier, void *data) +void virt_machine_done(Notifier *notifier, void *data) { - VirtGuestInfoState *guest_info_state = container_of(notifier, - VirtGuestInfoState, machine_done); - virt_acpi_setup(&guest_info_state->info); - virt_build_smbios(&guest_info_state->info); + VirtMachineState *vms = container_of(notifier, VirtMachineState, + machine_done); + + virt_acpi_setup(&vms->acpi_guest_info); + virt_build_smbios(&vms->acpi_guest_info); } static void machvirt_init(MachineState *machine) @@ -1215,8 +1218,7 @@ static void machvirt_init(MachineState *machine) int n, virt_max_cpus; MemoryRegion *ram = g_new(MemoryRegion, 1); const char *cpu_model = machine->cpu_model; - VirtGuestInfoState *guest_info_state = g_malloc0(sizeof *guest_info_state); - VirtGuestInfo *guest_info = &guest_info_state->info; + VirtGuestInfo *guest_info = &vms->acpi_guest_info; char **cpustr; ObjectClass *oc; const char *typename; @@ -1415,8 +1417,8 @@ static void machvirt_init(MachineState *machine) guest_info->use_highmem = vms->highmem; guest_info->gic_version = vms->gic_version; guest_info->no_its = vmc->no_its; - guest_info_state->machine_done.notify = virt_guest_info_machine_done; - qemu_add_machine_init_done_notifier(&guest_info_state->machine_done); + vms->machine_done.notify = virt_machine_done; + qemu_add_machine_init_done_notifier(&vms->machine_done); vms->bootinfo.ram_size = machine->ram_size; vms->bootinfo.kernel_filename = machine->kernel_filename; |