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