[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v28 05/23] accel: introduce new accessor functions
From: |
Claudio Fontana |
Subject: |
[PATCH v28 05/23] accel: introduce new accessor functions |
Date: |
Mon, 22 Mar 2021 14:27:42 +0100 |
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>
---
include/qemu/accel.h | 13 +++++++++++++
accel/accel-common.c | 19 +++++++++++++++++++
cpu.c | 6 +-----
target/i386/cpu.c | 9 ++-------
4 files changed, 35 insertions(+), 12 deletions(-)
diff --git a/include/qemu/accel.h b/include/qemu/accel.h
index b9d6d69eb8..da0c8ab523 100644
--- a/include/qemu/accel.h
+++ b/include/qemu/accel.h
@@ -78,4 +78,17 @@ int accel_init_machine(AccelState *accel, MachineState *ms);
void accel_setup_post(MachineState *ms);
#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 */
diff --git a/accel/accel-common.c b/accel/accel-common.c
index 9901b0531c..0f6fb4fb66 100644
--- a/accel/accel-common.c
+++ b/accel/accel-common.c
@@ -89,6 +89,25 @@ void accel_init_interfaces(AccelClass *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 = {
.name = TYPE_ACCEL_CPU,
.parent = TYPE_OBJECT,
diff --git a/cpu.c b/cpu.c
index ba5d272c1e..25e6fbfa2c 100644
--- a/cpu.c
+++ b/cpu.c
@@ -130,11 +130,7 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp)
CPUClass *cc = CPU_GET_CLASS(cpu);
cpu_list_add(cpu);
-
- if (cc->accel_cpu) {
- /* NB: errp parameter is unused currently */
- cc->accel_cpu->cpu_realizefn(cpu, errp);
- }
+ accel_cpu_realizefn(cpu, errp);
#ifdef CONFIG_TCG
/* NB: errp parameter is unused currently */
diff --git a/target/i386/cpu.c b/target/i386/cpu.c
index e1da3b1dd6..ce344a214c 100644
--- a/target/i386/cpu.c
+++ b/target/i386/cpu.c
@@ -28,7 +28,6 @@
#include "sysemu/kvm.h"
#include "sysemu/reset.h"
#include "sysemu/hvf.h"
-#include "hw/core/accel-cpu.h"
#include "sysemu/xen.h"
#include "sysemu/whpx.h"
#include "kvm/kvm_i386.h"
@@ -6788,8 +6787,6 @@ static void x86_cpu_initfn(Object *obj)
{
X86CPU *cpu = X86_CPU(obj);
X86CPUClass *xcc = X86_CPU_GET_CLASS(obj);
- CPUClass *cc = CPU_CLASS(xcc);
-
CPUX86State *env = &cpu->env;
env->nr_dies = 1;
@@ -6838,10 +6835,8 @@ static void x86_cpu_initfn(Object *obj)
x86_cpu_load_model(cpu, xcc->model);
}
- /* if required, do the accelerator-specific cpu initialization */
- if (cc->accel_cpu) {
- cc->accel_cpu->cpu_instance_init(CPU(obj));
- }
+ /* if required, do accelerator-specific cpu initializations */
+ accel_cpu_instance_init(CPU(obj));
}
static int64_t x86_cpu_get_arch_id(CPUState *cs)
--
2.26.2
- [PATCH v28 00/23] i386 cleanup PART 2, Claudio Fontana, 2021/03/22
- [RFC] accel: add cpu_reset, Claudio Fontana, 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, 2021/03/22
- [PATCH v28 05/23] accel: introduce new accessor functions,
Claudio Fontana <=
- [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
- [PATCH v28 13/23] i386: split misc helper user stubs and sysemu part, Claudio Fontana, 2021/03/22