From: Paolo Bonzini <pbonzini@redhat.com>
To: Igor Mammedov <imammedo@redhat.com>, qemu-devel@nongnu.org
Cc: dmitry@daynix.com, borntraeger@de.ibm.com, mst@redhat.com,
agraf@suse.de, cornelia.huck@de.ibm.com, kraxel@redhat.com,
amit.shah@redhat.com, rth@twiddle.net
Subject: Re: [Qemu-devel] [PATCH 10/30] qdev: HotplugHandler: rename unplug callback to unplug_request
Date: Wed, 24 Sep 2014 14:16:28 +0200 [thread overview]
Message-ID: <5422B61C.8010500@redhat.com> (raw)
In-Reply-To: <1411559299-19042-11-git-send-email-imammedo@redhat.com>
Il 24/09/2014 13:47, Igor Mammedov ha scritto:
> 'HotplugHandler.unplug' callback is currently used as async
> call to issue unplug request for device that implements it.
> Renaming 'unplug' callback to 'unplug_request' should help to
> avoid confusion about what callback does and would allow to
> introduce 'unplug' callback that would perform actual device
> removal when guest is ready for it.
>
> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> ---
> Patch is prompted by reviewing https://patchwork.ozlabs.org/patch/383372/
>
> Dedicated 'unplug' callback could be used by bus-less pc-dimm
> device. It would allow to call HotplugHandler.unplug callback
> from ACPI code when guest calls _EJ0 method and execute board
> specific code (PCMachine) to unmap pc-dimm from guest's address
> space and perform necessary cleanup. The same applies to CPU
> unplug.
> ---
> hw/acpi/piix4.c | 6 +++---
> hw/core/hotplug.c | 10 +++++-----
> hw/core/qdev.c | 3 ++-
> hw/isa/lpc_ich9.c | 6 +++---
> hw/pci-bridge/pci_bridge_dev.c | 2 +-
> hw/pci/pcie.c | 4 ++--
> hw/pci/pcie_port.c | 2 +-
> hw/pci/shpc.c | 4 ++--
> include/hw/hotplug.h | 16 +++++++++-------
> include/hw/pci/pcie.h | 4 ++--
> include/hw/pci/shpc.h | 4 ++--
> 11 files changed, 32 insertions(+), 29 deletions(-)
>
> diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c
> index b72b34e..0bfa814 100644
> --- a/hw/acpi/piix4.c
> +++ b/hw/acpi/piix4.c
> @@ -354,8 +354,8 @@ static void piix4_device_plug_cb(HotplugHandler *hotplug_dev,
> }
> }
>
> -static void piix4_device_unplug_cb(HotplugHandler *hotplug_dev,
> - DeviceState *dev, Error **errp)
> +static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev,
> + DeviceState *dev, Error **errp)
> {
> PIIX4PMState *s = PIIX4_PM(hotplug_dev);
>
> @@ -615,7 +615,7 @@ static void piix4_pm_class_init(ObjectClass *klass, void *data)
> dc->cannot_instantiate_with_device_add_yet = true;
> dc->hotpluggable = false;
> hc->plug = piix4_device_plug_cb;
> - hc->unplug = piix4_device_unplug_cb;
> + hc->unplug_request = piix4_device_unplug_request_cb;
> adevc->ospm_status = piix4_ospm_status;
> }
>
> diff --git a/hw/core/hotplug.c b/hw/core/hotplug.c
> index 5573d9d..2ec4736 100644
> --- a/hw/core/hotplug.c
> +++ b/hw/core/hotplug.c
> @@ -23,14 +23,14 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
> }
> }
>
> -void hotplug_handler_unplug(HotplugHandler *plug_handler,
> - DeviceState *plugged_dev,
> - Error **errp)
> +void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
> + DeviceState *plugged_dev,
> + Error **errp)
> {
> HotplugHandlerClass *hdc = HOTPLUG_HANDLER_GET_CLASS(plug_handler);
>
> - if (hdc->unplug) {
> - hdc->unplug(plug_handler, plugged_dev, errp);
> + if (hdc->unplug_request) {
> + hdc->unplug_request(plug_handler, plugged_dev, errp);
> }
> }
>
> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
> index 5e5b963..c98e5db 100644
> --- a/hw/core/qdev.c
> +++ b/hw/core/qdev.c
> @@ -227,7 +227,8 @@ void qdev_unplug(DeviceState *dev, Error **errp)
> qdev_hot_removed = true;
>
> if (dev->parent_bus && dev->parent_bus->hotplug_handler) {
> - hotplug_handler_unplug(dev->parent_bus->hotplug_handler, dev, errp);
> + hotplug_handler_unplug_request(dev->parent_bus->hotplug_handler,
> + dev, errp);
> } else {
> assert(dc->unplug != NULL);
> if (dc->unplug(dev) < 0) { /* legacy handler */
> diff --git a/hw/isa/lpc_ich9.c b/hw/isa/lpc_ich9.c
> index 177023b..530b074 100644
> --- a/hw/isa/lpc_ich9.c
> +++ b/hw/isa/lpc_ich9.c
> @@ -607,8 +607,8 @@ static void ich9_device_plug_cb(HotplugHandler *hotplug_dev,
> ich9_pm_device_plug_cb(&lpc->pm, dev, errp);
> }
>
> -static void ich9_device_unplug_cb(HotplugHandler *hotplug_dev,
> - DeviceState *dev, Error **errp)
> +static void ich9_device_unplug_request_cb(HotplugHandler *hotplug_dev,
> + DeviceState *dev, Error **errp)
> {
> error_setg(errp, "acpi: device unplug request for not supported device"
> " type: %s", object_get_typename(OBJECT(dev)));
> @@ -676,7 +676,7 @@ static void ich9_lpc_class_init(ObjectClass *klass, void *data)
> */
> dc->cannot_instantiate_with_device_add_yet = true;
> hc->plug = ich9_device_plug_cb;
> - hc->unplug = ich9_device_unplug_cb;
> + hc->unplug_request = ich9_device_unplug_request_cb;
> adevc->ospm_status = ich9_pm_ospm_status;
> }
>
> diff --git a/hw/pci-bridge/pci_bridge_dev.c b/hw/pci-bridge/pci_bridge_dev.c
> index 92799d0..252ea5e 100644
> --- a/hw/pci-bridge/pci_bridge_dev.c
> +++ b/hw/pci-bridge/pci_bridge_dev.c
> @@ -150,7 +150,7 @@ static void pci_bridge_dev_class_init(ObjectClass *klass, void *data)
> dc->vmsd = &pci_bridge_dev_vmstate;
> set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
> hc->plug = shpc_device_hotplug_cb;
> - hc->unplug = shpc_device_hot_unplug_cb;
> + hc->unplug_request = shpc_device_hot_unplug_request_cb;
> }
>
> static const TypeInfo pci_bridge_dev_info = {
> diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
> index 1babddf..b64a004 100644
> --- a/hw/pci/pcie.c
> +++ b/hw/pci/pcie.c
> @@ -262,8 +262,8 @@ void pcie_cap_slot_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> PCI_EXP_HP_EV_PDC | PCI_EXP_HP_EV_ABP);
> }
>
> -void pcie_cap_slot_hot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> - Error **errp)
> +void pcie_cap_slot_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
> + DeviceState *dev, Error **errp)
> {
> uint8_t *exp_cap;
>
> diff --git a/hw/pci/pcie_port.c b/hw/pci/pcie_port.c
> index fa24877..40ca8d5 100644
> --- a/hw/pci/pcie_port.c
> +++ b/hw/pci/pcie_port.c
> @@ -154,7 +154,7 @@ static void pcie_slot_class_init(ObjectClass *oc, void *data)
>
> dc->props = pcie_slot_props;
> hc->plug = pcie_cap_slot_hotplug_cb;
> - hc->unplug = pcie_cap_slot_hot_unplug_cb;
> + hc->unplug_request = pcie_cap_slot_hot_unplug_request_cb;
> }
>
> static const TypeInfo pcie_slot_type_info = {
> diff --git a/hw/pci/shpc.c b/hw/pci/shpc.c
> index 1fcb8c4..65b2f51 100644
> --- a/hw/pci/shpc.c
> +++ b/hw/pci/shpc.c
> @@ -549,8 +549,8 @@ void shpc_device_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> shpc_interrupt_update(pci_hotplug_dev);
> }
>
> -void shpc_device_hot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> - Error **errp)
> +void shpc_device_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
> + DeviceState *dev, Error **errp)
> {
> Error *local_err = NULL;
> PCIDevice *pci_hotplug_dev = PCI_DEVICE(hotplug_dev);
> diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
> index a6533cb..e397d08 100644
> --- a/include/hw/hotplug.h
> +++ b/include/hw/hotplug.h
> @@ -47,7 +47,9 @@ typedef void (*hotplug_fn)(HotplugHandler *plug_handler,
> *
> * @parent: Opaque parent interface.
> * @plug: plug callback.
> - * @unplug: unplug callback.
> + * @unplug_request: unplug request callback.
> + * Used as a means to initiate device unplug for devices that
> + * require asynchronous unplug handling.
> */
> typedef struct HotplugHandlerClass {
> /* <private> */
> @@ -55,7 +57,7 @@ typedef struct HotplugHandlerClass {
>
> /* <public> */
> hotplug_fn plug;
> - hotplug_fn unplug;
> + hotplug_fn unplug_request;
> } HotplugHandlerClass;
>
> /**
> @@ -68,11 +70,11 @@ void hotplug_handler_plug(HotplugHandler *plug_handler,
> Error **errp);
>
> /**
> - * hotplug_handler_unplug:
> + * hotplug_handler_unplug_request:
> *
> - * Call #HotplugHandlerClass.unplug callback of @plug_handler.
> + * Calls #HotplugHandlerClass.unplug_request callback of @plug_handler.
> */
> -void hotplug_handler_unplug(HotplugHandler *plug_handler,
> - DeviceState *plugged_dev,
> - Error **errp);
> +void hotplug_handler_unplug_request(HotplugHandler *plug_handler,
> + DeviceState *plugged_dev,
> + Error **errp);
> #endif
> diff --git a/include/hw/pci/pcie.h b/include/hw/pci/pcie.h
> index d139d58..b48a7a2 100644
> --- a/include/hw/pci/pcie.h
> +++ b/include/hw/pci/pcie.h
> @@ -128,6 +128,6 @@ extern const VMStateDescription vmstate_pcie_device;
>
> void pcie_cap_slot_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> Error **errp);
> -void pcie_cap_slot_hot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> - Error **errp);
> +void pcie_cap_slot_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
> + DeviceState *dev, Error **errp);
> #endif /* QEMU_PCIE_H */
> diff --git a/include/hw/pci/shpc.h b/include/hw/pci/shpc.h
> index eef1a1a..025bc5b 100644
> --- a/include/hw/pci/shpc.h
> +++ b/include/hw/pci/shpc.h
> @@ -46,8 +46,8 @@ void shpc_cap_write_config(PCIDevice *d, uint32_t addr, uint32_t val, int len);
>
> void shpc_device_hotplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> Error **errp);
> -void shpc_device_hot_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev,
> - Error **errp);
> +void shpc_device_hot_unplug_request_cb(HotplugHandler *hotplug_dev,
> + DeviceState *dev, Error **errp);
>
> extern VMStateInfo shpc_vmstate_info;
> #define SHPC_VMSTATE(_field, _type) \
>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
next prev parent reply other threads:[~2014-09-24 12:16 UTC|newest]
Thread overview: 98+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-24 11:47 [Qemu-devel] [PATCH 00/30] complete conversion to hotplug-handler API Igor Mammedov
2014-09-24 11:47 ` [Qemu-devel] [PATCH 01/30] test: virtio-scsi: check if hot-plug/unplug works Igor Mammedov
2014-09-24 12:32 ` Paolo Bonzini
2014-09-24 11:47 ` [Qemu-devel] [PATCH 02/30] test: virtio-serial: " Igor Mammedov
2014-09-24 12:33 ` Paolo Bonzini
2014-09-24 11:47 ` [Qemu-devel] [PATCH 03/30] test: virtio-rng: " Igor Mammedov
2014-09-24 12:35 ` Paolo Bonzini
2014-09-24 11:47 ` [Qemu-devel] [PATCH 04/30] test: virtio-net: " Igor Mammedov
2014-09-24 12:35 ` Paolo Bonzini
2014-09-24 11:47 ` [Qemu-devel] [PATCH 05/30] test: virtio-blk: " Igor Mammedov
2014-09-24 12:35 ` Paolo Bonzini
2014-09-24 11:47 ` [Qemu-devel] [PATCH 06/30] test: usb: add port test to uhci unit test Igor Mammedov
2014-09-24 12:30 ` Gerd Hoffmann
2014-09-24 14:06 ` Igor Mammedov
2014-09-24 11:47 ` [Qemu-devel] [PATCH 07/30] test: usb: generic usb device hotplug Igor Mammedov
2014-09-24 11:47 ` [Qemu-devel] [PATCH 08/30] test: usb: usb-storage hotplug test Igor Mammedov
2014-09-24 11:47 ` [Qemu-devel] [PATCH 09/30] access BusState.allow_hotplug using wraper qbus_is_hotpluggable() Igor Mammedov
2014-09-24 12:32 ` Paolo Bonzini
2014-09-25 2:00 ` Tang Chen
2014-09-25 8:05 ` Igor Mammedov
2014-09-24 11:47 ` [Qemu-devel] [PATCH 10/30] qdev: HotplugHandler: rename unplug callback to unplug_request Igor Mammedov
2014-09-24 12:16 ` Paolo Bonzini [this message]
2014-09-24 11:48 ` [Qemu-devel] [PATCH 11/30] qdev: HotplugHandler: provide unplug callback Igor Mammedov
2014-09-24 12:17 ` Paolo Bonzini
2014-09-25 1:53 ` Tang Chen
2014-09-25 8:07 ` Igor Mammedov
2014-09-24 11:48 ` [Qemu-devel] [PATCH 12/30] qdev: add simple/generic unplug callback for HotplugHandler Igor Mammedov
2014-09-24 12:17 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 13/30] qdev: hotplug: set handler only if HOTPLUG_HANDLER interface is supported Igor Mammedov
2014-09-24 12:19 ` Paolo Bonzini
2014-09-24 14:01 ` Igor Mammedov
2014-09-25 2:06 ` Tang Chen
2014-09-24 11:48 ` [Qemu-devel] [PATCH 14/30] target-i386: ICC bus: replace BusState.allow_hotplug with hotplug_handler Igor Mammedov
2014-09-24 12:22 ` Paolo Bonzini
2014-09-24 14:37 ` Igor Mammedov
2014-09-24 14:50 ` Paolo Bonzini
2014-09-24 15:30 ` Igor Mammedov
2014-09-24 15:34 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 15/30] virtio-pci: " Igor Mammedov
2014-09-24 12:23 ` Paolo Bonzini
2014-09-24 14:51 ` Igor Mammedov
2014-09-24 14:53 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 16/30] virtio-serial: convert to hotplug-handler API Igor Mammedov
2014-09-24 12:24 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 17/30] virtio-mmio: drop useless bus->allow_hotplug = 0 Igor Mammedov
2014-09-24 12:24 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 18/30] s390x: drop not used allow_hotplug in event-facility Igor Mammedov
2014-09-24 12:24 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 19/30] s390x: convert s390-virtio to hotplug handler API Igor Mammedov
2014-09-24 11:48 ` [Qemu-devel] [PATCH 20/30] s390x: convert virtio-ccw " Igor Mammedov
2014-09-25 11:08 ` Cornelia Huck
2014-09-25 13:11 ` Igor Mammedov
2014-09-25 14:32 ` Cornelia Huck
2014-09-25 15:26 ` Igor Mammedov
2014-09-24 11:48 ` [Qemu-devel] [PATCH 21/30] scsi: make scsi_bus_new() assign hotplug controller Igor Mammedov
2014-09-24 12:11 ` Paolo Bonzini
2014-09-24 12:14 ` Paolo Bonzini
2014-09-24 15:00 ` Igor Mammedov
2014-09-24 11:48 ` [Qemu-devel] [PATCH 22/30] scsi: convert pvscsi HBA to hotplug hander API Igor Mammedov
2014-09-24 12:13 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 23/30] scsi: convert virtio-scsi HBA to hotplug handler API Igor Mammedov
2014-09-24 12:15 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 24/30] scsi: cleanup not used anymore SCSIBusInfo{hotplug, hot_unplug} fields Igor Mammedov
2014-09-24 12:12 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 25/30] usb-bot: drop not needed "allow_hotplug = 0" Igor Mammedov
2014-09-24 12:27 ` Paolo Bonzini
2014-09-24 15:15 ` Igor Mammedov
2014-09-24 15:21 ` Paolo Bonzini
2014-09-25 8:01 ` Gerd Hoffmann
2014-09-25 8:12 ` Igor Mammedov
2014-09-25 14:10 ` Gerd Hoffmann
2014-09-25 7:59 ` Gerd Hoffmann
2014-09-24 11:48 ` [Qemu-devel] [PATCH 26/30] usb-storage: make its storage SCSI bus hotpluggable explicitly Igor Mammedov
2014-09-24 12:30 ` Paolo Bonzini
2014-09-24 12:56 ` Gerd Hoffmann
2014-09-24 12:50 ` Gerd Hoffmann
2014-09-24 15:22 ` Igor Mammedov
2014-09-25 7:52 ` Gerd Hoffmann
2014-09-24 11:48 ` [Qemu-devel] [PATCH 27/30] usb-storage: drop not needed "allow_hotplug = 0" Igor Mammedov
2014-09-24 12:31 ` Paolo Bonzini
2014-09-24 11:48 ` [Qemu-devel] [PATCH 28/30] usb: convert to hotplug handler API Igor Mammedov
2014-09-24 13:00 ` Gerd Hoffmann
2014-09-24 13:04 ` Paolo Bonzini
2014-09-24 13:23 ` Gerd Hoffmann
2014-09-24 15:39 ` Igor Mammedov
2014-09-25 7:50 ` Gerd Hoffmann
2014-09-25 10:55 ` Igor Mammedov
2014-09-25 12:47 ` Paolo Bonzini
2014-09-25 13:22 ` Igor Mammedov
2014-09-24 15:40 ` Igor Mammedov
2014-09-24 11:48 ` [Qemu-devel] [PATCH 29/30] qdev: drop legacy hotplug fields/methods Igor Mammedov
2014-09-24 12:04 ` Paolo Bonzini
2014-09-24 15:37 ` Igor Mammedov
2014-09-24 11:48 ` [Qemu-devel] [PATCH 30/30] qdev: HotplugHandler: add support for unplugging BUS-less devices Igor Mammedov
2014-09-24 12:00 ` Paolo Bonzini
2014-09-24 13:01 ` [Qemu-devel] [PATCH 00/30] complete conversion to hotplug-handler API Cornelia Huck
2014-09-24 14:20 ` Igor Mammedov
2014-09-24 15:01 ` Cornelia Huck
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=5422B61C.8010500@redhat.com \
--to=pbonzini@redhat.com \
--cc=agraf@suse.de \
--cc=amit.shah@redhat.com \
--cc=borntraeger@de.ibm.com \
--cc=cornelia.huck@de.ibm.com \
--cc=dmitry@daynix.com \
--cc=imammedo@redhat.com \
--cc=kraxel@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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.