From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 5/9] drm/i915: Remove cs based page flip support, v2. Date: Thu, 26 May 2016 12:38:01 +0200 Message-ID: <1464259085-13604-6-git-send-email-maarten.lankhorst@linux.intel.com> References: <1464259085-13604-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id DE0456EA8F for ; Thu, 26 May 2016 10:38:10 +0000 (UTC) In-Reply-To: <1464259085-13604-1-git-send-email-maarten.lankhorst@linux.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 V2l0aCBtbWlvIGZsaXBzIG5vdyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyBpdCdzIHRpbWUg dG8gcmVtb3ZlCnN1cHBvcnQgZm9yIGNzIGZsaXBzLgoKQ2hhbmdlcyBzaW5jZSB2MToKLSBSZWJh c2UgZm9yIGxlZ2FjeSBjdXJzb3IgdXBkYXRlcy4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFu a2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgIHwgIDE5ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2lycS5jICAgICAgfCAxMjAgKystLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyB8IDM5MiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA5ICstCiA0IGZpbGVz IGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDUwNyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCmluZGV4IGI1MmMxYTVmMzQ1MS4uYjI5YmExNmM5MGIzIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtNjI4LDcgKzYyOCw2IEBAIHN0YXRpYyB2 b2lkIGk5MTVfZHVtcF9wYWdlZmxpcChzdHJ1Y3Qgc2VxX2ZpbGUgKm0sCiB7CiAJY29uc3QgY2hh ciBwaXBlID0gcGlwZV9uYW1lKGNydGMtPnBpcGUpOwogCXUzMiBwZW5kaW5nOwotCXUzMiBhZGRy OwogCWludCBpOwogCiAJcGVuZGluZyA9IGF0b21pY19yZWFkKCZ3b3JrLT5wZW5kaW5nKTsKQEAg LTY0MCw3ICs2MzksNiBAQCBzdGF0aWMgdm9pZCBpOTE1X2R1bXBfcGFnZWZsaXAoc3RydWN0IHNl cV9maWxlICptLAogCQkJICAgcGlwZSwgcGxhbmVfbmFtZShjcnRjLT5wbGFuZSkpOwogCX0KIAot CiAJZm9yIChpID0gMDsgaSA8IHdvcmstPm51bV9wbGFuZXM7IGkrKykgewogCQlzdHJ1Y3QgaW50 ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9IHdvcmstPm9sZF9wbGFuZV9zdGF0ZVtp XTsKIAkJc3RydWN0IGRybV9wbGFuZSAqcGxhbmUgPSBvbGRfcGxhbmVfc3RhdGUtPmJhc2UucGxh bmU7CkBAIC02NjQsMjIgKzY2Miw5IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHVtcF9wYWdlZmxpcChz dHJ1Y3Qgc2VxX2ZpbGUgKm0sCiAJCQkgICBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEs IHRydWUpKTsKIAl9CiAKLQlzZXFfcHJpbnRmKG0sICJGbGlwIHF1ZXVlZCBvbiBmcmFtZSAlZCwg KHdhcyByZWFkeSBvbiBmcmFtZSAlZCksIG5vdyAlZFxuIiwKLQkJICAgd29yay0+ZmxpcF9xdWV1 ZWRfdmJsYW5rLAotCQkgICB3b3JrLT5mbGlwX3JlYWR5X3ZibGFuaywKKwlzZXFfcHJpbnRmKG0s ICJGbGlwIHF1ZXVlZCBvbiBmcmFtZSAlZCwgbm93ICVkXG4iLAorCQkgICBwZW5kaW5nID8gd29y ay0+ZmxpcF9xdWV1ZWRfdmJsYW5rIDogLTEsCiAJCSAgIGludGVsX2NydGNfZ2V0X3ZibGFua19j b3VudGVyKGNydGMpKTsKLQlzZXFfcHJpbnRmKG0sICIlZCBwcmVwYXJlc1xuIiwgYXRvbWljX3Jl YWQoJndvcmstPnBlbmRpbmcpKTsKLQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49 IDQpCi0JCWFkZHIgPSBJOTE1X0hJX0RJU1BCQVNFKEk5MTVfUkVBRChEU1BTVVJGKGNydGMtPnBs YW5lKSkpOwotCWVsc2UKLQkJYWRkciA9IEk5MTVfUkVBRChEU1BBRERSKGNydGMtPnBsYW5lKSk7 Ci0Jc2VxX3ByaW50ZihtLCAiQ3VycmVudCBzY2Fub3V0IGFkZHJlc3MgMHglMDh4XG4iLCBhZGRy KTsKLQotCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpIHsKLQkJc2VxX3ByaW50ZihtLCAiTmV3 IGZyYW1lYnVmZmVyIGFkZHJlc3MgMHglMDhseFxuIiwgKGxvbmcpd29yay0+Z3R0X29mZnNldCk7 Ci0JCXNlcV9wcmludGYobSwgIk1NSU8gdXBkYXRlIGNvbXBsZXRlZD8gJWRcbiIsICBhZGRyID09 IHdvcmstPmd0dF9vZmZzZXQpOwotCX0KIH0KIAogc3RhdGljIGludCBpOTE1X2dlbV9wYWdlZmxp cF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2ly cS5jCmluZGV4IGNhYWYxZTJhN2JjMS4uZmMyYjJhN2UyYzU1IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMKQEAgLTEzNiw2ICsxMzYsMTIgQEAgc3RhdGljIGNvbnN0IHUzMiBocGRfYnh0W0hQRF9O VU1fUElOU10gPSB7CiAJUE9TVElOR19SRUFEKHR5cGUjI0lJUik7IFwKIH0gd2hpbGUgKDApCiAK K3N0YXRpYyB2b2lkCitpbnRlbF9maW5pc2hfcGFnZV9mbGlwX2NzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgcGlwZSkKK3sKKwlEUk1fREVCVUdfS01TKCJGaW5p c2hlZCBwYWdlIGZsaXBcbiIpOworfQorCiAvKgogICogV2Ugc2hvdWxkIGNsZWFyIElNUiBhdCBw cmVpbnN0YWxsL3VuaW5zdGFsbCwgYW5kIGp1c3QgY2hlY2sgYXQgcG9zdGluc3RhbGwuCiAgKi8K QEAgLTE2MzEsMTYgKzE2MzcsMTEgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaXJxX2hhbmRsZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcG1faWlyKQogCX0KIH0KIAot c3RhdGljIGJvb2wgaW50ZWxfcGlwZV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKK3N0YXRpYyB2b2lkIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgICBlbnVtIHBpcGUgcGlwZSkK IHsKLQlib29sIHJldDsKLQotCXJldCA9IGRybV9oYW5kbGVfdmJsYW5rKGRldl9wcml2LT5kZXYs IHBpcGUpOwotCWlmIChyZXQpCisJaWYgKGRybV9oYW5kbGVfdmJsYW5rKGRldl9wcml2LT5kZXYs IHBpcGUpKQogCQlpbnRlbF9maW5pc2hfcGFnZV9mbGlwX21taW8oZGV2X3ByaXYsIHBpcGUpOwot Ci0JcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIHZvaWQgdmFsbGV5dmlld19waXBlc3RhdF9pcnFf YWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKQEAgLTE3MDcsOSArMTcwOCw4 IEBAIHN0YXRpYyB2b2lkIHZhbGxleXZpZXdfcGlwZXN0YXRfaXJxX2hhbmRsZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWVudW0gcGlwZSBwaXBlOwogCiAJZm9yX2VhY2hf cGlwZShkZXZfcHJpdiwgcGlwZSkgewotCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfU1RB UlRfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMgJiYKLQkJICAgIGludGVsX3BpcGVfaGFuZGxlX3Zi bGFuayhkZXZfcHJpdiwgcGlwZSkpCi0JCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2X3ByaXYs IHBpcGUpOworCQlpZiAocGlwZV9zdGF0c1twaXBlXSAmIFBJUEVfU1RBUlRfVkJMQU5LX0lOVEVS UlVQVF9TVEFUVVMpCisJCQlpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUp OwogCiAJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYgUExBTkVfRkxJUF9ET05FX0lOVF9TVEFUVVNf VkxWKQogCQkJaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9jcyhkZXZfcHJpdiwgcGlwZSk7CkBAIC0y MTU1LDkgKzIxNTUsOCBAQCBzdGF0aWMgdm9pZCBpbGtfZGlzcGxheV9pcnFfaGFuZGxlcihzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCURSTV9FUlJPUigiUG9pc29uIGludGVy cnVwdFxuIik7CiAKIAlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7Ci0JCWlmIChkZV9p aXIgJiBERV9QSVBFX1ZCTEFOSyhwaXBlKSAmJgotCQkgICAgaW50ZWxfcGlwZV9oYW5kbGVfdmJs YW5rKGRldl9wcml2LCBwaXBlKSkKLQkJCWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXZfcHJpdiwg cGlwZSk7CisJCWlmIChkZV9paXIgJiBERV9QSVBFX1ZCTEFOSyhwaXBlKSkKKwkJCWludGVsX3Bp cGVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSk7CiAKIAkJaWYgKGRlX2lpciAmIERFX1BJ UEVfRklGT19VTkRFUlJVTihwaXBlKSkKIAkJCWludGVsX2NwdV9maWZvX3VuZGVycnVuX2lycV9o YW5kbGVyKGRldl9wcml2LCBwaXBlKTsKQEAgLTIyMDYsOSArMjIwNSw4IEBAIHN0YXRpYyB2b2lk IGl2Yl9kaXNwbGF5X2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKIAkJaW50ZWxfb3ByZWdpb25fYXNsZV9pbnRyKGRldl9wcml2KTsKIAogCWZvcl9lYWNoX3Bp cGUoZGV2X3ByaXYsIHBpcGUpIHsKLQkJaWYgKGRlX2lpciAmIChERV9QSVBFX1ZCTEFOS19JVkIo cGlwZSkpICYmCi0JCSAgICBpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUp KQotCQkJaW50ZWxfY2hlY2tfcGFnZV9mbGlwKGRldl9wcml2LCBwaXBlKTsKKwkJaWYgKGRlX2lp ciAmIChERV9QSVBFX1ZCTEFOS19JVkIocGlwZSkpKQorCQkJaW50ZWxfcGlwZV9oYW5kbGVfdmJs YW5rKGRldl9wcml2LCBwaXBlKTsKIAogCQkvKiBwbGFuZS9waXBlcyBtYXAgMToxIG9uIGlsaysg Ki8KIAkJaWYgKGRlX2lpciAmIERFX1BMQU5FX0ZMSVBfRE9ORV9JVkIocGlwZSkpCkBAIC0yNDA3 LDkgKzI0MDUsOCBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpCiAJCXJldCA9IElSUV9IQU5ETEVEOwogCQlJOTE1 X1dSSVRFKEdFTjhfREVfUElQRV9JSVIocGlwZSksIGlpcik7CiAKLQkJaWYgKGlpciAmIEdFTjhf UElQRV9WQkxBTksgJiYKLQkJICAgIGludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwg cGlwZSkpCi0JCQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUpOworCQlpZiAo aWlyICYgR0VOOF9QSVBFX1ZCTEFOSykKKwkJCWludGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXZf cHJpdiwgcGlwZSk7CiAKIAkJZmxpcF9kb25lID0gaWlyOwogCQlpZiAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSA5KQpAQCAtMzk3NSwzNyArMzk3Miw2IEBAIHN0YXRpYyBpbnQgaTh4eF9p cnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gMDsKIH0KIAot LyoKLSAqIFJldHVybnMgdHJ1ZSB3aGVuIGEgcGFnZSBmbGlwIGhhcyBjb21wbGV0ZWQuCi0gKi8K LXN0YXRpYyBib29sIGk4eHhfaGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkgICAgICAgaW50IHBsYW5lLCBpbnQgcGlwZSwgdTMyIGlpcikKLXsKLQl1 MTYgZmxpcF9wZW5kaW5nID0gRElTUExBWV9QTEFORV9GTElQX1BFTkRJTkcocGxhbmUpOwotCi0J aWYgKCFpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUpKQotCQlyZXR1cm4g ZmFsc2U7Ci0KLQlpZiAoKGlpciAmIGZsaXBfcGVuZGluZykgPT0gMCkKLQkJZ290byBjaGVja19w YWdlX2ZsaXA7Ci0KLQkvKiBXZSBkZXRlY3QgRmxpcERvbmUgYnkgbG9va2luZyBmb3IgdGhlIGNo YW5nZSBpbiBQZW5kaW5nRmxpcCBmcm9tICcxJwotCSAqIHRvICcwJyBvbiB0aGUgZm9sbG93aW5n IHZibGFuaywgaS5lLiBJSVIgaGFzIHRoZSBQZW5kaW5nZmxpcAotCSAqIGFzc2VydGVkIGZvbGxv d2luZyB0aGUgTUlfRElTUExBWV9GTElQLCBidXQgSVNSIGlzIGRlYXNzZXJ0ZWQsIGhlbmNlCi0J ICogdGhlIGZsaXAgaXMgY29tcGxldGVkIChubyBsb25nZXIgcGVuZGluZykuIFNpbmNlIHRoaXMg ZG9lc24ndCByYWlzZQotCSAqIGFuIGludGVycnVwdCBwZXIgc2UsIHdlIHdhdGNoIGZvciB0aGUg Y2hhbmdlIGF0IHZibGFuay4KLQkgKi8KLQlpZiAoSTkxNV9SRUFEMTYoSVNSKSAmIGZsaXBfcGVu ZGluZykKLQkJZ290byBjaGVja19wYWdlX2ZsaXA7Ci0KLQlpbnRlbF9maW5pc2hfcGFnZV9mbGlw X2NzKGRldl9wcml2LCBwaXBlKTsKLQlyZXR1cm4gdHJ1ZTsKLQotY2hlY2tfcGFnZV9mbGlwOgot CWludGVsX2NoZWNrX3BhZ2VfZmxpcChkZXZfcHJpdiwgcGlwZSk7Ci0JcmV0dXJuIGZhbHNlOwot fQotCiBzdGF0aWMgaXJxcmV0dXJuX3QgaTh4eF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICph cmcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGFyZzsKQEAgLTQwNTgsMTMgKzQwMjQs OCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgaTh4eF9pcnFfaGFuZGxlcihpbnQgaXJxLCB2b2lkICph cmcpCiAJCQlub3RpZnlfcmluZygmZGV2X3ByaXYtPmVuZ2luZVtSQ1NdKTsKIAogCQlmb3JfZWFj aF9waXBlKGRldl9wcml2LCBwaXBlKSB7Ci0JCQlpbnQgcGxhbmUgPSBwaXBlOwotCQkJaWYgKEhB U19GQkMoZGV2X3ByaXYpKQotCQkJCXBsYW5lID0gIXBsYW5lOwotCi0JCQlpZiAocGlwZV9zdGF0 c1twaXBlXSAmIFBJUEVfVkJMQU5LX0lOVEVSUlVQVF9TVEFUVVMgJiYKLQkJCSAgICBpOHh4X2hh bmRsZV92YmxhbmsoZGV2X3ByaXYsIHBsYW5lLCBwaXBlLCBpaXIpKQotCQkJCWZsaXBfbWFzayAm PSB+RElTUExBWV9QTEFORV9GTElQX1BFTkRJTkcocGxhbmUpOworCQkJaWYgKHBpcGVfc3RhdHNb cGlwZV0gJiBQSVBFX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTKQorCQkJCWludGVsX3BpcGVfaGFu ZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSk7CiAKIAkJCWlmIChwaXBlX3N0YXRzW3BpcGVdICYg UElQRV9DUkNfRE9ORV9JTlRFUlJVUFRfU1RBVFVTKQogCQkJCWk5eHhfcGlwZV9jcmNfaXJxX2hh bmRsZXIoZGV2X3ByaXYsIHBpcGUpOwpAQCAtNDE2NCwzNyArNDEyNSw2IEBAIHN0YXRpYyBpbnQg aTkxNV9pcnFfcG9zdGluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gMDsK IH0KIAotLyoKLSAqIFJldHVybnMgdHJ1ZSB3aGVuIGEgcGFnZSBmbGlwIGhhcyBjb21wbGV0ZWQu Ci0gKi8KLXN0YXRpYyBib29sIGk5MTVfaGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCi0JCQkgICAgICAgaW50IHBsYW5lLCBpbnQgcGlwZSwgdTMyIGlpcikK LXsKLQl1MzIgZmxpcF9wZW5kaW5nID0gRElTUExBWV9QTEFORV9GTElQX1BFTkRJTkcocGxhbmUp OwotCi0JaWYgKCFpbnRlbF9waXBlX2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUpKQotCQly ZXR1cm4gZmFsc2U7Ci0KLQlpZiAoKGlpciAmIGZsaXBfcGVuZGluZykgPT0gMCkKLQkJZ290byBj aGVja19wYWdlX2ZsaXA7Ci0KLQkvKiBXZSBkZXRlY3QgRmxpcERvbmUgYnkgbG9va2luZyBmb3Ig dGhlIGNoYW5nZSBpbiBQZW5kaW5nRmxpcCBmcm9tICcxJwotCSAqIHRvICcwJyBvbiB0aGUgZm9s bG93aW5nIHZibGFuaywgaS5lLiBJSVIgaGFzIHRoZSBQZW5kaW5nZmxpcAotCSAqIGFzc2VydGVk IGZvbGxvd2luZyB0aGUgTUlfRElTUExBWV9GTElQLCBidXQgSVNSIGlzIGRlYXNzZXJ0ZWQsIGhl bmNlCi0JICogdGhlIGZsaXAgaXMgY29tcGxldGVkIChubyBsb25nZXIgcGVuZGluZykuIFNpbmNl IHRoaXMgZG9lc24ndCByYWlzZQotCSAqIGFuIGludGVycnVwdCBwZXIgc2UsIHdlIHdhdGNoIGZv ciB0aGUgY2hhbmdlIGF0IHZibGFuay4KLQkgKi8KLQlpZiAoSTkxNV9SRUFEKElTUikgJiBmbGlw X3BlbmRpbmcpCi0JCWdvdG8gY2hlY2tfcGFnZV9mbGlwOwotCi0JaW50ZWxfZmluaXNoX3BhZ2Vf ZmxpcF9jcyhkZXZfcHJpdiwgcGlwZSk7Ci0JcmV0dXJuIHRydWU7Ci0KLWNoZWNrX3BhZ2VfZmxp cDoKLQlpbnRlbF9jaGVja19wYWdlX2ZsaXAoZGV2X3ByaXYsIHBpcGUpOwotCXJldHVybiBmYWxz ZTsKLX0KLQogc3RhdGljIGlycXJldHVybl90IGk5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBhcmc7CkBAIC00MjU1LDEzICs0 MTg1LDggQEAgc3RhdGljIGlycXJldHVybl90IGk5MTVfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKQogCQkJbm90aWZ5X3JpbmcoJmRldl9wcml2LT5lbmdpbmVbUkNTXSk7CiAKIAkJZm9y X2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkgewotCQkJaW50IHBsYW5lID0gcGlwZTsKLQkJCWlm IChIQVNfRkJDKGRldl9wcml2KSkKLQkJCQlwbGFuZSA9ICFwbGFuZTsKLQotCQkJaWYgKHBpcGVf c3RhdHNbcGlwZV0gJiBQSVBFX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTICYmCi0JCQkgICAgaTkx NV9oYW5kbGVfdmJsYW5rKGRldl9wcml2LCBwbGFuZSwgcGlwZSwgaWlyKSkKLQkJCQlmbGlwX21h c2sgJj0gfkRJU1BMQVlfUExBTkVfRkxJUF9QRU5ESU5HKHBsYW5lKTsKKwkJCWlmIChwaXBlX3N0 YXRzW3BpcGVdICYgUElQRV9WQkxBTktfSU5URVJSVVBUX1NUQVRVUykKKwkJCQlpbnRlbF9waXBl X2hhbmRsZV92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwogCiAJCQlpZiAocGlwZV9zdGF0c1twaXBl XSAmIFBJUEVfTEVHQUNZX0JMQ19FVkVOVF9TVEFUVVMpCiAJCQkJYmxjX2V2ZW50ID0gdHJ1ZTsK QEAgLTQ0ODksOSArNDQxNCw4IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBpOTY1X2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKmFyZykKIAkJCW5vdGlmeV9yaW5nKCZkZXZfcHJpdi0+ZW5naW5lW1ZD U10pOwogCiAJCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKLQkJCWlmIChwaXBlX3N0 YXRzW3BpcGVdICYgUElQRV9TVEFSVF9WQkxBTktfSU5URVJSVVBUX1NUQVRVUyAmJgotCQkJICAg IGk5MTVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSwgcGlwZSwgaWlyKSkKLQkJCQlmbGlw X21hc2sgJj0gfkRJU1BMQVlfUExBTkVfRkxJUF9QRU5ESU5HKHBpcGUpOworCQkJaWYgKHBpcGVf c3RhdHNbcGlwZV0gJiBQSVBFX1NUQVJUX1ZCTEFOS19JTlRFUlJVUFRfU1RBVFVTKQorCQkJCWlu dGVsX3BpcGVfaGFuZGxlX3ZibGFuayhkZXZfcHJpdiwgcGlwZSk7CiAKIAkJCWlmIChwaXBlX3N0 YXRzW3BpcGVdICYgUElQRV9MRUdBQ1lfQkxDX0VWRU5UX1NUQVRVUykKIAkJCQlibGNfZXZlbnQg PSB0cnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCmluZGV4IDA1MzFjZGIxY2Zh MS4uMjMyNGI3NGY3MmY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC00 OCwxMSArNDgsNiBAQAogI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+CiAjaW5jbHVkZSA8 bGludXgvZG1hLWJ1Zi5oPgogCi1zdGF0aWMgYm9vbCBpc19tbWlvX3dvcmsoc3RydWN0IGludGVs X2ZsaXBfd29yayAqd29yaykKLXsKLQlyZXR1cm4gIXdvcmstPmZsaXBfcXVldWVkX3JlcTsKLX0K LQogLyogUHJpbWFyeSBwbGFuZSBmb3JtYXRzIGZvciBnZW4gPD0gMyAqLwogc3RhdGljIGNvbnN0 IHVpbnQzMl90IGk4eHhfcHJpbWFyeV9mb3JtYXRzW10gPSB7CiAJRFJNX0ZPUk1BVF9DOCwKQEAg LTMxMDMsMTQgKzMwOTgsNiBAQCBpbnRlbF9waXBlX3NldF9iYXNlX2F0b21pYyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAogCXJldHVybiAtRU5PREVW OwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9jb21wbGV0ZV9wYWdlX2ZsaXBzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKLXsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YzsKLQot CWZvcl9lYWNoX2ludGVsX2NydGMoZGV2X3ByaXYtPmRldiwgY3J0YykKLQkJaW50ZWxfZmluaXNo X3BhZ2VfZmxpcF9jcyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGlu dGVsX3VwZGF0ZV9wcmltYXJ5X3BsYW5lcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YzsKQEAgLTMxNTEsMTMgKzMxMzgsNiBAQCB2b2lkIGludGVsX3By ZXBhcmVfcmVzZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiB2b2lkIGlu dGVsX2ZpbmlzaF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0J LyoKLQkgKiBGbGlwcyBpbiB0aGUgcmluZ3Mgd2lsbCBiZSBudWtlZCBieSB0aGUgcmVzZXQsCi0J ICogc28gY29tcGxldGUgYWxsIHBlbmRpbmcgZmxpcHMgc28gdGhhdCB1c2VyIHNwYWNlCi0JICog d2lsbCBnZXQgaXRzIGV2ZW50cyBhbmQgbm90IGdldCBzdHVjay4KLQkgKi8KLQlpbnRlbF9jb21w bGV0ZV9wYWdlX2ZsaXBzKGRldl9wcml2KTsKLQogCS8qIG5vIHJlc2V0IHN1cHBvcnQgZm9yIGdl bjIgKi8KIAlpZiAoSVNfR0VOMihkZXZfcHJpdikpCiAJCXJldHVybjsKQEAgLTM4MzUsMjYgKzM4 MTUsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfd2FpdF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMpCiAJaWYgKHJldCA8IDApCiAJCXJldHVybiByZXQ7CiAKLQlpZiAo cmV0ID09IDApIHsKLQkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKGNydGMpOwotCQlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrOwotCi0JCXNwaW5fbG9j a19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Ci0KLQkJLyoKLQkJICogSWYgd2UncmUgd2FpdGluZyBm b3IgcGFnZSBmbGlwcywgaXQncyB0aGUgZmlyc3QKLQkJICogZmxpcCBvbiB0aGUgbGlzdCB0aGF0 J3Mgc3R1Y2suCi0JCSAqLwotCQl3b3JrID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZpbnRl bF9jcnRjLT5mbGlwX3dvcmssCi0JCQkJCQlzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrLCBoZWFkKTsK LQotCQlpZiAod29yayAmJiAhaXNfbW1pb193b3JrKHdvcmspICYmCi0JCSAgICAhd29ya19idXN5 KCZ3b3JrLT51bnBpbl93b3JrKSkgewotCQkJV0FSTl9PTkNFKDEsICJSZW1vdmluZyBzdHVjayBw YWdlIGZsaXBcbiIpOwotCQkJcGFnZV9mbGlwX2NvbXBsZXRlZChpbnRlbF9jcnRjLCB3b3JrKTsK LQkJfQotCQlzcGluX3VubG9ja19pcnEoJmRldi0+ZXZlbnRfbG9jayk7Ci0JfQorCVdBUk4ocmV0 ID09IDAsICJTdHVjayBwYWdlIGZsaXBcbiIpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMTAzMSw5 ICsxMDk5Miw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3VucGluX3dvcmtfZm4oc3RydWN0IHdvcmtf c3RydWN0ICpfX3dvcmspCiAJaWYgKHdvcmstPmZyZWVfbmV3X2NydGNfc3RhdGUpCiAJCWludGVs X2NydGNfZGVzdHJveV9zdGF0ZShjcnRjLCAmd29yay0+bmV3X2NydGNfc3RhdGUtPmJhc2UpOwog Ci0JaWYgKHdvcmstPmZsaXBfcXVldWVkX3JlcSkKLQkJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVy ZW5jZSh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpOwotCiAJZm9yIChpID0gMDsgaSA8IHdvcmstPm51 bV9wbGFuZXM7IGkrKykgewogCQlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9z dGF0ZSA9CiAJCQl3b3JrLT5vbGRfcGxhbmVfc3RhdGVbaV07CkBAIC0xMTA2Niw3NSArMTEwMjQs NiBAQCBzdGF0aWMgdm9pZCBpbnRlbF91bnBpbl93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAq X193b3JrKQogCWtmcmVlKHdvcmspOwogfQogCi0vKiBJcyAnYScgYWZ0ZXIgb3IgZXF1YWwgdG8g J2InPyAqLwotc3RhdGljIGJvb2wgZzR4X2ZsaXBfY291bnRfYWZ0ZXJfZXEodTMyIGEsIHUzMiBi KQotewotCXJldHVybiAhKChhIC0gYikgJiAweDgwMDAwMDAwKTsKLX0KLQotc3RhdGljIGJvb2wg X19wYWdlZmxpcF9maW5pc2hlZF9jcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKLQkJCQkgICBz dHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwotCXVuc2lnbmVkIHJlc2V0X2NvdW50ZXI7Ci0KLQlyZXNldF9jb3Vu dGVyID0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsKLQlpZiAoY3J0 Yy0+cmVzZXRfY291bnRlciAhPSByZXNldF9jb3VudGVyKQotCQlyZXR1cm4gdHJ1ZTsKLQotCS8q Ci0JICogVGhlIHJlbGV2YW50IHJlZ2lzdGVycyBkb2VuJ3QgZXhpc3Qgb24gcHJlLWN0Zy4KLQkg KiBBcyB0aGUgZmxpcCBkb25lIGludGVycnVwdCBkb2Vzbid0IHRyaWdnZXIgZm9yIG1taW8KLQkg KiBmbGlwcyBvbiBnbWNoIHBsYXRmb3JtcywgYSBmbGlwIGNvdW50IGNoZWNrIGlzbid0Ci0JICog cmVhbGx5IG5lZWRlZCB0aGVyZS4gQnV0IHNpbmNlIGN0ZyBoYXMgdGhlIHJlZ2lzdGVycywKLQkg KiBpbmNsdWRlIGl0IGluIHRoZSBjaGVjayBhbnl3YXkuCi0JICovCi0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgNSAmJiAhSVNfRzRYKGRldikpCi0JCXJldHVybiB0cnVlOwotCi0JLyoKLQkg KiBCRFcgc2lnbmFscyBmbGlwIGRvbmUgaW1tZWRpYXRlbHkgaWYgdGhlIHBsYW5lCi0JICogaXMg ZGlzYWJsZWQsIGV2ZW4gaWYgdGhlIHBsYW5lIGVuYWJsZSBpcyBhbHJlYWR5Ci0JICogYXJtZWQg dG8gb2NjdXIgYXQgdGhlIG5leHQgdmJsYW5rIDooCi0JICovCi0KLQkvKgotCSAqIEEgRFNQU1VS RkxJVkUgY2hlY2sgaXNuJ3QgZW5vdWdoIGluIGNhc2UgdGhlIG1taW8gYW5kIENTIGZsaXBzCi0J ICogdXNlZCB0aGUgc2FtZSBiYXNlIGFkZHJlc3MuIEluIHRoYXQgY2FzZSB0aGUgbW1pbyBmbGlw IG1pZ2h0Ci0JICogaGF2ZSBjb21wbGV0ZWQsIGJ1dCB0aGUgQ1MgaGFzbid0IGV2ZW4gZXhlY3V0 ZWQgdGhlIGZsaXAgeWV0LgotCSAqCi0JICogQSBmbGlwIGNvdW50IGNoZWNrIGlzbid0IGVub3Vn aCBhcyB0aGUgQ1MgbWlnaHQgaGF2ZSB1cGRhdGVkCi0JICogdGhlIGJhc2UgYWRkcmVzcyBqdXN0 IGFmdGVyIHN0YXJ0IG9mIHZibGFuaywgYnV0IGJlZm9yZSB3ZQotCSAqIG1hbmFnZWQgdG8gcHJv Y2VzcyB0aGUgaW50ZXJydXB0LiBUaGlzIG1lYW5zIHdlJ2QgY29tcGxldGUgdGhlCi0JICogQ1Mg ZmxpcCB0b28gc29vbi4KLQkgKgotCSAqIENvbWJpbmluZyBib3RoIGNoZWNrcyBzaG91bGQgZ2V0 IHVzIGEgZ29vZCBlbm91Z2ggcmVzdWx0LiBJdCBtYXkKLQkgKiBzdGlsbCBoYXBwZW4gdGhhdCB0 aGUgQ1MgZmxpcCBoYXMgYmVlbiBleGVjdXRlZCwgYnV0IGhhcyBub3QKLQkgKiB5ZXQgYWN0dWFs bHkgY29tcGxldGVkLiBCdXQgaW4gY2FzZSB0aGUgYmFzZSBhZGRyZXNzIGlzIHRoZSBzYW1lCi0J ICogYW55d2F5LCB3ZSBkb24ndCByZWFsbHkgY2FyZS4KLQkgKi8KLQlyZXR1cm4gKEk5MTVfUkVB RChEU1BTVVJGTElWRShjcnRjLT5wbGFuZSkpICYgfjB4ZmZmKSA9PQotCQl3b3JrLT5ndHRfb2Zm c2V0ICYmCi0JCWc0eF9mbGlwX2NvdW50X2FmdGVyX2VxKEk5MTVfUkVBRChQSVBFX0ZMSVBDT1VO VF9HNFgoY3J0Yy0+cGlwZSkpLAotCQkJCQl3b3JrLT5mbGlwX2NvdW50KTsKLX0KLQotc3RhdGlj IGJvb2wKLV9fcGFnZWZsaXBfZmluaXNoZWRfbW1pbyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywK LQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQotewotCS8qCi0JICogTU1J TyB3b3JrIGNvbXBsZXRlcyB3aGVuIHZibGFuayBpcyBkaWZmZXJlbnQgZnJvbQotCSAqIGZsaXBf cXVldWVkX3ZibGFuay4KLQkgKgotCSAqIFJlc2V0IGNvdW50ZXIgdmFsdWUgZG9lc24ndCBtYXR0 ZXIsIHRoaXMgaXMgaGFuZGxlZCBieQotCSAqIGk5MTVfd2FpdF9yZXF1ZXN0IGZpbmlzaGluZyBl YXJseSwgc28gbm8gbmVlZCB0byBoYW5kbGUKLQkgKiByZXNldCBoZXJlLgotCSAqLwotCXJldHVy biBpbnRlbF9jcnRjX2dldF92YmxhbmtfY291bnRlcihjcnRjKSAhPSB3b3JrLT5mbGlwX3F1ZXVl ZF92Ymxhbms7Ci19Ci0KIAogc3RhdGljIGJvb2wgcGFnZWZsaXBfZmluaXNoZWQoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCiAJCQkgICAgICBzdHJ1Y3QgaW50ZWxfZmxpcF93b3JrICp3b3JrKQpA QCAtMTExNDQsNDQgKzExMDMzLDExIEBAIHN0YXRpYyBib29sIHBhZ2VmbGlwX2ZpbmlzaGVkKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCiAJc21wX3JtYigpOwogCi0JaWYgKGlzX21taW9fd29y ayh3b3JrKSkKLQkJcmV0dXJuIF9fcGFnZWZsaXBfZmluaXNoZWRfbW1pbyhjcnRjLCB3b3JrKTsK LQllbHNlCi0JCXJldHVybiBfX3BhZ2VmbGlwX2ZpbmlzaGVkX2NzKGNydGMsIHdvcmspOwotfQot Ci12b2lkIGludGVsX2ZpbmlzaF9wYWdlX2ZsaXBfY3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LCBpbnQgcGlwZSkKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3By aXYtPmRldjsKLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkZXZfcHJpdi0+cGlwZV90b19jcnRj X21hcHBpbmdbcGlwZV07Ci0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRl bF9jcnRjKGNydGMpOwotCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmsgKndvcms7Ci0JdW5zaWduZWQg bG9uZyBmbGFnczsKLQotCS8qIElnbm9yZSBlYXJseSB2YmxhbmsgaXJxcyAqLwotCWlmICghY3J0 YykKLQkJcmV0dXJuOwotCiAJLyoKLQkgKiBUaGlzIGlzIGNhbGxlZCBib3RoIGJ5IGlycSBoYW5k bGVycyBhbmQgdGhlIHJlc2V0IGNvZGUgKHRvIGNvbXBsZXRlCi0JICogbG9zdCBwYWdlZmxpcHMp IHNvIG5lZWRzIHRoZSBmdWxsIGlycXNhdmUgc3BpbmxvY2tzLgorCSAqIE1NSU8gd29yayBjb21w bGV0ZXMgd2hlbiB2YmxhbmsgaXMgZGlmZmVyZW50IGZyb20KKwkgKiBmbGlwX3F1ZXVlZF92Ymxh bmsuCiAJICovCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOwot CXdoaWxlICghbGlzdF9lbXB0eSgmaW50ZWxfY3J0Yy0+ZmxpcF93b3JrKSkgewotCQl3b3JrID0g bGlzdF9maXJzdF9lbnRyeSgmaW50ZWxfY3J0Yy0+ZmxpcF93b3JrLAotCQkJCQlzdHJ1Y3QgaW50 ZWxfZmxpcF93b3JrLAotCQkJCQloZWFkKTsKLQotCQlpZiAoaXNfbW1pb193b3JrKHdvcmspKQot CQkJYnJlYWs7Ci0KLQkJaWYgKCFwYWdlZmxpcF9maW5pc2hlZChpbnRlbF9jcnRjLCB3b3JrKSB8 fAotCQkgICAgd29ya19idXN5KCZ3b3JrLT51bnBpbl93b3JrKSkKLQkJCWJyZWFrOwotCi0JCXBh Z2VfZmxpcF9jb21wbGV0ZWQoaW50ZWxfY3J0Yywgd29yayk7Ci0JfQotCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmRldi0+ZXZlbnRfbG9jaywgZmxhZ3MpOworCXJldHVybiBpbnRlbF9jcnRjX2dl dF92YmxhbmtfY291bnRlcihjcnRjKSAhPSB3b3JrLT5mbGlwX3F1ZXVlZF92Ymxhbms7CiB9CiAK IHZvaWQgaW50ZWxfZmluaXNoX3BhZ2VfZmxpcF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IHBpcGUpCkBAIC0xMTIwNiw5ICsxMTA2Miw2IEBAIHZvaWQgaW50ZWxf ZmluaXNoX3BhZ2VfZmxpcF9tbWlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwg aW50IHBpcGUpCiAJCQkJCXN0cnVjdCBpbnRlbF9mbGlwX3dvcmssCiAJCQkJCWhlYWQpOwogCi0J CWlmICghaXNfbW1pb193b3JrKHdvcmspKQotCQkJYnJlYWs7Ci0KIAkJaWYgKCFwYWdlZmxpcF9m aW5pc2hlZChpbnRlbF9jcnRjLCB3b3JrKSB8fAogCQkgICAgd29ya19idXN5KCZ3b3JrLT51bnBp bl93b3JrKSkKIAkJCWJyZWFrOwpAQCAtMTEyMTgsMTYgKzExMDcxLDYgQEAgdm9pZCBpbnRlbF9m aW5pc2hfcGFnZV9mbGlwX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBp bnQgcGlwZSkKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPmV2ZW50X2xvY2ssIGZsYWdz KTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIGludGVsX21hcmtfcGFnZV9mbGlwX2FjdGl2ZShz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKLQkJCQkJICAgICAgIHN0cnVjdCBpbnRlbF9mbGlwX3dv cmsgKndvcmspCi17Ci0Jd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID0gaW50ZWxfY3J0Y19nZXRf dmJsYW5rX2NvdW50ZXIoY3J0Yyk7Ci0KLQkvKiBFbnN1cmUgdGhhdCB0aGUgd29yayBpdGVtIGlz IGNvbnNpc3RlbnQgd2hlbiBhY3RpdmF0aW5nIGl0IC4uLiAqLwotCXNtcF9tYl9fYmVmb3JlX2F0 b21pYygpOwotCWF0b21pY19zZXQoJndvcmstPnBlbmRpbmcsIDEpOwotfQotCiBzdGF0aWMgaW50 IGludGVsX2dlbjJfcXVldWVfZmxpcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJCSBzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApAQCAt MTE0NTksMTU0ICsxMTMwMiw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfZ2VuN19xdWV1ZV9mbGlwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICoKLWludGVsX2dldF9mbGlwX2VuZ2luZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAotCQkgICAgICBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCSAgICAg IHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCi17Ci0JaWYgKElTX1ZBTExFWVZJRVco ZGV2KSB8fCBJU19JVllCUklER0UoZGV2KSB8fCBJU19IQVNXRUxMKGRldikpCi0JCXJldHVybiAm ZGV2X3ByaXYtPmVuZ2luZVtCQ1NdOwotCi0JaWYgKGRldl9wcml2LT5pbmZvLmdlbiA+PSA3KSB7 Ci0JCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQotCQllbmdpbmUgPSBpOTE1X2dl bV9yZXF1ZXN0X2dldF9lbmdpbmUob2JqLT5sYXN0X3dyaXRlX3JlcSk7Ci0JCWlmIChlbmdpbmUg JiYgZW5naW5lLT5pZCA9PSBSQ1MpCi0JCQlyZXR1cm4gZW5naW5lOwotCi0JCXJldHVybiAmZGV2 X3ByaXYtPmVuZ2luZVtCQ1NdOwotCX0gZWxzZQotCQlyZXR1cm4gJmRldl9wcml2LT5lbmdpbmVb UkNTXTsKLX0KLQotc3RhdGljIGJvb2wKLWZsaXBfZmJfY29tcGF0aWJsZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAotCQkgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKLQkJICAgc3RydWN0 IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiKQotewotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmogPSBpbnRlbF9mYl9vYmooZmIpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv bGRfb2JqID0gaW50ZWxfZmJfb2JqKG9sZF9mYik7Ci0KLQlpZiAob2xkX2ZiLT5waXhlbF9mb3Jt YXQgIT0gZmItPnBpeGVsX2Zvcm1hdCkKLQkJcmV0dXJuIGZhbHNlOwotCi0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID4gMyAmJgotCSAgICAoZmItPm9mZnNldHNbMF0gIT0gb2xkX2ZiLT5vZmZz ZXRzWzBdIHx8Ci0JICAgICBmYi0+cGl0Y2hlc1swXSAhPSBvbGRfZmItPnBpdGNoZXNbMF0pKQot CQlyZXR1cm4gZmFsc2U7Ci0KLQkJCS8qIHZsdjogRElTUExBWV9GTElQIGZhaWxzIHRvIGNoYW5n ZSB0aWxpbmcgKi8KLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpICYmIG9iai0+dGlsaW5nX21vZGUg IT0gb2xkX29iai0+dGlsaW5nX21vZGUpCi0JCXJldHVybiBmYWxzZTsKLQotCXJldHVybiB0cnVl OwotfQotCi1zdGF0aWMgdm9pZAotaW50ZWxfZGlzcGxheV9mbGlwX3ByZXBhcmUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9jcnRjICpjcnRjLAotCQkJICAgc3RydWN0IGludGVs X2ZsaXBfd29yayAqd29yaykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKLQotCWlmICh3b3JrLT5mbGlwX3ByZXBhcmVkKQotCQlyZXR1cm47 Ci0KLQl3b3JrLT5mbGlwX3ByZXBhcmVkID0gdHJ1ZTsKLQotCWlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA1IHx8IElTX0c0WChkZXYpKQotCQl3b3JrLT5mbGlwX2NvdW50ID0gSTkxNV9SRUFE KFBJUEVfRkxJUENPVU5UX0c0WChpbnRlbF9jcnRjLT5waXBlKSkgKyAxOwotCXdvcmstPmZsaXBf cXVldWVkX3ZibGFuayA9IGRybV9jcnRjX3ZibGFua19jb3VudChjcnRjKTsKLQotCWludGVsX2Zy b250YnVmZmVyX2ZsaXBfcHJlcGFyZShkZXYsIHdvcmstPm5ld19jcnRjX3N0YXRlLT5mYl9iaXRz KTsKLX0KLQotc3RhdGljIHZvaWQgaW50ZWxfZmxpcF9zY2hlZHVsZV9yZXF1ZXN0KHN0cnVjdCBp bnRlbF9mbGlwX3dvcmsgKndvcmssIHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpu ZXdfc3RhdGUgPSB3b3JrLT5uZXdfcGxhbmVfc3RhdGVbMF07Ci0Jc3RydWN0IGludGVsX3BsYW5l X3N0YXRlICpvbGRfc3RhdGUgPSB3b3JrLT5vbGRfcGxhbmVfc3RhdGVbMF07Ci0Jc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIsICpvbGRfZmI7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0 ICpyZXF1ZXN0ID0gTlVMTDsKLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQlzdHJ1Y3QgZmVuY2UgKmZlbmNlOwotCWlu dCByZXQ7Ci0KLQl0b19pbnRlbF9jcnRjKGNydGMpLT5yZXNldF9jb3VudGVyID0gaTkxNV9yZXNl dF9jb3VudGVyKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKTsKLQlpZiAoX19pOTE1X3Jlc2V0X2luX3By b2dyZXNzX29yX3dlZGdlZCh0b19pbnRlbF9jcnRjKGNydGMpLT5yZXNldF9jb3VudGVyKSkKLQkJ Z290byBtbWlvOwotCi0JaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmRldl9wcml2LT5ncHVf ZXJyb3IpIHx8Ci0JICAgIGk5MTVfcmVzZXRfaW5fcHJvZ3Jlc3MoJmRldl9wcml2LT5ncHVfZXJy b3IpIHx8Ci0JICAgIGk5MTUuZW5hYmxlX2V4ZWNsaXN0cyB8fCBpOTE1LnVzZV9tbWlvX2ZsaXAg PiAwIHx8Ci0JICAgICFkZXZfcHJpdi0+ZGlzcGxheS5xdWV1ZV9mbGlwKQotCQlnb3RvIG1taW87 Ci0KLQkvKiBOb3QgcmlnaHQgYWZ0ZXIgbW9kZXNldHRpbmcsIHN1cmZhY2UgcGFyYW1ldGVycyBu ZWVkIHRvIGJlIHVwZGF0ZWQgKi8KLQlpZiAobmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkgfHwK LQkgICAgdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPnVwZGF0ZV9waXBlKQotCQln b3RvIG1taW87Ci0KLQkvKiBPbmx5IGFsbG93IGEgbW1pbyBmbGlwIGZvciBhIHByaW1hcnkgcGxh bmUgd2l0aG91dCBhIGRtYS1idWYgZmVuY2UgKi8KLQlpZiAod29yay0+bnVtX3BsYW5lcyAhPSAx IHx8Ci0JICAgIG5ld19zdGF0ZS0+YmFzZS5wbGFuZSAhPSBjcnRjLT5wcmltYXJ5IHx8Ci0JICAg IG5ld19zdGF0ZS0+YmFzZS5mZW5jZSkKLQkJZ290byBtbWlvOwotCi0JZmVuY2UgPSB3b3JrLT5v bGRfcGxhbmVfc3RhdGVbMF0tPmJhc2UuZmVuY2U7Ci0JaWYgKGZlbmNlICYmICFmZW5jZV9pc19z aWduYWxlZChmZW5jZSkpCi0JCWdvdG8gbW1pbzsKLQotCW9sZF9mYiA9IG9sZF9zdGF0ZS0+YmFz ZS5mYjsKLQlmYiA9IG5ld19zdGF0ZS0+YmFzZS5mYjsKLQlvYmogPSBpbnRlbF9mYl9vYmooZmIp OwotCi0JdHJhY2VfaTkxNV9mbGlwX3JlcXVlc3QodG9faW50ZWxfY3J0YyhjcnRjKS0+cGxhbmUs IG9iaik7Ci0KLQkvKiBPbmx5IHdoZW4gdXBkYXRpbmcgYSBhbHJlYWR5IHZpc2libGUgZmIuICov Ci0JaWYgKCFuZXdfc3RhdGUtPnZpc2libGUgfHwgIW9sZF9zdGF0ZS0+dmlzaWJsZSkKLQkJZ290 byBtbWlvOwotCi0JaWYgKCFmbGlwX2ZiX2NvbXBhdGlibGUoZGV2LCBmYiwgb2xkX2ZiKSkKLQkJ Z290byBtbWlvOwotCi0JZW5naW5lID0gaW50ZWxfZ2V0X2ZsaXBfZW5naW5lKGRldiwgZGV2X3By aXYsIG9iaik7Ci0JaWYgKGk5MTUudXNlX21taW9fZmxpcCA9PSAwICYmIG9iai0+bGFzdF93cml0 ZV9yZXEgJiYKLQkgICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfZW5naW5lKG9iai0+bGFzdF93cml0 ZV9yZXEpICE9IGVuZ2luZSkKLQkJZ290byBtbWlvOwotCi0Jd29yay0+Z3R0X29mZnNldCA9IGlu dGVsX3BsYW5lX29ial9vZmZzZXQodG9faW50ZWxfcGxhbmUoY3J0Yy0+cHJpbWFyeSksIG9iaiwg MCk7Ci0Jd29yay0+Z3R0X29mZnNldCArPSB0b19pbnRlbF9jcnRjKGNydGMpLT5kc3BhZGRyX29m ZnNldDsKLQotCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zeW5jKG9iaiwgZW5naW5lLCAmcmVxdWVz dCk7Ci0JaWYgKCFyZXQgJiYgIXJlcXVlc3QpIHsKLQkJcmVxdWVzdCA9IGk5MTVfZ2VtX3JlcXVl c3RfYWxsb2MoZW5naW5lLCBOVUxMKTsKLQkJcmV0ID0gUFRSX0VSUl9PUl9aRVJPKHJlcXVlc3Qp OwotCi0JCWlmIChyZXQpCi0JCQlyZXF1ZXN0ID0gTlVMTDsKLQl9Ci0KLQlpbnRlbF9kaXNwbGF5 X2ZsaXBfcHJlcGFyZShkZXYsIGNydGMsIHdvcmspOwotCi0JaWYgKCFyZXQpCi0JCXJldCA9IGRl dl9wcml2LT5kaXNwbGF5LnF1ZXVlX2ZsaXAoZGV2LCBjcnRjLCBmYiwgb2JqLCByZXF1ZXN0LCAw KTsKLQotCWlmICghcmV0KSB7Ci0JCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZ3b3JrLT5mbGlw X3F1ZXVlZF9yZXEsIHJlcXVlc3QpOwotCQlpbnRlbF9tYXJrX3BhZ2VfZmxpcF9hY3RpdmUodG9f aW50ZWxfY3J0YyhjcnRjKSwgd29yayk7Ci0JCWk5MTVfYWRkX3JlcXVlc3Rfbm9fZmx1c2gocmVx dWVzdCk7Ci0JCXJldHVybjsKLQl9Ci0JaWYgKHJlcXVlc3QpCi0JCWk5MTVfYWRkX3JlcXVlc3Rf bm9fZmx1c2gocmVxdWVzdCk7Ci0KLW1taW86Ci0Jc2NoZWR1bGVfd29yaygmd29yay0+bW1pb193 b3JrKTsKLX0KLQogc3RhdGljIHZvaWQgaW50ZWxfbW1pb19mbGlwX3dvcmtfZnVuYyhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKncpCiB7CiAJc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yayA9CkBAIC0x MTYzNCw3ICsxMTMyOSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMo c3RydWN0IHdvcmtfc3RydWN0ICp3KQogCQkJCQkgICAgJmRldl9wcml2LT5ycHMubW1pb2ZsaXBz KSk7CiAJfQogCi0JaW50ZWxfZGlzcGxheV9mbGlwX3ByZXBhcmUoZGV2LCBjcnRjLCB3b3JrKTsK KwlpbnRlbF9mcm9udGJ1ZmZlcl9mbGlwX3ByZXBhcmUoZGV2LCBjcnRjX3N0YXRlLT5mYl9iaXRz KTsKIAogCWludGVsX3BpcGVfdXBkYXRlX3N0YXJ0KGludGVsX2NydGMpOwogCWlmICghbmVlZHNf bW9kZXNldCgmY3J0Y19zdGF0ZS0+YmFzZSkpIHsKQEAgLTExNjU5LDgwICsxMTM1NCw2IEBAIHN0 YXRpYyB2b2lkIGludGVsX21taW9fZmxpcF93b3JrX2Z1bmMoc3RydWN0IHdvcmtfc3RydWN0ICp3 KQogCWludGVsX3BpcGVfdXBkYXRlX2VuZChpbnRlbF9jcnRjLCB3b3JrKTsKIH0KIAotc3RhdGlj IGJvb2wgX19wYWdlZmxpcF9zdGFsbF9jaGVja19jcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCi0JCQkJICAgICAgc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCi0JCQkJ ICAgICAgc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaykKLXsKLQl1MzIgYWRkciwgdmJsYW5r OwotCi0JaWYgKCFhdG9taWNfcmVhZCgmd29yay0+cGVuZGluZykgfHwKLQkgICAgd29ya19idXN5 KCZ3b3JrLT51bnBpbl93b3JrKSkKLQkJcmV0dXJuIGZhbHNlOwotCi0Jc21wX3JtYigpOwotCi0J dmJsYW5rID0gaW50ZWxfY3J0Y19nZXRfdmJsYW5rX2NvdW50ZXIoaW50ZWxfY3J0Yyk7Ci0JaWYg KHdvcmstPmZsaXBfcmVhZHlfdmJsYW5rID09IDApIHsKLQkJaWYgKHdvcmstPmZsaXBfcXVldWVk X3JlcSAmJgotCQkgICAgIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHdvcmstPmZsaXBfcXVl dWVkX3JlcSwgdHJ1ZSkpCi0JCQlyZXR1cm4gZmFsc2U7Ci0KLQkJd29yay0+ZmxpcF9yZWFkeV92 YmxhbmsgPSB2Ymxhbms7Ci0JfQotCi0JaWYgKHZibGFuayAtIHdvcmstPmZsaXBfcmVhZHlfdmJs YW5rIDwgMykKLQkJcmV0dXJuIGZhbHNlOwotCi0JLyogUG90ZW50aWFsIHN0YWxsIC0gaWYgd2Ug c2VlIHRoYXQgdGhlIGZsaXAgaGFzIGhhcHBlbmVkLAotCSAqIGFzc3VtZSBhIG1pc3NlZCBpbnRl cnJ1cHQuICovCi0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkKLQkJYWRkciA9IEk5MTVf SElfRElTUEJBU0UoSTkxNV9SRUFEKERTUFNVUkYoaW50ZWxfY3J0Yy0+cGxhbmUpKSk7Ci0JZWxz ZQotCQlhZGRyID0gSTkxNV9SRUFEKERTUEFERFIoaW50ZWxfY3J0Yy0+cGxhbmUpKTsKLQotCS8q IFRoZXJlIGlzIGEgcG90ZW50aWFsIGlzc3VlIGhlcmUgd2l0aCBhIGZhbHNlIHBvc2l0aXZlIGFm dGVyIGEgZmxpcAotCSAqIHRvIHRoZSBzYW1lIGFkZHJlc3MuIFdlIGNvdWxkIGFkZHJlc3MgdGhp cyBieSBjaGVja2luZyBmb3IgYQotCSAqIG5vbi1pbmNyZW1lbnRpbmcgZnJhbWUgY291bnRlci4K LQkgKi8KLQlyZXR1cm4gYWRkciA9PSB3b3JrLT5ndHRfb2Zmc2V0OwotfQotCi12b2lkIGludGVs X2NoZWNrX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGludCBw aXBlKQotewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2OwotCXN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IGRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsK LQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Ci0J c3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yazsKLQotCVdBUk5fT04oIWluX2ludGVycnVwdCgp KTsKLQotCWlmIChjcnRjID09IE5VTEwpCi0JCXJldHVybjsKLQotCXNwaW5fbG9jaygmZGV2LT5l dmVudF9sb2NrKTsKLQl3aGlsZSAoIWxpc3RfZW1wdHkoJmludGVsX2NydGMtPmZsaXBfd29yaykp IHsKLQkJd29yayA9IGxpc3RfZmlyc3RfZW50cnkoJmludGVsX2NydGMtPmZsaXBfd29yaywKLQkJ CQkJc3RydWN0IGludGVsX2ZsaXBfd29yaywgaGVhZCk7Ci0KLQkJaWYgKGlzX21taW9fd29yayh3 b3JrKSkKLQkJCWJyZWFrOwotCi0JCWlmIChfX3BhZ2VmbGlwX3N0YWxsX2NoZWNrX2NzKGRldl9w cml2LCBpbnRlbF9jcnRjLCB3b3JrKSkgewotCQkJV0FSTl9PTkNFKDEsCi0JCQkJICAiS2lja2lu ZyBzdHVjayBwYWdlIGZsaXA6IHF1ZXVlZCBhdCAlZCwgbm93ICVkXG4iLAotCQkJCXdvcmstPmZs aXBfcXVldWVkX3ZibGFuaywgaW50ZWxfY3J0Y19nZXRfdmJsYW5rX2NvdW50ZXIoaW50ZWxfY3J0 YykpOwotCQkJcGFnZV9mbGlwX2NvbXBsZXRlZChpbnRlbF9jcnRjLCB3b3JrKTsKLQkJCWNvbnRp bnVlOwotCQl9Ci0KLQkJaWYgKGludGVsX2NydGNfZ2V0X3ZibGFua19jb3VudGVyKGludGVsX2Ny dGMpIC0gd29yay0+ZmxpcF9xdWV1ZWRfdmJsYW5rID4gMSkKLQkJCWludGVsX3F1ZXVlX3Jwc19i b29zdF9mb3JfcmVxdWVzdCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpOwotCi0JCWJyZWFrOwotCX0K LQlzcGluX3VubG9jaygmZGV2LT5ldmVudF9sb2NrKTsKLX0KLQogc3RhdGljIHN0cnVjdCBmZW5j ZSAqaW50ZWxfZ2V0X2V4Y2xfZmVuY2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikK IHsKIAlzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpyZXN2OwpAQCAtMTE4OTgsNyArMTE1MTks OCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAogCWludGVsX2ZiY19wcmVfdXBkYXRlKGludGVsX2NydGMpOwogCi0JaW50ZWxfZmxpcF9z Y2hlZHVsZV9yZXF1ZXN0KHdvcmssIGNydGMpOworCWludGVsX2NydGMtPnJlc2V0X2NvdW50ZXIg PSBpOTE1X3Jlc2V0X2NvdW50ZXIoJmRldl9wcml2LT5ncHVfZXJyb3IpOworCXNjaGVkdWxlX3dv cmsoJndvcmstPm1taW9fd29yayk7CiAKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4 KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCBjNmQ0MGJmY2UxNDcuLmU3ZTI2MmFj MWY5OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTk4MCwxNiArOTgwLDEyIEBAIHN0 cnVjdCBpbnRlbF9mbGlwX3dvcmsgewogCiAJc3RydWN0IGRybV9wZW5kaW5nX3ZibGFua19ldmVu dCAqZXZlbnQ7CiAJYXRvbWljX3QgcGVuZGluZzsKLQl1MzIgZmxpcF9jb3VudDsKLQl1MzIgZ3R0 X29mZnNldDsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmZsaXBfcXVldWVkX3JlcTsK IAl1MzIgZmxpcF9xdWV1ZWRfdmJsYW5rOwotCXUzMiBmbGlwX3JlYWR5X3ZibGFuazsKIAogCXVu c2lnbmVkIHB1dF9wb3dlcl9kb21haW5zOwogCXVuc2lnbmVkIG51bV9wbGFuZXM7CiAKLQlib29s IGNhbl9hc3luY191bnBpbiwgZmxpcF9wcmVwYXJlZCwgZnJlZV9uZXdfY3J0Y19zdGF0ZTsKKwli b29sIGNhbl9hc3luY191bnBpbiwgZnJlZV9uZXdfY3J0Y19zdGF0ZTsKIAogCXVuc2lnbmVkIGZi X2JpdHM7CiAKQEAgLTEyMDcsOSArMTIwMyw4IEBAIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgog X19pbnRlbF9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAg IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKIAkJCSAgIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopOwotdm9pZCBpbnRlbF9maW5pc2hfcGFnZV9mbGlwX2NzKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHBpcGUpOwogdm9pZCBpbnRlbF9maW5p c2hfcGFnZV9mbGlwX21taW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBpbnQg cGlwZSk7Ci12b2lkIGludGVsX2NoZWNrX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGludCBwaXBlKTsKKwogaW50IGludGVsX3ByZXBhcmVfcGxhbmVfZmIoc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUsCiAJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRl ICpuZXdfc3RhdGUpOwogdm9pZCBpbnRlbF9jbGVhbnVwX3BsYW5lX2ZiKHN0cnVjdCBkcm1fcGxh bmUgKnBsYW5lLAotLSAKMi41LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=