Message ID | 1531315364-2551-1-git-send-email-xieyongji@baidu.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Ping... On 11 July 2018 at 21:22, Yongji Xie <elohimes@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 <xieyongji@baidu.com> > Signed-off-by: Chai Wen <chaiwen@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 >
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 {