[linux-yocto] [PATCH 20/30] kernel/irq/manage.c: Fix irq_set_affinity to allow use with buslocks

Charlie Paul cpaul.windriver at gmail.com
Tue May 6 09:36:52 PDT 2014


From: David Mercado <david.mercado at windriver.com>

Fix irq_set_affinity() to allow usage of buslocks with "slow bus"
IRQ controllers, such as the LSI Axxia GIC.

Signed-off-by: David Mercado <david.mercado at windriver.com>
---
 kernel/irq/manage.c |    6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index c891fe3..4291484 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -180,16 +180,16 @@ int __irq_set_affinity_locked(struct irq_data *data, const struct cpumask *mask)
  */
 int irq_set_affinity(unsigned int irq, const struct cpumask *mask)
 {
-	struct irq_desc *desc = irq_to_desc(irq);
 	unsigned long flags;
+	struct irq_desc *desc = irq_get_desc_buslock(irq, &flags,
+						     IRQ_GET_DESC_CHECK_GLOBAL);
 	int ret;
 
 	if (!desc)
 		return -EINVAL;
 
-	raw_spin_lock_irqsave(&desc->lock, flags);
 	ret =  __irq_set_affinity_locked(irq_desc_get_irq_data(desc), mask);
-	raw_spin_unlock_irqrestore(&desc->lock, flags);
+	irq_put_desc_busunlock(desc, flags);
 	return ret;
 }
 
-- 
1.7.9.5



More information about the linux-yocto mailing list