<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/kernel/irq/handle.c, branch v2.6.36</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>genirq: Run irq handlers with interrupts disabled</title>
<updated>2010-04-13T14:36:40+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2010-03-26T00:06:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=e58aa3d2d0cc01ad8d6f7f640a0670433f794922'/>
<id>e58aa3d2d0cc01ad8d6f7f640a0670433f794922</id>
<content type='text'>
Running interrupt handlers with interrupts enabled can cause stack
overflows. That has been observed with multiqueue NICs delivering all
their interrupts to a single core. We might band aid that somehow by
checking the interrupt stacks, but the real safe fix is to run the irq
handlers with interrupts disabled.

Drivers for whacky hardware still can reenable them in the handler
itself, if the need arises. (They do already due to lockdep)

The risk of doing this is rather low:

 - lockdep already enforces this
 - CONFIG_NOHZ has shaken out the drivers which relied on jiffies updates
 - time keeping is not longer sensitive to the timer interrupt being delayed

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Cc: Andi Kleen &lt;andi@firstfloor.org&gt;
Cc: David Miller &lt;davem@davemloft.net&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Cc: Linus Torvalds &lt;torvalds@osdl.org&gt;
LKML-Reference: &lt;20100326000405.758579387@linutronix.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Running interrupt handlers with interrupts enabled can cause stack
overflows. That has been observed with multiqueue NICs delivering all
their interrupts to a single core. We might band aid that somehow by
checking the interrupt stacks, but the real safe fix is to run the irq
handlers with interrupts disabled.

Drivers for whacky hardware still can reenable them in the handler
itself, if the need arises. (They do already due to lockdep)

The risk of doing this is rather low:

 - lockdep already enforces this
 - CONFIG_NOHZ has shaken out the drivers which relied on jiffies updates
 - time keeping is not longer sensitive to the timer interrupt being delayed

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Cc: Andi Kleen &lt;andi@firstfloor.org&gt;
Cc: David Miller &lt;davem@davemloft.net&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Cc: Arnaldo Carvalho de Melo &lt;acme@redhat.com&gt;
Cc: Linus Torvalds &lt;torvalds@osdl.org&gt;
LKML-Reference: &lt;20100326000405.758579387@linutronix.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>sparseirq: Use radix_tree instead of ptrs array</title>
<updated>2010-02-18T01:27:20+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2010-02-10T09:20:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=b5eb78f76ddfa7caf4340cf6893b032f45d8114a'/>
<id>b5eb78f76ddfa7caf4340cf6893b032f45d8114a</id>
<content type='text'>
Use radix_tree irq_desc_tree instead of irq_desc_ptrs.

-v2: according to Eric and cyrill to use radix_tree_lookup_slot and
     radix_tree_replace_slot

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
LKML-Reference: &lt;1265793639-15071-32-git-send-email-yinghai@kernel.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use radix_tree irq_desc_tree instead of irq_desc_ptrs.

-v2: according to Eric and cyrill to use radix_tree_lookup_slot and
     radix_tree_replace_slot

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
LKML-Reference: &lt;1265793639-15071-32-git-send-email-yinghai@kernel.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sparseirq: Change irq_desc_ptrs to static</title>
<updated>2010-02-18T01:27:03+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2010-02-10T09:20:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=99558f0bbe68cb09799ec38adbaa3f3b2dc7ba63'/>
<id>99558f0bbe68cb09799ec38adbaa3f3b2dc7ba63</id>
<content type='text'>
Add replace_irq_desc() instead of poking at the array directly.

-v2: remove unneeded boundary check in replace_irq_desc

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
LKML-Reference: &lt;1265793639-15071-31-git-send-email-yinghai@kernel.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add replace_irq_desc() instead of poking at the array directly.

-v2: remove unneeded boundary check in replace_irq_desc

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
LKML-Reference: &lt;1265793639-15071-31-git-send-email-yinghai@kernel.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>irq: Remove unnecessary bootmem code</title>
<updated>2010-02-18T01:23:59+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2010-02-10T09:20:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=febcb0c59ac19fef2081a30e371e7af3619b5e91'/>
<id>febcb0c59ac19fef2081a30e371e7af3619b5e91</id>
<content type='text'>
mem_init is moved early already.

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
LKML-Reference: &lt;1265793639-15071-29-git-send-email-yinghai@kernel.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
mem_init is moved early already.

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
LKML-Reference: &lt;1265793639-15071-29-git-send-email-yinghai@kernel.org&gt;
Signed-off-by: H. Peter Anvin &lt;hpa@zytor.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>genirq: Convert irq_desc.lock to raw_spinlock</title>
<updated>2009-12-14T22:55:33+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2009-11-17T15:46:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=239007b8440abff689632f50cdf0f2b9e895b534'/>
<id>239007b8440abff689632f50cdf0f2b9e895b534</id>
<content type='text'>
Convert locks which cannot be sleeping locks in preempt-rt to
raw_spinlocks.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Convert locks which cannot be sleeping locks in preempt-rt to
raw_spinlocks.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Peter Zijlstra &lt;peterz@infradead.org&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>headers: remove sched.h from interrupt.h</title>
<updated>2009-10-11T18:20:58+00:00</updated>
<author>
<name>Alexey Dobriyan</name>
<email>adobriyan@gmail.com</email>
</author>
<published>2009-10-07T13:09:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=d43c36dc6b357fa1806800f18aa30123c747a6d1'/>
<id>d43c36dc6b357fa1806800f18aa30123c747a6d1</id>
<content type='text'>
After m68k's task_thread_info() doesn't refer to current,
it's possible to remove sched.h from interrupt.h and not break m68k!
Many thanks to Heiko Carstens for allowing this.

Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
After m68k's task_thread_info() doesn't refer to current,
it's possible to remove sched.h from interrupt.h and not break m68k!
Many thanks to Heiko Carstens for allowing this.

Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>irq: Make sure irq_desc for legacy irq get correct node setting</title>
<updated>2009-08-29T13:53:00+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2009-08-26T23:20:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=372e24b0cb764ec55b4cf3408a95ae40a29e5b96'/>
<id>372e24b0cb764ec55b4cf3408a95ae40a29e5b96</id>
<content type='text'>
when there is no ram on node 0.

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
LKML-Reference: &lt;4A95C32D.5040605@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
when there is no ram on node 0.

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Jesse Barnes &lt;jbarnes@virtuousgeek.org&gt;
LKML-Reference: &lt;4A95C32D.5040605@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>irq: slab alloc for default irq_affinity</title>
<updated>2009-06-12T10:50:23+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2009-06-12T08:33:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=28be225b23b115573e0ecc8ef9996f42a1652f74'/>
<id>28be225b23b115573e0ecc8ef9996f42a1652f74</id>
<content type='text'>
Ingo had

[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: at mm/bootmem.c:537 alloc_arch_preferred_bootmem+0x2b/0x71()
[    0.000000] Hardware name: System Product Name
[    0.000000] Modules linked in:
[    0.000000] Pid: 0, comm: swapper Tainted: G        W  2.6.30-tip-03087-g0bb2618-dirty #52506
[    0.000000] Call Trace:
[    0.000000]  [&lt;81032588&gt;] warn_slowpath_common+0x60/0x90
[    0.000000]  [&lt;810325c5&gt;] warn_slowpath_null+0xd/0x10
[    0.000000]  [&lt;819d1bc0&gt;] alloc_arch_preferred_bootmem+0x2b/0x71
[    0.000000]  [&lt;819d1c31&gt;] ___alloc_bootmem_nopanic+0x2b/0x9a
[    0.000000]  [&lt;81050a0a&gt;] ? lock_release+0xac/0xb2
[    0.000000]  [&lt;819d1d4c&gt;] ___alloc_bootmem+0xe/0x2d
[    0.000000]  [&lt;819d1e9f&gt;] __alloc_bootmem+0xa/0xc
[    0.000000]  [&lt;819d7c63&gt;] alloc_bootmem_cpumask_var+0x21/0x26
[    0.000000]  [&lt;819d0cc8&gt;] early_irq_init+0x15/0x10d
[    0.000000]  [&lt;819bb75a&gt;] start_kernel+0x167/0x326
[    0.000000]  [&lt;819bb06b&gt;] __init_begin+0x6b/0x70
[    0.000000] ---[ end trace 4eaa2a86a8e2da23 ]---
[    0.000000] NR_IRQS:2304 nr_irqs:424
[    0.000000] CPU 0 irqstacks, hard=821e6000 soft=821e7000

we need to update init_irq_default_affinity

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ingo had

[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: at mm/bootmem.c:537 alloc_arch_preferred_bootmem+0x2b/0x71()
[    0.000000] Hardware name: System Product Name
[    0.000000] Modules linked in:
[    0.000000] Pid: 0, comm: swapper Tainted: G        W  2.6.30-tip-03087-g0bb2618-dirty #52506
[    0.000000] Call Trace:
[    0.000000]  [&lt;81032588&gt;] warn_slowpath_common+0x60/0x90
[    0.000000]  [&lt;810325c5&gt;] warn_slowpath_null+0xd/0x10
[    0.000000]  [&lt;819d1bc0&gt;] alloc_arch_preferred_bootmem+0x2b/0x71
[    0.000000]  [&lt;819d1c31&gt;] ___alloc_bootmem_nopanic+0x2b/0x9a
[    0.000000]  [&lt;81050a0a&gt;] ? lock_release+0xac/0xb2
[    0.000000]  [&lt;819d1d4c&gt;] ___alloc_bootmem+0xe/0x2d
[    0.000000]  [&lt;819d1e9f&gt;] __alloc_bootmem+0xa/0xc
[    0.000000]  [&lt;819d7c63&gt;] alloc_bootmem_cpumask_var+0x21/0x26
[    0.000000]  [&lt;819d0cc8&gt;] early_irq_init+0x15/0x10d
[    0.000000]  [&lt;819bb75a&gt;] start_kernel+0x167/0x326
[    0.000000]  [&lt;819bb06b&gt;] __init_begin+0x6b/0x70
[    0.000000] ---[ end trace 4eaa2a86a8e2da23 ]---
[    0.000000] NR_IRQS:2304 nr_irqs:424
[    0.000000] CPU 0 irqstacks, hard=821e6000 soft=821e7000

we need to update init_irq_default_affinity

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>irq: use kcalloc() instead of the bootmem allocator</title>
<updated>2009-06-11T16:27:13+00:00</updated>
<author>
<name>Pekka Enberg</name>
<email>penberg@cs.helsinki.fi</email>
</author>
<published>2009-06-11T11:46:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=22fb4e71e646695c7e0f379ada66b372c2d1aa1a'/>
<id>22fb4e71e646695c7e0f379ada66b372c2d1aa1a</id>
<content type='text'>
Fixes the following problem:

[    0.000000] Experimental hierarchical RCU init done.
[    0.000000] NR_IRQS:4352 nr_irqs:256
[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: at mm/bootmem.c:537 alloc_arch_preferred_bootmem+0x40/0x7e()
[    0.000000] Hardware name: To Be Filled By O.E.M.
[    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30-tip-02161-g7a74539-dirty #59709
[    0.000000] Call Trace:
[    0.000000]  [&lt;ffffffff823f8c8e&gt;] ? alloc_arch_preferred_bootmem+0x40/0x7e
[    0.000000]  [&lt;ffffffff81067168&gt;] warn_slowpath_common+0x88/0xcb
[    0.000000]  [&lt;ffffffff810671d2&gt;] warn_slowpath_null+0x27/0x3d
[    0.000000]  [&lt;ffffffff823f8c8e&gt;] alloc_arch_preferred_bootmem+0x40/0x7e
[    0.000000]  [&lt;ffffffff823f9307&gt;] ___alloc_bootmem_nopanic+0x4e/0xec
[    0.000000]  [&lt;ffffffff823f93c5&gt;] ___alloc_bootmem+0x20/0x61
[    0.000000]  [&lt;ffffffff823f962e&gt;] __alloc_bootmem+0x1e/0x34
[    0.000000]  [&lt;ffffffff823f757c&gt;] early_irq_init+0x6d/0x118
[    0.000000]  [&lt;ffffffff823e0140&gt;] ? early_idt_handler+0x0/0x71
[    0.000000]  [&lt;ffffffff823e0cf7&gt;] start_kernel+0x192/0x394
[    0.000000]  [&lt;ffffffff823e0140&gt;] ? early_idt_handler+0x0/0x71
[    0.000000]  [&lt;ffffffff823e02ad&gt;] x86_64_start_reservations+0xb4/0xcf
[    0.000000]  [&lt;ffffffff823e0000&gt;] ? __init_begin+0x0/0x140
[    0.000000]  [&lt;ffffffff823e0420&gt;] x86_64_start_kernel+0x158/0x17b
[    0.000000] ---[ end trace a7919e7f17c0a725 ]---
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 2002.510 MHz processor.
[    0.004000] Console: colour VGA+ 80x25

Reported-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fixes the following problem:

[    0.000000] Experimental hierarchical RCU init done.
[    0.000000] NR_IRQS:4352 nr_irqs:256
[    0.000000] ------------[ cut here ]------------
[    0.000000] WARNING: at mm/bootmem.c:537 alloc_arch_preferred_bootmem+0x40/0x7e()
[    0.000000] Hardware name: To Be Filled By O.E.M.
[    0.000000] Pid: 0, comm: swapper Not tainted 2.6.30-tip-02161-g7a74539-dirty #59709
[    0.000000] Call Trace:
[    0.000000]  [&lt;ffffffff823f8c8e&gt;] ? alloc_arch_preferred_bootmem+0x40/0x7e
[    0.000000]  [&lt;ffffffff81067168&gt;] warn_slowpath_common+0x88/0xcb
[    0.000000]  [&lt;ffffffff810671d2&gt;] warn_slowpath_null+0x27/0x3d
[    0.000000]  [&lt;ffffffff823f8c8e&gt;] alloc_arch_preferred_bootmem+0x40/0x7e
[    0.000000]  [&lt;ffffffff823f9307&gt;] ___alloc_bootmem_nopanic+0x4e/0xec
[    0.000000]  [&lt;ffffffff823f93c5&gt;] ___alloc_bootmem+0x20/0x61
[    0.000000]  [&lt;ffffffff823f962e&gt;] __alloc_bootmem+0x1e/0x34
[    0.000000]  [&lt;ffffffff823f757c&gt;] early_irq_init+0x6d/0x118
[    0.000000]  [&lt;ffffffff823e0140&gt;] ? early_idt_handler+0x0/0x71
[    0.000000]  [&lt;ffffffff823e0cf7&gt;] start_kernel+0x192/0x394
[    0.000000]  [&lt;ffffffff823e0140&gt;] ? early_idt_handler+0x0/0x71
[    0.000000]  [&lt;ffffffff823e02ad&gt;] x86_64_start_reservations+0xb4/0xcf
[    0.000000]  [&lt;ffffffff823e0000&gt;] ? __init_begin+0x0/0x140
[    0.000000]  [&lt;ffffffff823e0420&gt;] x86_64_start_kernel+0x158/0x17b
[    0.000000] ---[ end trace a7919e7f17c0a725 ]---
[    0.000000] Fast TSC calibration using PIT
[    0.000000] Detected 2002.510 MHz processor.
[    0.004000] Console: colour VGA+ 80x25

Reported-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>irq/cpumask: make memoryless node zero happy</title>
<updated>2009-06-11T16:27:08+00:00</updated>
<author>
<name>Yinghai Lu</name>
<email>yinghai@kernel.org</email>
</author>
<published>2009-05-29T01:14:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dad213aeb59718623fc59defeff95fe8c3feb8a0'/>
<id>dad213aeb59718623fc59defeff95fe8c3feb8a0</id>
<content type='text'>
Don't hardcode to node zero for early boot IRQ setup memory allocations.

[ penberg@cs.helsinki.fi: minor cleanups ]
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Johannes Weiner &lt;hannes@cmpxchg.org&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Don't hardcode to node zero for early boot IRQ setup memory allocations.

[ penberg@cs.helsinki.fi: minor cleanups ]
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Johannes Weiner &lt;hannes@cmpxchg.org&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Pekka Enberg &lt;penberg@cs.helsinki.fi&gt;
</pre>
</div>
</content>
</entry>
</feed>
