[alsa-devel] Duplicate wake-ups in pcm_lib.c

Raymond Yau superquad.vortex2 at gmail.com
Tue Jan 26 08:25:34 CET 2010


2010/1/20 Jaroslav Kysela <perex at perex.cz>

> On Wed, 20 Jan 2010, Raymond Yau wrote:
>
>  2010/1/13 Jaroslav Kysela <perex at perex.cz>
>>
>>  On Wed, 13 Jan 2010, Raymond Yau wrote:
>>>
>>>  2010/1/11 Jaroslav Kysela <perex at perex.cz>
>>>
>>>>
>>>>  On Mon, 11 Jan 2010, Raymond Yau wrote:
>>>>
>>>>>
>>>>>  2010/1/7 Jaroslav Kysela <perex at perex.cz>
>>>>>
>>>>>
>>>>>>  On Wed, 6 Jan 2010, pl bossart wrote:
>>>>>>
>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> The improved and more clean fix in now in my tree:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> http://git.alsa-project.org/?p=alsa-kernel.git;a=commitdiff;h=1250932e48d3b698415b1f04775433cf1da688d6
>>>>>>>
>>>>>>> Note that you should apply these 4 patches (in reverse order):
>>>>>>>
>>>>>>> 4: ALSA: pcm_lib - optimize wake_up() calls for PCM I/O
>>>>>>> 3: ALSA: pcm_lib - cleanup & merge hw_ptr update functions
>>>>>>> 2: ALSA: pcm_lib - add possibility to log last 10 DMA ring buffer
>>>>>>> positions
>>>>>>> 1: ALSA: pcm_lib.c - convert second xrun_debug() parameter to use
>>>>>>> defines
>>>>>>>
>>>>>>> Patch #3 should definitely fix problems with large avail or delay
>>>>>>> values
>>>>>>> reported in PA. I finally figured the culprit (and decide to cleanup
>>>>>>> all
>>>>>>> relevant code rather do just another workaround). In other words, new
>>>>>>> hw_ptr pointer should never be less than previous one now.
>>>>>>>
>>>>>>>                                             Jaroslav
>>>>>>>
>>>>>>> -
>>>>>>>
>>>>>>>
>>>>>>>  using alsa-driver-1.0.22.1.1.g231e3.14.g812cb and Fedora 12 inside
>>>>>>>
>>>>>> Virtual
>>>>>> Box
>>>>>>
>>>>>> aplay -D plughw:0,0 /usr/share/sounds/alsa/*.wav
>>>>>>
>>>>>> "Front Left" sound as "Front Front Left" when playing "Front_left.wav"
>>>>>>
>>>>>> only when echo 4 > /proc/asound/card0/pcm0p/xrun_debug
>>>>>>
>>>>>>
>>>>>>  Thanks for testing.
>>>>>
>>>>> It means that with other values is no sound generated?
>>>>>
>>>>> Could you use value 29 for xrun_debug and report all sound related
>>>>> messages
>>>>> from dmesg output after playback of "Front_left.wav"?
>>>>>
>>>>>                                      Jaroslav
>>>>>
>>>>> -----
>>>>>
>>>>>
>>>>
>>>>
>>>> do you mean 27 instead of 29 since the echo only occur when the value
>>>> contain XRUN_DEBUG_JIFFIESCHECK  bit  ?
>>>>
>>>> aplay -Dplughw:0,0 and mplayer -ao alsa:device=hw=0,0 work normal
>>>>
>>>> except when the value of xrun_debug contain XRUN_DEBUG_JIFFIESCHECK  bit
>>>>  (
>>>> same result for the three  virtual box audio backend oss, pulseaudio and
>>>> alsa )
>>>>
>>>>
>>> Ok, I understand now. It would be better to use value 101 then - to see
>>> last 10 ring buffer positions when jiffies correction occurs. Also, get
>>> latest snapshot - there is a fix for jiffies check. Thanks.
>>>
>>>                                       Jaroslav
>>>
>>>
>>>  alsa-driver-1.0.22.1.1.g231e3.61.g42efb
>> copying file alsa/kernel/core/sound.c
>> patchfile file sound.c
>> Hunk# 12  FAILED at 518
>> 1 out of 12 hunks FAILED -- saving rejects to file sound.c.rej
>>
>>
>> seem related to
>>
>> http://git.alsa-project.org/?p=alsa-kernel.git;a=commit;h=8a822c23333694e7d1e6ccb15267e251af6d8f4f
>>
>
> The problem should be fixed now. Thanks for the notice.
>
>                                                Jaroslav
>
> -----
>
>
alsa-lib/test/pcm --verbose -Dhw -c2 -r48000 -f440  --method write_and_poll

How do I know the double wake up is fixed ?

do it mean that fixing this bug will fix the pulseaudio problem ?

do I need to test with other format , rate, channel, and sine wave frequency
?

the echo still exist only XRUN_DEBUG_JIFFIESCHECK  bit is set


More information about the Alsa-devel mailing list