All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: libvir-list@redhat.com, "Igor Mammedov" <imammedo@redhat.com>,
	"Jiri Denemark" <jdenemar@redhat.com>,
	qemu-devel@nongnu.org, "Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties
Date: Mon, 07 Nov 2016 15:40:57 +0100	[thread overview]
Message-ID: <878tsvs686.fsf@dusky.pond.sub.org> (raw)
In-Reply-To: <20161107123858.GO5057@thinpad.lan.raisama.net> (Eduardo Habkost's message of "Mon, 7 Nov 2016 10:38:58 -0200")

Eduardo Habkost <ehabkost@redhat.com> writes:

> On Mon, Nov 07, 2016 at 09:09:58AM +0100, Markus Armbruster wrote:
>> Eduardo Habkost <ehabkost@redhat.com> writes:
>> 
>> > On Fri, Nov 04, 2016 at 04:45:17PM +0100, Markus Armbruster wrote:
>> >> Eduardo Habkost <ehabkost@redhat.com> writes:
>> >> 
>> >> > (CCing libvirt people, as I forgot to CC them)
>> >> >
>> >> > On Mon, Oct 31, 2016 at 03:07:23PM +0100, Igor Mammedov wrote:
>> >> >> On Fri, 28 Oct 2016 23:48:06 -0200
>> >> >> Eduardo Habkost <ehabkost@redhat.com> wrote:
>> >> >> 
>> >> >> > When an abstract class is used on device-list-properties, we can
>> >> >> > simply return the class properties registered for the class.
>> >> >> > 
>> >> >> > This will be useful if management software needs to query for
>> >> >> > supported options that apply to all devices of a given type (e.g.
>> >> >> > options supported by all CPU models, options supported by all PCI
>> >> >> > devices).
>> >> >> Patch looks fine to me but I'm not qmp interface guru
>> >> >> so I'd leave review up to maintainers.
>> >> >> 
>> >> >> One question though,
>> >> >> How would management software discover typename of abstract class?
>> >> >
>> >> > It depends on the use case. On some cases, management may already
>> >> > have bus-specific logic that will know what's the base type it
>> >> > needs to query (e.g. it may query "pci-device" to find out if all
>> >> > PCI devices support a given option). On other cases, it may be
>> >> > discovered using other commands.
>> >> 
>> >> The stated purpose of this feature is to let management software "query
>> >> for supported options that apply to all devices of a given type".  I
>> >> suspect that when management software has a notion of "a given type", it
>> >> knows its name.
>> >> 
>> >> Will management software go fishing for subtype relationships beyond the
>> >> types it knows?  I doubt it.  Of course, management software developers
>> >> are welcome to educate me :)
>> >> 
>> >> > For the CPU case, I will propose adding the base QOM CPU typename
>> >> > in the query-target command.
>> >> 
>> >> Does this type name vary?  If yes, can you give examples?
>> >
>> > It does. x86-specific CPU properties are on the x86_64-cpu and
>> > i386-cpu classes. arm-specific CPU properties are on the arm-cpu
>> > class.
>> 
>> I see we have concrete CPUs (such as "Westmere-x86_64-cpu"), which are
>> subtypes of an abstract CPU (such as "x86_64-cpu"), which is a subtype
>> of "cpu", which is a subtype of "device", which is a subtype of
>> "object".
>> 
>> The chain "cpu" - "device" - "object" is fixed and well-known.
>> 
>> The link from there to the concrete CPU varies.  Whether it could be
>> considered well-known or not is debatable.
>> 
>> My true question is: should we have a special purpose interface to get
>> the abstract supertype of concrete CPU types, or should be have general
>> purpose means to introspect the subtype hierarchy?
>> 
>> Note that we have the latter already, although in a rather cumbersome
>> form:
>> 
>>     { "execute": "qom-list-types",
>>       "arguments": { "implements": T, "abstract": true } }
>> 
>> lists all subtypes of T.  You can filter out the concrete subtypes by
>> subtracting the same query with "abstract": false.  Start with the
>> type you're interested in, find all its abstract supertypes.  If you
>> need to know more, repeat for the types you found.
>
> Looks cumbersome, because I don't see a way to find all
> supertypes of a given type without walking the whole tree
> starting from "object" (is there one?). But it could be improved
> a bit if we added a "implements" field to ObjectTypeInfo.

My point is: we can skip discussing whether we should expose the subtype
relation, because we already do.

> But, maybe we should take a step back: my original goal was to
> let libvirt know which properties are supported by any CPU model
> when using "-cpu".

Why is that useful?

>                    Maybe we should make QEMU do the QOM->option
> translation and implement "-cpu" support in
> query-command-line-options? We already do something similar with
> "-machine".

query-command-line-options is flawed, and the less it's used, the
happier I am.

Real command line introspection would be nice, but getting it will
involve cleaning up the unholy mess our command line has become.  Don't
hold your breath.

My preferred workaround is to find something equivalent to introspect
via QMP.

That said, if you come up with a patch that solves a real problem now, I
won't object to it just because it involves query-command-line-options.

[...]

  reply	other threads:[~2016-11-07 14:41 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-10-29  1:47 [Qemu-devel] [PATCH v4 0/8] qdev class properties + abstract class support on device-list-properties Eduardo Habkost
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 1/8] tests: check-qom-proplist: Remove duplicate "bv" property Eduardo Habkost
2016-11-04 11:22   ` Markus Armbruster
2016-11-04 15:10     ` Markus Armbruster
2016-11-04 15:56   ` Andreas Färber
2016-11-04 16:07     ` Eduardo Habkost
2016-11-04 16:11       ` Andreas Färber
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 2/8] tests: check-qom-proplist: Use &error_abort to catch errors Eduardo Habkost
2016-10-31 10:14   ` Igor Mammedov
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 3/8] qdev: device_class_set_props() function Eduardo Habkost
2016-11-01 15:02   ` Igor Mammedov
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 4/8] qdev: Extract property-default code to qdev_property_set_to_default() Eduardo Habkost
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 5/8] qdev: Register static properties as class properties Eduardo Habkost
2016-10-31 12:06   ` Igor Mammedov
2016-11-04 15:22   ` Markus Armbruster
2016-11-04 16:00     ` Eduardo Habkost
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 6/8] qom: object_class_property_iter_init() function Eduardo Habkost
2016-10-31 13:45   ` Igor Mammedov
2016-11-04 15:31   ` Markus Armbruster
2016-10-29  1:48 ` [Qemu-devel] [PATCH v4 7/8] qmp: Support abstract classes on device-list-properties Eduardo Habkost
2016-10-31 14:07   ` Igor Mammedov
2016-10-31 14:36     ` Eduardo Habkost
2016-11-04 15:45       ` Markus Armbruster
2016-11-04 16:04         ` Eduardo Habkost
2016-11-07  8:09           ` Markus Armbruster
2016-11-07 12:38             ` Eduardo Habkost
2016-11-07 14:40               ` Markus Armbruster [this message]
2016-11-07 17:11                 ` Eduardo Habkost
2016-11-08  7:29                   ` Markus Armbruster
2016-11-11 12:17                     ` Jiri Denemark
2016-11-11 12:34                       ` Eduardo Habkost
2016-11-11 14:29                       ` Markus Armbruster
2016-11-07 12:45   ` Halil Pasic
2016-11-07 13:05     ` Eduardo Habkost
2016-11-07 14:48       ` Halil Pasic
2016-11-07 15:01         ` Daniel P. Berrange
2016-11-07 15:51           ` Markus Armbruster
2016-11-07 17:27             ` Eduardo Habkost
2016-11-07 17:41               ` Daniel P. Berrange
2016-11-07 18:03                 ` Eduardo Habkost
2016-11-07 18:08                   ` Daniel P. Berrange
2016-11-07 18:28                     ` Eduardo Habkost
2016-11-08  7:37                       ` Markus Armbruster
2016-11-08 10:09                         ` Daniel P. Berrange
2016-11-08 14:35                           ` Markus Armbruster
2016-11-08 16:16                             ` Eduardo Habkost
2016-11-08 10:11                         ` Halil Pasic
2016-10-29  1:48 ` [Qemu-arm] [PATCH v4 8/8] qdev: Warning about using qdev_property_add_static() in new code Eduardo Habkost
2016-10-29  1:48   ` [Qemu-devel] " Eduardo Habkost
2016-10-31 14:05   ` [Qemu-arm] " Igor Mammedov
2016-10-31 14:05     ` [Qemu-devel] " Igor Mammedov
2016-11-04 15:52 ` [Qemu-devel] [PATCH v4 0/8] qdev class properties + abstract class support on device-list-properties Markus Armbruster

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=878tsvs686.fsf@dusky.pond.sub.org \
    --to=armbru@redhat.com \
    --cc=afaerber@suse.de \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=jdenemar@redhat.com \
    --cc=libvir-list@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.