From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 24/49] drm/i915: Tidy execlist submission Date: Fri, 27 Mar 2015 11:01:56 +0000 Message-ID: <1427454141-4000-25-git-send-email-chris@chris-wilson.co.uk> References: <1427454141-4000-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 relay.fireflyinternet.com (hostedrelay.fireflyinternet.com [109.228.30.76]) by gabe.freedesktop.org (Postfix) with ESMTP id 3752C72148 for ; Fri, 27 Mar 2015 04:02:49 -0700 (PDT) In-Reply-To: <1427454141-4000-1-git-send-email-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 VGhlIGxpc3QgaGFuZGxpbmcgZHVyaW5nIHN1Ym1pc3Npb24gd2FzIHF1aXRlIGNvbmZ1c2luZyBh cyB0aGUgcmV0aXJlZApyZXF1ZXN0cyB3ZXJlIG91dCBvZiBvcmRlciAtIG1ha2luZyBpdCBtdWNo IGhhcmRlciBpbiBmdXR1cmUgdG8gcmVkdWNlCnRoZSBleHRyYSBsaXN0cy4gU2ltcGxpZnkgdGhl IHN1Ym1pc3Npb24gbWVjaGFuaXNtIHRvIGV4cGxpY2l0bHkgdHJhY2sKdGhlIGFjdHVhbCByZXF1 ZXN0cyBjdXJyZW50IG9uIGVhY2ggcG9ydCBhbmQgc28gdHJpbSB0aGUgYW1vdW50IG9mIHdvcmsK cmVxdWlyZWQgdG8gdHJhY2sgaGFyZHdhcmUgYW5kIG1ha2luZyBleGVjbGlzdHMgbW9yZSBjb25z aXN0ZW50IHdpdGggdGhlCkdFTSBjb3JlLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMgICAgIHwgIDIxICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8 ICAxNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgMjkzICsr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuaCAgICAgICAgfCAgIDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5oIHwgICAzICstCiA2IGZpbGVzIGNoYW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCAyMTIg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1 Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCA1Y2VhOWE5 YzFjYjkuLjIxZTJkNjdkM2UyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAg LTE5MjksOCArMTkyOSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHVtcF9scmNfb2JqKHN0cnVjdCBz ZXFfZmlsZSAqbSwKIAkJcmV0dXJuOwogCX0KIAotCXNlcV9wcmludGYobSwgIkNPTlRFWFQ6ICVz ICV1XG4iLCByaW5nLT5uYW1lLAotCQkgICBpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGN0eF9vYmop KTsKKwlzZXFfcHJpbnRmKG0sICJDT05URVhUOiAlc1xuIiwgcmluZy0+bmFtZSk7CiAKIAlpZiAo IWk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kKGN0eF9vYmopKQogCQlzZXFfcHV0cyhtLCAiXHROb3Qg Ym91bmQgaW4gR0dUVFxuIik7CkBAIC0yMDE2LDcgKzIwMTUsNyBAQCBzdGF0aWMgaW50IGk5MTVf ZXhlY2xpc3RzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKIAlpbnRlbF9ydW50aW1l X3BtX2dldChkZXZfcHJpdik7CiAKIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCByaW5n X2lkKSB7Ci0JCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqaGVhZF9yZXEgPSBOVUxMOwor CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJxWzJdOwogCQlpbnQgY291bnQgPSAwOwog CQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCkBAIC0yMDQ2LDIyICsyMDQ1LDE2IEBAIHN0YXRpYyBp bnQgaTkxNV9leGVjbGlzdHMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQogCQl9CiAK IAkJc3Bpbl9sb2NrX2lycXNhdmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKKwkJbWVt Y3B5KHJxLCByaW5nLT5leGVjbGlzdF9wb3J0LCBzaXplb2YocnEpKTsKIAkJbGlzdF9mb3JfZWFj aChjdXJzb3IsICZyaW5nLT5leGVjbGlzdF9xdWV1ZSkKIAkJCWNvdW50Kys7Ci0JCWhlYWRfcmVx ID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZyaW5nLT5leGVjbGlzdF9xdWV1ZSwKLQkJCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsIGV4ZWNsaXN0X2xpbmspOwogCQlzcGluX3VubG9j a19pcnFyZXN0b3JlKCZyaW5nLT5leGVjbGlzdF9sb2NrLCBmbGFncyk7CiAKIAkJc2VxX3ByaW50 ZihtLCAiXHQlZCByZXF1ZXN0cyBpbiBxdWV1ZVxuIiwgY291bnQpOwotCQlpZiAoaGVhZF9yZXEp IHsKLQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqOwotCi0JCQljdHhfb2Jq ID0gaGVhZF9yZXEtPmN0eC0+ZW5naW5lW3JpbmdfaWRdLnN0YXRlOwotCQkJc2VxX3ByaW50Ziht LCAiXHRIZWFkIHJlcXVlc3QgaWQ6ICV1XG4iLAotCQkJCSAgIGludGVsX2V4ZWNsaXN0c19jdHhf aWQoY3R4X29iaikpOwotCQkJc2VxX3ByaW50ZihtLCAiXHRIZWFkIHJlcXVlc3QgdGFpbDogJXVc biIsCi0JCQkJICAgaGVhZF9yZXEtPnRhaWwpOwotCQl9CisJCXNlcV9wcmludGYobSwgIlx0UG9y dFswXSBzZXFubzogJXVcbiIsCisJCQkgICBycVswXSA/IHJxWzBdLT5zZXFubyA6IDApOworCQlz ZXFfcHJpbnRmKG0sICJcdFBvcnRbMV0gc2Vxbm86ICV1XG4iLAorCQkJICAgcnFbMV0gPyBycVsx XS0+c2Vxbm8gOiAwKTsKIAogCQlzZXFfcHV0YyhtLCAnXG4nKTsKIAl9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaAppbmRleCA2OGE1MDg5MTgzMGYuLmVlNTE1NDBlMTY5YSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCkBAIC0yMTE2LDEwICsyMTE2LDYgQEAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0IHsKIAogCS8qKiBFeGVjbGlzdCBsaW5rIGluIHRoZSBzdWJtaXNzaW9uIHF1ZXVlLiovCiAJ c3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9saW5rOwotCi0JLyoqIEV4ZWNsaXN0cyBuby4gb2Yg dGltZXMgdGhpcyByZXF1ZXN0IGhhcyBiZWVuIHNlbnQgdG8gdGhlIEVMU1AgKi8KLQlpbnQgZWxz cF9zdWJtaXR0ZWQ7Ci0KIH07CiAKIHZvaWQgaTkxNV9nZW1fcmVxdWVzdF9mcmVlKHN0cnVjdCBr cmVmICpyZXFfcmVmKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCmluZGV4IGNjMjNhODc3M2E4OS4u ZGI0YTUzZjI0OGEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKQEAgLTI2MzIsMTUgKzI2MzIs MTQgQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fcmVzZXRfcmluZ19jbGVhbnVwKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkgKiBhcmUgdGhlIG9uZXMgdGhhdCBrZWVwIHRoZSBj b250ZXh0IGFuZCByaW5nYnVmZmVyIGJhY2tpbmcgb2JqZWN0cwogCSAqIHBpbm5lZCBpbiBwbGFj ZS4KIAkgKi8KLQl3aGlsZSAoIWxpc3RfZW1wdHkoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlKSkgewot CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnN1Ym1pdF9yZXE7Ci0KLQkJc3VibWl0X3Jl cSA9IGxpc3RfZmlyc3RfZW50cnkoJnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAotCQkJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCwKLQkJCQlleGVjbGlzdF9saW5rKTsKLQkJbGlzdF9kZWwoJnN1 Ym1pdF9yZXEtPmV4ZWNsaXN0X2xpbmspOworCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsK KwkJc3Bpbl9sb2NrX2lycSgmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisJCWxpc3Rfc3BsaWNlX3Rh aWxfaW5pdCgmcmluZy0+ZXhlY2xpc3RfcXVldWUsCisJCQkJICAgICAgJnJpbmctPmV4ZWNsaXN0 X2NvbXBsZXRlZCk7CisJCW1lbXNldCgmcmluZy0+ZXhlY2xpc3RfcG9ydCwgMCwgc2l6ZW9mKHJp bmctPmV4ZWNsaXN0X3BvcnQpKTsKKwkJc3Bpbl91bmxvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9s b2NrKTsKIAotCQlpOTE1X2dlbV9yZXF1ZXN0X3VucmVmZXJlbmNlKHN1Ym1pdF9yZXEpOworCQlp bnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOwogCX0KIAogCS8qCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCmluZGV4IDNjZDQwNjk5NTIyZS4uYTAxMzIzOWY1ZTI2IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwpAQCAtMjMwLDc4ICsyMzAsNTQgQEAgaW50IGludGVsX3Nhbml0 aXplX2VuYWJsZV9leGVjbGlzdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGVuYWJsZV9l eGVjbGlzdHMKIAlyZXR1cm4gMDsKIH0KIAotLyoqCi0gKiBpbnRlbF9leGVjbGlzdHNfY3R4X2lk KCkgLSBnZXQgdGhlIEV4ZWNsaXN0cyBDb250ZXh0IElECi0gKiBAY3R4X29iajogTG9naWNhbCBS aW5nIENvbnRleHQgYmFja2luZyBvYmplY3QuCi0gKgotICogRG8gbm90IGNvbmZ1c2Ugd2l0aCBj dHgtPmlkISBVbmZvcnR1bmF0ZWx5IHdlIGhhdmUgYSBuYW1lIG92ZXJsb2FkCi0gKiBoZXJlOiB0 aGUgb2xkIGNvbnRleHQgSUQgd2UgcGFzcyB0byB1c2Vyc3BhY2UgYXMgYSBoYW5kbGVyIHNvIHRo YXQKLSAqIHRoZXkgY2FuIHJlZmVyIHRvIGEgY29udGV4dCwgYW5kIHRoZSBuZXcgY29udGV4dCBJ RCB3ZSBwYXNzIHRvIHRoZQotICogRUxTUCBzbyB0aGF0IHRoZSBHUFUgY2FuIGluZm9ybSB1cyBv ZiB0aGUgY29udGV4dCBzdGF0dXMgdmlhCi0gKiBpbnRlcnJ1cHRzLgotICoKLSAqIFJldHVybjog MjAtYml0cyBnbG9iYWxseSB1bmlxdWUgY29udGV4dCBJRC4KLSAqLwotdTMyIGludGVsX2V4ZWNs aXN0c19jdHhfaWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmopCi17Ci0JdTMy IGxyY2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoY3R4X29iaik7Ci0KLQkvKiBMUkNBIGlz IHJlcXVpcmVkIHRvIGJlIDRLIGFsaWduZWQgc28gdGhlIG1vcmUgc2lnbmlmaWNhbnQgMjAgYml0 cwotCSAqIGFyZSBnbG9iYWxseSB1bmlxdWUgKi8KLQlyZXR1cm4gbHJjYSA+PiAxMjsKLX0KLQot c3RhdGljIHVpbnQ2NF90IGV4ZWNsaXN0c19jdHhfZGVzY3JpcHRvcihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAorc3RhdGljIHVpbnQzMl90IGV4ZWNsaXN0c19jdHhfZGVzY3JpcHRvcihz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQkJCQkgc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmN0eF9vYmopCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsK LQl1aW50NjRfdCBkZXNjOwotCXVpbnQ2NF90IGxyY2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXQoY3R4X29iaik7Ci0KLQlXQVJOX09OKGxyY2EgJiAweEZGRkZGRkZGMDAwMDBGRkZVTEwpOwor CXVpbnQzMl90IGRlc2M7CiAKIAlkZXNjID0gR0VOOF9DVFhfVkFMSUQ7CiAJZGVzYyB8PSBMRUdB Q1lfQ09OVEVYVCA8PCBHRU44X0NUWF9NT0RFX1NISUZUOwogCWRlc2MgfD0gR0VOOF9DVFhfTDNM TENfQ09IRVJFTlQ7CiAJZGVzYyB8PSBHRU44X0NUWF9QUklWSUxFR0U7Ci0JZGVzYyB8PSBscmNh OwotCWRlc2MgfD0gKHU2NClpbnRlbF9leGVjbGlzdHNfY3R4X2lkKGN0eF9vYmopIDw8IEdFTjhf Q1RYX0lEX1NISUZUOworCWRlc2MgfD0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGN0eF9vYmop OwogCiAJLyogVE9ETzogV2FEaXNhYmxlTGl0ZVJlc3RvcmUgd2hlbiB3ZSBzdGFydCB1c2luZyBz ZW1hcGhvcmUKIAkgKiBzaWduYWxsaW5nIGJldHdlZW4gQ29tbWFuZCBTdHJlYW1lcnMgKi8KIAkv KiBkZXNjIHw9IEdFTjhfQ1RYX0ZPUkNFX1JFU1RPUkU7ICovCiAKIAkvKiBXYUVuYWJsZUZvcmNl UmVzdG9yZUluQ3R4dERlc2NGb3JWQ1M6c2tsICovCi0JaWYgKElTX0dFTjkoZGV2KSAmJgotCSAg ICBJTlRFTF9SRVZJRChkZXYpIDw9IFNLTF9SRVZJRF9CMCAmJgorCWlmIChJU19HRU45KHJpbmct PmRldikgJiYgSU5URUxfUkVWSUQocmluZy0+ZGV2KSA8PSBTS0xfUkVWSURfQjAgJiYKIAkgICAg KHJpbmctPmlkID09IEJDUyB8fCByaW5nLT5pZCA9PSBWQ1MgfHwKLQkgICAgcmluZy0+aWQgPT0g VkVDUyB8fCByaW5nLT5pZCA9PSBWQ1MyKSkKKwkgICAgIHJpbmctPmlkID09IFZFQ1MgfHwgcmlu Zy0+aWQgPT0gVkNTMikpCiAJCWRlc2MgfD0gR0VOOF9DVFhfRk9SQ0VfUkVTVE9SRTsKIAogCXJl dHVybiBkZXNjOwogfQogCi1zdGF0aWMgdm9pZCBleGVjbGlzdHNfZWxzcF93cml0ZShzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nLAotCQkJCSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq Y3R4X29iajAsCi0JCQkJIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpjdHhfb2JqMSkKK3N0 YXRpYyB1aW50MzJfdCBleGVjbGlzdHNfcmVxdWVzdF93cml0ZV90YWlsKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCisJCQkJCSAgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy cSkKKwogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQl1aW50NjRfdCB0 ZW1wID0gMDsKKwlycS0+Y3R4LT5lbmdpbmVbcmluZy0+aWRdLnJpbmdidWYtPnJlZ3NbQ1RYX1JJ TkdfVEFJTCsxXSA9IHJxLT50YWlsOworCXJldHVybiBleGVjbGlzdHNfY3R4X2Rlc2NyaXB0b3Io cmluZywgcnEtPmN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lk IGV4ZWNsaXN0c19zdWJtaXRfcGFpcihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUocmluZy0+ZGV2KTsK IAl1aW50MzJfdCBkZXNjWzRdOwogCi0JLyogWFhYOiBZb3UgbXVzdCBhbHdheXMgd3JpdGUgYm90 aCBkZXNjcmlwdG9ycyBpbiB0aGUgb3JkZXIgYmVsb3cuICovCi0JaWYgKGN0eF9vYmoxKQotCQl0 ZW1wID0gZXhlY2xpc3RzX2N0eF9kZXNjcmlwdG9yKHJpbmcsIGN0eF9vYmoxKTsKLQllbHNlCi0J CXRlbXAgPSAwOwotCWRlc2NbMV0gPSAodTMyKSh0ZW1wID4+IDMyKTsKLQlkZXNjWzBdID0gKHUz Mil0ZW1wOworCWlmIChyaW5nLT5leGVjbGlzdF9wb3J0WzFdKSB7CisJCWRlc2NbMF0gPSBleGVj bGlzdHNfcmVxdWVzdF93cml0ZV90YWlsKHJpbmcsCisJCQkJCQkgICAgICAgcmluZy0+ZXhlY2xp c3RfcG9ydFsxXSk7CisJCWRlc2NbMV0gPSByaW5nLT5leGVjbGlzdF9wb3J0WzFdLT5zZXFubzsK Kwl9IGVsc2UKKwkJZGVzY1sxXSA9IGRlc2NbMF0gPSAwOwogCi0JdGVtcCA9IGV4ZWNsaXN0c19j dHhfZGVzY3JpcHRvcihyaW5nLCBjdHhfb2JqMCk7Ci0JZGVzY1szXSA9ICh1MzIpKHRlbXAgPj4g MzIpOwotCWRlc2NbMl0gPSAodTMyKXRlbXA7CisJZGVzY1syXSA9IGV4ZWNsaXN0c19yZXF1ZXN0 X3dyaXRlX3RhaWwocmluZywgcmluZy0+ZXhlY2xpc3RfcG9ydFswXSk7CisJZGVzY1szXSA9IHJp bmctPmV4ZWNsaXN0X3BvcnRbMF0tPnNlcW5vOwogCisJLyogTm90ZTogWW91IG11c3QgYWx3YXlz IHdyaXRlIGJvdGggZGVzY3JpcHRvcnMgaW4gdGhlIG9yZGVyIGJlbG93LiAqLwogCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKIAlJOTE1X1dSSVRF KFJJTkdfRUxTUChyaW5nKSwgZGVzY1sxXSk7CiAJSTkxNV9XUklURShSSU5HX0VMU1AocmluZyks IGRlc2NbMF0pOwpAQCAtMzEwLDk2ICsyODYsODIgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2Vs c3Bfd3JpdGUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAkvKiBUaGUgY29udGV4dCBp cyBhdXRvbWF0aWNhbGx5IGxvYWRlZCBhZnRlciB0aGUgZm9sbG93aW5nICovCiAJSTkxNV9XUklU RShSSU5HX0VMU1AocmluZyksIGRlc2NbMl0pOwogCi0JLyogRUxTUCBpcyBhIHdvIHJlZ2lzdGVy LCBzbyB1c2UgYW5vdGhlciBuZWFyYnkgcmVnIGZvciBwb3N0aW5nIGluc3RlYWQgKi8KKwkvKiBF TFNQIGlzIGEgd28gcmVnaXN0ZXIsIHVzZSBhbm90aGVyIG5lYXJieSByZWcgZm9yIHBvc3Rpbmcg aW5zdGVhZCAqLwogCVBPU1RJTkdfUkVBRChSSU5HX0VYRUNMSVNUX1NUQVRVUyhyaW5nKSk7CiAJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOwogfQog Ci1zdGF0aWMgdm9pZCBleGVjbGlzdHNfc3VibWl0X2NvbnRleHRzKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKnJpbmcsCi0JCQkJICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKnRvMCwgdTMyIHRh aWwwLAotCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICp0bzEsIHUzMiB0YWlsMSkKK3N0 YXRpYyB2b2lkIGV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iajAgPSB0bzAt PmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0 eF9vYmoxID0gTlVMTDsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1cnNvcjsKKwli b29sIHN1Ym1pdCA9IGZhbHNlOworCWludCBpID0gMDsKIAotCXRvMC0+ZW5naW5lW3JpbmctPmlk XS5yaW5nYnVmLT5yZWdzW0NUWF9SSU5HX1RBSUwrMV0gPSB0YWlsMDsKKwlhc3NlcnRfc3Bpbl9s b2NrZWQoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCi0JaWYgKHRvMSkgewotCQl0bzEtPmVuZ2lu ZVtyaW5nLT5pZF0ucmluZ2J1Zi0+cmVnc1tDVFhfUklOR19UQUlMKzFdID0gdGFpbDE7Ci0JCWN0 eF9vYmoxID0gdG8xLT5lbmdpbmVbcmluZy0+aWRdLnN0YXRlOworCS8qIFRyeSB0byByZWFkIGlu IHBhaXJzICovCisJY3Vyc29yID0gcmluZy0+ZXhlY2xpc3RfcG9ydFswXTsKKwlpZiAoY3Vyc29y ID09IE5VTEwpCisJCWN1cnNvciA9IGxpc3RfZmlyc3RfZW50cnkoJnJpbmctPmV4ZWNsaXN0X3F1 ZXVlLAorCQkJCQkgIHR5cGVvZigqY3Vyc29yKSwKKwkJCQkJICBleGVjbGlzdF9saW5rKTsKKwll bHNlCisJCWN1cnNvciA9IGxpc3RfbmV4dF9lbnRyeShjdXJzb3IsIGV4ZWNsaXN0X2xpbmspOwor CXdoaWxlICgmY3Vyc29yLT5leGVjbGlzdF9saW5rICE9ICZyaW5nLT5leGVjbGlzdF9xdWV1ZSkg eworCQkvKiBTYW1lIGN0eDogaWdub3JlIGVhcmxpZXIgcmVxdWVzdCwgYXMgdGhlCisJCSAqIHNl Y29uZCByZXF1ZXN0IGV4dGVuZHMgdGhlIGZpcnN0LgorCQkgKi8KKwkJaWYgKHJpbmctPmV4ZWNs aXN0X3BvcnRbaV0gJiYKKwkJICAgIGN1cnNvci0+Y3R4ICE9IHJpbmctPmV4ZWNsaXN0X3BvcnRb aV0tPmN0eCkgeworCQkJaWYgKCsraSA9PSBBUlJBWV9TSVpFKHJpbmctPmV4ZWNsaXN0X3BvcnQp KQorCQkJCWJyZWFrOworCQl9CisKKwkJcmluZy0+ZXhlY2xpc3RfcG9ydFtpXSA9IGN1cnNvcjsK KwkJc3VibWl0ID0gdHJ1ZTsKKworCQljdXJzb3IgPSBsaXN0X25leHRfZW50cnkoY3Vyc29yLCBl eGVjbGlzdF9saW5rKTsKIAl9CiAKLQlleGVjbGlzdHNfZWxzcF93cml0ZShyaW5nLCBjdHhfb2Jq MCwgY3R4X29iajEpOworCWlmIChzdWJtaXQpCisJCWV4ZWNsaXN0c19zdWJtaXRfcGFpcihyaW5n KTsKIH0KIAotc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nKQorc3RhdGljIGJvb2wgZXhlY2xpc3RzX2NvbXBsZXRlX3JlcXVl c3RzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCisJCQkJCXUzMiBzZXFubykKIHsKLQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcTAgPSBOVUxMLCAqcmVxMSA9IE5VTEw7Ci0J c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpjdXJzb3IgPSBOVUxMLCAqdG1wID0gTlVMTDsK LQogCWFzc2VydF9zcGluX2xvY2tlZCgmcmluZy0+ZXhlY2xpc3RfbG9jayk7CiAKLQlpZiAobGlz dF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfcXVldWUpKQotCQlyZXR1cm47Ci0KLQkvKiBUcnkgdG8g cmVhZCBpbiBwYWlycyAqLwotCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShjdXJzb3IsIHRtcCwg JnJpbmctPmV4ZWNsaXN0X3F1ZXVlLAotCQkJCSBleGVjbGlzdF9saW5rKSB7Ci0JCWlmICghcmVx MCkgewotCQkJcmVxMCA9IGN1cnNvcjsKLQkJfSBlbHNlIGlmIChyZXEwLT5jdHggPT0gY3Vyc29y LT5jdHgpIHsKLQkJCS8qIFNhbWUgY3R4OiBpZ25vcmUgZmlyc3QgcmVxdWVzdCwgYXMgc2Vjb25k IHJlcXVlc3QKLQkJCSAqIHdpbGwgdXBkYXRlIHRhaWwgcGFzdCBmaXJzdCByZXF1ZXN0J3Mgd29y a2xvYWQgKi8KLQkJCWN1cnNvci0+ZWxzcF9zdWJtaXR0ZWQgPSByZXEwLT5lbHNwX3N1Ym1pdHRl ZDsKLQkJCWxpc3RfZGVsKCZyZXEwLT5leGVjbGlzdF9saW5rKTsKLQkJCWxpc3RfYWRkX3RhaWwo JnJlcTAtPmV4ZWNsaXN0X2xpbmssCi0JCQkJJnJpbmctPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xp c3QpOwotCQkJcmVxMCA9IGN1cnNvcjsKLQkJfSBlbHNlIHsKLQkJCXJlcTEgPSBjdXJzb3I7Ci0J CQlicmVhazsKLQkJfQotCX0KKwlpZiAoc2Vxbm8gPT0gMCkKKwkJcmV0dXJuIGZhbHNlOwogCi0J V0FSTl9PTihyZXExICYmIHJlcTEtPmVsc3Bfc3VibWl0dGVkKTsKKwlkbyB7CisJCXN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7CiAKLQlleGVjbGlzdHNfc3VibWl0X2NvbnRleHRzKHJp bmcsIHJlcTAtPmN0eCwgcmVxMC0+dGFpbCwKLQkJCQkgIHJlcTEgPyByZXExLT5jdHggOiBOVUxM LAotCQkJCSAgcmVxMSA/IHJlcTEtPnRhaWwgOiAwKTsKKwkJcnEgPSByaW5nLT5leGVjbGlzdF9w b3J0WzBdOworCQlpZiAocnEgPT0gTlVMTCkKKwkJCWJyZWFrOwogCi0JcmVxMC0+ZWxzcF9zdWJt aXR0ZWQrKzsKLQlpZiAocmVxMSkKLQkJcmVxMS0+ZWxzcF9zdWJtaXR0ZWQrKzsKLX0KKwkJaWYg KCFpOTE1X3NlcW5vX3Bhc3NlZChzZXFubywgcnEtPnNlcW5vKSkKKwkJCWJyZWFrOwogCi1zdGF0 aWMgYm9vbCBleGVjbGlzdHNfY2hlY2tfcmVtb3ZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqcmluZywKLQkJCQkJICAgdTMyIHJlcXVlc3RfaWQpCi17Ci0Jc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpoZWFkX3JlcTsKKwkJZG8geworCQkJc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpwcmV2ID0KKwkJCQlsaXN0X2VudHJ5KHJxLT5leGVjbGlzdF9saW5rLnByZXYsCisJ CQkJCSAgIHR5cGVvZigqcnEpLAorCQkJCQkgICBleGVjbGlzdF9saW5rKTsKIAotCWFzc2VydF9z cGluX2xvY2tlZCgmcmluZy0+ZXhlY2xpc3RfbG9jayk7CisJCQlsaXN0X21vdmVfdGFpbCgmcnEt PmV4ZWNsaXN0X2xpbmssCisJCQkJICAgICAgICZyaW5nLT5leGVjbGlzdF9jb21wbGV0ZWQpOwog Ci0JaGVhZF9yZXEgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJnJpbmctPmV4ZWNsaXN0X3F1 ZXVlLAotCQkJCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0LAotCQkJCQkgICAgZXhl Y2xpc3RfbGluayk7CisJCQlycSA9IHByZXY7CisJCX0gd2hpbGUgKCZycS0+ZXhlY2xpc3RfbGlu ayAhPSAmcmluZy0+ZXhlY2xpc3RfcXVldWUpOwogCi0JaWYgKGhlYWRfcmVxICE9IE5VTEwpIHsK LQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPQotCQkJCWhlYWRfcmVxLT5j dHgtPmVuZ2luZVtyaW5nLT5pZF0uc3RhdGU7Ci0JCWlmIChpbnRlbF9leGVjbGlzdHNfY3R4X2lk KGN0eF9vYmopID09IHJlcXVlc3RfaWQpIHsKLQkJCVdBUk4oaGVhZF9yZXEtPmVsc3Bfc3VibWl0 dGVkID09IDAsCi0JCQkgICAgICJOZXZlciBzdWJtaXR0ZWQgaGVhZCByZXF1ZXN0XG4iKTsKLQot CQkJaWYgKC0taGVhZF9yZXEtPmVsc3Bfc3VibWl0dGVkIDw9IDApIHsKLQkJCQlsaXN0X2RlbCgm aGVhZF9yZXEtPmV4ZWNsaXN0X2xpbmspOwotCQkJCWxpc3RfYWRkX3RhaWwoJmhlYWRfcmVxLT5l eGVjbGlzdF9saW5rLAotCQkJCQkmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCk7Ci0J CQkJcmV0dXJuIHRydWU7Ci0JCQl9Ci0JCX0KLQl9CisJCXJpbmctPmV4ZWNsaXN0X3BvcnRbMF0g PSByaW5nLT5leGVjbGlzdF9wb3J0WzFdOworCQlyaW5nLT5leGVjbGlzdF9wb3J0WzFdID0gTlVM TDsKKwl9IHdoaWxlICgxKTsKIAotCXJldHVybiBmYWxzZTsKKwlyZXR1cm4gcmluZy0+ZXhlY2xp c3RfcG9ydFsxXSA9PSBOVUxMOwogfQogCiAvKioKQEAgLTQxMSw1MyArMzczLDM0IEBAIHN0YXRp YyBib29sIGV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nLAogICovCiB2b2lkIGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICpyaW5nKQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Ci0JdTMyIHN0YXR1c19wb2ludGVyOwotCXU4IHJlYWRf cG9pbnRlcjsKLQl1OCB3cml0ZV9wb2ludGVyOwotCXUzMiBzdGF0dXM7Ci0JdTMyIHN0YXR1c19p ZDsKLQl1MzIgc3VibWl0X2NvbnRleHRzID0gMDsKLQotCXN0YXR1c19wb2ludGVyID0gSTkxNV9S RUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJpbmcpKTsKLQotCXJlYWRfcG9pbnRlciA9IHJp bmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyOwotCXdyaXRlX3BvaW50ZXIgPSBzdGF0dXNf cG9pbnRlciAmIDB4MDc7Ci0JaWYgKHJlYWRfcG9pbnRlciA+IHdyaXRlX3BvaW50ZXIpCi0JCXdy aXRlX3BvaW50ZXIgKz0gNjsKLQotCXNwaW5fbG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7Ci0K LQl3aGlsZSAocmVhZF9wb2ludGVyIDwgd3JpdGVfcG9pbnRlcikgewotCQlyZWFkX3BvaW50ZXIr KzsKLQkJc3RhdHVzID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfQlVGKHJpbmcpICsK LQkJCQkocmVhZF9wb2ludGVyICUgNikgKiA4KTsKLQkJc3RhdHVzX2lkID0gSTkxNV9SRUFEKFJJ TkdfQ09OVEVYVF9TVEFUVVNfQlVGKHJpbmcpICsKLQkJCQkocmVhZF9wb2ludGVyICUgNikgKiA4 ICsgNCk7Ci0KLQkJaWYgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19QUkVFTVBURUQpIHsKLQkJ CWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfTElURV9SRVNUT1JFKSB7Ci0JCQkJaWYgKGV4 ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVzdChyaW5nLCBzdGF0dXNfaWQpKQotCQkJCQlXQVJO KDEsICJMaXRlIFJlc3RvcmVkIHJlcXVlc3QgcmVtb3ZlZCBmcm9tIHF1ZXVlXG4iKTsKLQkJCX0g ZWxzZQotCQkJCVdBUk4oMSwgIlByZWVtcHRpb24gd2l0aG91dCBMaXRlIFJlc3RvcmVcbiIpOwot CQl9Ci0KLQkJIGlmICgoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSB8fAot CQkgICAgIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKSB7Ci0JCQlp ZiAoZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHJpbmcsIHN0YXR1c19pZCkpCi0JCQkJ c3VibWl0X2NvbnRleHRzKys7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g dG9faTkxNShyaW5nLT5kZXYpOworCXU4IGhlYWQsIHRhaWw7CisJdTMyIHNlcW5vID0gMDsKKwor CWhlYWQgPSByaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlcjsKKwl0YWlsID0gSTkxNV9S RUFEKFJJTkdfQ09OVEVYVF9TVEFUVVNfUFRSKHJpbmcpKSAmIDB4NzsKKwlpZiAoaGVhZCA+IHRh aWwpCisJCXRhaWwgKz0gNjsKKworCXdoaWxlIChoZWFkKysgPCB0YWlsKSB7CisJCXUzMiByZWcg PSBSSU5HX0NPTlRFWFRfU1RBVFVTX0JVRihyaW5nKSArIChoZWFkICUgNikqODsKKwkJdTMyIHN0 YXR1cyA9IEk5MTVfUkVBRChyZWcpOworCQlpZiAodW5saWtlbHkoc3RhdHVzICYgR0VOOF9DVFhf U1RBVFVTX1BSRUVNUFRFRCAmJiAwKSkgeworCQkJRFJNX0VSUk9SKCJQcmUtZW1wdGVkIHJlcXVl c3QgJXggJXMgTGl0ZSBSZXN0b3JlXG4iLAorCQkJCSAgSTkxNV9SRUFEKHJlZyArIDQpLAorCQkJ CSAgc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0xJVEVfUkVTVE9SRSA/ICJ3aXRoIiA6ICJ3aXRo b3V0Iik7CiAJCX0KKwkJaWYgKHN0YXR1cyAmIChHRU44X0NUWF9TVEFUVVNfQUNUSVZFX0lETEUg fAorCQkJICAgICAgR0VOOF9DVFhfU1RBVFVTX0VMRU1FTlRfU1dJVENIKSkKKwkJCXNlcW5vID0g STkxNV9SRUFEKHJlZyArIDQpOwogCX0KIAotCWlmIChzdWJtaXRfY29udGV4dHMgIT0gMCkKKwlz cGluX2xvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOworCWlmIChleGVjbGlzdHNfY29tcGxldGVf cmVxdWVzdHMocmluZywgc2Vxbm8pKQogCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVlKHJpbmcp OwotCiAJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCi0JV0FSTihzdWJtaXRf Y29udGV4dHMgPiAyLCAiTW9yZSB0aGFuIHR3byBjb250ZXh0IGNvbXBsZXRlIGV2ZW50cz9cbiIp OwotCXJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyID0gd3JpdGVfcG9pbnRlciAlIDY7 Ci0KKwlyaW5nLT5uZXh0X2NvbnRleHRfc3RhdHVzX2J1ZmZlciA9IHRhaWwgJSA2OwogCUk5MTVf V1JJVEUoUklOR19DT05URVhUX1NUQVRVU19QVFIocmluZyksCiAJCSAgICgodTMyKXJpbmctPm5l eHRfY29udGV4dF9zdGF0dXNfYnVmZmVyICYgMHgwNykgPDwgOCk7CiB9CkBAIC00NjcsOSArNDEw LDYgQEAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICpyaW5nLAogCQkJCSAgIHUzMiB0YWlsLAogCQkJCSAgIHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcmVxdWVzdCkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmN1 cnNvcjsKLQlpbnQgbnVtX2VsZW1lbnRzID0gMDsKLQogCWlmIChXQVJOX09OKHJlcXVlc3QgPT0g TlVMTCkpCiAJCXJldHVybiAtRU5PREVWOwogCkBAIC00ODMsMjggKzQyMyw4IEBAIHN0YXRpYyBp bnQgZXhlY2xpc3RzX2NvbnRleHRfcXVldWUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK IAogCXNwaW5fbG9ja19pcnEoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCi0JbGlzdF9mb3JfZWFj aF9lbnRyeShjdXJzb3IsICZyaW5nLT5leGVjbGlzdF9xdWV1ZSwgZXhlY2xpc3RfbGluaykKLQkJ aWYgKCsrbnVtX2VsZW1lbnRzID4gMikKLQkJCWJyZWFrOwotCi0JaWYgKG51bV9lbGVtZW50cyA+ IDIpIHsKLQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICp0YWlsX3JlcTsKLQotCQl0YWls X3JlcSA9IGxpc3RfbGFzdF9lbnRyeSgmcmluZy0+ZXhlY2xpc3RfcXVldWUsCi0JCQkJCSAgIHN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCwKLQkJCQkJICAgZXhlY2xpc3RfbGluayk7Ci0KLQkJ aWYgKHRvID09IHRhaWxfcmVxLT5jdHgpIHsKLQkJCVdBUk4odGFpbF9yZXEtPmVsc3Bfc3VibWl0 dGVkICE9IDAsCi0JCQkJIk1vcmUgdGhhbiAyIGFscmVhZHktc3VibWl0dGVkIHJlcXMgcXVldWVk XG4iKTsKLQkJCWxpc3RfZGVsKCZ0YWlsX3JlcS0+ZXhlY2xpc3RfbGluayk7Ci0JCQlsaXN0X2Fk ZF90YWlsKCZ0YWlsX3JlcS0+ZXhlY2xpc3RfbGluaywKLQkJCQkmcmluZy0+ZXhlY2xpc3RfcmV0 aXJlZF9yZXFfbGlzdCk7Ci0JCX0KLQl9Ci0KIAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5leGVj bGlzdF9saW5rLCAmcmluZy0+ZXhlY2xpc3RfcXVldWUpOwotCWlmIChudW1fZWxlbWVudHMgPT0g MCkKKwlpZiAocmluZy0+ZXhlY2xpc3RfcG9ydFswXSA9PSBOVUxMKQogCQlleGVjbGlzdHNfY29u dGV4dF91bnF1ZXVlKHJpbmcpOwogCiAJc3Bpbl91bmxvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9s b2NrKTsKQEAgLTY5MywxMSArNjEzLDExIEBAIHZvaWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9y ZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQogCXN0cnVjdCBsaXN0X2hlYWQg bGlzdDsKIAogCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmcmluZy0+ZGV2LT5zdHJ1Y3RfbXV0 ZXgpKTsKLQlpZiAobGlzdF9lbXB0eSgmcmluZy0+ZXhlY2xpc3RfcmV0aXJlZF9yZXFfbGlzdCkp CisJaWYgKGxpc3RfZW1wdHkoJnJpbmctPmV4ZWNsaXN0X2NvbXBsZXRlZCkpCiAJCXJldHVybjsK IAogCXNwaW5fbG9ja19pcnEoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwotCWxpc3RfcmVwbGFjZV9p bml0KCZyaW5nLT5leGVjbGlzdF9yZXRpcmVkX3JlcV9saXN0LCAmbGlzdCk7CisJbGlzdF9yZXBs YWNlX2luaXQoJnJpbmctPmV4ZWNsaXN0X2NvbXBsZXRlZCwgJmxpc3QpOwogCXNwaW5fdW5sb2Nr X2lycSgmcmluZy0+ZXhlY2xpc3RfbG9jayk7CiAKIAl3aGlsZSAoIWxpc3RfZW1wdHkoJmxpc3Qp KSB7CkBAIC03ODksNiArNzA5LDExIEBAIHN0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9waW4o c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKIAlpZiAocmV0KQogCQlnb3RvIHJlc2V0X3Bp bl9jb3VudDsKIAorCWlmIChXQVJOX09OKGk5MTVfZ2VtX29ial9nZ3R0X29mZnNldChjdHhfb2Jq KSAmIDB4RkZGRkZGRkYwMDAwMEZGRlVMTCkpIHsKKwkJcmV0ID0gLUVOT0RFVjsKKwkJZ290byB1 bnBpbl9jdHhfb2JqOworCX0KKwogCXJldCA9IGludGVsX3Bpbl9hbmRfbWFwX3JpbmdidWZmZXJf b2JqKHJpbmctPmRldiwgcmluZ2J1Zik7CiAJaWYgKHJldCkKIAkJZ290byB1bnBpbl9jdHhfb2Jq OwpAQCAtMTMyNiw3ICsxMjUxLDcgQEAgc3RhdGljIGludCBsb2dpY2FsX3JpbmdfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW4KIAlpbml0X3dh aXRxdWV1ZV9oZWFkKCZyaW5nLT5pcnFfcXVldWUpOwogCiAJSU5JVF9MSVNUX0hFQUQoJnJpbmct PmV4ZWNsaXN0X3F1ZXVlKTsKLQlJTklUX0xJU1RfSEVBRCgmcmluZy0+ZXhlY2xpc3RfcmV0aXJl ZF9yZXFfbGlzdCk7CisJSU5JVF9MSVNUX0hFQUQoJnJpbmctPmV4ZWNsaXN0X2NvbXBsZXRlZCk7 CiAJc3Bpbl9sb2NrX2luaXQoJnJpbmctPmV4ZWNsaXN0X2xvY2spOwogCiAJcmV0ID0gaTkxNV9j bWRfcGFyc2VyX2luaXRfcmluZyhyaW5nKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmgKaW5kZXgg MWQyNGQ0Zjk2M2YxLi4wM2U2OWM4NjM2YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCkBA IC04Myw3ICs4Myw2IEBAIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWlzc2lvbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCiAJCQkgICAgICAgc3RydWN0IGxp c3RfaGVhZCAqdm1hcywKIAkJCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYmF0 Y2hfb2JqLAogCQkJICAgICAgIHU2NCBleGVjX3N0YXJ0LCB1MzIgZGlzcGF0Y2hfZmxhZ3MpOwot dTMyIGludGVsX2V4ZWNsaXN0c19jdHhfaWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0 eF9vYmopOwogCiB2b2lkIGludGVsX2xyY19pcnFfaGFuZGxlcihzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICpyaW5nKTsKIHZvaWQgaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICpyaW5nKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuaAppbmRleCAyNDc3Y2YzZTM5MDYuLjg3MGExZDAwOGRiOSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaApAQCAtMjM5LDggKzIzOSw5IEBAIHN0cnVjdCAgaW50ZWxf ZW5naW5lX2NzIHsKIAogCS8qIEV4ZWNsaXN0cyAqLwogCXNwaW5sb2NrX3QgZXhlY2xpc3RfbG9j azsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKmV4ZWNsaXN0X3BvcnRbMl07CiAJc3Ry dWN0IGxpc3RfaGVhZCBleGVjbGlzdF9xdWV1ZTsKLQlzdHJ1Y3QgbGlzdF9oZWFkIGV4ZWNsaXN0 X3JldGlyZWRfcmVxX2xpc3Q7CisJc3RydWN0IGxpc3RfaGVhZCBleGVjbGlzdF9jb21wbGV0ZWQ7 CiAJdTggbmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXI7CiAJdTMyICAgICAgICAgICAgIGlycV9r ZWVwX21hc2s7IC8qIGJpdG1hc2sgZm9yIGludGVycnVwdHMgdGhhdCBzaG91bGQgbm90IGJlIG1h c2tlZCAqLwogCWludAkJKCplbWl0X3JlcXVlc3QpKHN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpy aW5nYnVmLAotLSAKMi4xLjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==