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.
thanks,
Takashi
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