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();
return "PCM"; }codec_err(codec, "Too many channels in %s: %d\n", __func__, ch);