linux/kernel/irq
Thomas Gleixner 591d2fb02e genirq: Delegate irq affinity setting to the irq thread
irq_set_thread_affinity() calls set_cpus_allowed_ptr() which might
sleep, but irq_set_thread_affinity() is called with desc->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->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 <tglx@linutronix.de>
LKML-Reference: <new-submission>
2009-07-21 14:35:07 +02:00
..
autoprobe.c async: Asynchronous function calls to speed up kernel boot 2009-01-07 08:45:46 -08:00
chip.c x86/irq: remove leftover code from NUMA_MIGRATE_IRQ_DESC 2009-04-28 12:21:15 +02:00
devres.c genirq: add support for threaded interrupts to devres 2009-03-24 12:15:23 +01:00
handle.c irq: slab alloc for default irq_affinity 2009-06-12 13:50:23 +03:00
internals.h genirq: Delegate irq affinity setting to the irq thread 2009-07-21 14:35:07 +02:00
Makefile x86/irq: use move_irq_desc() in create_irq_nr() 2009-05-01 19:01:12 +02:00
manage.c genirq: Delegate irq affinity setting to the irq thread 2009-07-21 14:35:07 +02:00
migration.c genirq: Delegate irq affinity setting to the irq thread 2009-07-21 14:35:07 +02:00
numa_migrate.c x86/irq: change irq_desc_alloc() to take node instead of cpu 2009-04-28 12:21:17 +02:00
pm.c PM: Introduce functions for suspending and resuming device interrupts 2009-03-30 21:46:54 +02:00
proc.c cpumask: update irq_desc to use cpumask_var_t 2009-01-11 19:12:46 +01:00
resend.c generic: sparse irqs: use irq_desc() together with dyn_array, instead of irq_desc[] 2008-10-16 16:52:29 +02:00
spurious.c irq: provide debug_poll_all_shared_irqs() method under CONFIG_DEBUG_SHIRQ 2009-01-16 17:46:49 +01:00