Gilles Chanteperdrix wrote:
Fabien MAHOT wrote:
Hello,

I would like to know if you find something about my problem? Do you have
more clues with the "frame pointers" debug?

Hi Fabien,

I found something. Could you try the attached patch, to see if we are
spotting the right bug ?

Ok. Here comes a better patch. To be applied to the I-pipe patched kernel.

--
                                                 Gilles.
diff --git a/kernel/sched.c b/kernel/sched.c
index a4bf7d3..0865f23 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -2488,6 +2488,8 @@ context_switch(struct rq *rq, struct task_struct
*prev,

     barrier();

+    prev->state &= ~TASK_ATOMICSWITCH;
+
     if (task_hijacked(prev))
         return 1;
     /*
@@ -4161,11 +4163,9 @@ need_resched:
     rcu_qsctr_inc(cpu);
     prev = rq->curr;
     switch_count = &prev->nivcsw;
-     if (unlikely(prev->state & TASK_ATOMICSWITCH)) {
-         prev->state &= ~TASK_ATOMICSWITCH;
+     if (unlikely(prev->state & TASK_ATOMICSWITCH))
         /* Pop one disable level -- one still remains. */
         preempt_enable();
-     }

     release_kernel_lock(prev);
 need_resched_nonpreemptible:
@@ -4216,8 +4216,10 @@ need_resched_nonpreemptible:
          */
         cpu = smp_processor_id();
         rq = cpu_rq(cpu);
-    } else
+    } else {
+        prev->state &= ~TASK_ATOMICSWITCH;
         spin_unlock_irq(&rq->lock);
+    }

     hrtick_set(rq);
_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to