From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Zimmermann Subject: [PATCH v3 1/3] drm/vram: Add kmap ref-counting to GEM VRAM objects Date: Fri, 6 Sep 2019 10:52:12 +0200 Message-ID: <20190906085214.11677-2-tzimmermann@suse.de> References: <20190906085214.11677-1-tzimmermann@suse.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mx1.suse.de (mx2.suse.de [195.135.220.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id D7DBB6E1F7 for ; Fri, 6 Sep 2019 08:52:19 +0000 (UTC) In-Reply-To: <20190906085214.11677-1-tzimmermann@suse.de> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: daniel@ffwll.ch, noralf@tronnes.org, airlied@linux.ie, rong.a.chen@intel.com, feng.tang@intel.com, ying.huang@intel.com, sean@poorly.run, maxime.ripard@bootlin.com, maarten.lankhorst@linux.intel.com, dave@stgolabs.net, kraxel@redhat.com Cc: Thomas Zimmermann , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIGttYXAgYW5kIGt1bm1hcCBvcGVyYXRpb25zIG9mIEdFTSBWUkFNIGJ1ZmZlcnMgY2FuIG5v dyBiZSBjYWxsZWQKaW4gaW50ZXJsZWF2aW5nIHBhaXJzLiBUaGUgZmlyc3QgY2FsbCB0byBkcm1f Z2VtX3ZyYW1fa21hcCgpIG1hcHMgdGhlCmJ1ZmZlcidzIG1lbW9yeSB0byBrZXJuZWwgYWRkcmVz cyBzcGFjZSBhbmQgdGhlIGZpbmFsIGNhbGwgdG8KZHJtX2dlbV92cmFtX2t1bm1hcCgpIHVubWFw cyB0aGUgbWVtb3J5LiBJbnRlcm1lZGlhdGUgY2FsbHMgdG8gdGhlc2UKZnVuY3Rpb25zIGluY3Jl bWVudCBvciBkZWNyZW1lbnQgYSByZWZlcmVuY2UgY291bnRlci4KClRoaXMgY2hhbmdlIGFsbG93 cyBmb3Iga2VlcGluZyBidWZmZXIgbWVtb3J5IG1hcHBlZCBmb3IgbG9uZ2VyIGFuZAptaW5pbWl6 ZXMgdGhlIGFtb3VudCBvZiBjaGFuZ2VzIHRvIFRMQiwgcGFnZSB0YWJsZXMsIGV0Yy4KClNpZ25l ZC1vZmYtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPgpDYzogRGF2 aWRsb2hyIEJ1ZXNvIDxkYXZlQHN0Z29sYWJzLm5ldD4KUmV2aWV3ZWQtYnk6IEdlcmQgSG9mZm1h bm4gPGtyYXhlbEByZWRoYXQuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1f aGVscGVyLmMgfCA3NCArKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KIGluY2x1ZGUvZHJtL2Ry bV9nZW1fdnJhbV9oZWxwZXIuaCAgICAgfCAxOSArKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDc1 IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFt X2hlbHBlci5jCmluZGV4IGZkNzUxMDc4YmFlMS4uNmM3OTEyMDkyODc2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMKQEAgLTI2LDcgKzI2LDExIEBAIHN0YXRpYyB2b2lkIGRy bV9nZW1fdnJhbV9jbGVhbnVwKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pCiAJICog VFRNIGJ1ZmZlciBvYmplY3QgaW4gJ2JvJyBoYXMgYWxyZWFkeSBiZWVuIGNsZWFuZWQKIAkgKiB1 cDsgb25seSByZWxlYXNlIHRoZSBHRU0gb2JqZWN0LgogCSAqLworCisJV0FSTl9PTihnYm8tPmtt YXBfdXNlX2NvdW50KTsKKwogCWRybV9nZW1fb2JqZWN0X3JlbGVhc2UoJmdiby0+Ym8uYmFzZSk7 CisJbXV0ZXhfZGVzdHJveSgmZ2JvLT5rbWFwX2xvY2spOwogfQogCiBzdGF0aWMgdm9pZCBkcm1f Z2VtX3ZyYW1fZGVzdHJveShzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKQpAQCAtMTAw LDYgKzEwNCw4IEBAIHN0YXRpYyBpbnQgZHJtX2dlbV92cmFtX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwKIAlpZiAocmV0KQogCQlnb3RvIGVycl9kcm1fZ2VtX29iamVjdF9yZWxlYXNlOwog CisJbXV0ZXhfaW5pdCgmZ2JvLT5rbWFwX2xvY2spOworCiAJcmV0dXJuIDA7CiAKIGVycl9kcm1f Z2VtX29iamVjdF9yZWxlYXNlOgpAQCAtMjgzLDYgKzI4OSwzNCBAQCBpbnQgZHJtX2dlbV92cmFt X3VucGluKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pCiB9CiBFWFBPUlRfU1lNQk9M KGRybV9nZW1fdnJhbV91bnBpbik7CiAKK3N0YXRpYyB2b2lkICpkcm1fZ2VtX3ZyYW1fa21hcF9s b2NrZWQoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywKKwkJCQkgICAgICBib29sIG1h cCwgYm9vbCAqaXNfaW9tZW0pCit7CisJaW50IHJldDsKKwlzdHJ1Y3QgdHRtX2JvX2ttYXBfb2Jq ICprbWFwID0gJmdiby0+a21hcDsKKworCWlmIChnYm8tPmttYXBfdXNlX2NvdW50ID4gMCkKKwkJ Z290byBvdXQ7CisKKwlpZiAoa21hcC0+dmlydHVhbCB8fCAhbWFwKQorCQlnb3RvIG91dDsKKwor CXJldCA9IHR0bV9ib19rbWFwKCZnYm8tPmJvLCAwLCBnYm8tPmJvLm51bV9wYWdlcywga21hcCk7 CisJaWYgKHJldCkKKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsKKworb3V0OgorCWlmICgha21hcC0+ dmlydHVhbCkgeworCQlpZiAoaXNfaW9tZW0pCisJCQkqaXNfaW9tZW0gPSBmYWxzZTsKKwkJcmV0 dXJuIE5VTEw7IC8qIG5vdCBtYXBwZWQ7IGRvbid0IGluY3JlbWVudCByZWYgKi8KKwl9CisJKytn Ym8tPmttYXBfdXNlX2NvdW50OworCWlmIChpc19pb21lbSkKKwkJcmV0dXJuIHR0bV9rbWFwX29i al92aXJ0dWFsKGttYXAsIGlzX2lvbWVtKTsKKwlyZXR1cm4ga21hcC0+dmlydHVhbDsKK30KKwog LyoqCiAgKiBkcm1fZ2VtX3ZyYW1fa21hcCgpIC0gTWFwcyBhIEdFTSBWUkFNIG9iamVjdCBpbnRv IGtlcm5lbCBhZGRyZXNzIHNwYWNlCiAgKiBAZ2JvOgl0aGUgR0VNIFZSQU0gb2JqZWN0CkBAIC0z MDQsNDAgKzMzOCw0NCBAQCB2b2lkICpkcm1fZ2VtX3ZyYW1fa21hcChzdHJ1Y3QgZHJtX2dlbV92 cmFtX29iamVjdCAqZ2JvLCBib29sIG1hcCwKIAkJCWJvb2wgKmlzX2lvbWVtKQogewogCWludCBy ZXQ7Ci0Jc3RydWN0IHR0bV9ib19rbWFwX29iaiAqa21hcCA9ICZnYm8tPmttYXA7Ci0KLQlpZiAo a21hcC0+dmlydHVhbCB8fCAhbWFwKQotCQlnb3RvIG91dDsKKwl2b2lkICp2aXJ0dWFsOwogCi0J cmV0ID0gdHRtX2JvX2ttYXAoJmdiby0+Ym8sIDAsIGdiby0+Ym8ubnVtX3BhZ2VzLCBrbWFwKTsK KwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmdiby0+a21hcF9sb2NrKTsKIAlpZiAo cmV0KQogCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCXZpcnR1YWwgPSBkcm1fZ2VtX3ZyYW1fa21h cF9sb2NrZWQoZ2JvLCBtYXAsIGlzX2lvbWVtKTsKKwltdXRleF91bmxvY2soJmdiby0+a21hcF9s b2NrKTsKIAotb3V0OgotCWlmICghaXNfaW9tZW0pCi0JCXJldHVybiBrbWFwLT52aXJ0dWFsOwot CWlmICgha21hcC0+dmlydHVhbCkgewotCQkqaXNfaW9tZW0gPSBmYWxzZTsKLQkJcmV0dXJuIE5V TEw7Ci0JfQotCXJldHVybiB0dG1fa21hcF9vYmpfdmlydHVhbChrbWFwLCBpc19pb21lbSk7CisJ cmV0dXJuIHZpcnR1YWw7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV9nZW1fdnJhbV9rbWFwKTsKIAot LyoqCi0gKiBkcm1fZ2VtX3ZyYW1fa3VubWFwKCkgLSBVbm1hcHMgYSBHRU0gVlJBTSBvYmplY3QK LSAqIEBnYm86CXRoZSBHRU0gVlJBTSBvYmplY3QKLSAqLwotdm9pZCBkcm1fZ2VtX3ZyYW1fa3Vu bWFwKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pCitzdGF0aWMgdm9pZCBkcm1fZ2Vt X3ZyYW1fa3VubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvKQogewog CXN0cnVjdCB0dG1fYm9fa21hcF9vYmogKmttYXAgPSAmZ2JvLT5rbWFwOwogCisJaWYgKFdBUk5f T05fT05DRSghZ2JvLT5rbWFwX3VzZV9jb3VudCkpCisJCXJldHVybjsKKwlpZiAoLS1nYm8tPmtt YXBfdXNlX2NvdW50ID4gMCkKKwkJcmV0dXJuOworCiAJaWYgKCFrbWFwLT52aXJ0dWFsKQogCQly ZXR1cm47CiAKIAl0dG1fYm9fa3VubWFwKGttYXApOwogCWttYXAtPnZpcnR1YWwgPSBOVUxMOwog fQorCisvKioKKyAqIGRybV9nZW1fdnJhbV9rdW5tYXAoKSAtIFVubWFwcyBhIEdFTSBWUkFNIG9i amVjdAorICogQGdibzoJdGhlIEdFTSBWUkFNIG9iamVjdAorICovCit2b2lkIGRybV9nZW1fdnJh bV9rdW5tYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykKK3sKKwltdXRleF9sb2Nr KCZnYm8tPmttYXBfbG9jayk7CisJZHJtX2dlbV92cmFtX2t1bm1hcF9sb2NrZWQoZ2JvKTsKKwlt dXRleF91bmxvY2soJmdiby0+a21hcF9sb2NrKTsKK30KIEVYUE9SVF9TWU1CT0woZHJtX2dlbV92 cmFtX2t1bm1hcCk7CiAKIC8qKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFt X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oCmluZGV4IGFjMjE3 ZDc2ODQ1Ni4uOGMwOGJjODdiNzg4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3Zy YW1faGVscGVyLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBlci5oCkBAIC0z NCwxMSArMzQsMzAgQEAgc3RydWN0IHZtX2FyZWFfc3RydWN0OwogICogYmFja2VkIGJ5IFZSQU0u IEl0IGNhbiBiZSB1c2VkIGZvciBzaW1wbGUgZnJhbWVidWZmZXIgZGV2aWNlcyB3aXRoCiAgKiBk ZWRpY2F0ZWQgbWVtb3J5LiBUaGUgYnVmZmVyIG9iamVjdCBjYW4gYmUgZXZpY3RlZCB0byBzeXN0 ZW0gbWVtb3J5IGlmCiAgKiB2aWRlbyBtZW1vcnkgYmVjb21lcyBzY2FyY2UuCisgKgorICogR0VN IFZSQU0gb2JqZWN0cyBwZXJmb3JtIHJlZmVyZW5jZSBjb3VudGluZyBmb3IgcGluIGFuZCBtYXBw aW5nCisgKiBvcGVyYXRpb25zLiBTbyBhIGJ1ZmZlciBvYmplY3QgdGhhdCBoYXMgYmVlbiBwaW5u ZWQgTiB0aW1lcyB3aXRoCisgKiBkcm1fZ2VtX3ZyYW1fcGluKCkgbXVzdCBiZSB1bnBpbm5lZCBO IHRpbWVzIHdpdGgKKyAqIGRybV9nZW1fdnJhbV91bnBpbigpLiBUaGUgc2FtZSBhcHBsaWVzIHRv IHBhaXJzIG9mCisgKiBkcm1fZ2VtX3ZyYW1fa21hcCgpIGFuZCBkcm1fZ2VtX3ZyYW1fa3VubWFw KCkuCiAgKi8KIHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0IHsKIAlzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgYm87CiAJc3RydWN0IHR0bV9ib19rbWFwX29iaiBrbWFwOwogCisJLyoqCisJICog QGttYXBfbG9jazogUHJvdGVjdHMgdGhlIGttYXAgYWRkcmVzcyBhbmQgdXNlIGNvdW50CisJICov CisJc3RydWN0IG11dGV4IGttYXBfbG9jazsKKworCS8qKgorCSAqIEBrbWFwX3VzZV9jb3VudDoK KwkgKgorCSAqIFJlZmVyZW5jZSBjb3VudCBvbiB0aGUgdmlydHVhbCBhZGRyZXNzLgorCSAqIFRo ZSBhZGRyZXNzIGFyZSB1bi1tYXBwZWQgd2hlbiB0aGUgY291bnQgcmVhY2hlcyB6ZXJvLgorCSAq LworCXVuc2lnbmVkIGludCBrbWFwX3VzZV9jb3VudDsKKwogCS8qIFN1cHBvcnRlZCBwbGFjZW1l bnRzIGFyZSAlVFRNX1BMX1ZSQU0gYW5kICVUVE1fUExfU1lTVEVNICovCiAJc3RydWN0IHR0bV9w bGFjZW1lbnQgcGxhY2VtZW50OwogCXN0cnVjdCB0dG1fcGxhY2UgcGxhY2VtZW50c1syXTsKLS0g CjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K ZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs