Re: [linux-audio-dev] Re: [announce] [patch] Voluntary Kernel Preemption Patch

Takashi Iwai
2004-07-14T10:48:19Z

At Wed, 14 Jul 2004 05:36:31 -0400,
Lee Revell wrote:
>
> On Wed, 2004-07-14 at 04:51, Takashi Iwai wrote:
> > At Tue, 13 Jul 2004 17:45:30 -0400,
> > Lee Revell wrote:
> > >
> > > On Tue, 2004-07-13 at 17:29, Andrew Morton wrote:
> > > > Lee Revell <rlrevell@joe-job.com> wrote:
> > > > >
> > > > > Would this explain these? When running JACK with settings that need
> > > > > sub-millisecond latencies, I get them when I generate any load at all on
> > > > > the system (typing, switching windows, etc). I also get lots of these
> > > > > if I run JACK from an X terminal, but very few if I run it from a text
> > > > > console, even if X is running in the background.
> > > > >
> > > > > Jul 13 14:36:16 mindpipe kernel: ALSA /usr/src/alsa-cvs-1.0.5/alsa-driver/alsa-kernel/core/pcm_lib.c:199: Unexpected hw_pointer value [1] (stream = 0, delta: -25, max jitter = 32): wrong interrupt acknowledge?
> > > >
> > > > I'm wondering what this message actually means. "Unexpected hw_pointer
> > > > value"?
> > > >
> > > > Does this actually indicate an underrun, or is the debug code screwy?
> > >
> > > Not sure. Here is what Takashi had to say about it:
> > >
> > > "The message appears when an unexpected DMA pointer is read in the
> > > interrupt handler. Either the handling of irq was delayed more than
> > > the buffer size, an irq is issued at the wrong timing, or the DMA
> > > pointer reigster is somehow screwed up.
> > >
> > > Since you're using quite small buffer, I guess the former case."
> > >
> > > My response:
> > >
> > > "I thought this was what an XRUN was, when the handling of the irq is
> > > delayed more than the buffer size. Sometimes these messages are
> > > associated with XRUNs, sometimes not."
> > >
> > > Haven't heard back yet.
> > >
> > > Is it possible that I am simply pushing my hardware past its limits?
> > > Keep in mind this is a 600Mhz C3 processor.
> >
> > I think yes. 32 frames / 44.1kHz = 0.725 ms.
> >
>
> I am runnign at 48kHz so it's actually 0.666 ms. But, the average
> response is quite good, 20-30 microseconds. The spikes are infrequent
> enought that I think this is achievable. If not then 64 frames
> definitely is.
>
> So what is the difference between the above message and an XRUN? I
> thought an XRUN occurred when the handling of the IRQ is delayed more
> than the buffer size.

Yes, XRUN is so.

The message above is not directly related with XRUN.
It appears when an unexpected DMA pointer is returned. This can
happen e.g. when the irq handler is called at the wrong timing,
or the register returns a bogus value.

Takashi