aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen
diff options
context:
space:
mode:
authorJulien Grall <julien.grall@linaro.org>2013-04-30 13:29:13 -0400
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2013-05-08 08:38:12 -0400
commit934f585e928e250b9428fccdcb7c1e13a6c24e76 (patch)
tree949affd539c5eae237648904ab474a6daac8da53 /drivers/xen
parent4ea9b9aca90cfc71e6872ed3522356755162932c (diff)
xen: clear IRQ_NOAUTOEN and IRQ_NOREQUEST
Reset the IRQ_NOAUTOEN and IRQ_NOREQUEST flags that are enabled by default on ARM. If IRQ_NOAUTOEN is set, __setup_irq doesn't call irq_startup, that is responsible for calling irq_unmask at startup time. As a result event channels remain masked. The clear is already made in bind_evtchn_to_irq with commit a8636c0 but was missing on all others bind_*_to_irq. Move the clear in xen_irq_info_common_init. On x86, IRQ_NOAUTOEN and IRQ_NOREQUEST are cleared by default, so this commit doesn't impact this architecture. Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> Signed-off-by: Julien Grall <julien.grall@linaro.org> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers/xen')
-rw-r--r--drivers/xen/events.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 94daed14d474..b6c4f1a6d1e2 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -167,6 +167,8 @@ static void xen_irq_info_common_init(struct irq_info *info,
167 info->cpu = cpu; 167 info->cpu = cpu;
168 168
169 evtchn_to_irq[evtchn] = irq; 169 evtchn_to_irq[evtchn] = irq;
170
171 irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN);
170} 172}
171 173
172static void xen_irq_info_evtchn_init(unsigned irq, 174static void xen_irq_info_evtchn_init(unsigned irq,
@@ -874,7 +876,6 @@ int bind_evtchn_to_irq(unsigned int evtchn)
874 struct irq_info *info = info_for_irq(irq); 876 struct irq_info *info = info_for_irq(irq);
875 WARN_ON(info == NULL || info->type != IRQT_EVTCHN); 877 WARN_ON(info == NULL || info->type != IRQT_EVTCHN);
876 } 878 }
877 irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN);
878 879
879out: 880out:
880 mutex_unlock(&irq_mapping_update_lock); 881 mutex_unlock(&irq_mapping_update_lock);