On Mon, Jan 8, 2018 at 2:08 PM, houlong wei <houlong.wei@xxxxxxxxxxxx> wrote: > Hi Jassi, > > Sorry for reply so late. > According to previous discussion, there are two methods to move > dma_map_single() outside of spin_lock. > (1) put in mtk-cmdq-helper.c, as described by HS on 2017-02-09. > > I think a trade-off solution is to put in mtk-cmdq-helper.c. > > Although it is a mailbox client, it is not a CMDQ client. > > We can include mailbox_controller.h in mtk-cmdq-helper.c (instead of > mtk-cmdq.h), and then map dma at cmdq_pkt_flush_async before > mbox_send_message. > > > pkt->pa_base = dma_map_single(client->chan->mbox->dev, pkt->va_base, > > pkt->cmd_buf_size, DMA_TO_DEVICE); > (2) schedule a tasklet in send_data(). > > After internal discussion with HS and other experts, now we prefer > method (1). > How do you think about it? > I don't exactly see how you mean but please remember send_data() callback is supposed to be atomic ... it is protected by spin_lock_irqsave/restore in drivers/mailbox/mailbox.c:msg_submit() BTW, how many requests max can be queued in the GCE h/w buffer? And since it's been over a year now, could you please resubmit after checking for checkpatch with the --strict option? Thanks. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html