Created attachment 72191 [details] alsa-info.txt Since kernel 3.0.11 I have quite terrible sound artifacts - random pops, clicks and short pauses (~500ms - even video output stutters when I watch e.g. movies). Linux kernel 3.0.0 is *bug free*. So, some some of patches in kernel *3.0.11* broke the driver, the bug is, of course, present in kernels 3.1 and 3.2. This problem is also mentioned here: https://bbs.archlinux.org/viewtopic.php?id=130948 00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05) Subsystem: ASUSTeK Computer Inc. Device 8469 Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 60 Region 0: Memory at fb520000 (64-bit, non-prefetchable) [size=16K] Capabilities: [50] Power Management version 2 Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME- Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee0200c Data: 415a Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us ExtTag- RBE- FLReset+ DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported- RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 128 bytes, MaxReadReq 128 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend- LnkCap: Port #0, Speed unknown, Width x0, ASPM unknown, Latency L0 <64ns, L1 <1us ClockPM- Surprise- LLActRep- BwNot- LnkCtl: ASPM Disabled; Disabled- Retrain- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed unknown, Width x0, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt- Capabilities: [100 v1] Virtual Channel Caps: LPEVC=0 RefClk=100ns PATEntryBits=1 Arb: Fixed- WRR32- WRR64- WRR128- Ctrl: ArbSelect=Fixed Status: InProgress- VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans- Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256- Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01 Status: NegoPending- InProgress- VC1: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans- Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256- Ctrl: Enable+ ID=1 ArbSelect=Fixed TC/VC=22 Status: NegoPending- InProgress- Capabilities: [130 v1] Root Complex Link Desc: PortNumber=0f ComponentID=00 EltType=Config Link0: Desc: TargetPort=00 TargetComponent=00 AssocRCRB- LinkType=MemMapped LinkValid+ Addr: 00000000fed1c000 Kernel driver in use: snd_hda_intel Kernel modules: snd-hda-intel Here's the relevant section of my .config: CONFIG_SOUND=y CONFIG_SOUND_OSS_CORE=y CONFIG_SOUND_OSS_CORE_PRECLAIM=y CONFIG_SND=m CONFIG_SND_TIMER=m CONFIG_SND_PCM=m CONFIG_SND_HWDEP=m CONFIG_SND_RAWMIDI=m CONFIG_SND_JACK=y CONFIG_SND_SEQUENCER=m CONFIG_SND_OSSEMUL=y CONFIG_SND_MIXER_OSS=m CONFIG_SND_PCM_OSS=m CONFIG_SND_PCM_OSS_PLUGINS=y CONFIG_SND_SEQUENCER_OSS=y CONFIG_SND_HRTIMER=m CONFIG_SND_SEQ_HRTIMER_DEFAULT=y CONFIG_SND_DYNAMIC_MINORS=y CONFIG_SND_VMASTER=y CONFIG_SND_DMA_SGBUF=y CONFIG_SND_RAWMIDI_SEQ=m CONFIG_SND_EMU10K1_SEQ=m CONFIG_SND_AC97_CODEC=m CONFIG_SND_DRIVERS=y CONFIG_SND_AC97_POWER_SAVE=y CONFIG_SND_AC97_POWER_SAVE_DEFAULT=300 CONFIG_SND_PCI=y CONFIG_SND_EMU10K1=m CONFIG_SND_HDA_INTEL=m CONFIG_SND_HDA_INPUT_BEEP=y CONFIG_SND_HDA_INPUT_BEEP_MODE=1 CONFIG_SND_HDA_INPUT_JACK=y CONFIG_SND_HDA_CODEC_REALTEK=y CONFIG_SND_HDA_CODEC_HDMI=y CONFIG_SND_HDA_GENERIC=y CONFIG_SND_HDA_POWER_SAVE=y CONFIG_SND_HDA_POWER_SAVE_DEFAULT=300 CONFIG_SND_USB=y CONFIG_SND_USB_AUDIO=m My .config can be downloaded here: http://ompldr.org/vYzJteg/config I have a four core Intel Core i5 2500 CPU with an external NVIDIA GPU. MSI are enabled: $ grep -i msi /proc/interrupts 40: 0 0 0 0 PCI-MSI-edge PCIe PME 41: 0 0 0 0 PCI-MSI-edge PCIe PME 42: 0 0 0 0 PCI-MSI-edge PCIe PME 43: 0 0 0 0 PCI-MSI-edge PCIe PME 44: 0 0 0 0 PCI-MSI-edge PCIe PME 45: 0 0 0 0 PCI-MSI-edge PCIe PME 46: 0 0 0 0 PCI-MSI-edge PCIe PME 47: 98749 0 0 0 PCI-MSI-edge ahci 48: 0 0 0 0 PCI-MSI-edge ahci 49: 1 0 0 0 PCI-MSI-edge xhci_hcd 50: 0 0 0 0 PCI-MSI-edge xhci_hcd 51: 0 0 0 0 PCI-MSI-edge xhci_hcd 52: 0 0 0 0 PCI-MSI-edge xhci_hcd 53: 0 0 0 0 PCI-MSI-edge xhci_hcd 54: 6247643 0 0 0 PCI-MSI-edge eth0 55: 1 0 0 0 PCI-MSI-edge xhci_hcd 56: 0 0 0 0 PCI-MSI-edge xhci_hcd 57: 0 0 0 0 PCI-MSI-edge xhci_hcd 58: 0 0 0 0 PCI-MSI-edge xhci_hcd 59: 0 0 0 0 PCI-MSI-edge xhci_hcd 60: 775 1274821 0 0 PCI-MSI-edge snd_hda_intel 61: 72875 0 0 0 PCI-MSI-edge nvidia !!PCI Soundcards installed in the system !!-------------------------------------- 00:1b.0 Audio device: Intel Corporation 6 Series/C200 Series Chipset Family High Definition Audio Controller (rev 05)
Could you bisect, or at least find out which 3.0.x kernel starts showing the problem?
(In reply to comment #1) > Could you bisect, or at least find out which 3.0.x kernel starts showing the > problem? I will, but I've got a question - what's the stable tree GIT url?
git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git You can find a branch for each kernel version (e.g. linux-3.0.y).
(In reply to comment #3) > git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git > > You can find a branch for each kernel version (e.g. linux-3.0.y). My findings so far. $ git bisect log git bisect start # good: [02f8c6aee8df3cdc935e9bdd4f2d020306035dbe] Linux 3.0 git bisect good 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe # bad: [7a576d2dcd5807a7310032b380442eeba8c1c293] Linux 3.0.11 git bisect bad 7a576d2dcd5807a7310032b380442eeba8c1c293 # bad: [9185560808a0dc0432b130ca9d9965cb7ce052a6] isci: fix event-get pointer increment git bisect bad 9185560808a0dc0432b130ca9d9965cb7ce052a6 # good: [b3ff2fd377a0b593678af0082b6a2e4ecc3eec84] possible memory corruption on mount git bisect good b3ff2fd377a0b593678af0082b6a2e4ecc3eec84 # good: [a0be78ef93e0656339bf14feddc0e8afb2a86894] fs/9p: Fid is not valid after a failed clunk. git bisect good a0be78ef93e0656339bf14feddc0e8afb2a86894 Now quite randomly I hear quiet cracks so I'm not sure where to go from now, with the previous git session I didn't have them, but the original bug symptoms are worse then what I'm having right now. I guess it'll be `git bisect good/bad`? But how can I limit it to ALSA - there are just too many commits pending in `bisect`? - it can take ages to try the remaining ones.
You can limit the commits by specifying the paths. Start git-bisect with sound and include/sound paths. % git bisect start v3.0.11 v3.0 -- sound include/sound See git-bsect man page for details.
I considered that option, but there's one caveat I mentally bump into - what if some other changes in other kernel subsystems could cause these symptoms?
Then you'll lose ;) It might not be the exact cause. It can be a help to narrow down the area, though. With bisect, usually there aren't so many differences whether you specify the paths or not. Even without specifying paths, it'll up to 9 steps. So, not too many commits. The bisection in the stable tree is far much easier than the bisection during rc phase.
Damn, I arrive at the wrong commit: git bisect log git bisect start # good: [02f8c6aee8df3cdc935e9bdd4f2d020306035dbe] Linux 3.0 git bisect good 02f8c6aee8df3cdc935e9bdd4f2d020306035dbe # bad: [7a576d2dcd5807a7310032b380442eeba8c1c293] Linux 3.0.11 git bisect bad 7a576d2dcd5807a7310032b380442eeba8c1c293 # bad: [9185560808a0dc0432b130ca9d9965cb7ce052a6] isci: fix event-get pointer increment git bisect bad 9185560808a0dc0432b130ca9d9965cb7ce052a6 # good: [b3ff2fd377a0b593678af0082b6a2e4ecc3eec84] possible memory corruption on mount git bisect good b3ff2fd377a0b593678af0082b6a2e4ecc3eec84 # good: [a0be78ef93e0656339bf14feddc0e8afb2a86894] fs/9p: Fid is not valid after a failed clunk. git bisect good a0be78ef93e0656339bf14feddc0e8afb2a86894 # bad: [b73077a5fce232f3e95099f3bd9c084ab320aa85] ixgbe: fix possible null buffer error git bisect bad b73077a5fce232f3e95099f3bd9c084ab320aa85 # good: [7edcab441920647c6ffec304451e11bc18ff1b11] mfd: Fix value of WM8994_CONFIGURE_GPIO git bisect good 7edcab441920647c6ffec304451e11bc18ff1b11 # good: [d5b1a08d0d0a73c716766275eb0c5648e143ca85] workqueue: lock cwq access in drain_workqueue git bisect good d5b1a08d0d0a73c716766275eb0c5648e143ca85 # good: [c3c24ca5a0a6bf57b2685c159e5c9c01df76dddb] USB: xhci: Set change bit when warm reset change is set. git bisect good c3c24ca5a0a6bf57b2685c159e5c9c01df76dddb # bad: [562960c731b9ffba8cd200be8d38f5f793b23d74] Fix the conflict between rwpidforward and rw mount options git bisect bad 562960c731b9ffba8cd200be8d38f5f793b23d74 from now on - everything is bad. # bad: [e9bfcbffb7b26065a2b467e29bb6c7ec83d17646] ALSA: hda/realtek - Fix auto-mute with HP+LO configuration git bisect bad e9bfcbffb7b26065a2b467e29bb6c7ec83d17646 # bad: [bdba777a08cfe193f8c4a5cbb8382549db932171] iwlagn: fix command queue timeout git bisect bad bdba777a08cfe193f8c4a5cbb8382549db932171 which gives me: git bisect bad bdba777a08cfe193f8c4a5cbb8382549db932171 is the first bad commit commit bdba777a08cfe193f8c4a5cbb8382549db932171 Author: Johannes Berg <johannes.berg@intel.com> Date: Mon Sep 12 12:09:10 2011 -0700 iwlagn: fix command queue timeout At this point I don't know what to do :( I bet you can check what commits are included in the last three "bads" by following the same git bisect procedure.
Are you using the headphone/line-out auto-mute feature? The commit [e9bfcbffb: ALSA: hda/realtek - Fix auto-mute with HP+LO configuration] fixes the line-out auto-mute, but when the machine has a bad jack-detection mechanism in hardware, it can lead to the bogus auto-mute behavior. Try to turn off "Auto-Mute Mode".
(In reply to comment #9) > Are you using the headphone/line-out auto-mute feature? > The commit [e9bfcbffb: ALSA: hda/realtek - Fix auto-mute with HP+LO > configuration] fixes the line-out auto-mute, but when the machine has a bad > jack-detection mechanism in hardware, it can lead to the bogus auto-mute > behavior. > > Try to turn off "Auto-Mute Mode". You were right, this option is enabled here (but I never enabled it manually so it looks like it's driver's defaults) but I have usual speakers connected to the green audio output of my motherboard so I'm kinda surprised that this bug affects me. Besides those clicks, pops and pauses occur _during_ playback, so I cannot understand what the point of this (mis)feature is if it interferes with things it shouldn't affect in the first place. This bug report can be safely closed, even though the corresponding feature (auto mute) wreaks havoc with audio playback on my sound card. Now what about bug 42654?
The auto-mute feature is useful on most of machines (especially laptops) where the jack-detection unsolicited events are properly sent and handled. But some machines have bad hardware implementations, unfortunately, resulting in the flickering outputs due to frequent bogus jack-detection events. The bug 42654 can't be resolved unless you get Windows source code :) You don't know whether the volume attenuation is done in software or not. There might be some special vendor-specific verbs, but it's vendor's secret and never published. The current Linux driver provides what the codec gives generically. If it has to be more, blame the codec chip vendor not to provide the hardware attributes correctly.
FWIW, I fixed the upstream code (for 3.4 kernel) not to create this superfluous auto-mute switch for your device.
(In reply to comment #12) > FWIW, I fixed the upstream code (for 3.4 kernel) not to create this > superfluous > auto-mute switch for your device. Thank you! Even though I've fixed this problem for myself by turning off the auto-mute switch, other people with similar configurations will be relieved when their audio playback gets automagically fixed. ))
A patch referencing this bug report has been merged in Linux v3.4-rc1: commit 1565cc358585be40608b46f18f7ac431a1aae2bc Author: Takashi Iwai <tiwai@suse.de> Date: Mon Feb 13 12:03:25 2012 +0100 ALSA: hda - Add another jack-detection suppression for ASUS ALC892