From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [v5,2/6] dmaengine: fsl-qdma: Add qDMA controller driver for Layerscape SoCs From: Vinod Koul Message-Id: <20180605162854.GW16230@vkoul-mobl> Date: Tue, 5 Jun 2018 21:58:54 +0530 To: Wen He Cc: "dmaengine@vger.kernel.org" , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , Leo Li , Jiafei Pan , Jiaheng Fan List-ID: T24gMzEtMDUtMTgsIDAxOjU4LCBXZW4gSGUgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gK3N0YXRpYyB2 b2lkIGZzbF9xZG1hX2lzc3VlX3BlbmRpbmcoc3RydWN0IGRtYV9jaGFuICpjaGFuKSB7Cj4gPiA+ ID4gPiA+ID4gKwlzdHJ1Y3QgZnNsX3FkbWFfY2hhbiAqZnNsX2NoYW4gPSB0b19mc2xfcWRtYV9j aGFuKGNoYW4pOwo+ID4gPiA+ID4gPiA+ICsJc3RydWN0IGZzbF9xZG1hX3F1ZXVlICpmc2xfcXVl dWUgPSBmc2xfY2hhbi0+cXVldWU7Cj4gPiA+ID4gPiA+ID4gKwl1bnNpZ25lZCBsb25nIGZsYWdz Owo+ID4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gPiArCXNwaW5fbG9ja19pcnFzYXZlKCZmc2xf cXVldWUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsKPiA+ID4gPiA+ID4gPiArCXNwaW5fbG9jaygmZnNs X2NoYW4tPnZjaGFuLmxvY2spOwo+ID4gPiA+ID4gPiA+ICsJaWYgKHZjaGFuX2lzc3VlX3BlbmRp bmcoJmZzbF9jaGFuLT52Y2hhbikpCj4gPiA+ID4gPiA+ID4gKwkJZnNsX3FkbWFfZW5xdWV1ZV9k ZXNjKGZzbF9jaGFuKTsKPiA+ID4gPiA+ID4gPiArCXNwaW5fdW5sb2NrKCZmc2xfY2hhbi0+dmNo YW4ubG9jayk7Cj4gPiA+ID4gPiA+ID4gKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZmc2xfcXVl dWUtPnF1ZXVlX2xvY2ssIGZsYWdzKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gd2h5IGRvIHdl IG5lZWQgdHdvIGxvY2tzLCBhbmQgc2luY2UgeW91IGFyZSBkb2luZyB2Y2hhbiB3aHkKPiA+ID4g PiA+ID4gc2hvdWxkIHlvdSBhZGQgeW91ciBvd24gbG9jayBvbiB0b3AKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+Cj4gPiA+ID4gPiBZZXMsIHdlIG5lZWQgdHdvIGxvY2tzLgo+ID4gPiA+ID4gQXMgeW91 IGtub3csIHRoZSBRRE1BIHN1cHBvcnQgbXVsdGlwbGUgdmlydHVhbGl6ZWQgYmxvY2tzIGZvcgo+ ID4gPiA+ID4gbXVsdGktY29yZQo+ID4gPiA+IHN1cHBvcnQuCj4gPiA+ID4gPiBzbyB3ZSBuZWVk IHRvIG1ha2Ugc3VyZSB0aGF0IG11bGl0aS1jb3JlIGFjY2VzcyBpc3N1ZXMuCj4gPiA+ID4KPiA+ ID4gPiBidXQgd2h5IGNhbnQgeW91IHVzZSB2Y2hhbiBsb2NrIGZvciBhbGw/Cj4gPiA+ID4KPiA+ ID4KPiA+ID4gV2UgY2FuJ3Qgb25seSB1c2UgdmNoYW4gbG9jayBmb3IgYWxsLiBvdGhlcndpc2Ug ZW5xdWV1ZSBhY3Rpb24gd2lsbCBiZQo+ID4gaW50ZXJydXB0ZWQuCj4gPiAKPiA+IEkgdGhpbmsg aXQgaXMgcG9zc2libGUgdG8gdXNlIG9ubHkgdmNoYW4gbG9jawo+IAo+IEkgdHJpZWQgdGhhdCBp ZiBJIHVzZSBvbmx5IHZjaGFuIGxvY2sgdGhlbiBxZG1hIHdpbGwgYmUgY2FuJ3Qgd29yay4KPiBE byB5b3UgaGF2ZSBhIG90aGVyIGdvb2QgaWRlYT8KCmNhbiB5b3UgZXhwbGFpbiB0aGUgc2NlbmFy aW8uLi4K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Tue, 5 Jun 2018 21:58:54 +0530 From: Vinod Subject: Re: [v5 2/6] dmaengine: fsl-qdma: Add qDMA controller driver for Layerscape SoCs Message-ID: <20180605162854.GW16230@vkoul-mobl> References: <20180525111920.24498-1-wen.he_1@nxp.com> <20180525111920.24498-2-wen.he_1@nxp.com> <20180529070724.GE5666@vkoul-mobl> <20180529101954.GJ5666@vkoul-mobl> <20180530102744.GE16230@vkoul-mobl> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: To: Wen He Cc: "dmaengine@vger.kernel.org" , "robh+dt@kernel.org" , "devicetree@vger.kernel.org" , Leo Li , Jiafei Pan , Jiaheng Fan List-ID: On 31-05-18, 01:58, Wen He wrote: > > > > > > > +static void fsl_qdma_issue_pending(struct dma_chan *chan) { > > > > > > > + struct fsl_qdma_chan *fsl_chan = to_fsl_qdma_chan(chan); > > > > > > > + struct fsl_qdma_queue *fsl_queue = fsl_chan->queue; > > > > > > > + unsigned long flags; > > > > > > > + > > > > > > > + spin_lock_irqsave(&fsl_queue->queue_lock, flags); > > > > > > > + spin_lock(&fsl_chan->vchan.lock); > > > > > > > + if (vchan_issue_pending(&fsl_chan->vchan)) > > > > > > > + fsl_qdma_enqueue_desc(fsl_chan); > > > > > > > + spin_unlock(&fsl_chan->vchan.lock); > > > > > > > + spin_unlock_irqrestore(&fsl_queue->queue_lock, flags); > > > > > > > > > > > > why do we need two locks, and since you are doing vchan why > > > > > > should you add your own lock on top > > > > > > > > > > > > > > > > Yes, we need two locks. > > > > > As you know, the QDMA support multiple virtualized blocks for > > > > > multi-core > > > > support. > > > > > so we need to make sure that muliti-core access issues. > > > > > > > > but why cant you use vchan lock for all? > > > > > > > > > > We can't only use vchan lock for all. otherwise enqueue action will be > > interrupted. > > > > I think it is possible to use only vchan lock > > I tried that if I use only vchan lock then qdma will be can't work. > Do you have a other good idea? can you explain the scenario... -- ~Vinod