[PATCH 0/3] staging: line6: more POD HD300 fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Stefan Hajnoczi <stefanha@xxxxxxxxx>

Note: this patch applies against Markus' line6linux driver tree:
https://line6linux.svn.sourceforge.net/svnroot/line6linux/driver/trunk

After sending initial patches for POD HD300 support there was still work
remaining.  Although PulseAudio seemed to work fine both jack and native ALSA
applications did not work well.

There was a missing case to skip MIDI postprocessing for the HD300/HD500.  I
have added it in Patch 1.

I also discovered that isochronous read and write endpoint max packet sizes do
not match on the POD HD300.  This causes URB submission to fail with -EMSGSIZE
unless we choose the smaller of the two as the common size.  Patch 2 addresses
this.

Finally, the driver does not implement stream stop correctly since it frees the
audio buffers before waiting for all URBs to complete.  This can result in
memory corruption when capture URBs are still in-flight.  Patch 3 moves the
audio buffer allocation/freeing out of the stream start/stop callbacks to
prevent this race condition.

With these patches both jack and native ALSA applications work fine.  I also
ran a stress test which prepares/starts/stops streams in a loop.  This test
triggered kernel panics before applying Patch 3.

Stefan Hajnoczi (3):
  staging: line6: add missing HD300/HD500 MIDI postprocessing cases
  staging: line6: use smallest iso ep packet size
  staging: line6: alloc/free buffers in hw_params/hw_free

 capture.c  |   15 +++++++++++++++
 midi.c     |    2 ++
 pcm.c      |   35 ++++++++---------------------------
 playback.c |   15 +++++++++++++++
 4 files changed, 40 insertions(+), 27 deletions(-)

-- 
1.7.7.1

_______________________________________________
devel mailing list
devel@xxxxxxxxxxxxxxxxxxxxxx
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel


[Index of Archives]     [Linux Driver Backports]     [DMA Engine]     [Linux GPIO]     [Linux SPI]     [Video for Linux]     [Linux USB Devel]     [Linux Coverity]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux