On Fri, 25 Sep 2009, Daniel Mack wrote:
On Fri, Sep 25, 2009 at 04:22:15PM +0100, Mark Hills wrote:
The driver documentation states that local interrupts are already disabled when trigger() is called, so only a spinlock is required.
Hmm. I assume you tested them well. But I remember to have had quite some trouble at this point on SMP machines and ended up with that irqsave code. However, if you're sure that fixes a bug or is not necessary, let's take the patches and I'll test them once I'm back home around mid Oct.
I did check both non and SMP machines, and it corresponds to the docs. I also removed the patches to verify I could reproduce the original problems.
As I missed off the the Signed-off-by, I'll not rush to resubmit them; let's wait until you have also tested them.
Btw - your Signed-off-by: is missing on all of them :)
Thanks, Daniel
sound/usb/caiaq/audio.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/sound/usb/caiaq/audio.c b/sound/usb/caiaq/audio.c index 121af06..ce193a5 100644 --- a/sound/usb/caiaq/audio.c +++ b/sound/usb/caiaq/audio.c @@ -72,15 +72,14 @@ static void deactivate_substream(struct snd_usb_caiaqdev *dev, struct snd_pcm_substream *sub) {
- unsigned long flags;
- spin_lock_irqsave(&dev->spinlock, flags);
spin_lock(&dev->spinlock);
if (sub->stream == SNDRV_PCM_STREAM_PLAYBACK) dev->sub_playback[sub->number] = NULL; else dev->sub_capture[sub->number] = NULL;
- spin_unlock_irqrestore(&dev->spinlock, flags);
- spin_unlock(&dev->spinlock);
}
static int
1.6.4.4