linux/kernel/irq
Daniel Lezcano c80081b920 genirq: Allow to pass the IRQF_TIMER flag with percpu irq request
The irq timings infrastructure tracks when interrupts occur in order to
statistically predict te next interrupt event.

There is no point to track timer interrupts and try to predict them because
the next expiration time is already known. This can be avoided via the
IRQF_TIMER flag which is passed by timer drivers in request_irq(). It marks
the interrupt as timer based which alloes to ignore these interrupts in the
timings code.

Per CPU interrupts which are requested via request_percpu_+irq() have no
flag argument, so marking per cpu timer interrupts is not possible and they
get tracked pointlessly.

Add __request_percpu_irq() as a variant of request_percpu_irq() with a
flags argument and make request_percpu_irq() an inline wrapper passing
flags = 0.

The flag parameter is restricted to IRQF_TIMER as all other IRQF_ flags
make no sense for per cpu interrupts.

The next step is to convert all existing users of request_percpu_irq() and
then remove the wrapper and the underscores.

[ tglx: Massaged changelog ]

Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: peterz@infradead.org
Cc: nicolas.pitre@linaro.org
Cc: vincent.guittot@linaro.org
Cc: rafael@kernel.org
Link: http://lkml.kernel.org/r/1499344144-3964-1-git-send-email-daniel.lezcano@linaro.org
2017-07-06 23:16:22 +02:00
..
affinity.c genirq/affinity: Assign vectors to all present CPUs 2017-06-22 18:21:26 +02:00
autoprobe.c genirq: Add force argument to irq_startup() 2017-06-22 18:21:24 +02:00
chip.c genirq: Force inlining of __irq_startup_managed to prevent build failure 2017-07-04 12:36:44 +02:00
cpuhotplug.c genirq/cpuhotplug: Avoid irq affinity setting for single targets 2017-06-22 18:21:25 +02:00
debug.h irq: hide debug macros so they don't collide with others. 2012-04-23 12:30:03 -04:00
debugfs.c genirq/debugfs: Remove pointless NULL pointer check 2017-06-24 11:43:53 +02:00
devres.c irq/generic-chip: Provide devm_irq_setup_generic_chip() 2017-06-21 15:53:11 +02:00
dummychip.c Merge branch 'linus' into irq/core 2015-06-05 22:25:01 +02:00
generic-chip.c irq/generic-chip: Export irq_init_generic_chip() locally 2017-06-21 15:53:11 +02:00
handle.c genirq/timings: Add infrastructure to track the interrupt timings 2017-06-24 11:44:11 +02:00
internals.h genirq/debugfs: Fix build for !CONFIG_IRQ_DOMAIN 2017-07-04 12:36:43 +02:00
ipi.c genirq: Fix missing irq allocation affinity hint 2016-07-19 10:49:47 +02:00
irqdesc.c genirq: Add mutex to irq desc to serialize request/free_irq() 2017-07-04 12:46:16 +02:00
irqdomain.c genirq/irqdomain: Remove auto-recursive hierarchy support 2017-06-22 18:29:34 +02:00
Kconfig genirq/timings: Add infrastructure to track the interrupt timings 2017-06-24 11:44:11 +02:00
Makefile genirq/timings: Add infrastructure to track the interrupt timings 2017-06-24 11:44:11 +02:00
manage.c genirq: Allow to pass the IRQF_TIMER flag with percpu irq request 2017-07-06 23:16:22 +02:00
migration.c genirq: Provide irq_fixup_move_pending() 2017-06-22 18:21:13 +02:00
msi.c genirq/irqdomain: Remove auto-recursive hierarchy support 2017-06-22 18:29:34 +02:00
pm.c Merge branches 'irq-urgent-for-linus' and 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-11-15 09:30:48 -08:00
proc.c genirq: Introduce effective affinity mask 2017-06-22 18:21:20 +02:00
resend.c genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
settings.h genirq: Add flag to force mask in disable_irq[_nosync]() 2015-10-11 11:33:42 +02:00
spurious.c genirq: Clarify logic calculating bogus irqreturn_t values 2017-02-16 15:32:19 +01:00
timings.c genirq/timings: Add infrastructure for estimating the next interrupt arrival time 2017-06-24 11:44:39 +02:00