From mboxrd@z Thu Jan 1 00:00:00 1970 From: Matthew Auld Subject: [PATCH 06/22] drm/i915: introduce vm set_pages/clear_pages Date: Tue, 15 Aug 2017 19:11:59 +0100 Message-ID: <20170815181215.18310-7-matthew.auld@intel.com> References: <20170815181215.18310-1-matthew.auld@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 51D176E320 for ; Tue, 15 Aug 2017 18:17:00 +0000 (UTC) In-Reply-To: <20170815181215.18310-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 dXBwb3J0aW5nIGh1Z2UtcGFnZXMuCgp2MjogcmVtb3ZlIHJlZHVuZGFudCB2bWEtPnBhZ2VzIGNo ZWNrCgpTdWdnZXN0ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PgpTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEF1bGQgPG1hdHRoZXcuYXVsZEBpbnRlbC5jb20+CkNj OiBKb29uYXMgTGFodGluZW4gPGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+CkNjOiBD aHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICB8IDcwICsrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgIHwgIDIg KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYyAgICAgICAgICAgfCAyOSArKysrKysr LS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19ndHQuYyB8IDExICsr LS0tCiA0IGZpbGVzIGNoYW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDQ2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKaW5kZXggZWYxODgxZTI1NmY0Li5jNmZlYjFl MzNlYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCkBAIC0yMDUsOCArMjA1LDYg QEAgc3RhdGljIGludCBwcGd0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkJCXJl dHVybiByZXQ7CiAJfQogCi0Jdm1hLT5wYWdlcyA9IHZtYS0+b2JqLT5tbS5wYWdlczsKLQogCS8q IEN1cnJlbnRseSBhcHBsaWNhYmxlIG9ubHkgdG8gVkxWICovCiAJcHRlX2ZsYWdzID0gMDsKIAlp ZiAodm1hLT5vYmotPmd0X3JvKQpAQCAtMjIyLDYgKzIyMCwyNiBAQCBzdGF0aWMgdm9pZCBwcGd0 dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCXZtYS0+dm0tPmNsZWFyX3Jhbmdl KHZtYS0+dm0sIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5zaXplKTsKIH0KIAorc3RhdGljIGludCBw cGd0dF9zZXRfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCit7CisJR0VNX0JVR19PTih2bWEt PnBhZ2VzKTsKKworCXZtYS0+cGFnZXMgPSB2bWEtPm9iai0+bW0ucGFnZXM7CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIHZvaWQgY2xlYXJfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCit7 CisJR0VNX0JVR19PTighdm1hLT5wYWdlcyk7CisKKwlpZiAodm1hLT5wYWdlcyAhPSB2bWEtPm9i ai0+bW0ucGFnZXMpIHsKKwkJc2dfZnJlZV90YWJsZSh2bWEtPnBhZ2VzKTsKKwkJa2ZyZWUodm1h LT5wYWdlcyk7CisJfQorCXZtYS0+cGFnZXMgPSBOVUxMOworfQorCiBzdGF0aWMgZ2VuOF9wdGVf dCBnZW44X3B0ZV9lbmNvZGUoZG1hX2FkZHJfdCBhZGRyLAogCQkJCSAgZW51bSBpOTE1X2NhY2hl X2xldmVsIGxldmVsKQogewpAQCAtMTM4NSw2ICsxNDAzLDggQEAgc3RhdGljIGludCBnZW44X3Bw Z3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXBwZ3R0LT5iYXNlLmNsZWFu dXAgPSBnZW44X3BwZ3R0X2NsZWFudXA7CiAJcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IHBwZ3R0 X3VuYmluZF92bWE7CiAJcHBndHQtPmJhc2UuYmluZF92bWEgPSBwcGd0dF9iaW5kX3ZtYTsKKwlw cGd0dC0+YmFzZS5zZXRfcGFnZXMgPSBwcGd0dF9zZXRfcGFnZXM7CisJcHBndHQtPmJhc2UuY2xl YXJfcGFnZXMgPSBjbGVhcl9wYWdlczsKIAlwcGd0dC0+ZGVidWdfZHVtcCA9IGdlbjhfZHVtcF9w cGd0dDsKIAogCXJldHVybiAwOwpAQCAtMTgyNyw2ICsxODQ3LDggQEAgc3RhdGljIGludCBnZW42 X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQogCXBwZ3R0LT5iYXNlLmlu c2VydF9lbnRyaWVzID0gZ2VuNl9wcGd0dF9pbnNlcnRfZW50cmllczsKIAlwcGd0dC0+YmFzZS51 bmJpbmRfdm1hID0gcHBndHRfdW5iaW5kX3ZtYTsKIAlwcGd0dC0+YmFzZS5iaW5kX3ZtYSA9IHBw Z3R0X2JpbmRfdm1hOworCXBwZ3R0LT5iYXNlLnNldF9wYWdlcyA9IHBwZ3R0X3NldF9wYWdlczsK KwlwcGd0dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwogCXBwZ3R0LT5iYXNlLmNs ZWFudXAgPSBnZW42X3BwZ3R0X2NsZWFudXA7CiAJcHBndHQtPmRlYnVnX2R1bXAgPSBnZW42X2R1 bXBfcHBndHQ7CiAKQEAgLTIzMzgsMTIgKzIzNjAsNiBAQCBzdGF0aWMgaW50IGdndHRfYmluZF92 bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiA9IHZtYS0+b2JqOwogCXUzMiBwdGVfZmxhZ3M7CiAKLQlpZiAodW5saWtlbHkoIXZtYS0+cGFn ZXMpKSB7Ci0JCWludCByZXQgPSBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyh2bWEpOwotCQlpZiAo cmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KIAkvKiBDdXJyZW50bHkgYXBwbGljYWJsZSBvbmx5 IHRvIFZMViAqLwogCXB0ZV9mbGFncyA9IDA7CiAJaWYgKG9iai0+Z3Rfcm8pCkBAIC0yMzgwLDEy ICsyMzk2LDYgQEAgc3RhdGljIGludCBhbGlhc2luZ19ndHRfYmluZF92bWEoc3RydWN0IGk5MTVf dm1hICp2bWEsCiAJdTMyIHB0ZV9mbGFnczsKIAlpbnQgcmV0OwogCi0JaWYgKHVubGlrZWx5KCF2 bWEtPnBhZ2VzKSkgewotCQlyZXQgPSBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyh2bWEpOwotCQlp ZiAocmV0KQotCQkJcmV0dXJuIHJldDsKLQl9Ci0KIAkvKiBDdXJyZW50bHkgYXBwbGljYWJsZSBv bmx5IHRvIFZMViAqLwogCXB0ZV9mbGFncyA9IDA7CiAJaWYgKHZtYS0+b2JqLT5ndF9ybykKQEAg LTI0MDAsNyArMjQxMCw3IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVj dCBpOTE1X3ZtYSAqdm1hLAogCQkJCQkJCSAgICAgdm1hLT5ub2RlLnN0YXJ0LAogCQkJCQkJCSAg ICAgdm1hLT5zaXplKTsKIAkJCWlmIChyZXQpCi0JCQkJZ290byBlcnJfcGFnZXM7CisJCQkJcmV0 dXJuIHJldDsKIAkJfQogCiAJCWFwcGd0dC0+YmFzZS5pbnNlcnRfZW50cmllcygmYXBwZ3R0LT5i YXNlLCB2bWEsIGNhY2hlX2xldmVsLApAQCAtMjQxNCwxNyArMjQyNCw2IEBAIHN0YXRpYyBpbnQg YWxpYXNpbmdfZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCX0KIAogCXJldHVy biAwOwotCi1lcnJfcGFnZXM6Ci0JaWYgKCEodm1hLT5mbGFncyAmIChJOTE1X1ZNQV9HTE9CQUxf QklORCB8IEk5MTVfVk1BX0xPQ0FMX0JJTkQpKSkgewotCQlpZiAodm1hLT5wYWdlcyAhPSB2bWEt Pm9iai0+bW0ucGFnZXMpIHsKLQkJCUdFTV9CVUdfT04oIXZtYS0+cGFnZXMpOwotCQkJc2dfZnJl ZV90YWJsZSh2bWEtPnBhZ2VzKTsKLQkJCWtmcmVlKHZtYS0+cGFnZXMpOwotCQl9Ci0JCXZtYS0+ cGFnZXMgPSBOVUxMOwotCX0KLQlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgdm9pZCBhbGlhc2lu Z19ndHRfdW5iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKQEAgLTI0NjIsNiArMjQ2MSwx OSBAQCB2b2lkIGk5MTVfZ2VtX2d0dF9maW5pc2hfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKIAlkbWFfdW5tYXBfc2coa2RldiwgcGFnZXMtPnNnbCwgcGFnZXMtPm5lbnRz LCBQQ0lfRE1BX0JJRElSRUNUSU9OQUwpOwogfQogCitzdGF0aWMgaW50IGdndHRfc2V0X3BhZ2Vz KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQoreworCWludCByZXQ7CisKKwlHRU1fQlVHX09OKHZtYS0+ cGFnZXMpOworCisJcmV0ID0gaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXModm1hKTsKKwlpZiAocmV0 KQorCQlyZXR1cm4gcmV0OworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIGk5MTVfZ3R0 X2NvbG9yX2FkanVzdChjb25zdCBzdHJ1Y3QgZHJtX21tX25vZGUgKm5vZGUsCiAJCQkJICB1bnNp Z25lZCBsb25nIGNvbG9yLAogCQkJCSAgdTY0ICpzdGFydCwKQEAgLTI4NjQsNiArMjg3Niw4IEBA IHN0YXRpYyBpbnQgZ2VuOF9nbWNoX3Byb2JlKHN0cnVjdCBpOTE1X2dndHQgKmdndHQpCiAJZ2d0 dC0+YmFzZS5jbGVhbnVwID0gZ2VuNl9nbWNoX3JlbW92ZTsKIAlnZ3R0LT5iYXNlLmJpbmRfdm1h ID0gZ2d0dF9iaW5kX3ZtYTsKIAlnZ3R0LT5iYXNlLnVuYmluZF92bWEgPSBnZ3R0X3VuYmluZF92 bWE7CisJZ2d0dC0+YmFzZS5zZXRfcGFnZXMgPSBnZ3R0X3NldF9wYWdlczsKKwlnZ3R0LT5iYXNl LmNsZWFyX3BhZ2VzID0gY2xlYXJfcGFnZXM7CiAJZ2d0dC0+YmFzZS5pbnNlcnRfcGFnZSA9IGdl bjhfZ2d0dF9pbnNlcnRfcGFnZTsKIAlnZ3R0LT5iYXNlLmNsZWFyX3JhbmdlID0gbm9wX2NsZWFy X3JhbmdlOwogCWlmICghVVNFU19GVUxMX1BQR1RUKGRldl9wcml2KSB8fCBpbnRlbF9zY2Fub3V0 X25lZWRzX3Z0ZF93YShkZXZfcHJpdikpCkBAIC0yOTIwLDYgKzI5MzQsOCBAQCBzdGF0aWMgaW50 IGdlbjZfZ21jaF9wcm9iZShzdHJ1Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCWdndHQtPmJhc2UuaW5z ZXJ0X2VudHJpZXMgPSBnZW42X2dndHRfaW5zZXJ0X2VudHJpZXM7CiAJZ2d0dC0+YmFzZS5iaW5k X3ZtYSA9IGdndHRfYmluZF92bWE7CiAJZ2d0dC0+YmFzZS51bmJpbmRfdm1hID0gZ2d0dF91bmJp bmRfdm1hOworCWdndHQtPmJhc2Uuc2V0X3BhZ2VzID0gZ2d0dF9zZXRfcGFnZXM7CisJZ2d0dC0+ YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwogCWdndHQtPmJhc2UuY2xlYW51cCA9IGdl bjZfZ21jaF9yZW1vdmU7CiAKIAlnZ3R0LT5pbnZhbGlkYXRlID0gZ2VuNl9nZ3R0X2ludmFsaWRh dGU7CkBAIC0yOTY1LDYgKzI5ODEsOCBAQCBzdGF0aWMgaW50IGk5MTVfZ21jaF9wcm9iZShzdHJ1 Y3QgaTkxNV9nZ3R0ICpnZ3R0KQogCWdndHQtPmJhc2UuY2xlYXJfcmFuZ2UgPSBpOTE1X2dndHRf Y2xlYXJfcmFuZ2U7CiAJZ2d0dC0+YmFzZS5iaW5kX3ZtYSA9IGdndHRfYmluZF92bWE7CiAJZ2d0 dC0+YmFzZS51bmJpbmRfdm1hID0gZ2d0dF91bmJpbmRfdm1hOworCWdndHQtPmJhc2Uuc2V0X3Bh Z2VzID0gZ2d0dF9zZXRfcGFnZXM7CisJZ2d0dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3Bh Z2VzOwogCWdndHQtPmJhc2UuY2xlYW51cCA9IGk5MTVfZ21jaF9yZW1vdmU7CiAKIAlnZ3R0LT5p bnZhbGlkYXRlID0gZ21jaF9nZ3R0X2ludmFsaWRhdGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5oCmluZGV4IDRjMmY3ZDdjMWU3ZC4uNTc3MzhhNjFlYTZlIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuaApAQCAtMzMwLDYgKzMzMCw4IEBAIHN0cnVjdCBpOTE1X2FkZHJlc3Nf c3BhY2UgewogCWludCAoKmJpbmRfdm1hKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkJCWVudW0g aTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKIAkJCXUzMiBmbGFncyk7CisJaW50ICgqc2V0 X3BhZ2VzKShzdHJ1Y3QgaTkxNV92bWEgKnZtYSk7CisJdm9pZCAoKmNsZWFyX3BhZ2VzKShzdHJ1 Y3QgaTkxNV92bWEgKnZtYSk7CiAKIAlJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RydWN0IGZhdWx0 X2F0dHIgZmF1bHRfYXR0cik7CiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92bWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKaW5kZXggOTU4YmUw YTk1OTYwLi44YjhkOWY0ZTMzOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwpAQCAtMjY2LDYg KzI2Niw4IEBAIGludCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJaWYgKGJpbmRfZmxhZ3MgPT0gMCkKIAkJcmV0 dXJuIDA7CiAKKwlHRU1fQlVHX09OKCF2bWEtPnBhZ2VzKTsKKwogCXRyYWNlX2k5MTVfdm1hX2Jp bmQodm1hLCBiaW5kX2ZsYWdzKTsKIAlyZXQgPSB2bWEtPnZtLT5iaW5kX3ZtYSh2bWEsIGNhY2hl X2xldmVsLCBiaW5kX2ZsYWdzKTsKIAlpZiAocmV0KQpAQCAtNDcxLDI1ICs0NzMsMzEgQEAgaTkx NV92bWFfaW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVu dCwgdTY0IGZsYWdzKQogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlHRU1fQlVHX09OKHZt YS0+cGFnZXMpOworCisJcmV0ID0gdm1hLT52bS0+c2V0X3BhZ2VzKHZtYSk7CisJaWYgKHJldCkK KwkJZ290byBlcnJfdW5waW47CisKIAlpZiAoZmxhZ3MgJiBQSU5fT0ZGU0VUX0ZJWEVEKSB7CiAJ CXU2NCBvZmZzZXQgPSBmbGFncyAmIFBJTl9PRkZTRVRfTUFTSzsKIAkJaWYgKCFJU19BTElHTkVE KG9mZnNldCwgYWxpZ25tZW50KSB8fAogCQkgICAgcmFuZ2Vfb3ZlcmZsb3dzKG9mZnNldCwgc2l6 ZSwgZW5kKSkgewogCQkJcmV0ID0gLUVJTlZBTDsKLQkJCWdvdG8gZXJyX3VucGluOworCQkJZ290 byBlcnJfY2xlYXI7CiAJCX0KIAogCQlyZXQgPSBpOTE1X2dlbV9ndHRfcmVzZXJ2ZSh2bWEtPnZt LCAmdm1hLT5ub2RlLAogCQkJCQkgICBzaXplLCBvZmZzZXQsIG9iai0+Y2FjaGVfbGV2ZWwsCiAJ CQkJCSAgIGZsYWdzKTsKIAkJaWYgKHJldCkKLQkJCWdvdG8gZXJyX3VucGluOworCQkJZ290byBl cnJfY2xlYXI7CiAJfSBlbHNlIHsKIAkJcmV0ID0gaTkxNV9nZW1fZ3R0X2luc2VydCh2bWEtPnZt LCAmdm1hLT5ub2RlLAogCQkJCQkgIHNpemUsIGFsaWdubWVudCwgb2JqLT5jYWNoZV9sZXZlbCwK IAkJCQkJICBzdGFydCwgZW5kLCBmbGFncyk7CiAJCWlmIChyZXQpCi0JCQlnb3RvIGVycl91bnBp bjsKKwkJCWdvdG8gZXJyX2NsZWFyOwogCiAJCUdFTV9CVUdfT04odm1hLT5ub2RlLnN0YXJ0IDwg c3RhcnQpOwogCQlHRU1fQlVHX09OKHZtYS0+bm9kZS5zdGFydCArIHZtYS0+bm9kZS5zaXplID4g ZW5kKTsKQEAgLTUwNCw2ICs1MTIsOCBAQCBpOTE1X3ZtYV9pbnNlcnQoc3RydWN0IGk5MTVfdm1h ICp2bWEsIHU2NCBzaXplLCB1NjQgYWxpZ25tZW50LCB1NjQgZmxhZ3MpCiAKIAlyZXR1cm4gMDsK IAorZXJyX2NsZWFyOgorCXZtYS0+dm0tPmNsZWFyX3BhZ2VzKHZtYSk7CiBlcnJfdW5waW46CiAJ aTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7CiAJcmV0dXJuIHJldDsKQEAgLTUxNyw2 ICs1MjcsOCBAQCBpOTE1X3ZtYV9yZW1vdmUoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJR0VNX0JV R19PTighZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKTsKIAlHRU1fQlVHX09OKHZt YS0+ZmxhZ3MgJiAoSTkxNV9WTUFfR0xPQkFMX0JJTkQgfCBJOTE1X1ZNQV9MT0NBTF9CSU5EKSk7 CiAKKwl2bWEtPnZtLT5jbGVhcl9wYWdlcyh2bWEpOworCiAJZHJtX21tX3JlbW92ZV9ub2RlKCZ2 bWEtPm5vZGUpOwogCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xpbmssICZ2bWEtPnZtLT51bmJv dW5kX2xpc3QpOwogCkBAIC01NjgsMTAgKzU4MCw4IEBAIGludCBfX2k5MTVfdm1hX2RvX3Bpbihz dHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAlyZXR1cm4gMDsKIAogZXJyX3JlbW92ZToKLQlpZiAoKGJv dW5kICYgSTkxNV9WTUFfQklORF9NQVNLKSA9PSAwKSB7Ci0JCUdFTV9CVUdfT04odm1hLT5wYWdl cyk7CisJaWYgKChib3VuZCAmIEk5MTVfVk1BX0JJTkRfTUFTSykgPT0gMCkKIAkJaTkxNV92bWFf cmVtb3ZlKHZtYSk7Ci0JfQogZXJyX3VucGluOgogCV9faTkxNV92bWFfdW5waW4odm1hKTsKIAly ZXR1cm4gcmV0OwpAQCAtNzE3LDEzICs3MjcsNiBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQogCX0KIAl2bWEtPmZsYWdzICY9IH4oSTkxNV9WTUFfR0xPQkFMX0JJ TkQgfCBJOTE1X1ZNQV9MT0NBTF9CSU5EKTsKIAotCWlmICh2bWEtPnBhZ2VzICE9IG9iai0+bW0u cGFnZXMpIHsKLQkJR0VNX0JVR19PTighdm1hLT5wYWdlcyk7Ci0JCXNnX2ZyZWVfdGFibGUodm1h LT5wYWdlcyk7Ci0JCWtmcmVlKHZtYS0+cGFnZXMpOwotCX0KLQl2bWEtPnBhZ2VzID0gTlVMTDsK LQogCWk5MTVfdm1hX3JlbW92ZSh2bWEpOwogCiBkZXN0cm95OgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19ndHQuYwppbmRleCBmMjExOGNmNTM1YTAuLjMzNmUxYWZiMjUwZiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZ3R0LmMKQEAgLTQzLDcgKzQz LDYgQEAgc3RhdGljIGludCBtb2NrX2JpbmRfcHBndHQoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJ CQkgICB1MzIgZmxhZ3MpCiB7CiAJR0VNX0JVR19PTihmbGFncyAmIEk5MTVfVk1BX0dMT0JBTF9C SU5EKTsKLQl2bWEtPnBhZ2VzID0gdm1hLT5vYmotPm1tLnBhZ2VzOwogCXZtYS0+ZmxhZ3MgfD0g STkxNV9WTUFfTE9DQUxfQklORDsKIAlyZXR1cm4gMDsKIH0KQEAgLTg0LDYgKzgzLDggQEAgbW9j a19wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAlwcGd0dC0+YmFzZS5pbnNl cnRfZW50cmllcyA9IG1vY2tfaW5zZXJ0X2VudHJpZXM7CiAJcHBndHQtPmJhc2UuYmluZF92bWEg PSBtb2NrX2JpbmRfcHBndHQ7CiAJcHBndHQtPmJhc2UudW5iaW5kX3ZtYSA9IG1vY2tfdW5iaW5k X3BwZ3R0OworCXBwZ3R0LT5iYXNlLnNldF9wYWdlcyA9IHBwZ3R0X3NldF9wYWdlczsKKwlwcGd0 dC0+YmFzZS5jbGVhcl9wYWdlcyA9IGNsZWFyX3BhZ2VzOwogCXBwZ3R0LT5iYXNlLmNsZWFudXAg PSBtb2NrX2NsZWFudXA7CiAKIAlyZXR1cm4gcHBndHQ7CkBAIC05MywxMiArOTQsNiBAQCBzdGF0 aWMgaW50IG1vY2tfYmluZF9nZ3R0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJICBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJCQkgIHUzMiBmbGFncykKIHsKLQlpbnQgZXJy OwotCi0JZXJyID0gaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXModm1hKTsKLQlpZiAoZXJyKQotCQly ZXR1cm4gZXJyOwotCiAJdm1hLT5mbGFncyB8PSBJOTE1X1ZNQV9HTE9CQUxfQklORCB8IEk5MTVf Vk1BX0xPQ0FMX0JJTkQ7CiAJcmV0dXJuIDA7CiB9CkBAIC0xMjQsNiArMTE5LDggQEAgdm9pZCBt b2NrX2luaXRfZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIAlnZ3R0LT5iYXNl Lmluc2VydF9lbnRyaWVzID0gbW9ja19pbnNlcnRfZW50cmllczsKIAlnZ3R0LT5iYXNlLmJpbmRf dm1hID0gbW9ja19iaW5kX2dndHQ7CiAJZ2d0dC0+YmFzZS51bmJpbmRfdm1hID0gbW9ja191bmJp bmRfZ2d0dDsKKwlnZ3R0LT5iYXNlLnNldF9wYWdlcyA9IGdndHRfc2V0X3BhZ2VzOworCWdndHQt PmJhc2UuY2xlYXJfcGFnZXMgPSBjbGVhcl9wYWdlczsKIAlnZ3R0LT5iYXNlLmNsZWFudXAgPSBt b2NrX2NsZWFudXA7CiAKIAlpOTE1X2FkZHJlc3Nfc3BhY2VfaW5pdCgmZ2d0dC0+YmFzZSwgaTkx NSwgImdsb2JhbCIpOwotLSAKMi4xMy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK