qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 7/7] hw/pci: convert PCI bus to use "hotplug-dev


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH 7/7] hw/pci: convert PCI bus to use "hotplug-device" interface.
Date: Fri, 06 Dec 2013 18:29:58 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9

Il 06/12/2013 18:03, Igor Mammedov ha scritto:
> +    hotplug_dev = DEVICE(object_property_get_link(OBJECT(bus), 
> "hotplug-device",
> +                                                  &local_err));
> +    if (error_is_set(&local_err)) {
> +        goto error_exit;
> +    }
> +    if (hotplug_dev) {
> +        HotplugDeviceClass *hdc = HOTPLUG_DEVICE_GET_CLASS(hotplug_dev);
> +
> +        /* handler can differentiate between hotplug and when device is
> +         * enabled during qemu machine creation by inspecting
> +         * dev->hotplugged field. */
> +        if (hdc->hotplug) {
> +            hdc->hotplug(hotplug_dev, qdev, &local_err);
> +            if (error_is_set(&local_err)) {
> +                int r = pci_unregister_device(&pci_dev->qdev);
> +                assert(!r);
> +                goto error_exit;
> +            }
>          }
>      }

> +
> +    hotplug_dev = DEVICE(object_property_get_link(OBJECT(bus), 
> "hotplug-device",
> +                                                  &local_err));
> +    if (error_is_set(&local_err)) {
> +        goto error_exit;
> +    }
> +    if (hotplug_dev) {
> +        HotplugDeviceClass *hdc = HOTPLUG_DEVICE_GET_CLASS(hotplug_dev);
> +
> +        if (hdc->hot_unplug) {
> +            hdc->hot_unplug(hotplug_dev, qdev, &local_err);
> +            if (error_is_set(&local_err)) {
> +                goto error_exit;
> +            }
> +        }
> +    }

Please move the parts under the "if" to hotplug.c (something like
hotplug_handler_plug and hotplug_handler_unplug).  Also, should this be
moved up to generic code (e.g. bus_add_child/bus_remove_child)?

A NULL link can be a no-op for coldplugged devices, an error for
hotplugged devices, and an assertion failure for hot-unplug.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]