mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
KVM: arm/arm64: Let the timer expire in hardirq context on RT
The timers are canceled from an preempt-notifier which is invoked with disabled preemption which is not allowed on PREEMPT_RT. The timer callback is short so in could be invoked in hard-IRQ context on -RT. Let the timer expire on hard-IRQ context even on -RT. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Marc Zyngier <maz@kernel.org> Tested-by: Julien Grall <julien.grall@arm.com> Acked-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20191107095424.16647-1-bigeasy@linutronix.de
This commit is contained in:
parent
ca185b2609
commit
9090825fa9
1 changed files with 4 additions and 4 deletions
|
@ -80,7 +80,7 @@ static inline bool userspace_irqchip(struct kvm *kvm)
|
||||||
static void soft_timer_start(struct hrtimer *hrt, u64 ns)
|
static void soft_timer_start(struct hrtimer *hrt, u64 ns)
|
||||||
{
|
{
|
||||||
hrtimer_start(hrt, ktime_add_ns(ktime_get(), ns),
|
hrtimer_start(hrt, ktime_add_ns(ktime_get(), ns),
|
||||||
HRTIMER_MODE_ABS);
|
HRTIMER_MODE_ABS_HARD);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void soft_timer_cancel(struct hrtimer *hrt)
|
static void soft_timer_cancel(struct hrtimer *hrt)
|
||||||
|
@ -697,11 +697,11 @@ void kvm_timer_vcpu_init(struct kvm_vcpu *vcpu)
|
||||||
update_vtimer_cntvoff(vcpu, kvm_phys_timer_read());
|
update_vtimer_cntvoff(vcpu, kvm_phys_timer_read());
|
||||||
ptimer->cntvoff = 0;
|
ptimer->cntvoff = 0;
|
||||||
|
|
||||||
hrtimer_init(&timer->bg_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
hrtimer_init(&timer->bg_timer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);
|
||||||
timer->bg_timer.function = kvm_bg_timer_expire;
|
timer->bg_timer.function = kvm_bg_timer_expire;
|
||||||
|
|
||||||
hrtimer_init(&vtimer->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
hrtimer_init(&vtimer->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);
|
||||||
hrtimer_init(&ptimer->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS);
|
hrtimer_init(&ptimer->hrtimer, CLOCK_MONOTONIC, HRTIMER_MODE_ABS_HARD);
|
||||||
vtimer->hrtimer.function = kvm_hrtimer_expire;
|
vtimer->hrtimer.function = kvm_hrtimer_expire;
|
||||||
ptimer->hrtimer.function = kvm_hrtimer_expire;
|
ptimer->hrtimer.function = kvm_hrtimer_expire;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue