[alsa-devel] [3.6.9 -> 3.7.1 regression] sound: snd_hda_intel codec probing issue?

Takashi Iwai tiwai at suse.de
Tue Jan 8 13:56:37 CET 2013


At Tue, 08 Jan 2013 13:28:55 +0100,
Vincent Blut wrote:
> 
> Le lundi 07 janvier 2013 à 09:32 +0100, Takashi Iwai a écrit :
> > At Sat, 05 Jan 2013 22:24:03 +0100,
> > Vincent Blut wrote:
> > > 
> > > Le jeudi 03 janvier 2013 à 10:19 +0100, Takashi Iwai a écrit :
> > > > At Fri, 28 Dec 2012 15:25:40 +0100,
> > > > Vincent Blut wrote:
> > > > > 
> > > > > Hi,
> > > > > 
> > > > > Since I updated to Linux 3.7.1, listening to some audio/video bits
> > > > > frequently cause the following:
> > > > > 
> > > > > [ 7896.166946] hda-intel: azx_get_response timeout, switching to polling
> > > > > mode: last cmd=0x020c0000
> > > > > [ 7897.173444] hda-intel: No response from codec, disabling MSI: last
> > > > > cmd=0x020c0000
> > > > > [ 7898.179932] hda_intel: azx_get_response timeout, switching to
> > > > > single_cmd mode: last cmd=0x020c0000
> > > > > [ 7898.179983] hda-codec: out of range cmd 0:0:20:400:fffff7ff
> > > > > [ 9445.034371] plugin-containe[5873]: segfault at 7f44bb95e639 ip
> > > > > 00007f44e454bca0 sp 00007f44c91165f8 error 4 in
> > > > > libc-2.13.so[7f44e442c000+180000]
> > > > > 
> > > > > It seems to be a codec probing failure (?). This is really fatal because
> > > > > the sound become very choppy and can't recover until I reboot.
> > > > > I'll try to play with 'probe_mask' kernel parameter to see if I can
> > > > > narrow the correct codec slots!
> > > > > 
> > > > > By the way I can't reproduce this on 3.6.9, so is there something that
> > > > > changed in this area in 3.7.1?
> > > > 
> > > > If it's new in 3.7, this could be a regression by runtime D3.
> > > > Try to pass power_save_controller=0 option to snd-hda-intel module
> > > > (or change it via sysfs dynamically).
> > > > 
> > > > 
> > > > thanks,
> > > > 
> > > > Takashi
> > > 
> > > Hi Takashi,
> > > 
> > > Well, power_save_controller=0 seems to do the trick but I get plenty of:
> > > 
> > > 
> > > [   15.389270] pci_pm_runtime_suspend(): azx_runtime_suspend+0x0/0x37
> > > [snd_hda_intel] returns -11
> > > [   25.178725] pci_pm_runtime_suspend(): azx_runtime_suspend+0x0/0x37
> > > [snd_hda_intel] returns -11
> > > [   72.296536] pci_pm_runtime_suspend(): azx_runtime_suspend+0x0/0x37
> > > [snd_hda_intel] returns -11
> > > [ 2318.147505] pci_pm_runtime_suspend(): azx_runtime_suspend+0x0/0x37
> > > [snd_hda_intel] returns -11
> > > [ 6086.029839] pci_pm_runtime_suspend(): azx_runtime_suspend+0x0/0x37
> > > [snd_hda_intel] returns -11
> > > [ 7390.772818] pci_pm_runtime_suspend(): azx_runtime_suspend+0x0/0x37
> > > [snd_hda_intel] returns -11
> > > 
> > > 
> > > which I think is fixed in 3.8 by commit 6eb827d23577
> > 
> > Yes, and should be merged in the next stable release.
> > 
> > > So what's the next step? Adding a quirk for this sound card? Or is there
> > > a way to fix the root cause? 
> > 
> > One more thing to test is whether azx_runtime_resume() is properly
> > called before this error happens.  Could you put a debug print and
> > check it?  If it's not called, it implies that the refcount or
> > something else got broken.  If it's called but the device doesn't
> > respond, it's a hardware-specific issue, and the likely solution is to
> > add a device-specific quirk.
> > 
> 
> Ok, I added a debug printk() which is called:
> 
> $ dmesg | grep -i debug
> [ 5330.371523] [debug] Probably needs a device-specific quirk!
> 
> As usual, when it is called the sound become very choppy.

OK.  So it's not the driver code but really a problem in the deeper
level.

> I'll test with enable_msi=0 later.

Thanks.

FWIW, below is a patch I'm considering to merge (after testing, of
course).  Could you buys check it?


Takashi

---
From: Takashi Iwai <tiwai at suse.de>
Subject: [PATCH] ALSA: hda - Disable runtime D3 for Intel CPT & co

We've got a few bug reports that the runtime D3 results in the dead
HD-audio controller.  It seems that the problem is in a deeper level
than the sound driver itself, so as a temporal solution, disable the
feature for these controllers again.

Reported-by: Vincent Blut <vincent.debian at free.fr>
Reported-by: Maurizio Avogadro <mavoga at gmail.com>
Cc: <stable at vger.kernel.org> [v3.7]
Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/pci/hda/hda_intel.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c
index cca8727..0b6aeba 100644
--- a/sound/pci/hda/hda_intel.c
+++ b/sound/pci/hda/hda_intel.c
@@ -573,9 +573,12 @@ enum {
 #define AZX_DCAPS_PM_RUNTIME	(1 << 26)	/* runtime PM support */
 
 /* quirks for Intel PCH */
-#define AZX_DCAPS_INTEL_PCH \
+#define AZX_DCAPS_INTEL_PCH_NOPM \
 	(AZX_DCAPS_SCH_SNOOP | AZX_DCAPS_BUFSIZE | \
-	 AZX_DCAPS_COUNT_LPIB_DELAY | AZX_DCAPS_PM_RUNTIME)
+	 AZX_DCAPS_COUNT_LPIB_DELAY)
+
+#define AZX_DCAPS_INTEL_PCH \
+	(AZX_DCAPS_INTEL_PCH_NOPM | AZX_DCAPS_PM_RUNTIME)
 
 /* quirks for ATI SB / AMD Hudson */
 #define AZX_DCAPS_PRESET_ATI_SB \
@@ -3586,13 +3589,13 @@ static void azx_remove(struct pci_dev *pci)
 static DEFINE_PCI_DEVICE_TABLE(azx_ids) = {
 	/* CPT */
 	{ PCI_DEVICE(0x8086, 0x1c20),
-	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
+	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM },
 	/* PBG */
 	{ PCI_DEVICE(0x8086, 0x1d20),
-	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
+	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM },
 	/* Panther Point */
 	{ PCI_DEVICE(0x8086, 0x1e20),
-	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
+	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH_NOPM },
 	/* Lynx Point */
 	{ PCI_DEVICE(0x8086, 0x8c20),
 	  .driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_PCH },
-- 
1.8.0.1



More information about the Alsa-devel mailing list