All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Michael S. Tsirkin" <mst@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: stefanha@redhat.com, hutao@cn.fujitsu.com, qemu-devel@nongnu.org,
	brogers@suse.com, jjherne@us.ibm.com, kraxel@redhat.com,
	aliguori@amazon.com, kaneshige.kenji@jp.fujitsu.com,
	chen.fan.fnst@cn.fujitsu.com, pbonzini@redhat.com,
	lersek@redhat.com
Subject: Re: [Qemu-devel] [PATCH 06/11] acpi/ich9: add CPU hotplug handling to Q35 machine
Date: Thu, 19 Dec 2013 16:18:59 +0200	[thread overview]
Message-ID: <20131219141859.GE10117@redhat.com> (raw)
In-Reply-To: <1386951736-929-7-git-send-email-imammedo@redhat.com>

On Fri, Dec 13, 2013 at 05:22:11PM +0100, Igor Mammedov wrote:
> .. including readonly 'cpu-hotplug-io-base' property
> 
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>

Is this documented in the Q35 spec? Could not find it there.
If this is our PV code like PIIX, then we need to document this
interface.

> ---
>  hw/acpi/ich9.c         | 27 +++++++++++++++++++++++++++
>  include/hw/acpi/ich9.h |  4 ++++
>  2 files changed, 31 insertions(+)
> 
> diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c
> index 30f0df8..9c88109 100644
> --- a/hw/acpi/ich9.c
> +++ b/hw/acpi/ich9.c
> @@ -44,6 +44,8 @@ do { printf("%s "fmt, __func__, ## __VA_ARGS__); } while (0)
>  #define ICH9_DEBUG(fmt, ...)    do { } while (0)
>  #endif
>  
> +#define ICH9_PROC_BASE 0xa18
> +
>  static void ich9_pm_update_sci_fn(ACPIREGS *regs)
>  {
>      ICH9LPCPMRegs *pm = container_of(regs, ICH9LPCPMRegs, acpi_regs);
> @@ -185,6 +187,15 @@ static void pm_powerdown_req(Notifier *n, void *opaque)
>      acpi_pm1_evt_power_down(&pm->acpi_regs);
>  }
>  
> +static void ich9_cpu_added_req(Notifier *n, void *opaque)
> +{
> +    ICH9LPCPMRegs *pm = container_of(n, ICH9LPCPMRegs, cpu_added_notifier);
> +
> +    assert(pm != NULL);
> +    acpi_hotplug_cpu_add(&pm->acpi_regs.gpe, &pm->gpe_cpu, CPU(opaque));
> +    acpi_update_sci(&pm->acpi_regs, pm->irq);
> +}
> +
>  void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
>                    qemu_irq sci_irq)
>  {
> @@ -210,6 +221,11 @@ void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
>      qemu_register_reset(pm_reset, pm);
>      pm->powerdown_notifier.notify = pm_powerdown_req;
>      qemu_register_powerdown_notifier(&pm->powerdown_notifier);
> +
> +    acpi_hotplug_cpu_init(pci_address_space_io(lpc_pci), OBJECT(lpc_pci),
> +                          &pm->gpe_cpu, pm->gpe_cpu.io_base);
> +    pm->cpu_added_notifier.notify = ich9_cpu_added_req;
> +    qemu_register_cpu_added_notifier(&pm->cpu_added_notifier);
>  }
>  
>  static void ich9_pm_get_gpe0_blk(Object *obj, Visitor *v,
> @@ -222,6 +238,14 @@ static void ich9_pm_get_gpe0_blk(Object *obj, Visitor *v,
>      visit_type_uint32(v, &value, name, errp);
>  }
>  
> +static void ich9_pm_get_cpu_io_base(Object *obj, Visitor *v, void *opaque,
> +                                    const char *name, Error **errp)
> +{
> +    ICH9LPCState *s = ICH9_LPC_DEVICE(obj);
> +
> +    visit_type_uint16(v, &s->pm.gpe_cpu.io_base, name, errp);
> +}
> +
>  void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp)
>  {
>      static const uint32_t gpe0_len = ICH9_PMIO_GPE0_LEN;
> @@ -233,4 +257,7 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp)
>                          NULL, NULL, pm, NULL);
>      object_property_add_uint32_ptr(obj, ACPI_PM_PROP_GPE0_BLK_LEN,
>                                     &gpe0_len, errp);
> +    pm->gpe_cpu.io_base = ICH9_PROC_BASE;
> +    object_property_add(obj, ACPI_CPU_HOTPLUG_IO_BASE_PROP, "int",
> +                        ich9_pm_get_cpu_io_base, NULL, NULL, NULL, NULL);
>  }
> diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h
> index 82fcf9f..c71a9b4 100644
> --- a/include/hw/acpi/ich9.h
> +++ b/include/hw/acpi/ich9.h
> @@ -22,6 +22,7 @@
>  #define HW_ACPI_ICH9_H
>  
>  #include "hw/acpi/acpi.h"
> +#include "hw/acpi/hotplug.h"
>  
>  typedef struct ICH9LPCPMRegs {
>      /*
> @@ -42,6 +43,9 @@ typedef struct ICH9LPCPMRegs {
>  
>      uint32_t pm_io_base;
>      Notifier powerdown_notifier;
> +
> +    AcpiCPUHotplug gpe_cpu;
> +    Notifier cpu_added_notifier;
>  } ICH9LPCPMRegs;
>  
>  void ich9_pm_init(PCIDevice *lpc_pci, ICH9LPCPMRegs *pm,
> -- 
> 1.8.3.1

  reply	other threads:[~2013-12-19 14:15 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-13 16:22 [Qemu-devel] [PATCH 00/11] pc: CPU hotplug support for Q35 Igor Mammedov
2013-12-13 16:22 ` [Qemu-devel] [PATCH 01/11] acpi: piix4: remove not needed GPE0 mask Igor Mammedov
2013-12-19 14:16   ` Michael S. Tsirkin
2013-12-13 16:22 ` [Qemu-devel] [PATCH 02/11] acpi: factor out common pm_update_sci() into acpi core Igor Mammedov
2013-12-19 14:16   ` Michael S. Tsirkin
2013-12-13 16:22 ` [Qemu-devel] [PATCH 03/11] acpi: factor out common cpu hotplug code for PIIX4/Q35 Igor Mammedov
2013-12-19 14:14   ` Michael S. Tsirkin
2013-12-19 15:13     ` Igor Mammedov
2013-12-13 16:22 ` [Qemu-devel] [PATCH 04/11] acpi/piix4: add readonly "cpu-hotplug-io-base" property Igor Mammedov
2013-12-13 16:22 ` [Qemu-devel] [PATCH 05/11] acpi: ich9: allow guest to clear SCI rised by GPE Igor Mammedov
2013-12-19 14:16   ` Michael S. Tsirkin
2013-12-13 16:22 ` [Qemu-devel] [PATCH 06/11] acpi/ich9: add CPU hotplug handling to Q35 machine Igor Mammedov
2013-12-19 14:18   ` Michael S. Tsirkin [this message]
2013-12-19 15:17     ` Igor Mammedov
2013-12-19 15:33       ` Michael S. Tsirkin
2013-12-13 16:22 ` [Qemu-devel] [PATCH 07/11] ACPI: Q35 DSDT: fix CPU hotplug GPE0.2 handler Igor Mammedov
2013-12-13 16:22 ` [Qemu-devel] [PATCH 08/11] ACPI/DSDT-CPU: cleanup bogus comment Igor Mammedov
2013-12-13 16:22 ` [Qemu-devel] [PATCH 09/11] ACPI: move PRST OperationRegion into SSDT Igor Mammedov
2013-12-16 19:30   ` Michael S. Tsirkin
2013-12-16 20:38     ` Igor Mammedov
2013-12-16 21:13       ` Laszlo Ersek
2013-12-16 21:22         ` Laszlo Ersek
2013-12-16 21:53         ` Igor Mammedov
2013-12-17 10:39           ` Michael S. Tsirkin
2013-12-16 21:44       ` Laszlo Ersek
2013-12-16 21:59         ` Igor Mammedov
2013-12-16 22:22           ` Laszlo Ersek
2013-12-16 23:13             ` Igor Mammedov
2013-12-16 19:53   ` Michael S. Tsirkin
2013-12-16 22:15     ` Igor Mammedov
2013-12-22 14:51     ` Igor Mammedov
2013-12-23 11:26       ` Michael S. Tsirkin
2013-12-23 13:06         ` Igor Mammedov
2013-12-23 14:48           ` Michael S. Tsirkin
2013-12-23 16:24             ` Igor Mammedov
2013-12-23 16:52               ` Laszlo Ersek
2013-12-28  0:39                 ` Igor Mammedov
2013-12-23 16:55               ` Michael S. Tsirkin
2013-12-13 16:22 ` [Qemu-devel] [PATCH 10/11] ACPI: set CPU hotplug io base dynamically Igor Mammedov
2013-12-13 16:22 ` [Qemu-devel] [PATCH 11/11] ACPI: update ssdt-misc.hex.generated acpi-dsdt.hex.generated q35-acpi-dsdt.hex.generated 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=20131219141859.GE10117@redhat.com \
    --to=mst@redhat.com \
    --cc=aliguori@amazon.com \
    --cc=brogers@suse.com \
    --cc=chen.fan.fnst@cn.fujitsu.com \
    --cc=hutao@cn.fujitsu.com \
    --cc=imammedo@redhat.com \
    --cc=jjherne@us.ibm.com \
    --cc=kaneshige.kenji@jp.fujitsu.com \
    --cc=kraxel@redhat.com \
    --cc=lersek@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.