Hi Thomas,
On Fri, 26 Jul 2019 23:58:38 +0100,
Thomas Gleixner <[email protected]> wrote:
>
> On Wed, 24 Jul 2019, Marc Zyngier wrote:
> > On 23/07/2019 18:58, Julien Grall wrote:
> > It really feels like a change in hrtimer_cancel semantics. From what I
> > understand, this is used to avoid racing against the softirq, but boy it
> > breaks things.
> >
> > If this cannot be avoided, this means we can't cancel the background
> > timer (which is used to emulate the vcpu timer while it is blocked
> > waiting for an interrupt), then we must move this canceling to the point
> > where the vcpu is unblocked (instead of scheduled), which may have some
> > side effects -- I'll have a look.
> >
> > But that's not the only problem: We also have hrtimers used to emulate
> > timers while the vcpu is running, and these timers are canceled in
> > kvm_timer_vcpu_put(), which is also called from a preempt notifier.
> > Unfortunately, I don't have a reasonable solution for that (other than
> > putting this hrtimer_cancel in a workqueue and start chasing the
> > resulting races).
>
> The fix is simple. See below. We'll add that to the next RT release. That
> will take a while as I'm busy with posting RT stuff for upstream :)
Ah, thanks for that! And yes, looking forward to RT upstream, it's
just about time! ;-)
>
> Thanks,
>
> tglx
>
> 8<------------
> --- a/virt/kvm/arm/arch_timer.c
> +++ b/virt/kvm/arm/arch_timer.c
> @@ -80,7 +80,7 @@ static inline bool userspace_irqchip(str
> static void soft_timer_start(struct hrtimer *hrt, u64 ns)
> {
> hrtimer_start(hrt, ktime_add_ns(ktime_get(), ns),
> - HRTIMER_MODE_ABS);
> + HRTIMER_MODE_ABS_HARD);
> }
>
That's pretty neat, and matches the patch you already have for
x86. Feel free to add my
Acked-by: Marc Zyngier <[email protected]>
Thanks,
M.
--
Jazz is not dead, it just smells funny.
_______________________________________________
kvmarm mailing list
[email protected]
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm