aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-02-05 15:08:59 -0500
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-03-03 12:02:21 -0500
commit676dc3cf5bc36a9e129a3ad8fe3bd7b2ebf20f5d (patch)
tree30e5aedd504d455dd9aaadbcc50328c2f57545b7 /drivers
parent8aef4857d26c46ca3d4f1a7f3a7aa4b51a72385e (diff)
xen: Use IRQF_FORCE_RESUME
Mark the IRQF_NO_SUSPEND interrupts IRQF_FORCE_RESUME and remove the extra walk through the interrupt descriptors. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/xen/events.c20
1 files changed, 1 insertions, 19 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 5aa422a3c3cd..975e90fa6d5a 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -977,7 +977,7 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi,
977 if (irq < 0) 977 if (irq < 0)
978 return irq; 978 return irq;
979 979
980 irqflags |= IRQF_NO_SUSPEND; 980 irqflags |= IRQF_NO_SUSPEND | IRQF_FORCE_RESUME;
981 retval = request_irq(irq, handler, irqflags, devname, dev_id); 981 retval = request_irq(irq, handler, irqflags, devname, dev_id);
982 if (retval != 0) { 982 if (retval != 0) {
983 unbind_from_irq(irq); 983 unbind_from_irq(irq);
@@ -1433,7 +1433,6 @@ void xen_poll_irq(int irq)
1433void xen_irq_resume(void) 1433void xen_irq_resume(void)
1434{ 1434{
1435 unsigned int cpu, irq, evtchn; 1435 unsigned int cpu, irq, evtchn;
1436 struct irq_desc *desc;
1437 1436
1438 init_evtchn_cpu_bindings(); 1437 init_evtchn_cpu_bindings();
1439 1438
@@ -1453,23 +1452,6 @@ void xen_irq_resume(void)
1453 restore_cpu_ipis(cpu); 1452 restore_cpu_ipis(cpu);
1454 } 1453 }
1455 1454
1456 /*
1457 * Unmask any IRQF_NO_SUSPEND IRQs which are enabled. These
1458 * are not handled by the IRQ core.
1459 */
1460 for_each_irq_desc(irq, desc) {
1461 if (!desc->action || !(desc->action->flags & IRQF_NO_SUSPEND))
1462 continue;
1463 if (desc->status & IRQ_DISABLED)
1464 continue;
1465
1466 evtchn = evtchn_from_irq(irq);
1467 if (evtchn == -1)
1468 continue;
1469
1470 unmask_evtchn(evtchn);
1471 }
1472
1473 restore_cpu_pirqs(); 1455 restore_cpu_pirqs();
1474} 1456}
1475 1457