Re: snd_hda_codec_cirrus kernel oops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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";
  	}



[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Pulse Audio]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux