qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 13/24] i386: Register most CPU properties as class properties


From: Igor Mammedov
Subject: Re: [PATCH 13/24] i386: Register most CPU properties as class properties
Date: Tue, 22 Sep 2020 08:41:49 +0200

On Mon, 21 Sep 2020 18:10:34 -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
> ---
>  target/i386/cpu.c | 66 ++++++++++++++++++++++++-----------------------
>  1 file changed, 34 insertions(+), 32 deletions(-)
> 
> diff --git a/target/i386/cpu.c b/target/i386/cpu.c
> index 1c58f764dcb..66792f28ba7 100644
> --- a/target/i386/cpu.c
> +++ b/target/i386/cpu.c
> @@ -6922,44 +6922,12 @@ static void x86_cpu_initfn(Object *obj)
>      env->nr_dies = 1;
>      cpu_set_cpustate_pointers(cpu);
>  
> -    object_property_add(obj, "family", "int",
> -                        x86_cpuid_version_get_family,
> -                        x86_cpuid_version_set_family, NULL, NULL);
> -    object_property_add(obj, "model", "int",
> -                        x86_cpuid_version_get_model,
> -                        x86_cpuid_version_set_model, NULL, NULL);
> -    object_property_add(obj, "stepping", "int",
> -                        x86_cpuid_version_get_stepping,
> -                        x86_cpuid_version_set_stepping, NULL, NULL);
> -    object_property_add_str(obj, "vendor",
> -                            x86_cpuid_get_vendor,
> -                            x86_cpuid_set_vendor);
> -    object_property_add_str(obj, "model-id",
> -                            x86_cpuid_get_model_id,
> -                            x86_cpuid_set_model_id);
> -    object_property_add(obj, "tsc-frequency", "int",
> -                        x86_cpuid_get_tsc_freq,
> -                        x86_cpuid_set_tsc_freq, NULL, NULL);


>      object_property_add(obj, "feature-words", "X86CPUFeatureWordInfo",
>                          x86_cpu_get_feature_words,
>                          NULL, NULL, (void *)env->features);
>      object_property_add(obj, "filtered-features", "X86CPUFeatureWordInfo",
>                          x86_cpu_get_feature_words,
>                          NULL, NULL, (void *)cpu->filtered_features);

I'm just curious why these weren't moved as well?

> -    /*
> -     * The "unavailable-features" property has the same semantics as
> -     * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions"
> -     * QMP command: they list the features that would have prevented the
> -     * CPU from running if the "enforce" flag was set.
> -     */
> -    object_property_add(obj, "unavailable-features", "strList",
> -                        x86_cpu_get_unavailable_features,
> -                        NULL, NULL, NULL);
> -
> -#if !defined(CONFIG_USER_ONLY)
> -    object_property_add(obj, "crash-information", "GuestPanicInformation",
> -                        x86_cpu_get_crash_info_qom, NULL, NULL, NULL);
> -#endif
>  
>      for (w = 0; w < FEATURE_WORDS; w++) {
>          int bitnr;
> @@ -7308,6 +7276,40 @@ static void x86_cpu_common_class_init(ObjectClass *oc, 
> void *data)
>      cc->disas_set_info = x86_disas_set_info;
>  
>      dc->user_creatable = true;
> +
> +    object_class_property_add(oc, "family", "int",
> +                              x86_cpuid_version_get_family,
> +                              x86_cpuid_version_set_family, NULL, NULL);
> +    object_class_property_add(oc, "model", "int",
> +                              x86_cpuid_version_get_model,
> +                              x86_cpuid_version_set_model, NULL, NULL);
> +    object_class_property_add(oc, "stepping", "int",
> +                              x86_cpuid_version_get_stepping,
> +                              x86_cpuid_version_set_stepping, NULL, NULL);
> +    object_class_property_add_str(oc, "vendor",
> +                                  x86_cpuid_get_vendor,
> +                                  x86_cpuid_set_vendor);
> +    object_class_property_add_str(oc, "model-id",
> +                                  x86_cpuid_get_model_id,
> +                                  x86_cpuid_set_model_id);
> +    object_class_property_add(oc, "tsc-frequency", "int",
> +                              x86_cpuid_get_tsc_freq,
> +                              x86_cpuid_set_tsc_freq, NULL, NULL);
> +    /*
> +     * The "unavailable-features" property has the same semantics as
> +     * CpuDefinitionInfo.unavailable-features on the "query-cpu-definitions"
> +     * QMP command: they list the features that would have prevented the
> +     * CPU from running if the "enforce" flag was set.
> +     */
> +    object_class_property_add(oc, "unavailable-features", "strList",
> +                              x86_cpu_get_unavailable_features,
> +                              NULL, NULL, NULL);
> +
> +#if !defined(CONFIG_USER_ONLY)
> +    object_class_property_add(oc, "crash-information", 
> "GuestPanicInformation",
> +                              x86_cpu_get_crash_info_qom, NULL, NULL, NULL);
> +#endif
> +
>  }
>  
>  static const TypeInfo x86_cpu_type_info = {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]