Re: [RFC V2 1/2] irq: Add a framework to measure interrupt timings
From: Peter Zijlstra <peterz@infradead.org>
Date: 2016-01-20 19:07:24
Also in:
lkml
From: Peter Zijlstra <peterz@infradead.org>
Date: 2016-01-20 19:07:24
Also in:
lkml
On Wed, Jan 20, 2016 at 05:00:32PM +0100, Daniel Lezcano wrote:
+++ b/kernel/irq/handle.c@@ -165,6 +165,7 @@ irqreturn_t handle_irq_event_percpu(struct irq_desc *desc) /* Fall through to add to randomness */ case IRQ_HANDLED: flags |= action->flags; + handle_irqtiming(irq, action->dev_id); break; default:
+++ b/kernel/irq/internals.h
+static inline void handle_irqtiming(unsigned int irq, void *dev_id)
+{
+ if (__irqtimings->handler)
+ __irqtimings->handler(irq, ktime_get(), dev_id);
+}Here too, ktime_get() is daft. Also, you really want to take the timestamp _before_ we call the handlers, not after, otherwise you mix in whatever variance exist in the handler duration.