Message ID | 20180620100825.22476-8-david@redhat.com |
---|---|
State | New |
Headers | show |
Series | s390x: TOD refactoring + TCG CPU hotplug support | expand |
On 20.06.2018 12:08, David Hildenbrand wrote: > run_on_cpu() doesn't seem to work reliably until the CPU has been fully > created if the single-threaded TCG main loop is already running. > > Therefore, let's use run_on_cpu() for KVM only - KVM requires it due to > the initial CPU reset ioctl. > > Signed-off-by: David Hildenbrand <david@redhat.com> > --- > target/s390x/cpu.c | 11 ++++++----- > 1 file changed, 6 insertions(+), 5 deletions(-) > > diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c > index 40d6980229..7536dd0f03 100644 > --- a/target/s390x/cpu.c > +++ b/target/s390x/cpu.c > @@ -218,11 +218,12 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp) > #endif > s390_cpu_gdb_init(cs); > qemu_init_vcpu(cs); > -#if !defined(CONFIG_USER_ONLY) > - run_on_cpu(cs, s390_do_cpu_full_reset, RUN_ON_CPU_NULL); > -#else > - cpu_reset(cs); > -#endif > + > + if (kvm_enabled()) { > + run_on_cpu(cs, s390_do_cpu_full_reset, RUN_ON_CPU_NULL); > + } else { > + cpu_reset(cs); > + } Could you please add a comment with the information from the patch description before that code? Otherwise, I guess everybody who only looks at the code (and not at the git history) will be quite confused about this, too. Thomas
diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 40d6980229..7536dd0f03 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -218,11 +218,12 @@ static void s390_cpu_realizefn(DeviceState *dev, Error **errp) #endif s390_cpu_gdb_init(cs); qemu_init_vcpu(cs); -#if !defined(CONFIG_USER_ONLY) - run_on_cpu(cs, s390_do_cpu_full_reset, RUN_ON_CPU_NULL); -#else - cpu_reset(cs); -#endif + + if (kvm_enabled()) { + run_on_cpu(cs, s390_do_cpu_full_reset, RUN_ON_CPU_NULL); + } else { + cpu_reset(cs); + } scc->parent_realize(dev, &err); out:
run_on_cpu() doesn't seem to work reliably until the CPU has been fully created if the single-threaded TCG main loop is already running. Therefore, let's use run_on_cpu() for KVM only - KVM requires it due to the initial CPU reset ioctl. Signed-off-by: David Hildenbrand <david@redhat.com> --- target/s390x/cpu.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-)