[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v1 7/7] spapr_pci: route unplug via the hotplug ha
From: |
Greg Kurz |
Subject: |
Re: [Qemu-ppc] [PATCH v1 7/7] spapr_pci: route unplug via the hotplug handler |
Date: |
Wed, 24 Oct 2018 14:50:33 +0200 |
On Wed, 24 Oct 2018 12:19:30 +0200
David Hildenbrand <address@hidden> wrote:
> Preparation for multi-stage hotplug handlers.
>
> Signed-off-by: David Hildenbrand <address@hidden>
> ---
Reviewed-by: Greg Kurz <address@hidden>
> hw/ppc/spapr_pci.c | 33 +++++++++++++++++++++------------
> 1 file changed, 21 insertions(+), 12 deletions(-)
>
> diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c
> index 58afa46204..64b8591023 100644
> --- a/hw/ppc/spapr_pci.c
> +++ b/hw/ppc/spapr_pci.c
> @@ -1370,18 +1370,9 @@ static int spapr_create_pci_child_dt(sPAPRPHBState
> *phb, PCIDevice *dev,
> /* Callback to be called during DRC release. */
> void spapr_phb_remove_pci_device_cb(DeviceState *dev)
> {
> - /* some version guests do not wait for completion of a device
> - * cleanup (generally done asynchronously by the kernel) before
> - * signaling to QEMU that the device is safe, but instead sleep
> - * for some 'safe' period of time. unfortunately on a busy host
> - * this sleep isn't guaranteed to be long enough, resulting in
> - * bad things like IRQ lines being left asserted during final
> - * device removal. to deal with this we call reset just prior
> - * to finalizing the device, which will put the device back into
> - * an 'idle' state, as the device cleanup code expects.
> - */
> - pci_device_reset(PCI_DEVICE(dev));
> - object_unparent(OBJECT(dev));
> + HotplugHandler *hotplug_ctrl = qdev_get_hotplug_handler(dev);
> +
> + hotplug_handler_unplug(hotplug_ctrl, dev, &error_abort);
> }
>
> static sPAPRDRConnector *spapr_phb_get_pci_func_drc(sPAPRPHBState *phb,
> @@ -1490,6 +1481,23 @@ out:
> }
> }
>
> +static void spapr_pci_unplug(HotplugHandler *plug_handler,
> + DeviceState *plugged_dev, Error **errp)
> +{
> + /* some version guests do not wait for completion of a device
> + * cleanup (generally done asynchronously by the kernel) before
> + * signaling to QEMU that the device is safe, but instead sleep
> + * for some 'safe' period of time. unfortunately on a busy host
> + * this sleep isn't guaranteed to be long enough, resulting in
> + * bad things like IRQ lines being left asserted during final
> + * device removal. to deal with this we call reset just prior
> + * to finalizing the device, which will put the device back into
> + * an 'idle' state, as the device cleanup code expects.
> + */
> + pci_device_reset(PCI_DEVICE(plugged_dev));
> + object_unparent(OBJECT(plugged_dev));
> +}
> +
> static void spapr_pci_unplug_request(HotplugHandler *plug_handler,
> DeviceState *plugged_dev, Error **errp)
> {
> @@ -1965,6 +1973,7 @@ static void spapr_phb_class_init(ObjectClass *klass,
> void *data)
> dc->user_creatable = true;
> set_bit(DEVICE_CATEGORY_BRIDGE, dc->categories);
> hp->plug = spapr_pci_plug;
> + hp->unplug = spapr_pci_unplug;
> hp->unplug_request = spapr_pci_unplug_request;
> }
>
- [Qemu-ppc] [PATCH v1 0/7] pci: hotplug handler reworks, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 1/7] pcihp: perform check for bus capability in pre_plug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 2/7] pcihp: overwrite hotplug handler recursively from the start, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 3/7] pcihp: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 4/7] pci/pcie: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 5/7] pci/shpc: move hotplug checks to preplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 6/7] pci/shpc: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- [Qemu-ppc] [PATCH v1 7/7] spapr_pci: route unplug via the hotplug handler, David Hildenbrand, 2018/10/24
- Re: [Qemu-ppc] [PATCH v1 7/7] spapr_pci: route unplug via the hotplug handler,
Greg Kurz <=
- Re: [Qemu-ppc] [PATCH v1 0/7] pci: hotplug handler reworks, David Hildenbrand, 2018/10/31