On Tue, 2020-10-27 at 10:00 +0100, Sebastian Andrzej Siewior wrote: > On 2020-10-27 07:03:38 [+0100], Mike Galbraith wrote: > > On Mon, 2020-10-26 at 20:53 +0100, Sebastian Andrzej Siewior wrote: > > > > > > Could you try this, please? > > > > Nogo, first call of sched_setscheduler() is via kthread_create(). I > > confirmed that nuking that (gratuitous user foot saving override) call > > on top of moving sched_set_fifo() does shut it up, but that won't fly. > > mkay. but this then, too. Yup, might even fly. > Let me try if I can figure out when this > broke. > > diff --git a/kernel/kthread.c b/kernel/kthread.c > index 3edaa380dc7b4..64d6afb127239 100644 > --- a/kernel/kthread.c > +++ b/kernel/kthread.c > @@ -244,6 +244,7 @@ EXPORT_SYMBOL_GPL(kthread_parkme); > static int kthread(void *_create) > { > /* Copy data: it's on kthread's stack */ > + static const struct sched_param param = { .sched_priority = 0 }; > struct kthread_create_info *create = _create; > int (*threadfn)(void *data) = create->threadfn; > void *data = create->data; > @@ -273,6 +274,13 @@ static int kthread(void *_create) > init_completion(&self->parked); > current->vfork_done = &self->exited; > > + /* > + * root may have changed our (kthreadd's) priority or CPU mask. > + * The kernel thread should not inherit these properties. > + */ > + sched_setscheduler_nocheck(current, SCHED_NORMAL, ¶m); > + set_cpus_allowed_ptr(current, housekeeping_cpumask(HK_FLAG_KTHREAD)); > + > /* OK, tell user we're spawned, wait for stop or wakeup */ > __set_current_state(TASK_UNINTERRUPTIBLE); > create->result = current; > @@ -370,7 +378,6 @@ struct task_struct *__kthread_create_on_node(int (*threadfn)(void *data), > } > task = create->result; > if (!IS_ERR(task)) { > - static const struct sched_param param = { .sched_priority = 0 }; > char name[TASK_COMM_LEN]; > > /* > @@ -379,13 +386,6 @@ struct task_struct *__kthread_create_on_node(int (*threadfn)(void *data), > */ > vsnprintf(name, sizeof(name), namefmt, args); > set_task_comm(task, name); > - /* > - * root may have changed our (kthreadd's) priority or CPU mask. > - * The kernel thread should not inherit these properties. > - */ > - sched_setscheduler_nocheck(task, SCHED_NORMAL, ¶m); > - set_cpus_allowed_ptr(task, > - housekeeping_cpumask(HK_FLAG_KTHREAD)); > } > kfree(create); > return task; > > Sebastian