Dear RT folks! I'm pleased to announce the v5.11.4-rt11 patch set. Changes since v5.11.4-rt10: - Update the softirq/tasklet patches to the latest version posted to the list. Known issues - kdb/kgdb can easily deadlock. - netconsole triggers WARN. The delta patch against v5.11.4-rt10 is appended below and can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.11/incr/patch-5.11.4-rt10-rt11.patch.xz You can get this release via the git tree at: git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git v5.11.4-rt11 The RT patch against v5.11.4 can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.11/older/patch-5.11.4-rt11.patch.xz The split quilt queue is available at: https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.11/older/patches-5.11.4-rt11.tar.xz Sebastian diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index ed6e49bceff1a..272ffd12cf756 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h @@ -672,6 +672,7 @@ static inline int tasklet_trylock(struct tasklet_struct *t) void tasklet_unlock(struct tasklet_struct *t); void tasklet_unlock_wait(struct tasklet_struct *t); void tasklet_unlock_spin_wait(struct tasklet_struct *t); + #else static inline int tasklet_trylock(struct tasklet_struct *t) { return 1; } static inline void tasklet_unlock(struct tasklet_struct *t) { } @@ -702,8 +703,8 @@ static inline void tasklet_disable_nosync(struct tasklet_struct *t) } /* - * Do not use in new code. There is no real reason to invoke this from - * atomic contexts. + * Do not use in new code. Disabling tasklets from atomic contexts is + * error prone and should be avoided. */ static inline void tasklet_disable_in_atomic(struct tasklet_struct *t) { diff --git a/kernel/softirq.c b/kernel/softirq.c index a9b66aa086366..27551db2b3ccc 100644 --- a/kernel/softirq.c +++ b/kernel/softirq.c @@ -830,8 +830,8 @@ EXPORT_SYMBOL(tasklet_init); #if defined(CONFIG_SMP) || defined(CONFIG_PREEMPT_RT) /* - * Do not use in new code. There is no real reason to invoke this from - * atomic contexts. + * Do not use in new code. Waiting for tasklets from atomic contexts is + * error prone and should be avoided. */ void tasklet_unlock_spin_wait(struct tasklet_struct *t) { diff --git a/localversion-rt b/localversion-rt index d79dde624aaac..05c35cb580779 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt10 +-rt11