On Sun, 2010-11-07 at 11:14 +0100, Jan Kiszka wrote: > Am 07.11.2010 11:12, Gilles Chanteperdrix wrote: > > Jan Kiszka wrote: > >> Am 07.11.2010 11:03, Philippe Gerum wrote: > >>> On Sun, 2010-11-07 at 09:31 +0100, Gilles Chanteperdrix wrote: > >>>> Jan Kiszka wrote: > >>>>>>> Anyway, after some thoughts, I think we are going to try and make the > >>>>>>> current situation work instead of going back to the old way. > >>>>>>> > >>>>>>> You can find the patch which attempts to do so here: > >>>>>>> http://sisyphus.hd.free.fr/~gilles/sched_status.txt > >>>>>> Ack. At last, this addresses the real issues without asking for > >>>>>> regression funkiness: fix the lack of barrier before testing XNSCHED in > >>>>> Check the kernel, we actually need it on both sides. Wherever the final > >>>>> barriers will be, we should leave a comment behind why they are there. > >>>>> Could be picked up from kernel/smp.c. > >>>> We have it on both sides: the non-local flags are modified while holding > >>>> the nklock. Unlocking the nklock implies a barrier. > >>> I think we may have an issue with this kind of construct: > >>> > >>> xnlock_get_irq*(&nklock) > >>> xnpod_resume/suspend/whatever_thread() > >>> xnlock_get_irq*(&nklock) > >>> ... > >>> xnlock_put_irq*(&nklock) > >>> xnpod_schedule() > >>> xnlock_get_irq*(&nklock) > >>> send_ipi > >>> =====> xnpod_schedule_handler on dest CPU > >>> xnlock_put_irq*(&nklock) > >>> xnlock_put_irq*(&nklock) > >>> > >>> The issue would be triggered by the use of recursive locking. In that > >>> case, the source CPU would only sync its cache when the lock is actually > >>> dropped by the outer xnlock_put_irq* call and the inner > >>> xnlock_get/put_irq* would not act as barriers, so the remote > >>> rescheduling handler won't always see the XNSCHED update done remotely, > >>> and may lead to a no-op. So we need a barrier before sending the IPI in > >>> __xnpod_test_resched(). > >> > >> That's what I said. > >> > >> And we need it on the reader side as an rmb(). > > > > This one we have, in xnpod_schedule_handler. > > > > Right, with your patch (the above sounded like we only need it on writer > side).
C'mon... -- Philippe. _______________________________________________ Xenomai-core mailing list [email protected] https://mail.gna.org/listinfo/xenomai-core
