From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43413) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y8rEv-0007Ul-Qw for qemu-devel@nongnu.org; Wed, 07 Jan 2015 09:06:10 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y8rEe-00046L-7U for qemu-devel@nongnu.org; Wed, 07 Jan 2015 09:05:37 -0500 Received: from [59.151.112.132] (port=32019 helo=heian.cn.fujitsu.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y8rEd-0003qc-Dg for qemu-devel@nongnu.org; Wed, 07 Jan 2015 09:05:20 -0500 From: Tang Chen Date: Wed, 7 Jan 2015 14:49:45 +0800 Message-ID: <1420613385-13679-6-git-send-email-tangchen@cn.fujitsu.com> In-Reply-To: <1420613385-13679-1-git-send-email-tangchen@cn.fujitsu.com> References: <1420613385-13679-1-git-send-email-tangchen@cn.fujitsu.com> MIME-Version: 1.0 Content-Type: text/plain Subject: [Qemu-devel] [RESEND PATCH v1 5/5] acpi, piix4: Add unplug cb for piix4. List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org, imammedo@redhat.com, mst@redhat.com, pbonzini@redhat.com Cc: guz.fnst@cn.fujitsu.com, hutao@cn.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com, zhugh.fnst@cn.fujitsu.com, tangchen@cn.fujitsu.com Memory and CPU hot unplug are both asynchronize procedures. When the unplug operation happens, unplug request cb is called first. And when ghest OS finished handling unplug, unplug cb will be called to do the real removal of device. This patch adds hotunplug cb for piix4, and memory and CPU hot unplug will base on it. --- hw/acpi/piix4.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index 481a16c..4407388 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -370,6 +370,13 @@ static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev, } } +static void piix4_device_unplug_cb(HotplugHandler *hotplug_dev, + DeviceState *dev, Error **errp) +{ + error_setg(errp, "acpi: device unplug for not supported device" + " type: %s", object_get_typename(OBJECT(dev))); +} + static void piix4_update_bus_hotplug(PCIBus *pci_bus, void *opaque) { PIIX4PMState *s = opaque; @@ -610,6 +617,7 @@ static void piix4_pm_class_init(ObjectClass *klass, void *data) dc->hotpluggable = false; hc->plug = piix4_device_plug_cb; hc->unplug_request = piix4_device_unplug_request_cb; + hc->unplug = piix4_device_unplug_cb; adevc->ospm_status = piix4_ospm_status; } -- 1.8.4.2