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