Re: [PATCH v1] ALSA: hda: optimize the probe codec process

From: Takashi Iwai
Date: Wed Feb 28 2024 - 03:20:33 EST


On Wed, 28 Feb 2024 08:41:38 +0100,
songxiebing wrote:
>
> From: songxiebing <songxiebing@xxxxxxxxxx>
>
> In azx_probe_codecs function,when bus->codec_mask is becomes to 0(no codecs),
> execute azx_init_chip, bus->codec_mask will be initialized to a value again,
> this causes snd_hda_codec_new function to run, the process is as follows:
> -->snd_hda_codec_new
> -->snd_hda_codec_device_init
> -->snd_hdac_device_init---snd_hdac_read_parm(...AC_PAR_VENDOR_ID) 2s
> ---snd_hdac_read_parm(...AC_PAR_VENDOR_ID) 2s
> ---snd_hdac_read_parm(...AC_PAR_SUBSYSTEM_ID) 2s
> ---snd_hdac_read_parm(...AC_PAR_REV_ID) 2s
> ---snd_hdac_read_parm(...AC_PAR_NODE_COUNT) 2s
> when no codecs, read communication is error, each command will be polled for
> 2 second,a total of 10s, it is easy to some problem.
> like this:
> 2 [ 14.833404][ 6] [ T164] hda 0006:00: Codec #0 probe error; disabling it...
> 3 [ 14.844178][ 6] [ T164] hda 0006:00: codec_mask = 0x1
> 4 [ 14.880532][ 6] [ T164] hda 0006:00: too slow response, last cmd=0x0f0000
> 5 [ 15.891988][ 6] [ T164] hda 0006:00: too slow response, last cmd=0x0f0000
> 6 [ 16.978090][ 6] [ T164] hda 0006:00: too slow response, last cmd=0x0f0001
> 7 [ 18.140895][ 6] [ T164] hda 0006:00: too slow response, last cmd=0x0f0002
> 8 [ 19.135516][ 6] [ T164] hda 0006:00: too slow response, last cmd=0x0f0004
> 10 [ 19.900086][ 6] [ T164] hda 0006:00: no codecs initialized
> 11 [ 45.573398][ 2] [ C2] watchdog: BUG: soft lockup - CPU#2 stuck for 22s! [kworker/2:0:25]
>
> Here, when bus->codec_mask is 0, use a direct break to avoid execute snd_hda_codec_new function.
>
> Signed-off-by: songxiebing <songxiebing@xxxxxxxxxx>

Thanks for the patch. The code change looks OK, but you use both
ASCII and non-ASCII comma letters in the patch description.
Could you try to keep only ASCII letters?


Takashi