From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thierry Reding Subject: Re: [PATCH 5/6] drm/armada: gem: Use drm_clflush_*() functions Date: Fri, 10 Apr 2015 14:44:29 +0200 Message-ID: <20150410124427.GA32473@ulmo.nvidia.com> References: <1428590049-20357-1-git-send-email-thierry.reding@gmail.com> <1428590049-20357-5-git-send-email-thierry.reding@gmail.com> <20150410120802.GE12732@n2100.arm.linux.org.uk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1041189180==" Return-path: In-Reply-To: <20150410120802.GE12732@n2100.arm.linux.org.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Russell King - ARM Linux Cc: Arnd Bergmann , Catalin Marinas , intel-gfx@lists.freedesktop.org, Will Deacon , dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: intel-gfx@lists.freedesktop.org --===============1041189180== Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="bp/iNruPH9dso1Pn" Content-Disposition: inline --bp/iNruPH9dso1Pn Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Fri, Apr 10, 2015 at 01:08:02PM +0100, Russell King - ARM Linux wrote: > On Thu, Apr 09, 2015 at 04:34:08PM +0200, Thierry Reding wrote: > > diff --git a/drivers/gpu/drm/armada/armada_gem.c b/drivers/gpu/drm/arma= da/armada_gem.c > > index 580e10acaa3a..c2d4414031ab 100644 > > --- a/drivers/gpu/drm/armada/armada_gem.c > > +++ b/drivers/gpu/drm/armada/armada_gem.c > > @@ -453,19 +453,14 @@ armada_gem_prime_map_dma_buf(struct dma_buf_attac= hment *attach, > > sg_set_page(sg, page, PAGE_SIZE, 0); > > } > > =20 > > - if (dma_map_sg(attach->dev, sgt->sgl, sgt->nents, dir) =3D=3D 0) { > > - num =3D sgt->nents; > > - goto release; > > - } > > + drm_clflush_sg(sgt); > > } else if (dobj->page) { > > /* Single contiguous page */ > > if (sg_alloc_table(sgt, 1, GFP_KERNEL)) > > goto free_sgt; > > =20 > > sg_set_page(sgt->sgl, dobj->page, dobj->obj.size, 0); > > - > > - if (dma_map_sg(attach->dev, sgt->sgl, sgt->nents, dir) =3D=3D 0) > > - goto free_table; > > + drm_clflush_sg(sgt); > > } else if (dobj->linear) { > > /* Single contiguous physical region - no struct page */ > > if (sg_alloc_table(sgt, 1, GFP_KERNEL)) > > @@ -480,7 +475,6 @@ armada_gem_prime_map_dma_buf(struct dma_buf_attachm= ent *attach, > > release: > > for_each_sg(sgt->sgl, sg, num, i) > > page_cache_release(sg_page(sg)); > > - free_table: > > sg_free_table(sgt); > > free_sgt: > > kfree(sgt); > > @@ -494,9 +488,6 @@ static void armada_gem_prime_unmap_dma_buf(struct d= ma_buf_attachment *attach, > > struct armada_gem_object *dobj =3D drm_to_armada_gem(obj); > > int i; > > =20 > > - if (!dobj->linear) > > - dma_unmap_sg(attach->dev, sgt->sgl, sgt->nents, dir); > > - >=20 > I'm really wonder where this is the right thing to do. I think it isn't the right thing to do in this case indeed. Both Tegra and MSM were using this pattern to make sure that caches are invalidated upon allocation of memory from shmemfs, but I now realize that for the Armada driver this isn't the case. Thierry --bp/iNruPH9dso1Pn Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJVJ8WoAAoJEN0jrNd/PrOhz1cP/1priKppu2fpclTjtyDEF+ss uS57pSejHb/DR5GvpLv8qUbkq3tBnOF5r7XEDapnWEnU5KMTNBVDYzsSJN54g7+U WZr7lf3gWSBBW/Hwp9OclrAoMlVkXyAicbl4vzigp3cs7ZyrJ1RNtMMZazIGWbvL spXKbxLbkSXL8yaB8I89nWd+5c7CI7SrSImGDLpA0W2XN8Xj/UNSYHRQemlvZZ5P yL+y4v2u9/+Qlh+3NWGM2zO8YDctC7nO5EBiNXZCDKCCVZ4xMDuPuoFvPXeBnCbp Ssbe7BbuZr2mUW8ktb0AzAcC0TzWd6Fw+B2APdVMW9aGDDkXWVZlc5vOUtI7q54A wooMrR7oOZUTVbR6uJF2qBciO2QW1NQCpTEMyYfFw/7wrFpWHU3HKw55o1zVAoA/ CDv9E0U58ItSAKmbwktpnps8cpt+fcXJSMDVazRdX6eFU6mZCM2AwSHR1q66n4bW gd5IwPdEcHDoEC9yKz5S5A6RyP2a3qeu31SmfhZFoVdpr7rEVsrJXyRJID30aYCs 5Hq9BBv8ycRQR9GQ/7iD8ZHly2L41deFc1f6CtGbUpAOqcUrPYqsDxNaSkbeoN7n 5O/vOSyxBmfYi2oOuvo7FwETy7e9/iv/IN0TVUxzRGNHygJt5jJGC+vPE8EPzVPk dPJexYKSY3nyZ1iFvlzi =eBh2 -----END PGP SIGNATURE----- --bp/iNruPH9dso1Pn-- --===============1041189180== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK --===============1041189180==--