Re: [PATCH] genirq: Avoid NULL OOPS in irq handling

2013-10-30 Thread 陈华才
> 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

2013-10-30 Thread Thomas Gleixner
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

2013-10-30 Thread 陈华才
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

2013-10-30 Thread 陈华才
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

2013-10-30 Thread Thomas Gleixner
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

2013-10-30 Thread 陈华才
 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

2013-10-29 Thread Thomas Gleixner
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

2013-10-29 Thread Thomas Gleixner
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

2013-09-27 Thread Huacai Chen
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

2013-09-27 Thread Huacai Chen
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/