Re: sched: serial port lockdep warning when offlining CPUs

From: Peter Zijlstra
Date: Thu Sep 28 2017 - 07:39:22 EST


On Thu, Sep 28, 2017 at 08:13:26PM +0900, Sergey Senozhatsky wrote:
> On (09/28/17 11:04), Levin, Alexander (Sasha Levin) wrote:
> > On Thu, Sep 28, 2017 at 11:38:47AM +0200, Peter Zijlstra wrote:
> > >On Thu, Sep 28, 2017 at 02:19:46AM -0700, Sasha Levin wrote:
> > >> Hi all,
> > >>
> > >> I seem to be hitting the following warning when offlining CPUs on the
> > >> latest -next kernel:
> > >>
> > >> [289683102.607076] Unregister pv shared memory for cpu 8
> > >> [289683102.622922] select_fallback_rq: 3 callbacks suppressed
> > >
> > >This is because you hit a printk() from the scheduler, that's known
> > >broken (along with the rest of printk).
> > >
> > >You forgot to actually include that printk() though I suspect it reads
> > >like:
> > >
> > > "process %d (%s) no longer affine to cpu%d\n"
> > >
> > >Now that uses printk_deferred() which _should_ work lots better, but
> > >clearly the printk() stuff went wobbly again.
> >
> > Hm, so is this an actual possible lockup, or just a false positive?
>
> a possible one.

Yeah, printk() can deadlock when used from scheduler locks / NMI context
and a few other crucial places. printk_deferred() used to be 'safe'
though.