From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 2/3] drm/vgem: Fix mmaping Date: Sat, 18 Jun 2016 16:20:48 +0100 Message-ID: <1466263249-18346-2-git-send-email-chris@chris-wilson.co.uk> References: <1466263249-18346-1-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id A4DE86E130 for ; Sat, 18 Jun 2016 15:21:03 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id k184so4240870wme.2 for ; Sat, 18 Jun 2016 08:21:03 -0700 (PDT) In-Reply-To: <1466263249-18346-1-git-send-email-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org VGhlIHZHRU0gbW1hcCBjb2RlIGhhcyBiaXRyb3R0ZWQgc2xpZ2h0bHkgYW5kIG5vdyBpbW1lZGlh dGVseSBCVUdzLgpTaW5jZSB2R0VNIHdhcyBsYXN0IHVwZGF0ZWQsIHRoZXJlIGFyZSBuZXcgY29y ZSBHRU0gZmFjaWxpdGllcyB0bwpwcm92aWRlIG1vcmUgY29tbW9uIGZ1bmN0aW9ucywgc28gbGV0 J3MgdXNlIHRob3NlIGhlcmUuCgpUZXN0Y2FzZTogaWd0L3ZnZW1fYmFzaWMvbW1hcApTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jIHwgMTYzICsrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmggfCAgIDYg LS0KIDIgZmlsZXMgY2hhbmdlZCwgNjEgaW5zZXJ0aW9ucygrKSwgMTA4IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMgYi9kcml2ZXJzL2dw dS9kcm0vdmdlbS92Z2VtX2Rydi5jCmluZGV4IDFiNGNjOGIyNzA4MC4uNDc0N2I3Zjk4ZTdhIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS92Z2VtL3ZnZW1fZHJ2LmMKQEAgLTQyLDgxICs0MiwzOSBAQAogI2RlZmluZSBEUklW RVJfTUFKT1IJMQogI2RlZmluZSBEUklWRVJfTUlOT1IJMAogCi12b2lkIHZnZW1fZ2VtX3B1dF9w YWdlcyhzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2JqKQotewotCWRybV9nZW1fcHV0X3Bh Z2VzKCZvYmotPmJhc2UsIG9iai0+cGFnZXMsIGZhbHNlLCBmYWxzZSk7Ci0Jb2JqLT5wYWdlcyA9 IE5VTEw7Ci19Ci0KIHN0YXRpYyB2b2lkIHZnZW1fZ2VtX2ZyZWVfb2JqZWN0KHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKQogewogCXN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0ICp2Z2VtX29i aiA9IHRvX3ZnZW1fYm8ob2JqKTsKIAogCWRybV9nZW1fZnJlZV9tbWFwX29mZnNldChvYmopOwot Ci0JaWYgKHZnZW1fb2JqLT51c2VfZG1hX2J1ZiAmJiBvYmotPmRtYV9idWYpIHsKLQkJZG1hX2J1 Zl9wdXQob2JqLT5kbWFfYnVmKTsKLQkJb2JqLT5kbWFfYnVmID0gTlVMTDsKLQl9Ci0KIAlkcm1f Z2VtX29iamVjdF9yZWxlYXNlKG9iaik7Ci0KLQlpZiAodmdlbV9vYmotPnBhZ2VzKQotCQl2Z2Vt X2dlbV9wdXRfcGFnZXModmdlbV9vYmopOwotCi0JdmdlbV9vYmotPnBhZ2VzID0gTlVMTDsKLQog CWtmcmVlKHZnZW1fb2JqKTsKIH0KIAotaW50IHZnZW1fZ2VtX2dldF9wYWdlcyhzdHJ1Y3QgZHJt X3ZnZW1fZ2VtX29iamVjdCAqb2JqKQotewotCXN0cnVjdCBwYWdlICoqcGFnZXM7Ci0KLQlpZiAo b2JqLT5wYWdlcyB8fCBvYmotPnVzZV9kbWFfYnVmKQotCQlyZXR1cm4gMDsKLQotCXBhZ2VzID0g ZHJtX2dlbV9nZXRfcGFnZXMoJm9iai0+YmFzZSk7Ci0JaWYgKElTX0VSUihwYWdlcykpIHsKLQkJ cmV0dXJuIFBUUl9FUlIocGFnZXMpOwotCX0KLQotCW9iai0+cGFnZXMgPSBwYWdlczsKLQotCXJl dHVybiAwOwotfQotCiBzdGF0aWMgaW50IHZnZW1fZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0 cnVjdCAqdm1hLCBzdHJ1Y3Qgdm1fZmF1bHQgKnZtZikKIHsKIAlzdHJ1Y3QgZHJtX3ZnZW1fZ2Vt X29iamVjdCAqb2JqID0gdm1hLT52bV9wcml2YXRlX2RhdGE7Ci0JbG9mZl90IG51bV9wYWdlczsK LQlwZ29mZl90IHBhZ2Vfb2Zmc2V0OwotCWludCByZXQ7Ci0KIAkvKiBXZSBkb24ndCB1c2Ugdm1m LT5wZ29mZiBzaW5jZSB0aGF0IGhhcyB0aGUgZmFrZSBvZmZzZXQgKi8KLQlwYWdlX29mZnNldCA9 ICgodW5zaWduZWQgbG9uZyl2bWYtPnZpcnR1YWxfYWRkcmVzcyAtIHZtYS0+dm1fc3RhcnQpID4+ Ci0JCVBBR0VfU0hJRlQ7Ci0KLQludW1fcGFnZXMgPSBESVZfUk9VTkRfVVAob2JqLT5iYXNlLnNp emUsIFBBR0VfU0laRSk7Ci0KLQlpZiAocGFnZV9vZmZzZXQgPiBudW1fcGFnZXMpCi0JCXJldHVy biBWTV9GQVVMVF9TSUdCVVM7Ci0KLQlyZXQgPSB2bV9pbnNlcnRfcGFnZSh2bWEsICh1bnNpZ25l ZCBsb25nKXZtZi0+dmlydHVhbF9hZGRyZXNzLAotCQkJICAgICBvYmotPnBhZ2VzW3BhZ2Vfb2Zm c2V0XSk7Ci0Jc3dpdGNoIChyZXQpIHsKLQljYXNlIDA6Ci0JCXJldHVybiBWTV9GQVVMVF9OT1BB R0U7Ci0JY2FzZSAtRU5PTUVNOgotCQlyZXR1cm4gVk1fRkFVTFRfT09NOwotCWNhc2UgLUVCVVNZ OgotCQlyZXR1cm4gVk1fRkFVTFRfUkVUUlk7Ci0JY2FzZSAtRUZBVUxUOgotCWNhc2UgLUVJTlZB TDoKLQkJcmV0dXJuIFZNX0ZBVUxUX1NJR0JVUzsKLQlkZWZhdWx0OgotCQlXQVJOX09OKDEpOwot CQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCXVuc2lnbmVkIGxvbmcgdmFkZHIgPSAodW5zaWdu ZWQgbG9uZyl2bWYtPnZpcnR1YWxfYWRkcmVzczsKKwlzdHJ1Y3QgcGFnZSAqcGFnZTsKKworCXBh Z2UgPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZShmaWxlX2lub2RlKG9iai0+YmFzZS5maWxwKS0+ aV9tYXBwaW5nLAorCQkJCSAgICAgICAodmFkZHIgLSB2bWEtPnZtX3N0YXJ0KSA+PiBQQUdFX1NI SUZUKTsKKwlpZiAoIUlTX0VSUihwYWdlKSkgeworCQl2bWYtPnBhZ2UgPSBwYWdlOworCQlyZXR1 cm4gVk1fRkFVTFRfTE9DS0VEOworCX0gZWxzZSBzd2l0Y2ggKFBUUl9FUlIocGFnZSkpIHsKKwkJ Y2FzZSAtRU5PU1BDOgorCQljYXNlIC1FTk9NRU06CisJCQlyZXR1cm4gVk1fRkFVTFRfT09NOwor CQljYXNlIC1FQlVTWToKKwkJCXJldHVybiBWTV9GQVVMVF9SRVRSWTsKKwkJY2FzZSAtRUZBVUxU OgorCQljYXNlIC1FSU5WQUw6CisJCQlyZXR1cm4gVk1fRkFVTFRfU0lHQlVTOworCQlkZWZhdWx0 OgorCQkJV0FSTl9PTl9PTkNFKFBUUl9FUlIocGFnZSkpOworCQkJcmV0dXJuIFZNX0ZBVUxUX1NJ R0JVUzsKIAl9CiB9CiAKQEAgLTEzNCw1NyArOTIsNDMgQEAgc3RhdGljIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqdmdlbV9nZW1fY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCSAg ICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSkKIHsKIAlzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAq b2JqOwotCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iamVjdDsKLQlpbnQgZXJyOwotCi0J c2l6ZSA9IHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKTsKKwlpbnQgcmV0OwogCiAJb2JqID0ga3ph bGxvYyhzaXplb2YoKm9iaiksIEdGUF9LRVJORUwpOwogCWlmICghb2JqKQogCQlyZXR1cm4gRVJS X1BUUigtRU5PTUVNKTsKIAotCWdlbV9vYmplY3QgPSAmb2JqLT5iYXNlOwotCi0JZXJyID0gZHJt X2dlbV9vYmplY3RfaW5pdChkZXYsIGdlbV9vYmplY3QsIHNpemUpOwotCWlmIChlcnIpCi0JCWdv dG8gb3V0OwotCi0JZXJyID0gdmdlbV9nZW1fZ2V0X3BhZ2VzKG9iaik7Ci0JaWYgKGVycikKLQkJ Z290byBvdXQ7Ci0KLQllcnIgPSBkcm1fZ2VtX2hhbmRsZV9jcmVhdGUoZmlsZSwgZ2VtX29iamVj dCwgaGFuZGxlKTsKLQlpZiAoZXJyKQotCQlnb3RvIGhhbmRsZV9vdXQ7CisJcmV0ID0gZHJtX2dl bV9vYmplY3RfaW5pdChkZXYsICZvYmotPmJhc2UsIHJvdW5kdXAoc2l6ZSwgUEFHRV9TSVpFKSk7 CisJaWYgKHJldCkKKwkJZ290byBlcnJfZnJlZTsKIAotCWRybV9nZW1fb2JqZWN0X3VucmVmZXJl bmNlX3VubG9ja2VkKGdlbV9vYmplY3QpOworCXJldCA9IGRybV9nZW1faGFuZGxlX2NyZWF0ZShm aWxlLCAmb2JqLT5iYXNlLCBoYW5kbGUpOworCWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlX3Vu bG9ja2VkKCZvYmotPmJhc2UpOworCWlmIChyZXQpCisJCWdvdG8gZXJyOwogCi0JcmV0dXJuIGdl bV9vYmplY3Q7CisJcmV0dXJuICZvYmotPmJhc2U7CiAKLWhhbmRsZV9vdXQ6Ci0JZHJtX2dlbV9v YmplY3RfcmVsZWFzZShnZW1fb2JqZWN0KTsKLW91dDoKK2Vycl9mcmVlOgogCWtmcmVlKG9iaik7 Ci0JcmV0dXJuIEVSUl9QVFIoZXJyKTsKK2VycjoKKwlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQog CiBzdGF0aWMgaW50IHZnZW1fZ2VtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwg c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQlzdHJ1Y3QgZHJtX21vZGVfY3JlYXRlX2R1bWIg KmFyZ3MpCiB7CiAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqZWN0OwotCXVpbnQ2NF90 IHNpemU7Ci0JdWludDY0X3QgcGl0Y2ggPSBhcmdzLT53aWR0aCAqIERJVl9ST1VORF9VUChhcmdz LT5icHAsIDgpOworCXU2NCBwaXRjaCwgc2l6ZTsKIAorCXBpdGNoID0gYXJncy0+d2lkdGggKiBE SVZfUk9VTkRfVVAoYXJncy0+YnBwLCA4KTsKIAlzaXplID0gYXJncy0+aGVpZ2h0ICogcGl0Y2g7 CiAJaWYgKHNpemUgPT0gMCkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlnZW1fb2JqZWN0ID0gdmdl bV9nZW1fY3JlYXRlKGRldiwgZmlsZSwgJmFyZ3MtPmhhbmRsZSwgc2l6ZSk7Ci0KLQlpZiAoSVNf RVJSKGdlbV9vYmplY3QpKSB7Ci0JCURSTV9ERUJVR19EUklWRVIoIm9iamVjdCBjcmVhdGlvbiBm YWlsZWRcbiIpOworCWlmIChJU19FUlIoZ2VtX29iamVjdCkpCiAJCXJldHVybiBQVFJfRVJSKGdl bV9vYmplY3QpOwotCX0KIAogCWFyZ3MtPnNpemUgPSBnZW1fb2JqZWN0LT5zaXplOwogCWFyZ3Mt PnBpdGNoID0gcGl0Y2g7CkBAIC0xOTQsMjYgKzEzOCwyNiBAQCBzdGF0aWMgaW50IHZnZW1fZ2Vt X2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAlyZXR1cm4gMDsKIH0KIAotaW50IHZnZW1fZ2VtX2R1bWJfbWFwKHN0cnVjdCBkcm1fZmls ZSAqZmlsZSwgc3RydWN0IGRybV9kZXZpY2UgKmRldiwKLQkJICAgICAgdWludDMyX3QgaGFuZGxl LCB1aW50NjRfdCAqb2Zmc2V0KQorc3RhdGljIGludCB2Z2VtX2dlbV9kdW1iX21hcChzdHJ1Y3Qg ZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkgICAgIHVpbnQzMl90 IGhhbmRsZSwgdWludDY0X3QgKm9mZnNldCkKIHsKLQlpbnQgcmV0ID0gMDsKIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iajsKKwlpbnQgcmV0OwogCiAJb2JqID0gZHJtX2dlbV9vYmplY3RfbG9v a3VwKGZpbGUsIGhhbmRsZSk7CiAJaWYgKCFvYmopCiAJCXJldHVybiAtRU5PRU5UOwogCisJaWYg KCFvYmotPmZpbHApIHsKKwkJcmV0ID0gLUVJTlZBTDsKKwkJZ290byB1bnJlZjsKKwl9CisKIAly ZXQgPSBkcm1fZ2VtX2NyZWF0ZV9tbWFwX29mZnNldChvYmopOwogCWlmIChyZXQpCiAJCWdvdG8g dW5yZWY7CiAKLQlCVUdfT04oIW9iai0+ZmlscCk7Ci0KLQlvYmotPmZpbHAtPnByaXZhdGVfZGF0 YSA9IG9iajsKLQogCSpvZmZzZXQgPSBkcm1fdm1hX25vZGVfb2Zmc2V0X2FkZHIoJm9iai0+dm1h X25vZGUpOwotCiB1bnJlZjoKIAlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChv YmopOwogCkBAIC0yMjMsMTAgKzE2NywyNiBAQCB1bnJlZjoKIHN0YXRpYyBzdHJ1Y3QgZHJtX2lv Y3RsX2Rlc2MgdmdlbV9pb2N0bHNbXSA9IHsKIH07CiAKK3N0YXRpYyBpbnQgdmdlbV9tbWFwKHN0 cnVjdCBmaWxlICpmaWxwLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkKK3sKKwl1bnNpZ25l ZCBsb25nIGZsYWdzID0gdm1hLT52bV9mbGFnczsKKwlpbnQgcmV0OworCisJcmV0ID0gZHJtX2dl bV9tbWFwKGZpbHAsIHZtYSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCS8qIEtlZXAg dGhlIFdDIG1tYXBpbmcgc2V0IGJ5IGRybV9nZW1fbW1hcCgpIGJ1dCBvdXIgcGFnZXMKKwkgKiBh cmUgb3JkaW5hcnkgYW5kIG5vdCBzcGVjaWFsLgorCSAqLworCXZtYS0+dm1fZmxhZ3MgPSBmbGFn cyB8IFZNX0RPTlRFWFBBTkQgfCBWTV9ET05URFVNUDsKKwlyZXR1cm4gMDsKK30KKwogc3RhdGlj IGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgdmdlbV9kcml2ZXJfZm9wcyA9IHsKIAkub3du ZXIJCT0gVEhJU19NT0RVTEUsCiAJLm9wZW4JCT0gZHJtX29wZW4sCi0JLm1tYXAJCT0gZHJtX2dl bV9tbWFwLAorCS5tbWFwCQk9IHZnZW1fbW1hcCwKIAkucG9sbAkJPSBkcm1fcG9sbCwKIAkucmVh ZAkJPSBkcm1fcmVhZCwKIAkudW5sb2NrZWRfaW9jdGwgPSBkcm1faW9jdGwsCkBAIC0yNDgsNyAr MjA4LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVyIHZnZW1fZHJpdmVyID0gewogCS5taW5v cgk9IERSSVZFUl9NSU5PUiwKIH07CiAKLXN0cnVjdCBkcm1fZGV2aWNlICp2Z2VtX2RldmljZTsK K3N0YXRpYyBzdHJ1Y3QgZHJtX2RldmljZSAqdmdlbV9kZXZpY2U7CiAKIHN0YXRpYyBpbnQgX19p bml0IHZnZW1faW5pdCh2b2lkKQogewpAQCAtMjYzLDcgKzIyMyw2IEBAIHN0YXRpYyBpbnQgX19p bml0IHZnZW1faW5pdCh2b2lkKQogCWRybV9kZXZfc2V0X3VuaXF1ZSh2Z2VtX2RldmljZSwgInZn ZW0iKTsKIAogCXJldCAgPSBkcm1fZGV2X3JlZ2lzdGVyKHZnZW1fZGV2aWNlLCAwKTsKLQogCWlm IChyZXQpCiAJCWdvdG8gb3V0X3VucmVmOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dmdlbS92Z2VtX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL3ZnZW0vdmdlbV9kcnYuaAppbmRleCBl OWY5MmY3ZWUyNzUuLjk4OGNiYWFlNzU4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zn ZW0vdmdlbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vdmdlbS92Z2VtX2Rydi5oCkBAIC0z NSwxMiArMzUsNiBAQAogI2RlZmluZSB0b192Z2VtX2JvKHgpIGNvbnRhaW5lcl9vZih4LCBzdHJ1 Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCwgYmFzZSkKIHN0cnVjdCBkcm1fdmdlbV9nZW1fb2JqZWN0 IHsKIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgYmFzZTsKLQlzdHJ1Y3QgcGFnZSAqKnBhZ2VzOwot CWJvb2wgdXNlX2RtYV9idWY7CiB9OwogCi0vKiB2Z2VtX2Rydi5jICovCi1leHRlcm4gdm9pZCB2 Z2VtX2dlbV9wdXRfcGFnZXMoc3RydWN0IGRybV92Z2VtX2dlbV9vYmplY3QgKm9iaik7Ci1leHRl cm4gaW50IHZnZW1fZ2VtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX3ZnZW1fZ2VtX29iamVjdCAqb2Jq KTsKLQogI2VuZGlmCi0tIAoyLjguMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==