From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:54855) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VjKCp-0007Ct-Ki for qemu-devel@nongnu.org; Wed, 20 Nov 2013 21:41:29 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VjKCj-00046D-LO for qemu-devel@nongnu.org; Wed, 20 Nov 2013 21:41:23 -0500 Received: from mx1.redhat.com ([209.132.183.28]:6478) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VjKCj-000465-Bc for qemu-devel@nongnu.org; Wed, 20 Nov 2013 21:41:17 -0500 From: Igor Mammedov Date: Thu, 21 Nov 2013 03:38:38 +0100 Message-Id: <1385001528-12003-18-git-send-email-imammedo@redhat.com> In-Reply-To: <1385001528-12003-1-git-send-email-imammedo@redhat.com> References: <1385001528-12003-1-git-send-email-imammedo@redhat.com> Subject: [Qemu-devel] [PATCH 17/27] acpi: initialize memory hotplug ACPI ICH9 hardware List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org, stefanha@redhat.com, mst@redhat.com, chegu_vinod@hp.com, stefanb@linux.vnet.ibm.com, mjt@tls.msk.ru, mdroth@linux.vnet.ibm.com, armbru@redhat.com, vasilis.liaskovitis@profitbricks.com, quintela@redhat.com, kraxel@redhat.com, aliguori@amazon.com, hutao@cn.fujitsu.com, pbonzini@redhat.com, marcel.a@redhat.com, lcapitulino@redhat.com, afaerber@suse.de to be used by Q35 machine for handling hardware ACPI part of memory hotplug interface with guest. Signed-off-by: Igor Mammedov --- hw/acpi/ich9.c | 15 +++++++++++++++ include/hw/acpi/ich9.h | 6 ++++++ 2 files changed, 21 insertions(+), 0 deletions(-) diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index fb88162..0efb875 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -210,6 +210,10 @@ 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_memory_hotplug_init(OBJECT(lpc_pci), &pm->io_mem, &pm->gpe_mem); + memory_region_add_subregion(pci_address_space_io(lpc_pci), + ACPI_MEMORY_HOTPLUG_BASE, &pm->io_mem); } static void ich9_pm_get_gpe0_blk(Object *obj, Visitor *v, @@ -234,3 +238,14 @@ void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp) object_property_add_uint32_ptr(obj, ACPI_PM_PROP_GPE0_BLK_LEN, &gpe0_len, errp); } + +int ich9_mem_hotplug(DeviceState *hotplug_dev, DeviceState *dev, + HotplugState state) +{ + ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev); + ICH9LPCPMRegs *pm = &lpc->pm; + + acpi_memory_hotplug_cb(&pm->acpi_regs, &pm->gpe_mem, dev, state); + acpi_update_sci(&pm->acpi_regs, pm->irq, ACPI_MEMORY_HOTPLUG_STATUS); + return 0; +} diff --git a/include/hw/acpi/ich9.h b/include/hw/acpi/ich9.h index 82fcf9f..7e747be 100644 --- a/include/hw/acpi/ich9.h +++ b/include/hw/acpi/ich9.h @@ -34,6 +34,9 @@ typedef struct ICH9LPCPMRegs { MemoryRegion io; MemoryRegion io_gpe; MemoryRegion io_smi; + MemoryRegion io_mem; + + MemHotplugState gpe_mem; uint32_t smi_en; uint32_t smi_sts; @@ -51,4 +54,7 @@ extern const VMStateDescription vmstate_ich9_pm; void ich9_pm_add_properties(Object *obj, ICH9LPCPMRegs *pm, Error **errp); +int ich9_mem_hotplug(DeviceState *hotplug_dev, DeviceState *dev, + HotplugState state); + #endif /* HW_ACPI_ICH9_H */ -- 1.7.1