Skip to content

Commit

Permalink
ppc: drop caching ObjectClass from PowerPCCPUAlias
Browse files Browse the repository at this point in the history
Caching there practically doesn't give any benefits
and that at slow path druring querying supported CPU list.
But it introduces non conventional path of where from
comes used CPU type name (kvm_ppc_register_host_cpu_type).

Taking in account that kvm_ppc_register_host_cpu_type()
fixes up models the aliases point to, it's sufficient to
make ppc_cpu_class_by_name() translate cpu alias to
correct cpu type name.
So drop PowerPCCPUAlias::oc field + ppc_cpu_class_by_alias()
and let ppc_cpu_class_by_name() do conversion to cpu type name,
which simplifies code a little bit saving ~20LOC and trouble
wondering why ppc_cpu_class_by_alias() is necessary.

Signed-off-by: Igor Mammedov <[email protected]>
Signed-off-by: David Gibson <[email protected]>
  • Loading branch information
Igor Mammedov authored and dgibson committed Sep 7, 2017
1 parent b376db7 commit 2527cb9
Show file tree
Hide file tree
Showing 3 changed files with 2 additions and 26 deletions.
1 change: 0 additions & 1 deletion target/ppc/cpu-models.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@
typedef struct PowerPCCPUAlias {
const char *alias;
const char *model;
ObjectClass *oc;
} PowerPCCPUAlias;

extern PowerPCCPUAlias ppc_cpu_aliases[];
Expand Down
1 change: 0 additions & 1 deletion target/ppc/kvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -2533,7 +2533,6 @@ static int kvm_ppc_register_host_cpu_type(void)
if (suffix) {
*suffix = 0;
}
ppc_cpu_aliases[i].oc = oc;
break;
}
}
Expand Down
26 changes: 2 additions & 24 deletions target/ppc/translate_init.c
Original file line number Diff line number Diff line change
Expand Up @@ -10253,28 +10253,6 @@ PowerPCCPUClass *ppc_cpu_class_by_pvr_mask(uint32_t pvr)
return pcc;
}

static ObjectClass *ppc_cpu_class_by_name(const char *name);

static ObjectClass *ppc_cpu_class_by_alias(PowerPCCPUAlias *alias)
{
ObjectClass *invalid_class = (void*)ppc_cpu_class_by_alias;

/* Cache target class lookups in the alias table */
if (!alias->oc) {
alias->oc = ppc_cpu_class_by_name(alias->model);
if (!alias->oc) {
/* Fast check for non-existing aliases */
alias->oc = invalid_class;
}
}

if (alias->oc == invalid_class) {
return NULL;
} else {
return alias->oc;
}
}

static ObjectClass *ppc_cpu_class_by_name(const char *name)
{
char *cpu_model, *typename;
Expand Down Expand Up @@ -10386,7 +10364,7 @@ static void ppc_cpu_list_entry(gpointer data, gpointer user_data)
name, pcc->pvr);
for (i = 0; ppc_cpu_aliases[i].alias != NULL; i++) {
PowerPCCPUAlias *alias = &ppc_cpu_aliases[i];
ObjectClass *alias_oc = ppc_cpu_class_by_alias(alias);
ObjectClass *alias_oc = ppc_cpu_class_by_name(alias->model);

if (alias_oc != oc) {
continue;
Expand Down Expand Up @@ -10466,7 +10444,7 @@ CpuDefinitionInfoList *arch_query_cpu_definitions(Error **errp)
CpuDefinitionInfoList *entry;
CpuDefinitionInfo *info;

oc = ppc_cpu_class_by_alias(alias);
oc = ppc_cpu_class_by_name(alias->model);
if (oc == NULL) {
continue;
}
Expand Down

0 comments on commit 2527cb9

Please sign in to comment.