diff options
| author | Julien Grall <julien.grall@linaro.org> | 2013-04-30 13:29:13 -0400 |
|---|---|---|
| committer | Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> | 2013-05-08 08:38:12 -0400 |
| commit | 934f585e928e250b9428fccdcb7c1e13a6c24e76 (patch) | |
| tree | 949affd539c5eae237648904ab474a6daac8da53 | |
| parent | 4ea9b9aca90cfc71e6872ed3522356755162932c (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>
| -rw-r--r-- | drivers/xen/events.c | 3 |
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 | ||
| 172 | static void xen_irq_info_evtchn_init(unsigned irq, | 174 | static 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 | ||
| 879 | out: | 880 | out: |
| 880 | mutex_unlock(&irq_mapping_update_lock); | 881 | mutex_unlock(&irq_mapping_update_lock); |
