From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/2] drm/rockchip: create the fake mmap offset during gem creation Date: Mon, 16 Nov 2015 17:21:15 +0100 Message-ID: <20151116162115.GB16848@phenom.ffwll.local> References: <4982827.0pnZflEOSR@phil> <56418C07.60208@rock-chips.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <56418C07.60208@rock-chips.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Mark yao Cc: linux-rockchip@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org List-Id: linux-rockchip.vger.kernel.org T24gVHVlLCBOb3YgMTAsIDIwMTUgYXQgMDI6MTc6NDNQTSArMDgwMCwgTWFyayB5YW8gd3JvdGU6 Cj4gSGkgSGVpa28KPiAgICAgIEkgZG9uJ3QgdGhpbmsgdGhpcyBwYXRjaCBpcyBuZWVkZWQgZm9y IHJvY2tjaGlwIGRybSwgc2luY2Ugcm9ja2NoaXAgZHJtCj4gb25seSB1c2Uga21zLgo+IEkgc2F3 IHRoZSBkaXNjdXNzaW9uIGFib3V0ICgiZHJtL2V4eW5vczogY3JlYXRlIGEgZmFrZSBtbWFwIG9m ZnNldCB3aXRoIGdlbQo+IGNyZWF0aW9uIiksCj4gSW5raSBzYWlkIHRoYXQ6ICJUaGlzIHBhdGNo IG1ha2VzIGRybV9nZW1fY3JlYXRlX21tYXBfb2Zmc2V0IHRvIGJlIGNhbGxlZAo+IGV2ZW4gaW4g Y2FzZSBvZgo+IG5vdCB1c2luZyBkdW1iKiBpbnRlcmZhY2VzLiBJLmUuLCBleHlub3NfZHJtX2dl bV9jcmVhdGVfaW9jdGwgLT4KPiBleHlub3NfZHJtX2dlbV9tbWFwIgo+IAo+IFNvIEkgdGhpbmsg dGhpcyBwYXRjaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHJvY2tjaGlwIGRybS4KPiAKPiAKPiBP biAyMDE15bm0MTHmnIgxMOaXpSAwMzo1MCwgSGVpa28gU3R1ZWJuZXIgd3JvdGU6Cj4gPlNpbWls YXJseSB0byB0aGUgZXF1aXZhbGVudCBleHlub3MtZml4IGluIGNvbW1pdCA0OGNmNTNmNDM0M2EK ClRoaXMgZXh5bm9zIHBhdGNoIGFuZCB5b3VyIHJvY2tjaGlwIHBhdGNoIGxvb2sgcmVhbGx5IHN0 cmFuZ2UgLSB0aGUgcG9pbnQKX2lzXyB0byBvbmx5IGNyZWF0ZSBmYWtlIG1tYXAgb2Zmc2V0IHdo ZW4gc29tZW9uZSBhY3R1YWxseSB0cmllcyB0byBtbWFwIGEKYm8uIGRybV9nZW1fY3JlYXRlX21t YXBfb2Zmc2V0IGludGVybmFsbHkgKGFuZCBpbiBhIHJhY2UtZnJlZSBtYW5uZXIpCmNoZWNrcyB3 aGV0aGVyIGl0J3MgYmVlbiBjYWxsZWQgYWxyZWFkeSwgc28gaXQncyBwZXJmZWN0bHkgc2FmZSB0 byBjYWxsCm11dGxpcGxlIHRpbWVzLgoKSW1vIGRyb3AgdGhpcyAoYW5kIHByb2JhYmx5IHJldmVy dCA0OGNmNTNmNDM0M2EgYXMgdW5qdXN0aWZpZWQpLgotRGFuaWVsCgo+ID4oImRybS9leHlub3M6 IGNyZWF0ZSBhIGZha2UgbW1hcCBvZmZzZXQgd2l0aCBnZW0gY3JlYXRpb24iKSB0aGUgcm9ja2No aXAKPiA+ZHJtIGRyaXZlciBhbHNvIGNhbGxzIHRoZSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNl dCBmYWtlLW9mZnNldCBjcmVhdGlvbgo+ID5vbiBldmVyeSBpbnZvY2F0aW9uIG9mIHJvY2tjaGlw X2dlbV9kdW1iX21hcF9vZmZzZXQuCj4gPgo+ID5Nb3ZlIHRoYXQgdG8gdGhlIGNyZWF0aW9uIG9m IHRoZSBnZW0gdG8gb25seSBjcmVhdGUgdGhhdCBvZmZzZXQgb25jZS4KPiA+Cj4gPlNpZ25lZC1v ZmYtYnk6IEhlaWtvIFN0dWVibmVyIDxoZWlrb0BzbnRlY2guZGU+Cj4gPi0tLQo+ID4gIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2VtLmMgfCAxMiArKysrKystLS0tLS0K PiA+ICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+ID4K PiA+ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jCj4gPmluZGV4 IDRhYjJmMjAuLmU1MGQxMTMgMTAwNjQ0Cj4gPi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hp cC9yb2NrY2hpcF9kcm1fZ2VtLmMKPiA+KysrIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV9nZW0uYwo+ID5AQCAtMTI2LDggKzEyNiwxNCBAQCBzdHJ1Y3Qgcm9ja2NoaXBf Z2VtX29iamVjdCAqCj4gPiAgCWlmIChyZXQpCj4gPiAgCQlnb3RvIGVycl9mcmVlX3JrX29iajsK PiA+KwlyZXQgPSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldChvYmopOwo+ID4rCWlmIChyZXQp Cj4gPisJCWdvdG8gZXJyX2ZyZWVfYnVmOwo+ID4rCj4gPiAgCXJldHVybiBya19vYmo7Cj4gPitl cnJfZnJlZV9idWY6Cj4gPisJcm9ja2NoaXBfZ2VtX2ZyZWVfYnVmKHJrX29iaik7Cj4gPiAgZXJy X2ZyZWVfcmtfb2JqOgo+ID4gIAlrZnJlZShya19vYmopOwo+ID4gIAlyZXR1cm4gRVJSX1BUUihy ZXQpOwo+ID5AQCAtMTk2LDcgKzIwMiw2IEBAIGludCByb2NrY2hpcF9nZW1fZHVtYl9tYXBfb2Zm c2V0KHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ID4gIAkJCQkgdWludDY0X3QgKm9mZnNl dCkKPiA+ICB7Cj4gPiAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOwo+ID4tCWludCByZXQ7 Cj4gPiAgCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChkZXYsIGZpbGVfcHJpdiwgaGFuZGxl KTsKPiA+ICAJaWYgKCFvYmopIHsKPiA+QEAgLTIwNCwxNCArMjA5LDkgQEAgaW50IHJvY2tjaGlw X2dlbV9kdW1iX21hcF9vZmZzZXQoc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4gPiAgCQly ZXR1cm4gLUVJTlZBTDsKPiA+ICAJfQo+ID4tCXJldCA9IGRybV9nZW1fY3JlYXRlX21tYXBfb2Zm c2V0KG9iaik7Cj4gPi0JaWYgKHJldCkKPiA+LQkJZ290byBvdXQ7Cj4gPi0KPiA+ICAJKm9mZnNl dCA9IGRybV92bWFfbm9kZV9vZmZzZXRfYWRkcigmb2JqLT52bWFfbm9kZSk7Cj4gPiAgCURSTV9E RUJVR19LTVMoIm9mZnNldCA9IDB4JWxseFxuIiwgKm9mZnNldCk7Cj4gPi1vdXQ6Cj4gPiAgCWRy bV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3VubG9ja2VkKG9iaik7Cj4gPiAgCXJldHVybiAwOwo+ IAo+IAo+IC0tIAo+IO+8rWFyayBZYW8KPiAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2 ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: daniel@ffwll.ch (Daniel Vetter) Date: Mon, 16 Nov 2015 17:21:15 +0100 Subject: [PATCH 1/2] drm/rockchip: create the fake mmap offset during gem creation In-Reply-To: <56418C07.60208@rock-chips.com> References: <4982827.0pnZflEOSR@phil> <56418C07.60208@rock-chips.com> Message-ID: <20151116162115.GB16848@phenom.ffwll.local> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Tue, Nov 10, 2015 at 02:17:43PM +0800, Mark yao wrote: > Hi Heiko > I don't think this patch is needed for rockchip drm, since rockchip drm > only use kms. > I saw the discussion about ("drm/exynos: create a fake mmap offset with gem > creation"), > Inki said that: "This patch makes drm_gem_create_mmap_offset to be called > even in case of > not using dumb* interfaces. I.e., exynos_drm_gem_create_ioctl -> > exynos_drm_gem_mmap" > > So I think this patch doesn't make sense for rockchip drm. > > > On 2015?11?10? 03:50, Heiko Stuebner wrote: > >Similarly to the equivalent exynos-fix in commit 48cf53f4343a This exynos patch and your rockchip patch look really strange - the point _is_ to only create fake mmap offset when someone actually tries to mmap a bo. drm_gem_create_mmap_offset internally (and in a race-free manner) checks whether it's been called already, so it's perfectly safe to call mutliple times. Imo drop this (and probably revert 48cf53f4343a as unjustified). -Daniel > >("drm/exynos: create a fake mmap offset with gem creation") the rockchip > >drm driver also calls the drm_gem_create_mmap_offset fake-offset creation > >on every invocation of rockchip_gem_dumb_map_offset. > > > >Move that to the creation of the gem to only create that offset once. > > > >Signed-off-by: Heiko Stuebner > >--- > > drivers/gpu/drm/rockchip/rockchip_drm_gem.c | 12 ++++++------ > > 1 file changed, 6 insertions(+), 6 deletions(-) > > > >diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c > >index 4ab2f20..e50d113 100644 > >--- a/drivers/gpu/drm/rockchip/rockchip_drm_gem.c > >+++ b/drivers/gpu/drm/rockchip/rockchip_drm_gem.c > >@@ -126,8 +126,14 @@ struct rockchip_gem_object * > > if (ret) > > goto err_free_rk_obj; > >+ ret = drm_gem_create_mmap_offset(obj); > >+ if (ret) > >+ goto err_free_buf; > >+ > > return rk_obj; > >+err_free_buf: > >+ rockchip_gem_free_buf(rk_obj); > > err_free_rk_obj: > > kfree(rk_obj); > > return ERR_PTR(ret); > >@@ -196,7 +202,6 @@ int rockchip_gem_dumb_map_offset(struct drm_file *file_priv, > > uint64_t *offset) > > { > > struct drm_gem_object *obj; > >- int ret; > > obj = drm_gem_object_lookup(dev, file_priv, handle); > > if (!obj) { > >@@ -204,14 +209,9 @@ int rockchip_gem_dumb_map_offset(struct drm_file *file_priv, > > return -EINVAL; > > } > >- ret = drm_gem_create_mmap_offset(obj); > >- if (ret) > >- goto out; > >- > > *offset = drm_vma_node_offset_addr(&obj->vma_node); > > DRM_DEBUG_KMS("offset = 0x%llx\n", *offset); > >-out: > > drm_gem_object_unreference_unlocked(obj); > > return 0; > > > -- > ?ark Yao > > > _______________________________________________ > dri-devel mailing list > dri-devel at lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch