[ANNOUNCE] v5.2.21-rt15

From: Sebastian Andrzej Siewior
Date: Mon Dec 16 2019 - 12:34:22 EST


Dear RT folks!

I'm pleased to announce the v5.2.21-rt15 patch set.

Changes since v5.2.21-rt14:

- Since the migrate_disable() rework, the kernel did not build on UP
or without RT enabled. Patch by Daniel Wagner.

- Since the migrate_disable() rework, with heave changing of the
task's affinity mask the kernel could issue a warning in
migrate_enable() and crash later.

Known issues
- None

The delta patch against v5.2.21-rt14 is appended below and can be found here:

https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.2/incr/patch-5.2.21-rt14-rt15.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.2.21-rt15

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

https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.2/older/patch-5.2.21-rt15.patch.xz

The split quilt queue is available at:

https://cdn.kernel.org/pub/linux/kernel/projects/rt/5.2/older/patches-5.2.21-rt15.tar.xz

Sebastian

diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index ef9621815f37e..ab04f5c48787d 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -7399,7 +7399,7 @@ void migrate_enable(void)

WARN_ON(smp_processor_id() != cpu);
if (!is_cpu_allowed(p, cpu)) {
- struct migration_arg arg = { p };
+ struct migration_arg arg = { .task = p };
struct cpu_stop_work work;
struct rq_flags rf;

@@ -7411,7 +7411,10 @@ void migrate_enable(void)
stop_one_cpu_nowait(task_cpu(p), migration_cpu_stop,
&arg, &work);
__schedule(true);
- WARN_ON_ONCE(!arg.done && !work.disabled);
+ if (!work.disabled) {
+ while (!arg.done)
+ cpu_relax();
+ }
}

out:
diff --git a/lib/smp_processor_id.c b/lib/smp_processor_id.c
index 5f2618d346c42..c2f5b0f8cacd0 100644
--- a/lib/smp_processor_id.c
+++ b/lib/smp_processor_id.c
@@ -23,8 +23,10 @@ unsigned int check_preemption_disabled(const char *what1, const char *what2)
* Kernel threads bound to a single CPU can safely use
* smp_processor_id():
*/
+#if defined(CONFIG_PREEMPT_RT_BASE) && (defined(CONFIG_SMP) || defined(CONFIG_SCHED_DEBUG))
if (current->migrate_disable)
goto out;
+#endif

if (current->nr_cpus_allowed == 1)
goto out;
diff --git a/localversion-rt b/localversion-rt
index 08b3e75841adc..18777ec0c27d4 100644
--- a/localversion-rt
+++ b/localversion-rt
@@ -1 +1 @@
--rt14
+-rt15