qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Igor Mammedov <imammedo@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>,
	qemu-devel@nongnu.org, armbru@redhat.com,
	Anthony Liguori <aliguori@amazon.com>,
	pbonzini@redhat.com, akong@redhat.com
Subject: Re: [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU features into properties
Date: Thu, 06 Feb 2014 16:51:17 +0100	[thread overview]
Message-ID: <52F3AF75.90106@suse.de> (raw)
In-Reply-To: <20140206161901.14d44e55@nial.usersys.redhat.com>

Am 06.02.2014 16:19, schrieb Igor Mammedov:
> On Wed, 5 Feb 2014 17:52:16 +0100
> Igor Mammedov <imammedo@redhat.com> wrote:
> 
>> On Wed, 05 Feb 2014 17:14:27 +0100
>> Andreas Färber <afaerber@suse.de> wrote:
>>
>>> Am 05.02.2014 15:40, schrieb Igor Mammedov:
>>>> On Sun, 15 Dec 2013 23:50:47 +0100
>>>> Andreas Färber <afaerber@suse.de> wrote:
>>>>
>>>>> Am 27.11.2013 23:28, schrieb Igor Mammedov:
>>>>>> Igor Mammedov (16):
>>>>>>   target-i386: cleanup 'foo' feature handling'
>>>>>>   target-i386: cleanup 'foo=val' feature handling
>>>>>
>>>>> Thanks, I've queued these on qom-cpu-next:
>>>>> https://github.com/afaerber/qemu-cpu/commits/qom-cpu-next
>>>>>
>>>>>>   target-i386: cpu: convert 'level' to static property
>>>>>>   target-i386: cpu: convert 'xlevel' to static property
>>>>>>   target-i386: cpu: convert 'family' to static property
>>>>>>   target-i386: cpu: convert 'model' to static property
>>>>>>   target-i386: cpu: convert 'stepping' to static property
>>>>>>   target-i386: cpu: convert 'vendor' to static property
>>>>>>   target-i386: cpu: convert 'model-id' to static property
>>>>>>   target-i386: cpu: convert 'tsc-frequency' to static property
>>>>>
>>>>> But I still don't see the utility of this conversion after all the
>>>>> discussions we've had... :(
>>>> It seems there is movement to make DEVICE self describing for purpose
>>>> of QAPI schema introspection, where static properties would be used
>>>> (dynamic ones are not suitable for this purpose)
>>>
>>> Do you have a pointer to such a discussion? Sounds like I was not
>>> involved and Anthony probably not either...
>> Not at the moment, CCing people who might know more about the topic.
>>
>> But just thinking about creating QAPI schema for devices, it's not really
>> possible to generate one using dynamic properties (unless one resorts to
>> creating every supported device instance), while arrays of static properties
>> are there for every device and simplistically speaking just need conversion
>> to schema format.
> 
> There is one more reason to use static properties for external user-settable
> properties when it comes to device, i.e. to get list of properties user could
> use command:
> #qemu -device x86_64-cpu,?
> x86_64-cpu.pmu=boolean
> x86_64-cpu.hv-spinlocks=int
> x86_64-cpu.hv-relaxed=boolean
> x86_64-cpu.hv-vapic=boolean
> x86_64-cpu.check=boolean
> x86_64-cpu.enforce=boolean
> 
> which now yields only partial properties user is interested in, above
> mentioned conversion patches make previously not available properties
> visible to user via typical interface, perhaps eventually we could
> drop list_cpu() interface in favor of -device foo-cpu,? command.

We already brought that up specifically for decision on a KVM call and
Anthony's clear statement was that the expected way for management tools
to discover properties was to instantiate the object and run qom-list on it.

It is a known issue, both for info qtree and -device, that they do not
list all properties. But I don't want to repeat this discussion over and
over again: Paolo's patches for static properties were rejected by
Anthony, therefore I could not queue them on qom-next back then and
therefore I had to code my properties for the X86CPU (which was not yet
a device back then) the new QOM way, and now you're trying to override
Anthony's decision in forcing me to accept patches that Anthony had
vetoed against!

If you or libvirt need all properties for -device, then send a patch. No
one did for two years, so apparently no one cared.

Static properties are considered a valid, convenient way to define
properties for a device but not the sole one for a device or object.
Using info qtree or -device as justification for implementation
decisions is backwards and wrong since those are considered legacy.

And specifically for libvirt Eduardo pushed into a release properties
that could be used to inspect CPUIDs. If that's not being used by
libvirt, as Eduardo seems to imply now, why did we put work in that in
the first place?

If there's no relation between a CPU model named, e.g., "Haswell" and
the one on an Intel Haswell chip any more, then we should give them
artificial names like "qemu64"; I strongly believe that Haswell
definition in code should match that of the specs/hardware and if TCG
can't emulate something that's one thing (subtractive: no AVX) and if
KVM wants to speed up things that's another (additive: kvmvapic,
in-kernel IRQ/PIT). What I am arguing against is watering the meaning of
our definitions from "this is this model" to "this is handy". In
particular, if we use the post_initialize hook like I suggested then
-global is still able to override it and Eduardo's properties should
correctly report them to libvirt.

> Taking in account Paolo's cleanup of legacy properties in static properties,
> it might make them more suitable for moving concept to Object level.
> (As far as I remember, Anthony objected to it due to existence of legacy
> properties).

That'll be for Anthony to answer, but static properties at Object level
would still not expose child<> and especially not link<> properties to
the user.

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-02-06 15:51 UTC|newest]

Thread overview: 53+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-27 22:28 [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU features into properties Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 01/16] target-i386: cleanup 'foo' feature handling' Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 02/16] target-i386: cleanup 'foo=val' feature handling Igor Mammedov
2014-02-11  9:14   ` Eduardo Habkost
2014-02-11 14:28     ` Andreas Färber
2013-11-27 22:28 ` [Qemu-devel] [PATCH 03/16] target-i386: cpu: convert 'level' to static property Igor Mammedov
2014-02-11  9:14   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 04/16] target-i386: cpu: convert 'xlevel' " Igor Mammedov
2014-02-11  9:15   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 05/16] target-i386: cpu: convert 'family' " Igor Mammedov
2014-02-11  9:37   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 06/16] target-i386: cpu: convert 'model' " Igor Mammedov
2014-02-11  9:40   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 07/16] target-i386: cpu: convert 'stepping' " Igor Mammedov
2014-02-11  9:40   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 08/16] target-i386: cpu: convert 'vendor' " Igor Mammedov
2014-02-11 11:31   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 09/16] target-i386: cpu: convert 'model-id' " Igor Mammedov
2014-02-11 11:36   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 10/16] target-i386: cpu: convert 'tsc-frequency' " Igor Mammedov
2014-02-11 11:36   ` Eduardo Habkost
2013-11-27 22:28 ` [Qemu-devel] [PATCH 11/16] target-i386: set [+-]feature using static properties Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 12/16] qdev: introduce qdev_prop_find_bit() Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 13/16] target-i386: use static properties in check_features_against_host() to print CPUID feature names Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 14/16] target-i386: use static properties to list CPUID features Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 15/16] target-i386: remove unused *_feature_name arrays Igor Mammedov
2013-11-27 22:28 ` [Qemu-devel] [PATCH 16/16] target-i386: cpu: fix invalid use of error_is_set(errp) if errp == NULL Igor Mammedov
2013-12-15 22:50 ` [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU features into properties Andreas Färber
2013-12-16 15:01   ` Igor Mammedov
2013-12-16 18:26     ` Eduardo Habkost
2013-12-17 13:01       ` Igor Mammedov
2014-01-07  8:41       ` Igor Mammedov
2014-02-05 14:40   ` Igor Mammedov
2014-02-05 16:14     ` Andreas Färber
2014-02-05 16:52       ` Igor Mammedov
2014-02-06 15:19         ` Igor Mammedov
2014-02-06 15:51           ` Andreas Färber [this message]
2014-02-06 16:16             ` [Qemu-devel] CPU models and feature probing (was Re: [PATCH qom-cpu 00/16 v10] target-i386: convert CPU) " Eduardo Habkost
2014-02-06 16:57               ` Andreas Färber
2014-02-07 10:16                 ` Eduardo Habkost
2014-02-07 10:55                   ` Paolo Bonzini
2014-02-11 11:54                     ` Eduardo Habkost
2014-02-11 14:31                     ` Anthony Liguori
2014-02-11 15:25                       ` Eduardo Habkost
2014-02-11 15:58                         ` Anthony Liguori
2014-02-11 16:43                           ` Eduardo Habkost
2014-02-11 16:45                             ` Paolo Bonzini
2014-02-11 16:55                           ` Andreas Färber
2014-02-11 18:57                             ` Anthony Liguori
2014-02-11 21:38                               ` Paolo Bonzini
2014-02-07 10:37                 ` Eduardo Habkost
2014-02-11 17:17 ` [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU " Igor Mammedov
2014-03-05 16:53   ` 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=52F3AF75.90106@suse.de \
    --to=afaerber@suse.de \
    --cc=akong@redhat.com \
    --cc=aliguori@amazon.com \
    --cc=armbru@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@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).