[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: |
Wed, 23 Sep 2020 10:43:08 +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>
Reviewed-by: Igor Mammedov <imammedo@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);
> - /*
> - * 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 = {
- [PATCH 05/24] vhost-user: Register "chardev" as class property, (continued)
- [PATCH 05/24] vhost-user: Register "chardev" as class property, Eduardo Habkost, 2020/09/21
- [PATCH 06/24] vexpress: Register "secure" as class property, Eduardo Habkost, 2020/09/21
- [PATCH 07/24] rng: Register "opened" as class property, Eduardo Habkost, 2020/09/21
- [PATCH 09/24] input-linux: Register properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 08/24] vexpress-a15: Register "virtualization" as class property, Eduardo Habkost, 2020/09/21
- [PATCH 10/24] input-barrier: Register properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 11/24] tmp421: Register properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 13/24] i386: Register most CPU properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 12/24] s390x: Register all CPU properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 14/24] i386: Register feature bit properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 19/24] xlnx-zcu102: Register properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 15/24] arm/virt: Register most properties as class properties, Eduardo Habkost, 2020/09/21
- [PATCH 16/24] virt: Register "its" as class property, Eduardo Habkost, 2020/09/21