Message ID | 20161213214522.25548-5-drjones@redhat.com |
---|---|
State | Superseded |
Headers | show |
On Tue, 13 Dec 2016 22:45:15 +0100 Andrew Jones <drjones@redhat.com> wrote: > Instead of allocating a new struct just for VirtGuestInfo and the > machine_done Notifier, place them inside VirtMachineState. This > is the mach-virt equivalent of "pc: Eliminate struct > PcGuestInfoState" > > Suggested-by: Eduardo Habkost <ehabkost@redhat.com> > Signed-off-by: Andrew Jones <drjones@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> > --- > hw/arm/virt.c | 20 +++++++++++--------- > include/hw/arm/virt-acpi-build.h | 6 ------ > 2 files changed, 11 insertions(+), 15 deletions(-) > > diff --git a/hw/arm/virt.c b/hw/arm/virt.c > index 18aa3672739d..0657f9ae8722 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; > bool virt; > @@ -1222,12 +1224,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) > @@ -1240,8 +1243,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; > @@ -1459,8 +1461,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; > diff --git a/include/hw/arm/virt-acpi-build.h b/include/hw/arm/virt-acpi-build.h > index f5ec749b8fea..d74d7a1af650 100644 > --- a/include/hw/arm/virt-acpi-build.h > +++ b/include/hw/arm/virt-acpi-build.h > @@ -36,12 +36,6 @@ typedef struct VirtGuestInfo { > bool no_its; > } VirtGuestInfo; > > - > -typedef struct VirtGuestInfoState { > - VirtGuestInfo info; > - Notifier machine_done; > -} VirtGuestInfoState; > - > void virt_acpi_setup(VirtGuestInfo *guest_info); > > #endif
diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 18aa3672739d..0657f9ae8722 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; bool virt; @@ -1222,12 +1224,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) @@ -1240,8 +1243,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; @@ -1459,8 +1461,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; diff --git a/include/hw/arm/virt-acpi-build.h b/include/hw/arm/virt-acpi-build.h index f5ec749b8fea..d74d7a1af650 100644 --- a/include/hw/arm/virt-acpi-build.h +++ b/include/hw/arm/virt-acpi-build.h @@ -36,12 +36,6 @@ typedef struct VirtGuestInfo { bool no_its; } VirtGuestInfo; - -typedef struct VirtGuestInfoState { - VirtGuestInfo info; - Notifier machine_done; -} VirtGuestInfoState; - void virt_acpi_setup(VirtGuestInfo *guest_info); #endif
Instead of allocating a new struct just for VirtGuestInfo and the machine_done Notifier, place them inside VirtMachineState. This is the mach-virt equivalent of "pc: Eliminate struct PcGuestInfoState" Suggested-by: Eduardo Habkost <ehabkost@redhat.com> Signed-off-by: Andrew Jones <drjones@redhat.com> --- hw/arm/virt.c | 20 +++++++++++--------- include/hw/arm/virt-acpi-build.h | 6 ------ 2 files changed, 11 insertions(+), 15 deletions(-) -- 2.9.3