Jan Kiszka wrote:
Hi Philippe,

I had a bit "fun" today trying to get some of our robotic hardware
running with latest Xenomai / Ipipe, also in order to test recent RTDM
fixes. It turned out that the head-optimised variant easily creates that
infamous stalled Xenomai domain, e.g. like this one:

Eeek... Ok, two things come to my mind for debugging this issue. The first one 
to make sure the assumption in ipipe_restore_pipeline_head() is a good one, so 
you try please testing the patch below, and see if the situation improves (it 
worsen anyway):

--- include/linux/ipipe.h~      2006-05-08 12:17:06.000000000 +0200
+++ include/linux/ipipe.h       2006-05-12 00:17:00.000000000 +0200
@@ -563,7 +563,9 @@
 static inline void ipipe_restore_pipeline_head(unsigned long x)
        struct ipipe_domain *head = __ipipe_pipeline_head();
+#if 0
        if (x != test_bit(IPIPE_STALL_FLAG, 

Second, if the first try is unsuccessful, could you try disabling the wired
interrupt support the way below, keeping the rest of the invariant pipeline
head optimizations active?

--- kernel/ipipe/core.c~        2006-05-07 18:05:28.000000000 +0200
+++ kernel/ipipe/core.c 2006-05-11 18:34:57.000000000 +0200
@@ -482,8 +482,10 @@
        if (ipd->irqs[irq].control & IPIPE_SYSTEM_MASK)
                return -EPERM;

+#if 0
        if (!test_bit(IPIPE_AHEAD_FLAG, &ipd->flags))
                /* Silently unwire interrupts for non-heading domains. */
                modemask &= ~IPIPE_WIRED_MASK;

        spin_lock_irqsave_hw(&__ipipe_pipelock, flags);



Xenomai-core mailing list

Reply via email to