[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/x86: don't lose event interrupts
On 16/04/16 03:23, Stefano Stabellini wrote: > On slow platforms with unreliable TSC, such as QEMU emulated machines, > it is possible for the kernel to request the next event in the past. In > that case, in the current implementation of xen_vcpuop_clockevent, we > simply return -ETIME. To be precise the Xen returns -ETIME and we pass > it on. However the result of this is a missed event, which simply causes > the kernel to hang. > > Instead it is better to always ask the hypervisor for a timer event, > even if the timeout is in the past. That way there are no lost > interrupts and the kernel survives. To do that, remove the > VCPU_SSHOTTMR_future flag. > > Signed-off-by: Stefano Stabellini <sstabellini@xxxxxxxxxx> Acked-by: Juergen Gross <jgross@xxxxxxxx> > > diff --git a/arch/x86/xen/time.c b/arch/x86/xen/time.c > index a0a4e55..6deba5b 100644 > --- a/arch/x86/xen/time.c > +++ b/arch/x86/xen/time.c > @@ -290,11 +290,11 @@ static int xen_vcpuop_set_next_event(unsigned long > delta, > WARN_ON(!clockevent_state_oneshot(evt)); > > single.timeout_abs_ns = get_abs_timeout(delta); > - single.flags = VCPU_SSHOTTMR_future; > + /* Get an event anyway, even if the timeout is already expired */ > + single.flags = 0; > > ret = HYPERVISOR_vcpu_op(VCPUOP_set_singleshot_timer, cpu, &single); > - > - BUG_ON(ret != 0 && ret != -ETIME); > + BUG_ON(ret != 0); > > return ret; > } > _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |