qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Andreas Färber" <afaerber@suse.de>,
	"Anthony Liguori" <aliguori@amazon.com>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH qom-cpu 00/16 v10] target-i386: convert CPU features into properties
Date: Tue, 7 Jan 2014 09:41:33 +0100	[thread overview]
Message-ID: <20140107094133.2d29107d@thinkpad> (raw)
In-Reply-To: <20131216182655.GY2916@otherpad.lan.raisama.net>

On Mon, 16 Dec 2013 16:26:55 -0200
Eduardo Habkost <ehabkost@redhat.com> wrote:

> On Mon, Dec 16, 2013 at 04:01:05PM +0100, Igor Mammedov wrote:
> > 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... :( The below patches seem to only operate on
> > > CPUID bits, which get added as properties in the following patch.
> > Above patches are there to simplify/unify current codebase. For example,
> > level & xlevel replace custom setters/getters with static property onliners.
> > The rest are making initfn more readable, not to mention that they
> > become visible in HMP along with the rest features wich is nice for
> > consistent behavior even is we do not care about HMP.
> > Otherwise there is not much difference between dynamic vs static anymore,
> > so this patches could be dropped, however with them ,I think,
> > code is a bit cleaner.
> 
> I agree with Igor, here. We don't strictly need to make those properties
> "static" anymore, but it is still useful to do it, because it makes the
> instrospection information visible to other code (inside and eventually
> outside QEMU) before a CPU object gets created, and to me it really
> looks simpler than registering the properties at instance_init().
> 
> > 
> > > 
> > > >   target-i386: set [+-]feature using static properties
> > > >   qdev: introduce qdev_prop_find_bit()
> > > >   target-i386: use static properties in check_features_against_host() to
> > > >     print CPUID feature names
> > > >   target-i386: use static properties to list CPUID features
> > > 
> > > I am reading too many occurrences of "static properties" above that
> > > should IMO just be "properties". You got permission to use a name-based
> > in current code base static properties are almost the same as dynamic ones,
> > it's just a more abbreviated version of dynamic ones with static defaults,
> > range checking, bit handling ...
> > So I don't see why more verbose dynamic properties SHOULD be used,
> > where the same code could be written more compact with static properties.
> 
> In the specific case of the feature-bit properties, I am more inclined
> to agree with Andreas: is making the properties "static" worth the extra
> code complexity?
On contrary, using static properties for feature-bits reduces overall code
complexity and provides much more better self documented properties compared
to current bit arrays and their handling.

So far we do not really need mapping bit2name for x86 CPU, there are 2
places where it's used now:
  1. comparing current CPU model with host CPUID bits.
     we could create temporary CPUhost model for it and compare properties
     instead of bits, something like:
         'compare(current_cpu, host_cpu, "feat-*")' 
  2. listing all feat-* properties for '-cpu ?'.
     that task could be performed by something like:
         object_property_foreach(object_new(x86_cpu), print_prop_if_name("feat-*"))

I guess it is what Andreas suggests instead of iterating over DEVICE->props
array.

[...]
> 
> -- 
> Eduardo


-- 
Regards,
  Igor

  parent reply	other threads:[~2014-01-07  8:41 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 [this message]
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
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=20140107094133.2d29107d@thinkpad \
    --to=imammedo@redhat.com \
    --cc=afaerber@suse.de \
    --cc=aliguori@amazon.com \
    --cc=ehabkost@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).