From: David Gibson <david@gibson.dropbear.id.au>
To: Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org, qemu-ppc@nongnu.org, afaerber@suse.de,
imammedo@redhat.com, armbru@redhat.com, thuth@redhat.com,
aik@ozlabs.ru, agraf@suse.de, pbonzini@redhat.com,
ehabkost@redhat.com, pkrempa@redhat.com,
mdroth@linux.vnet.ibm.com, eblake@redhat.com,
mjrosato@linux.vnet.ibm.com, borntraeger@de.ibm.com
Subject: Re: [Qemu-devel] [for-2.7 PATCH v3 05/15] qdev: hotplug: Introduce HotplugHandler.pre_plug() callback
Date: Thu, 2 Jun 2016 11:15:44 +1000 [thread overview]
Message-ID: <20160602011544.GH15455@voom.fritz.box> (raw)
In-Reply-To: <1463024905-28401-6-git-send-email-bharata@linux.vnet.ibm.com>
[-- Attachment #1: Type: text/plain, Size: 4182 bytes --]
On Thu, May 12, 2016 at 09:18:15AM +0530, Bharata B Rao wrote:
> From: Igor Mammedov <imammedo@redhat.com>
>
> pre_plug callback is to be called before device.realize() is executed.
> This would allow to check/set device's properties from HotplugHandler.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> Signed-off-by: Bharata B Rao <bharata@linux.vnet.ibm.com>
> Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Igor, do you think we're ready to merge this?
If so, do you want to take it through your tree, or should I take it
through the ppc tree?
> ---
> hw/core/hotplug.c | 11 +++++++++++
> hw/core/qdev.c | 9 ++++++++-
> include/hw/hotplug.h | 14 +++++++++++++-
> 3 files changed, 32 insertions(+), 2 deletions(-)
>
> diff --git a/hw/core/hotplug.c b/hw/core/hotplug.c
> index 645cfca..17ac986 100644
> --- a/hw/core/hotplug.c
> +++ b/hw/core/hotplug.c
> @@ -13,6 +13,17 @@
> #include "hw/hotplug.h"
> #include "qemu/module.h"
>
> +void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
> + DeviceState *plugged_dev,
> + Error **errp)
> +{
> + HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
> +
> + if (hdc->pre_plug) {
> + hdc->pre_plug(plug_handler, plugged_dev, errp);
> + }
> +}
> +
> void hotplug_handler_plug(HotplugHandler *plug_handler,
> DeviceState *plugged_dev,
> Error **errp)
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index db41aa1..a0b3aad 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -1062,6 +1062,14 @@ static void device_set_realized(Object *obj, bool value, Error **errp)
> g_free(name);
> }
>
> + hotplug_ctrl = qdev_get_hotplug_handler(dev);
> + if (hotplug_ctrl) {
> + hotplug_handler_pre_plug(hotplug_ctrl, dev, &local_err);
> + if (local_err != NULL) {
> + goto fail;
> + }
> + }
> +
> if (dc->realize) {
> dc->realize(dev, &local_err);
> }
> @@ -1072,7 +1080,6 @@ static void device_set_realized(Object *obj, bool value, Error **errp)
>
> DEVICE_LISTENER_CALL(realize, Forward, dev);
>
> - hotplug_ctrl = qdev_get_hotplug_handler(dev);
> if (hotplug_ctrl) {
> hotplug_handler_plug(hotplug_ctrl, dev, &local_err);
> }
> diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
> index da1d0e4..c0db869 100644
> --- a/include/hw/hotplug.h
> +++ b/include/hw/hotplug.h
> @@ -45,7 +45,8 @@ typedef void (*hotplug_fn)(HotplugHandler *plug_handler,
> * hardware (un)plug functions.
> *
> * @parent: Opaque parent interface.
> - * @plug: plug callback.
> + * @pre_plug: pre plug callback called at start of device.realize(true)
> + * @plug: plug callback called at end of device.realize(true).
> * @unplug_request: unplug request callback.
> * Used as a means to initiate device unplug for devices that
> * require asynchronous unplug handling.
> @@ -58,6 +59,7 @@ typedef struct HotplugHandlerClass {
> InterfaceClass parent;
>
> /* <public> */
> + hotplug_fn pre_plug;
> hotplug_fn plug;
> hotplug_fn unplug_request;
> hotplug_fn unplug;
> @@ -73,6 +75,16 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
> Error **errp);
>
> /**
> + * hotplug_handler_pre_plug:
> + *
> + * Call #HotplugHandlerClass.pre_plug callback of @plug_handler.
> + */
> +void hotplug_handler_pre_plug(HotplugHandler *plug_handler,
> + DeviceState *plugged_dev,
> + Error **errp);
> +
> +
> +/**
> * hotplug_handler_unplug_request:
> *
> * Calls #HotplugHandlerClass.unplug_request callback of @plug_handler.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2016-06-02 2:10 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-12 3:48 [Qemu-devel] [for-2.7 PATCH v3 00/15] Core based CPU hotplug for PowerPC sPAPR Bharata B Rao
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 01/15] exec: Remove cpu from cpus list during cpu_exec_exit() Bharata B Rao
2016-05-26 10:12 ` Paolo Bonzini
2016-05-27 3:07 ` David Gibson
2016-05-27 9:51 ` Paolo Bonzini
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 02/15] exec: Do vmstate unregistration from cpu_exec_exit() Bharata B Rao
2016-05-26 10:22 ` Paolo Bonzini
2016-05-30 15:22 ` [Qemu-devel] [PATCH] fixup! " Igor Mammedov
2016-05-31 0:02 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 03/15] cpu: Reclaim vCPU objects Bharata B Rao
2016-05-26 10:19 ` Paolo Bonzini
2016-05-26 10:47 ` Bharata B Rao
[not found] ` <201605261048.u4QAibq4039252@mx0a-001b2d01.pphosted.com>
2016-05-26 10:51 ` Paolo Bonzini
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 04/15] cpu: Add a sync version of cpu_remove() Bharata B Rao
2016-05-26 10:22 ` Paolo Bonzini
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 05/15] qdev: hotplug: Introduce HotplugHandler.pre_plug() callback Bharata B Rao
2016-06-02 1:15 ` David Gibson [this message]
2016-06-02 9:32 ` Igor Mammedov
2016-06-03 5:10 ` David Gibson
2016-06-03 9:23 ` Igor Mammedov
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 06/15] cpu: Abstract CPU core type Bharata B Rao
2016-06-02 3:38 ` David Gibson
2016-06-02 9:35 ` Igor Mammedov
2016-06-02 18:12 ` Eduardo Habkost
2016-06-03 5:06 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 07/15] spapr: Abstract CPU core device and type specific core devices Bharata B Rao
2016-06-03 5:25 ` David Gibson
2016-06-08 9:42 ` Bharata B Rao
2016-06-09 0:45 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 08/15] spapr: convert boot CPUs into CPU " Bharata B Rao
2016-06-03 5:32 ` David Gibson
2016-06-08 12:23 ` Bharata B Rao
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 09/15] spapr: CPU hotplug support Bharata B Rao
2016-06-03 6:10 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 10/15] xics, xics_kvm: Handle CPU unplug correctly Bharata B Rao
2016-06-03 6:14 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 11/15] spapr_drc: Prevent detach racing against attach for CPU DR Bharata B Rao
2016-06-03 6:17 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 12/15] spapr: CPU hot unplug support Bharata B Rao
2016-06-03 6:27 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 13/15] QMP: Add query-hotpluggable-cpus Bharata B Rao
2016-06-06 5:28 ` David Gibson
2016-06-06 8:42 ` Igor Mammedov
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 14/15] hmp: Add 'info hotpluggable-cpus' HMP command Bharata B Rao
2016-06-06 5:29 ` David Gibson
2016-05-12 3:48 ` [Qemu-devel] [for-2.7 PATCH v3 15/15] spapr: implement query-hotpluggable-cpus callback Bharata B Rao
2016-06-06 5:37 ` David Gibson
2016-05-25 6:54 ` [Qemu-devel] [for-2.7 PATCH v3 00/15] Core based CPU hotplug for PowerPC sPAPR Thomas Huth
2016-05-25 16:03 ` Andreas Färber
2016-05-26 6:20 ` David Gibson
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=20160602011544.GH15455@voom.fritz.box \
--to=david@gibson.dropbear.id.au \
--cc=afaerber@suse.de \
--cc=agraf@suse.de \
--cc=aik@ozlabs.ru \
--cc=armbru@redhat.com \
--cc=bharata@linux.vnet.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mjrosato@linux.vnet.ibm.com \
--cc=pbonzini@redhat.com \
--cc=pkrempa@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=thuth@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.