From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robin Murphy Subject: Re: [PATCH v3 3/8] dma-mapping: add dma_{map,unmap}_resource Date: Wed, 10 Feb 2016 10:25:07 +0000 Message-ID: <56BB1003.8020409@arm.com> References: <1455065878-11906-1-git-send-email-niklas.soderlund+renesas@ragnatech.se> <1455065878-11906-4-git-send-email-niklas.soderlund+renesas@ragnatech.se> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1455065878-11906-4-git-send-email-niklas.soderlund+renesas-1zkq55x86MTxsAP9Fp7wbw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Errors-To: iommu-bounces-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org To: =?UTF-8?Q?Niklas_S=c3=b6derlund?= , linux-renesas-soc-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org, linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dmaengine-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, iommu-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org Cc: linux-arch-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, arnd-r2nGTMty4D4@public.gmane.org, geert+renesas-gXvu3+zWzMSzQB+pC5nmwQ@public.gmane.org, vinod.koul-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org, linus.walleij-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org, laurent.pinchart-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org, dan.j.williams-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org List-Id: linux-arch.vger.kernel.org SGkgTmlrbGFzLAoKVGhhbmtzIGZvciBkb2luZyB0aGlzLCBpdCBsb29rcyBnb29kLiBKdXN0IGEg Y291cGxlIG9mIG1pbm9yIGNvbW1lbnRzIG9uIAp0aGlzIGFuZCB0aGUgbmV4dCBwYXRjaC4uLgoK T24gMTAvMDIvMTYgMDA6NTcsIE5pa2xhcyBTw7ZkZXJsdW5kIHdyb3RlOgo+IE1hcC9Vbm1hcCBh IGRldmljZSByZXNvdXJjZSBmcm9tIGEgcGh5c2ljYWwgYWRkcmVzcy4gSWYgbm8gZG1hX21hcF9v cHMKPiBtZXRob2QgaXMgYXZhaWxhYmxlIHRoZSBvcGVyYXRpb24gaXMgYSBuby1vcC4KPgo+IFNp Z25lZC1vZmYtYnk6IE5pa2xhcyBTw7ZkZXJsdW5kIDxuaWtsYXMuc29kZXJsdW5kK3JlbmVzYXNA cmFnbmF0ZWNoLnNlPgo+IC0tLQo+ICAgaW5jbHVkZS9saW51eC9kbWEtbWFwcGluZy5oIHwgMjcg KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICAxIGZpbGUgY2hhbmdlZCwgMjcgaW5zZXJ0 aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLW1hcHBpbmcuaCBiL2lu Y2x1ZGUvbGludXgvZG1hLW1hcHBpbmcuaAo+IGluZGV4IGUzYWJhNGUuLjIxYmY5ODYgMTAwNjQ0 Cj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtbWFwcGluZy5oCj4gKysrIGIvaW5jbHVkZS9saW51 eC9kbWEtbWFwcGluZy5oCj4gQEAgLTIxNiw2ICsyMTYsMzMgQEAgc3RhdGljIGlubGluZSB2b2lk IGRtYV91bm1hcF9wYWdlKHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBhZGRyLAo+ICAg CWRlYnVnX2RtYV91bm1hcF9wYWdlKGRldiwgYWRkciwgc2l6ZSwgZGlyLCBmYWxzZSk7Cj4gICB9 Cj4KPiArc3RhdGljIGlubGluZSBkbWFfYWRkcl90IGRtYV9tYXBfcmVzb3VyY2Uoc3RydWN0IGRl dmljZSAqZGV2LAo+ICsJCQkJCSAgcGh5c19hZGRyX3QgcGh5c19hZGRyLAo+ICsJCQkJCSAgc2l6 ZV90IHNpemUsCj4gKwkJCQkJICBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIsCj4gKwkJCQkJ ICBzdHJ1Y3QgZG1hX2F0dHJzICphdHRycykKPiArewo+ICsJc3RydWN0IGRtYV9tYXBfb3BzICpv cHMgPSBnZXRfZG1hX29wcyhkZXYpOwo+ICsKPiArCUJVR19PTighdmFsaWRfZG1hX2RpcmVjdGlv bihkaXIpKTsKCkkgdGhpbmsgaXQgd291bGQgYmUgd29ydGggYWxzbyBoYXZpbmcgdGhlIHNhbWUg aW52ZXJzZSBwZm5fdmFsaWQoKSBjaGVjayAKYXMgaW9yZW1hcCgpIGhlcmUsIHRvIG1ha2Ugc3Vy ZSB0aGlzIGlzIHNpbWlsYXJseSBoYXJkIHRvIG1pc3VzZS4KClJvYmluLgoKPiArCWlmIChvcHMt Pm1hcF9yZXNvdXJjZSkKPiArCQlyZXR1cm4gb3BzLT5tYXBfcmVzb3VyY2UoZGV2LCBwaHlzX2Fk ZHIsIHNpemUsIGRpciwgYXR0cnMpOwo+ICsKPiArCXJldHVybiBwaHlzX2FkZHI7Cj4gK30KPiAr Cj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkbWFfdW5tYXBfcmVzb3VyY2Uoc3RydWN0IGRldmljZSAq ZGV2LCBkbWFfYWRkcl90IGFkZHIsCj4gKwkJCQkgICAgICBzaXplX3Qgc2l6ZSwgZW51bSBkbWFf ZGF0YV9kaXJlY3Rpb24gZGlyLAo+ICsJCQkJICAgICAgc3RydWN0IGRtYV9hdHRycyAqYXR0cnMp Cj4gK3sKPiArCXN0cnVjdCBkbWFfbWFwX29wcyAqb3BzID0gZ2V0X2RtYV9vcHMoZGV2KTsKPiAr Cj4gKwlCVUdfT04oIXZhbGlkX2RtYV9kaXJlY3Rpb24oZGlyKSk7Cj4gKwlpZiAob3BzLT51bm1h cF9yZXNvdXJjZSkKPiArCQlvcHMtPnVubWFwX3Jlc291cmNlKGRldiwgYWRkciwgc2l6ZSwgZGly LCBhdHRycyk7Cj4gKwo+ICt9Cj4gKwo+ICAgc3RhdGljIGlubGluZSB2b2lkIGRtYV9zeW5jX3Np bmdsZV9mb3JfY3B1KHN0cnVjdCBkZXZpY2UgKmRldiwgZG1hX2FkZHJfdCBhZGRyLAo+ICAgCQkJ CQkgICBzaXplX3Qgc2l6ZSwKPiAgIAkJCQkJICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb24gZGly KQo+CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppb21t dSBtYWlsaW5nIGxpc3QKaW9tbXVAbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0cHM6Ly9s aXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vaW9tbXU= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com ([217.140.101.70]:45949 "EHLO foss.arm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1757414AbcBJKZM (ORCPT ); Wed, 10 Feb 2016 05:25:12 -0500 Subject: Re: [PATCH v3 3/8] dma-mapping: add dma_{map,unmap}_resource References: <1455065878-11906-1-git-send-email-niklas.soderlund+renesas@ragnatech.se> <1455065878-11906-4-git-send-email-niklas.soderlund+renesas@ragnatech.se> From: Robin Murphy Message-ID: <56BB1003.8020409@arm.com> Date: Wed, 10 Feb 2016 10:25:07 +0000 MIME-Version: 1.0 In-Reply-To: <1455065878-11906-4-git-send-email-niklas.soderlund+renesas@ragnatech.se> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Sender: linux-arch-owner@vger.kernel.org List-ID: To: =?UTF-8?Q?Niklas_S=c3=b6derlund?= , linux-renesas-soc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, dmaengine@vger.kernel.org, iommu@lists.linux-foundation.org Cc: linux-arch@vger.kernel.org, arnd@arndb.de, geert+renesas@glider.be, vinod.koul@intel.com, linus.walleij@linaro.org, laurent.pinchart@ideasonboard.com, dan.j.williams@intel.com Message-ID: <20160210102507.7h40AUfi5nfGd9DzeoUBHzrvjd5mCJnX0bptoWdPq58@z> Hi Niklas, Thanks for doing this, it looks good. Just a couple of minor comments on this and the next patch... On 10/02/16 00:57, Niklas Söderlund wrote: > Map/Unmap a device resource from a physical address. If no dma_map_ops > method is available the operation is a no-op. > > Signed-off-by: Niklas Söderlund > --- > include/linux/dma-mapping.h | 27 +++++++++++++++++++++++++++ > 1 file changed, 27 insertions(+) > > diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h > index e3aba4e..21bf986 100644 > --- a/include/linux/dma-mapping.h > +++ b/include/linux/dma-mapping.h > @@ -216,6 +216,33 @@ static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, > debug_dma_unmap_page(dev, addr, size, dir, false); > } > > +static inline dma_addr_t dma_map_resource(struct device *dev, > + phys_addr_t phys_addr, > + size_t size, > + enum dma_data_direction dir, > + struct dma_attrs *attrs) > +{ > + struct dma_map_ops *ops = get_dma_ops(dev); > + > + BUG_ON(!valid_dma_direction(dir)); I think it would be worth also having the same inverse pfn_valid() check as ioremap() here, to make sure this is similarly hard to misuse. Robin. > + if (ops->map_resource) > + return ops->map_resource(dev, phys_addr, size, dir, attrs); > + > + return phys_addr; > +} > + > +static inline void dma_unmap_resource(struct device *dev, dma_addr_t addr, > + size_t size, enum dma_data_direction dir, > + struct dma_attrs *attrs) > +{ > + struct dma_map_ops *ops = get_dma_ops(dev); > + > + BUG_ON(!valid_dma_direction(dir)); > + if (ops->unmap_resource) > + ops->unmap_resource(dev, addr, size, dir, attrs); > + > +} > + > static inline void dma_sync_single_for_cpu(struct device *dev, dma_addr_t addr, > size_t size, > enum dma_data_direction dir) >