At Thu, 8 Jan 2009 13:22:41 -0500, Kyler Laird wrote:
On Thu, Jan 08, 2009 at 06:54:03PM +0100, Takashi Iwai wrote:
Could you add dump_stack() in stac92xx_unsol_event() and check the code path?
Jan 8 13:19:12 ruff kernel: HDA Intel 0000:00:1b.0: PCI INT A disabled Jan 8 13:19:12 ruff kernel: HDA Intel 0000:00:1b.0: power state changed by ACPI to D0 Jan 8 13:19:12 ruff kernel: HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 Jan 8 13:19:12 ruff kernel: HDA Intel 0000:00:1b.0: setting latency timer to 64 Jan 8 13:19:12 ruff kernel: (Kyler) stac92xx_unsol_event: 3221225472 Jan 8 13:19:12 ruff kernel: Pid: 13602, comm: modprobe Not tainted 2.6.28 #1 Jan 8 13:19:12 ruff kernel: Call Trace: Jan 8 13:19:12 ruff kernel: [<e0a30af3>] stac92xx_unsol_event+0x33/0x380 [snd_hda_intel] Jan 8 13:19:12 ruff kernel: [<e0a303b0>] stac92xx_init+0x120/0x490 [snd_hda_intel]
Weird. I thought this path is active only when hp_detect != 0. Could you check whether it's really correctly patched, e.g. by the patch like below?
It seems applying my previous patch on 2.6.28 puts the code into a wrong place.
Takashi
--- diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index b77f330..9982e4b 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c @@ -3745,6 +3745,7 @@ static int stac92xx_init(struct hda_codec *codec)
/* set up pins */ if (spec->hp_detect) { + printk(KERN_DEBUG "XXX stac92xx_init -- hp_detect is ON!\n"); /* Enable unsolicited responses on the HP widget */ for (i = 0; i < cfg->hp_outs; i++) enable_pin_detect(codec, cfg->hp_pins[i], @@ -4129,6 +4130,11 @@ static int patch_stac9200(struct hda_codec *codec) return err; }
+ if (spec->board_config == STAC_9200_PANASONIC) { + printk(KERN_DEBUG "XXX panasonic quirk enabled\n"); + spec->hp_detect = 0; + } + codec->patch_ops = stac92xx_patch_ops;
return 0;