rcu: Make priority of grace-period thread consistent
authorAlison Chaiken <achaiken@aurora.tech>
Tue, 11 Jan 2022 23:32:51 +0000 (15:32 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Wed, 2 Feb 2022 01:19:17 +0000 (17:19 -0800)
The priority of RCU grace period threads is set to kthread_prio when
they are launched from rcu_spawn_gp_kthread().  The same is not true
of rcu_spawn_one_nocb_kthread().  Accordingly, add priority elevation
to rcu_spawn_one_nocb_kthread().

Signed-off-by: Alison Chaiken <achaiken@aurora.tech>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/tree_nocb.h

index 1e40519d1a05aeaeb7ca4755fc5d1b284610a475..ea889cbfc3b950766e40844a159de04f56914475 100644 (file)
@@ -1239,6 +1239,7 @@ static void rcu_spawn_cpu_nocb_kthread(int cpu)
        struct rcu_data *rdp = per_cpu_ptr(&rcu_data, cpu);
        struct rcu_data *rdp_gp;
        struct task_struct *t;
+       struct sched_param sp;
 
        if (!rcu_scheduler_fully_active || !rcu_nocb_is_setup)
                return;
@@ -1248,6 +1249,7 @@ static void rcu_spawn_cpu_nocb_kthread(int cpu)
                return;
 
        /* If we didn't spawn the GP kthread first, reorganize! */
+       sp.sched_priority = kthread_prio;
        rdp_gp = rdp->nocb_gp_rdp;
        mutex_lock(&rdp_gp->nocb_gp_kthread_mutex);
        if (!rdp_gp->nocb_gp_kthread) {
@@ -1258,6 +1260,8 @@ static void rcu_spawn_cpu_nocb_kthread(int cpu)
                        return;
                }
                WRITE_ONCE(rdp_gp->nocb_gp_kthread, t);
+               if (kthread_prio)
+                       sched_setscheduler_nocheck(t, SCHED_FIFO, &sp);
        }
        mutex_unlock(&rdp_gp->nocb_gp_kthread_mutex);