Message ID | 1367342953-27509-1-git-send-email-julien.grall@linaro.org |
---|---|
State | Accepted |
Commit | 934f585e928e250b9428fccdcb7c1e13a6c24e76 |
Headers | show |
Konrad, are you going to take care of this patch (assuming that you are OK with it)? On Tue, 30 Apr 2013, Julien Grall wrote: > 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. > > Signed-off-by: Julien Grall <julien.grall@linaro.org> Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > Changes since v1: > - Specify this commit will not impact x86 in the comment > - Clear flag directly in xen_irq_info_common_init, this function is > called by all bind_*_to_irq > > drivers/xen/events.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/xen/events.c b/drivers/xen/events.c > index d8cc812..6a6bbe4 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, > info->cpu = cpu; > > evtchn_to_irq[evtchn] = irq; > + > + irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); > } > > static void xen_irq_info_evtchn_init(unsigned irq, > @@ -874,7 +876,6 @@ int bind_evtchn_to_irq(unsigned int evtchn) > struct irq_info *info = info_for_irq(irq); > WARN_ON(info == NULL || info->type != IRQT_EVTCHN); > } > - irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); > > out: > mutex_unlock(&irq_mapping_update_lock); > -- > 1.7.10.4 >
On Tue, Apr 30, 2013 at 06:34:52PM +0100, Stefano Stabellini wrote: > Konrad, are you going to take care of this patch (assuming that you are > OK with it)? Yes. Will push it around rc1. > > On Tue, 30 Apr 2013, Julien Grall wrote: > > 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. > > > > Signed-off-by: Julien Grall <julien.grall@linaro.org> > > Acked-by: Stefano Stabellini <stefano.stabellini@eu.citrix.com> > > > > Changes since v1: > > - Specify this commit will not impact x86 in the comment > > - Clear flag directly in xen_irq_info_common_init, this function is > > called by all bind_*_to_irq > > > > drivers/xen/events.c | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/drivers/xen/events.c b/drivers/xen/events.c > > index d8cc812..6a6bbe4 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, > > info->cpu = cpu; > > > > evtchn_to_irq[evtchn] = irq; > > + > > + irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); > > } > > > > static void xen_irq_info_evtchn_init(unsigned irq, > > @@ -874,7 +876,6 @@ int bind_evtchn_to_irq(unsigned int evtchn) > > struct irq_info *info = info_for_irq(irq); > > WARN_ON(info == NULL || info->type != IRQT_EVTCHN); > > } > > - irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); > > > > out: > > mutex_unlock(&irq_mapping_update_lock); > > -- > > 1.7.10.4 > >
diff --git a/drivers/xen/events.c b/drivers/xen/events.c index d8cc812..6a6bbe4 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, info->cpu = cpu; evtchn_to_irq[evtchn] = irq; + + irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); } static void xen_irq_info_evtchn_init(unsigned irq, @@ -874,7 +876,6 @@ int bind_evtchn_to_irq(unsigned int evtchn) struct irq_info *info = info_for_irq(irq); WARN_ON(info == NULL || info->type != IRQT_EVTCHN); } - irq_clear_status_flags(irq, IRQ_NOREQUEST|IRQ_NOAUTOEN); out: mutex_unlock(&irq_mapping_update_lock);
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. Signed-off-by: Julien Grall <julien.grall@linaro.org> --- Changes since v1: - Specify this commit will not impact x86 in the comment - Clear flag directly in xen_irq_info_common_init, this function is called by all bind_*_to_irq drivers/xen/events.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)