From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark yao Subject: Re: [PATCH 1/2] drm/rockchip: create the fake mmap offset during gem creation Date: Tue, 10 Nov 2015 17:26:10 +0800 Message-ID: <5641B832.4070506@rock-chips.com> References: <4982827.0pnZflEOSR@phil> <56418C07.60208@rock-chips.com> <5676968.2ELIqayQry@phil> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <5676968.2ELIqayQry@phil> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Heiko Stuebner Cc: linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org List-Id: linux-rockchip.vger.kernel.org T24gMjAxNeW5tDEx5pyIMTDml6UgMTQ6NDYsIEhlaWtvIFN0dWVibmVyIHdyb3RlOgo+IEhpIE1h cmssCj4KPiBBbSBEaWVuc3RhZywgMTAuIE5vdmVtYmVyIDIwMTUsIDE0OjE3OjQzIHNjaHJpZWIg TWFyayB5YW86Cj4+IEhpIEhlaWtvCj4+ICAgICAgICBJIGRvbid0IHRoaW5rIHRoaXMgcGF0Y2gg aXMgbmVlZGVkIGZvciByb2NrY2hpcCBkcm0sIHNpbmNlCj4+IHJvY2tjaGlwIGRybSBvbmx5IHVz ZSBrbXMuCj4+IEkgc2F3IHRoZSBkaXNjdXNzaW9uIGFib3V0ICgiZHJtL2V4eW5vczogY3JlYXRl IGEgZmFrZSBtbWFwIG9mZnNldCB3aXRoCj4+IGdlbSBjcmVhdGlvbiIpLAo+PiBJbmtpIHNhaWQg dGhhdDogIlRoaXMgcGF0Y2ggbWFrZXMgZHJtX2dlbV9jcmVhdGVfbW1hcF9vZmZzZXQgdG8gYmUK Pj4gY2FsbGVkIGV2ZW4gaW4gY2FzZSBvZgo+PiBub3QgdXNpbmcgZHVtYiogaW50ZXJmYWNlcy4g SS5lLiwgZXh5bm9zX2RybV9nZW1fY3JlYXRlX2lvY3RsIC0+Cj4+IGV4eW5vc19kcm1fZ2VtX21t YXAiCj4+Cj4+IFNvIEkgdGhpbmsgdGhpcyBwYXRjaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHJv Y2tjaGlwIGRybS4KPiBvayA6LSkgLiBJJ20gbm90IHRoYXQga25vd2xlZGdhYmxlIHdoZW4gaXQg Y29tZXMgdG8gZHJtIGFuZCBqdXN0IGZvdW5kIHRoYXQKPiBzaW1pbGFyIGNoYW5nZSBpbiBleHlu b3Mgd2hpbGUgc2VhcmNoaW5nIGZvciB0aGUgZG1hIGlzc3VlLgo+Cj4gU28gd2UgY2FuIGRyb3Ag dGhpcyBwYXRjaCBhbmQgeW91IGNvdWxkIGp1c3QgbWVyZ2UgcGF0Y2gyIGFzIHdlbGwgYXMKPgo+ IAlbUkVTRU5EIFBBVENIXSBkcm0vcm9ja2NoaXA6IHZvcDogQ29ycmVjdCBlbmFibGVkIGNsb2Nr cyBkdXJpbmcgc2V0dXAKPgo+IGZyb20gU2pvZXJkIGFuZCBzZW5kIHRoZXNlIHR3byB0byBEYXZl IGFzIGZpeGVzIGZvciA0LjQ/Cj4KUmlnaHQsIHRoYXQgcGF0Y2ggaXMgbmVlZGVkLCBhbmQgYWxz byBJIHdhbnQgdG8gbGFuZCB0d28gcGF0Y2g6CiAgICAgICBbUkVTRU5EIFBBVENIXSBkcm0vcm9j a2NoaXA6IGltcG9ydCBkbWFfYnVmIHRvIGdlbQogICAgICAgW1BBVENIXSBSZXZlcnQgImRybS9y b2NrY2hpcDogQ29udmVydCB0aGUgcHJvYmUgZnVuY3Rpb24gdG8gdGhlIApnZW5lcmljIGRybV9v Zl9jb21wb25lbnRfcHJvYmUoKSIKCj4gVGhhbmtzCj4gSGVpa28KPgo+Pgo+PiBPbiAyMDE15bm0 MTHmnIgxMOaXpSAwMzo1MCwgSGVpa28gU3R1ZWJuZXIgd3JvdGU6Cj4+PiBTaW1pbGFybHkgdG8g dGhlIGVxdWl2YWxlbnQgZXh5bm9zLWZpeCBpbiBjb21taXQgNDhjZjUzZjQzNDNhCj4+PiAoImRy bS9leHlub3M6IGNyZWF0ZSBhIGZha2UgbW1hcCBvZmZzZXQgd2l0aCBnZW0gY3JlYXRpb24iKSB0 aGUgcm9ja2NoaXAKPj4+IGRybSBkcml2ZXIgYWxzbyBjYWxscyB0aGUgZHJtX2dlbV9jcmVhdGVf bW1hcF9vZmZzZXQgZmFrZS1vZmZzZXQgY3JlYXRpb24KPj4+IG9uIGV2ZXJ5IGludm9jYXRpb24g b2Ygcm9ja2NoaXBfZ2VtX2R1bWJfbWFwX29mZnNldC4KPj4+Cj4+PiBNb3ZlIHRoYXQgdG8gdGhl IGNyZWF0aW9uIG9mIHRoZSBnZW0gdG8gb25seSBjcmVhdGUgdGhhdCBvZmZzZXQgb25jZS4KPj4+ Cj4+PiBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTdHVlYm5lciA8aGVpa29Ac250ZWNoLmRlPgo+Pj4g LS0tCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5jIHwg MTIgKysrKysrLS0tLS0tCj4+PiAgICAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2 IGRlbGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX2dlbS5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2No aXBfZHJtX2dlbS5jCj4+PiBpbmRleCA0YWIyZjIwLi5lNTBkMTEzIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYwo+Pj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0uYwo+Pj4gQEAgLTEyNiw4ICsx MjYsMTQgQEAgc3RydWN0IHJvY2tjaGlwX2dlbV9vYmplY3QgKgo+Pj4gICAgCWlmIChyZXQpCj4+ PiAgICAJCWdvdG8gZXJyX2ZyZWVfcmtfb2JqOwo+Pj4gICAgCj4+PiArCXJldCA9IGRybV9nZW1f Y3JlYXRlX21tYXBfb2Zmc2V0KG9iaik7Cj4+PiArCWlmIChyZXQpCj4+PiArCQlnb3RvIGVycl9m cmVlX2J1ZjsKPj4+ICsKPj4+ICAgIAlyZXR1cm4gcmtfb2JqOwo+Pj4gICAgCj4+PiArZXJyX2Zy ZWVfYnVmOgo+Pj4gKwlyb2NrY2hpcF9nZW1fZnJlZV9idWYocmtfb2JqKTsKPj4+ICAgIGVycl9m cmVlX3JrX29iajoKPj4+ICAgIAlrZnJlZShya19vYmopOwo+Pj4gICAgCXJldHVybiBFUlJfUFRS KHJldCk7Cj4+PiBAQCAtMTk2LDcgKzIwMiw2IEBAIGludCByb2NrY2hpcF9nZW1fZHVtYl9tYXBf b2Zmc2V0KHN0cnVjdCBkcm1fZmlsZQo+ICpmaWxlX3ByaXYsCj4+PiAgICAJCQkJIHVpbnQ2NF90 ICpvZmZzZXQpCj4+PiAgICB7Cj4+PiAgICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7Cj4+ PiAtCWludCByZXQ7Cj4+PiAgICAKPj4+ICAgIAlvYmogPSBkcm1fZ2VtX29iamVjdF9sb29rdXAo ZGV2LCBmaWxlX3ByaXYsIGhhbmRsZSk7Cj4+PiAgICAJaWYgKCFvYmopIHsKPj4+IEBAIC0yMDQs MTQgKzIwOSw5IEBAIGludCByb2NrY2hpcF9nZW1fZHVtYl9tYXBfb2Zmc2V0KHN0cnVjdCBkcm1f ZmlsZQo+ICpmaWxlX3ByaXYsCj4+PiAgICAJCXJldHVybiAtRUlOVkFMOwo+Pj4gICAgCX0KPj4+ ICAgIAo+Pj4gLQlyZXQgPSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldChvYmopOwo+Pj4gLQlp ZiAocmV0KQo+Pj4gLQkJZ290byBvdXQ7Cj4+PiAtCj4+PiAgICAJKm9mZnNldCA9IGRybV92bWFf bm9kZV9vZmZzZXRfYWRkcigmb2JqLT52bWFfbm9kZSk7Cj4+PiAgICAJRFJNX0RFQlVHX0tNUygi b2Zmc2V0ID0gMHglbGx4XG4iLCAqb2Zmc2V0KTsKPj4+ICAgIAo+Pj4gLW91dDoKPj4+ICAgIAlk cm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOwo+Pj4gICAgCj4+PiAgICAJ cmV0dXJuIDA7Cj4+Cj4+Cj4KPgo+CgoKLS0gCu+8rWFyayBZYW8KCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRy aS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: mark.yao@rock-chips.com (Mark yao) Date: Tue, 10 Nov 2015 17:26:10 +0800 Subject: [PATCH 1/2] drm/rockchip: create the fake mmap offset during gem creation In-Reply-To: <5676968.2ELIqayQry@phil> References: <4982827.0pnZflEOSR@phil> <56418C07.60208@rock-chips.com> <5676968.2ELIqayQry@phil> Message-ID: <5641B832.4070506@rock-chips.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On 2015?11?10? 14:46, Heiko Stuebner wrote: > Hi Mark, > > Am Dienstag, 10. November 2015, 14:17:43 schrieb Mark yao: >> 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. > ok :-) . I'm not that knowledgable when it comes to drm and just found that > similar change in exynos while searching for the dma issue. > > So we can drop this patch and you could just merge patch2 as well as > > [RESEND PATCH] drm/rockchip: vop: Correct enabled clocks during setup > > from Sjoerd and send these two to Dave as fixes for 4.4? > Right, that patch is needed, and also I want to land two patch: [RESEND PATCH] drm/rockchip: import dma_buf to gem [PATCH] Revert "drm/rockchip: Convert the probe function to the generic drm_of_component_probe()" > Thanks > Heiko > >> >> On 2015?11?10? 03:50, Heiko Stuebner wrote: >>> Similarly to the equivalent exynos-fix in commit 48cf53f4343a >>> ("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