[alsa-devel] [PATCH 0/9] ALSA: compress offfload fixes

Takashi Iwai tiwai at suse.de
Tue Aug 27 12:46:36 CEST 2013

At Tue, 27 Aug 2013 12:10:30 +0530,
Vinod Koul wrote:
> Hi Takashi,
> Here is the patch series which fixes various issues being reported by users (out
> of tree sadly)
> The first three and and last one are marked to stable as would like these to be
> fixed in older kernels as well. It would be good if you can send them as fixes
> to linus for 3.11.

Sorry, no go.  If it's only about out-of-tree drivers, it's even
questionable whether it worth for stable kernel, because we have no
real test case for our own.

> Rest can go in the merge window
> Fixes:
>  - using lock for all operation was a very bad idead. This is bad as some of the
>    ioctls like drain, partial drain can be time consuming and thus prevent any
> other operation while these are ongoing like Pause, Stop or timestamp query, so
> fix this be removing bunch of ioctls not to use device lock.

Although not all of them need locks, it's easier to manage in most
cases to perform in the lock.  For drain or such operation, you can
simply unlock and re-lock in the call itself, as your patch in the
series does.

>  - Now we dont have lock for pointer updates so this maybe racy, so use lock
>    for doing lowest level calculation. 

Similarly, introducing yet another lock would just choke you neck.

>  - As disscused on our sample rate problem, lets move to use rate values and I
>    will fix the lib too. Since the driver are not upstream the impact of this
> change wont be huge.

I see no code touching sampling_rate field.

>  - Plus few fix like use snprintf, state chacks for pause, write etc..

I don't like to merge irrelevant space changes into a patch if it's a
fix patch, especially if it's targeted to stable.  The fix is the fix.
Please separate.



> Vinod Koul (9):
>   ALSA: Compress - dont use lock for all ioctls
>   ALSA: compress: use mutex in drain
>   ASoC: compress: dont aquire lock for draining states
>   ALSA: compress: use snprint instread of sprintf
>   ALSA: compres: wakeup the poll thread on pause
>   ALSA: compress: dont write when stream is paused
>   ALSA: compress: allow write when stream is setup
>   ALSA: compress: call pointer callback and updates under a lock
>   ALSA: compress: use rate values for passing sampling rates
>  include/sound/compress_driver.h       |    2 +
>  include/uapi/sound/compress_offload.h |    2 +-
>  sound/core/compress_offload.c         |  140 +++++++++++++++++++++++++-------
>  sound/soc/soc-compress.c              |   10 +++
>  4 files changed, 122 insertions(+), 32 deletions(-)
> Thanks
> ~Vinod

More information about the Alsa-devel mailing list