mirror of https://github.com/xemu-project/xemu.git
cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn
move the call to accel_cpu->cpu_realizefn to the general cpu_exec_realizefn from target/i386, so it does not need to be called for every target explicitly as we enable more targets. 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-6-cfontana@suse.de> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
f5cc5a5c16
commit
30565f10e9
6
cpu.c
6
cpu.c
|
@ -36,6 +36,7 @@
|
||||||
#include "sysemu/replay.h"
|
#include "sysemu/replay.h"
|
||||||
#include "exec/translate-all.h"
|
#include "exec/translate-all.h"
|
||||||
#include "exec/log.h"
|
#include "exec/log.h"
|
||||||
|
#include "hw/core/accel-cpu.h"
|
||||||
|
|
||||||
uintptr_t qemu_host_page_size;
|
uintptr_t qemu_host_page_size;
|
||||||
intptr_t qemu_host_page_mask;
|
intptr_t qemu_host_page_mask;
|
||||||
|
@ -130,6 +131,11 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
|
||||||
|
|
||||||
cpu_list_add(cpu);
|
cpu_list_add(cpu);
|
||||||
|
|
||||||
|
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 */
|
||||||
if (tcg_enabled()) {
|
if (tcg_enabled()) {
|
||||||
|
|
|
@ -6457,16 +6457,19 @@ static void x86_cpu_hyperv_realize(X86CPU *cpu)
|
||||||
static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
|
static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
|
||||||
{
|
{
|
||||||
CPUState *cs = CPU(dev);
|
CPUState *cs = CPU(dev);
|
||||||
CPUClass *cc = CPU_GET_CLASS(cs);
|
|
||||||
X86CPU *cpu = X86_CPU(dev);
|
X86CPU *cpu = X86_CPU(dev);
|
||||||
X86CPUClass *xcc = X86_CPU_GET_CLASS(dev);
|
X86CPUClass *xcc = X86_CPU_GET_CLASS(dev);
|
||||||
CPUX86State *env = &cpu->env;
|
CPUX86State *env = &cpu->env;
|
||||||
Error *local_err = NULL;
|
Error *local_err = NULL;
|
||||||
static bool ht_warned;
|
static bool ht_warned;
|
||||||
|
|
||||||
/* The accelerator realizefn needs to be called first. */
|
/* Process Hyper-V enlightenments */
|
||||||
if (cc->accel_cpu) {
|
x86_cpu_hyperv_realize(cpu);
|
||||||
cc->accel_cpu->cpu_realizefn(cs, errp);
|
|
||||||
|
cpu_exec_realizefn(cs, &local_err);
|
||||||
|
if (local_err != NULL) {
|
||||||
|
error_propagate(errp, local_err);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (xcc->host_cpuid_required && !accel_uses_host_cpuid()) {
|
if (xcc->host_cpuid_required && !accel_uses_host_cpuid()) {
|
||||||
|
@ -6584,15 +6587,6 @@ static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
|
||||||
env->cache_info_amd.l3_cache = &legacy_l3_cache;
|
env->cache_info_amd.l3_cache = &legacy_l3_cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Hyper-V enlightenments */
|
|
||||||
x86_cpu_hyperv_realize(cpu);
|
|
||||||
|
|
||||||
cpu_exec_realizefn(cs, &local_err);
|
|
||||||
if (local_err != NULL) {
|
|
||||||
error_propagate(errp, local_err);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
MachineState *ms = MACHINE(qdev_get_machine());
|
MachineState *ms = MACHINE(qdev_get_machine());
|
||||||
qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
|
qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
|
||||||
|
|
Loading…
Reference in New Issue