aboutsummaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorIgor Mammedov <imammedo@redhat.com>2017-08-30 15:24:30 +0200
committerDavid Gibson <david@gibson.dropbear.id.au>2017-09-08 09:30:55 +1000
commitc5354f54aa60d98c54ea5170a2064a1023e69967 (patch)
tree8c04ef380bfaa4e5e85095e067308e3cf6e83e2a /hw
parentc9137065814609111ec0ed29246388f4ad086732 (diff)
ppc: make cpu_model translation to type consistent
PPC handles -cpu FOO rather incosistently, i.e. it does case-insensitive matching of FOO to a CPU type (see: ppc_cpu_compare_class_name) but handles alias names as case-sensitive, as result: # qemu-system-ppc64 -M mac99 -cpu g3 qemu-system-ppc64: unable to find CPU model ' kN�U' # qemu-system-ppc64 -cpu 970MP_V1.1 qemu-system-ppc64: Unable to find sPAPR CPU Core definition while # qemu-system-ppc64 -M mac99 -cpu G3 # qemu-system-ppc64 -cpu 970MP_v1.1 start up just fine. Considering we can't take case-insensitive matching away, make it case-insensitive for all alias/type/core_type lookups. As side effect it allows to remove duplicate core types which are the same except of using different cased letters in name. Signed-off-by: Igor Mammedov <imammedo@redhat.com> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw')
-rw-r--r--hw/ppc/spapr_cpu_core.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
index dd9232620d..92bec033b3 100644
--- a/hw/ppc/spapr_cpu_core.c
+++ b/hw/ppc/spapr_cpu_core.c
@@ -130,8 +130,10 @@ char *spapr_get_cpu_core_type(const char *model)
{
char *core_type;
gchar **model_pieces = g_strsplit(model, ",", 2);
+ gchar *cpu_model = g_ascii_strdown(model_pieces[0], -1);
+ g_strfreev(model_pieces);
- core_type = g_strdup_printf("%s-%s", model_pieces[0], TYPE_SPAPR_CPU_CORE);
+ core_type = g_strdup_printf("%s-" TYPE_SPAPR_CPU_CORE, cpu_model);
/* Check whether it exists or whether we have to look up an alias name */
if (!object_class_by_name(core_type)) {
@@ -139,13 +141,13 @@ char *spapr_get_cpu_core_type(const char *model)
g_free(core_type);
core_type = NULL;
- realmodel = ppc_cpu_lookup_alias(model_pieces[0]);
+ realmodel = ppc_cpu_lookup_alias(cpu_model);
if (realmodel) {
core_type = spapr_get_cpu_core_type(realmodel);
}
}
+ g_free(cpu_model);
- g_strfreev(model_pieces);
return core_type;
}
@@ -273,31 +275,29 @@ static const char *spapr_core_models[] = {
"970_v2.2",
/* 970MP variants */
- "970MP_v1.0",
"970mp_v1.0",
- "970MP_v1.1",
"970mp_v1.1",
/* POWER5+ */
- "POWER5+_v2.1",
+ "power5+_v2.1",
/* POWER7 */
- "POWER7_v2.3",
+ "power7_v2.3",
/* POWER7+ */
- "POWER7+_v2.1",
+ "power7+_v2.1",
/* POWER8 */
- "POWER8_v2.0",
+ "power8_v2.0",
/* POWER8E */
- "POWER8E_v2.1",
+ "power8e_v2.1",
/* POWER8NVL */
- "POWER8NVL_v1.0",
+ "power8nvl_v1.0",
/* POWER9 */
- "POWER9_v1.0",
+ "power9_v1.0",
};
static Property spapr_cpu_core_properties[] = {