| From 7c62853704de3012841eb36fcec1a924a1df37e2 Mon Sep 17 00:00:00 2001 |
| From: Thomas Gleixner <tglx@linutronix.de> |
| Date: Sat, 5 Feb 2011 20:08:59 +0000 |
| Subject: [PATCH] xen: Use IRQF_FORCE_RESUME |
| |
| commit 676dc3cf5bc36a9e129a3ad8fe3bd7b2ebf20f5d upstream. |
| |
| 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> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| --- |
| drivers/xen/events.c | 19 +------------------ |
| 1 file changed, 1 insertion(+), 18 deletions(-) |
| |
| diff --git a/drivers/xen/events.c b/drivers/xen/events.c |
| index 9c66deb..9b471cc 100644 |
| --- a/drivers/xen/events.c |
| +++ b/drivers/xen/events.c |
| @@ -537,7 +537,7 @@ int bind_ipi_to_irqhandler(enum ipi_vector ipi, |
| if (irq < 0) |
| return irq; |
| |
| - irqflags |= IRQF_NO_SUSPEND; |
| + irqflags |= IRQF_NO_SUSPEND | IRQF_FORCE_RESUME; |
| retval = request_irq(irq, handler, irqflags, devname, dev_id); |
| if (retval != 0) { |
| unbind_from_irq(irq); |
| @@ -896,7 +896,6 @@ void xen_poll_irq(int irq) |
| void xen_irq_resume(void) |
| { |
| unsigned int cpu, irq, evtchn; |
| - struct irq_desc *desc; |
| |
| init_evtchn_cpu_bindings(); |
| |
| @@ -916,22 +915,6 @@ void xen_irq_resume(void) |
| restore_cpu_ipis(cpu); |
| } |
| |
| - /* |
| - * Unmask any IRQF_NO_SUSPEND IRQs which are enabled. These |
| - * are not handled by the IRQ core. |
| - */ |
| - for_each_irq_desc(irq, desc) { |
| - if (!desc->action || !(desc->action->flags & IRQF_NO_SUSPEND)) |
| - continue; |
| - if (desc->status & IRQ_DISABLED) |
| - continue; |
| - |
| - evtchn = evtchn_from_irq(irq); |
| - if (evtchn == -1) |
| - continue; |
| - |
| - unmask_evtchn(evtchn); |
| - } |
| } |
| |
| static struct irq_chip xen_dynamic_chip __read_mostly = { |
| -- |
| 1.7.9.3 |
| |