From: Peter Zijlstra <peterz@infradead.org>
To: Mark Rutland <mark.rutland@arm.com>
Cc: linux-kernel@vger.kernel.org, tglx@linutronix.de, maz@kernel.org,
paulmck@kernel.org
Subject: Re: [PATCH v3 1/2] irq: abstract irqaction handler invocation
Date: Thu, 15 Jul 2021 12:49:54 +0200 [thread overview]
Message-ID: <20210715104954.GA4717@worktop.programming.kicks-ass.net> (raw)
In-Reply-To: <20210715095031.41922-2-mark.rutland@arm.com>
On Thu, Jul 15, 2021 at 10:50:30AM +0100, Mark Rutland wrote:
> diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
> index 54363527feea..70a4694cc891 100644
> --- a/kernel/irq/internals.h
> +++ b/kernel/irq/internals.h
> @@ -11,6 +11,8 @@
> #include <linux/pm_runtime.h>
> #include <linux/sched/clock.h>
>
> +#include <trace/events/irq.h>
> +
> #ifdef CONFIG_SPARSE_IRQ
> # define IRQ_BITMAP_BITS (NR_IRQS + 8196)
> #else
> @@ -107,6 +109,32 @@ irqreturn_t __handle_irq_event_percpu(struct irq_desc *desc, unsigned int *flags
> irqreturn_t handle_irq_event_percpu(struct irq_desc *desc);
> irqreturn_t handle_irq_event(struct irq_desc *desc);
>
> +static inline irqreturn_t __handle_irqaction(unsigned int irq,
> + struct irqaction *action,
> + void *dev_id)
> +{
> + irqreturn_t res;
> +
> + trace_irq_handler_entry(irq, action);
> + res = action->handler(irq, dev_id);
> + trace_irq_handler_exit(irq, action, res);
> +
> + return res;
> +}
> +
> +static inline irqreturn_t handle_irqaction(unsigned int irq,
> + struct irqaction *action)
> +{
> + return __handle_irqaction(irq, action, action->dev_id);
> +}
> +
> +static inline irqreturn_t handle_irqaction_percpu_devid(unsigned int irq,
> + struct irqaction *action)
> +{
> + return __handle_irqaction(irq, action,
> + raw_cpu_ptr(action->percpu_dev_id));
> +}
So I like this patch, it's a nice cleanup.
However, you could implement the next patch as a module that hooks into
those two tracepoints. Quite possibly the existing IRQ latency tracer
would already work for what you need and also provide you a function
trace of WTH the CPU was doing.
next prev parent reply other threads:[~2021-07-15 10:50 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-15 9:50 [PATCH v3 0/2] irq: detect slow IRQ handlers Mark Rutland
2021-07-15 9:50 ` [PATCH v3 1/2] irq: abstract irqaction handler invocation Mark Rutland
2021-07-15 10:49 ` Peter Zijlstra [this message]
2021-07-15 11:15 ` Mark Rutland
2021-07-15 13:10 ` Peter Zijlstra
2021-07-15 9:50 ` [PATCH v3 2/2] irq: detect long-running IRQ handlers Mark Rutland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210715104954.GA4717@worktop.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=maz@kernel.org \
--cc=paulmck@kernel.org \
--cc=tglx@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.