• Takashi Iwai's avatar
    ALSA: pcsp - Fix locking messes in snd-pcsp · 96c7d478
    Takashi Iwai authored
    snd-pcsp driver takes chip->substream_lock together with PCM substream
    lock.  These are even mixed up with hrtimer's lock, resulting in messy
    lock depencies.  Right now, snd-pcsp driver resolves the deadlock by
    using HRTIMER_CB_SOFTIRQ.  However, this isn't nice for a really fast
    path like bit-flipping.
    
    This patch introduces a tasklet for PCM period handling so that the
    hrtimer callback can be handled fast.  This also reduce the use of
    chip->substream_lock to avoid deadlocks.  It's still used in pointer
    callback, but even this could be removed with a proper barrier.
    
    Another good solution is to introduce async trigger callback.  But,
    this will involve with a major rewrite of the PCM core code, so I
    take first this easy fix.
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    96c7d478
pcsp.c 5.31 KB