Message ID | 20230915190009.68404-6-philmd@linaro.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | accel: Restrict tcg_exec_[un]realizefn() to TCG | expand |
On 9/15/23 21:00, Philippe Mathieu-Daudé wrote: > We don't need to expose these TCG-specific methods to the > whole code base. Register them as AccelClass handlers, they > will be called by the generic accel_cpu_[un]realize() methods. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Claudio Fontana <cfontana@suse.de> > --- > accel/tcg/internal.h | 3 +++ > include/exec/cpu-all.h | 2 -- > accel/tcg/tcg-all.c | 2 ++ > cpu.c | 8 -------- > 4 files changed, 5 insertions(+), 10 deletions(-) > > diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h > index e8cbbde581..57ab397df1 100644 > --- a/accel/tcg/internal.h > +++ b/accel/tcg/internal.h > @@ -80,6 +80,9 @@ bool tb_invalidate_phys_page_unwind(tb_page_addr_t addr, uintptr_t pc); > void cpu_restore_state_from_tb(CPUState *cpu, TranslationBlock *tb, > uintptr_t host_pc); > > +bool tcg_exec_realizefn(CPUState *cpu, Error **errp); > +void tcg_exec_unrealizefn(CPUState *cpu); > + > /* Return the current PC from CPU, which may be cached in TB. */ > static inline vaddr log_pc(CPUState *cpu, const TranslationBlock *tb) > { > diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h > index 1e5c530ee1..230525ebf7 100644 > --- a/include/exec/cpu-all.h > +++ b/include/exec/cpu-all.h > @@ -422,8 +422,6 @@ void dump_exec_info(GString *buf); > > /* accel/tcg/cpu-exec.c */ > int cpu_exec(CPUState *cpu); > -bool tcg_exec_realizefn(CPUState *cpu, Error **errp); > -void tcg_exec_unrealizefn(CPUState *cpu); > > /** > * cpu_set_cpustate_pointers(cpu) > diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c > index 03dfd67e9e..6942a9766a 100644 > --- a/accel/tcg/tcg-all.c > +++ b/accel/tcg/tcg-all.c > @@ -227,6 +227,8 @@ static void tcg_accel_class_init(ObjectClass *oc, void *data) > AccelClass *ac = ACCEL_CLASS(oc); > ac->name = "tcg"; > ac->init_machine = tcg_init_machine; > + ac->realize_cpu = tcg_exec_realizefn; > + ac->unrealize_cpu = tcg_exec_unrealizefn; > ac->allowed = &tcg_allowed; > ac->gdbstub_supported_sstep_flags = tcg_gdbstub_supported_sstep_flags; > > diff --git a/cpu.c b/cpu.c > index b928bbed50..1a8e730bed 100644 > --- a/cpu.c > +++ b/cpu.c > @@ -140,11 +140,6 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp) > return; > } > > - /* NB: errp parameter is unused currently */ > - if (tcg_enabled()) { > - tcg_exec_realizefn(cpu, errp); > - } > - > /* Wait until cpu initialization complete before exposing cpu. */ > cpu_list_add(cpu); > > @@ -190,9 +185,6 @@ void cpu_exec_unrealizefn(CPUState *cpu) > * accel_cpu_unrealize, which may free fields using call_rcu. > */ > accel_cpu_unrealize(cpu); > - if (tcg_enabled()) { > - tcg_exec_unrealizefn(cpu); > - } > } > > /*
diff --git a/accel/tcg/internal.h b/accel/tcg/internal.h index e8cbbde581..57ab397df1 100644 --- a/accel/tcg/internal.h +++ b/accel/tcg/internal.h @@ -80,6 +80,9 @@ bool tb_invalidate_phys_page_unwind(tb_page_addr_t addr, uintptr_t pc); void cpu_restore_state_from_tb(CPUState *cpu, TranslationBlock *tb, uintptr_t host_pc); +bool tcg_exec_realizefn(CPUState *cpu, Error **errp); +void tcg_exec_unrealizefn(CPUState *cpu); + /* Return the current PC from CPU, which may be cached in TB. */ static inline vaddr log_pc(CPUState *cpu, const TranslationBlock *tb) { diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index 1e5c530ee1..230525ebf7 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -422,8 +422,6 @@ void dump_exec_info(GString *buf); /* accel/tcg/cpu-exec.c */ int cpu_exec(CPUState *cpu); -bool tcg_exec_realizefn(CPUState *cpu, Error **errp); -void tcg_exec_unrealizefn(CPUState *cpu); /** * cpu_set_cpustate_pointers(cpu) diff --git a/accel/tcg/tcg-all.c b/accel/tcg/tcg-all.c index 03dfd67e9e..6942a9766a 100644 --- a/accel/tcg/tcg-all.c +++ b/accel/tcg/tcg-all.c @@ -227,6 +227,8 @@ static void tcg_accel_class_init(ObjectClass *oc, void *data) AccelClass *ac = ACCEL_CLASS(oc); ac->name = "tcg"; ac->init_machine = tcg_init_machine; + ac->realize_cpu = tcg_exec_realizefn; + ac->unrealize_cpu = tcg_exec_unrealizefn; ac->allowed = &tcg_allowed; ac->gdbstub_supported_sstep_flags = tcg_gdbstub_supported_sstep_flags; diff --git a/cpu.c b/cpu.c index b928bbed50..1a8e730bed 100644 --- a/cpu.c +++ b/cpu.c @@ -140,11 +140,6 @@ void cpu_exec_realizefn(CPUState *cpu, Error **errp) return; } - /* NB: errp parameter is unused currently */ - if (tcg_enabled()) { - tcg_exec_realizefn(cpu, errp); - } - /* Wait until cpu initialization complete before exposing cpu. */ cpu_list_add(cpu); @@ -190,9 +185,6 @@ void cpu_exec_unrealizefn(CPUState *cpu) * accel_cpu_unrealize, which may free fields using call_rcu. */ accel_cpu_unrealize(cpu); - if (tcg_enabled()) { - tcg_exec_unrealizefn(cpu); - } } /*
We don't need to expose these TCG-specific methods to the whole code base. Register them as AccelClass handlers, they will be called by the generic accel_cpu_[un]realize() methods. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> --- accel/tcg/internal.h | 3 +++ include/exec/cpu-all.h | 2 -- accel/tcg/tcg-all.c | 2 ++ cpu.c | 8 -------- 4 files changed, 5 insertions(+), 10 deletions(-)