From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:56211) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bG3u5-0008SC-Uo for qemu-devel@nongnu.org; Thu, 23 Jun 2016 08:38:43 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bG3u0-0004Ns-TJ for qemu-devel@nongnu.org; Thu, 23 Jun 2016 08:38:40 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49199) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bG3u0-0004Ne-KN for qemu-devel@nongnu.org; Thu, 23 Jun 2016 08:38:36 -0400 References: <1466096143-91616-1-git-send-email-imammedo@redhat.com> <1466096143-91616-3-git-send-email-imammedo@redhat.com> From: Marcel Apfelbaum Message-ID: <576BD845.7050406@redhat.com> Date: Thu, 23 Jun 2016 15:38:29 +0300 MIME-Version: 1.0 In-Reply-To: <1466096143-91616-3-git-send-email-imammedo@redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 02/10] pc: piix4/ich9: add 'cpu-hotplug-legacy' property List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov , qemu-devel@nongnu.org Cc: mst@redhat.com, pbonzini@redhat.com, rth@twiddle.net, ehabkost@redhat.com, eblake@redhat.com On 06/16/2016 07:55 PM, Igor Mammedov wrote: > It will be used to select which hotplug call-back is called > and for switching from legacy mode into new one. > > Signed-off-by: Igor Mammedov > --- > hw/acpi/ich9.c | 23 ++++++++++++++++++++++- > hw/acpi/piix4.c | 24 +++++++++++++++++++++++- > include/hw/acpi/ich9.h | 1 + > 3 files changed, 46 insertions(+), 2 deletions(-) > > diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c > index 853c9c4..ed16940 100644 > --- a/hw/acpi/ich9.c > +++ b/hw/acpi/ich9.c > @@ -306,6 +306,21 @@ static void ich9_pm_set_memory_hotplug_support(Object *obj, bool value, > s->pm.acpi_memory_hotplug.is_enabled = value; > } > > +static bool ich9_pm_get_cpu_hotplug_legacy(Object *obj, Error **errp) > +{ > + ICH9LPCState *s = ICH9_LPC_DEVICE(obj); > + > + return s->pm.cpu_hotplug_legacy; > +} > + > +static void ich9_pm_set_cpu_hotplug_legacy(Object *obj, bool value, > + Error **errp) > +{ > + ICH9LPCState *s = ICH9_LPC_DEVICE(obj); > + > + s->pm.cpu_hotplug_legacy = value; > +} > + > static void ich9_pm_get_disable_s3(Object *obj, Visitor *v, const char *name, > void *opaque, Error **errp) > { > @@ -397,6 +412,7 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp) > { > static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN; > pm->acpi_memory_hotplug.is_enabled = true; > + pm->cpu_hotplug_legacy = true; > pm->disable_s3 = 0; > pm->disable_s4 = 0; > pm->s4_val = 2; > @@ -412,6 +428,10 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp) > ich9_pm_get_memory_hotplug_support, > ich9_pm_set_memory_hotplug_support, > NULL); > + object_property_add_bool(obj, "cpu-hotplug-legacy", > + ich9_pm_get_cpu_hotplug_legacy, > + ich9_pm_set_cpu_hotplug_legacy, > + NULL); > object_property_add(obj, ACPI_PM_PROP_S3_DISABLED, "uint8", > ich9_pm_get_disable_s3, > ich9_pm_set_disable_s3, > @@ -439,7 +459,8 @@ void ich9_pm_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, > object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { > acpi_memory_plug_cb(hotplug_dev, &lpc->pm.acpi_memory_hotplug, > dev, errp); > - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { > + } else if (lpc->pm.cpu_hotplug_legacy && > + object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { > legacy_acpi_cpu_plug_cb(hotplug_dev, &lpc->pm.gpe_cpu, dev, errp); > } else { > error_setg(errp, "acpi: device plug request for not supported device" > diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c > index c48cb1b..9ae3964 100644 > --- a/hw/acpi/piix4.c > +++ b/hw/acpi/piix4.c > @@ -86,6 +86,7 @@ typedef struct PIIX4PMState { > uint8_t disable_s4; > uint8_t s4_val; > > + bool cpu_hotplug_legacy; > AcpiCpuHotplug gpe_cpu; > > MemHotplugState acpi_memory_hotplug; > @@ -351,7 +352,8 @@ static void piix4_device_plug_cb(HotplugHandler *hotplug_dev, > acpi_memory_plug_cb(hotplug_dev, &s->acpi_memory_hotplug, dev, errp); > } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { > acpi_pcihp_device_plug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev, errp); > - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { > + } else if (s->cpu_hotplug_legacy && > + object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { > legacy_acpi_cpu_plug_cb(hotplug_dev, &s->gpe_cpu, dev, errp); > } else { > error_setg(errp, "acpi: device plug request for not supported device" > @@ -560,6 +562,21 @@ static const MemoryRegionOps piix4_gpe_ops = { > .endianness = DEVICE_LITTLE_ENDIAN, > }; > > + > +static bool piix4_get_cpu_hotplug_legacy(Object *obj, Error **errp) > +{ > + PIIX4PMState *s = PIIX4_PM(obj); > + > + return s->cpu_hotplug_legacy; > +} > + > +static void piix4_set_cpu_hotplug_legacy(Object *obj, bool value, Error **errp) > +{ > + PIIX4PMState *s = PIIX4_PM(obj); > + > + s->cpu_hotplug_legacy = value; > +} > + > static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, > PCIBus *bus, PIIX4PMState *s) > { > @@ -570,6 +587,11 @@ static void piix4_acpi_system_hot_add_init(MemoryRegion *parent, > acpi_pcihp_init(OBJECT(s), &s->acpi_pci_hotplug, bus, parent, > s->use_acpi_pci_hotplug); > > + s->cpu_hotplug_legacy = true; > + object_property_add_bool(OBJECT(s), "cpu-hotplug-legacy", > + piix4_get_cpu_hotplug_legacy, > + piix4_set_cpu_hotplug_legacy, > + NULL); > legacy_acpi_cpu_hotplug_init(parent, OBJECT(s), &s->gpe_cpu, > PIIX4_CPU_HOTPLUG_IO_BASE); > > diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h > index bbd657c..e29a856 100644 > --- a/include/hw/acpi/ich9.h > +++ b/include/hw/acpi/ich9.h > @@ -48,6 +48,7 @@ typedef struct ICH9LPCPMRegs { > uint32_t pm_io_base; > Notifier powerdown_notifier; > > + bool cpu_hotplug_legacy; > AcpiCpuHotplug gpe_cpu; > > MemHotplugState acpi_memory_hotplug; > Reviewed-by: Marcel Apfelbaum Thanks, Marcel