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

Matt Ranostay matt at ranostay.consulting
Mon Jan 9 22:46:01 CET 2017


On Mon, Jan 9, 2017 at 11:21 AM, Tony Lindgren <tony at atomide.com> wrote:
> * 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:
>

Didn't notice that happening for me. But haven't rebased for the last
couple days.
Does this happen 100% of the time?

> 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