Commit 77553208 authored by Philippe Gerum's avatar Philippe Gerum Committed by Jan Kiszka
Browse files

ipipe: timer: ensure no timer ack is missed while grabbing the tickdev

See https://www.xenomai.org/pipermail/xenomai/2019-March/040460.html
parent bd17802c
...@@ -368,15 +368,18 @@ static void __ipipe_ack_hrtimer_irq(struct irq_desc *desc) ...@@ -368,15 +368,18 @@ static void __ipipe_ack_hrtimer_irq(struct irq_desc *desc)
{ {
struct ipipe_timer *timer = __ipipe_raw_cpu_read(percpu_timer); struct ipipe_timer *timer = __ipipe_raw_cpu_read(percpu_timer);
/*
* Pseudo-IRQs like pipelined IPIs have no descriptor, we have
* to check for this.
*/
if (desc) if (desc)
desc->ipipe_ack(desc); desc->ipipe_ack(desc);
if (timer->host_timer->ipipe_stolen) {
if (timer->ack) if (timer->ack)
timer->ack(); timer->ack();
if (desc) if (desc)
desc->ipipe_end(desc); desc->ipipe_end(desc);
}
} }
static int do_set_oneshot(struct clock_event_device *cdev) static int do_set_oneshot(struct clock_event_device *cdev)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment