Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
> On Wed, 30 Oct 2013, "陈华才" wrote: > >> I use a Loongson-3(MIPS-series CPU) machine, there is a serial port >> integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() >> as the irq handler. Maybe I should move the checking into >> handle_percpu_irq()? > > Why is a device interrupt using handle_percpu_irq()? Seems that IRQs directly deliverd to MIPS CPU (those without interrupt controller) are all handled by handle_percpu_irq() I will try to overwrite the handler in arch-specific code and keep the code in kernel/ irq as is. Thanks. > > Thanks, > > tglx -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
On Wed, 30 Oct 2013, "陈华才" wrote: > I use a Loongson-3(MIPS-series CPU) machine, there is a serial port > integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() > as the irq handler. Maybe I should move the checking into > handle_percpu_irq()? Why is a device interrupt using handle_percpu_irq()? Thanks, tglx
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
I use a Loongson-3(MIPS-series CPU) machine, there is a serial port integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() as the irq handler. Maybe I should move the checking into handle_percpu_irq()? Huacai > On Sat, 28 Sep 2013, Huacai Chen wrote: > >> Some devices (e.g. serial port) setup irq handler at dev open and free >> it at dev close. So, sometimes there is no irqaction for a specific >> irq. But some buggy devices may send irqs at any time. This patch avoid >> the NULL OOPS when irqaction isn't registered. > > All callers except the real per cpu interrupts are checking whether > there is a valid action before calling. And serial ports are not > routed to real per cpu interrupts. Can you provide more detailed > information about the problem you are trying to solve please? > > Thanks, > > tglx > >> Signed-off-by: Huacai Chen >> --- >> kernel/irq/handle.c |4 >> 1 files changed, 4 insertions(+), 0 deletions(-) >> >> diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c >> index 131ca17..1c78e69 100644 >> --- a/kernel/irq/handle.c >> +++ b/kernel/irq/handle.c >> @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, >> struct irqaction *action) >> irqreturn_t retval = IRQ_NONE; >> unsigned int flags = 0, irq = desc->irq_data.irq; >> >> +if (!action) >> +goto out; >> + >> do { >> irqreturn_t res; >> >> @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, >> struct irqaction *action) >> >> add_interrupt_randomness(irq, flags); >> >> +out: >> if (!noirqdebug) >> note_interrupt(irq, desc, retval); >> return retval; >> -- >> 1.7.7.3 >> >> > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
I use a Loongson-3(MIPS-series CPU) machine, there is a serial port integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() as the irq handler. Maybe I should move the checking into handle_percpu_irq()? Huacai On Sat, 28 Sep 2013, Huacai Chen wrote: Some devices (e.g. serial port) setup irq handler at dev open and free it at dev close. So, sometimes there is no irqaction for a specific irq. But some buggy devices may send irqs at any time. This patch avoid the NULL OOPS when irqaction isn't registered. All callers except the real per cpu interrupts are checking whether there is a valid action before calling. And serial ports are not routed to real per cpu interrupts. Can you provide more detailed information about the problem you are trying to solve please? Thanks, tglx Signed-off-by: Huacai Chen che...@lemote.com --- kernel/irq/handle.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index 131ca17..1c78e69 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) irqreturn_t retval = IRQ_NONE; unsigned int flags = 0, irq = desc-irq_data.irq; +if (!action) +goto out; + do { irqreturn_t res; @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) add_interrupt_randomness(irq, flags); +out: if (!noirqdebug) note_interrupt(irq, desc, retval); return retval; -- 1.7.7.3 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
On Wed, 30 Oct 2013, 陈华才 wrote: I use a Loongson-3(MIPS-series CPU) machine, there is a serial port integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() as the irq handler. Maybe I should move the checking into handle_percpu_irq()? Why is a device interrupt using handle_percpu_irq()? Thanks, tglx
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
On Wed, 30 Oct 2013, 陈华才 wrote: I use a Loongson-3(MIPS-series CPU) machine, there is a serial port integrated in the CPU (but it iss buggy), and it use handle_percpu_irq() as the irq handler. Maybe I should move the checking into handle_percpu_irq()? Why is a device interrupt using handle_percpu_irq()? Seems that IRQs directly deliverd to MIPS CPU (those without interrupt controller) are all handled by handle_percpu_irq() I will try to overwrite the handler in arch-specific code and keep the code in kernel/ irq as is. Thanks. Thanks, tglx -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
On Sat, 28 Sep 2013, Huacai Chen wrote: > Some devices (e.g. serial port) setup irq handler at dev open and free > it at dev close. So, sometimes there is no irqaction for a specific > irq. But some buggy devices may send irqs at any time. This patch avoid > the NULL OOPS when irqaction isn't registered. All callers except the real per cpu interrupts are checking whether there is a valid action before calling. And serial ports are not routed to real per cpu interrupts. Can you provide more detailed information about the problem you are trying to solve please? Thanks, tglx > Signed-off-by: Huacai Chen > --- > kernel/irq/handle.c |4 > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c > index 131ca17..1c78e69 100644 > --- a/kernel/irq/handle.c > +++ b/kernel/irq/handle.c > @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, struct > irqaction *action) > irqreturn_t retval = IRQ_NONE; > unsigned int flags = 0, irq = desc->irq_data.irq; > > + if (!action) > + goto out; > + > do { > irqreturn_t res; > > @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct > irqaction *action) > > add_interrupt_randomness(irq, flags); > > +out: > if (!noirqdebug) > note_interrupt(irq, desc, retval); > return retval; > -- > 1.7.7.3 > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH] genirq: Avoid NULL OOPS in irq handling
On Sat, 28 Sep 2013, Huacai Chen wrote: Some devices (e.g. serial port) setup irq handler at dev open and free it at dev close. So, sometimes there is no irqaction for a specific irq. But some buggy devices may send irqs at any time. This patch avoid the NULL OOPS when irqaction isn't registered. All callers except the real per cpu interrupts are checking whether there is a valid action before calling. And serial ports are not routed to real per cpu interrupts. Can you provide more detailed information about the problem you are trying to solve please? Thanks, tglx Signed-off-by: Huacai Chen che...@lemote.com --- kernel/irq/handle.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index 131ca17..1c78e69 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) irqreturn_t retval = IRQ_NONE; unsigned int flags = 0, irq = desc-irq_data.irq; + if (!action) + goto out; + do { irqreturn_t res; @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) add_interrupt_randomness(irq, flags); +out: if (!noirqdebug) note_interrupt(irq, desc, retval); return retval; -- 1.7.7.3 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] genirq: Avoid NULL OOPS in irq handling
Some devices (e.g. serial port) setup irq handler at dev open and free it at dev close. So, sometimes there is no irqaction for a specific irq. But some buggy devices may send irqs at any time. This patch avoid the NULL OOPS when irqaction isn't registered. Signed-off-by: Huacai Chen --- kernel/irq/handle.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index 131ca17..1c78e69 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) irqreturn_t retval = IRQ_NONE; unsigned int flags = 0, irq = desc->irq_data.irq; + if (!action) + goto out; + do { irqreturn_t res; @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) add_interrupt_randomness(irq, flags); +out: if (!noirqdebug) note_interrupt(irq, desc, retval); return retval; -- 1.7.7.3 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
[PATCH] genirq: Avoid NULL OOPS in irq handling
Some devices (e.g. serial port) setup irq handler at dev open and free it at dev close. So, sometimes there is no irqaction for a specific irq. But some buggy devices may send irqs at any time. This patch avoid the NULL OOPS when irqaction isn't registered. Signed-off-by: Huacai Chen che...@lemote.com --- kernel/irq/handle.c |4 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/kernel/irq/handle.c b/kernel/irq/handle.c index 131ca17..1c78e69 100644 --- a/kernel/irq/handle.c +++ b/kernel/irq/handle.c @@ -135,6 +135,9 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) irqreturn_t retval = IRQ_NONE; unsigned int flags = 0, irq = desc-irq_data.irq; + if (!action) + goto out; + do { irqreturn_t res; @@ -174,6 +177,7 @@ handle_irq_event_percpu(struct irq_desc *desc, struct irqaction *action) add_interrupt_randomness(irq, flags); +out: if (!noirqdebug) note_interrupt(irq, desc, retval); return retval; -- 1.7.7.3 -- To unsubscribe from this list: send the line unsubscribe linux-kernel in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/