diff mbox series

[ANNOUNCE] v5.10.21-rt34

Message ID 20210309203950.33ikot2ddvoj7gmo@linutronix.de
State New
Headers show
Series [ANNOUNCE] v5.10.21-rt34 | expand

Commit Message

Sebastian Andrzej Siewior March 9, 2021, 8:39 p.m. UTC
Dear RT folks!

I'm pleased to announce the v5.10.21-rt34 patch set.

Changes since v5.10.21-rt33:

  - The alloc/free tracker sysfs file uses one PAGE size for
    collecting the results. If it runs out of space it reallocates
    more memory with disabled interrupts. The reallocation is now
    forbidden on PREEMPT_RT.

  - 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.10.21-rt33 is appended below and can be found here:

     https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.10/incr/patch-5.10.21-rt33-rt34.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.10.21-rt34

The RT patch against v5.10.21 can be found here:

    https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patch-5.10.21-rt34.patch.xz

The split quilt queue is available at:

    https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.10/older/patches-5.10.21-rt34.tar.xz

Sebastian
diff mbox series

Patch

diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 2725c6ad10af6..7545a2f18560a 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -663,6 +663,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) { }
@@ -693,8 +694,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 f0074f1344402..c9adc5c462485 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 e1d8362520178..21988f9ad53f1 100644
--- a/localversion-rt
+++ b/localversion-rt
@@ -1 +1 @@ 
--rt33
+-rt34
diff --git a/mm/slub.c b/mm/slub.c
index 32a87e0038776..15690db5223e7 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -4697,6 +4697,9 @@  static int alloc_loc_track(struct loc_track *t, unsigned long max, gfp_t flags)
 	struct location *l;
 	int order;
 
+	if (IS_ENABLED(CONFIG_PREEMPT_RT) && flags == GFP_ATOMIC)
+		return 0;
+
 	order = get_order(sizeof(struct location) * max);
 
 	l = (void *)__get_free_pages(flags, order);