From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 02/41] drm/i915: Use RPM as the barrier for controlling user mmap access Date: Thu, 20 Oct 2016 16:03:44 +0100 Message-ID: <20161020150423.4560-3-chris@chris-wilson.co.uk> References: <20161020150423.4560-1-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-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 013656EB8F for ; Thu, 20 Oct 2016 15:04:34 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id x79so460404lff.2 for ; Thu, 20 Oct 2016 08:04:33 -0700 (PDT) In-Reply-To: <20161020150423.4560-1-chris@chris-wilson.co.uk> 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 V2UgY2FuIHJlbW92ZSB0aGUgZmFsc2UgY291cGxpbmcgYmV0d2VlbiBSUE0gYW5kIHN0cnVjdCBt dXRleCBieSB0aGUKb2JzZXJ2YXRpb24gdGhhdCB3ZSBjYW4gdXNlIHRoZSBSUE0gd2FrZXJlZiBh cyB0aGUgYmFycmllciBhcm91bmQgdXNlcgptbWFwIGFjY2Vzcy4gVGhhdCBpcyBhcyB3ZSB0ZWFy IGRvd24gdGhlIHVzZXIncyBQVEUgYXRvbWljYWxseSBmcm9tCndpdGhpbiBycG0gc3VzcGVuZCBh bmQgdGhlbiB0byBmYXVsdCBpbiBuZXcgUFRFIHJlcXVpcmVzIHRoZSBycG0Kd2FrZXJlZiwgbWVh bnMgdGhhdCBubyB1c2VyIGFjY2VzcyBpcyBwb3NzaWJsZSB0aHJvdWdoIHRob3NlIFBURSB3aXRo b3V0ClJQTSBiZWluZyBhd2FrZS4gSGF2aW5nIG1hZGUgdGhhdCBvYnNlcnZhdGlvbiwgd2UgY2Fu IHRoZW4gcmVtb3ZlIHRoZQpwcmVzdW1wdGlvbiBvZiBoYXZpbmcgdG8gdGFrZSBycG0gb3V0c2lk ZSBvZiBzdHJ1Y3RfbXV0ZXggYW5kIHNvIGFsbG93CmZpbmUgZ3JhaW5lZCBhY3F1aXNpdGlvbiBv ZiBhIHdha2VyZWYgYXJvdW5kIGh3IGFjY2VzcyByYXRoZXIgdGhhbgpoYXZpbmcgdG8gcmVtZW1i ZXIgdG8gYWNxdWlyZSB0aGUgd2FrZXJlZiBlYXJseSBvbi4KCnYyOiBSZWppZyBwbGFjZW1lbnQg b2YgdGhlIG5ldyBpbnRlbF9ydW50aW1lX3BtX2dldCgpIHRvIGJlIGFzIHRpZ2h0CmFzIHBvc3Np YmxlIGFyb3VuZCB0aGUgR1RUIHByZWFkL3B3cml0ZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogSW1yZSBEZWFrIDxpbXJlLmRlYWtA aW50ZWwuY29tPgpDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgpDYzogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERh bmllbCBWZXR0ZXIgPGRhbmllbEBmZndsbC5jaD4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYyAgICB8IDU2ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgIHwgMTkgLS0tLS0tLS0tLS0t CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICB8IDQyICsrKysrKysrKysr KystLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgIHwg MTcgKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3RpbGluZy5jIHwg IDQgLS0tCiA1IGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXggMWI0MDJlZWJkM2Q5Li44OGM5 ZDIyMmE3ZTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC03NDMsMTcgKzc0 MywzMiBAQCBzdGF0aWMgaW50IGk5MTVfaW50ZXJydXB0X2luZm8oc3RydWN0IHNlcV9maWxlICpt LCB2b2lkICpkYXRhKQogCQkJICAgSTkxNV9SRUFEKFZMVl9JSVJfUlcpKTsKIAkJc2VxX3ByaW50 ZihtLCAiRGlzcGxheSBJTVI6XHQlMDh4XG4iLAogCQkJICAgSTkxNV9SRUFEKFZMVl9JTVIpKTsK LQkJZm9yX2VhY2hfcGlwZShkZXZfcHJpdiwgcGlwZSkKKwkJZm9yX2VhY2hfcGlwZShkZXZfcHJp diwgcGlwZSkgeworCQkJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21h aW47CisKKwkJCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFKHBpcGUpOworCQkJaWYg KCFpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LAorCQkJCQkJCQlw b3dlcl9kb21haW4pKSB7CisJCQkJc2VxX3ByaW50ZihtLCAiUGlwZSAlYyBwb3dlciBkaXNhYmxl ZFxuIiwKKwkJCQkJICAgcGlwZV9uYW1lKHBpcGUpKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKwog CQkJc2VxX3ByaW50ZihtLCAiUGlwZSAlYyBzdGF0Olx0JTA4eFxuIiwKIAkJCQkgICBwaXBlX25h bWUocGlwZSksCiAJCQkJICAgSTkxNV9SRUFEKFBJUEVTVEFUKHBpcGUpKSk7CiAKKwkJCWludGVs X2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOworCQl9CisKKwkJaW50 ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsKIAkJc2Vx X3ByaW50ZihtLCAiUG9ydCBob3RwbHVnOlx0JTA4eFxuIiwKIAkJCSAgIEk5MTVfUkVBRChQT1JU X0hPVFBMVUdfRU4pKTsKIAkJc2VxX3ByaW50ZihtLCAiRFBGTElQU1RBVDpcdCUwOHhcbiIsCiAJ CQkgICBJOTE1X1JFQUQoVkxWX0RQRkxJUFNUQVQpKTsKIAkJc2VxX3ByaW50ZihtLCAiRFBJTlZH VFQ6XHQlMDh4XG4iLAogCQkJICAgSTkxNV9SRUFEKERQSU5WR1RUKSk7CisJCWludGVsX2Rpc3Bs YXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fSU5JVCk7CiAKIAkJZm9yIChpID0g MDsgaSA8IDQ7IGkrKykgewogCQkJc2VxX3ByaW50ZihtLCAiR1QgSW50ZXJydXB0IElNUiAlZDpc dCUwOHhcbiIsCkBAIC0xMzk2LDE0ICsxNDExLDkgQEAgc3RhdGljIGludCBpOTE1X2hhbmdjaGVj a19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogc3RhdGljIGludCBpcm9u bGFrZV9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICptKQogewogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IG5vZGVfdG9faTkxNShtLT5wcml2YXRlKTsKLQlzdHJ1Y3QgZHJt X2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJdTMyIHJndm1vZGVjdGwsIHJzdGRieWN0 bDsKIAl1MTYgY3JzdGFuZHZpZDsKLQlpbnQgcmV0OwogCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRl cnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKHJldCkKLQkJcmV0dXJuIHJldDsK IAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7CiAKIAlyZ3Ztb2RlY3RsID0gSTkxNV9S RUFEKE1FTU1PREVDVEwpOwpAQCAtMTQxMSw3ICsxNDIxLDYgQEAgc3RhdGljIGludCBpcm9ubGFr ZV9kcnBjX2luZm8oc3RydWN0IHNlcV9maWxlICptKQogCWNyc3RhbmR2aWQgPSBJOTE1X1JFQUQx NihDUlNUQU5EVklEKTsKIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKLQltdXRl eF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAogCXNlcV9wcmludGYobSwgIkhEIGJvb3N0 OiAlc1xuIiwgeWVzbm8ocmd2bW9kZWN0bCAmIE1FTU1PREVfQk9PU1RfRU4pKTsKIAlzZXFfcHJp bnRmKG0sICJCb29zdCBmcmVxOiAlZFxuIiwKQEAgLTE3NTcsNiArMTc2Niw3IEBAIHN0YXRpYyBp bnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJYm9v bCBzcl9lbmFibGVkID0gZmFsc2U7CiAKIAlpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7 CisJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9JTklUKTsK IAogCWlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKIAkJc3JfZW5hYmxlZCA9IEk5MTVfUkVB RChXTTFfTFBfSUxLKSAmIFdNMV9MUF9TUl9FTjsKQEAgLTE3NzAsNiArMTc4MCw3IEBAIHN0YXRp YyBpbnQgaTkxNV9zcl9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJ ZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJp dikpCiAJCXNyX2VuYWJsZWQgPSBJOTE1X1JFQUQoRldfQkxDX1NFTEZfVkxWKSAmIEZXX0NTUFdS RFdORU47CiAKKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlO X0lOSVQpOwogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKIAogCXNlcV9wcmludGYo bSwgInNlbGYtcmVmcmVzaDogJXNcbiIsCkBAIC0yMDkxLDEyICsyMTAyLDcgQEAgc3RhdGljIGNv bnN0IGNoYXIgKnN3aXp6bGVfc3RyaW5nKHVuc2lnbmVkIHN3aXp6bGUpCiBzdGF0aWMgaW50IGk5 MTVfc3dpenpsZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIHsKIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBub2RlX3RvX2k5MTUobS0+cHJpdmF0ZSk7 Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwotCWludCByZXQ7CiAK LQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKLQlp ZiAocmV0KQotCQlyZXR1cm4gcmV0OwogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsK IAogCXNlcV9wcmludGYobSwgImJpdDYgc3dpenpsZSBmb3IgWC10aWxpbmcgPSAlc1xuIiwKQEAg LTIxMzYsNyArMjE0Miw2IEBAIHN0YXRpYyBpbnQgaTkxNV9zd2l6emxlX2luZm8oc3RydWN0IHNl cV9maWxlICptLCB2b2lkICpkYXRhKQogCQlzZXFfcHV0cyhtLCAiTC1zaGFwZWQgbWVtb3J5IGRl dGVjdGVkXG4iKTsKIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKLQltdXRleF91 bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAogCXJldHVybiAwOwogfQpAQCAtMjU0MiwxMSAr MjU0NywyMiBAQCBzdGF0aWMgaW50IGk5MTVfZWRwX3Bzcl9zdGF0dXMoc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQogCQllbmFibGVkID0gSTkxNV9SRUFEKEVEUF9QU1JfQ1RMKSAmIEVE UF9QU1JfRU5BQkxFOwogCWVsc2UgewogCQlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7 CisJCQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPQorCQkJCWludGVsX3BpcGVfdG9f Y3B1X3RyYW5zY29kZXIoZGV2X3ByaXYsIHBpcGUpOworCQkJZW51bSBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbiBwb3dlcl9kb21haW47CisKKwkJCXBvd2VyX2RvbWFpbiA9IFBPV0VSX0RPTUFJ Tl9UUkFOU0NPREVSKGNwdV90cmFuc2NvZGVyKTsKKwkJCWlmICghaW50ZWxfZGlzcGxheV9wb3dl cl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwKKwkJCQkJCQkJcG93ZXJfZG9tYWluKSkKKwkJCQlj b250aW51ZTsKKwogCQkJc3RhdFtwaXBlXSA9IEk5MTVfUkVBRChWTFZfUFNSU1RBVChwaXBlKSkg JgogCQkJCVZMVl9FRFBfUFNSX0NVUlJfU1RBVEVfTUFTSzsKIAkJCWlmICgoc3RhdFtwaXBlXSA9 PSBWTFZfRURQX1BTUl9BQ1RJVkVfTk9SRkJfVVApIHx8CiAJCQkgICAgKHN0YXRbcGlwZV0gPT0g VkxWX0VEUF9QU1JfQUNUSVZFX1NGX1VQREFURSkpCiAJCQkJZW5hYmxlZCA9IHRydWU7CisKKwkJ CWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBwb3dlcl9kb21haW4pOwogCQl9CiAJ fQogCkBAIC0zMDk0LDYgKzMxMTAsOCBAQCBzdGF0aWMgaW50IGk5MTVfZW5naW5lX2luZm8oc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lOwogCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCisJaW50ZWxfcnVudGltZV9wbV9n ZXQoZGV2X3ByaXYpOworCiAJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7 CiAJCXN0cnVjdCBpbnRlbF9icmVhZGNydW1icyAqYiA9ICZlbmdpbmUtPmJyZWFkY3J1bWJzOwog CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxOwpAQCAtMzIxMyw2ICszMjMxLDggQEAg c3RhdGljIGludCBpOTE1X2VuZ2luZV9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51 c2VkKQogCQlzZXFfcHV0cyhtLCAiXG4iKTsKIAl9CiAKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChk ZXZfcHJpdik7CisKIAlyZXR1cm4gMDsKIH0KIApAQCAtNDc5OCwxMyArNDgxOCw5IEBAIGk5MTVf d2VkZ2VkX3NldCh2b2lkICpkYXRhLCB1NjQgdmFsKQogCWlmIChpOTE1X3Jlc2V0X2luX3Byb2dy ZXNzKCZkZXZfcHJpdi0+Z3B1X2Vycm9yKSkKIAkJcmV0dXJuIC1FQUdBSU47CiAKLQlpbnRlbF9y dW50aW1lX3BtX2dldChkZXZfcHJpdik7Ci0KIAlpOTE1X2hhbmRsZV9lcnJvcihkZXZfcHJpdiwg dmFsLAogCQkJICAiTWFudWFsbHkgc2V0dGluZyB3ZWRnZWQgdG8gJWxsdSIsIHZhbCk7CiAKLQlp bnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtNTAz OSwyMiArNTA1NSwxNiBAQCBzdGF0aWMgaW50CiBpOTE1X2NhY2hlX3NoYXJpbmdfZ2V0KHZvaWQg KmRhdGEsIHU2NCAqdmFsKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRhdGE7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJtOwogCXUzMiBz bnBjcjsKLQlpbnQgcmV0OwogCiAJaWYgKCEoSVNfR0VONihkZXZfcHJpdikgfHwgSVNfR0VONyhk ZXZfcHJpdikpKQogCQlyZXR1cm4gLUVOT0RFVjsKIAotCXJldCA9IG11dGV4X2xvY2tfaW50ZXJy dXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7CiAJ aW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwogCiAJc25wY3IgPSBJOTE1X1JFQUQoR0VO Nl9NQkNVTklUX1NOUENSKTsKIAogCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKLQlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKIAogCSp2YWwgPSAoc25wY3IgJiBHRU42 X01CQ19TTlBDUl9NQVNLKSA+PiBHRU42X01CQ19TTlBDUl9TSElGVDsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmMKaW5kZXggOTEyZDUzNDhlM2U3Li44ODVkMzNmMzQxZjMgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYwpAQCAtMjMwMSwyNCArMjMwMSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfcnVudGlt ZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCiAKIAlEUk1fREVCVUdfS01TKCJTdXNwZW5k aW5nIGRldmljZVxuIik7CiAKLQkvKgotCSAqIFdlIGNvdWxkIGRlYWRsb2NrIGhlcmUgaW4gY2Fz ZSBhbm90aGVyIHRocmVhZCBob2xkaW5nIHN0cnVjdF9tdXRleAotCSAqIGNhbGxzIFJQTSBzdXNw ZW5kIGNvbmN1cnJlbnRseSwgc2luY2UgdGhlIFJQTSBzdXNwZW5kIHdpbGwgd2FpdAotCSAqIGZp cnN0IGZvciB0aGlzIFJQTSBzdXNwZW5kIHRvIGZpbmlzaC4gSW4gdGhpcyBjYXNlIHRoZSBjb25j dXJyZW50Ci0JICogUlBNIHJlc3VtZSB3aWxsIGJlIGZvbGxvd2VkIGJ5IGl0cyBSUE0gc3VzcGVu ZCBjb3VudGVycGFydC4gU3RpbGwKLQkgKiBmb3IgY29uc2lzdGVuY3kgcmV0dXJuIC1FQUdBSU4s IHdoaWNoIHdpbGwgcmVzY2hlZHVsZSB0aGlzIHN1c3BlbmQuCi0JICovCi0JaWYgKCFtdXRleF90 cnlsb2NrKCZkZXYtPnN0cnVjdF9tdXRleCkpIHsKLQkJRFJNX0RFQlVHX0tNUygiZGV2aWNlIGxv Y2sgY29udGVudGlvbiwgZGVmZmVyaW5nIHN1c3BlbmRcbiIpOwotCQkvKgotCQkgKiBCdW1wIHRo ZSBleHBpcmF0aW9uIHRpbWVzdGFtcCwgb3RoZXJ3aXNlIHRoZSBzdXNwZW5kIHdvbid0Ci0JCSAq IGJlIHJlc2NoZWR1bGVkLgotCQkgKi8KLQkJcG1fcnVudGltZV9tYXJrX2xhc3RfYnVzeShrZGV2 KTsKLQotCQlyZXR1cm4gLUVBR0FJTjsKLQl9Ci0KIAlkaXNhYmxlX3JwbV93YWtlcmVmX2Fzc2Vy dHMoZGV2X3ByaXYpOwogCiAJLyoKQEAgLTIzMjYsNyArMjMwOCw2IEBAIHN0YXRpYyBpbnQgaW50 ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCiAJICogYW4gUlBNIHJlZmVy ZW5jZS4KIAkgKi8KIAlpOTE1X2dlbV9yZWxlYXNlX2FsbF9tbWFwcyhkZXZfcHJpdik7Ci0JbXV0 ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAKIAlpbnRlbF9ndWNfc3VzcGVuZChkZXYp OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBiN2E2YmNkMTViYzkuLjc0NDkzOWY2NTJm YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC04MjYsNiArODI2LDcgQEAgaTkxNV9nZW1f Z3R0X3ByZWFkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJdWludDY0X3Qgb2Zmc2V0OwogCWlu dCByZXQ7CiAKKwlpbnRlbF9ydW50aW1lX3BtX2dldCh0b19pOTE1KGRldikpOwogCXZtYSA9IGk5 MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihvYmosIE5VTEwsIDAsIDAsIFBJTl9NQVBQQUJMRSk7CiAJ aWYgKCFJU19FUlIodm1hKSkgewogCQlub2RlLnN0YXJ0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEp OwpAQCAtOTI2LDYgKzkyNyw3IEBAIGk5MTVfZ2VtX2d0dF9wcmVhZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAogCQlpOTE1X3ZtYV91bnBpbih2bWEpOwogCX0KIG91dDoKKwlpbnRlbF9ydW50aW1l X3BtX3B1dCh0b19pOTE1KGRldikpOwogCXJldHVybiByZXQ7CiB9CiAKQEAgLTEwNjAsMTIgKzEw NjIsOSBAQCBpOTE1X2dlbV9wcmVhZF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCXJldCA9IGk5MTVfZ2VtX3NobWVtX3ByZWFkKGRldiwgb2JqLCBhcmdzLCBmaWxl KTsKIAogCS8qIHByZWFkIGZvciBub24gc2htZW0gYmFja2VkIG9iamVjdHMgKi8KLQlpZiAocmV0 ID09IC1FRkFVTFQgfHwgcmV0ID09IC1FTk9ERVYpIHsKLQkJaW50ZWxfcnVudGltZV9wbV9nZXQo dG9faTkxNShkZXYpKTsKKwlpZiAocmV0ID09IC1FRkFVTFQgfHwgcmV0ID09IC1FTk9ERVYpCiAJ CXJldCA9IGk5MTVfZ2VtX2d0dF9wcmVhZChkZXYsIG9iaiwgYXJncy0+c2l6ZSwKIAkJCQkJYXJn cy0+b2Zmc2V0LCBhcmdzLT5kYXRhX3B0cik7Ci0JCWludGVsX3J1bnRpbWVfcG1fcHV0KHRvX2k5 MTUoZGV2KSk7Ci0JfQogCiAJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOwogCW11dGV4X3VubG9j aygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwpAQCAtMTEyNiw2ICsxMTI1LDcgQEAgaTkxNV9nZW1fZ3R0 X3B3cml0ZV9mYXN0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWlmIChpOTE1X2dl bV9vYmplY3RfaXNfdGlsZWQob2JqKSkKIAkJcmV0dXJuIC1FRkFVTFQ7CiAKKwlpbnRlbF9ydW50 aW1lX3BtX2dldChpOTE1KTsKIAl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4ob2JqLCBO VUxMLCAwLCAwLAogCQkJCSAgICAgICBQSU5fTUFQUEFCTEUgfCBQSU5fTk9OQkxPQ0spOwogCWlm ICghSVNfRVJSKHZtYSkpIHsKQEAgLTEyMzQsNiArMTIzNCw3IEBAIGk5MTVfZ2VtX2d0dF9wd3Jp dGVfZmFzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJaTkxNV92bWFfdW5waW4o dm1hKTsKIAl9CiBvdXQ6CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7CiAJcmV0dXJuIHJl dDsKIH0KIApAQCAtMTQ2NiwxMiArMTQ2NywxMiBAQCBpOTE1X2dlbV9wd3JpdGVfaW9jdGwoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkgKiBwZXJzcGVjdGl2ZSwgcmVxdWly aW5nIG1hbnVhbCBkZXRpbGluZyBieSB0aGUgY2xpZW50LgogCSAqLwogCWlmICghaTkxNV9nZW1f b2JqZWN0X2hhc19zdHJ1Y3RfcGFnZShvYmopIHx8Ci0JICAgIGNwdV93cml0ZV9uZWVkc19jbGZs dXNoKG9iaikpIHsKLQkJcmV0ID0gaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0KGRldl9wcml2LCBv YmosIGFyZ3MsIGZpbGUpOworCSAgICBjcHVfd3JpdGVfbmVlZHNfY2xmbHVzaChvYmopKQogCQkv KiBOb3RlIHRoYXQgdGhlIGd0dCBwYXRocyBtaWdodCBmYWlsIHdpdGggbm9uLXBhZ2UtYmFja2Vk IHVzZXIKIAkJICogcG9pbnRlcnMgKGUuZy4gZ3R0IG1hcHBpbmdzIHdoZW4gbW92aW5nIGRhdGEg YmV0d2VlbgotCQkgKiB0ZXh0dXJlcykuIEZhbGxiYWNrIHRvIHRoZSBzaG1lbSBwYXRoIGluIHRo YXQgY2FzZS4gKi8KLQl9CisJCSAqIHRleHR1cmVzKS4gRmFsbGJhY2sgdG8gdGhlIHNobWVtIHBh dGggaW4gdGhhdCBjYXNlLgorCQkgKi8KKwkJcmV0ID0gaTkxNV9nZW1fZ3R0X3B3cml0ZV9mYXN0 KGRldl9wcml2LCBvYmosIGFyZ3MsIGZpbGUpOwogCiAJaWYgKHJldCA9PSAtRUZBVUxUIHx8IHJl dCA9PSAtRU5PU1BDKSB7CiAJCWlmIChvYmotPnBoeXNfaGFuZGxlKQpAQCAtMTg0MCw2ICsxODQx LDcgQEAgaW50IGk5MTVfZ2VtX2ZhdWx0KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqYXJlYSwgc3Ry dWN0IHZtX2ZhdWx0ICp2bWYpCiAJCWdvdG8gZXJyX3VucGluOwogCiAJLyogTWFyayBhcyBiZWlu ZyBtbWFwcGVkIGludG8gdXNlcnNwYWNlIGZvciBsYXRlciByZXZvY2F0aW9uICovCisJYXNzZXJ0 X3JwbV93YWtlbG9ja19oZWxkKGRldl9wcml2KTsKIAlzcGluX2xvY2soJmRldl9wcml2LT5tbS51 c2VyZmF1bHRfbG9jayk7CiAJaWYgKGxpc3RfZW1wdHkoJm9iai0+dXNlcmZhdWx0X2xpbmspKQog CQlsaXN0X2FkZCgmb2JqLT51c2VyZmF1bHRfbGluaywgJmRldl9wcml2LT5tbS51c2VyZmF1bHRf bGlzdCk7CkBAIC0xOTI1LDggKzE5MjcsMTMgQEAgaTkxNV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJLyogU2VyaWFsaXNhdGlvbiBiZXR3ZWVuIHVz ZXIgR1RUIGFjY2VzcyBhbmQgb3VyIGNvZGUgZGVwZW5kcyB1cG9uCiAJICogcmV2b2tpbmcgdGhl IENQVSdzIFBURSB3aGlsc3QgdGhlIG11dGV4IGlzIGhlbGQuIFRoZSBuZXh0IHVzZXIKIAkgKiBw YWdlZmF1bHQgdGhlbiBoYXMgdG8gd2FpdCB1bnRpbCB3ZSByZWxlYXNlIHRoZSBtdXRleC4KKwkg KgorCSAqIE5vdGUgdGhhdCBSUE0gY29tcGxpY2F0ZXMgc29tZXdoYXQgYnkgYWRkaW5nIGFuIGFk ZGl0aW9uYWwKKwkgKiByZXF1aXJlbWVudCB0aGF0IG9wZXJhdGlvbnMgdG8gdGhlIEdHVFQgYmUg bWFkZSBob2xkaW5nIHRoZSBSUE0KKwkgKiB3YWtlcmVmLgogCSAqLwogCWxvY2tkZXBfYXNzZXJ0 X2hlbGQoJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5 MTUpOwogCiAJc3Bpbl9sb2NrKCZpOTE1LT5tbS51c2VyZmF1bHRfbG9jayk7CiAJaWYgKCFsaXN0 X2VtcHR5KCZvYmotPnVzZXJmYXVsdF9saW5rKSkgewpAQCAtMTkzNSw3ICsxOTQyLDcgQEAgaTkx NV9nZW1fcmVsZWFzZV9tbWFwKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJfQog CXNwaW5fdW5sb2NrKCZpOTE1LT5tbS51c2VyZmF1bHRfbG9jayk7CiAJaWYgKCF6YXApCi0JCXJl dHVybjsKKwkJZ290byBvdXQ7CiAKIAlkcm1fdm1hX25vZGVfdW5tYXAoJm9iai0+YmFzZS52bWFf bm9kZSwKIAkJCSAgIG9iai0+YmFzZS5kZXYtPmFub25faW5vZGUtPmlfbWFwcGluZyk7CkBAIC0x OTQ4LDYgKzE5NTUsOSBAQCBpOTE1X2dlbV9yZWxlYXNlX21tYXAoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKIAkgKiBtZW1vcnkgd3JpdGVzIGJlZm9yZSB0b3VjaGluZyByZWdpc3Rl cnMgLyBHU00uCiAJICovCiAJd21iKCk7CisKK291dDoKKwlpbnRlbF9ydW50aW1lX3BtX3B1dChp OTE1KTsKIH0KIAogdm9pZApAQCAtMzQ3Niw3ICszNDg2LDcgQEAgaW50IGk5MTVfZ2VtX2dldF9j YWNoaW5nX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiBpbnQgaTkx NV9nZW1fc2V0X2NhY2hpbmdfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiB7Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fY2FjaGluZyAq YXJncyA9IGRhdGE7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKIAllbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgbGV2ZWw7CkBAIC0zNDkzLDIzICszNTAzLDIxIEBAIGludCBpOTE1X2dl bV9zZXRfY2FjaGluZ19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQkgKiBjYWNoZWxpbmUsIHdoZXJlYXMgbm9ybWFsbHkgc3VjaCBjYWNoZWxpbmVzIHdvdWxkIGdl dAogCQkgKiBpbnZhbGlkYXRlZC4KIAkJICovCi0JCWlmICghSEFTX0xMQyhkZXYpICYmICFIQVNf U05PT1AoZGV2KSkKKwkJaWYgKCFIQVNfTExDKGk5MTUpICYmICFIQVNfU05PT1AoaTkxNSkpCiAJ CQlyZXR1cm4gLUVOT0RFVjsKIAogCQlsZXZlbCA9IEk5MTVfQ0FDSEVfTExDOwogCQlicmVhazsK IAljYXNlIEk5MTVfQ0FDSElOR19ESVNQTEFZOgotCQlsZXZlbCA9IEhBU19XVChkZXZfcHJpdikg PyBJOTE1X0NBQ0hFX1dUIDogSTkxNV9DQUNIRV9OT05FOworCQlsZXZlbCA9IEhBU19XVChpOTE1 KSA/IEk5MTVfQ0FDSEVfV1QgOiBJOTE1X0NBQ0hFX05PTkU7CiAJCWJyZWFrOwogCWRlZmF1bHQ6 CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2 KTsKLQogCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7CiAJaWYgKHJl dCkKLQkJZ290byBycG1fcHV0OworCQlyZXR1cm4gcmV0OwogCiAJb2JqID0gaTkxNV9nZW1fb2Jq ZWN0X2xvb2t1cChmaWxlLCBhcmdzLT5oYW5kbGUpOwogCWlmICghb2JqKSB7CkBAIC0zNTE4LDEz ICszNTI2LDkgQEAgaW50IGk5MTVfZ2VtX3NldF9jYWNoaW5nX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJfQogCiAJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF9j YWNoZV9sZXZlbChvYmosIGxldmVsKTsKLQogCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKIHVu bG9jazoKIAltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKLXJwbV9wdXQ6Ci0JaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwotCiAJcmV0dXJuIHJldDsKIH0KIApkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCAwNjJmYjBhZDc1ZGEuLjMzMDM2MzU5YzE3MCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTI2NjcsNiArMjY2Nyw3IEBAIHN0 YXRpYyBpbnQgZ2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAkJCSBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCiAJCQkgdTMyIGZsYWdzKQogeworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh2bWEtPnZtLT5kZXYpOwogCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2bWEtPm9iajsKIAl1MzIgcHRlX2ZsYWdzID0gMDsK IAlpbnQgcmV0OwpAQCAtMjY3OSw4ICsyNjgwLDEwIEBAIHN0YXRpYyBpbnQgZ2d0dF9iaW5kX3Zt YShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAlpZiAob2JqLT5ndF9ybykKIAkJcHRlX2ZsYWdzIHw9 IFBURV9SRUFEX09OTFk7CiAKKwlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKIAl2bWEtPnZt LT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCB2bWEtPnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQsCiAJ CQkJY2FjaGVfbGV2ZWwsIHB0ZV9mbGFncyk7CisJaW50ZWxfcnVudGltZV9wbV9wdXQoaTkxNSk7 CiAKIAkvKgogCSAqIFdpdGhvdXQgYWxpYXNpbmcgUFBHVFQgdGhlcmUncyBubyBkaWZmZXJlbmNl IGJldHdlZW4KQEAgLTI2OTYsNiArMjY5OSw3IEBAIHN0YXRpYyBpbnQgYWxpYXNpbmdfZ3R0X2Jp bmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAogCQkJCSBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwg Y2FjaGVfbGV2ZWwsCiAJCQkJIHUzMiBmbGFncykKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IHRvX2k5MTUodm1hLT52bS0+ZGV2KTsKIAl1MzIgcHRlX2ZsYWdzOwogCWludCBy ZXQ7CiAKQEAgLTI3MTAsMTQgKzI3MTQsMTUgQEAgc3RhdGljIGludCBhbGlhc2luZ19ndHRfYmlu ZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAKIAogCWlmIChmbGFncyAmIEk5MTVfVk1BX0dM T0JBTF9CSU5EKSB7CisJCWludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwogCQl2bWEtPnZtLT5p bnNlcnRfZW50cmllcyh2bWEtPnZtLAogCQkJCQl2bWEtPnBhZ2VzLCB2bWEtPm5vZGUuc3RhcnQs CiAJCQkJCWNhY2hlX2xldmVsLCBwdGVfZmxhZ3MpOworCQlpbnRlbF9ydW50aW1lX3BtX3B1dChp OTE1KTsKIAl9CiAKIAlpZiAoZmxhZ3MgJiBJOTE1X1ZNQV9MT0NBTF9CSU5EKSB7Ci0JCXN0cnVj dCBpOTE1X2h3X3BwZ3R0ICphcHBndHQgPQotCQkJdG9faTkxNSh2bWEtPnZtLT5kZXYpLT5tbS5h bGlhc2luZ19wcGd0dDsKKwkJc3RydWN0IGk5MTVfaHdfcHBndHQgKmFwcGd0dCA9IGk5MTUtPm1t LmFsaWFzaW5nX3BwZ3R0OwogCQlhcHBndHQtPmJhc2UuaW5zZXJ0X2VudHJpZXMoJmFwcGd0dC0+ YmFzZSwKIAkJCQkJICAgIHZtYS0+cGFnZXMsIHZtYS0+bm9kZS5zdGFydCwKIAkJCQkJICAgIGNh Y2hlX2xldmVsLCBwdGVfZmxhZ3MpOwpAQCAtMjcyOCwxMiArMjczMywxNiBAQCBzdGF0aWMgaW50 IGFsaWFzaW5nX2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKIAogc3RhdGljIHZv aWQgZ2d0dF91bmJpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogewotCXN0cnVjdCBpOTE1 X2h3X3BwZ3R0ICphcHBndHQgPSB0b19pOTE1KHZtYS0+dm0tPmRldiktPm1tLmFsaWFzaW5nX3Bw Z3R0OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNSh2bWEtPnZtLT5k ZXYpOworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICphcHBndHQgPSBpOTE1LT5tbS5hbGlhc2luZ19w cGd0dDsKIAljb25zdCB1NjQgc2l6ZSA9IG1pbih2bWEtPnNpemUsIHZtYS0+bm9kZS5zaXplKTsK IAotCWlmICh2bWEtPmZsYWdzICYgSTkxNV9WTUFfR0xPQkFMX0JJTkQpCisJaWYgKHZtYS0+Zmxh Z3MgJiBJOTE1X1ZNQV9HTE9CQUxfQklORCkgeworCQlpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1 KTsKIAkJdm1hLT52bS0+Y2xlYXJfcmFuZ2Uodm1hLT52bSwKIAkJCQkgICAgIHZtYS0+bm9kZS5z dGFydCwgc2l6ZSk7CisJCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUpOworCX0KIAogCWlmICh2 bWEtPmZsYWdzICYgSTkxNV9WTUFfTE9DQUxfQklORCAmJiBhcHBndHQpCiAJCWFwcGd0dC0+YmFz ZS5jbGVhcl9yYW5nZSgmYXBwZ3R0LT5iYXNlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV90 aWxpbmcuYwppbmRleCBjMjFiYzAwNjhkMjAuLjcxZjgwZDJhNDg3YyAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fdGlsaW5nLmMKQEAgLTIwNSw4ICsyMDUsNiBAQCBpOTE1X2dlbV9zZXRf dGlsaW5nKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCXJldHVybiAtRUlO VkFMOwogCX0KIAotCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKLQogCW11dGV4X2xv Y2soJmRldi0+c3RydWN0X211dGV4KTsKIAlpZiAob2JqLT5waW5fZGlzcGxheSB8fCBvYmotPmZy YW1lYnVmZmVyX3JlZmVyZW5jZXMpIHsKIAkJZXJyID0gLUVCVVNZOwpAQCAtMzAyLDggKzMwMCw2 IEBAIGk5MTVfZ2VtX3NldF90aWxpbmcoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7CiAKLQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7Ci0KIAlyZXR1cm4g ZXJyOwogfQogCi0tIAoyLjkuMwoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==