All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai-help] Viper board (ARM XScale) problems with Xenomai-2.4.10
@ 2010-01-11 18:22 Ivan Kalatchev
  2010-01-11 18:28 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 26+ messages in thread
From: Ivan Kalatchev @ 2010-01-11 18:22 UTC (permalink / raw)
  To: Xenomai-help

[-- Attachment #1: Type: text/plain, Size: 430 bytes --]

Hi,

 

I was trying to upgrade my application running on Viper (2.6.16.28 kernel
with xenomai 2.3.1)  to 

kernel 2.6.30.10 with xenomai 2.4.10 and ran into couple of problems.

 

1. My application uses real-time hook to CPLD interrupt, which is chained
interrupt.

   Xenomai 2.4.10 for some reason assigns general purpose interrupt handler
to I-pipe  acknowledgment handler :

 

in kernel/irq/chip.c:

 

               

 


[-- Attachment #2: Type: text/html, Size: 2561 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread
* [Xenomai-help] Viper board (ARM XScale) problems with Xenomai-2.4.10
@ 2010-01-11 22:04 Ivan Kalatchev
  2010-01-11 23:01 ` Gilles Chanteperdrix
  0 siblings, 1 reply; 26+ messages in thread
From: Ivan Kalatchev @ 2010-01-11 22:04 UTC (permalink / raw)
  To: Xenomai-help

[-- Attachment #1: Type: text/plain, Size: 2174 bytes --]

Hi,

 

I was trying to upgrade my application running on Viper (2.6.16.28 kernel
with xenomai 2.3.1)  to 

kernel 2.6.30.10 with xenomai 2.4.10 and ran into couple of problems.

 

1. My application uses real-time hook to CPLD interrupt, which is chained
interrupt.

   In Xenomai 2.4.10 for some reason general purpose interrupt handler for
chained interrupt is assigned  to I-pipe  acknowledgment handler during
board initialization:

 

in kernel/irq/chip.c:  

 

_set_irq_hanler(...

 

#ifdef CONFIG_IPIPE

               else if (is_chained) {

               desc->ipipe_ack = handle;

               desc->ipipe_end = &__ipipe_noend_irq;

               handle = &__ipipe_noack_irq;

#endif    

 

As a result, when CPLD interrupt happened, general purpose interrupt from
Linux domain is executed as part of ipipe interrupt acknowledgment. After
that my real-time interrupt handler gets executed. This is not normal, as my
handler supposed to replace general purpose handler, which should not be
executed at all, unless I want it to be executed.  I  fixed this problem by
reassigning ipipe acknowledgment to __ipipe_ack_edge_irq, and not changing
handler at all, and it worked in my case. But this probably can break some
other code.

 

2. USB on Viepr is not working with I-pipe.  

 

I found the cause of this problem. Again for some reason, I-pipe patch
changes type of the USB and all other multiplexed interrupts from edge to
level interrupt, which they are in original Linux kernel. Of course, this
breaks everything. I fixed USB by changing back interrupts type from level
to edge in arch/arm/plat-pxa/gpio.c:

 

void __intit pxa_init_gpio(

               instead of 

#ifndef CONFIG_IPIPE

               set_irq_handler(irq,handle_edge_irq);

#else

               set_irq_handler(irq,handle_level_irq);

#endif

 

I'm using just 

               set_irq_handler(irq,handle_edge_irq);

, as it was in original Linux code and everything works fine.

 

Shouldn't changes to interrupt code in Xenomai depend on particular board
and not be part of the common code? 

 

I would appreciate any response regarding these issues.

 

Regards,

 

Ivan

 


[-- Attachment #2: Type: text/html, Size: 6113 bytes --]

^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2010-01-13 13:59 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-11 18:22 [Xenomai-help] Viper board (ARM XScale) problems with Xenomai-2.4.10 Ivan Kalatchev
2010-01-11 18:28 ` Gilles Chanteperdrix
  -- strict thread matches above, loose matches on Subject: below --
2010-01-11 22:04 Ivan Kalatchev
2010-01-11 23:01 ` Gilles Chanteperdrix
2010-01-12 10:29   ` Gilles Chanteperdrix
     [not found]   ` <001f01ca9390$5fa20db0$1ee62910$@kalatchev@domain.hid>
2010-01-12 14:18     ` Gilles Chanteperdrix
2010-01-12 15:12       ` Ivan Kalatchev
2010-01-12 15:35         ` Gilles Chanteperdrix
2010-01-12 16:09           ` Ivan Kalatchev
2010-01-12 16:16             ` Gilles Chanteperdrix
2010-01-12 17:39               ` Ivan Kalatchev
2010-01-12 17:43                 ` Gilles Chanteperdrix
2010-01-12 20:04                 ` Gilles Chanteperdrix
2010-01-12 20:34                   ` Ivan Kalatchev
2010-01-12 22:40                   ` Ivan Kalatchev
2010-01-12 22:42                     ` Gilles Chanteperdrix
2010-01-12 22:48                       ` Ivan Kalatchev
2010-01-12 22:52                         ` Gilles Chanteperdrix
2010-01-12 23:28                         ` Gilles Chanteperdrix
2010-01-13  0:20                         ` Gilles Chanteperdrix
2010-01-13 13:55                           ` Ivan Kalatchev
2010-01-13 13:59                             ` Gilles Chanteperdrix
2010-01-12 21:07           ` Ivan Kalatchev
2010-01-12 21:09             ` Gilles Chanteperdrix
2010-01-12 21:27               ` Ivan Kalatchev
2010-01-12 21:30                 ` Gilles Chanteperdrix

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.