Re: [PATCHv2 0/6] Motorola Droid 4 Audio Support

From: Takashi Iwai
Date: Tue Jul 18 2017 - 05:37:54 EST


On Tue, 18 Jul 2017 11:29:31 +0200,
Sebastian Reichel wrote:
>
> Hi,
>
> On Mon, Jul 17, 2017 at 10:48:33PM -0700, Tony Lindgren wrote:
> > * Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> [170717 07:14]:
> > > Hi,
> > >
> > > On Mon, Jul 17, 2017 at 03:17:10AM -0700, Tony Lindgren wrote:
> > > > * Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> [170717 03:13]:
> > > > > On Mon, Jul 17, 2017 at 02:29:04AM -0700, Tony Lindgren wrote:
> > > > > > * Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> [170712 08:19]:
> > > > > > > * Switch from simple-audio-card to audio-graph-card
> > > > > >
> > > > > > Gave this a quick try against v4.13-rc1 with SND_AUDIO_GRAPH_CARD
> > > > > > enabled as a loadable module. However loading it oopses for me,
> > > > > > see below. Maybe some dependencies are missing?
> > > > >
> > > > > It works for me on top of v4.13-rc1 (my kernel is monolithic).
> > > > > Looking at the stacktrace it seems to be a bug in audio graph
> > > > > card and not in the codec driver.
> > > >
> > > > OK I do also have:
> > > >
> > > > CONFIG_DEBUG_LOCKDEP=y
> > > > CONFIG_DEBUG_ATOMIC_SLEEP=y
> > >
> > > I added those and I do not get a stacktrace for anything sound
> > > related and audio works. I noticed one issue in dapm routing,
> > > that I accidently added. That will be fixed in PATCHv3, but its
> > > in untestable path anyways (EXT capture, probably FM radio is
> > > connected to EXT).
> >
> > Hmm maybe that was not with DEBUG_ATOMIC_SLEEP then?
>
> $ grep DEBUG_ATOMIC_SLEEP .config
> CONFIG_DEBUG_ATOMIC_SLEEP=y
>
> > I also verified it does not happen unless your dts patch "ARM:
> > dts: omap4-droid4: add soundcard" is applied.
>
> That's what I expected, since the stacktrace started in the
> soundcard driver.
>
> > I doubt that having it as loadable module makes any difference
> > here as it's the might_sleep() in __mutex_lock_common() producing
> > the BUG.
>
> It might make a difference, since it changes the probe order. The
> mutex may not even be called on my system.

The problem manifests itself as an unblanaced of node reference.
The node is released mistakenly at of_node_put() and this is caught as
sleep-in-atomic, fortunately.

So likely either something forgot to take the node ref or it hits the
unreference due to the missing object by the implicit probe disorder,
etc, I suppose.


Takashi