accel: introduce new accessor functions
avoid open coding the accesses to cpu->accel_cpu interfaces, and instead introduce: accel_cpu_instance_init, accel_cpu_realizefn to be used by the targets/ initfn code, and by cpu_exec_realizefn respectively. Signed-off-by: Claudio Fontana <cfontana@suse.de> Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210322132800.7470-7-cfontana@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
30565f10e9
commit
bb883fd677
@ -89,6 +89,25 @@ void accel_init_interfaces(AccelClass *ac)
|
|||||||
accel_init_cpu_interfaces(ac);
|
accel_init_cpu_interfaces(ac);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void accel_cpu_instance_init(CPUState *cpu)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
if (cc->accel_cpu && cc->accel_cpu->cpu_instance_init) {
|
||||||
|
cc->accel_cpu->cpu_instance_init(cpu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void accel_cpu_realizefn(CPUState *cpu, Error **errp)
|
||||||
|
{
|
||||||
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
|
if (cc->accel_cpu && cc->accel_cpu->cpu_realizefn) {
|
||||||
|
/* NB: errp parameter is unused currently */
|
||||||
|
cc->accel_cpu->cpu_realizefn(cpu, errp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static const TypeInfo accel_cpu_type = {
|
static const TypeInfo accel_cpu_type = {
|
||||||
.name = TYPE_ACCEL_CPU,
|
.name = TYPE_ACCEL_CPU,
|
||||||
.parent = TYPE_OBJECT,
|
.parent = TYPE_OBJECT,
|
||||||
|
6
cpu.c
6
cpu.c
@ -130,11 +130,7 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
|
|||||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||||
|
|
||||||
cpu_list_add(cpu);
|
cpu_list_add(cpu);
|
||||||
|
accel_cpu_realizefn(cpu, errp);
|
||||||
if (cc->accel_cpu) {
|
|
||||||
/* NB: errp parameter is unused currently */
|
|
||||||
cc->accel_cpu->cpu_realizefn(cpu, errp);
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_TCG
|
#ifdef CONFIG_TCG
|
||||||
/* NB: errp parameter is unused currently */
|
/* NB: errp parameter is unused currently */
|
||||||
|
@ -78,4 +78,17 @@ int accel_init_machine(AccelState *accel, MachineState *ms);
|
|||||||
void accel_setup_post(MachineState *ms);
|
void accel_setup_post(MachineState *ms);
|
||||||
#endif /* !CONFIG_USER_ONLY */
|
#endif /* !CONFIG_USER_ONLY */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* accel_cpu_instance_init:
|
||||||
|
* @cpu: The CPU that needs to do accel-specific object initializations.
|
||||||
|
*/
|
||||||
|
void accel_cpu_instance_init(CPUState *cpu);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* accel_cpu_realizefn:
|
||||||
|
* @cpu: The CPU that needs to call accel-specific cpu realization.
|
||||||
|
* @errp: currently unused.
|
||||||
|
*/
|
||||||
|
void accel_cpu_realizefn(CPUState *cpu, Error **errp);
|
||||||
|
|
||||||
#endif /* QEMU_ACCEL_H */
|
#endif /* QEMU_ACCEL_H */
|
||||||
|
@ -28,7 +28,6 @@
|
|||||||
#include "sysemu/kvm.h"
|
#include "sysemu/kvm.h"
|
||||||
#include "sysemu/reset.h"
|
#include "sysemu/reset.h"
|
||||||
#include "sysemu/hvf.h"
|
#include "sysemu/hvf.h"
|
||||||
#include "hw/core/accel-cpu.h"
|
|
||||||
#include "sysemu/xen.h"
|
#include "sysemu/xen.h"
|
||||||
#include "sysemu/whpx.h"
|
#include "sysemu/whpx.h"
|
||||||
#include "kvm/kvm_i386.h"
|
#include "kvm/kvm_i386.h"
|
||||||
@ -6800,8 +6799,6 @@ static void x86_cpu_initfn(Object *obj)
|
|||||||
{
|
{
|
||||||
X86CPU *cpu = X86_CPU(obj);
|
X86CPU *cpu = X86_CPU(obj);
|
||||||
X86CPUClass *xcc = X86_CPU_GET_CLASS(obj);
|
X86CPUClass *xcc = X86_CPU_GET_CLASS(obj);
|
||||||
CPUClass *cc = CPU_CLASS(xcc);
|
|
||||||
|
|
||||||
CPUX86State *env = &cpu->env;
|
CPUX86State *env = &cpu->env;
|
||||||
|
|
||||||
env->nr_dies = 1;
|
env->nr_dies = 1;
|
||||||
@ -6850,10 +6847,8 @@ static void x86_cpu_initfn(Object *obj)
|
|||||||
x86_cpu_load_model(cpu, xcc->model);
|
x86_cpu_load_model(cpu, xcc->model);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if required, do the accelerator-specific cpu initialization */
|
/* if required, do accelerator-specific cpu initializations */
|
||||||
if (cc->accel_cpu) {
|
accel_cpu_instance_init(CPU(obj));
|
||||||
cc->accel_cpu->cpu_instance_init(CPU(obj));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int64_t x86_cpu_get_arch_id(CPUState *cs)
|
static int64_t x86_cpu_get_arch_id(CPUState *cs)
|
||||||
|
Loading…
Reference in New Issue
Block a user