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.

Reply via email to