[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH v2 13/24] ppc: spapr: define core types statically
From: |
Igor Mammedov |
Subject: |
[Qemu-ppc] [PATCH v2 13/24] ppc: spapr: define core types statically |
Date: |
Mon, 9 Oct 2017 21:51:00 +0200 |
spapr 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.
Signed-off-by: Igor Mammedov <address@hidden>
---
v2:
- fix rebase conflict: add newly added power9_v2 core
---
include/hw/ppc/spapr_cpu_core.h | 2 +
hw/ppc/spapr_cpu_core.c | 87 +++++++++++++----------------------------
2 files changed, 30 insertions(+), 59 deletions(-)
diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h
index 93051e9..66dcf52 100644
--- a/include/hw/ppc/spapr_cpu_core.h
+++ b/include/hw/ppc/spapr_cpu_core.h
@@ -21,6 +21,8 @@
#define SPAPR_CPU_CORE_GET_CLASS(obj) \
OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE)
+#define SPAPR_CPU_CORE_TYPE_NAME(model) model "-" TYPE_SPAPR_CPU_CORE
+
typedef struct sPAPRCPUCore {
/*< private >*/
CPUCore parent_obj;
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index b6610dd..550d320 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -217,37 +217,6 @@ err:
error_propagate(errp, local_err);
}
-static const char *spapr_core_models[] = {
- /* 970 */
- "970_v2.2",
-
- /* 970MP variants */
- "970mp_v1.0",
- "970mp_v1.1",
-
- /* POWER5+ */
- "power5+_v2.1",
-
- /* POWER7 */
- "power7_v2.3",
-
- /* POWER7+ */
- "power7+_v2.1",
-
- /* POWER8 */
- "power8_v2.0",
-
- /* POWER8E */
- "power8e_v2.1",
-
- /* POWER8NVL */
- "power8nvl_v1.0",
-
- /* POWER9 */
- "power9_v1.0",
- "power9_v2.0",
-};
-
static Property spapr_cpu_core_properties[] = {
DEFINE_PROP_INT32("node-id", sPAPRCPUCore, node_id,
CPU_UNSET_NUMA_NODE_ID),
DEFINE_PROP_END_OF_LIST()
@@ -265,33 +234,33 @@ void spapr_cpu_core_class_init(ObjectClass *oc, void
*data)
g_assert(scc->cpu_class);
}
-static const TypeInfo spapr_cpu_core_type_info = {
- .name = TYPE_SPAPR_CPU_CORE,
- .parent = TYPE_CPU_CORE,
- .abstract = true,
- .instance_size = sizeof(sPAPRCPUCore),
- .class_size = sizeof(sPAPRCPUCoreClass),
-};
-
-static void spapr_cpu_core_register_types(void)
-{
- int i;
-
- type_register_static(&spapr_cpu_core_type_info);
-
- for (i = 0; i < ARRAY_SIZE(spapr_core_models); i++) {
- TypeInfo type_info = {
- .parent = TYPE_SPAPR_CPU_CORE,
- .instance_size = sizeof(sPAPRCPUCore),
- .class_init = spapr_cpu_core_class_init,
- .class_data = (void *) spapr_core_models[i],
- };
-
- type_info.name = g_strdup_printf("%s-" TYPE_SPAPR_CPU_CORE,
- spapr_core_models[i]);
- type_register(&type_info);
- g_free((void *)type_info.name);
+#define DEFINE_SPAPR_CPU_CORE_TYPE(cpu_model) \
+ { \
+ .parent = TYPE_SPAPR_CPU_CORE, \
+ .class_data = (void *) cpu_model, \
+ .class_init = spapr_cpu_core_class_init, \
+ .name = SPAPR_CPU_CORE_TYPE_NAME(cpu_model), \
}
-}
-type_init(spapr_cpu_core_register_types)
+static const TypeInfo spapr_cpu_core_type_infos[] = {
+ {
+ .name = TYPE_SPAPR_CPU_CORE,
+ .parent = TYPE_CPU_CORE,
+ .abstract = true,
+ .instance_size = sizeof(sPAPRCPUCore),
+ .class_size = sizeof(sPAPRCPUCoreClass),
+ },
+ DEFINE_SPAPR_CPU_CORE_TYPE("970_v2.2"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("970mp_v1.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power5+_v2.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power7_v2.3"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power7+_v2.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power8_v2.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power8e_v2.1"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power8nvl_v1.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power9_v1.0"),
+ DEFINE_SPAPR_CPU_CORE_TYPE("power9_v2.0"),
+};
+
+DEFINE_TYPES(spapr_cpu_core_type_infos)
--
2.7.4
- [Qemu-ppc] [PATCH v2 02/24] qom: introduce type_register_static_array(), (continued)
- [Qemu-ppc] [PATCH v2 02/24] qom: introduce type_register_static_array(), Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 05/24] ppc: mac_newworld: use generic cpu_model parsing, Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 06/24] ppc: mac_oldworld: use generic cpu_model parsing, Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 08/24] ppc: replace cpu_model with cpu_type on ref405ep, taihu boards, Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 07/24] ppc: bamboo: use generic cpu_model parsing, Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 10/24] ppc: 40p/prep: replace cpu_model with cpu_type, Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 11/24] ppc: spapr: replace ppc_cpu_parse_features() with cpu_parse_cpu_model(), Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 09/24] ppc: virtex-ml507: replace cpu_model with cpu_type, Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 12/24] ppc: move '-cpu foo, compat=xxx' parsing into ppc_cpu_parse_featurestr(), Igor Mammedov, 2017/10/09
- [Qemu-ppc] [PATCH v2 13/24] ppc: spapr: define core types statically,
Igor Mammedov <=
Re: [Qemu-ppc] [Qemu-devel] [PATCH v2 13/24] ppc: spapr: define core types statically, Philippe Mathieu-Daudé, 2017/10/11
[Qemu-ppc] [PATCH v2 15/24] ppc: spapr: register 'host' core type along with the rest of core types, Igor Mammedov, 2017/10/09
[Qemu-ppc] [PATCH v2 14/24] ppc: spapr: use cpu type name directly, Igor Mammedov, 2017/10/09