<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/kernel/irq/manage.c, branch linux-2.6.27.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.27.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.27.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2011-04-30T14:53:08Z</updated>
<entry>
<title>genirq: Disable the SHIRQ_DEBUG call in request_threaded_irq for now</title>
<updated>2011-04-30T14:53:08Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2011-02-18T22:27:23Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4d368856c7af6aabaaadacacbe92798264ada467'/>
<id>urn:sha1:4d368856c7af6aabaaadacacbe92798264ada467</id>
<content type='text'>
commit 6d83f94db95cfe65d2a6359cccdf61cf087c2598 upstream.

With CONFIG_SHIRQ_DEBUG=y we call a newly installed interrupt handler
in request_threaded_irq().

The original implementation (commit a304e1b8) called the handler
_BEFORE_ it was installed, but that caused problems with handlers
calling disable_irq_nosync(). See commit 377bf1e4.

It's braindead in the first place to call disable_irq_nosync in shared
handlers, but ....

Moving this call after we installed the handler looks innocent, but it
is very subtle broken on SMP.

Interrupt handlers rely on the fact, that the irq core prevents
reentrancy.

Now this debug call violates that promise because we run the handler
w/o the IRQ_INPROGRESS protection - which we cannot apply here because
that would result in a possibly forever masked interrupt line.

A concurrent real hardware interrupt on a different CPU results in
handler reentrancy and can lead to complete wreckage, which was
unfortunately observed in reality and took a fricking long time to
debug.

Leave the code here for now. We want this debug feature, but that's
not easy to fix. We really should get rid of those
disable_irq_nosync() abusers and remove that function completely.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Anton Vorontsov &lt;avorontsov@ru.mvista.com&gt;
Cc: David Woodhouse &lt;dwmw2@infradead.org&gt;
Cc: Arjan van de Ven &lt;arjan@infradead.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
</entry>
<entry>
<title>genirq: better warning on irqchip-&gt;set_type() failure</title>
<updated>2008-08-05T21:33:47Z</updated>
<author>
<name>David Brownell</name>
</author>
<published>2008-08-05T20:01:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c69ad71bcdecbaab82cfacb1dc967bd7fd967a3b'/>
<id>urn:sha1:c69ad71bcdecbaab82cfacb1dc967bd7fd967a3b</id>
<content type='text'>
While I'm glad to finally see the hole fixed whereby passing an invalid
IRQ trigger type to request_irq() would be ignored, the current diagnostic
isn't quite useful.  Fixed by also listing the trigger type which was
rejected.

Signed-off-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Acked-by: Uwe Kleine-König &lt;Uwe.Kleine-Koenig@digi.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Use WARN() in kernel/irq/manage.c</title>
<updated>2008-07-26T19:00:07Z</updated>
<author>
<name>Arjan van de Ven</name>
</author>
<published>2008-07-26T02:45:36Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b8c512f6190e313df69060bae4a161c5c044e272'/>
<id>urn:sha1:b8c512f6190e313df69060bae4a161c5c044e272</id>
<content type='text'>
Replace a printk+WARN_ON() by a WARN(); this increases the chance of the
string making it into the bugreport (ie: it goes inside the
---[ cut here ]--- section)

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>kernel/irq/manage.c: replace a printk + WARN_ON() to a WARN()</title>
<updated>2008-07-25T17:53:29Z</updated>
<author>
<name>Arjan van de Ven</name>
</author>
<published>2008-07-25T08:45:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7a2c477069fbd32f91598f05334003979b987a39'/>
<id>urn:sha1:7a2c477069fbd32f91598f05334003979b987a39</id>
<content type='text'>
Replace a printk+WARN_ON() by a WARN(); this increases the chance of the
string making it into the bugreport (ie: it goes inside the
---[ cut here ]--- section)

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>generic irqs: handle failure of irqchip-&gt;set_type in setup_irq</title>
<updated>2008-07-24T17:47:24Z</updated>
<author>
<name>Uwe Kleine-König</name>
</author>
<published>2008-07-24T04:28:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=82736f4d1d2b7063b829cc93171a6e5aea8a9c49'/>
<id>urn:sha1:82736f4d1d2b7063b829cc93171a6e5aea8a9c49</id>
<content type='text'>
set_type returns an int indicating success or failure, but up to now
setup_irq ignores that.

In my case this resulted in a machine hang:

gpio-keys requested IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, but
arm/ns9xxx can only trigger on one direction so set_type didn't touch
the configuration which happens do default to a level sensitiveness and
returned -EINVAL.  setup_irq ignored that and unmasked the irq.  This
resulted in an endless triggering of the gpio-key interrupt service
routine which effectively killed the machine.

With this patch applied setup_irq propagates the error to the caller.

Note that before in the case

	chip &amp;&amp; !chip-&gt;set_type &amp;&amp; !chip-&gt;name

a NULL pointer was feed to printk.  This is fixed, too.

Signed-off-by: Uwe Kleine-König &lt;Uwe.Kleine-Koenig@digi.com&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>set_irq_wake: fix return code and wake status tracking</title>
<updated>2008-07-23T16:35:53Z</updated>
<author>
<name>Uwe Kleine-König</name>
</author>
<published>2008-07-23T12:42:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2db873211ba47ef704c301f9ecf4a33413a0b649'/>
<id>urn:sha1:2db873211ba47ef704c301f9ecf4a33413a0b649</id>
<content type='text'>
Since 15a647eba94c3da27ccc666bea72e7cca06b2d19 set_irq_wake returned -ENXIO
if another device had it already enabled.  Zero is the right value to
return in this case.  Moreover the change to desc-&gt;status was not reverted
if desc-&gt;chip-&gt;set_wake returned an error.

Signed-off-by: Uwe Kleine-König &lt;Uwe.Kleine-Koenig@digi.com&gt;
Acked-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Russell King &lt;rmk@arm.linux.org.uk&gt;
Cc: Andrew Morton &lt;akpm@osdl.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>genirq: remove extraneous checks in manage.c</title>
<updated>2008-07-10T05:01:13Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-07-10T05:01:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=48627d8d23c34106c1365563604739a50343edaf'/>
<id>urn:sha1:48627d8d23c34106c1365563604739a50343edaf</id>
<content type='text'>
In http://bugzilla.kernel.org/show_bug.cgi?id=9580 it was pointed out
that the desc-&gt;chip checks are extraneous. In fact these are left
overs from early development and can be removed safely.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;

</content>
</entry>
<entry>
<title>genirq: Expose default irq affinity mask (take 3)</title>
<updated>2008-06-05T13:18:30Z</updated>
<author>
<name>Max Krasnyansky</name>
</author>
<published>2008-05-29T18:02:52Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=18404756765c713a0be4eb1082920c04822ce588'/>
<id>urn:sha1:18404756765c713a0be4eb1082920c04822ce588</id>
<content type='text'>
Current IRQ affinity interface does not provide a way to set affinity
for the IRQs that will be allocated/activated in the future.
This patch creates /proc/irq/default_smp_affinity that lets users set
default affinity mask for the newly allocated IRQs. Changing the default
does not affect affinity masks for the currently active IRQs, they
have to be changed explicitly.

Updated based on Paul J's comments and added some more documentation.

Signed-off-by: Max Krasnyansky &lt;maxk@qualcomm.com&gt;
Cc: pj@sgi.com
Cc: a.p.zijlstra@chello.nl
Cc: tglx@linutronix.de
Cc: rdunlap@xenotime.net
Cc: mingo@elte.hu
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>genirq: reenable a nobody cared disabled irq when a new driver arrives</title>
<updated>2008-05-02T11:40:34Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-04-28T15:01:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1adb0850a1254333d81e64121c80af100c6d6e06'/>
<id>urn:sha1:1adb0850a1254333d81e64121c80af100c6d6e06</id>
<content type='text'>
Uwe Kleine-Koenig has some strange hardware where one of the shared
interrupts can be asserted during boot before the appropriate driver
loads. Requesting the shared irq line from another driver result in a
spurious interrupt storm which finally disables the interrupt line.

I have seen similar behaviour on resume before (the hardware does not
work anymore so I can not verify).

Change the spurious disable logic to increment the disable depth and
mark the interrupt with an extra flag which allows us to reenable the
interrupt when a new driver arrives which requests the same irq
line. In the worst case this will disable the irq again via the
spurious trap, but there is a decent chance that the new driver is the
one which can handle the already asserted interrupt and makes the box
usable again.

Eric Biederman said further: This case also happens on a regular basis
in kdump kernels where we deliberately don't shutdown the hardware
before starting the new kernel.  This patch should reduce the need for
using irqpoll in that situation by a small amount.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Tested-and-Acked-by: Uwe Kleine-König &lt;Uwe.Kleine-Koenig@digi.com&gt;

</content>
</entry>
<entry>
<title>kernel: explicitly include required header files under kernel/</title>
<updated>2008-04-29T15:06:04Z</updated>
<author>
<name>Robert P. J. Day</name>
</author>
<published>2008-04-29T07:59:25Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1aeb272cf09f9e2cbc62163b9f37a9b4d1c7e81d'/>
<id>urn:sha1:1aeb272cf09f9e2cbc62163b9f37a9b4d1c7e81d</id>
<content type='text'>
Following an experimental deletion of the unnecessary directive

 #include &lt;linux/slab.h&gt;

from the header file &lt;linux/percpu.h&gt;, these files under kernel/ were exposed
as needing to include one of &lt;linux/slab.h&gt; or &lt;linux/gfp.h&gt;, so explicit
includes were added where necessary.

Signed-off-by: Robert P. J. Day &lt;rpjday@crashcourse.ca&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
</feed>
