From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42956) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1c4Vss-0006Xc-0W for qemu-devel@nongnu.org; Wed, 09 Nov 2016 11:37:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1c4Vso-0003CK-MI for qemu-devel@nongnu.org; Wed, 09 Nov 2016 11:37:58 -0500 Received: from mx1.redhat.com ([209.132.183.28]:42146) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1c4Vso-0003CC-EN for qemu-devel@nongnu.org; Wed, 09 Nov 2016 11:37:54 -0500 Date: Wed, 9 Nov 2016 17:37:49 +0100 From: Igor Mammedov Message-ID: <20161109173749.0b7b9c30@nial.brq.redhat.com> In-Reply-To: <1478517229-140028-2-git-send-email-guangrong.xiao@linux.intel.com> References: <1478517229-140028-1-git-send-email-guangrong.xiao@linux.intel.com> <1478517229-140028-2-git-send-email-guangrong.xiao@linux.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 01/14] qdev: hotplug: drop HotplugHandler.post_plug callback List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Xiao Guangrong Cc: pbonzini@redhat.com, gleb@kernel.org, mtosatti@redhat.com, stefanha@redhat.com, mst@redhat.com, rth@twiddle.net, ehabkost@redhat.com, dan.j.williams@intel.com, kvm@vger.kernel.org, qemu-devel@nongnu.org On Mon, 7 Nov 2016 19:13:36 +0800 Xiao Guangrong wrote: > as nvdimm acpi is okay to build fit when the nvdimm device > has not been 'realized' > > Suggested-by: Igor Mammedov > Signed-off-by: Xiao Guangrong Reviewed-by: Igor Mammedov > --- > hw/acpi/nvdimm.c | 6 +----- > hw/core/hotplug.c | 11 ----------- > hw/core/qdev.c | 20 ++++---------------- > hw/i386/pc.c | 23 ++++------------------- > include/hw/hotplug.h | 11 ----------- > 5 files changed, 9 insertions(+), 62 deletions(-) > > diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c > index 602ec54..623bb36 100644 > --- a/hw/acpi/nvdimm.c > +++ b/hw/acpi/nvdimm.c > @@ -38,11 +38,7 @@ static int nvdimm_plugged_device_list(Object *obj, void *opaque) > GSList **list = opaque; > > if (object_dynamic_cast(obj, TYPE_NVDIMM)) { > - DeviceState *dev = DEVICE(obj); > - > - if (dev->realized) { /* only realized NVDIMMs matter */ > - *list = g_slist_append(*list, DEVICE(obj)); > - } > + *list = g_slist_append(*list, DEVICE(obj)); > } > > object_child_foreach(obj, nvdimm_plugged_device_list, opaque); > diff --git a/hw/core/hotplug.c b/hw/core/hotplug.c > index ab34c19..17ac986 100644 > --- a/hw/core/hotplug.c > +++ b/hw/core/hotplug.c > @@ -35,17 +35,6 @@ void hotplug_handler_plug(HotplugHandler *plug_handler, > } > } > > -void hotplug_handler_post_plug(HotplugHandler *plug_handler, > - DeviceState *plugged_dev, > - Error **errp) > -{ > - HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler); > - > - if (hdc->post_plug) { > - hdc->post_plug(plug_handler, plugged_dev, errp); > - } > -} > - > void hotplug_handler_unplug_request(HotplugHandler *plug_handler, > DeviceState *plugged_dev, > Error **errp) > diff --git a/hw/core/qdev.c b/hw/core/qdev.c > index d835e62..5783442 100644 > --- a/hw/core/qdev.c > +++ b/hw/core/qdev.c > @@ -945,21 +945,10 @@ static void device_set_realized(Object *obj, bool value, Error **errp) > goto child_realize_fail; > } > } > - > if (dev->hotplugged) { > device_reset(dev); > } > dev->pending_deleted_event = false; > - dev->realized = value; > - > - if (hotplug_ctrl) { > - hotplug_handler_post_plug(hotplug_ctrl, dev, &local_err); > - } > - > - if (local_err != NULL) { > - dev->realized = value; > - goto post_realize_fail; > - } > } else if (!value && dev->realized) { > Error **local_errp = NULL; > QLIST_FOREACH(bus, &dev->child_bus, sibling) { > @@ -976,14 +965,13 @@ static void device_set_realized(Object *obj, bool value, Error **errp) > } > dev->pending_deleted_event = true; > DEVICE_LISTENER_CALL(unrealize, Reverse, dev); > + } > > - if (local_err != NULL) { > - goto fail; > - } > - > - dev->realized = value; > + if (local_err != NULL) { > + goto fail; > } > > + dev->realized = value; > return; > > child_realize_fail: > diff --git a/hw/i386/pc.c b/hw/i386/pc.c > index c011552..8ef3920 100644 > --- a/hw/i386/pc.c > +++ b/hw/i386/pc.c > @@ -1715,22 +1715,16 @@ static void pc_dimm_plug(HotplugHandler *hotplug_dev, > goto out; > } > > + if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { > + nvdimm_acpi_hotplug(&pcms->acpi_nvdimm_state); > + } > + > hhc = HOTPLUG_HANDLER_GET_CLASS(pcms->acpi_dev); > hhc->plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &error_abort); > out: > error_propagate(errp, local_err); > } > > -static void pc_dimm_post_plug(HotplugHandler *hotplug_dev, > - DeviceState *dev, Error **errp) > -{ > - PCMachineState *pcms = PC_MACHINE(hotplug_dev); > - > - if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { > - nvdimm_acpi_hotplug(&pcms->acpi_nvdimm_state); > - } > -} > - > static void pc_dimm_unplug_request(HotplugHandler *hotplug_dev, > DeviceState *dev, Error **errp) > { > @@ -2008,14 +2002,6 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev, > } > } > > -static void pc_machine_device_post_plug_cb(HotplugHandler *hotplug_dev, > - DeviceState *dev, Error **errp) > -{ > - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { > - pc_dimm_post_plug(hotplug_dev, dev, errp); > - } > -} > - > static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev, > DeviceState *dev, Error **errp) > { > @@ -2320,7 +2306,6 @@ static void pc_machine_class_init(ObjectClass *oc, void *data) > mc->reset = pc_machine_reset; > hc->pre_plug = pc_machine_device_pre_plug_cb; > hc->plug = pc_machine_device_plug_cb; > - hc->post_plug = pc_machine_device_post_plug_cb; > hc->unplug_request = pc_machine_device_unplug_request_cb; > hc->unplug = pc_machine_device_unplug_cb; > nc->nmi_monitor_handler = x86_nmi; > diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h > index 10ca5b6..1a0516a 100644 > --- a/include/hw/hotplug.h > +++ b/include/hw/hotplug.h > @@ -47,7 +47,6 @@ typedef void (*hotplug_fn)(HotplugHandler *plug_handler, > * @parent: Opaque parent interface. > * @pre_plug: pre plug callback called at start of device.realize(true) > * @plug: plug callback called at end of device.realize(true). > - * @post_pug: post plug callback called after device is successfully plugged. > * @unplug_request: unplug request callback. > * Used as a means to initiate device unplug for devices that > * require asynchronous unplug handling. > @@ -62,7 +61,6 @@ typedef struct HotplugHandlerClass { > /* */ > hotplug_fn pre_plug; > hotplug_fn plug; > - hotplug_fn post_plug; > hotplug_fn unplug_request; > hotplug_fn unplug; > } HotplugHandlerClass; > @@ -86,15 +84,6 @@ void hotplug_handler_pre_plug(HotplugHandler *plug_handler, > Error **errp); > > /** > - * hotplug_handler_post_plug: > - * > - * Call #HotplugHandlerClass.post_plug callback of @plug_handler. > - */ > -void hotplug_handler_post_plug(HotplugHandler *plug_handler, > - DeviceState *plugged_dev, > - Error **errp); > - > -/** > * hotplug_handler_unplug_request: > * > * Calls #HotplugHandlerClass.unplug_request callback of @plug_handler.