From: Marcel Apfelbaum <marcel@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>, qemu-devel@nongnu.org
Cc: mst@redhat.com, pbonzini@redhat.com, rth@twiddle.net,
ehabkost@redhat.com, eblake@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 02/10] pc: piix4/ich9: add 'cpu-hotplug-legacy' property
Date: Thu, 23 Jun 2016 15:38:29 +0300 [thread overview]
Message-ID: <576BD845.7050406@redhat.com> (raw)
In-Reply-To: <1466096143-91616-3-git-send-email-imammedo@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 <imammedo@redhat.com>
> ---
> 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 <marcel@redhat.com>
Thanks,
Marcel
next prev parent reply other threads:[~2016-06-23 12:38 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-16 16:55 [Qemu-devel] [PATCH v2 00/10] ACPI CPU hotplug refactoring to support unplug and more than 255 CPUs Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 01/10] docs: update ACPI CPU hotplug spec with new protocol Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 02/10] pc: piix4/ich9: add 'cpu-hotplug-legacy' property Igor Mammedov
2016-06-23 12:38 ` Marcel Apfelbaum [this message]
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 03/10] acpi: cpuhp: add CPU devices AML with _STA method Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 04/10] pc: acpi: introduce AcpiDeviceIfClass.madt_cpu hook Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 05/10] acpi: cpuhp: implement hot-add parts of CPU hotplug interface Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 06/10] acpi: cpuhp: implement hot-remove " Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 07/10] acpi: cpuhp: add cpu._OST handling Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 08/10] pc: use new CPU hotplug interface since 2.7 machine type Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 09/10] tests: acpi: add CPU hotplug testcase Igor Mammedov
2016-06-23 13:08 ` Marcel Apfelbaum
2016-06-23 13:47 ` Igor Mammedov
2016-06-24 5:53 ` Michael S. Tsirkin
2016-06-24 6:00 ` Igor Mammedov
2016-06-24 21:58 ` Michael S. Tsirkin
2016-06-27 12:30 ` Igor Mammedov
2016-06-16 16:55 ` [Qemu-devel] [PATCH v2 10/10] pc: acpi: drop intermediate PCMachineState.node_cpu Igor Mammedov
2016-06-21 7:12 ` [Qemu-devel] [PATCH v2 00/10] ACPI CPU hotplug refactoring to support unplug and more than 255 CPUs Igor Mammedov
2016-06-21 16:50 ` Michael S. Tsirkin
2016-06-21 16:58 ` Igor Mammedov
2016-06-23 11:07 ` Igor Mammedov
2016-06-24 6:18 ` [Qemu-devel] [PATCH v2 11/10] pc: acpi: update expected DSDT blobs with new CPU hotplug AML Igor Mammedov
2016-06-24 6:18 ` [Qemu-devel] [PATCH v2 12/10] pc: acpi: add expected DSDT/MADT blobs for CPU hotplug testscase Igor Mammedov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=576BD845.7050406@redhat.com \
--to=marcel@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).