On 9/7/20 12:20 PM, Philippe Mathieu-Daudé wrote: > On 9/7/20 12:05 PM, Claudio Fontana wrote: >> Hi Richard, >> >> currently rebasing on top of this one, >> just a question, why is the patch not directly using "current_machine"? > > For user mode?
In user mode I'd not expect softmmu/cpus.c to be built at all... Ciao, Claudio > >> >> Is using MACHINE(qdev_get_machine()) preferrable here? >> >> Thanks, >> >> Claudio >> >> On 9/3/20 11:40 PM, Richard Henderson wrote: >>> Do not set parallel_cpus if there is only one cpu instantiated. >>> This will allow tcg to use serial code to implement atomics. >>> >>> Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org> >>> Signed-off-by: Richard Henderson <richard.hender...@linaro.org> >>> --- >>> softmmu/cpus.c | 11 ++++++++++- >>> 1 file changed, 10 insertions(+), 1 deletion(-) >>> >>> diff --git a/softmmu/cpus.c b/softmmu/cpus.c >>> index a802e899ab..e3b98065c9 100644 >>> --- a/softmmu/cpus.c >>> +++ b/softmmu/cpus.c >>> @@ -1895,6 +1895,16 @@ static void qemu_tcg_init_vcpu(CPUState *cpu) >>> if (!tcg_region_inited) { >>> tcg_region_inited = 1; >>> tcg_region_init(); >>> + /* >>> + * If MTTCG, and we will create multiple cpus, >>> + * then we will have cpus running in parallel. >>> + */ >>> + if (qemu_tcg_mttcg_enabled()) { >>> + MachineState *ms = MACHINE(qdev_get_machine()); >> >> MachineState *ms = current_machine; >> ? >> >> >>> + if (ms->smp.max_cpus > 1) { >>> + parallel_cpus = true; >>> + } >>> + } >>> } >>> >>> if (qemu_tcg_mttcg_enabled() || !single_tcg_cpu_thread) { >>> @@ -1904,7 +1914,6 @@ static void qemu_tcg_init_vcpu(CPUState *cpu) >>> >>> if (qemu_tcg_mttcg_enabled()) { >>> /* create a thread per vCPU with TCG (MTTCG) */ >>> - parallel_cpus = true; >>> snprintf(thread_name, VCPU_THREAD_NAME_SIZE, "CPU %d/TCG", >>> cpu->cpu_index); >>> >>> >> >>