Ping... On 11 July 2018 at 21:22, Yongji Xie <elohi...@gmail.com> wrote: > According to KVM API Documentation, we should only > run vcpu ioctls from the same thread that was used > to create the vcpu. This patch makes KVM_KVMCLOCK_CTRL > ioctl consistent with the Documentation. > > No functional change. > > Signed-off-by: Yongji Xie <xieyon...@baidu.com> > Signed-off-by: Chai Wen <chai...@baidu.com> > --- > hw/i386/kvm/clock.c | 17 ++++++++++------- > 1 file changed, 10 insertions(+), 7 deletions(-) > > diff --git a/hw/i386/kvm/clock.c b/hw/i386/kvm/clock.c > index 0bf1c60..25ea783 100644 > --- a/hw/i386/kvm/clock.c > +++ b/hw/i386/kvm/clock.c > @@ -147,6 +147,15 @@ static void kvm_update_clock(KVMClockState *s) > s->clock_is_reliable = kvm_has_adjust_clock_stable(); > } > > +static void do_kvmclock_ctrl(CPUState *cpu, run_on_cpu_data data) > +{ > + int ret = kvm_vcpu_ioctl(cpu, KVM_KVMCLOCK_CTRL, 0); > + > + if (ret && ret != -EINVAL) { > + fprintf(stderr, "%s: %s\n", __func__, strerror(-ret)); > + } > +} > + > static void kvmclock_vm_state_change(void *opaque, int running, > RunState state) > { > @@ -183,13 +192,7 @@ static void kvmclock_vm_state_change(void *opaque, int > running, > return; > } > CPU_FOREACH(cpu) { > - ret = kvm_vcpu_ioctl(cpu, KVM_KVMCLOCK_CTRL, 0); > - if (ret) { > - if (ret != -EINVAL) { > - fprintf(stderr, "%s: %s\n", __func__, strerror(-ret)); > - } > - return; > - } > + run_on_cpu(cpu, do_kvmclock_ctrl, RUN_ON_CPU_NULL); > } > } else { > > -- > 1.7.9.5 >