From: "Andreas Färber" <afaerber@suse.de>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: 'Паша' <Pavel.Dovgaluk@ispras.ru>,
qemu-devel@nongnu.org,
"Natalia Fursova" <Natalia.Fursova@ispras.ru>,
armbru@redhat.com
Subject: Re: [Qemu-devel] qgraph
Date: Mon, 10 Jun 2019 15:28:52 +0200 [thread overview]
Message-ID: <98826c5f-4a74-5364-2aef-28a10db12c20@suse.de> (raw)
In-Reply-To: <e4fe4dc0-f3c4-a051-d39d-afd7bfdc680d@redhat.com>
Am 10.06.19 um 14:03 schrieb Paolo Bonzini:
> On 10/06/19 13:57, Andreas Färber wrote:
>> Your question doesn't make sense grammatically or conceptually. As Paolo
>> explained below, QOM is a pure object model, with object types/classes
>> and properties. Buses are just object instances attached as properties
>> and don't necessarily even need their own type of bus object (e.g, CPU).
>> An answer you don't like doesn't change by asking it to other people...
>> The information is all there, you just need to interpret it correctly.
>>
>> There is no technical discussion (no concrete proposal of yours) to
>> comment on here, and kindly refer to last week's change of maintainers.
>>
>> You would be better off just explaining what you really want to achieve.
>
> Well, that was explained upthread---finding out what device can be
> plugged where.
>
> Let's see what is in QOM right now:
>
> $ qemu-kvm -qmp unix:foo.sock,server,nowait -device virtio-scsi-pci,id=vs
> $ ./qmp/qom-list -s ~/foo.sock /machine/peripheral/vs|less
>
> There is a "virtio-bus" here, and iside it there is a scsi-bus.
>
> $ ./qmp/qom-list -s ~/foo.sock /machine/peripheral/vs/virtio-bus/child[0]/
> vs.0/
>
> I guess you could add to virtio-scsi-pci a class property for the bus,
> and then make "vs.0" an alias to that class property. This would allow
> you find buses by enumerating the class properties.
That kind of goes against the spirit of QOM though and ignores simpler
mechanisms of hot-plugging, as mentioned.
The theoretical generic way would be to discover that any random object
beneath /machine has a null property of a link<> type that inherits from
device and is compatible with the device type to be plugged.
In practice we decided against Anthony's idea of adding tons of empty
slot properties for e.g. PCI buses (the number space is too large). We
did add QOM support for wildcard "foo[*]" array properties though. A
null slot[42] property of a certain link<> type then means a device can
be plugged there, and the property's setter then needs to take care of
hot-plugging and un-plugging.
This was unfortunately obscured by the legacy qdev model where we
magically add new child[0] properties (pointing to
/machine/peripheral(-anon) sub-nodes) to its bus parent during device
instantiation IIRC.
So if we want a new QMP operation, the most sense would probably make
where-can-I-attach-type(foo) returning a list of QOM paths, showing only
the first free slot per bus. That would allow a more efficient lookup
implementation inside QEMU than needing to check each slot[n] property
via qom-get after discovering it with qom-list.
Regards,
Andreas
--
SUSE Linux GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Felix Imendörffer, Mary Higgins, Sri Rasiah
HRB 21284 (AG Nürnberg)
next prev parent reply other threads:[~2019-06-10 13:29 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5cf62de9.1c69fb81.66fc.8f4fSMTPIN_ADDED_BROKEN@mx.google.com>
2019-06-04 15:06 ` [Qemu-devel] qgraph Paolo Bonzini
2019-06-05 12:34 ` Natalia Fursova
[not found] ` <5cf7b6e6.1c69fb81.1cdca.e260SMTPIN_ADDED_BROKEN@mx.google.com>
2019-06-05 13:07 ` Paolo Bonzini
2019-06-05 14:22 ` Natalia Fursova
2019-06-10 9:53 ` Natalia Fursova
2019-06-10 11:57 ` Andreas Färber
2019-06-10 12:03 ` Paolo Bonzini
2019-06-10 13:28 ` Andreas Färber [this message]
2019-06-10 13:52 ` Paolo Bonzini
2019-06-10 16:12 ` Andreas Färber
2019-06-10 16:18 ` Paolo Bonzini
2019-06-11 8:56 ` Markus Armbruster
2019-06-11 10:31 ` Paolo Bonzini
2019-06-11 13:39 ` Markus Armbruster
2019-06-11 13:44 ` Paolo Bonzini
2019-07-02 11:44 ` Natalia Fursova
2019-07-02 15:26 ` Markus Armbruster
2019-07-03 8:19 ` Natalia Fursova
[not found] ` <5d1b4524.1c69fb81.ddba5.77bdSMTPIN_ADDED_BROKEN@mx.google.com>
2019-07-02 11:54 ` Peter Maydell
2019-06-11 13:51 ` Andreas Färber
2019-06-04 8:37 Natalia Fursova
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=98826c5f-4a74-5364-2aef-28a10db12c20@suse.de \
--to=afaerber@suse.de \
--cc=Natalia.Fursova@ispras.ru \
--cc=Pavel.Dovgaluk@ispras.ru \
--cc=armbru@redhat.com \
--cc=pbonzini@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).