[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 21/23] ppc: pnv: define core types statically
From: |
Cédric Le Goater |
Subject: |
Re: [Qemu-ppc] [PATCH 21/23] ppc: pnv: define core types statically |
Date: |
Fri, 6 Oct 2017 08:24:56 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 |
On 10/05/2017 06:24 PM, Igor Mammedov wrote:
> pnv core type definition doesn't have any fields that
> require it to be defined at runtime. So replace code
> that fills in TypeInfo at runtime with static TypeInfo
> array that does the same at complie time.
This is much better.
> Signed-off-by: Igor Mammedov <address@hidden>
Reviewed-by: Cédric Le Goater <address@hidden>
Thanks,
C.
> ---
> hw/ppc/pnv_core.c | 48 ++++++++++++++++++++----------------------------
> 1 file changed, 20 insertions(+), 28 deletions(-)
>
> diff --git a/hw/ppc/pnv_core.c b/hw/ppc/pnv_core.c
> index acdfa17..000c87e 100644
> --- a/hw/ppc/pnv_core.c
> +++ b/hw/ppc/pnv_core.c
> @@ -225,38 +225,30 @@ static void pnv_core_class_init(ObjectClass *oc, void
> *data)
> dc->props = pnv_core_properties;
> }
>
> -static const TypeInfo pnv_core_info = {
> - .name = TYPE_PNV_CORE,
> - .parent = TYPE_CPU_CORE,
> - .instance_size = sizeof(PnvCore),
> - .class_size = sizeof(PnvCoreClass),
> - .class_init = pnv_core_class_init,
> - .abstract = true,
> -};
> -
> -static const char *pnv_core_models[] = {
> - "power8e_v2.1", "power8_v2.0", "power8nvl_v1.0", "power9_v1.0"
> -};
> -
> -static void pnv_core_register_types(void)
> -{
> - int i ;
> -
> - type_register_static(&pnv_core_info);
> - for (i = 0; i < ARRAY_SIZE(pnv_core_models); ++i) {
> - TypeInfo ti = {
> - .parent = TYPE_PNV_CORE,
> - .instance_size = sizeof(PnvCore),
> - };
> - ti.name = pnv_core_typename(pnv_core_models[i]);
> - type_register(&ti);
> - g_free((void *)ti.name);
> +#define DEFINE_PNV_CORE_TYPE(cpu_model) \
> + { \
> + .parent = TYPE_PNV_CORE, \
> + .name = PNV_CORE_TYPE_NAME(cpu_model), \
> }
> -}
>
> -type_init(pnv_core_register_types)
> +static const TypeInfo pnv_core_infos[] = {
> + {
> + .name = TYPE_PNV_CORE,
> + .parent = TYPE_CPU_CORE,
> + .instance_size = sizeof(PnvCore),
> + .class_size = sizeof(PnvCoreClass),
> + .class_init = pnv_core_class_init,
> + .abstract = true,
> + },
> + DEFINE_PNV_CORE_TYPE("power8e_v2.1"),
> + DEFINE_PNV_CORE_TYPE("power8_v2.0"),
> + DEFINE_PNV_CORE_TYPE("power8nvl_v1.0"),
> + DEFINE_PNV_CORE_TYPE("power9_v1.0"),
> +};
>
> char *pnv_core_typename(const char *model)
> {
> return g_strdup_printf(PNV_CORE_TYPE_NAME("%s"), model);
> }
> +
> +DEFINE_TYPES(pnv_core_infos)
>
- [Qemu-ppc] [PATCH 17/23] ppc: spapr: use generic cpu_model parsing, (continued)
[Qemu-ppc] [PATCH 20/23] ppc: pnv: drop PnvCoreClass::cpu_oc field, Igor Mammedov, 2017/10/05
[Qemu-ppc] [PATCH 21/23] ppc: pnv: define core types statically, Igor Mammedov, 2017/10/05
[Qemu-ppc] [PATCH 23/23] ppc: pnv: consolidate type definitions and batch register them, Igor Mammedov, 2017/10/05
[Qemu-ppc] [PATCH 16/23] ppc: spapr: use cpu model names as tcg defaults instead of aliases, Igor Mammedov, 2017/10/05
[Qemu-ppc] [PATCH 22/23] ppc: pnv: drop PnvChipClass::cpu_model field, Igor Mammedov, 2017/10/05