Hello Gilles, Unfortunately the patch didn't help... :-(
But ... adding more traces on the code, I can see the irq number when the function __ipipe_grab_irq() is called. When everything works fine, the irq number is 21 (IRQ_DA8XX_TINT12_0). And, sometime, the irq number starts to be 22 (IRQ_DA8XX_TINT34_0). It is the other timer present at the processor. I believe that, somehow, the information about the timer (at least, the interrupt location) has been changed by some code. I will investigate more, according to these observations. I accept suggestions :-) Best regards, Flavio Flavio de Castro Alves Filho Phi Innovations - Embedded Software Services www.phiinnovations.com Phone: +55 11 84 94 56 76 Skype: flavio.de.castro.alves.filho 2010/1/6 Gilles Chanteperdrix <[email protected]> > Flavio de Castro Alves Filho wrote: > > I believe there is a lockup during the irq handling process. > > > > I could not find where it is blocking. > > > > I performed the following tests: > > > > 1) add traces in every function related to interrupt ... and none was > called > > Well, obviously, you missed some, because your boot logs indicate > clearly that at least the timer interrupt is working. > > If you are interested in what happens at I-pipe level, the functions you > are interested in are ipipe_grab_irq, ipipe_handle_irq, > ipipe_mach_demux_irq, etc... > > > > > 2) add traces in every function in time.c file. After the last message > > ("ata1: SATA max UDMA/133 irq 67"), the following functions were called: > > - read_cycles() > > - timer32_read() > > > > Looking at these functions, they seam to be fine. I have no clue about > where > > to start debugging. > > > > Thank you for all your help. > > Try this: > > diff --git a/arch/arm/mach-davinci/irq.c b/arch/arm/mach-davinci/irq.c > index 5a324c9..22ddbe2 100644 > --- a/arch/arm/mach-davinci/irq.c > +++ b/arch/arm/mach-davinci/irq.c > @@ -360,9 +360,11 @@ void __init davinci_irq_init(void) > for (i = 0; i < DAVINCI_N_AINTC_IRQ; i++) { > set_irq_chip(i, &davinci_irq_chip_0); > set_irq_flags(i, IRQF_VALID | IRQF_PROBE); > +#ifndef CONFIG_IPIPE > if (i != IRQ_TINT1_TINT34) > set_irq_handler(i, handle_edge_irq); > else > +#endif /* CONFIG_IPIPE */ > set_irq_handler(i, handle_level_irq); > } > } > > -- > Gilles. >
_______________________________________________ Xenomai-help mailing list [email protected] https://mail.gna.org/listinfo/xenomai-help
