2.6.16-rt11 and low-latency audio xruns (interrupt latencyproblem?)

From: Valin, Jean-Marc (ICT Centre, Marsfield)
Date: Thu Mar 30 2006 - 00:11:10 EST


Hi,

I'm getting xruns while trying to do low-latency capture/playback of
audio. After enabling the alsa debug options, I'm seeing errors like
these in my logs:

[66205.003000] Unexpected hw_pointer value [1] (stream = 0, delta: -3,
max jitter = 16): wrong interrupt acknowledge?
[66205.003000] [<f0ae2ec1>] snd_pcm_period_elapsed+0x136/0x27a
[snd_pcm] (8)
[66205.003000] [<f0af7780>] snd_intel8x0_interrupt+0x18d/0x1e5
[snd_intel8x0] (20)
[66205.003000] [<b013495b>] handle_IRQ_event+0x4e/0xb6 (44)
[66205.003000] [<b0135443>] thread_edge_irq+0x6f/0xc4 (48)
[66205.003000] [<b0135519>] do_irqd+0x0/0x8a (16)
[66205.003000] [<b01354d8>] do_hardirq+0x40/0x81 (4)
[66205.003000] [<b0135575>] do_irqd+0x5c/0x8a (16)
[66205.003000] [<b01261f6>] kthread+0x79/0xa3 (16)
[66205.003000] [<b012617d>] kthread+0x0/0xa3 (24)
[66205.003000] [<b0101319>] kernel_thread_helper+0x5/0xb (16)
[66205.004000] XRUN: pcmC0D0p
[66205.004000] [<f0ae2f72>] snd_pcm_period_elapsed+0x1e7/0x27a
[snd_pcm] (8)
[66205.004000] [<f0af7780>] snd_intel8x0_interrupt+0x18d/0x1e5
[snd_intel8x0] (24)
[66205.004000] [<b013495b>] handle_IRQ_event+0x4e/0xb6 (44)
[66205.004000] [<b0135443>] thread_edge_irq+0x6f/0xc4 (48)
[66205.004000] [<b0135519>] do_irqd+0x0/0x8a (16)
[66205.004000] [<b01354d8>] do_hardirq+0x40/0x81 (4)
[66205.004000] [<b0135575>] do_irqd+0x5c/0x8a (16)
[66205.004000] [<b01261f6>] kthread+0x79/0xa3 (16)
[66205.004000] [<b012617d>] kthread+0x0/0xa3 (24)
[66205.004000] [<b0101319>] kernel_thread_helper+0x5/0xb (16)

The only info I could get after searching for a while is that the
"Unexpected hw_pointer value" *could* be related to the audio interrupt
being serviced too late
(http://www.ussg.iu.edu/hypermail/linux/kernel/0407.1/1613.html).
However, I'm running the audio IRQ (IRQ 16) at priority 99 and my app at
98 (I also tried the opposite and get the same result). In this case,
I'm running with two periods of 16 samples each (48 kHz), but I've seen
that error occur with periods up to 64 samples.

Any idea how to fix/further investigate that? My machine is a Dell D600
laptop with a Pentium-M 2.13 GHz, which I'm running at full-speed
(performance governor). Kernel is stock 2.6.16 + rt11 patch. Distro is
Ubuntu 5.10, kernel is not tainted.

Thanks,

Jean-Marc

P.S. Please include me in CC since I'm not subscribed to lkml.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/