From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51318) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XlH0q-0007wp-0I for qemu-devel@nongnu.org; Mon, 03 Nov 2014 07:45:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XlH0l-0008Qm-33 for qemu-devel@nongnu.org; Mon, 03 Nov 2014 07:45:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:54055) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XlH0k-0008Qi-QF for qemu-devel@nongnu.org; Mon, 03 Nov 2014 07:45:31 -0500 Date: Mon, 3 Nov 2014 14:45:17 +0200 From: "Michael S. Tsirkin" Message-ID: <1415018633-16041-12-git-send-email-mst@redhat.com> References: <1415018633-16041-1-git-send-email-mst@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1415018633-16041-1-git-send-email-mst@redhat.com> Subject: [Qemu-devel] [PULL 11/29] acpi/cpu: add cpu hotplug callback function to match hotplug_handler API List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gu Zheng , Peter Maydell , Anthony Liguori , Igor Mammedov From: Gu Zheng Add cpu hotplug callback function (acpi_cpu_plug_cb) to match hotplug_handler API. Reviewed-by: Igor Mammedov Signed-off-by: Gu Zheng Acked-by: Michael S. Tsirkin Signed-off-by: Michael S. Tsirkin Reviewed-by: Igor Mammedov --- include/hw/acpi/cpu_hotplug.h | 3 +++ hw/acpi/cpu_hotplug.c | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/hw/acpi/cpu_hotplug.h b/include/hw/acpi/cpu_hotplug.h index 9e5d30c..5dca8d7 100644 --- a/include/hw/acpi/cpu_hotplug.h +++ b/include/hw/acpi/cpu_hotplug.h @@ -20,6 +20,9 @@ typedef struct AcpiCpuHotplug { uint8_t sts[ACPI_GPE_PROC_LEN]; } AcpiCpuHotplug; +void acpi_cpu_plug_cb(ACPIREGS *ar, qemu_irq irq, + AcpiCpuHotplug *g, DeviceState *dev, Error **errp); + void AcpiCpuHotplug_add(ACPIGPE *gpe, AcpiCpuHotplug *g, CPUState *cpu); void AcpiCpuHotplug_init(MemoryRegion *parent, Object *owner, diff --git a/hw/acpi/cpu_hotplug.c b/hw/acpi/cpu_hotplug.c index 2ad83a0..06e9c61 100644 --- a/hw/acpi/cpu_hotplug.c +++ b/hw/acpi/cpu_hotplug.c @@ -36,6 +36,24 @@ static const MemoryRegionOps AcpiCpuHotplug_ops = { }, }; +void acpi_cpu_plug_cb(ACPIREGS *ar, qemu_irq irq, + AcpiCpuHotplug *g, DeviceState *dev, Error **errp) +{ + CPUState *cpu = CPU(dev); + CPUClass *k = CPU_GET_CLASS(cpu); + int64_t cpu_id; + + cpu_id = k->get_arch_id(cpu); + if ((cpu_id / 8) >= ACPI_GPE_PROC_LEN) { + error_setg(errp, "acpi: invalid cpu id: %" PRIi64, cpu_id); + return; + } + + AcpiCpuHotplug_add(&ar->gpe, g, cpu); + + acpi_update_sci(ar, irq); +} + void AcpiCpuHotplug_add(ACPIGPE *gpe, AcpiCpuHotplug *g, CPUState *cpu) { CPUClass *k = CPU_GET_CLASS(cpu); -- MST