[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v28 04/23] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_rea
From: |
Claudio Fontana |
Subject: |
[PATCH v28 04/23] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn |
Date: |
Mon, 22 Mar 2021 14:27:41 +0100 |
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>
---
cpu.c | 6 ++++++
target/i386/cpu.c | 20 +++++++-------------
2 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/cpu.c b/cpu.c
index bfbe5a66f9..ba5d272c1e 100644
--- a/cpu.c
+++ b/cpu.c
@@ -36,6 +36,7 @@
#include "sysemu/replay.h"
#include "exec/translate-all.h"
#include "exec/log.h"
+#include "hw/core/accel-cpu.h"
uintptr_t qemu_host_page_size;
intptr_t qemu_host_page_mask;
@@ -130,6 +131,11 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
cpu_list_add(cpu);
+ if (cc->accel_cpu) {
+ /* NB: errp parameter is unused currently */
+ cc->accel_cpu->cpu_realizefn(cpu, errp);
+ }
+
#ifdef CONFIG_TCG
/* NB: errp parameter is unused currently */
if (tcg_enabled()) {
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index fd457ed0c3..e1da3b1dd6 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -6445,16 +6445,19 @@ static void x86_cpu_hyperv_realize(X86CPU *cpu)
static void x86_cpu_realizefn(DeviceState *dev, Error **errp)
{
CPUState *cs = CPU(dev);
- CPUClass *cc = CPU_GET_CLASS(cs);
X86CPU *cpu = X86_CPU(dev);
X86CPUClass *xcc = X86_CPU_GET_CLASS(dev);
CPUX86State *env = &cpu->env;
Error *local_err = NULL;
static bool ht_warned;
- /* The accelerator realizefn needs to be called first. */
- if (cc->accel_cpu) {
- cc->accel_cpu->cpu_realizefn(cs, errp);
+ /* 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;
}
if (xcc->host_cpuid_required && !accel_uses_host_cpuid()) {
@@ -6572,15 +6575,6 @@ static void x86_cpu_realizefn(DeviceState *dev, Error
**errp)
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
MachineState *ms = MACHINE(qdev_get_machine());
qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
--
2.26.2
- Re: [RFC] accel: add cpu_reset, (continued)
Re: [RFC] accel: add cpu_reset, Philippe Mathieu-Daudé, 2021/03/22
[PATCH v28 01/23] target/i386: Rename helper_fldt, helper_fstt, Claudio Fontana, 2021/03/22
[PATCH v28 02/23] target/i386: Split out do_fsave, do_frstor, do_fxsave, do_fxrstor, Claudio Fontana, 2021/03/22
[PATCH v28 04/23] cpu: call AccelCPUClass::cpu_realizefn in cpu_exec_realizefn,
Claudio Fontana <=
[PATCH v28 05/23] accel: introduce new accessor functions, Claudio Fontana, 2021/03/22
[PATCH v28 03/23] i386: split cpu accelerators from cpu.c, using AccelCPUClass, Claudio Fontana, 2021/03/22
[PATCH v28 06/23] target/i386: fix host_cpu_adjust_phys_bits error handling, Claudio Fontana, 2021/03/22
[PATCH v28 09/23] i386: split off sysemu-only functionality in tcg-cpu, Claudio Fontana, 2021/03/22
[PATCH v28 07/23] accel-cpu: make cpu_realizefn return a bool, Claudio Fontana, 2021/03/22
[PATCH v28 10/23] i386: split smm helper (sysemu), Claudio Fontana, 2021/03/22
[PATCH v28 12/23] i386: move TCG bpt_helper into sysemu/, Claudio Fontana, 2021/03/22
[PATCH v28 08/23] meson: add target_user_arch, Claudio Fontana, 2021/03/22
[PATCH v28 14/23] i386: separate fpu_helper sysemu-only parts, Claudio Fontana, 2021/03/22
[PATCH v28 15/23] i386: split svm_helper into sysemu and stub-only user, Claudio Fontana, 2021/03/22