softmmu/cpus: Only set parallel_cpus for SMP
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é <f4bug@amsat.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
e7e8f33fb6
commit
4ca3d09cd9
@ -1895,6 +1895,16 @@ static void qemu_tcg_init_vcpu(CPUState *cpu)
|
|||||||
if (!tcg_region_inited) {
|
if (!tcg_region_inited) {
|
||||||
tcg_region_inited = 1;
|
tcg_region_inited = 1;
|
||||||
tcg_region_init();
|
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());
|
||||||
|
if (ms->smp.max_cpus > 1) {
|
||||||
|
parallel_cpus = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qemu_tcg_mttcg_enabled() || !single_tcg_cpu_thread) {
|
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()) {
|
if (qemu_tcg_mttcg_enabled()) {
|
||||||
/* create a thread per vCPU with TCG (MTTCG) */
|
/* create a thread per vCPU with TCG (MTTCG) */
|
||||||
parallel_cpus = true;
|
|
||||||
snprintf(thread_name, VCPU_THREAD_NAME_SIZE, "CPU %d/TCG",
|
snprintf(thread_name, VCPU_THREAD_NAME_SIZE, "CPU %d/TCG",
|
||||||
cpu->cpu_index);
|
cpu->cpu_index);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user