summaryrefslogtreecommitdiff
path: root/include/linux
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2013-08-21 15:48:46 (GMT)
committerScott Wood <scottwood@freescale.com>2014-05-14 18:38:00 (GMT)
commit3bfd44ae909c54e2609db41000ab7d738132d15f (patch)
tree5a6e79a802c37f064f50ae9508543108a03bfc34 /include/linux
parentf36081f009201347bb6a6237e83e0f54798ac376 (diff)
downloadlinux-fsl-qoriq-3bfd44ae909c54e2609db41000ab7d738132d15f.tar.xz
genirq: do not invoke the affinity callback via a workqueue
Joe Korty reported, that __irq_set_affinity_locked() schedules a workqueue while holding a rawlock which results in a might_sleep() warning. This patch moves the invokation into a process context so that we only wakeup() a process while holding the lock. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/interrupt.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 1403b95..9fadfa2 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -220,6 +220,7 @@ struct irq_affinity_notify {
unsigned int irq;
struct kref kref;
struct work_struct work;
+ struct list_head list;
void (*notify)(struct irq_affinity_notify *, const cpumask_t *mask);
void (*release)(struct kref *ref);
};