On 08/03/2017 18:46, Steven Rostedt wrote: > On Wed, 8 Mar 2017 12:40:12 -0500 > Steven Rostedt <rost...@goodmis.org> wrote: > >> I wonder if we should just have a special flag sent by that sysrq >> trigger. Since it is causing all tasks to go "nice" there's no need to >> do the pi chain walk in __sched_setscheduler(). > > Hah, there already is a flag! > > Laurent, can you test this patch:
Tested on ppc64, no more panic \o/ FWIW, Tested-by: Laurent Dufour <lduf...@linux.vnet.ibm.com> Thanks, Laurent. > > -- Steve > > diff --git a/kernel/sched/core.c b/kernel/sched/core.c > index 3b31fc0..7292fa9 100644 > --- a/kernel/sched/core.c > +++ b/kernel/sched/core.c > @@ -4129,8 +4129,8 @@ static int __sched_setscheduler(struct task_struct *p, > int queue_flags = DEQUEUE_SAVE | DEQUEUE_MOVE; > struct rq *rq; > > - /* May grab non-irq protected spin_locks: */ > - BUG_ON(in_interrupt()); > + /* The pi code expects interrupts enabled */ > + BUG_ON(pi && in_interrupt()); > recheck: > /* Double check policy once rq lock held: */ > if (policy < 0) { >