From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 06/20] drm/i915: introduce vm set_pages/clear_pages Date: Tue, 27 Jun 2017 15:54:30 +0100 Message-ID: <20170627145444.20491-7-matthew.auld@intel.com> References: <20170627145444.20491-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF71E6E3C2 for ; Tue, 27 Jun 2017 14:54:57 +0000 (UTC) In-Reply-To: <20170627145444.20491-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 TW92ZSB0aGUgc2V0dGluZy9jbGVhcmluZyBvZiB0aGUgdm1hLT5wYWdlcyB0byBhIHZtIG9wZXJh dGlvbi4gRG9pbmcgc28KbmVhdGVucyB0aGluZ3MgdXAgYSBsaXR0bGUsIGJ1dCBtb3JlIGltcG9y dGFudGx5IGdpdmVzIHVzIGEgc2FuZSBwbGFjZQp0byBhbHNvIHNldC9jbGVhciB0aGUgdm1hLT5w YWdlc19zaXplcywgd2hpY2ggd2UgaW50cm9kdWNlIGxhdGVyIGluCnByZXBhcmF0aW9uIGZvciBz dXBwb3J0aW5nIGh1Z2UtcGFnZXMuCgpTdWdnZXN0ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcu YXVsZEBpbnRlbC5jb20+CkNjOiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51 eC5pbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K LS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8IDcwICsrKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oIHwgIDIgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgIHwgMjkg KysrKysrKystLS0tLS0tCiAzIGZpbGVzIGNoYW5nZWQsIDYyIGluc2VydGlvbnMoKyksIDM5IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggZGU2NzA4NGQ1 ZmNmLi4wNzFiYThlNTY2MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0y MDAsOCArMjAwLDYgQEAgc3RhdGljIGludCBwcGd0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEg KnZtYSwKIAkJCXJldHVybiByZXQ7CiAJfQogCi0Jdm1hLT5wYWdlcyA9IHZtYS0+b2JqLT5tbS5w YWdlczsKLQogCS8qIEN1cnJlbnRseSBhcHBsaWNhYmxlIG9ubHkgdG8gVkxWICovCiAJcHRlX2Zs YWdzID0gMDsKIAlpZiAodm1hLT5vYmotPmd0X3JvKQpAQCAtMjE3LDYgKzIxNSwyNiBAQCBzdGF0 aWMgdm9pZCBwcGd0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCXZtYS0+dm0t PmNsZWFyX3JhbmdlKHZtYS0+dm0sIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5zaXplKTsKIH0KIAor c3RhdGljIGludCBwcGd0dF9zZXRfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCit7CisJR0VN X0JVR19PTih2bWEtPnBhZ2VzKTsKKworCXZtYS0+cGFnZXMgPSB2bWEtPm9iai0+bW0ucGFnZXM7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY2xlYXJfcGFnZXMoc3RydWN0IGk5MTVf dm1hICp2bWEpCit7CisJR0VNX0JVR19PTighdm1hLT5wYWdlcyk7CisKKwlpZiAodm1hLT5wYWdl cyAhPSB2bWEtPm9iai0+bW0ucGFnZXMpIHsKKwkJc2dfZnJlZV90YWJsZSh2bWEtPnBhZ2VzKTsK KwkJa2ZyZWUodm1hLT5wYWdlcyk7CisJfQorCXZtYS0+cGFnZXMgPSBOVUxMOworfQorCiBzdGF0 aWMgZ2VuOF9wdGVfdCBnZW44X3B0ZV9lbmNvZGUoZG1hX2FkZHJfdCBhZGRyLAogCQkJCSAgZW51 bSBpOTE1X2NhY2hlX2xldmVsIGxldmVsKQogewpAQCAtMTM4MCw2ICsxMzk4LDggQEAgc3RhdGlj IGludCBnZW44X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXBwZ3R0 LT5iYXNlLmNsZWFudXAgPSBnZW44X3BwZ3R0X2NsZWFudXA7CiAJcHBndHQtPmJhc2UudW5iaW5k X3ZtYSA9IHBwZ3R0X3VuYmluZF92bWE7CiAJcHBndHQtPmJhc2UuYmluZF92bWEgPSBwcGd0dF9i aW5kX3ZtYTsKKwlwcGd0dC0+YmFzZS5zZXRfcGFnZXMgPSBwcGd0dF9zZXRfcGFnZXM7CisJcHBn dHQtPmJhc2UuY2xlYXJfcGFnZXMgPSBjbGVhcl9wYWdlczsKIAlwcGd0dC0+ZGVidWdfZHVtcCA9 IGdlbjhfZHVtcF9wcGd0dDsKIAogCXJldHVybiAwOwpAQCAtMTgyMiw2ICsxODQyLDggQEAgc3Rh dGljIGludCBnZW42X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXBw Z3R0LT5iYXNlLmluc2VydF9lbnRyaWVzID0gZ2VuNl9wcGd0dF9pbnNlcnRfZW50cmllczsKIAlw cGd0dC0+YmFzZS51bmJpbmRfdm1hID0gcHBndHRfdW5iaW5kX3ZtYTsKIAlwcGd0dC0+YmFzZS5i aW5kX3ZtYSA9IHBwZ3R0X2JpbmRfdm1hOworCXBwZ3R0LT5iYXNlLnNldF9wYWdlcyA9IHBwZ3R0 X3NldF9wYWdlczsKKwlwcGd0dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwogCXBw Z3R0LT5iYXNlLmNsZWFudXAgPSBnZW42X3BwZ3R0X2NsZWFudXA7CiAJcHBndHQtPmRlYnVnX2R1 bXAgPSBnZW42X2R1bXBfcHBndHQ7CiAKQEAgLTIzMzMsMTIgKzIzNTUsNiBAQCBzdGF0aWMgaW50 IGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwogCXUzMiBwdGVfZmxhZ3M7CiAKLQlpZiAodW5saWtl bHkoIXZtYS0+cGFnZXMpKSB7Ci0JCWludCByZXQgPSBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyh2 bWEpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KIAkvKiBDdXJyZW50bHkgYXBw bGljYWJsZSBvbmx5IHRvIFZMViAqLwogCXB0ZV9mbGFncyA9IDA7CiAJaWYgKG9iai0+Z3Rfcm8p CkBAIC0yMzc1LDEyICsyMzkxLDYgQEAgc3RhdGljIGludCBhbGlhc2luZ19ndHRfYmluZF92bWEo c3RydWN0IGk5MTVfdm1hICp2bWEsCiAJdTMyIHB0ZV9mbGFnczsKIAlpbnQgcmV0OwogCi0JaWYg KHVubGlrZWx5KCF2bWEtPnBhZ2VzKSkgewotCQlyZXQgPSBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdl cyh2bWEpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KIAkvKiBDdXJyZW50bHkg YXBwbGljYWJsZSBvbmx5IHRvIFZMViAqLwogCXB0ZV9mbGFncyA9IDA7CiAJaWYgKHZtYS0+b2Jq LT5ndF9ybykKQEAgLTIzOTUsNyArMjQwNSw3IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2Jp bmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJCQkJCSAgICAgdm1hLT5ub2RlLnN0YXJ0 LAogCQkJCQkJCSAgICAgdm1hLT5zaXplKTsKIAkJCWlmIChyZXQpCi0JCQkJZ290byBlcnJfcGFn ZXM7CisJCQkJcmV0dXJuIHJldDsKIAkJfQogCiAJCWFwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmll cygmYXBwZ3R0LT5iYXNlLCB2bWEsIGNhY2hlX2xldmVsLApAQCAtMjQwOSwxNyArMjQxOSw2IEBA IHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAog CX0KIAogCXJldHVybiAwOwotCi1lcnJfcGFnZXM6Ci0JaWYgKCEodm1hLT5mbGFncyAmIChJOTE1 X1ZNQV9HTE9CQUxfQklORCB8IEk5MTVfVk1BX0xPQ0FMX0JJTkQpKSkgewotCQlpZiAodm1hLT5w YWdlcyAhPSB2bWEtPm9iai0+bW0ucGFnZXMpIHsKLQkJCUdFTV9CVUdfT04oIXZtYS0+cGFnZXMp OwotCQkJc2dfZnJlZV90YWJsZSh2bWEtPnBhZ2VzKTsKLQkJCWtmcmVlKHZtYS0+cGFnZXMpOwot CQl9Ci0JCXZtYS0+cGFnZXMgPSBOVUxMOwotCX0KLQlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMg dm9pZCBhbGlhc2luZ19ndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKQEAgLTI0 NTcsNiArMjQ1NiwxOSBAQCB2b2lkIGk5MTVfZ2VtX2d0dF9maW5pc2hfcGFnZXMoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAlkbWFfdW5tYXBfc2coa2RldiwgcGFnZXMtPnNnbCwg cGFnZXMtPm5lbnRzLCBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOwogfQogCitzdGF0aWMgaW50IGdn dHRfc2V0X3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCWludCByZXQ7CisKKwlHRU1f QlVHX09OKHZtYS0+cGFnZXMpOworCisJcmV0ID0gaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXModm1h KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2 b2lkIGk5MTVfZ3R0X2NvbG9yX2FkanVzdChjb25zdCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUs CiAJCQkJICB1bnNpZ25lZCBsb25nIGNvbG9yLAogCQkJCSAgdTY0ICpzdGFydCwKQEAgLTI4NTks NiArMjg3MSw4IEBAIHN0YXRpYyBpbnQgZ2VuOF9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dndHQg KmdndHQpCiAJZ2d0dC0+YmFzZS5jbGVhbnVwID0gZ2VuNl9nbWNoX3JlbW92ZTsKIAlnZ3R0LT5i YXNlLmJpbmRfdm1hID0gZ2d0dF9iaW5kX3ZtYTsKIAlnZ3R0LT5iYXNlLnVuYmluZF92bWEgPSBn Z3R0X3VuYmluZF92bWE7CisJZ2d0dC0+YmFzZS5zZXRfcGFnZXMgPSBnZ3R0X3NldF9wYWdlczsK KwlnZ3R0LT5iYXNlLmNsZWFyX3BhZ2VzID0gY2xlYXJfcGFnZXM7CiAJZ2d0dC0+YmFzZS5pbnNl cnRfcGFnZSA9IGdlbjhfZ2d0dF9pbnNlcnRfcGFnZTsKIAlnZ3R0LT5iYXNlLmNsZWFyX3Jhbmdl ID0gbm9wX2NsZWFyX3JhbmdlOwogCWlmICghVVNFU19GVUxMX1BQR1RUKGRldl9wcml2KSB8fCBp bnRlbF9zY2Fub3V0X25lZWRzX3Z0ZF93YShkZXZfcHJpdikpCkBAIC0yOTE1LDYgKzI5MjksOCBA QCBzdGF0aWMgaW50IGdlbjZfZ21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCWdn dHQtPmJhc2UuaW5zZXJ0X2VudHJpZXMgPSBnZW42X2dndHRfaW5zZXJ0X2VudHJpZXM7CiAJZ2d0 dC0+YmFzZS5iaW5kX3ZtYSA9IGdndHRfYmluZF92bWE7CiAJZ2d0dC0+YmFzZS51bmJpbmRfdm1h ID0gZ2d0dF91bmJpbmRfdm1hOworCWdndHQtPmJhc2Uuc2V0X3BhZ2VzID0gZ2d0dF9zZXRfcGFn ZXM7CisJZ2d0dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwogCWdndHQtPmJhc2Uu Y2xlYW51cCA9IGdlbjZfZ21jaF9yZW1vdmU7CiAKIAlnZ3R0LT5pbnZhbGlkYXRlID0gZ2VuNl9n Z3R0X2ludmFsaWRhdGU7CkBAIC0yOTYwLDYgKzI5NzYsOCBAQCBzdGF0aWMgaW50IGk5MTVfZ21j aF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCWdndHQtPmJhc2UuY2xlYXJfcmFuZ2Ug PSBpOTE1X2dndHRfY2xlYXJfcmFuZ2U7CiAJZ2d0dC0+YmFzZS5iaW5kX3ZtYSA9IGdndHRfYmlu ZF92bWE7CiAJZ2d0dC0+YmFzZS51bmJpbmRfdm1hID0gZ2d0dF91bmJpbmRfdm1hOworCWdndHQt PmJhc2Uuc2V0X3BhZ2VzID0gZ2d0dF9zZXRfcGFnZXM7CisJZ2d0dC0+YmFzZS5jbGVhcl9wYWdl cyA9IGNsZWFyX3BhZ2VzOwogCWdndHQtPmJhc2UuY2xlYW51cCA9IGk5MTVfZ21jaF9yZW1vdmU7 CiAKIAlnZ3R0LT5pbnZhbGlkYXRlID0gZ21jaF9nZ3R0X2ludmFsaWRhdGU7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDRjMmY3ZDdjMWU3ZC4uNTc3MzhhNjFlYTZlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMzMwLDYgKzMzMCw4IEBAIHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgewogCWludCAoKmJpbmRfdm1hKShzdHJ1Y3QgaTkxNV92bWEgKnZt YSwKIAkJCWVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKIAkJCXUzMiBmbGFncyk7 CisJaW50ICgqc2V0X3BhZ2VzKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7CisJdm9pZCAoKmNsZWFy X3BhZ2VzKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7CiAKIAlJOTE1X1NFTEZURVNUX0RFQ0xBUkUo c3RydWN0IGZhdWx0X2F0dHIgZmF1bHRfYXR0cik7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV92bWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMK aW5kZXggOTU4YmUwYTk1OTYwLi5jOGQxYjk4Y2MyNjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEu YwpAQCAtMjY2LDYgKzI2Niw4IEBAIGludCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAq dm1hLCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJaWYgKGJpbmRfZmxhZ3Mg PT0gMCkKIAkJcmV0dXJuIDA7CiAKKwlHRU1fQlVHX09OKCF2bWEtPnBhZ2VzKTsKKwogCXRyYWNl X2k5MTVfdm1hX2JpbmQodm1hLCBiaW5kX2ZsYWdzKTsKIAlyZXQgPSB2bWEtPnZtLT5iaW5kX3Zt YSh2bWEsIGNhY2hlX2xldmVsLCBiaW5kX2ZsYWdzKTsKIAlpZiAocmV0KQpAQCAtNDcxLDI1ICs0 NzMsMzEgQEAgaTkxNV92bWFfaW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwg dTY0IGFsaWdubWVudCwgdTY0IGZsYWdzKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlp ZiAoIXZtYS0+cGFnZXMpIHsKKwkJcmV0ID0gdm1hLT52bS0+c2V0X3BhZ2VzKHZtYSk7CisJCWlm IChyZXQpCisJCQlnb3RvIGVycl91bnBpbjsKKwl9CisKIAlpZiAoZmxhZ3MgJiBQSU5fT0ZGU0VU X0ZJWEVEKSB7CiAJCXU2NCBvZmZzZXQgPSBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSzsKIAkJaWYg KCFJU19BTElHTkVEKG9mZnNldCwgYWxpZ25tZW50KSB8fAogCQkgICAgcmFuZ2Vfb3ZlcmZsb3dz KG9mZnNldCwgc2l6ZSwgZW5kKSkgewogCQkJcmV0ID0gLUVJTlZBTDsKLQkJCWdvdG8gZXJyX3Vu cGluOworCQkJZ290byBlcnJfY2xlYXI7CiAJCX0KIAogCQlyZXQgPSBpOTE1X2dlbV9ndHRfcmVz ZXJ2ZSh2bWEtPnZtLCAmdm1hLT5ub2RlLAogCQkJCQkgICBzaXplLCBvZmZzZXQsIG9iai0+Y2Fj aGVfbGV2ZWwsCiAJCQkJCSAgIGZsYWdzKTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gZXJyX3VucGlu OworCQkJZ290byBlcnJfY2xlYXI7CiAJfSBlbHNlIHsKIAkJcmV0ID0gaTkxNV9nZW1fZ3R0X2lu c2VydCh2bWEtPnZtLCAmdm1hLT5ub2RlLAogCQkJCQkgIHNpemUsIGFsaWdubWVudCwgb2JqLT5j YWNoZV9sZXZlbCwKIAkJCQkJICBzdGFydCwgZW5kLCBmbGFncyk7CiAJCWlmIChyZXQpCi0JCQln b3RvIGVycl91bnBpbjsKKwkJCWdvdG8gZXJyX2NsZWFyOwogCiAJCUdFTV9CVUdfT04odm1hLT5u b2RlLnN0YXJ0IDwgc3RhcnQpOwogCQlHRU1fQlVHX09OKHZtYS0+bm9kZS5zdGFydCArIHZtYS0+ bm9kZS5zaXplID4gZW5kKTsKQEAgLTUwNCw2ICs1MTIsOCBAQCBpOTE1X3ZtYV9pbnNlcnQoc3Ry dWN0IGk5MTVfdm1hICp2bWEsIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQgZmxhZ3MpCiAK IAlyZXR1cm4gMDsKIAorZXJyX2NsZWFyOgorCXZtYS0+dm0tPmNsZWFyX3BhZ2VzKHZtYSk7CiBl cnJfdW5waW46CiAJaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiAJcmV0dXJuIHJl dDsKQEAgLTUxNyw2ICs1MjcsOCBAQCBpOTE1X3ZtYV9yZW1vdmUoc3RydWN0IGk5MTVfdm1hICp2 bWEpCiAJR0VNX0JVR19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKIAlH RU1fQlVHX09OKHZtYS0+ZmxhZ3MgJiAoSTkxNV9WTUFfR0xPQkFMX0JJTkQgfCBJOTE1X1ZNQV9M T0NBTF9CSU5EKSk7CiAKKwl2bWEtPnZtLT5jbGVhcl9wYWdlcyh2bWEpOworCiAJZHJtX21tX3Jl bW92ZV9ub2RlKCZ2bWEtPm5vZGUpOwogCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2 bWEtPnZtLT51bmJvdW5kX2xpc3QpOwogCkBAIC01NjgsMTAgKzU4MCw4IEBAIGludCBfX2k5MTVf dm1hX2RvX3BpbihzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAlyZXR1cm4gMDsKIAogZXJyX3JlbW92 ZToKLQlpZiAoKGJvdW5kICYgSTkxNV9WTUFfQklORF9NQVNLKSA9PSAwKSB7Ci0JCUdFTV9CVUdf T04odm1hLT5wYWdlcyk7CisJaWYgKChib3VuZCAmIEk5MTVfVk1BX0JJTkRfTUFTSykgPT0gMCkK IAkJaTkxNV92bWFfcmVtb3ZlKHZtYSk7Ci0JfQogZXJyX3VucGluOgogCV9faTkxNV92bWFfdW5w aW4odm1hKTsKIAlyZXR1cm4gcmV0OwpAQCAtNzE3LDEzICs3MjcsNiBAQCBpbnQgaTkxNV92bWFf dW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCX0KIAl2bWEtPmZsYWdzICY9IH4oSTkxNV9W TUFfR0xPQkFMX0JJTkQgfCBJOTE1X1ZNQV9MT0NBTF9CSU5EKTsKIAotCWlmICh2bWEtPnBhZ2Vz ICE9IG9iai0+bW0ucGFnZXMpIHsKLQkJR0VNX0JVR19PTighdm1hLT5wYWdlcyk7Ci0JCXNnX2Zy ZWVfdGFibGUodm1hLT5wYWdlcyk7Ci0JCWtmcmVlKHZtYS0+cGFnZXMpOwotCX0KLQl2bWEtPnBh Z2VzID0gTlVMTDsKLQogCWk5MTVfdm1hX3JlbW92ZSh2bWEpOwogCiBkZXN0cm95OgotLSAKMi45 LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=