From: Paolo Bonzini <pbonzini@redhat.com>
To: David Gibson <david@gibson.dropbear.id.au>,
Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: mjrosato@linux.vnet.ibm.com, agraf@suse.de, thuth@redhat.com,
pkrempa@redhat.com, ehabkost@redhat.com, aik@ozlabs.ru,
qemu-devel@nongnu.org, armbru@redhat.com, borntraeger@de.ibm.com,
qemu-ppc@nongnu.org, imammedo@redhat.com, afaerber@suse.de,
mdroth@linux.vnet.ibm.com
Subject: Re: [Qemu-devel] [RFC PATCH v2.1 05/12] qdev: hotplug: Introduce HotplugHandler.pre_plug() callback
Date: Fri, 1 Apr 2016 12:38:28 +0200 [thread overview]
Message-ID: <56FE4FA4.8090702@redhat.com> (raw)
In-Reply-To: <20160401033054.GM416@voom.redhat.com>
[-- Attachment #1.1: Type: text/plain, Size: 4169 bytes --]
On 01/04/2016 05:30, David Gibson wrote:
> On Thu, Mar 31, 2016 at 02:09:14PM +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>
>
> It would be really nice to get some opinion on this from Andreas or
> Paolo.
Certainly okay for me, Igor did all of the HotplugHandler design and work.
Paolo
>> ---
>> 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 2db025d..50d84e9 100644
>> --- a/include/hw/hotplug.h
>> +++ b/include/hw/hotplug.h
>> @@ -46,7 +46,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.
>> @@ -59,6 +60,7 @@ typedef struct HotplugHandlerClass {
>> InterfaceClass parent;
>>
>> /* <public> */
>> + hotplug_fn pre_plug;
>> hotplug_fn plug;
>> hotplug_fn unplug_request;
>> hotplug_fn unplug;
>> @@ -74,6 +76,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.
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]
next prev parent reply other threads:[~2016-04-01 10:38 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-31 8:39 [Qemu-devel] [RFC PATCH v2.1 00/12] Core based CPU hotplug for PowerPC sPAPR Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 01/12] exec: Remove cpu from cpus list during cpu_exec_exit() Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 02/12] exec: Do vmstate unregistration from cpu_exec_exit() Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 03/12] cpu: Reclaim vCPU objects Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 04/12] cpu: Add a sync version of cpu_remove() Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 05/12] qdev: hotplug: Introduce HotplugHandler.pre_plug() callback Bharata B Rao
2016-04-01 3:30 ` David Gibson
2016-04-01 10:38 ` Paolo Bonzini [this message]
2016-04-04 0:09 ` David Gibson
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 06/12] cpu: Abstract CPU core type Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 07/12] spapr: Abstract CPU core device Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 08/12] spapr: Add CPU type specific core devices Bharata B Rao
2016-04-01 5:08 ` David Gibson
2016-04-01 6:12 ` Bharata B Rao
2016-04-04 0:13 ` David Gibson
2016-04-09 2:21 ` Michael Roth
2016-04-04 0:16 ` David Gibson
2016-04-08 23:35 ` Michael Roth
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 09/12] spapr: convert boot CPUs into CPU " Bharata B Rao
2016-04-01 5:12 ` David Gibson
2016-04-08 23:35 ` Michael Roth
2016-05-05 9:19 ` Bharata B Rao
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 10/12] spapr: CPU hotplug support Bharata B Rao
2016-04-04 4:23 ` David Gibson
2016-04-05 23:47 ` Michael Roth
2016-05-05 9:22 ` Bharata B Rao
2016-05-06 8:57 ` Igor Mammedov
2016-05-06 10:14 ` Bharata B Rao
2016-05-06 11:01 ` Igor Mammedov
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 11/12] xics, xics_kvm: Handle CPU unplug correctly Bharata B Rao
2016-04-06 0:24 ` Michael Roth
2016-04-06 0:43 ` David Gibson
2016-04-08 23:40 ` Michael Roth
2016-03-31 8:39 ` [Qemu-devel] [RFC PATCH v2.1 12/12] spapr: CPU hot unplug support Bharata B Rao
2016-04-04 4:27 ` David Gibson
2016-05-09 4:24 ` Bharata B Rao
2016-04-04 14:44 ` [Qemu-devel] [RFC PATCH v2.1 00/12] Core based CPU hotplug for PowerPC sPAPR Igor Mammedov
2016-04-05 14:55 ` Bharata B Rao
2016-04-05 18:40 ` Igor Mammedov
2016-04-05 21:58 ` Igor Mammedov
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=56FE4FA4.8090702@redhat.com \
--to=pbonzini@redhat.com \
--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=david@gibson.dropbear.id.au \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=mdroth@linux.vnet.ibm.com \
--cc=mjrosato@linux.vnet.ibm.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.