At Wed, 6 Feb 2008 12:09:35 +0100, Grzegorz Chwesewicz wrote:
From Andrew Morton:
"Recording the bug in the alsa bugtracker is good, and Takashi is actively working on the bug, and he is the best guy to do that.
So I don't think anything else really needs to be done here - please work with him on solving this?"
######################################
Hi, Takashi, so can You help ? Below is my letter to LKML (in case You haven't read it yet).
Don't worry, I've been reading it, but had too little time to track down.
Problem description:
I have a problem with recording on HP nx6325 notebook (hda-intel with AD1981HD codec). Playback works fine, but after 5-10 min. of recording microphone stops working (playback works all the time). Unloading and loading sound modules fixes problem, but only for another 5-10 minutes. This problem exists from more than a year (at least from 2.6.17.13 kernel). In [1] we came to conclusion that this problem is ralated to IRQ sharing [2] (HDA Intel is on the same IRQ as sata_sil).
How to reproduce the problem:
- on one console run arecord and see the output (You should see some garbage)
- on another console run cat /etc/*
- at once arecord on the first console gives no output
So, doing lot of hdd I/O occurs problem with mic.
What had been done:
- I tried to boot Fedora 8 livecd and unload sata_sil, so that hda_intel was
the only device using IRQ. After that microphone was working all the time (I left recording for all night, and in the morning I had almost 2h voip chat using Twinkle). So when sata_sil is unloaded, and hda-intel is not sharing the IRQ, the mic. is working all the time. Look at [3] to see /proc/interrupts output when laptop is booted from livecd, and mic works.
- I tried to load hda-intel with enable_msi=1 (my RS480 chip is on blacklist,
but I've removed it). Module loads and playback works ok, but problem with mic still exists. Difference here is that when recording stops to work the playback also stops to work (without MSI only mic stops to work). Look at [4] to see /proc/interrupts output when module is loaded with enable_msi=1.
Question:
What information I need to provide to help resolving the problem ? Where to start, because I've run out of ideas :) ?
This is a pretty nasty bug. Appreantly this seems specific to ATI chipset, and I'm not sure whether it's AD1981HD specific, too. (Due to the fact that it's related with IRQ, I guess rather not specific to the codec chip.)
It's nice that you already tried MSI as I suggsted. Could you check whether the irq handler still gets called? For example, try the patch below and see whether the message appears.
thanks,
Takashi
diff -r 17f90f301932 pci/hda/hda_intel.c --- a/pci/hda/hda_intel.c Thu Feb 07 12:06:32 2008 +0100 +++ b/pci/hda/hda_intel.c Thu Feb 07 12:54:48 2008 +0100 @@ -922,6 +922,10 @@ static irqreturn_t azx_interrupt(int irq status = azx_readl(chip, INTSTS); if (status == 0) { spin_unlock(&chip->reg_lock); + if (chip->msi) { + printk(KERN_DEBUG "XXX hda-intel: status=0\n"); + return IRQ_HANDLED; + } return IRQ_NONE; }