<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/kernel/irq/spurious.c, branch linux-2.6.31.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.31.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.31.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-01-16T16:46:49Z</updated>
<entry>
<title>irq: provide debug_poll_all_shared_irqs() method under CONFIG_DEBUG_SHIRQ</title>
<updated>2009-01-16T16:46:49Z</updated>
<author>
<name>Ingo Molnar</name>
</author>
<published>2009-01-16T16:43:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=74296a8ed6aa3c5bf672808ada690de7ba323ecc'/>
<id>urn:sha1:74296a8ed6aa3c5bf672808ada690de7ba323ecc</id>
<content type='text'>
Provide a shared interrupt debug facility under CONFIG_DEBUG_SHIRQ:
it uses the existing irqpoll facilities to iterate through all
registered interrupt handlers and call those which can handle shared
IRQ lines.

This can be handy for suspend/resume debugging: if we call this function
early during resume we can trigger crashes in those drivers which have
incorrect assumptions about when exactly their ISRs will be called
during suspend/resume.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>irq: simplify for_each_irq_desc() usage</title>
<updated>2008-12-26T08:48:18Z</updated>
<author>
<name>KOSAKI Motohiro</name>
</author>
<published>2008-12-26T03:29:48Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=18eefedfe8ad33e8fc7614c13359e29a9fab4644'/>
<id>urn:sha1:18eefedfe8ad33e8fc7614c13359e29a9fab4644</id>
<content type='text'>
Impact: cleanup

all for_each_irq_desc() usage point have !desc check.
then its check can move into for_each_irq_desc() macro.

Signed-off-by: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Acked-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>sparse irq_desc[] array: core kernel and x86 changes</title>
<updated>2008-12-08T13:31:51Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2008-12-06T02:58:31Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0b8f1efad30bd58f89961b82dfe68b9edf8fd2ac'/>
<id>urn:sha1:0b8f1efad30bd58f89961b82dfe68b9edf8fd2ac</id>
<content type='text'>
Impact: new feature

Problem on distro kernels: irq_desc[NR_IRQS] takes megabytes of RAM with
NR_CPUS set to large values. The goal is to be able to scale up to much
larger NR_IRQS value without impacting the (important) common case.

To solve this, we generalize irq_desc[NR_IRQS] to an (optional) array of
irq_desc pointers.

When CONFIG_SPARSE_IRQ=y is used, we use kzalloc_node to get irq_desc,
this also makes the IRQ descriptors NUMA-local (to the site that calls
request_irq()).

This gets rid of the irq_cfg[] static array on x86 as well: irq_cfg now
uses desc-&gt;chip_data for x86 to store irq_cfg.

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>genirq: cleanup the sparseirq modifications</title>
<updated>2008-10-16T14:53:29Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-10-16T07:55:00Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d3c60047bdb03199b93497ac40bd531315d43a86'/>
<id>urn:sha1:d3c60047bdb03199b93497ac40bd531315d43a86</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
<entry>
<title>irq: fix irqpoll &amp;&amp; sparseirq</title>
<updated>2008-10-16T14:53:10Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2008-09-15T08:53:50Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e00585bb7fc3d0b601181b765a254df7ff4ea59b'/>
<id>urn:sha1:e00585bb7fc3d0b601181b765a254df7ff4ea59b</id>
<content type='text'>
Steven Noonan reported a boot hang when using irqpoll and
CONFIG_HAVE_SPARSE_IRQ=y.

The irqpoll loop needs to be updated to not iterate from 1 to nr_irqs
but to iterate via for_each_irq_desc(). (in the former case desc can
be NULL which crashes the box)

Reported-by: Steven Noonan &lt;steven@uplinklabs.net&gt;
Tested-by: Steven Noonan &lt;steven@uplinklabs.net&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>generic: sparse irqs: use irq_desc() together with dyn_array, instead of irq_desc[]</title>
<updated>2008-10-16T14:52:29Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2008-08-20T03:50:05Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=08678b0841267c1d00d771fe01548d86043d065e'/>
<id>urn:sha1:08678b0841267c1d00d771fe01548d86043d065e</id>
<content type='text'>
add CONFIG_HAVE_SPARSE_IRQ to for use condensed array.
Get rid of irq_desc[] array assumptions.

Preallocate 32 irq_desc, and irq_desc() will try to get more.

( No change in functionality is expected anywhere, except the odd build
  failure where we missed a code site or where a crossing commit itroduces
  new irq_desc[] usage. )

v2: according to Eric, change get_irq_desc() to irq_desc()

Signed-off-by: Yinghai Lu &lt;yhlu.kernel@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>irq: introduce nr_irqs</title>
<updated>2008-10-16T14:52:05Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2008-08-20T03:49:47Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=85c0f90978bf50596dbd23854648020f1f9b5bfd'/>
<id>urn:sha1:85c0f90978bf50596dbd23854648020f1f9b5bfd</id>
<content type='text'>
at this point nr_irqs is equal NR_IRQS

convert a few easy users from NR_IRQS to dynamic nr_irqs.

v2: according to Eric, we need to take care of arch without generic_hardirqs

Signed-off-by: Yinghai Lu &lt;yhlu.kernel@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>genirq: enable polling for disabled screaming irqs</title>
<updated>2008-07-18T17:21:13Z</updated>
<author>
<name>Eric W. Biederman</name>
</author>
<published>2008-07-10T21:48:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f84dbb912f344270f31d5cce974f12908a47798d'/>
<id>urn:sha1:f84dbb912f344270f31d5cce974f12908a47798d</id>
<content type='text'>
When we disable a screaming irq we never see it again.  If the irq
line is shared or if the driver half works this is a real pain.  So
periodically poll the handlers for screaming interrupts.

I use a timer instead of the classic irq poll technique of working off
the timer interrupt because when we use the local apic timers
note_interrupt is never called (bug?).  Further on a system with
dynamic ticks the timer interrupt might not even fire unless there is
a timer telling it it needs to.

I forced this case on my test system with an e1000 nic and my ssh
session remained responsive despite the interrupt handler only being
called every 10th of a second.

Signed-off-by: Eric W. Biederman &lt;ebiederm@xmission.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&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>genirq: spurious.c: use time_* macros</title>
<updated>2008-02-19T09:43:58Z</updated>
<author>
<name>S.Caglar Onur</name>
</author>
<published>2008-02-14T15:36:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=188fd89d539d899bfca2bc83534e5508e0161139'/>
<id>urn:sha1:188fd89d539d899bfca2bc83534e5508e0161139</id>
<content type='text'>
The functions time_before, time_before_eq, time_after, and
time_after_eq are more robust for comparing jiffies against other
values.

So following patch implements usage of the time_after() macro, defined
at linux/jiffies.h, which deals with wrapping correctly

Signed-off-by: S.Caglar Onur &lt;caglar@pardus.org.tr&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
</entry>
</feed>
