> > > Calling snd_pcm_avail/delay causes a syscall to the kernel, which > > communicates with the audio hardware, and can therefore be expensive > > on some cards. > > here is my benchmarking, I'm not super-confident in the results > > similar to Alexander, I am seeing an assertion immediately: > pulseaudio[2071]: Assertion 'frames > 0' failed at modules/alsa/alsa-sink.c:651, function mmap_write(). Aborting. > > not loading the suspend-on-idle module didn't help, instead I patched > - if (!after_avail && frames == 0) > + if (frames == 0) > break; > immediately before the assert(); not sure if this is correct > > snd_pcm_mmap_begin() which is called by pa_alsa_safe_mmap_begin() > explicitly states that frames may be set to 0 if no buffer is full -- so I > think 0 should NOT lead to an assertion > > I don't understand the meaning of after_avail; in > if (!after_avail && (int) sframes == -EAGAIN) > down a few lines, after_avail is always false!? > > anyway, above patch might have fixed the issue and I was able to do some > measurements on a beagleboard (ARMv7, OMAP3, TPS65950 PMIC audio), > Linux kernel 3.7 and PA shortly before the srbchannel patches... Even the driver use SNDRV_PCM_INFO_NO_PERIOD_WAKEUP which is necessary but no sufficient For timer schedulling, the driver need to report dma residue and it look like some omap cannot report DMA residue granularity Can your hardware report dma residue granularity? https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/soc/omap/omap-pcm.c static snd_pcm_uframes_t omap_pcm_pointer(struct snd_pcm_substream *substream) { snd_pcm_uframes_t offset; if (pcm_omap1510()) offset = snd_dmaengine_pcm_pointer_no_residue(substream); else offset = snd_dmaengine_pcm_pointer(substream); return offset; } https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/soc/soc-generic-dmaengine-pcm.c?id=93b943edfc5e439f7b843535e0bb0f7d2371f67f https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/soc/soc-generic-dmaengine-pcm.c?id=478028e088d6a94666d8a776be2cd2291faf3bbd -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20141002/a0bd3a46/attachment.html>