<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/kernel/irq/internals.h, 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-07-21T12:35:07Z</updated>
<entry>
<title>genirq: Delegate irq affinity setting to the irq thread</title>
<updated>2009-07-21T12:35:07Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2009-07-21T09:09:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=591d2fb02ea80472d846c0b8507007806bdd69cc'/>
<id>urn:sha1:591d2fb02ea80472d846c0b8507007806bdd69cc</id>
<content type='text'>
irq_set_thread_affinity() calls set_cpus_allowed_ptr() which might
sleep, but irq_set_thread_affinity() is called with desc-&gt;lock held
and can be called from hard interrupt context as well. The code has
another bug as it does not hold a ref on the task struct as required
by set_cpus_allowed_ptr().

Just set the IRQTF_AFFINITY bit in action-&gt;thread_flags. The next time
the thread runs it migrates itself. Solves all of the above problems
nicely.

Add kerneldoc to irq_set_thread_affinity() while at it.

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

</content>
</entry>
<entry>
<title>x86/irq: change irq_desc_alloc() to take node instead of cpu</title>
<updated>2009-04-28T10:21:17Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2009-04-28T01:00:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=85ac16d033370caf6f48d743c8dc8103700f5cc5'/>
<id>urn:sha1:85ac16d033370caf6f48d743c8dc8103700f5cc5</id>
<content type='text'>
This simplifies the node awareness of the code. All our allocators
only deal with a NUMA node ID locality not with CPU ids anyway - so
there's no need to maintain (and transform) a CPU id all across the
IRq layer.

v2: keep move_irq_desc related

[ Impact: cleanup, prepare IRQ code to be NUMA-aware ]

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Suresh Siddha &lt;suresh.b.siddha@intel.com&gt;
Cc: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
Cc: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
Cc: Jeremy Fitzhardinge &lt;jeremy@goop.org&gt;
LKML-Reference: &lt;49F65536.2020300@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>irq: only update affinity if -&gt;set_affinity() is sucessfull</title>
<updated>2009-04-28T10:21:16Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2009-04-28T00:59:53Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=57b150cce8e004ddd36330490a68bfb59b7271e9'/>
<id>urn:sha1:57b150cce8e004ddd36330490a68bfb59b7271e9</id>
<content type='text'>
irq_set_affinity() and move_masked_irq() try to assign affinity
before calling chip set_affinity(). Some archs are assigning it
in -&gt;set_affinity() again.

We do something like:

 cpumask_cpy(desc-&gt;affinity, mask);
 desc-&gt;chip-&gt;set_affinity(mask);

But in the failure path, affinity should not be touched - otherwise
we'll end up with a different affinity mask despite the failure to
migrate the IRQ.

So try to update the afffinity only if set_affinity returns with 0.
Also call irq_set_thread_affinity accordingly.

v2: update after "irq, x86: Remove IRQ_DISABLED check in process context IRQ move"
v3: according to Ingo, change set_affinity() in irq_chip should return int.
v4: update comments by removing moving irq_desc code.

[ Impact: fix /proc/irq/*/smp_affinity setting corner case bug ]

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: Suresh Siddha &lt;suresh.b.siddha@intel.com&gt;
Cc: "Eric W. Biederman" &lt;ebiederm@xmission.com&gt;
Cc: Rusty Russell &lt;rusty@rustcorp.com.au&gt;
LKML-Reference: &lt;49F65509.60307@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>PM: Introduce functions for suspending and resuming device interrupts</title>
<updated>2009-03-30T19:46:54Z</updated>
<author>
<name>Rafael J. Wysocki</name>
</author>
<published>2009-03-16T21:33:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0a0c5168df270a50e3518e4f12bddb31f8f5f38f'/>
<id>urn:sha1:0a0c5168df270a50e3518e4f12bddb31f8f5f38f</id>
<content type='text'>
Introduce helper functions allowing us to prevent device drivers from
getting any interrupts (without disabling interrupts on the CPU)
during suspend (or hibernation) and to make them start to receive
interrupts again during the subsequent resume.  These functions make it
possible to keep timer interrupts enabled while the "late" suspend and
"early" resume callbacks provided by device drivers are being
executed.  In turn, this allows device drivers' "late" suspend and
"early" resume callbacks to sleep, execute ACPI callbacks etc.

The functions introduced here will be used to rework the handling of
interrupts during suspend (hibernation) and resume.  Namely,
interrupts will only be disabled on the CPU right before suspending
sysdevs, while device drivers will be prevented from receiving
interrupts, with the help of the new helper function, before their
"late" suspend callbacks run (and analogously during resume).

Signed-off-by: Rafael J. Wysocki &lt;rjw@sisk.pl&gt;
Acked-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>Merge branch 'core/percpu' into percpu-cpumask-x86-for-linus-2</title>
<updated>2009-03-27T16:28:43Z</updated>
<author>
<name>Ingo Molnar</name>
</author>
<published>2009-03-26T20:39:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6e15cf04860074ad032e88c306bea656bbdd0f22'/>
<id>urn:sha1:6e15cf04860074ad032e88c306bea656bbdd0f22</id>
<content type='text'>
Conflicts:
	arch/parisc/kernel/irq.c
	arch/x86/include/asm/fixmap_64.h
	arch/x86/include/asm/setup.h
	kernel/irq/handle.c

Semantic merge:
        arch/x86/include/asm/fixmap.h

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>irq: clear kstat_irqs</title>
<updated>2009-02-09T07:55:08Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2009-02-09T00:18:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0f3c2a89c1451cdf6328f99977bd9decd4f708e1'/>
<id>urn:sha1:0f3c2a89c1451cdf6328f99977bd9decd4f708e1</id>
<content type='text'>
Impact: get correct kstat_irqs [/proc/interrupts] for msi/msi-x etc

need to call clear_kstat_irqs(), so when we reuse that irq_desc,
we get correct kstat in /proc/interrupts.

This makes /proc/interrupts not have &lt;NULL&gt; entries.

Don't need to worry about arch that doesn't support genirq, because they
will not call dynamic_irq_cleanup().

v2: simplify and make clear_kstat_irqs more robust

Signed-off-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>irq: allocate irq_desc_ptrs array based on nr_irqs</title>
<updated>2009-01-11T18:13:35Z</updated>
<author>
<name>Mike Travis</name>
</author>
<published>2009-01-11T06:24:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0fa0ebbf15addc1be8f73325d809c8547a9de304'/>
<id>urn:sha1:0fa0ebbf15addc1be8f73325d809c8547a9de304</id>
<content type='text'>
Impact: allocate irq_desc_ptrs in preparation for making it variable-sized.

This addresses this memory usage bump when NR_CPUS bumped from 128 to 4096:

    34816   +229376    264192  +658%  irq_desc_ptrs(.data.read_mostly)

The patch is split into two parts, the first simply allocates the
irq_desc_ptrs array.  Then next will deal with making it variable.
This is only when CONFIG_SPARSE_IRQS=y.

Signed-off-by: Mike Travis &lt;travis@sgi.com&gt;
</content>
</entry>
<entry>
<title>x86, sparseirq: move irq_desc according to smp_affinity, v7</title>
<updated>2008-12-16T23:14:01Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2008-12-11T08:15:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=48a1b10aff588833b73994704c47bbd0deb73e9c'/>
<id>urn:sha1:48a1b10aff588833b73994704c47bbd0deb73e9c</id>
<content type='text'>
Impact: improve NUMA handling by migrating irq_desc on smp_affinity changes

if CONFIG_NUMA_MIGRATE_IRQ_DESC is set:

-  make irq_desc to go with affinity aka irq_desc moving etc
-  call move_irq_desc in irq_complete_move()
-  legacy irq_desc is not moved, because they are allocated via static array

for logical apic mode, need to add move_desc_in_progress_in_same_domain,
otherwise it will not be moved ==&gt; also could need two phases to get
irq_desc moved.

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: keep affinities set from userspace across free/request_irq()</title>
<updated>2008-11-09T21:23:49Z</updated>
<author>
<name>Thomas Gleixner</name>
</author>
<published>2008-11-07T12:18:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f6d87f4bd259cf33e092cd1a8fde05f291c47af1'/>
<id>urn:sha1:f6d87f4bd259cf33e092cd1a8fde05f291c47af1</id>
<content type='text'>
Impact: preserve user-modified affinities on interrupts

Kumar Galak noticed that commit
18404756765c713a0be4eb1082920c04822ce588 (genirq: Expose default irq
affinity mask (take 3))

overrides an already set affinity setting across a free /
request_irq(). Happens e.g. with ifdown/ifup of a network device.

Change the logic to mark the affinities as set and keep them
intact. This also fixes the unlocked access to irq_desc in
irq_select_affinity() when called from irq_affinity_proc_write()

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>irq: replace loop with nr_irqs with for_each_irq_desc</title>
<updated>2008-10-16T14:52:33Z</updated>
<author>
<name>Yinghai Lu</name>
</author>
<published>2008-08-20T03:50:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2c6927a38f65b53b62f86158fba29a068c4e8b6a'/>
<id>urn:sha1:2c6927a38f65b53b62f86158fba29a068c4e8b6a</id>
<content type='text'>
There are a handful of loops that go from 0 to nr_irqs and use
get_irq_desc() on them. These would allocate all the irq_desc
entries, regardless of the need for them.

Use the smarter for_each_irq_desc() iterator that will only iterate
over the present ones.

v2: make sure arch without GENERIC_HARDIRQS work too

Signed-off-by: Yinghai Lu &lt;yhlu.kernel@gmail.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
</feed>
