[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CP
From: |
Igor Mammedov |
Subject: |
Re: [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest |
Date: |
Tue, 23 Apr 2013 17:53:47 +0200 |
On Tue, 23 Apr 2013 17:25:50 +0200
Juan Quintela <address@hidden> wrote:
> Igor Mammedov <address@hidden> wrote:
> > On Tue, 23 Apr 2013 13:38:10 +0200
> > Juan Quintela <address@hidden> wrote:
>
> Something like this (on top of your series) should work.
>
> It implements an optional subsection and is sent depending if we have
> used (or not) cpu hotplug. I just compiled it, haven't tested it, so
> it should be perfect (TM).
>
> What do you think?
>
> Thanks, Juan.
>
Just tested. it works.
I'm going to merge it in and remove unused Error* and repost patch.
> From f887ce646f65a81ceff1920c7e6e2287b914b3ca Mon Sep 17 00:00:00 2001
> From: Juan Quintela <address@hidden>
> Date: Tue, 23 Apr 2013 17:23:29 +0200
> Subject: [PATCH] vmstate subsection example
>
>
> Signed-off-by: Juan Quintela <address@hidden>
> ---
> hw/acpi/piix4.c | 42 +++++++++++++++++++++++++++++-------------
> 1 file changed, 29 insertions(+), 13 deletions(-)
>
> diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
> index b845123..14dba76 100644
> --- a/hw/acpi/piix4.c
> +++ b/hw/acpi/piix4.c
> @@ -60,6 +60,7 @@ struct pci_status {
> };
>
> struct cpu_status {
> + bool hotplug_happened;
> uint8_t sts[PIIX4_PROC_LEN];
> };
>
> @@ -269,17 +270,23 @@ static int acpi_load_old(QEMUFile *f, void *opaque, int
> version_id)
> return ret;
> }
>
> -#define VMSTATE_CPU_STATUS_ARRAY(_field, _state)
> \
> - {
> \
> - .name = (stringify(_field)),
> \
> - .version_id = 0,
> \
> - .num = PIIX4_PROC_LEN,
> \
> - .info = &vmstate_info_uint8,
> \
> - .size = sizeof(uint8_t),
> \
> - .flags = VMS_ARRAY,
> \
> - .offset = vmstate_offset_array(_state, _field, uint8_t,
> \
> - PIIX4_PROC_LEN),
> \
> - }
> +static bool vmstate_piix4_hotplug_needed(void *opaque)
> +{
> + PIIX4PMState *s = opaque;
> +
> + return s->gpe_cpu.hotplug_happened;
> +}
> +
> +static const VMStateDescription vmstate_piix4_hotplug_state = {
> + .name ="piix4_pm/hotplug",
> + .version_id = 1,
> + .minimum_version_id = 1,
> + .minimum_version_id_old = 1,
> + .fields = (VMStateField []) {
> + VMSTATE_UINT8_ARRAY(gpe_cpu.sts, PIIX4PMState, PIIX4_PROC_LEN),
> + VMSTATE_END_OF_LIST()
> + }
> +};
>
> /* qemu-kvm 1.2 uses version 3 but advertised as 2
> * To support incoming qemu-kvm 1.2 migration, change version_id
> @@ -289,7 +296,7 @@ static int acpi_load_old(QEMUFile *f, void *opaque, int
> version_id)
> */
> static const VMStateDescription vmstate_acpi = {
> .name = "piix4_pm",
> - .version_id = 4,
> + .version_id = 3,
> .minimum_version_id = 3,
> .minimum_version_id_old = 1,
> .load_state_old = acpi_load_old,
> @@ -305,8 +312,15 @@ static const VMStateDescription vmstate_acpi = {
> VMSTATE_STRUCT(ar.gpe, PIIX4PMState, 2, vmstate_gpe, ACPIGPE),
> VMSTATE_STRUCT(pci0_status, PIIX4PMState, 2, vmstate_pci_status,
> struct pci_status),
> - VMSTATE_CPU_STATUS_ARRAY(gpe_cpu.sts, PIIX4PMState),
> VMSTATE_END_OF_LIST()
> + },
> + .subsections = (VMStateSubsection[]) {
> + {
> + .vmsd = &vmstate_piix4_hotplug_state,
> + .needed = vmstate_piix4_hotplug_needed,
> + }, {
> + /* empty */
> + }
> }
> };
>
> @@ -664,6 +678,7 @@ static void piix4_cpu_added_req(Notifier *n, void *opaque)
> {
> PIIX4PMState *s = container_of(n, PIIX4PMState, cpu_added_notifier);
>
> + s->gpe_cpu.hotplug_happened = true;
> piix4_cpu_hotplug_req(s, CPU(opaque), PLUG);
> }
>
> @@ -706,6 +721,7 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion
> *parent,
> pci_bus_hotplug(bus, piix4_device_hotplug, &s->dev.qdev);
>
> piix4_init_cpu_status(qdev_get_machine(), &s->gpe_cpu);
> + s->gpe_cpu.hotplug_happened = false;
> memory_region_init_io(&s->io_cpu, &cpu_hotplug_ops, s,
> "apci-cpu-hotplug",
> PIIX4_PROC_LEN);
> memory_region_add_subregion(parent, PIIX4_PROC_BASE, &s->io_cpu);
- [Qemu-devel] [PATCH 13/21] target-i386: cpu: attach ICC bus to CPU on its creation, (continued)
- [Qemu-devel] [PATCH 13/21] target-i386: cpu: attach ICC bus to CPU on its creation, Igor Mammedov, 2013/04/23
- [Qemu-devel] [PATCH 11/21] target-i386: introduce apic-id property, Igor Mammedov, 2013/04/23
- [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Igor Mammedov, 2013/04/23
- Re: [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Juan Quintela, 2013/04/23
- Re: [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Juan Quintela, 2013/04/23
- Re: [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest,
Igor Mammedov <=
Re: [Qemu-devel] [PATCH 10/21] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Juan Quintela, 2013/04/23
[Qemu-devel] [PATCH 10/21 DISGISED v6] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Igor Mammedov, 2013/04/23
- Re: [Qemu-devel] [PATCH 10/21 DISGISED v6] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Igor Mammedov, 2013/04/24
- Re: [Qemu-devel] [PATCH 10/21 DISGISED v6] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Eduardo Habkost, 2013/04/24
- Re: [Qemu-devel] [PATCH 10/21 DISGISED v6] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Paolo Bonzini, 2013/04/24
- Re: [Qemu-devel] [PATCH 10/21 DISGISED v6] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Andreas Färber, 2013/04/24
- Re: [Qemu-devel] [PATCH 10/21 DISGISED v6] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Igor Mammedov, 2013/04/24
[Qemu-devel] [PATCH 08/19 v7] acpi_piix4: add infrastructure to send CPU hot-plug GPE to guest, Igor Mammedov, 2013/04/24