[alsa-devel] [PATCH v5] ASoC: omap-mcbsp: Add PM QoS support for McBSP to prevent glitches

Tony Lindgren tony at atomide.com
Mon Jan 9 20:21:23 CET 2017


* Peter Ujfalusi <peter.ujfalusi at ti.com> [170109 05:13]:
> On 01/05/2017 03:59 AM, Matt Ranostay wrote:
> > We can get audio errors if hitting deeper idle states on omaps:
> > 
> > [alsa.c:230] error: Fatal problem with alsa output, error -5.
> > [audio.c:614] error: Error in writing audio (Input/output error?)!
> > 
> > This seems to happen with off mode idle enabled as power for the
> > whole SoC may get cut off between filling the McBSP fifo using DMA.
> > While active DMA blocks deeper idle states in hardware, McBSP
> > activity does not seem to do so.
> > 
> > Basing the QoS latency calculation on the FIFO size, threshold,
> > sample rate, and channels.
> 
> Looks good to me, thank you!
> 
> Acked-by: Peter Ujfalusi <peter.ujfalusi at ti.com>

Noticed the following about 10 seconds into playing an mp3 file with
mpg123 though:

BUG: sleeping function called from invalid context at kernel/locking/rwsem.c:21
in_atomic(): 1, irqs_disabled(): 128, pid: 351, name: mpg123
2 locks held by mpg123/351:
 #0:  (snd_pcm_link_rwlock){......}, at: [<bf0667dc>] snd_pcm_stream_lock+0x20/0x50 [snd_pcm]
 #1:  (&(&substream->self_group.lock)->rlock){......}, at: [<bf06dd70>] snd_pcm_lib_write1+0x1ac/0x30c [snd_pc]
irq event stamp: 20082
hardirqs last  enabled at (20081): [<bf0668e8>] snd_pcm_stream_unlock_irq+0x20/0x28 [snd_pcm]
hardirqs last disabled at (20082): [<bf066834>] snd_pcm_stream_lock_irq+0x28/0x38 [snd_pcm]
softirqs last  enabled at (17808): [<c013f124>] __do_softirq+0x240/0x564
softirqs last disabled at (17767): [<c013f7e0>] irq_exit+0xe4/0x160
CPU: 0 PID: 351 Comm: mpg123 Not tainted 4.10.0-rc2-next-20170109+ #726
Hardware name: Generic OMAP36xx (Flattened Device Tree)
[<c0110238>] (unwind_backtrace) from [<c010c2a8>] (show_stack+0x10/0x14)
[<c010c2a8>] (show_stack) from [<c04be4a0>] (dump_stack+0xac/0xe0)
[<c04be4a0>] (dump_stack) from [<c0165d60>] (___might_sleep+0x17c/0x2a4)
[<c0165d60>] (___might_sleep) from [<c0879444>] (down_read+0x20/0x90)
[<c0879444>] (down_read) from [<c015f62c>] (__blocking_notifier_call_chain+0x2c/0x60)
[<c015f62c>] (__blocking_notifier_call_chain) from [<c015f678>] (blocking_notifier_call_chain+0x18/0x20)
[<c015f678>] (blocking_notifier_call_chain) from [<c01a1c98>] (pm_qos_update_target+0x120/0x34c)
[<c01a1c98>] (pm_qos_update_target) from [<bf247188>] (omap_mcbsp_start+0x2a8/0x334 [snd_soc_omap_mcbsp])
[<bf247188>] (omap_mcbsp_start [snd_soc_omap_mcbsp]) from [<bf24533c>] (omap_mcbsp_dai_trigger+0x5c/0x90 [snd_)
[<bf24533c>] (omap_mcbsp_dai_trigger [snd_soc_omap_mcbsp]) from [<bf09bfa0>] (soc_pcm_trigger+0xd0/0x11c [snd_)
[<bf09bfa0>] (soc_pcm_trigger [snd_soc_core]) from [<bf066368>] (snd_pcm_action_single+0x38/0x78 [snd_pcm])
[<bf066368>] (snd_pcm_action_single [snd_pcm]) from [<bf06de8c>] (snd_pcm_lib_write1+0x2c8/0x30c [snd_pcm])
[<bf06de8c>] (snd_pcm_lib_write1 [snd_pcm]) from [<bf06df30>] (snd_pcm_lib_write+0x60/0x74 [snd_pcm])
[<bf06df30>] (snd_pcm_lib_write [snd_pcm]) from [<bf0692bc>] (snd_pcm_playback_ioctl1+0x38c/0x6f0 [snd_pcm])
[<bf0692bc>] (snd_pcm_playback_ioctl1 [snd_pcm]) from [<c02cbab8>] (do_vfs_ioctl+0x90/0xa0c)
[<c02cbab8>] (do_vfs_ioctl) from [<c02cc4a0>] (SyS_ioctl+0x6c/0x7c)
[<c02cc4a0>] (SyS_ioctl) from [<c01079a8>] (__sys_trace_return+0x0/0x10)

Any ideas?

Tony


More information about the Alsa-devel mailing list