Re: RT_PREEMPT problem with cascaded irqchip

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Well, in fact the issue doesn't come neither from the mask/unmask procedure
nor from the set_irq calls.
Correct gpio mask/unmask are called before the gpio_irq_handler.

However, there is an issue in gpio_irq_handler (specific to generic_irq and
AT91RM9200, i think) concerning desc->chip->chip_data.
The following change has to be applied :

 --    pio = (void __force __iomem *) desc->chip->chip_data;
++   pio = (void __force __iomem *) desc->chip_data;

Moreover, I think that the call to redirect_hardirq have to be insered in
gpio_irq_handler but I don't know how to do that.

Regards

Yann Leprovost



                                                                           
             Thomas Gleixner                                               
             <tglx@linutronix.                                             
             de>                                                        To 
             Sent by:                  [email protected]           
             linux-kernel-owne                                          cc 
             [email protected]         Daniel Walker <[email protected]>, 
                                       [email protected],       
                                       [email protected], 
             30/05/2006 13:22          Ingo Molnar <[email protected]>, Steven 
                                       Rostedt <[email protected]>,      
                                       Esben Nielsen <[email protected]>,   
             Please respond to         Sven-Thorsten Dietrich              
             [email protected]         <[email protected]>                   
                     e                                             Subject 
                                       Re: RT_PREEMPT problem with         
                                       cascaded irqchip                    
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           
                                                                           




On Tue, 2006-05-30 at 12:26 +0200, [email protected] wrote:
> Of course, here is the file arch/arm/mach-at91rm9200/gpio.c with my
> modified gpio_irq_handler.

>             for (i = 0; i < 32; i++, pin++) {
>                   set_irq_chip(pin, &gpio_irqchip);
>                         printk(KERN_ERR "GPIO SET_IRQ_CHIP\n");
>                   set_irq_handler(pin, do_simple_IRQ);

-----------------------------------------^^^^^^^^^^^^^^^

Care to look into the implementation of this ? As the name says, its
simple. It does no ack/mask whatever. Use the level resp. the edge
handler instead.

             tglx




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux