qemu-devel
[Top][All Lists]
Advanced

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

Re: ensuring a machine's buses have unique names


From: Markus Armbruster
Subject: Re: ensuring a machine's buses have unique names
Date: Wed, 22 Sep 2021 06:46:27 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)

Peter Maydell <peter.maydell@linaro.org> writes:

[...]

> I'm not sure how best to sort this tangle out. We could:
>  * make controller devices pass in NULL as bus name; this
>    means that some bus names will change, which is an annoying
>    breakage but for these minor bus types we can probably
>    get away with it. This brings these buses into line with
>    how we've been handling uniqueness for ide and scsi.
>  * drop the 'name' argument for buses like ide that don't
>    actually have any callsites that need to pass a name
>  * split into foo_bus_new() and foo_bus_new_named() so that
>    the "easy default" doesn't pass a name, and there's at least
>    a place to put a doc comment explaining that the name passed
>    into the _named() version should be unique ??
>  * something else ?

A possible work-around for non-unique bus IDs is QOM paths.  Precedence,
kind of:

commit 6287d827d494b5850049584c3f7fb1a589dbb1de
Author: Daniel P. Berrangé <berrange@redhat.com>
Date:   Fri Sep 11 13:33:56 2015 +0100

    monitor: allow device_del to accept QOM paths
    
    Currently device_del requires that the client provide the
    device short ID. device_add allows devices to be created
    without giving an ID, at which point there is no way to
    delete them with device_del. The QOM object path, however,
    provides an alternative way to identify the devices.
    
    Allowing device_del to accept an object path ensures all
    devices are deletable regardless of whether they have an
    ID.
    
     (qemu) device_add usb-mouse
     (qemu) qom-list /machine/peripheral-anon
     device[0] (child<usb-mouse>)
     type (string)
     (qemu) device_del /machine/peripheral-anon/device[0]
    
    Devices are required to be marked as hotpluggable
    otherwise an error is raised
    
     (qemu) device_del /machine/unattached/device[4]
     Device 'PIIX3' does not support hotplugging
    
    Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
    Message-Id: <1441974836-17476-1-git-send-email-berrange@redhat.com>
    Reviewed-by: Eric Blake <eblake@redhat.com>
    [Commit message touched up, accidental white-space change dropped]
    Signed-off-by: Markus Armbruster <armbru@redhat.com>

Their length makes QOM paths inconvenient for humans, but machines won't
care.

However, we already burned /-separated paths for paths within the qdev
tree (the thing info qtree shows).  Friends don't let friends use them
(I should be able to dig up a critique if you're curious).

Without that, it could be made to work like

    -device virtio-scsi,id=vscsi
    -device scsi-cd,bus=/machine/peripheral/vscsi/virtio-backend/vscsi.0

We should consult with libvirt developers before we go down this route.




reply via email to

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