From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH v2 09/37] drm/i915/lmem: support kernel mapping Date: Thu, 27 Jun 2019 21:56:05 +0100 Message-ID: <20190627205633.1143-10-matthew.auld@intel.com> References: <20190627205633.1143-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E4D36E848 for ; Thu, 27 Jun 2019 20:56:47 +0000 (UTC) In-Reply-To: <20190627205633.1143-1-matthew.auld@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogQWJkaWVsIEphbnVsZ3VlIDxhYmRpZWwuamFudWxndWVAbGludXguaW50ZWwuY29tPgoK V2UgY2FuIGNyZWF0ZSBMTUVNIG9iamVjdHMsIGJ1dCB3ZSBhbHNvIG5lZWQgdG8gc3VwcG9ydCBt YXBwaW5nIHRoZW0KaW50byBrZXJuZWwgc3BhY2UgZm9yIGludGVybmFsIHVzZS4KClNpZ25lZC1v ZmYtYnk6IEFiZGllbCBKYW51bGd1ZSA8YWJkaWVsLmphbnVsZ3VlQGxpbnV4LmludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50ZWwuY29tPgpDYzog Sm9vbmFzIExhaHRpbmVuIDxqb29uYXMubGFodGluZW5AbGludXguaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jICAgICB8IDE4ICsrKystCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fbG1lbS5jICAgICAgfCAyNCArKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JlZ2lvbl9sbWVtLmggICAgICB8ICA2ICsrCiAu Li4vZHJtL2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYyAgfCA3NyArKysrKysr KysrKysrKysrKysrCiA0IGZpbGVzIGNoYW5nZWQsIDEyMSBpbnNlcnRpb25zKCspLCA0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9w YWdlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2VtX3BhZ2VzLmMKaW5kZXgg YjM2YWQyNjlmNGVhLi4xNWVhYWVkZmZjNDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2dlbS9pOTE1X2dlbV9wYWdlcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9p OTE1X2dlbV9wYWdlcy5jCkBAIC0xNzYsNyArMTc2LDkgQEAgX19pOTE1X2dlbV9vYmplY3RfdW5z ZXRfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJdm9pZCAqcHRyOwog CiAJCXB0ciA9IHBhZ2VfbWFza19iaXRzKG9iai0+bW0ubWFwcGluZyk7Ci0JCWlmIChpc192bWFs bG9jX2FkZHIocHRyKSkKKwkJaWYgKGk5MTVfZ2VtX29iamVjdF9pc19sbWVtKG9iaikpCisJCQlp b19tYXBwaW5nX3VubWFwKHB0cik7CisJCWVsc2UgaWYgKGlzX3ZtYWxsb2NfYWRkcihwdHIpKQog CQkJdnVubWFwKHB0cik7CiAJCWVsc2UKIAkJCWt1bm1hcChrbWFwX3RvX3BhZ2UocHRyKSk7CkBA IC0yMzUsNyArMjM3LDcgQEAgaW50IF9faTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogfQogCiAvKiBUaGUgJ21hcHBpbmcnIHBhcnQgb2Yg aTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoKSBiZWxvdyAqLwotc3RhdGljIHZvaWQgKmk5MTVfZ2Vt X29iamVjdF9tYXAoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKK3N0YXRp YyB2b2lkICppOTE1X2dlbV9vYmplY3RfbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCiAJCQkJIGVudW0gaTkxNV9tYXBfdHlwZSB0eXBlKQogewogCXVuc2lnbmVkIGxvbmcgbl9w YWdlcyA9IG9iai0+YmFzZS5zaXplID4+IFBBR0VfU0hJRlQ7CkBAIC0yNDgsNiArMjUwLDExIEBA IHN0YXRpYyB2b2lkICppOTE1X2dlbV9vYmplY3RfbWFwKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCiAJcGdwcm90X3QgcGdwcm90OwogCXZvaWQgKmFkZHI7CiAKKwlpZiAo aTkxNV9nZW1fb2JqZWN0X2lzX2xtZW0ob2JqKSkgeworCQkvKiBYWFg6IHdlIGFyZSBpZ25vcmlu ZyB0aGUgdHlwZSBoZXJlIC0tIHRoaXMgaXMgc2ltcGx5IHdjICovCisJCXJldHVybiBpOTE1X2dl bV9vYmplY3RfbG1lbV9pb19tYXAob2JqLCAwLCBvYmotPmJhc2Uuc2l6ZSk7CisJfQorCiAJLyog QSBzaW5nbGUgcGFnZSBjYW4gYWx3YXlzIGJlIGttYXBwZWQgKi8KIAlpZiAobl9wYWdlcyA9PSAx ICYmIHR5cGUgPT0gSTkxNV9NQVBfV0IpCiAJCXJldHVybiBrbWFwKHNnX3BhZ2Uoc2d0LT5zZ2wp KTsKQEAgLTI5Myw3ICszMDAsOCBAQCB2b2lkICppOTE1X2dlbV9vYmplY3RfcGluX21hcChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXZvaWQgKnB0cjsKIAlpbnQgZXJyOwogCi0J aWYgKHVubGlrZWx5KCFpOTE1X2dlbV9vYmplY3RfaGFzX3N0cnVjdF9wYWdlKG9iaikpKQorCWlm ICh1bmxpa2VseSghaTkxNV9nZW1fb2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopICYmCisJCSAg ICAgIWk5MTVfZ2VtX29iamVjdF9pc19sbWVtKG9iaikpKQogCQlyZXR1cm4gRVJSX1BUUigtRU5Y SU8pOwogCiAJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZvYmotPm1tLmxvY2spOwpA QCAtMzI1LDcgKzMzMyw5IEBAIHZvaWQgKmk5MTVfZ2VtX29iamVjdF9waW5fbWFwKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJCQlnb3RvIGVycl91bnBpbjsKIAkJfQogCi0JCWlm IChpc192bWFsbG9jX2FkZHIocHRyKSkKKwkJaWYgKGk5MTVfZ2VtX29iamVjdF9pc19sbWVtKG9i aikpCisJCQlpb19tYXBwaW5nX3VubWFwKHB0cik7CisJCWVsc2UgaWYgKGlzX3ZtYWxsb2NfYWRk cihwdHIpKQogCQkJdnVubWFwKHB0cik7CiAJCWVsc2UKIAkJCWt1bm1hcChrbWFwX3RvX3BhZ2Uo cHRyKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25fbG1l bS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX2xtZW0uYwppbmRleCAxNTY1 NWNjNTAxM2YuLjcwMWJjYWMzNDc5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmVnaW9uX2xtZW0uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdp b25fbG1lbS5jCkBAIC03Myw2ICs3MywzMCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX21l bW9yeV9yZWdpb25fb3BzIHJlZ2lvbl9sbWVtX29wcyA9IHsKIAkuY3JlYXRlX29iamVjdCA9IGxt ZW1fY3JlYXRlX29iamVjdCwKIH07CiAKKy8qIFhYWDogVGltZSB0byB2ZnVuYyB5b3VyIGxpZmUg dXA/ICovCit2b2lkIF9faW9tZW0gKmk5MTVfZ2VtX29iamVjdF9sbWVtX2lvX21hcF9wYWdlKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJCSAgICAgICB1bnNpZ25lZCBsb25n IG4pCit7CisJcmVzb3VyY2Vfc2l6ZV90IG9mZnNldDsKKworCW9mZnNldCA9IGk5MTVfZ2VtX29i amVjdF9nZXRfZG1hX2FkZHJlc3Mob2JqLCBuKTsKKworCXJldHVybiBpb19tYXBwaW5nX21hcF9h dG9taWNfd2MoJm9iai0+bWVtb3J5X3JlZ2lvbi0+aW9tYXAsIG9mZnNldCk7Cit9CisKK3ZvaWQg X19pb21lbSAqaTkxNV9nZW1fb2JqZWN0X2xtZW1faW9fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCisJCQkJCSAgdW5zaWduZWQgbG9uZyBuLAorCQkJCQkgIHVuc2lnbmVkIGxv bmcgc2l6ZSkKK3sKKwlyZXNvdXJjZV9zaXplX3Qgb2Zmc2V0OworCisJR0VNX0JVR19PTighKG9i ai0+ZmxhZ3MgJiBJOTE1X0JPX0FMTE9DX0NPTlRJR1VPVVMpKTsKKworCW9mZnNldCA9IGk5MTVf Z2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Mob2JqLCBuKTsKKworCXJldHVybiBpb19tYXBwaW5n X21hcF93Yygmb2JqLT5tZW1vcnlfcmVnaW9uLT5pb21hcCwgb2Zmc2V0LCBzaXplKTsKK30KKwog Ym9vbCBpOTE1X2dlbV9vYmplY3RfaXNfbG1lbShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKQogewogCXN0cnVjdCBpbnRlbF9tZW1vcnlfcmVnaW9uICpyZWdpb24gPSBvYmotPm1lbW9y eV9yZWdpb247CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yZWdpb25f bG1lbS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmVnaW9uX2xtZW0uaAppbmRleCAw ZjBhNjI0OWQ1YjkuLjIwMDg0ZjdiNGJmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmVnaW9uX2xtZW0uaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y ZWdpb25fbG1lbS5oCkBAIC02LDYgKzYsMTIgQEAKICNpZm5kZWYgX19JTlRFTF9SRUdJT05fTE1F TV9ICiAjZGVmaW5lIF9fSU5URUxfUkVHSU9OX0xNRU1fSAogCisKK3ZvaWQgX19pb21lbSAqaTkx NV9nZW1fb2JqZWN0X2xtZW1faW9fbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CisJCQkJCSAgdW5zaWduZWQgbG9uZyBuLCB1bnNpZ25lZCBsb25nIHNpemUpOwordm9pZCBfX2lv bWVtICppOTE1X2dlbV9vYmplY3RfbG1lbV9pb19tYXBfcGFnZShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAorCQkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBuKTsKKwogYm9vbCBpOTE1 X2dlbV9vYmplY3RfaXNfbG1lbShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIAog c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2ludGVsX21lbW9yeV9yZWdpb24uYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9pbnRlbF9tZW1vcnlfcmVnaW9uLmMKaW5kZXggM2FjMzIwYjI4ZWYxLi44 NWQxMThjMTBkMTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p bnRlbF9tZW1vcnlfcmVnaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3Rz L2ludGVsX21lbW9yeV9yZWdpb24uYwpAQCAtOSw4ICs5LDExIEBACiAKICNpbmNsdWRlICJtb2Nr X2dlbV9kZXZpY2UuaCIKICNpbmNsdWRlICJnZW0vc2VsZnRlc3RzL21vY2tfY29udGV4dC5oIgor I2luY2x1ZGUgInNlbGZ0ZXN0cy9pZ3RfZmx1c2hfdGVzdC5oIgogI2luY2x1ZGUgIm1vY2tfZHJt LmgiCiAKKyNpbmNsdWRlICJnZW0vaTkxNV9nZW1fb2JqZWN0X2JsdC5oIgorCiBzdGF0aWMgdm9p ZCBjbG9zZV9vYmplY3RzKHN0cnVjdCBsaXN0X2hlYWQgKm9iamVjdHMpCiB7CiAJc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgKm9uOwpAQCAtMzY1LDYgKzM2OCw3OSBAQCBzdGF0aWMg aW50IGlndF9sbWVtX2NyZWF0ZSh2b2lkICphcmcpCiAJcmV0dXJuIGVycjsKIH0KIAorc3RhdGlj IGludCBpZ3RfbG1lbV93cml0ZV9jcHUodm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9IGk5MTUtPmVu Z2luZVtCQ1MwXS0+a2VybmVsX2NvbnRleHQ7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKKwlzdHJ1Y3Qgcm5kX3N0YXRlIHBybmc7CisJdTMyICp2YWRkcjsKKwl1MzIgZHdvcmQ7 CisJdTMyIHZhbDsKKwl1MzIgc3o7CisJaW50IGVycjsKKworCWlmICghSEFTX0VOR0lORShpOTE1 LCBCQ1MwKSkKKwkJcmV0dXJuIDA7CisKKwlzeiA9IHJvdW5kX3VwKHByYW5kb21fdTMyX3N0YXRl KCZwcm5nKSAlIFNaXzMyTSwgUEFHRV9TSVpFKTsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9j cmVhdGVfbG1lbShpOTE1LCBzeiwgSTkxNV9CT19BTExPQ19DT05USUdVT1VTKTsKKwlpZiAoSVNf RVJSKG9iaikpCisJCXJldHVybiBQVFJfRVJSKG9iaik7CisKKwl2YWRkciA9IGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0MpOworCWlmIChJU19FUlIodmFkZHIpKSB7CisJ CXByX2VycigiRmFpbGVkIHRvIGlvbWFwIGxtZW1iYXI7IGVycj0lZFxuIiwgKGludClQVFJfRVJS KHZhZGRyKSk7CisJCWVyciA9IFBUUl9FUlIodmFkZHIpOworCQlnb3RvIG91dF9wdXQ7CisJfQor CisJdmFsID0gcHJhbmRvbV91MzJfc3RhdGUoJnBybmcpOworCisJLyogV3JpdGUgZnJvbSBncHUg YW5kIHRoZW4gcmVhZCBmcm9tIGNwdSAqLworCWVyciA9IGk5MTVfZ2VtX29iamVjdF9maWxsX2Js dChvYmosIGNlLCB2YWwpOworCWlmIChlcnIpCisJCWdvdG8gb3V0X3VucGluOworCisJaTkxNV9n ZW1fb2JqZWN0X2xvY2sob2JqKTsKKwllcnIgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX3djX2Rv bWFpbihvYmosIHRydWUpOworCWk5MTVfZ2VtX29iamVjdF91bmxvY2sob2JqKTsKKwlpZiAoZXJy KQorCQlnb3RvIG91dF91bnBpbjsKKworCWZvciAoZHdvcmQgPSAwOyBkd29yZCA8IHN6IC8gc2l6 ZW9mKHUzMik7ICsrZHdvcmQpIHsKKwkJaWYgKHZhZGRyW2R3b3JkXSAhPSB2YWwpIHsKKwkJCXBy X2VycigidmFkZHJbJXVdPSV1LCB2YWw9JXVcbiIsIGR3b3JkLCB2YWRkcltkd29yZF0sCisJCQkg ICAgICAgIHZhbCk7CisJCQllcnIgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0KKwl9CisKKwkv KiBXcml0ZSBmcm9tIHRoZSBjcHUgYW5kIHJlYWQgYWdhaW4gZnJvbSB0aGUgY3B1ICovCisJbWVt c2V0MzIodmFkZHIsIHZhbCBeIDB4ZGVhZGJlYWYsIHN6IC8gc2l6ZW9mKHUzMikpOworCisJZm9y IChkd29yZCA9IDA7IGR3b3JkIDwgc3ogLyBzaXplb2YodTMyKTsgKytkd29yZCkgeworCQlpZiAo dmFkZHJbZHdvcmRdICE9ICh2YWwgXiAweGRlYWRiZWFmKSkgeworCQkJcHJfZXJyKCJ2YWRkclsl dV09JXUsIHZhbD0ldVxuIiwgZHdvcmQsIHZhZGRyW2R3b3JkXSwKKwkJCSAgICAgICAgdmFsIF4g MHhkZWFkYmVhZik7CisJCQllcnIgPSAtRUlOVkFMOworCQkJYnJlYWs7CisJCX0KKwl9CisKK291 dF91bnBpbjoKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CitvdXRfcHV0OgorCWk5 MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKworCWlmIChpZ3RfZmx1c2hfdGVzdChpOTE1LCBJOTE1 X1dBSVRfTE9DS0VEKSkKKwkJZXJyID0gLUVJTzsKKworCXJldHVybiBlcnI7Cit9CisKIGludCBp bnRlbF9tZW1vcnlfcmVnaW9uX21vY2tfc2VsZnRlc3RzKHZvaWQpCiB7CiAJc3RhdGljIGNvbnN0 IHN0cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKQEAgLTQwNiw2ICs0ODIsNyBAQCBpbnQg aW50ZWxfbWVtb3J5X3JlZ2lvbl9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIHsKIAlzdGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfc3VidGVzdCB0ZXN0c1tdID0g ewogCQlTVUJURVNUKGlndF9sbWVtX2NyZWF0ZSksCisJCVNVQlRFU1QoaWd0X2xtZW1fd3JpdGVf Y3B1KSwKIAl9OwogCWludCBlcnI7CiAKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4