Hi all, Ingo's patch: 00853150572df2 tasklet: Prevent tasklets from going into infinite spin in RT changed behavior about tasklet in NO-RT scenario, but I found some suspicious from code and comments. Like the below patch says, if a tasklet is already running on another CPU, then it would have RUN flag and have no SCHED flag, so when we call tasklet_schedule, then in __tasklet_common_schedule(), tasklet_trylock() will return false, and the tasklet won't be added to tasklet_vec list, so there is no reschedule, right? Another, the comments said schedule called from tasklet itself would cause lockup, like it mentioned above, in tasklet function, the tasklet has RUN flag, and have no SCHED flag, so when it call tasklet_schedule, it will only meet tasklet_trylock return false, then nothing happened. I think this should not be any lockup. After all, if my understanding is correct, it changed the behavior when tasklet scheduled itself, this would affect some kernel modules using tasklet, is this what we want in RT? If so, should we use RT_FULL config to isolate this affect? -------------------- Correct the comments as the code really do. Signed-off-by: Qiang Huang <h.huangqiang@xxxxxxxxxx> --- include/linux/interrupt.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index fb05761..e9d73e6 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -514,9 +514,8 @@ extern void __send_remote_softirq(struct call_single_data *cp, int cpu, to be executed on some cpu at least once after this. * If the tasklet is already scheduled, but its execution is still not started, it will be executed only once. - * If this tasklet is already running on another CPU, it is rescheduled - for later. - * Schedule must not be called from the tasklet itself (a lockup occurs) + * If this tasklet is already running on another CPU (or schedule is called + from tasklet itself), it wound not be rescheduled. * Tasklet is strictly serialized wrt itself, but not wrt another tasklets. If client needs some intertask synchronization, he makes it with spinlocks. -- 1.8.3 -- 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