Thread (17 messages) 17 messages, 7 authors, 2015-08-31

[PATCH v4 2/2] dma: Add Xilinx zynqmp dma engine driver support

From: Vinod Koul <hidden>
Date: 2015-08-23 14:06:19
Also in: linux-devicetree, lkml

On Thu, Aug 20, 2015 at 12:01:27PM +0530, punnaiah choudary kalluri wrote:
On Thu, Aug 20, 2015 at 11:43 AM, Vinod Koul [off-list ref] wrote:
quoted
On Thu, Aug 06, 2015 at 08:49:33AM +0530, Punnaiah Choudary Kalluri wrote:
quoted
+     list_for_each_entry_safe(desc, next, &chan->done_list, node) {
+             dma_async_tx_callback callback;
+             void *callback_param;
+
+             list_del(&desc->node);
+
+             callback = desc->async_tx.callback;
+             callback_param = desc->async_tx.callback_param;
+             if (callback) {
+                     if (in_interrupt())
+                             spin_unlock_bh(&chan->lock);
+                     else
+                             spin_unlock(&chan->lock);
This looks bad!
Why would callback be called from different context. It should only be
invoked from your tasklet
During the terminate call, driver need to clean up the existing BDs so that time
this function will be called from the thread or process context in
addition to the
tasklet context.

DO you have any suggestion here ?
Yes you need to terminate but you don't need to invoke user for terminate
flow. It is not expected.
Terminate flow expect youu to clean the channels

-- 
~Vinod
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help