<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/kernel/irq, branch v3.1</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/kernel/irq?h=v3.1</id>
<link rel='self' href='https://git.amat.us/linux/atom/kernel/irq?h=v3.1'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2011-09-20T10:16:22Z</updated>
<entry>
<title>irq: Fix check for already initialized irq_domain in irq_domain_add</title>
<updated>2011-09-20T10:16:22Z</updated>
<author>
<name>Rob Herring</name>
<email>robherring2@gmail.com</email>
</author>
<published>2011-09-14T16:31:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=eef24afb28561a5a9f4be8f8da97735b7e6a826f'/>
<id>urn:sha1:eef24afb28561a5a9f4be8f8da97735b7e6a826f</id>
<content type='text'>
The sanity check in irq_domain_add() tests desc-&gt;irq_data != NULL or
irq_data-&gt;domain != NULL. This prevents adding an irq_domain to a irq
descriptor when irq_data exists, which true when the irq descriptor
exists.

This went unnoticed so far as the simple domain code did not enter
this code path because domain-&gt;nr_irqs is always 0 for the simple domains.

Split the check for irq_data == NULL out and have a separate warning
for it.

[ tglx: Made the check for irq_data == NULL separate ]

Signed-off-by: Rob Herring &lt;rob.herring@calxeda.com&gt;
Cc: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Cc: marc.zyngier@arm.com
Cc: thomas.abraham@linaro.org
Cc: jamie@jamieiles.com
Cc: b-cousson@ti.com
Cc: shawn.guo@linaro.org
Cc: linux-arm-kernel@lists.infradead.org
Cc: devicetree-discuss@lists.ozlabs.org
Link: http://lkml.kernel.org/r/1316017900-19918-3-git-send-email-robherring2@gmail.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>genirq: Make irq_shutdown() symmetric vs. irq_startup again</title>
<updated>2011-09-12T07:38:53Z</updated>
<author>
<name>Geert Uytterhoeven</name>
<email>geert@linux-m68k.org</email>
</author>
<published>2011-09-11T11:59:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=ed585a651681e822089087b426e6ebfb6d3d9873'/>
<id>urn:sha1:ed585a651681e822089087b426e6ebfb6d3d9873</id>
<content type='text'>
If an irq_chip provides .irq_shutdown(), but neither of .irq_disable() or
.irq_mask(), free_irq() crashes when jumping to NULL.
Fix this by only trying .irq_disable() and .irq_mask() if there's no
.irq_shutdown() provided.

This revives the symmetry with irq_startup(), which tries .irq_startup(),
.irq_enable(), and irq_unmask(), and makes it consistent with the comment for
irq_chip.irq_shutdown() in &lt;linux/irq.h&gt;, which says:

 * @irq_shutdown:	shut down the interrupt (defaults to -&gt;disable if NULL)

This is also how __free_irq() behaved before the big overhaul, cfr. e.g.
3b56f0585fd4c02d047dc406668cb40159b2d340 ("genirq: Remove bogus conditional"),
where the core interrupt code always overrode .irq_shutdown() to
.irq_disable() if .irq_shutdown() was NULL.

Signed-off-by: Geert Uytterhoeven &lt;geert@linux-m68k.org&gt;
Cc: linux-m68k@lists.linux-m68k.org
Link: http://lkml.kernel.org/r/1315742394-16036-2-git-send-email-geert@linux-m68k.org
Cc: stable@kernel.org
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>Revert "irq: Always set IRQF_ONESHOT if no primary handler is specified"</title>
<updated>2011-08-23T17:36:51Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-08-23T17:36:51Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=69dd3d8e29e294caaf63eb5e8a72d250279f9e5f'/>
<id>urn:sha1:69dd3d8e29e294caaf63eb5e8a72d250279f9e5f</id>
<content type='text'>
This reverts commit f3637a5f2e2eb391ff5757bc83fb5de8f9726464.

It turns out that this breaks several drivers, one example being OMAP
boards which use the on-board OMAP UARTs and the omap-serial driver that
will not boot to userspace after the commit.

Paul Walmsley reports that enabling CONFIG_DEBUG_SHIRQ reveals 'IRQ
handler type mismatch' errors:

  IRQ handler type mismatch for IRQ 74
  current handler: serial idle
  ...

and the reason is that setting IRQF_ONESHOT will now result in those
interrupt handlers having different IRQF flags, and thus being
unsharable.  So the commit log in the reverted commit:

                            "Since it is required for those users and
    there is no difference for others it makes sense to add this flag
    unconditionally."

is simply not true: there may not be any difference from a "actions at
irq time", but there is a *big* difference wrt this flag testing irq
management (see __setup_irq() in kernel/irq/manage.c).

One solution may be to stop verifying IRQF_ONESHOT in __setup_irq(), but
right now the safe course of action is to revert the change.  Let's
revisit this in a later merge window.

Reported-by: Paul Walmsley &lt;paul@pwsan.com&gt;
Cc: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Requested-by: Alan Cox &lt;alan@lxorguk.ukuu.org.uk&gt;
Acked-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>irqdesc: fix new kernel-doc warning</title>
<updated>2011-08-18T21:12:48Z</updated>
<author>
<name>Randy Dunlap</name>
<email>rdunlap@xenotime.net</email>
</author>
<published>2011-08-18T19:19:27Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=d522a0d17963e9c2e556db2cbd60c96d40505b6c'/>
<id>urn:sha1:d522a0d17963e9c2e556db2cbd60c96d40505b6c</id>
<content type='text'>
Fix kernel-doc warning in irqdesc.c:

  Warning(kernel/irq/irqdesc.c:353): No description found for parameter 'owner'

Signed-off-by: Randy Dunlap &lt;rdunlap@xenotime.net&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2011-08-17T17:23:50Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-08-17T17:23:50Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=950d0a10d12578a270f3dfa9fd76fe5c2deb343f'/>
<id>urn:sha1:950d0a10d12578a270f3dfa9fd76fe5c2deb343f</id>
<content type='text'>
* 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  irq: Track the owner of irq descriptor
  irq: Always set IRQF_ONESHOT if no primary handler is specified
  genirq: Fix wrong bit operation
</content>
</entry>
<entry>
<title>Merge branch 'imx/dt' into next/dt</title>
<updated>2011-07-28T15:25:46Z</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2011-07-28T15:25:46Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=6124a4e430b64d1577438c8648c59e996d02e73e'/>
<id>urn:sha1:6124a4e430b64d1577438c8648c59e996d02e73e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>irq: Track the owner of irq descriptor</title>
<updated>2011-07-28T09:23:21Z</updated>
<author>
<name>Sebastian Andrzej Siewior</name>
<email>sebastian@breakpoint.cc</email>
</author>
<published>2011-07-11T10:17:31Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=b6873807a7143b7d6d8b06809295e559d07d7deb'/>
<id>urn:sha1:b6873807a7143b7d6d8b06809295e559d07d7deb</id>
<content type='text'>
Interrupt descriptors can be allocated from modules. The interrupts
are used by other modules, but we have no refcount on the module which
provides the interrupts and there is no way to establish one on the
device level as the interrupt using module is agnostic to the fact
that the interrupt is provided by a module rather than by some builtin
interrupt controller.

To prevent removal of the interrupt providing module, we can track the
owner of the interrupt descriptor, which also provides the relevant
irq chip functions in the irq descriptor.

request/setup_irq() can now acquire a refcount on the owner module to
prevent unloading. free_irq() drops the refcount.

Signed-off-by: Sebastian Andrzej Siewior &lt;sebastian@breakpoint.cc&gt;
Link: http://lkml.kernel.org/r/20110711101731.GA13804@Chamillionaire.breakpoint.cc
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>irq: Always set IRQF_ONESHOT if no primary handler is specified</title>
<updated>2011-07-28T09:23:21Z</updated>
<author>
<name>Sebastian Andrzej Siewior</name>
<email>bigeasy@linutronix.de</email>
</author>
<published>2011-07-07T20:32:17Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=f3637a5f2e2eb391ff5757bc83fb5de8f9726464'/>
<id>urn:sha1:f3637a5f2e2eb391ff5757bc83fb5de8f9726464</id>
<content type='text'>
If no primary handler is specified then a default one is assigned
which always returns IRQ_WAKE_THREAD. This handler requires the
IRQF_ONESHOT flag on LEVEL / EIO typed irqs because the source of
interrupt is not disabled. Since it is required for those users and
there is no difference for others it makes sense to add this flag
unconditionally.

Signed-off-by: Sebastian Andrzej Siewior &lt;bigeasy@linutronix.de&gt;
Link: http://lkml.kernel.org/r/1310070737-18514-1-git-send-email-bigeasy@linutronix.de
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>dt/irq: add irq_domain_generate_simple() helper</title>
<updated>2011-07-28T07:32:04Z</updated>
<author>
<name>Grant Likely</name>
<email>grant.likely@secretlab.ca</email>
</author>
<published>2011-07-26T09:19:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7e71330169d8056536b299290544980bccc6b300'/>
<id>urn:sha1:7e71330169d8056536b299290544980bccc6b300</id>
<content type='text'>
irq_domain_generate_simple() is an easy way to generate an irq translation
domain for simple irq controllers.  It assumes a flat 1:1 mapping from
hardware irq number to an offset of the first linux irq number assigned
to the controller

Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
</content>
</entry>
<entry>
<title>irq: add irq_domain translation infrastructure</title>
<updated>2011-07-28T07:32:04Z</updated>
<author>
<name>Grant Likely</name>
<email>grant.likely@secretlab.ca</email>
</author>
<published>2011-07-26T09:19:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=08a543ad33fc188650801bd36eed4ffe272643e1'/>
<id>urn:sha1:08a543ad33fc188650801bd36eed4ffe272643e1</id>
<content type='text'>
This patch adds irq_domain infrastructure for translating from
hardware irq numbers to linux irqs.  This is particularly important
for architectures adding device tree support because the current
implementation (excluding PowerPC and SPARC) cannot handle
translation for more than a single interrupt controller.  irq_domain
supports device tree translation for any number of interrupt
controllers.

This patch converts x86, Microblaze, ARM and MIPS to use irq_domain
for device tree irq translation.  x86 is untested beyond compiling it,
irq_domain is enabled for MIPS and Microblaze, but the old behaviour is
preserved until the core code is modified to actually register an
irq_domain yet.  On ARM it works and is required for much of the new
ARM device tree board support.

PowerPC has /not/ been converted to use this new infrastructure.  It
is still missing some features before it can replace the virq
infrastructure already in powerpc (see documentation on
irq_domain_map/unmap for details).  Followup patches will add the
missing pieces and migrate PowerPC to use irq_domain.

SPARC has its own method of managing interrupts from the device tree
and is unaffected by this change.

Acked-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
</content>
</entry>
</feed>
