All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 0/2] ARM: Allow forced irq threading
@ 2013-02-14 20:53 Thomas Gleixner
  2013-02-14 20:53 ` [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD Thomas Gleixner
  2013-02-14 20:53 ` [patch 2/2] arm: Allow forced irq threading Thomas Gleixner
  0 siblings, 2 replies; 12+ messages in thread
From: Thomas Gleixner @ 2013-02-14 20:53 UTC (permalink / raw)
  To: linux-arm-kernel

Forced irq threading is a prerequisite for RT and a nice debug feature
(enabled via commandline option) in mainline.

The following series adds the tiny missing pieces to enable this on
the arm architecture.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD
  2013-02-14 20:53 [patch 0/2] ARM: Allow forced irq threading Thomas Gleixner
@ 2013-02-14 20:53 ` Thomas Gleixner
  2013-02-15  9:51   ` Will Deacon
  2013-02-14 20:53 ` [patch 2/2] arm: Allow forced irq threading Thomas Gleixner
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Gleixner @ 2013-02-14 20:53 UTC (permalink / raw)
  To: linux-arm-kernel

An embedded and charset-unspecified text was scrubbed...
Name: arm-mark-pmu-interupt-no-thread.patch
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130214/05d13106/attachment.ksh>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 2/2] arm: Allow forced irq threading
  2013-02-14 20:53 [patch 0/2] ARM: Allow forced irq threading Thomas Gleixner
  2013-02-14 20:53 ` [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD Thomas Gleixner
@ 2013-02-14 20:53 ` Thomas Gleixner
  2013-02-14 21:49   ` Russell King - ARM Linux
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Gleixner @ 2013-02-14 20:53 UTC (permalink / raw)
  To: linux-arm-kernel

An embedded and charset-unspecified text was scrubbed...
Name: arm-allow-irq-threading.patch
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20130214/c10f3922/attachment.ksh>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 2/2] arm: Allow forced irq threading
  2013-02-14 20:53 ` [patch 2/2] arm: Allow forced irq threading Thomas Gleixner
@ 2013-02-14 21:49   ` Russell King - ARM Linux
  2013-02-14 22:04     ` Thomas Gleixner
  0 siblings, 1 reply; 12+ messages in thread
From: Russell King - ARM Linux @ 2013-02-14 21:49 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Feb 14, 2013 at 08:53:53PM -0000, Thomas Gleixner wrote:
> All timer interrupts and the perf interrupt are marked NO_THREAD, so
> its safe to allow forced interrupt threading.

What effect does this have on IRQ latency, particularly on the slower CPUs?

If it adds to the IRQ latency, then it must be conditional; there are
platforms where IRQ latency is important for things like network devices
to keep up (particularly the SMC NICs).

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 2/2] arm: Allow forced irq threading
  2013-02-14 21:49   ` Russell King - ARM Linux
@ 2013-02-14 22:04     ` Thomas Gleixner
  2013-08-12 20:03       ` [PATCH 2/2 v2] " Sebastian Andrzej Siewior
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Gleixner @ 2013-02-14 22:04 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, 14 Feb 2013, Russell King - ARM Linux wrote:

> On Thu, Feb 14, 2013 at 08:53:53PM -0000, Thomas Gleixner wrote:
> > All timer interrupts and the perf interrupt are marked NO_THREAD, so
> > its safe to allow forced interrupt threading.
> 
> What effect does this have on IRQ latency, particularly on the slower CPUs?
> 
> If it adds to the IRQ latency, then it must be conditional; there are
> platforms where IRQ latency is important for things like network devices
> to keep up (particularly the SMC NICs).

It does not affect anything unless you add "threadirqs" to the kernel
command line. This command line argument puts the kernel into forced
irq threading mode. Otherwise it just works as now.

And yes, if enabled on the command line it adds latency due to the
delayed invocation of the handler in the thread.

Though for mainline this is primary a debug mechanism where you can
morph the kernel explosion in the interrupt handler into a takedown of
the handler thread instead of crashing the machine completely.
 
Now on RT we force this and I can tell you that even on slow machines
with SMC NICs the overhead seems to be in a range where these systems
can cope with. Of course, if you tweak the scheduling params of the
irq thread low enough you can run into problematic situations. But
that's not an ARM specific problem, that's a general problem of
configuring a RT system.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD
  2013-02-14 20:53 ` [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD Thomas Gleixner
@ 2013-02-15  9:51   ` Will Deacon
  2013-08-12 19:52     ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 12+ messages in thread
From: Will Deacon @ 2013-02-15  9:51 UTC (permalink / raw)
  To: linux-arm-kernel

On Thu, Feb 14, 2013 at 08:53:52PM +0000, Thomas Gleixner wrote:
> PMU interrupts must not be threaded.
> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
>  arch/arm/kernel/perf_event_cpu.c |    3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6/arch/arm/kernel/perf_event_cpu.c
> ===================================================================
> --- linux-2.6.orig/arch/arm/kernel/perf_event_cpu.c
> +++ linux-2.6/arch/arm/kernel/perf_event_cpu.c
> @@ -118,7 +118,8 @@ static int cpu_pmu_request_irq(struct ar
>  			continue;
>  		}
>  
> -		err = request_irq(irq, handler, IRQF_NOBALANCING, "arm-pmu",
> +		err = request_irq(irq, handler,
> +				  IRQF_NOBALANCING | IRQF_NO_THREAD, "arm-pmu",
>  				  cpu_pmu);
>  		if (err) {
>  			pr_err("unable to request IRQ%d for ARM PMU counters\n",
> 
> 

Yup, we certainly don't want these to be threaded! Cheers, I'll add this to
my perf queue.

Will

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD
  2013-02-15  9:51   ` Will Deacon
@ 2013-08-12 19:52     ` Sebastian Andrzej Siewior
  2013-08-13 11:11       ` Will Deacon
  0 siblings, 1 reply; 12+ messages in thread
From: Sebastian Andrzej Siewior @ 2013-08-12 19:52 UTC (permalink / raw)
  To: linux-arm-kernel

On Fri, Feb 15, 2013 at 09:51:53AM +0000, Will Deacon wrote:
> Yup, we certainly don't want these to be threaded! Cheers, I'll add this to
> my perf queue.

I don't see this in v3.10. Is there a problem with this patch?

> Will

Sebastian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/2 v2] arm: Allow forced irq threading
  2013-02-14 22:04     ` Thomas Gleixner
@ 2013-08-12 20:03       ` Sebastian Andrzej Siewior
  2013-08-14 10:08         ` Sekhar Nori
  0 siblings, 1 reply; 12+ messages in thread
From: Sebastian Andrzej Siewior @ 2013-08-12 20:03 UTC (permalink / raw)
  To: linux-arm-kernel

From: Thomas Gleixner <tglx@linutronix.de>

All timer interrupts and the perf interrupt are marked NO_THREAD, so
its safe to allow forced interrupt threading.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
On Thu, Feb 14, 2013 at 11:04:48PM +0100, Thomas Gleixner wrote:
> On Thu, 14 Feb 2013, Russell King - ARM Linux wrote:
> 
> > What effect does this have on IRQ latency, particularly on the slower CPUs?
> 
> It does not affect anything unless you add "threadirqs" to the kernel
> command line. This command line argument puts the kernel into forced
> irq threading mode. Otherwise it just works as now.

I reposted the patch since it no longer applies clean on v3.11-rc5. From what
tglx explained, I don't think there are any outstanding issues, are there?

 arch/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 43594d5..405e4c0 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -20,6 +20,7 @@ config ARM
 	select GENERIC_STRNCPY_FROM_USER
 	select GENERIC_STRNLEN_USER
 	select HARDIRQS_SW_RESEND
+	select IRQ_FORCED_THREADING
 	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
 	select HAVE_ARCH_KGDB
 	select HAVE_ARCH_SECCOMP_FILTER
-- 
1.8.4.rc1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD
  2013-08-12 19:52     ` Sebastian Andrzej Siewior
@ 2013-08-13 11:11       ` Will Deacon
  2013-08-14  9:52         ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 12+ messages in thread
From: Will Deacon @ 2013-08-13 11:11 UTC (permalink / raw)
  To: linux-arm-kernel

On Mon, Aug 12, 2013 at 08:52:55PM +0100, Sebastian Andrzej Siewior wrote:
> On Fri, Feb 15, 2013 at 09:51:53AM +0000, Will Deacon wrote:
> > Yup, we certainly don't want these to be threaded! Cheers, I'll add this to
> > my perf queue.
> 
> I don't see this in v3.10. Is there a problem with this patch?

Nope, I was just waiting for the discussion to die down around the kconfig
change in the second patch.

Probably best to submit both to Russell's patch system[1], with my ack on
this one:

  Acked-by: Will Deacon <will.deacon@arm.com>

Will

[1] Add a "KernelVersion: 3.11-rc5" line to the patch, then git send-email
    it to patches at arm.linux.org.uk.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD
  2013-08-13 11:11       ` Will Deacon
@ 2013-08-14  9:52         ` Sebastian Andrzej Siewior
  0 siblings, 0 replies; 12+ messages in thread
From: Sebastian Andrzej Siewior @ 2013-08-14  9:52 UTC (permalink / raw)
  To: linux-arm-kernel

On Tue, Aug 13, 2013 at 12:11:17PM +0100, Will Deacon wrote:
> Probably best to submit both to Russell's patch system[1], with my ack on
> this one:

Okay, will do. Thanks.

> 
> Will

Sebastian

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/2 v2] arm: Allow forced irq threading
  2013-08-12 20:03       ` [PATCH 2/2 v2] " Sebastian Andrzej Siewior
@ 2013-08-14 10:08         ` Sekhar Nori
  2013-08-14 14:43           ` [PATCH 2/2 v3] " Sebastian Andrzej Siewior
  0 siblings, 1 reply; 12+ messages in thread
From: Sekhar Nori @ 2013-08-14 10:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Monday 12 August 2013 08:03 PM, Sebastian Andrzej Siewior wrote:
> From: Thomas Gleixner <tglx@linutronix.de>
> 
> All timer interrupts and the perf interrupt are marked NO_THREAD, so
> its safe to allow forced interrupt threading.
> 
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
> ---
> On Thu, Feb 14, 2013 at 11:04:48PM +0100, Thomas Gleixner wrote:
>> On Thu, 14 Feb 2013, Russell King - ARM Linux wrote:
>>
>>> What effect does this have on IRQ latency, particularly on the slower CPUs?
>>
>> It does not affect anything unless you add "threadirqs" to the kernel
>> command line. This command line argument puts the kernel into forced
>> irq threading mode. Otherwise it just works as now.
> 
> I reposted the patch since it no longer applies clean on v3.11-rc5. From what
> tglx explained, I don't think there are any outstanding issues, are there?
> 
>  arch/arm/Kconfig | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index 43594d5..405e4c0 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -20,6 +20,7 @@ config ARM
>  	select GENERIC_STRNCPY_FROM_USER
>  	select GENERIC_STRNLEN_USER
>  	select HARDIRQS_SW_RESEND
> +	select IRQ_FORCED_THREADING

Please add in alphabetic sorted order.

>  	select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL
>  	select HAVE_ARCH_KGDB
>  	select HAVE_ARCH_SECCOMP_FILTER

Thanks,
Sekhar

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2/2 v3] arm: Allow forced irq threading
  2013-08-14 10:08         ` Sekhar Nori
@ 2013-08-14 14:43           ` Sebastian Andrzej Siewior
  0 siblings, 0 replies; 12+ messages in thread
From: Sebastian Andrzej Siewior @ 2013-08-14 14:43 UTC (permalink / raw)
  To: linux-arm-kernel

From: Thomas Gleixner <tglx@linutronix.de>

All timer interrupts and the perf interrupt are marked NO_THREAD, so
its safe to allow forced interrupt threading.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
---
 arch/arm/Kconfig | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 43594d5..6858b3a 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -52,6 +52,7 @@ config ARM
 	select HAVE_REGS_AND_STACK_ACCESS_API
 	select HAVE_SYSCALL_TRACEPOINTS
 	select HAVE_UID16
+	select IRQ_FORCED_THREADING
 	select KTIME_SCALAR
 	select PERF_USE_VMALLOC
 	select RTC_LIB
-- 
1.8.4.rc1

^ permalink raw reply related	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2013-08-14 14:43 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-14 20:53 [patch 0/2] ARM: Allow forced irq threading Thomas Gleixner
2013-02-14 20:53 ` [patch 1/2] arm: Mark pmu interupt IRQF_NO_THREAD Thomas Gleixner
2013-02-15  9:51   ` Will Deacon
2013-08-12 19:52     ` Sebastian Andrzej Siewior
2013-08-13 11:11       ` Will Deacon
2013-08-14  9:52         ` Sebastian Andrzej Siewior
2013-02-14 20:53 ` [patch 2/2] arm: Allow forced irq threading Thomas Gleixner
2013-02-14 21:49   ` Russell King - ARM Linux
2013-02-14 22:04     ` Thomas Gleixner
2013-08-12 20:03       ` [PATCH 2/2 v2] " Sebastian Andrzej Siewior
2013-08-14 10:08         ` Sekhar Nori
2013-08-14 14:43           ` [PATCH 2/2 v3] " Sebastian Andrzej Siewior

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.