qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	"Daniel P. Berrange" <berrange@redhat.com>,
	John Snow <jsnow@redhat.com>,
	qemu-devel@nongnu.org, Richard Henderson <rth@twiddle.net>
Subject: Re: [PATCH 14/24] i386: Register feature bit properties as class properties
Date: Tue, 22 Sep 2020 08:47:34 +0200	[thread overview]
Message-ID: <20200922084734.15f0bda6@redhat.com> (raw)
In-Reply-To: <20200921221045.699690-15-ehabkost@redhat.com>

On Mon, 21 Sep 2020 18:10:35 -0400
Eduardo Habkost <ehabkost@redhat.com> wrote:

> Class properties make QOM introspection simpler and easier, as
> they don't require an object to be instantiated.
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
> Cc: Paolo Bonzini <pbonzini@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Eduardo Habkost <ehabkost@redhat.com>
> Cc: qemu-devel@nongnu.org

Reviewed-by: Igor Mammedov <imammedo@redhat.com>

> ---
>  target/i386/cpu.c | 33 ++++++++++++++++-----------------
>  1 file changed, 16 insertions(+), 17 deletions(-)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 66792f28ba7..1aba87e0a5b 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -6819,16 +6819,17 @@ static void x86_cpu_release_bit_prop(Object *obj, const char *name,
>   * multiple bits in the same FeatureWord. In that case, the getter will return
>   * true only if all bits are set.
>   */
> -static void x86_cpu_register_bit_prop(X86CPU *cpu,
> +static void x86_cpu_register_bit_prop(X86CPUClass *xcc,
>                                        const char *prop_name,
>                                        FeatureWord w,
>                                        int bitnr)
>  {
> +    ObjectClass *oc = OBJECT_CLASS(xcc);
>      BitProperty *fp;
>      ObjectProperty *op;
>      uint64_t mask = (1ULL << bitnr);
>  
> -    op = object_property_find(OBJECT(cpu), prop_name, NULL);
> +    op = object_class_property_find(oc, prop_name, NULL);
>      if (op) {
>          fp = op->opaque;
>          assert(fp->w == w);
> @@ -6837,14 +6838,14 @@ static void x86_cpu_register_bit_prop(X86CPU *cpu,
>          fp = g_new0(BitProperty, 1);
>          fp->w = w;
>          fp->mask = mask;
> -        object_property_add(OBJECT(cpu), prop_name, "bool",
> -                            x86_cpu_get_bit_prop,
> -                            x86_cpu_set_bit_prop,
> -                            x86_cpu_release_bit_prop, fp);
> +        object_class_property_add(oc, prop_name, "bool",
> +                                  x86_cpu_get_bit_prop,
> +                                  x86_cpu_set_bit_prop,
> +                                  x86_cpu_release_bit_prop, fp);
>      }
>  }
>  
> -static void x86_cpu_register_feature_bit_props(X86CPU *cpu,
> +static void x86_cpu_register_feature_bit_props(X86CPUClass *xcc,
>                                                 FeatureWord w,
>                                                 int bitnr)
>  {
> @@ -6863,7 +6864,7 @@ static void x86_cpu_register_feature_bit_props(X86CPU *cpu,
>      /* aliases don't use "|" delimiters anymore, they are registered
>       * manually using object_property_add_alias() */
>      assert(!strchr(name, '|'));
> -    x86_cpu_register_bit_prop(cpu, name, w, bitnr);
> +    x86_cpu_register_bit_prop(xcc, name, w, bitnr);
>  }
>  
>  #if !defined(CONFIG_USER_ONLY)
> @@ -6917,7 +6918,6 @@ static void x86_cpu_initfn(Object *obj)
>      X86CPU *cpu = X86_CPU(obj);
>      X86CPUClass *xcc = X86_CPU_GET_CLASS(obj);
>      CPUX86State *env = &cpu->env;
> -    FeatureWord w;
>  
>      env->nr_dies = 1;
>      cpu_set_cpustate_pointers(cpu);
> @@ -6929,14 +6929,6 @@ static void x86_cpu_initfn(Object *obj)
>                          x86_cpu_get_feature_words,
>                          NULL, NULL, (void *)cpu->filtered_features);
>  
> -    for (w = 0; w < FEATURE_WORDS; w++) {
> -        int bitnr;
> -
> -        for (bitnr = 0; bitnr < 64; bitnr++) {
> -            x86_cpu_register_feature_bit_props(cpu, w, bitnr);
> -        }
> -    }
> -
>      object_property_add_alias(obj, "sse3", obj, "pni");
>      object_property_add_alias(obj, "pclmuldq", obj, "pclmulqdq");
>      object_property_add_alias(obj, "sse4-1", obj, "sse4.1");
> @@ -7221,6 +7213,7 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
>      X86CPUClass *xcc = X86_CPU_CLASS(oc);
>      CPUClass *cc = CPU_CLASS(oc);
>      DeviceClass *dc = DEVICE_CLASS(oc);
> +    FeatureWord w;
>  
>      device_class_set_parent_realize(dc, x86_cpu_realizefn,
>                                      &xcc->parent_realize);
> @@ -7310,6 +7303,12 @@ static void x86_cpu_common_class_init(ObjectClass *oc, void *data)
>                                x86_cpu_get_crash_info_qom, NULL, NULL, NULL);
>  #endif
>  
> +    for (w = 0; w < FEATURE_WORDS; w++) {
> +        int bitnr;
> +        for (bitnr = 0; bitnr < 64; bitnr++) {
> +            x86_cpu_register_feature_bit_props(xcc, w, bitnr);
> +        }
> +    }
>  }
>  
>  static const TypeInfo x86_cpu_type_info = {



  reply	other threads:[~2020-09-22  6:48 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-21 22:10 [PATCH 00/24] qom: Convert some properties to class properties Eduardo Habkost
2020-09-21 22:10 ` [PATCH 01/24] cryptodev-vhost-user: Register "chardev" as class property Eduardo Habkost
2020-09-22  1:27   ` Gonglei (Arei)
2020-09-21 22:10 ` [PATCH 02/24] cryptodev-backend: " Eduardo Habkost
2020-09-22  1:27   ` Gonglei (Arei)
2020-09-21 22:10 ` [PATCH 03/24] rng-egd: " Eduardo Habkost
2020-09-23  9:59   ` Daniel P. Berrangé
2020-09-21 22:10 ` [PATCH 04/24] rng-random: register "filename" " Eduardo Habkost
2020-09-23  9:59   ` Daniel P. Berrangé
2020-09-21 22:10 ` [PATCH 05/24] vhost-user: Register "chardev" " Eduardo Habkost
2020-10-08  6:58   ` Marc-André Lureau
2020-10-23 18:16   ` Igor Mammedov
2020-10-30  8:56   ` Michael S. Tsirkin
2020-09-21 22:10 ` [PATCH 06/24] vexpress: Register "secure" " Eduardo Habkost
2020-09-21 22:10 ` [PATCH 07/24] rng: Register "opened" " Eduardo Habkost
2020-09-23 10:00   ` Daniel P. Berrangé
2020-09-21 22:10 ` [PATCH 08/24] vexpress-a15: Register "virtualization" " Eduardo Habkost
2020-10-23 18:19   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 09/24] input-linux: Register properties as class properties Eduardo Habkost
2020-09-23 10:01   ` Daniel P. Berrangé
2020-09-21 22:10 ` [PATCH 10/24] input-barrier: " Eduardo Habkost
2020-09-23 10:02   ` Daniel P. Berrangé
2020-09-21 22:10 ` [PATCH 11/24] tmp421: " Eduardo Habkost
2020-10-23 18:21   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 12/24] s390x: Register all CPU " Eduardo Habkost
2020-09-22  6:47   ` David Hildenbrand
2020-09-22  9:54   ` Cornelia Huck
2020-09-21 22:10 ` [PATCH 13/24] i386: Register most " Eduardo Habkost
2020-09-22  6:41   ` Igor Mammedov
2020-09-22 12:44     ` Eduardo Habkost
2020-09-23  8:43   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 14/24] i386: Register feature bit " Eduardo Habkost
2020-09-22  6:47   ` Igor Mammedov [this message]
2020-09-22 12:47   ` Eduardo Habkost
2020-09-21 22:10 ` [PATCH 15/24] arm/virt: Register most " Eduardo Habkost
2020-10-23 18:26   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 16/24] virt: Register "its" as class property Eduardo Habkost
2020-10-23 18:33   ` Igor Mammedov
2020-11-02 11:12   ` Peter Maydell
2020-09-21 22:10 ` [PATCH 17/24] cpu/core: Register core-id and nr-threads as class properties Eduardo Habkost
2020-09-22  6:48   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 18/24] arm/cpu64: Register "aarch64" as class property Eduardo Habkost
2020-10-23 18:34   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 19/24] xlnx-zcu102: Register properties as class properties Eduardo Habkost
2020-09-22 16:44   ` Alistair Francis
2020-09-21 22:10 ` [PATCH 20/24] machine: Register "memory-backend" as class property Eduardo Habkost
2020-09-22  6:39   ` Igor Mammedov
2020-09-21 22:10 ` [PATCH 21/24] vga-pci: Register "big-endian-framebuffer" " Eduardo Habkost
2020-10-08  7:00   ` Marc-André Lureau
2020-09-21 22:10 ` [PATCH 22/24] i440fx: Register i440FX-pcihost properties as class properties Eduardo Habkost
2020-09-22  6:49   ` Igor Mammedov
2020-10-30  8:56   ` Michael S. Tsirkin
2020-09-21 22:10 ` [PATCH 23/24] sifive_e: Register "revb" as class property Eduardo Habkost
2020-09-22 16:45   ` Alistair Francis
2020-09-21 22:10 ` [PATCH 24/24] sifive_u: Register "start-in-flash" " Eduardo Habkost
2020-09-22 16:44   ` Alistair Francis
2020-09-22  1:47 ` [PATCH 00/24] qom: Convert some properties to class properties Li Qiang
2020-09-22  4:31   ` Eduardo Habkost
2020-09-22  3:02 ` no-reply
2020-09-22 21:00 ` Eduardo Habkost
2020-10-07 22:26   ` Eduardo Habkost

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=20200922084734.15f0bda6@redhat.com \
    --to=imammedo@redhat.com \
    --cc=berrange@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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).