Re: [snd_hda_intel] snd_hda_intel causes high CPU lockup and system instability if mic disabled in BIOS on Lenovo P50

From: Takashi Iwai
Date: Tue Nov 27 2018 - 08:21:44 EST


On Tue, 27 Nov 2018 06:34:02 +0100,
Alexander Kappner wrote:
>
>
>
>
> On Mon, 26 Nov 2018, Takashi Iwai wrote:
>
> > On Mon, 26 Nov 2018 00:17:15 +0100,
> > Alexander Kappner wrote:
> >>
> >> My Lenovo P50 laptop has a BIOS option to disable the microphone. When
> >> this option gets chosen, the snd_hda_intel driver causes high CPU load
> >> on a single kworker thread, spinning on "process_unsol_events", and
> >> system
> >> instability. This behavior occurs from the time that the snd_hda_intel
> >> module is loaded, irrespective of whether anything is attempting to access
> >> the mic. The sound output still works.
> >>
> >> When in this state, the module cannot be removed cleanly; attempting to
> >> remove it (even without rmmod -f) triggers an oops.
> >>
> >> I have attached two exemplary dmesg outputs. Strangely enough, the exact
> >> location of the oops varies, but further up the call chain, I always see
> >> process_unsol_events.
> >>
> >> When the mic is not disabled in the BIOS, the module works stable,
> >> regardless whether or not the mic is muted in ALSA.
> >>
> >> I wasn't able to pinpoint the root cause. Any pointers on where to
> >> start? Much appreciated.
> >
> > Could you load snd-hda-intel driver with probe_only=1 option, and give
> > alsa-info.sh output (run it with --no-upload option)? This should
> > leave only the codec probing without configuring, so we can see the
> > codec widget contents and check the emulator.
> >
> >
> > thanks,
> >
> > Takashi
> >
>
> Hi Takashi,
>
> thank you for looking into this. Please see quoted below the output of
> alsa-info.sh (after "modprobe snd_hda_intel probe_only=1").

This is the state where BIOS disabled the mic, right?
It seems that BIOS doesn't change the pin configuration. The pin NID
0x18 and 0x19 still show up as the mic jack and dock mic jack, as well
as the built-in mic on NID 0x12. And I couldn't see anything wrong in
the emulator with this input.

When BIOS disables the mic, how is supposed? Does it disable all
mics, including built-in one?

Could you check alsa-info.sh outputs on both BIOS mic disable and
enabled (but keep probe_only=1 option in both cases)?

Also alsa-info.sh outputs on both cases without probe_only=1 would be
helpful, too.


thanks,

Takashi