On v4.9.11-rt9 with PREEMPT FULL this test also fails. On Sat, 18 Feb 2017 01:15:22 +0300 Alexander Gerasiov <gq@xxxxxxxxx> wrote: > Hello folks, > > I met some problem with preempt version of kernel 4.4. > > I have hrtimer which runs callback, it forwards time and returns > HRTIMER_RESTART. Very common scheme. When I stop the routine I call > hrtimer_cancel(). It should wait for callback completion if any and > unqueue any future timers. > > But suddenly I noticed, that sometimes hrtimer's routine continue to > work and work after hrtimer_cancel(). It could be reproduced with > simple test: > > Start hrtimer. > In callback increase counter and restart. > In the other thread cancel timer, save counter, sleep, check that > counter is not changed, restart timer, repeat. > Here is sample module: > https://gist.github.com/gerasiov/010e6c2cb96fd891c1802facf816fe84 > > It works OK on v3.10.74-rt79 with PREEMPL FULL. > It works OK on v4.4.47-rt59 with preempt patch but PREEMPT NONE. > But on 4.4 (tested on v4.4.47-rt59 and v4.4.32-rt43) with PREEMPT FULL > it fails: counter continue to increase (BUG_ON() line 45 hits), that > means that hrtimer continue to work after cancel(). And I must say, > that this is not single iteration, it continues to work in cycle. > > It was reproduced on i386 SMP box. > kernel config: > https://github.com/redlab-i/linux/blob/v4.4.47-rt59-stand2/.config > > Do anyone have any ideas where could be the problem? Or may be I > missed something in my research? > -- Best regards, Dmitry Zlobin -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html