Hey Takashi,
[ 90.497004] CPU: 3 PID: 343 Comm: modprobe Not tainted
6.3.1-arch2-1 #1 4c16b0b90f71a940c7f1bb2eb00cdd9db2a83452
[ 90.497008] Hardware name: Apple
Inc. MacBookPro12,1/Mac-E43C1C25D4880AD6, BIOS 481.0.0.0.0 01/12/2023
[ 90.497010] RIP: 0010:get_line_out_pfx+0x2dd/0x3e0
[snd_hda_codec_generic]
Can you try to decode which line does it hit?
This was the arch 'vendor' kernel, so not easily? I could have tried
though I suppose :)
Instead, I just applied your patch and tried that instead.
Also, as a blind shot, does the patch below work around the bug?
[ 16.593760] 0x000000000000-0x000000800000 : "BIOS"
[ 16.603877] snd_hda_codec_cirrus hdaudioC1D0: autoconfig for CS4208:
line_outs=5 (0x11/0x12/0x13/0x14/0x1d) type:speaker
[ 16.603885] snd_hda_codec_cirrus hdaudioC1D0: speaker_outs=0
(0x0/0x0/0x0/0x0/0x0)
[ 16.603888] snd_hda_codec_cirrus hdaudioC1D0: hp_outs=1
(0x10/0x0/0x0/0x0/0x0)
[ 16.603890] snd_hda_codec_cirrus hdaudioC1D0: mono: mono_out=0x0
[ 16.603892] snd_hda_codec_cirrus hdaudioC1D0: dig-out=0x1e/0x21
[ 16.603894] snd_hda_codec_cirrus hdaudioC1D0: inputs:
[ 16.603895] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x16
[ 16.603897] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x15
[ 16.603899] snd_hda_codec_cirrus hdaudioC1D0: Mic=0x18
[ 16.603900] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x19
[ 16.603902] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x1a
[ 16.603904] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x1b
[ 16.603919] snd_hda_codec_cirrus hdaudioC1D0: Internal Mic=0x1c
[ 16.603921] snd_hda_codec_cirrus hdaudioC1D0: Line=0x17
[ 16.603922] snd_hda_codec_cirrus hdaudioC1D0: dig-in=0x22
[ 16.605152] snd_hda_codec_cirrus hdaudioC1D0: Too many channels in
get_line_out_pfx: 4
[ 16.605215] snd_hda_codec_cirrus hdaudioC1D0: Too many channels in
get_line_out_pfx: 4
the good thing, you fixed the oops; the bad thing, it's no working, but
hopefully this helps you gain more insight?
Olliver
thanks,
Takashi
-- 8< --
--- a/sound/pci/hda/hda_generic.c
+++ b/sound/pci/hda/hda_generic.c
@@ -1182,7 +1182,7 @@ static const char *get_line_out_pfx(struct hda_codec *codec, int ch,
/* multi-io channels */
if (ch >= cfg->line_outs)
- return channel_name[ch];
+ goto fixed_names;
switch (cfg->line_out_type) {
case AUTO_PIN_SPEAKER_OUT:
@@ -1234,8 +1234,9 @@ static const char *get_line_out_pfx(struct hda_codec *codec, int ch,
if (cfg->line_outs == 1 && !spec->multi_ios)
return "Line Out";
+ fixed_names:
if (ch >= ARRAY_SIZE(channel_name)) {
- snd_BUG();
+ codec_err(codec, "Too many channels in %s: %d\n", __func__, ch);
return "PCM";
}