<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/kernel/irq, branch v3.3</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/kernel/irq?h=v3.3</id>
<link rel='self' href='https://git.amat.us/linux/atom/kernel/irq?h=v3.3'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-03-07T00:46:39Z</updated>
<entry>
<title>genirq: Clear action-&gt;thread_mask if IRQ_ONESHOT is not set</title>
<updated>2012-03-07T00:46:39Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2012-03-06T22:18:54Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=52abb700e16a9aa4cbc03f3d7f80206cbbc80680'/>
<id>urn:sha1:52abb700e16a9aa4cbc03f3d7f80206cbbc80680</id>
<content type='text'>
Xommit ac5637611(genirq: Unmask oneshot irqs when thread was not woken)
fails to unmask when a !IRQ_ONESHOT threaded handler is handled by
handle_level_irq.

This happens because thread_mask is or'ed unconditionally in
irq_wake_thread(), but for !IRQ_ONESHOT interrupts never cleared.  So
the check for !desc-&gt;thread_active fails and keeps the interrupt
disabled.

Keep the thread_mask zero for !IRQ_ONESHOT interrupts.

Document the thread_mask magic while at it.

Reported-and-tested-by: Sven Joachim &lt;svenjoac@gmx.de&gt;
Reported-and-tested-by: Stefan Lippers-Hollmann &lt;s.l-h@gmx.de&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>genirq: Handle pending irqs in irq_startup()</title>
<updated>2012-02-15T10:56:59Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2012-02-08T10:57:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b4bc724e82e80478cba5fe9825b62e71ddf78757'/>
<id>urn:sha1:b4bc724e82e80478cba5fe9825b62e71ddf78757</id>
<content type='text'>
An interrupt might be pending when irq_startup() is called, but the
startup code does not invoke the resend logic. In some cases this
prevents the device from issuing another interrupt which renders the
device non functional.

Call the resend function in irq_startup() to keep things going.

Reported-and-tested-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>genirq: Unmask oneshot irqs when thread was not woken</title>
<updated>2012-02-15T10:56:59Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2012-02-07T16:58:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ac5637611150281f398bb7a47e3fcb69a09e7803'/>
<id>urn:sha1:ac5637611150281f398bb7a47e3fcb69a09e7803</id>
<content type='text'>
When the primary handler of an interrupt which is marked IRQ_ONESHOT
returns IRQ_HANDLED or IRQ_NONE, then the interrupt thread is not
woken and the unmask logic of the interrupt line is never
invoked. This keeps the interrupt masked forever.

This was not noticed as most IRQ_ONESHOT users wake the thread
unconditionally (usually because they cannot access the underlying
device from hard interrupt context). Though this behaviour was nowhere
documented and not necessarily intentional. Some drivers can avoid the
thread wakeup in certain cases and run into the situation where the
interrupt line s kept masked.

Handle it gracefully.

Reported-and-tested-by: Lothar Wassmann &lt;lw@karo-electronics.de&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>module_param: make bool parameters really bool (core code)</title>
<updated>2012-01-12T23:02:18Z</updated>
<author>
<name>Rusty Russell</name>
<email>rusty@rustcorp.com.au</email>
</author>
<published>2012-01-12T23:02:18Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2329abfa344a9a824bc4c71f2415528777265510'/>
<id>urn:sha1:2329abfa344a9a824bc4c71f2415528777265510</id>
<content type='text'>
module_param(bool) used to counter-intuitively take an int.  In
fddd5201 (mid-2009) we allowed bool or int/unsigned int using a messy
trick.

It's time to remove the int/unsigned int option.  For this version
it'll simply give a warning, but it'll break next kernel version.

Signed-off-by: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
</content>
</entry>
<entry>
<title>Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial</title>
<updated>2012-01-08T21:21:22Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-01-08T21:21:22Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=98793265b429a3f0b3f1750e74d67cd4d740d162'/>
<id>urn:sha1:98793265b429a3f0b3f1750e74d67cd4d740d162</id>
<content type='text'>
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (53 commits)
  Kconfig: acpi: Fix typo in comment.
  misc latin1 to utf8 conversions
  devres: Fix a typo in devm_kfree comment
  btrfs: free-space-cache.c: remove extra semicolon.
  fat: Spelling s/obsolate/obsolete/g
  SCSI, pmcraid: Fix spelling error in a pmcraid_err() call
  tools/power turbostat: update fields in manpage
  mac80211: drop spelling fix
  types.h: fix comment spelling for 'architectures'
  typo fixes: aera -&gt; area, exntension -&gt; extension
  devices.txt: Fix typo of 'VMware'.
  sis900: Fix enum typo 'sis900_rx_bufer_status'
  decompress_bunzip2: remove invalid vi modeline
  treewide: Fix comment and string typo 'bufer'
  hyper-v: Update MAINTAINERS
  treewide: Fix typos in various parts of the kernel, and fix some comments.
  clockevents: drop unknown Kconfig symbol GENERIC_CLOCKEVENTS_MIGR
  gpio: Kconfig: drop unknown symbol 'CS5535_GPIO'
  leds: Kconfig: Fix typo 'D2NET_V2'
  sound: Kconfig: drop unknown symbol ARCH_CLPS7500
  ...

Fix up trivial conflicts in arch/powerpc/platforms/40x/Kconfig (some new
kconfig additions, close to removed commented-out old ones)
</content>
</entry>
<entry>
<title>Merge tag 'devicetree-for-linus' of git://git.secretlab.ca/git/linux-2.6</title>
<updated>2012-01-07T20:18:52Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2012-01-07T20:18:52Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=02550d61f49266930e674286379d3601006b2893'/>
<id>urn:sha1:02550d61f49266930e674286379d3601006b2893</id>
<content type='text'>
devicetree/next changes queued for v3.3 merge window

* tag 'devicetree-for-linus-20120104' of git://git.secretlab.ca/git/linux-2.6:
  ARM: prom.h: Fix build error by removing unneeded header file
  irq: check domain hwirq range for DT translate
  dt: add empty of_get_node/of_put_node functions
  of/pdt: fix section mismatch warning
  i2c-designware: add OF binding support
  dt/i2c: Enumerate some of the known trivial i2c devices
  dt: reform for_each_property to for_each_property_of_node
  ARM/of: allow *machine_desc.dt_compat to be const
  of/base: Take NULL string into account for property with multiple strings
  OF/device-tree: Add some entries to vendor-prefixes.txt

Fix up trivial add-add conflicts in include/linux/of.h
</content>
</entry>
<entry>
<title>Merge branch 'devel-stable' into for-linus</title>
<updated>2012-01-05T13:24:33Z</updated>
<author>
<name>Russell King</name>
<email>rmk+kernel@arm.linux.org.uk</email>
</author>
<published>2012-01-05T13:24:33Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=2e0e943436912ffe0848ece58167edfe754edb96'/>
<id>urn:sha1:2e0e943436912ffe0848ece58167edfe754edb96</id>
<content type='text'>
Conflicts:
	arch/arm/kernel/setup.c
	arch/arm/mach-shmobile/board-kota2.c
</content>
</entry>
<entry>
<title>irq: check domain hwirq range for DT translate</title>
<updated>2011-12-28T14:26:06Z</updated>
<author>
<name>Rob Herring</name>
<email>rob.herring@calxeda.com</email>
</author>
<published>2011-12-12T15:59:14Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=93797d87d63d36404907640e4e20bb976bff4744'/>
<id>urn:sha1:93797d87d63d36404907640e4e20bb976bff4744</id>
<content type='text'>
A DT node may have more than 1 domain associated with it, so make sure
the hwirq number is within range when doing DT translation.

Signed-off-by: Rob Herring &lt;rob.herring@calxeda.com&gt;
Acked-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Acked-by: Shawn Guo &lt;shawn.guo@linaro.org&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>ARM: 7235/1: irqdomain: export irq_domain_simple_ops for !CONFIG_OF</title>
<updated>2011-12-23T22:33:58Z</updated>
<author>
<name>Jamie Iles</name>
<email>jamie@jamieiles.com</email>
</author>
<published>2011-12-14T22:43:16Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c87fb57346fc7653ace98769f148e0dcd88ac1ee'/>
<id>urn:sha1:c87fb57346fc7653ace98769f148e0dcd88ac1ee</id>
<content type='text'>
irqdomain support is used in interrupt controller drivers that may not
have device tree support but only need the basic HW-&gt;Linux irq
translation.  Rather than having each of these implement their own IRQ
domain, allow them to use the simple ops.

Acked-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Acked-by: Rob Herring &lt;robherring2@gmail.com&gt;
Cc: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Jamie Iles &lt;jamie@jamieiles.com&gt;
Signed-off-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
</content>
</entry>
<entry>
<title>genirq: Fix race condition when stopping the irq thread</title>
<updated>2011-12-02T10:54:24Z</updated>
<author>
<name>Ido Yariv</name>
<email>ido@wizery.com</email>
</author>
<published>2011-12-01T11:55:08Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=550acb19269d65f32e9ac4ddb26c2b2070e37f1c'/>
<id>urn:sha1:550acb19269d65f32e9ac4ddb26c2b2070e37f1c</id>
<content type='text'>
In irq_wait_for_interrupt(), the should_stop member is verified before
setting the task's state to TASK_INTERRUPTIBLE and calling schedule().
In case kthread_stop sets should_stop and wakes up the process after
should_stop is checked by the irq thread but before the task's state
is changed, the irq thread might never exit:

kthread_stop                    irq_wait_for_interrupt
------------                    ----------------------

                                 ...
...                              while (!kthread_should_stop()) {
kthread-&gt;should_stop = 1;
wake_up_process(k);
wait_for_completion(&amp;kthread-&gt;exited);
...
                                     set_current_state(TASK_INTERRUPTIBLE);

                                     ...

                                     schedule();
                                 }

Fix this by checking if the thread should stop after modifying the
task's state.

[ tglx: Simplified it a bit ]

Signed-off-by: Ido Yariv &lt;ido@wizery.com&gt;
Link: http://lkml.kernel.org/r/1322740508-22640-1-git-send-email-ido@wizery.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: stable@kernel.org
</content>
</entry>
</feed>
