• Viresh Kumar's avatar
    dmaengine/dw_dmac: Replace spin_lock* with irqsave variants and enable submission from callback · 69cea5a0
    Viresh Kumar authored
    dmaengine routines can be called from interrupt context and with interrupts
    disabled.  Whereas spin_unlock_bh can't be called from such contexts. So this
    patch converts all spin_*_bh routines to irqsave variants.
    
    Also, spin_lock() used in tasklet is converted to irqsave variants, as tasklet
    can be interrupted, and dma requests from such interruptions may also call
    spin_lock.
    
    Now, submission from callbacks are permitted as per dmaengine framework. So we
    shouldn't hold any locks while calling callbacks. As locks were taken by parent
    routines, so releasing them before calling callbacks doesn't look clean enough.
    So, locks are taken inside all routine now, whereever they are required. And
    dwc_descriptor_complete is always called without taking locks.
    Signed-off-by: default avatarViresh Kumar <viresh.kumar@st.com>
    Signed-off-by: default avatarVinod Koul <vinod.koul@intel.com>
    69cea5a0
dw_dmac.c 40.1 KB