All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Igor Mammedov <imammedo@redhat.com>,
	Bharata B Rao <bharata@linux.vnet.ibm.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v2 36/36] qdev: HotplugHandler: add support for unplugging BUS-less devices
Date: Wed, 01 Oct 2014 14:46:03 +0200	[thread overview]
Message-ID: <542BF78B.20008@suse.de> (raw)
In-Reply-To: <20141001144323.5dfa8a1d@igors-macbook-pro.local>

Am 01.10.2014 um 14:43 schrieb Igor Mammedov:
> On Wed, 1 Oct 2014 16:22:23 +0530
> Bharata B Rao <bharata@linux.vnet.ibm.com> wrote:
> 
>> On Wed, Oct 01, 2014 at 11:57:37AM +0200, Igor Mammedov wrote:
>>> On Wed, 1 Oct 2014 14:27:19 +0530
>>> Bharata B Rao <bharata@linux.vnet.ibm.com> wrote:
>>>
>>>> On Fri, Sep 26, 2014 at 09:28:41AM +0000, Igor Mammedov wrote:
>>>>> Signed-off-by: Igor Mammedov <imammedo@redhat.com>
>>>>> ---
>>>>> v2:
>>>>>   merged in Paolo's suggestion to reduce indentation in patch
>>>>> ---
>>>>>  hw/core/qdev.c | 61
>>>>> ++++++++++++++++++++++++++++++++-------------------------- 1
>>>>> file changed, 34 insertions(+), 27 deletions(-)
>>>>>
>>>>> diff --git a/hw/core/qdev.c b/hw/core/qdev.c
>>>>> index bc45a59..215effb 100644
>>>>> --- a/hw/core/qdev.c
>>>>> +++ b/hw/core/qdev.c
>>>>> @@ -223,9 +223,28 @@ void
>>>>> qdev_set_legacy_instance_id(DeviceState *dev, int alias_id,
>>>>> dev->alias_required_for_version = required_for_version; }
>>>>>
>>>>> +static HotplugHandler *qdev_get_hotplug_handler(DeviceState
>>>>> *dev) +{
>>>>> +    HotplugHandler *hotplug_ctrl = NULL;
>>>>> +
>>>>> +    if (dev->parent_bus && dev->parent_bus->hotplug_handler) {
>>>>> +        hotplug_ctrl = dev->parent_bus->hotplug_handler;
>>>>> +    } else if (object_dynamic_cast(qdev_get_machine(),
>>>>> TYPE_MACHINE)) {
>>>>> +        MachineState *machine = MACHINE(qdev_get_machine());
>>>>> +        MachineClass *mc = MACHINE_GET_CLASS(machine);
>>>>> +
>>>>> +        if (mc->get_hotplug_handler) {
>>>>> +            hotplug_ctrl = mc->get_hotplug_handler(machine,
>>>>> dev);
>>>>> +        }
>>>>> +    }
>>>>> +    return hotplug_ctrl;
>>>>> +}
>>>>> +
>>>>>  void qdev_unplug(DeviceState *dev, Error **errp)
>>>>>  {
>>>>>      DeviceClass *dc = DEVICE_GET_CLASS(dev);
>>>>> +    HotplugHandler *hotplug_ctrl;
>>>>> +    HotplugHandlerClass *hdc;
>>>>>
>>>>>      if (dev->parent_bus
>>>>> && !qbus_is_hotpluggable(dev->parent_bus)) { error_set(errp,
>>>>> QERR_BUS_NO_HOTPLUG, dev->parent_bus->name);
>>>>
>>>> Unlike x86 CPU that sits on ICC bus, PowerPC CPU doesn't sit on
>>>> any bus. I was under the impression that this patch helps in
>>>> unplugging such devices. However I do see some problems.
>>> Indeed, this patch goes only half way for supporting unplug of
>>> bussless devices (i.e. it only fetches unplug handler without
>>> addressing device lookup issue)
>>>
>>>>
>>>> While trying to unplug a PowerPC CPU that has earlier been added
>>>> using device_add, qdev-monitor.c:qmp_device_del() fails to
>>>> find/locate the device since the device isn't on any bus and
>>>> hence qdev_unplug() won't be called for such a device. I thought
>>>> I could make "main_system_bus" as the parent bus of this CPU
>>>> device but that wouldn't help during unplugging. With that
>>>> qmp_device_del() can find the device, but qdev_uplug() fails at
>>>> the above if condition since "main_system_bus" isn't hotpluggable.
>>>>
>>>> So how should we deal with such devices which don't have any
>>>> parent bus ?
>>> There is no need to invent non existing BUS. We should fix lookup
>>> issue instead of it. Doing something along this lines:
>>> https://lists.nongnu.org/archive/html/qemu-devel/2014-08/msg04574.html
>>>
>>> Above of cause assumes that device is placed in 'peripherals' tree.
>>> Does above patch fixes issue?
>>
>> Yes it does fix the issue. Thanks.
> Thanks for confirming, I'll try to rewrite above path to a more
> acceptable form and post it as follow up to this series, hopefully
> tomorrow.
> 
> Andreas,
>  is it acceptable or should I respin fixedup 36/36 instead?

As I started looking into this series I'd appreciate not respinning the
full series if not necessary. :) Whether you do a 37/36 v2 or a 36/36 v3
is up to you guys.

Thanks,
Andreas

-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2014-10-01 12:46 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-26  9:28 [Qemu-devel] [PATCH v2 00/36] complete conversion to hotplug-handler API Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 01/36] test: virtio-scsi: check if hot-plug/unplug works Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 02/36] test: virtio-serial: " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 03/36] test: libqos: add qpci_plug_device_test() and qpci_unplug_acpi_device_test() Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 04/36] test: virtio-rng: check if hot-plug/unplug works Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 05/36] test: virtio-net: " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 06/36] test: virtio-blk: " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 07/36] test: usb: move uhci port test code to libqos/usb.c Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 08/36] test: usb: add port test to uhci unit test Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 09/36] test: usb: generic usb device hotplug Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 10/36] test: usb: usb-storage hotplug test Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 11/36] test: usb: usb-uas " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 12/36] access BusState.allow_hotplug using wraper qbus_is_hotpluggable() Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 13/36] qdev: do not allow to instantiate non hotpluggable device with device_add Igor Mammedov
2014-09-29 10:58   ` Paolo Bonzini
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 14/36] qdev: HotplugHandler: rename unplug callback to unplug_request Igor Mammedov
2014-09-29 11:19   ` Michael S. Tsirkin
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 15/36] qdev: HotplugHandler: provide unplug callback Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 16/36] qdev: add simple/generic unplug callback for HotplugHandler Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 17/36] qdev: add wrapper to set BUS as HotplugHandler Igor Mammedov
2014-09-29 10:59   ` Paolo Bonzini
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 18/36] qdev: drop hotplug check from bus_add_child() Igor Mammedov
2014-09-29 11:01   ` Paolo Bonzini
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 19/36] target-i386: ICC bus: drop BusState.allow_hotplug Igor Mammedov
2014-09-29 11:00   ` Paolo Bonzini
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 20/36] virtio-pci: " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 21/36] virtio-serial: convert to hotplug-handler API Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 22/36] virtio-mmio: drop useless bus->allow_hotplug = 0 Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 23/36] s390x: drop not used allow_hotplug in event-facility Igor Mammedov
2014-09-26 10:52   ` Cornelia Huck
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 24/36] s390x: convert s390-virtio to hotplug handler API Igor Mammedov
2014-09-26 11:15   ` Cornelia Huck
2014-09-26 11:31     ` Igor Mammedov
2014-09-26 11:36       ` Cornelia Huck
2014-09-26 12:08   ` [Qemu-devel] [PATCH v3 " Igor Mammedov
2014-09-26 12:15     ` Cornelia Huck
2014-09-26 12:29       ` Igor Mammedov
2014-09-26 12:37   ` [Qemu-devel] [PATCH v4 " Igor Mammedov
2014-09-26 13:06     ` Cornelia Huck
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 25/36] s390x: convert virtio-ccw " Igor Mammedov
2014-09-26 11:18   ` Cornelia Huck
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 26/36] scsi: set SCSI BUS itself as default HotplugHandler Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 27/36] scsi: convert pvscsi HBA to hotplug handler API Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 28/36] scsi: convert virtio-scsi " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 29/36] scsi: cleanup not used anymore SCSIBusInfo{hotplug, hot_unplug} fields Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 30/36] usb-bot: mark device as non hotpluggable Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 31/36] usb-bot: drop not needed "allow_hotplug = 0" Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 32/36] usb-storage: " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 33/36] usb: convert usb-ccid to hotplug handler API Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 34/36] usb: convert usb devices " Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 35/36] qdev: drop legacy hotplug fields/methods Igor Mammedov
2014-09-26  9:28 ` [Qemu-devel] [PATCH v2 36/36] qdev: HotplugHandler: add support for unplugging BUS-less devices Igor Mammedov
2014-10-01  8:57   ` Bharata B Rao
2014-10-01  9:57     ` Igor Mammedov
2014-10-01 10:52       ` Bharata B Rao
2014-10-01 12:43         ` Igor Mammedov
2014-10-01 12:46           ` Andreas Färber [this message]
2014-10-01 13:10             ` Igor Mammedov
2014-09-26 10:46 ` [Qemu-devel] [PATCH v2 00/36] complete conversion to hotplug-handler API Cornelia Huck
2014-09-26 11:31 ` Paolo Bonzini
2014-09-29  9:20 ` Gerd Hoffmann
2014-09-29 10:16 ` Michael S. Tsirkin
2014-09-29 10:28   ` Igor Mammedov
2014-09-29 10:42     ` Michael S. Tsirkin
2014-10-02 10:08 ` [Qemu-devel] [PATCH v2 37/36] qdev: device_del: search for to be unplugged device in 'peripheral' container Igor Mammedov
2014-10-07 11:59   ` Zhu Guihua
2014-10-07 12:10     ` Igor Mammedov
2014-10-07 13:23       ` Andreas Färber
2014-10-07 13:53         ` Igor Mammedov
2014-10-08  3:49           ` Zhu Guihua
2014-10-08  8:01             ` Paolo Bonzini
2014-10-09  1:50               ` Zhu Guihua
2014-10-09  6:21                 ` Markus Armbruster
2014-10-13 17:33 ` [Qemu-devel] [PATCH v2 00/36] complete conversion to hotplug-handler API Andreas Färber
2014-10-14  9:37   ` 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=542BF78B.20008@suse.de \
    --to=afaerber@suse.de \
    --cc=bharata@linux.vnet.ibm.com \
    --cc=imammedo@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.