[alsa-devel] [snd_hda_intel] snd_hda_intel causes high CPU lockup and system instability if mic disabled in BIOS on Lenovo P50

Alexander Kappner agk at godking.net
Mon Jan 7 03:18:27 CET 2019



On Wed, 5 Dec 2018, Takashi Iwai wrote:

> On Sat, 01 Dec 2018 20:33:16 +0100,
> Alexander Kappner wrote:
>>
>> On Tue, 27 Nov 2018, Takashi Iwai wrote:
>>
>>> 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
>>>
>> Hi Takashi,
>>
>> as requestd, please see attached four files, reflecting each
>> combination of probe_only and mic enabled/disabled. To answer your
>> question -- yes, the initial file I had sent reflected the mic
>> disabled state.
>>
>> The BIOS option definitely disables the internal microphone. I could
>> not test whether it would also disable other microphones
>> (e.g. externally connected) since I do not have an external mic, but I
>> will find out.
>
> Hrm, that's strange.  The mic_enabled_default.txt shows "Mic Jack"
> false while the mic_disabled_default.txt shows "Mic Jack" true.
> It sounds like other way round.  Could you confirm this behavior?
>
> In anyway, there seems no difference in the pin configs or such
> between BIOS mic enable/disable.  So this shouldn't be the cause.
>
> And I noticed that you're testing 4.19-rc4.  Could you test with 4.19
> final or 4.19.y stable, at least?
>
>
> thanks,
>
> Takashi
>
Hi Takashi,

I have been trying to reproduce 
this issue with the more recent 4.20-rc6 kernel, and it has not 
reoccurred. As such, I tentatively consider this issue resolved. Thank you 
for your help.

Best regards
Alexander


More information about the Alsa-devel mailing list