From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: [DPU PATCH 08/11] drm/msm: Remove hand-rolled out fences Date: Wed, 28 Feb 2018 14:19:03 -0500 Message-ID: <20180228191906.185417-9-seanpaul@chromium.org> References: <20180228191906.185417-1-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180228191906.185417-1-seanpaul-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Sean Paul , hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org UmVtb3ZlIHJlbGVhc2Uvb3V0cHV0L3JldGlyZSBmZW5jZXMgZnJvbSB0aGUgZHB1IGRyaXZlci4g VGhlc2UgYXJlCmFscmVhZHkgYXZhaWxhYmxlIHZpYSBkcm0gY29yZSdzIE9VVF9GRU5DRSBwcm9w ZXJ0eS4KCkNoYW5nZS1JZDogSWQ0MjM4ZDBiNTQ1N2YyYzhlZTJlODdiYjc4MTRlMTg1MGE1NzM2 MjMKU2lnbmVkLW9mZi1ieTogU2VhbiBQYXVsIDxzZWFucGF1bEBjaHJvbWl1bS5vcmc+Ci0tLQog ZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jIHwgIDY2ICstLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuaCB8ICAyMyAt LS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgICAgICB8IDE3OCAr KystLS0tLS0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRj LmggICAgICB8ICAyOCAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyLmMgICB8ICAgMyAtCiBkcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rl ci5oICAgfCAgIDQgKy0KIC4uLi9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 cy5oICB8ICAgOCAtCiAuLi4vZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQu YyAgfCAgNzMgKy0tLS0tLQogLi4uL2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNf dmlkLmMgIHwgIDE5IC0tCiAuLi4vZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c193 Yi5jICAgfCAgMTIgKy0KIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9rbXMuYyAg ICAgICB8ICAzMCAtLS0KIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Rydi5oICAgICAgICAgICAg ICAgICB8ICAgMyAtCiAxMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA0MTEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2Nvbm5lY3Rvci5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rv ci5jCmluZGV4IDU3Yjg2MjdlZjQxOC4uY2M1YmZhODYyY2I3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Nvbm5lY3Rvci5jCkBAIC01MjEsNyArNTIxLDYgQEAgc3Rh dGljIHZvaWQgZHB1X2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25u ZWN0b3IpCiAJCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihjX2Nvbm4tPmJsX2RldmljZSk7 CiAJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7CiAJbXV0ZXhfZGVzdHJveSgm Y19jb25uLT5sb2NrKTsKLQlkcHVfZmVuY2VfZGVpbml0KCZjX2Nvbm4tPnJldGlyZV9mZW5jZSk7 CiAJZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwKGNvbm5lY3Rvcik7CiAJa2ZyZWUoY19jb25uKTsKIH0K QEAgLTkwNiwxMiArOTA1LDkgQEAgc3RhdGljIGludCBkcHVfY29ubmVjdG9yX2F0b21pY19nZXRf cHJvcGVydHkoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAljX3N0YXRlID0gdG9f ZHB1X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSk7CiAKIAlpZHggPSBtc21fcHJvcGVydHlfaW5kZXgo JmNfY29ubi0+cHJvcGVydHlfaW5mbywgcHJvcGVydHkpOwotCWlmIChpZHggPT0gQ09OTkVDVE9S X1BST1BfUkVUSVJFX0ZFTkNFKQotCQlyYyA9IGRwdV9mZW5jZV9jcmVhdGUoJmNfY29ubi0+cmV0 aXJlX2ZlbmNlLCB2YWwsIDApOwotCWVsc2UKLQkJLyogZ2V0IGNhY2hlZCBwcm9wZXJ0eSB2YWx1 ZSAqLwotCQlyYyA9IG1zbV9wcm9wZXJ0eV9hdG9taWNfZ2V0KCZjX2Nvbm4tPnByb3BlcnR5X2lu Zm8sCi0JCQkJJmNfc3RhdGUtPnByb3BlcnR5X3N0YXRlLCBwcm9wZXJ0eSwgdmFsKTsKKwkvKiBn ZXQgY2FjaGVkIHByb3BlcnR5IHZhbHVlICovCisJcmMgPSBtc21fcHJvcGVydHlfYXRvbWljX2dl dCgmY19jb25uLT5wcm9wZXJ0eV9pbmZvLAorCQkJJmNfc3RhdGUtPnByb3BlcnR5X3N0YXRlLCBw cm9wZXJ0eSwgdmFsKTsKIAogCS8qIGFsbG93IGZvciBjdXN0b20gb3ZlcnJpZGUgKi8KIAlpZiAo Y19jb25uLT5vcHMuZ2V0X3Byb3BlcnR5KQpAQCAtOTIzLDM5ICs5MTksNiBAQCBzdGF0aWMgaW50 IGRwdV9jb25uZWN0b3JfYXRvbWljX2dldF9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAogCXJldHVybiByYzsKIH0KIAotdm9pZCBkcHVfY29ubmVjdG9yX3ByZXBhcmVf ZmVuY2Uoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKLXsKLQlpZiAoIWNvbm5lY3Rv cikgewotCQlEUFVfRVJST1IoImludmFsaWQgY29ubmVjdG9yXG4iKTsKLQkJcmV0dXJuOwotCX0K LQotCWRwdV9mZW5jZV9wcmVwYXJlKCZ0b19kcHVfY29ubmVjdG9yKGNvbm5lY3RvciktPnJldGly ZV9mZW5jZSk7Ci19Ci0KLXZvaWQgZHB1X2Nvbm5lY3Rvcl9jb21wbGV0ZV9jb21taXQoc3RydWN0 IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKLQkJa3RpbWVfdCB0cykKLXsKLQlpZiAoIWNvbm5l Y3RvcikgewotCQlEUFVfRVJST1IoImludmFsaWQgY29ubmVjdG9yXG4iKTsKLQkJcmV0dXJuOwot CX0KLQotCS8qIHNpZ25hbCBjb25uZWN0b3IncyByZXRpcmUgZmVuY2UgKi8KLQlkcHVfZmVuY2Vf c2lnbmFsKCZ0b19kcHVfY29ubmVjdG9yKGNvbm5lY3RvciktPnJldGlyZV9mZW5jZSwgdHMsIGZh bHNlKTsKLX0KLQotdm9pZCBkcHVfY29ubmVjdG9yX2NvbW1pdF9yZXNldChzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLCBrdGltZV90IHRzKQotewotCWlmICghY29ubmVjdG9yKSB7Ci0J CURQVV9FUlJPUigiaW52YWxpZCBjb25uZWN0b3JcbiIpOwotCQlyZXR1cm47Ci0JfQotCi0JLyog c2lnbmFsIGNvbm5lY3RvcidzIHJldGlyZSBmZW5jZSAqLwotCWRwdV9mZW5jZV9zaWduYWwoJnRv X2RwdV9jb25uZWN0b3IoY29ubmVjdG9yKS0+cmV0aXJlX2ZlbmNlLCB0cywgdHJ1ZSk7Ci19Ci0K IHN0YXRpYyBlbnVtIGRybV9jb25uZWN0b3Jfc3RhdHVzCiBkcHVfY29ubmVjdG9yX2RldGVjdChz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQogewpAQCAtMTIxNCwy NiArMTE3NywxOSBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqZHB1X2Nvbm5lY3Rvcl9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkiY29ubiV1IiwKIAkJCWNfY29ubi0+YmFzZS5iYXNl LmlkKTsKIAotCXJjID0gZHB1X2ZlbmNlX2luaXQoJmNfY29ubi0+cmV0aXJlX2ZlbmNlLCBjX2Nv bm4tPm5hbWUsCi0JCQljX2Nvbm4tPmJhc2UuYmFzZS5pZCk7Ci0JaWYgKHJjKSB7Ci0JCURQVV9F UlJPUigiZmFpbGVkIHRvIGluaXQgZmVuY2UsICVkXG4iLCByYyk7Ci0JCWdvdG8gZXJyb3JfY2xl YW51cF9jb25uOwotCX0KLQogCW11dGV4X2luaXQoJmNfY29ubi0+bG9jayk7CiAKIAlyYyA9IGRy bV9tb2RlX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcigmY19jb25uLT5iYXNlLCBlbmNvZGVyKTsK IAlpZiAocmMpIHsKIAkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYXR0YWNoIGVuY29kZXIgdG8gY29u bmVjdG9yLCAlZFxuIiwgcmMpOwotCQlnb3RvIGVycm9yX2NsZWFudXBfZmVuY2U7CisJCWdvdG8g ZXJyb3JfY2xlYW51cF9jb25uOwogCX0KIAogI2lmZGVmIENPTkZJR19EUk1fTVNNX0RTSV9TVEFH SU5HCiAJcmMgPSBkcHVfYmFja2xpZ2h0X3NldHVwKGNfY29ubiwgZGV2KTsKIAlpZiAocmMpIHsK IAkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gc2V0dXAgYmFja2xpZ2h0LCByYz0lZFxuIiwgcmMpOwot CQlnb3RvIGVycm9yX2NsZWFudXBfZmVuY2U7CisJCWdvdG8gZXJyb3JfY2xlYW51cF9jb25uOwog CX0KICNlbmRpZgogCkBAIC0xMjQ4LDcgKzEyMDQsNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq ZHB1X2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlmICghaW5mbykg ewogCQkJRFBVX0VSUk9SKCJmYWlsZWQgdG8gYWxsb2NhdGUgaW5mbyBidWZmZXJcbiIpOwogCQkJ cmMgPSAtRU5PTUVNOwotCQkJZ290byBlcnJvcl9jbGVhbnVwX2ZlbmNlOworCQkJZ290byBlcnJv cl9jbGVhbnVwX2Nvbm47CiAJCX0KIAogCQlkcHVfa21zX2luZm9fcmVzZXQoaW5mbyk7CkBAIC0x MjU2LDcgKzEyMTIsNyBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqZHB1X2Nvbm5lY3Rvcl9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlmIChyYykgewogCQkJRFBVX0VSUk9SKCJwb3N0 LWluaXQgZmFpbGVkLCAlZFxuIiwgcmMpOwogCQkJa2ZyZWUoaW5mbyk7Ci0JCQlnb3RvIGVycm9y X2NsZWFudXBfZmVuY2U7CisJCQlnb3RvIGVycm9yX2NsZWFudXBfY29ubjsKIAkJfQogCiAJCW1z bV9wcm9wZXJ0eV9pbnN0YWxsX2Jsb2IoJmNfY29ubi0+cHJvcGVydHlfaW5mbywKQEAgLTEzMTAs MTAgKzEyNjYsNiBAQCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqZHB1X2Nvbm5lY3Rvcl9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJJmNfY29ubi0+cHJvcGVydHlfaW5mbywgImRwdV9k cm1fcm9pX3YxIiwgMHgwLAogCQkJCTAsIH4wLCAwLCBDT05ORUNUT1JfUFJPUF9ST0lfVjEpOwog CX0KLQotCW1zbV9wcm9wZXJ0eV9pbnN0YWxsX3JhbmdlKCZjX2Nvbm4tPnByb3BlcnR5X2luZm8s ICJSRVRJUkVfRkVOQ0UiLAotCQkJMHgwLCAwLCBJTlJfT1BFTl9NQVgsIDAsIENPTk5FQ1RPUl9Q Uk9QX1JFVElSRV9GRU5DRSk7Ci0KIAltc21fcHJvcGVydHlfaW5zdGFsbF9yYW5nZSgmY19jb25u LT5wcm9wZXJ0eV9pbmZvLCAiYXV0b3JlZnJlc2giLAogCQkJMHgwLCAwLCBBVVRPUkVGUkVTSF9N QVhfRlJBTUVfQ05ULCAwLAogCQkJQ09OTkVDVE9SX1BST1BfQVVUT1JFRlJFU0gpOwpAQCAtMTM1 NCwxMCArMTMwNiw4IEBAIHN0cnVjdCBkcm1fY29ubmVjdG9yICpkcHVfY29ubmVjdG9yX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KGNfY29ubi0+ YmxvYl9kaXRoZXIpOwogCiAJbXNtX3Byb3BlcnR5X2Rlc3Ryb3koJmNfY29ubi0+cHJvcGVydHlf aW5mbyk7Ci1lcnJvcl9jbGVhbnVwX2ZlbmNlOgotCW11dGV4X2Rlc3Ryb3koJmNfY29ubi0+bG9j ayk7Ci0JZHB1X2ZlbmNlX2RlaW5pdCgmY19jb25uLT5yZXRpcmVfZmVuY2UpOwogZXJyb3JfY2xl YW51cF9jb25uOgorCW11dGV4X2Rlc3Ryb3koJmNfY29ubi0+bG9jayk7CiAJZHJtX2Nvbm5lY3Rv cl9jbGVhbnVwKCZjX2Nvbm4tPmJhc2UpOwogZXJyb3JfZnJlZV9jb25uOgogCWtmcmVlKGNfY29u bik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVj dG9yLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmgKaW5k ZXggZjZmNDgzN2QxMzU5Li5mZGI0ZDg3NjY1NDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9tc20vZGlzcC9kcHUxL2RwdV9jb25uZWN0b3IuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L2Rpc3AvZHB1MS9kcHVfY29ubmVjdG9yLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNpbmNsdWRlICJt c21fZHJ2LmgiCiAjaW5jbHVkZSAibXNtX3Byb3AuaCIKICNpbmNsdWRlICJkcHVfa21zLmgiCi0j aW5jbHVkZSAiZHB1X2ZlbmNlLmgiCiAKICNkZWZpbmUgRFBVX0NPTk5FQ1RPUl9OQU1FX1NJWkUJ MTYKIApAQCAtMjQ3LDcgKzI0Niw2IEBAIHN0cnVjdCBkcHVfY29ubmVjdG9yX2V2dCB7CiAgKiBA bW11X3Vuc2VjdXJlOiBNTVUgaWQgZm9yIHVuc2VjdXJlIGJ1ZmZlcnMKICAqIEBuYW1lOiBBU0NJ SSBuYW1lIG9mIGNvbm5lY3RvcgogICogQGxvY2s6IE11dGV4IGxvY2sgb2JqZWN0IGZvciB0aGlz IHN0cnVjdHVyZQotICogQHJldGlyZV9mZW5jZTogUmV0aXJlIGZlbmNlIGNvbnRleHQgcmVmZXJl bmNlCiAgKiBAb3BzOiBMb2NhbCBjYWxsYmFjayBmdW5jdGlvbiBwb2ludGVyIHRhYmxlCiAgKiBA ZHBtc19tb2RlOiBEUE1TIHByb3BlcnR5IHNldHRpbmcgZnJvbSB1c2VyIHNwYWNlCiAgKiBAbHBf bW9kZTogTFAgcHJvcGVydHkgc2V0dGluZyBmcm9tIHVzZXIgc3BhY2UKQEAgLTI3NCw3ICsyNzIs NiBAQCBzdHJ1Y3QgZHB1X2Nvbm5lY3RvciB7CiAJY2hhciBuYW1lW0RQVV9DT05ORUNUT1JfTkFN RV9TSVpFXTsKIAogCXN0cnVjdCBtdXRleCBsb2NrOwotCXN0cnVjdCBkcHVfZmVuY2VfY29udGV4 dCByZXRpcmVfZmVuY2U7CiAJc3RydWN0IGRwdV9jb25uZWN0b3Jfb3BzIG9wczsKIAlpbnQgZHBt c19tb2RlOwogCWludCBscF9tb2RlOwpAQCAtNDQ3LDI2ICs0NDQsNiBAQCBzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqZHB1X2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlu dCBjb25uZWN0b3JfcG9sbCwKIAkJaW50IGNvbm5lY3Rvcl90eXBlKTsKIAotLyoqCi0gKiBkcHVf Y29ubmVjdG9yX3ByZXBhcmVfZmVuY2UgLSBwcmVwYXJlIGZlbmNlIHN1cHBvcnQgZm9yIGN1cnJl bnQgY29tbWl0Ci0gKiBAY29ubmVjdG9yOiBQb2ludGVyIHRvIGRybSBjb25uZWN0b3Igb2JqZWN0 Ci0gKi8KLXZvaWQgZHB1X2Nvbm5lY3Rvcl9wcmVwYXJlX2ZlbmNlKHN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpOwotCi0vKioKLSAqIGRwdV9jb25uZWN0b3JfY29tcGxldGVfY29tbWl0 IC0gc2lnbmFsIGNvbXBsZXRpb24gb2YgY3VycmVudCBjb21taXQKLSAqIEBjb25uZWN0b3I6IFBv aW50ZXIgdG8gZHJtIGNvbm5lY3RvciBvYmplY3QKLSAqIEB0czogdGltZXN0YW1wIHRvIGJlIHVw ZGF0ZWQgaW4gdGhlIGZlbmNlIHNpZ25hbGxpbmcKLSAqLwotdm9pZCBkcHVfY29ubmVjdG9yX2Nv bXBsZXRlX2NvbW1pdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBrdGltZV90IHRz KTsKLQotLyoqCi0gKiBkcHVfY29ubmVjdG9yX2NvbW1pdF9yZXNldCAtIHJlc2V0IHRoZSBjb21w bGV0aW9uIHNpZ25hbAotICogQGNvbm5lY3RvcjogUG9pbnRlciB0byBkcm0gY29ubmVjdG9yIG9i amVjdAotICogQHRzOiB0aW1lc3RhbXAgdG8gYmUgdXBkYXRlZCBpbiB0aGUgZmVuY2Ugc2lnbmFs bGluZwotICovCi12b2lkIGRwdV9jb25uZWN0b3JfY29tbWl0X3Jlc2V0KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGt0aW1lX3QgdHMpOwotCiAvKioKICAqIGRwdV9jb25uZWN0b3Jf Z2V0X2luZm8gLSBxdWVyeSBkaXNwbGF5IHNwZWNpZmljIGluZm9ybWF0aW9uCiAgKiBAY29ubmVj dG9yOiBQb2ludGVyIHRvIGRybSBjb25uZWN0b3Igb2JqZWN0CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jIGIvZHJpdmVycy9ncHUvZHJtL21zbS9k aXNwL2RwdTEvZHB1X2NydGMuYwppbmRleCBhMjYxMDIxZTVkZWIuLjJkNDQ5ODlhZGU3YSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2NydGMuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCkBAIC02MjksNyArNjI5LDYg QEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGVzdHJveShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJ ZHB1X2NwX2NydGNfZGVzdHJveV9wcm9wZXJ0aWVzKGNydGMpOwogCV9kcHVfY3J0Y19kZXN0cm95 X2Rlc3Rfc2NhbGVyKGRwdV9jcnRjKTsKIAotCWRwdV9mZW5jZV9kZWluaXQoJmRwdV9jcnRjLT5v dXRwdXRfZmVuY2UpOwogCV9kcHVfY3J0Y19kZWluaXRfZXZlbnRzKGRwdV9jcnRjKTsKIAogCWRy bV9jcnRjX2NsZWFudXAoY3J0Yyk7CkBAIC0xNjcxLDY1ICsxNjcwLDYgQEAgc3RhdGljIHZvaWQg X2RwdV9jcnRjX2Rlc3Rfc2NhbGVyX3NldHVwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAl9CiB9 CiAKLXZvaWQgZHB1X2NydGNfcHJlcGFyZV9jb21taXQoc3RydWN0IGRybV9jcnRjICpjcnRjLAot CQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSkKLXsKLQlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2OwotCXN0cnVjdCBkcHVfY3J0YyAqZHB1X2NydGM7Ci0Jc3RydWN0IGRwdV9jcnRjX3N0 YXRlICpjc3RhdGU7Ci0Jc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm47Ci0Jc3RydWN0IGRybV9j b25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKLQlzdHJ1Y3QgZHB1X2NydGNfcmV0aXJlX2V2 ZW50ICpyZXRpcmVfZXZlbnQgPSBOVUxMOwotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0JaW50IGk7 Ci0KLQlpZiAoIWNydGMgfHwgIWNydGMtPnN0YXRlKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBj cnRjXG4iKTsKLQkJcmV0dXJuOwotCX0KLQotCWRldiA9IGNydGMtPmRldjsKLQlkcHVfY3J0YyA9 IHRvX2RwdV9jcnRjKGNydGMpOwotCWNzdGF0ZSA9IHRvX2RwdV9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKTsKLQlEUFVfRVZUMzJfVkVSQk9TRShEUk1JRChjcnRjKSk7Ci0KLQkvKiBpZGVudGlmeSBj b25uZWN0b3JzIGF0dGFjaGVkIHRvIHRoaXMgY3J0YyAqLwotCWNzdGF0ZS0+bnVtX2Nvbm5lY3Rv cnMgPSAwOwotCi0JZHJtX2Nvbm5lY3Rvcl9saXN0X2l0ZXJfYmVnaW4oZGV2LCAmY29ubl9pdGVy KTsKLQlkcm1fZm9yX2VhY2hfY29ubmVjdG9yX2l0ZXIoY29ubiwgJmNvbm5faXRlcikKLQkJaWYg KGNvbm4tPnN0YXRlICYmIGNvbm4tPnN0YXRlLT5jcnRjID09IGNydGMgJiYKLQkJCQljc3RhdGUt Pm51bV9jb25uZWN0b3JzIDwgTUFYX0NPTk5FQ1RPUlMpIHsKLQkJCWNzdGF0ZS0+Y29ubmVjdG9y c1tjc3RhdGUtPm51bV9jb25uZWN0b3JzKytdID0gY29ubjsKLQkJCWRwdV9jb25uZWN0b3JfcHJl cGFyZV9mZW5jZShjb25uKTsKLQkJfQotCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2VuZCgmY29u bl9pdGVyKTsKLQotCWZvciAoaSA9IDA7IGkgPCBEUFVfQ1JUQ19GUkFNRV9FVkVOVF9TSVpFOyBp KyspIHsKLQkJcmV0aXJlX2V2ZW50ID0gJmRwdV9jcnRjLT5yZXRpcmVfZXZlbnRzW2ldOwotCQlp ZiAobGlzdF9lbXB0eSgmcmV0aXJlX2V2ZW50LT5saXN0KSkKLQkJCWJyZWFrOwotCQlyZXRpcmVf ZXZlbnQgPSBOVUxMOwotCX0KLQotCWlmIChyZXRpcmVfZXZlbnQpIHsKLQkJcmV0aXJlX2V2ZW50 LT5udW1fY29ubmVjdG9ycyA9IGNzdGF0ZS0+bnVtX2Nvbm5lY3RvcnM7Ci0JCWZvciAoaSA9IDA7 IGkgPCBjc3RhdGUtPm51bV9jb25uZWN0b3JzOyBpKyspCi0JCQlyZXRpcmVfZXZlbnQtPmNvbm5l Y3RvcnNbaV0gPSBjc3RhdGUtPmNvbm5lY3RvcnNbaV07Ci0KLQkJc3Bpbl9sb2NrX2lycXNhdmUo JmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQkJbGlzdF9hZGRfdGFpbCgmcmV0aXJlX2V2 ZW50LT5saXN0LAotCQkJCQkJJmRwdV9jcnRjLT5yZXRpcmVfZXZlbnRfbGlzdCk7Ci0JCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmRwdV9jcnRjLT5zcGluX2xvY2ssIGZsYWdzKTsKLQl9IGVsc2Ug ewotCQlEUFVfRVJST1IoImNydGMlZCByZXRpcmUgZXZlbnQgb3ZlcmZsb3dcbiIsIGNydGMtPmJh c2UuaWQpOwotCQlEUFVfRVZUMzIoRFJNSUQoY3J0YyksIERQVV9FVlRMT0dfRVJST1IpOwotCX0K LQotCS8qIHByZXBhcmUgbWFpbiBvdXRwdXQgZmVuY2UgKi8KLQlkcHVfZmVuY2VfcHJlcGFyZSgm ZHB1X2NydGMtPm91dHB1dF9mZW5jZSk7Ci19Ci0KIC8qKgogICogIF9kcHVfY3J0Y19jb21wbGV0 ZV9mbGlwIC0gc2lnbmFsIHBlbmRpbmcgcGFnZV9mbGlwIGV2ZW50cwogICogQW55IHBlbmRpbmcg dmJsYW5rIGV2ZW50cyBhcmUgYWRkZWQgdG8gdGhlIHZibGFua19ldmVudF9saXN0CkBAIC0xNzk5 LDQxICsxNzM5LDYgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfdmJsYW5rX2NiKHZvaWQgKmRhdGEp CiAJRFBVX0VWVDMyX1ZFUkJPU0UoRFJNSUQoY3J0YykpOwogfQogCi1zdGF0aWMgdm9pZCBfZHB1 X2NydGNfcmV0aXJlX2V2ZW50KHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywga3RpbWVfdCB0cykKLXsK LQlzdHJ1Y3QgZHB1X2NydGNfcmV0aXJlX2V2ZW50ICpyZXRpcmVfZXZlbnQ7Ci0Jc3RydWN0IGRw dV9jcnRjICpkcHVfY3J0YzsKLQl1bnNpZ25lZCBsb25nIGZsYWdzOwotCWludCBpOwotCi0JaWYg KCFjcnRjKSB7Ci0JCURQVV9FUlJPUigiaW52YWxpZCBwYXJhbVxuIik7Ci0JCXJldHVybjsKLQl9 Ci0KLQlkcHVfY3J0YyA9IHRvX2RwdV9jcnRjKGNydGMpOwotCXNwaW5fbG9ja19pcnFzYXZlKCZk cHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Ci0JcmV0aXJlX2V2ZW50ID0gbGlzdF9maXJzdF9l bnRyeV9vcl9udWxsKCZkcHVfY3J0Yy0+cmV0aXJlX2V2ZW50X2xpc3QsCi0JCQkJc3RydWN0IGRw dV9jcnRjX3JldGlyZV9ldmVudCwgbGlzdCk7Ci0JaWYgKHJldGlyZV9ldmVudCkKLQkJbGlzdF9k ZWxfaW5pdCgmcmV0aXJlX2V2ZW50LT5saXN0KTsKLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk cHVfY3J0Yy0+c3Bpbl9sb2NrLCBmbGFncyk7Ci0KLQlpZiAoIXJldGlyZV9ldmVudCkgewotCQlE UFVfRVJST1IoImNydGMlZCByZXRpcmUgZXZlbnQgd2l0aG91dCBraWNrb2ZmXG4iLAotCQkJCQkJ CQljcnRjLT5iYXNlLmlkKTsKLQkJRFBVX0VWVDMyKERSTUlEKGNydGMpLCBEUFVfRVZUTE9HX0VS Uk9SKTsKLQkJcmV0dXJuOwotCX0KLQotCURQVV9BVFJBQ0VfQkVHSU4oInNpZ25hbF9yZXRpcmVf ZmVuY2UiKTsKLQlmb3IgKGkgPSAwOyAoaSA8IHJldGlyZV9ldmVudC0+bnVtX2Nvbm5lY3RvcnMp ICYmCi0JCQkJCXJldGlyZV9ldmVudC0+Y29ubmVjdG9yc1tpXTsgKytpKQotCQlkcHVfY29ubmVj dG9yX2NvbXBsZXRlX2NvbW1pdCgKLQkJCQkJcmV0aXJlX2V2ZW50LT5jb25uZWN0b3JzW2ldLCB0 cyk7Ci0JRFBVX0FUUkFDRV9FTkQoInNpZ25hbF9yZXRpcmVfZmVuY2UiKTsKLX0KLQogLyogX2Rw dV9jcnRjX2lkbGVfbm90aWZ5IC0gc2lnbmFsIGlkbGUgdGltZW91dCB0byBjbGllbnQgKi8KIHN0 YXRpYyB2b2lkIF9kcHVfY3J0Y19pZGxlX25vdGlmeShzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRj KQogewpAQCAtMTk0NSwxNiArMTg1MCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2ZyYW1lX2V2 ZW50X3dvcmsoc3RydWN0IGt0aHJlYWRfd29yayAqd29yaykKIAkJCWZyYW1lX2RvbmUgPSB0cnVl OwogCX0KIAotCWlmIChmZXZlbnQtPmV2ZW50ICYgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lH TkFMX1JFTEVBU0VfRkVOQ0UpIHsKLQkJRFBVX0FUUkFDRV9CRUdJTigic2lnbmFsX3JlbGVhc2Vf ZmVuY2UiKTsKLQkJZHB1X2ZlbmNlX3NpZ25hbCgmZHB1X2NydGMtPm91dHB1dF9mZW5jZSwgZmV2 ZW50LT50cywgZmFsc2UpOwotCQlEUFVfQVRSQUNFX0VORCgic2lnbmFsX3JlbGVhc2VfZmVuY2Ui KTsKLQl9Ci0KLQlpZiAoZmV2ZW50LT5ldmVudCAmIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1NJ R05BTF9SRVRJUkVfRkVOQ0UpCi0JCS8qIHRoaXMgYXBpIHNob3VsZCBiZSBjYWxsZWQgd2l0aG91 dCBzcGluX2xvY2sgKi8KLQkJX2RwdV9jcnRjX3JldGlyZV9ldmVudChjcnRjLCBmZXZlbnQtPnRz KTsKLQogCWlmIChmZXZlbnQtPmV2ZW50ICYgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfUEFORUxf REVBRCkKIAkJRFBVX0VSUk9SKCJjcnRjJWQgdHM6JWxsZCByZWNlaXZlZCBwYW5lbCBkZWFkIGV2 ZW50XG4iLAogCQkJCWNydGMtPmJhc2UuaWQsIGt0aW1lX3RvX25zKGZldmVudC0+dHMpKTsKQEAg LTE5NzEsMTEgKzE4NjYsMTEgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZnJhbWVfZXZlbnRfd29y ayhzdHJ1Y3Qga3RocmVhZF93b3JrICp3b3JrKQogLyoKICAqIGRwdV9jcnRjX2ZyYW1lX2V2ZW50 X2NiIC0gY3J0YyBmcmFtZSBldmVudCBjYWxsYmFjayBBUEkuIENSVEMgbW9kdWxlCiAgKiByZWdp c3RlcnMgdGhpcyBBUEkgdG8gZW5jb2RlciBmb3IgYWxsIGZyYW1lIGV2ZW50IGNhbGxiYWNrcyBs aWtlCi0gKiByZWxlYXNlX2ZlbmNlLCByZXRpcmVfZmVuY2UsIGZyYW1lX2Vycm9yLCBmcmFtZV9k b25lLCBpZGxlX3RpbWVvdXQsCi0gKiBldGMuIEVuY29kZXIgbWF5IGNhbGwgZGlmZmVyZW50IGV2 ZW50cyBmcm9tIGRpZmZlcmVudCBjb250ZXh0IC0gSVJRLAotICogdXNlciB0aHJlYWQsIGNvbW1p dF90aHJlYWQsIGV0Yy4gRWFjaCBldmVudCBzaG91bGQgYmUgY2FyZWZ1bGx5Ci0gKiByZXZpZXdl ZCBhbmQgc2hvdWxkIGJlIHByb2Nlc3NlZCBpbiBwcm9wZXIgdGFzayBjb250ZXh0IHRvIGF2b2lk IHNjaGVkdWxpbmcKLSAqIGRlbGF5IG9yIHByb3Blcmx5IG1hbmFnZSB0aGUgaXJxIGNvbnRleHQn cyBib3R0b20gaGFsZiBwcm9jZXNzaW5nLgorICogZnJhbWVfZXJyb3IsIGZyYW1lX2RvbmUsIGlk bGVfdGltZW91dCwgZXRjLiBFbmNvZGVyIG1heSBjYWxsIGRpZmZlcmVudCBldmVudHMKKyAqIGZy b20gZGlmZmVyZW50IGNvbnRleHQgLSBJUlEsIHVzZXIgdGhyZWFkLCBjb21taXRfdGhyZWFkLCBl dGMuIEVhY2ggZXZlbnQKKyAqIHNob3VsZCBiZSBjYXJlZnVsbHkgcmV2aWV3ZWQgYW5kIHNob3Vs ZCBiZSBwcm9jZXNzZWQgaW4gcHJvcGVyIHRhc2sgY29udGV4dAorICogdG8gYXZvaWQgc2NoZWR1 bGluIGRlbGF5IG9yIHByb3Blcmx5IG1hbmFnZSB0aGUgaXJxIGNvbnRleHQncyBib3R0b20gaGFs ZgorICogcHJvY2Vzc2luZy4KICAqLwogc3RhdGljIHZvaWQgZHB1X2NydGNfZnJhbWVfZXZlbnRf Y2Iodm9pZCAqZGF0YSwgdTMyIGV2ZW50KQogewpAQCAtMzQ4NCwxNCArMzM3OSw2IEBAIHN0YXRp YyB2b2lkIGRwdV9jcnRjX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQlkcHVfcG93 ZXJfaGFuZGxlX3VucmVnaXN0ZXJfZXZlbnQoJnByaXYtPnBoYW5kbGUsCiAJCQkJZHB1X2NydGMt PnBvd2VyX2V2ZW50KTsKIAotCS8qKgotCSAqIEFsbCBjYWxsYmFja3MgYXJlIHVucmVnaXN0ZXJl ZCBhbmQgZnJhbWUgZG9uZSB3YWl0cyBhcmUgY29tcGxldGUKLQkgKiBhdCB0aGlzIHBvaW50LiBO byBidWZmZXJzIGFyZSBhY2Nlc3NlZCBieSBoYXJkd2FyZS4KLQkgKiByZXNldCB0aGUgZmVuY2Ug dGltZWxpbmUgaWYgdGhlcmUgaXMgYW55IGlzc3VlLgotCSAqLwotCWRwdV9mZW5jZV9zaWduYWwo JmRwdV9jcnRjLT5vdXRwdXRfZmVuY2UsIGt0aW1lX2dldCgpLCB0cnVlKTsKLQlmb3IgKGkgPSAw OyBpIDwgY3N0YXRlLT5udW1fY29ubmVjdG9yczsgKytpKQotCQlkcHVfY29ubmVjdG9yX2NvbW1p dF9yZXNldChjc3RhdGUtPmNvbm5lY3RvcnNbaV0sIGt0aW1lX2dldCgpKTsKIAogCW1lbXNldChk cHVfY3J0Yy0+bWl4ZXJzLCAwLCBzaXplb2YoZHB1X2NydGMtPm1peGVycykpOwogCWRwdV9jcnRj LT5udW1fbWl4ZXJzID0gMDsKQEAgLTM3MDMsNiArMzU5MCw4IEBAIHN0YXRpYyBpbnQgZHB1X2Ny dGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpbnQgbXVsdGlyZWN0X2Nv dW50ID0gMDsKIAljb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwaXBlX3N0YWdlZFtTU1BQ X01BWF07CiAJaW50IGxlZnRfenBvc19jbnQgPSAwLCByaWdodF96cG9zX2NudCA9IDA7CisJc3Ry dWN0IGRybV9jb25uZWN0b3JfbGlzdF9pdGVyIGNvbm5faXRlcjsKKwlzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubjsKIAogCWlmICghY3J0YykgewogCQlEUFVfRVJST1IoImludmFsaWQgY3J0Y1xu Iik7CkBAIC0zOTU2LDYgKzM4NDUsMTYgQEAgc3RhdGljIGludCBkcHVfY3J0Y19hdG9taWNfY2hl Y2soc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQlnb3RvIGVuZDsKIAl9CiAKKwkvKiBpZGVudGlm eSBjb25uZWN0b3JzIGF0dGFjaGVkIHRvIHRoaXMgY3J0YyAqLworCWNzdGF0ZS0+bnVtX2Nvbm5l Y3RvcnMgPSAwOworCWRybV9jb25uZWN0b3JfbGlzdF9pdGVyX2JlZ2luKGNydGMtPmRldiwgJmNv bm5faXRlcik7CisJZHJtX2Zvcl9lYWNoX2Nvbm5lY3Rvcl9pdGVyKGNvbm4sICZjb25uX2l0ZXIp CisJCWlmIChjb25uLT5zdGF0ZSAmJiBjb25uLT5zdGF0ZS0+Y3J0YyA9PSBjcnRjICYmCisJCQkJ Y3N0YXRlLT5udW1fY29ubmVjdG9ycyA8IE1BWF9DT05ORUNUT1JTKSB7CisJCQljc3RhdGUtPmNv bm5lY3RvcnNbY3N0YXRlLT5udW1fY29ubmVjdG9ycysrXSA9IGNvbm47CisJCX0KKwlkcm1fY29u bmVjdG9yX2xpc3RfaXRlcl9lbmQoJmNvbm5faXRlcik7CisKIGVuZDoKIAlfZHB1X2NydGNfcnBf ZnJlZV91bnVzZWQoJmNzdGF0ZS0+cnApOwogCXJldHVybiByYzsKQEAgLTQwMzQsMTMgKzM5MzMs NiBAQCBzdGF0aWMgdm9pZCBkcHVfY3J0Y19pbnN0YWxsX3Byb3BlcnRpZXMoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCQkiaW5wdXRfZmVuY2VfdGltZW91dCIsIDB4MCwgMCwgRFBVX0NSVENfTUFY X0lOUFVUX0ZFTkNFX1RJTUVPVVQsCiAJCURQVV9DUlRDX0lOUFVUX0ZFTkNFX1RJTUVPVVQsIENS VENfUFJPUF9JTlBVVF9GRU5DRV9USU1FT1VUKTsKIAotCW1zbV9wcm9wZXJ0eV9pbnN0YWxsX3Jh bmdlKCZkcHVfY3J0Yy0+cHJvcGVydHlfaW5mbywgIm91dHB1dF9mZW5jZSIsCi0JCQkweDAsIDAs IElOUl9PUEVOX01BWCwgMHgwLCBDUlRDX1BST1BfT1VUUFVUX0ZFTkNFKTsKLQotCW1zbV9wcm9w ZXJ0eV9pbnN0YWxsX3JhbmdlKCZkcHVfY3J0Yy0+cHJvcGVydHlfaW5mbywKLQkJCSJvdXRwdXRf ZmVuY2Vfb2Zmc2V0IiwgMHgwLCAwLCAxLCAwLAotCQkJQ1JUQ19QUk9QX09VVFBVVF9GRU5DRV9P RkZTRVQpOwotCiAJbXNtX3Byb3BlcnR5X2luc3RhbGxfcmFuZ2UoJmRwdV9jcnRjLT5wcm9wZXJ0 eV9pbmZvLAogCQkJImNvcmVfY2xrIiwgMHgwLCAwLCBVNjRfTUFYLAogCQkJZHB1X2ttcy0+cGVy Zi5tYXhfY29yZV9jbGtfcmF0ZSwKQEAgLTQzNDIsMjkgKzQyMzQsMTIgQEAgc3RhdGljIGludCBk cHVfY3J0Y19hdG9taWNfZ2V0X3Byb3BlcnR5KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJfQog CiAJCWkgPSBtc21fcHJvcGVydHlfaW5kZXgoJmRwdV9jcnRjLT5wcm9wZXJ0eV9pbmZvLCBwcm9w ZXJ0eSk7Ci0JCWlmIChpID09IENSVENfUFJPUF9PVVRQVVRfRkVOQ0UpIHsKLQkJCXVpbnQzMl90 IG9mZnNldCA9IGRwdV9jcnRjX2dldF9wcm9wZXJ0eShjc3RhdGUsCi0JCQkJCUNSVENfUFJPUF9P VVRQVVRfRkVOQ0VfT0ZGU0VUKTsKLQotCQkJLyoqCi0JCQkgKiBzZXQgdGhlIG9mZnNldCB0byAw IG9ubHkgZm9yIGNtZCBtb2RlIHBhbmVscywgc28KLQkJCSAqIHRoZSByZWxlYXNlIGZlbmNlIGZv ciB0aGUgY3VycmVudCBmcmFtZSBjYW4gYmUKLQkJCSAqIHRyaWdnZXJlZCByaWdodCBhZnRlciBQ UF9ET05FIGludGVycnVwdC4KLQkJCSAqLwotCQkJb2Zmc2V0ID0gaXNfY21kID8gMCA6IChvZmZz ZXQgKyBjb25uX29mZnNldCk7Ci0KLQkJCXJldCA9IGRwdV9mZW5jZV9jcmVhdGUoJmRwdV9jcnRj LT5vdXRwdXRfZmVuY2UsIHZhbCwKLQkJCQkJCQkJb2Zmc2V0KTsKLQkJCWlmIChyZXQpCi0JCQkJ RFBVX0VSUk9SKCJmZW5jZSBjcmVhdGUgZmFpbGVkXG4iKTsKLQkJfSBlbHNlIHsKLQkJCXJldCA9 IG1zbV9wcm9wZXJ0eV9hdG9taWNfZ2V0KCZkcHVfY3J0Yy0+cHJvcGVydHlfaW5mbywKLQkJCQkJ JmNzdGF0ZS0+cHJvcGVydHlfc3RhdGUsCi0JCQkJCXByb3BlcnR5LCB2YWwpOwotCQkJaWYgKHJl dCkKLQkJCQlyZXQgPSBkcHVfY3BfY3J0Y19nZXRfcHJvcGVydHkoY3J0YywKLQkJCQkJcHJvcGVy dHksIHZhbCk7Ci0JCX0KKwkJcmV0ID0gbXNtX3Byb3BlcnR5X2F0b21pY19nZXQoJmRwdV9jcnRj LT5wcm9wZXJ0eV9pbmZvLAorCQkJCSZjc3RhdGUtPnByb3BlcnR5X3N0YXRlLAorCQkJCXByb3Bl cnR5LCB2YWwpOworCQlpZiAocmV0KQorCQkJcmV0ID0gZHB1X2NwX2NydGNfZ2V0X3Byb3BlcnR5 KGNydGMsCisJCQkJcHJvcGVydHksIHZhbCk7CiAJCWlmIChyZXQpCiAJCQlEUk1fRVJST1IoImdl dCBwcm9wZXJ0eSBmYWlsZWRcbiIpOwogCX0KQEAgLTQ4NTgsMTAgKzQ3MzMsNiBAQCBzdGF0aWMg aW50IF9kcHVfY3J0Y19pbml0X2V2ZW50cyhzdHJ1Y3QgZHB1X2NydGMgKmRwdV9jcnRjKQogCQls aXN0X2FkZF90YWlsKCZkcHVfY3J0Yy0+ZXZlbnRfY2FjaGVbaV0ubGlzdCwKIAkJCQkmZHB1X2Ny dGMtPmV2ZW50X2ZyZWVfbGlzdCk7CiAKLQlJTklUX0xJU1RfSEVBRCgmZHB1X2NydGMtPnJldGly ZV9ldmVudF9saXN0KTsKLQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShkcHVfY3J0Yy0+cmV0 aXJlX2V2ZW50cyk7IGkrKykKLQkJSU5JVF9MSVNUX0hFQUQoJmRwdV9jcnRjLT5yZXRpcmVfZXZl bnRzW2ldLmxpc3QpOwotCiAJcmV0dXJuIHJjOwogfQogCkBAIC00OTIwLDkgKzQ3OTEsNiBAQCBz dHJ1Y3QgZHJtX2NydGMgKmRwdV9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmUpCiAJCXJldHVybiBFUlJfUFRSKHJjKTsKIAl9CiAKLQkvKiBp bml0aWFsaXplIG91dHB1dCBmZW5jZSBzdXBwb3J0ICovCi0JZHB1X2ZlbmNlX2luaXQoJmRwdV9j cnRjLT5vdXRwdXRfZmVuY2UsIGRwdV9jcnRjLT5uYW1lLCBjcnRjLT5iYXNlLmlkKTsKLQogCS8q IGNyZWF0ZSBDUlRDIHByb3BlcnRpZXMgKi8KIAltc21fcHJvcGVydHlfaW5pdCgmZHB1X2NydGMt PnByb3BlcnR5X2luZm8sICZjcnRjLT5iYXNlLCBkZXYsCiAJCQlwcml2LT5jcnRjX3Byb3BlcnR5 LCBkcHVfY3J0Yy0+cHJvcGVydHlfZGF0YSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9jcnRjLmggYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfY3J0Yy5oCmluZGV4IGI2M2RmMjQzYmUzMy4uNzI3YTM0MzRhNGY2IDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmgKQEAgLTIyLDcgKzIyLDYgQEAKICNpbmNsdWRl IDxsaW51eC9rdGhyZWFkLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9jcnRjLmg+CiAjaW5jbHVkZSAi bXNtX3Byb3AuaCIKLSNpbmNsdWRlICJkcHVfZmVuY2UuaCIKICNpbmNsdWRlICJkcHVfa21zLmgi CiAjaW5jbHVkZSAiZHB1X2NvcmVfcGVyZi5oIgogI2luY2x1ZGUgImRwdV9od19ibGsuaCIKQEAg LTg1LDE3ICs4NCw2IEBAIHN0cnVjdCBkcHVfY3J0Y19zbW11X3N0YXRlX2RhdGEgewogCXVpbnQz Ml90IHRyYW5zaXRpb25fZXJyb3I7CiB9OwogCi0vKioKLSAqIEBjb25uZWN0b3JzICAgIDogQ3Vy cmVudGx5IGFzc29jaWF0ZWQgZHJtIGNvbm5lY3RvcnMgZm9yIHJldGlyZSBldmVudAotICogQG51 bV9jb25uZWN0b3JzOiBOdW1iZXIgb2YgYXNzb2NpYXRlZCBkcm0gY29ubmVjdG9ycyBmb3IgcmV0 aXJlIGV2ZW50Ci0gKiBAbGlzdDoJZXZlbnQgbGlzdAotICovCi1zdHJ1Y3QgZHB1X2NydGNfcmV0 aXJlX2V2ZW50IHsKLQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yc1tNQVhfQ09OTkVD VE9SU107Ci0JaW50IG51bV9jb25uZWN0b3JzOwotCXN0cnVjdCBsaXN0X2hlYWQgbGlzdDsKLX07 Ci0KIC8qKgogICogc3RydWN0IGRwdV9jcnRjX21peGVyOiBzdG9yZXMgdGhlIG1hcCBmb3IgZWFj aCB2aXJ0dWFsIHBpcGVsaW5lIGluIHRoZSBDUlRDCiAgKiBAaHdfbG06CUxNIEhXIERyaXZlciBj b250ZXh0CkBAIC0xNjksNyArMTU3LDYgQEAgc3RydWN0IGRwdV9jcnRjX2V2ZW50IHsKICAqIEBk cm1fcmVxdWVzdGVkX3ZibGFuayA6IFdoZXRoZXIgdmJsYW5rcyBoYXZlIGJlZW4gZW5hYmxlZCBp biB0aGUgZW5jb2RlcgogICogQHByb3BlcnR5X2luZm8gOiBPcGFxdWUgc3RydWN0dXJlIGZvciBn ZW5lcmljIHByb3BlcnR5IHN1cHBvcnQKICAqIEBwcm9wZXJ0eV9kZWZhdWx0cyA6IEFycmF5IG9m IGRlZmF1bHQgdmFsdWVzIGZvciBnZW5lcmljIHByb3BlcnR5IHN1cHBvcnQKLSAqIEBvdXRwdXRf ZmVuY2UgIDogb3V0cHV0IHJlbGVhc2UgZmVuY2UgY29udGV4dAogICogQHN0YWdlX2NmZyAgICAg OiBIL3cgbWl4ZXIgc3RhZ2UgY29uZmlndXJhdGlvbgogICogQGRlYnVnZnNfcm9vdCAgOiBQYXJl bnQgb2YgZGVidWdmcyBub2RlCiAgKiBAdmJsYW5rX2NiX2NvdW50IDogY291bnQgb2YgdmJsYW5r IGNhbGxiYWNrIHNpbmNlIGxhc3QgcmVzZXQKQEAgLTE5MCw4ICsxNzcsNiBAQCBzdHJ1Y3QgZHB1 X2NydGNfZXZlbnQgewogICogQGZyYW1lX2V2ZW50cyAgOiBzdGF0aWMgYWxsb2NhdGlvbiBvZiBp bi1mbGlnaHQgZnJhbWUgZXZlbnRzCiAgKiBAZnJhbWVfZXZlbnRfbGlzdCA6IGF2YWlsYWJsZSBm cmFtZSBldmVudCBsaXN0CiAgKiBAc3Bpbl9sb2NrICAgICA6IHNwaW4gbG9jayBmb3IgZnJhbWUg ZXZlbnQsIHRyYW5zYWN0aW9uIHN0YXR1cywgZXRjLi4uCi0gKiBAcmV0aXJlX2V2ZW50cyAgOiBz dGF0aWMgYWxsb2NhdGlvbiBvZiByZXRpcmUgZmVuY2UgY29ubmVjdG9yCi0gKiBAcmV0aXJlX2V2 ZW50X2xpc3QgOiBhdmFpbGFibGUgcmV0aXJlIGZlbmNlIGNvbm5lY3RvciBsaXN0CiAgKiBAZnJh bWVfZG9uZV9jb21wICAgIDogZm9yIGZyYW1lX2V2ZW50X2RvbmUgc3luY2hyb25pemF0aW9uCiAg KiBAZXZlbnRfdGhyZWFkICA6IFBvaW50ZXIgdG8gZXZlbnQgaGFuZGxlciB0aHJlYWQKICAqIEBl dmVudF93b3JrZXIgIDogRXZlbnQgd29ya2VyIHF1ZXVlCkBAIC0yMjcsOSArMjEyLDYgQEAgc3Ry dWN0IGRwdV9jcnRjIHsKIAlzdHJ1Y3QgbXNtX3Byb3BlcnR5X2RhdGEgcHJvcGVydHlfZGF0YVtD UlRDX1BST1BfQ09VTlRdOwogCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqYmxvYl9pbmZvOwog Ci0JLyogb3V0cHV0IGZlbmNlIHN1cHBvcnQgKi8KLQlzdHJ1Y3QgZHB1X2ZlbmNlX2NvbnRleHQg b3V0cHV0X2ZlbmNlOwotCiAJc3RydWN0IGRwdV9od19zdGFnZV9jZmcgc3RhZ2VfY2ZnOwogCXN0 cnVjdCBkZW50cnkgKmRlYnVnZnNfcm9vdDsKIApAQCAtMjUzLDggKzIzNSw2IEBAIHN0cnVjdCBk cHVfY3J0YyB7CiAJc3RydWN0IGRwdV9jcnRjX2ZyYW1lX2V2ZW50IGZyYW1lX2V2ZW50c1tEUFVf Q1JUQ19GUkFNRV9FVkVOVF9TSVpFXTsKIAlzdHJ1Y3QgbGlzdF9oZWFkIGZyYW1lX2V2ZW50X2xp c3Q7CiAJc3BpbmxvY2tfdCBzcGluX2xvY2s7Ci0Jc3RydWN0IGRwdV9jcnRjX3JldGlyZV9ldmVu dCByZXRpcmVfZXZlbnRzW0RQVV9DUlRDX0ZSQU1FX0VWRU5UX1NJWkVdOwotCXN0cnVjdCBsaXN0 X2hlYWQgcmV0aXJlX2V2ZW50X2xpc3Q7CiAJc3RydWN0IGNvbXBsZXRpb24gZnJhbWVfZG9uZV9j b21wOwogCiAJLyogZm9yIGhhbmRsaW5nIGludGVybmFsIGV2ZW50IHRocmVhZCAqLwpAQCAtNDc1 LDE0ICs0NTUsNiBAQCBpbnQgZHB1X2NydGNfdmJsYW5rKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywg Ym9vbCBlbik7CiAgKi8KIHZvaWQgZHB1X2NydGNfY29tbWl0X2tpY2tvZmYoc3RydWN0IGRybV9j cnRjICpjcnRjKTsKIAotLyoqCi0gKiBkcHVfY3J0Y19wcmVwYXJlX2NvbW1pdCAtIGNhbGxiYWNr IHRvIHByZXBhcmUgZm9yIG91dHB1dCBmZW5jZXMKLSAqIEBjcnRjOiBQb2ludGVyIHRvIGRybSBj cnRjIG9iamVjdAotICogQG9sZF9zdGF0ZTogUG9pbnRlciB0byBkcm0gY3J0YyBvbGQgc3RhdGUg b2JqZWN0Ci0gKi8KLXZvaWQgZHB1X2NydGNfcHJlcGFyZV9jb21taXQoc3RydWN0IGRybV9jcnRj ICpjcnRjLAotCQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdGF0ZSk7Ci0KIC8qKgogICog ZHB1X2NydGNfY29tcGxldGVfY29tbWl0IC0gY2FsbGJhY2sgc2lnbmFsbGluZyBjb21wbGV0aW9u IG9mIGN1cnJlbnQgY29tbWl0CiAgKiBAY3J0YzogUG9pbnRlciB0byBkcm0gY3J0YyBvYmplY3QK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5jCmluZGV4IDRkMWUz NjUyZGJmNC4uYTU0YWQyY2Q1ODU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rp c3AvZHB1MS9kcHVfZW5jb2Rlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUx L2RwdV9lbmNvZGVyLmMKQEAgLTI0NjUsOSArMjQ2NSw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBf ZHB1X2VuY29kZXJfdHJpZ2dlcl9mbHVzaChzdHJ1Y3QgZHJtX2VuY29kZXIgKmRybV9lbmMsCiAK IAlwZW5kaW5nX2tpY2tvZmZfY250ID0gZHB1X2VuY29kZXJfcGh5c19pbmNfcGVuZGluZyhwaHlz KTsKIAotCWlmIChwaHlzLT5vcHMuaXNfbWFzdGVyICYmIHBoeXMtPm9wcy5pc19tYXN0ZXIocGh5 cykpCi0JCWF0b21pY19pbmMoJnBoeXMtPnBlbmRpbmdfcmV0aXJlX2ZlbmNlX2NudCk7Ci0KIAlp ZiAoZXh0cmFfZmx1c2hfYml0cyAmJiBjdGwtPm9wcy51cGRhdGVfcGVuZGluZ19mbHVzaCkKIAkJ Y3RsLT5vcHMudXBkYXRlX3BlbmRpbmdfZmx1c2goY3RsLCBleHRyYV9mbHVzaF9iaXRzKTsKIApk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXIuaCBi L2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmgKaW5kZXggNjlmYjI2 Y2I0M2FiLi44NmEzODAwYWY2NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9lbmNvZGVyLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEv ZHB1X2VuY29kZXIuaApAQCAtMjcsOSArMjcsNyBAQAogI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFN RV9FVkVOVF9ET05FCQkJQklUKDApCiAjZGVmaW5lIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0VS Uk9SCQkJQklUKDEpCiAjZGVmaW5lIERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1BBTkVMX0RFQUQJ CUJJVCgyKQotI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9G RU5DRQlCSVQoMykKLSNkZWZpbmUgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFVElS RV9GRU5DRQlCSVQoNCkKLSNkZWZpbmUgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfSURMRQkJCUJJ VCg1KQorI2RlZmluZSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9JRExFCQkJQklUKDMpCiAKICNk ZWZpbmUgSURMRV9USU1FT1VUCSg2NiAtIDE2LzIpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaCBiL2RyaXZlcnMvZ3B1L2RybS9t c20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXMuaAppbmRleCAzYjA1NTY5MDA3ZDIuLjcxY2Qy ZjI1ODk5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXJfcGh5cy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNv ZGVyX3BoeXMuaApAQCAtMjQ1LDggKzI0NSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9pcnEgewog ICoJCQkJc2NoZWR1bGVkLiBEZWNyZW1lbnRlZCBpbiBpcnEgaGFuZGxlcgogICogQHBlbmRpbmdf Y3Rsc3RhcnRfY250OglBdG9taWMgY291bnRlciB0cmFja2luZyB0aGUgbnVtYmVyIG9mIGN0bCBz dGFydAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nLgotICogQHBlbmRp bmdfcmV0aXJlX2ZlbmNlX2NudDogICBBdG9taWMgY291bnRlciB0cmFja2luZyB0aGUgcGVuZGlu ZyByZXRpcmUKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVuY2VzIHRoYXQgaGF2 ZSB0byBiZSBzaWduYWxsZWQuCiAgKiBAcGVuZGluZ19raWNrb2ZmX3dxOgkJV2FpdCBxdWV1ZSBm b3IgYmxvY2tpbmcgdW50aWwga2lja29mZiBjb21wbGV0ZXMKICAqIEBpcnE6CQkJSVJRIHRyYWNr aW5nIHN0cnVjdHVyZXMKICAqLwpAQCAtMjczLDcgKzI3MSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzIHsKIAlhdG9taWNfdCB1bmRlcnJ1bl9jbnQ7CiAJYXRvbWljX3QgcGVuZGluZ19jdGxz dGFydF9jbnQ7CiAJYXRvbWljX3QgcGVuZGluZ19raWNrb2ZmX2NudDsKLQlhdG9taWNfdCBwZW5k aW5nX3JldGlyZV9mZW5jZV9jbnQ7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgcGVuZGluZ19raWNrb2Zm X3dxOwogCXN0cnVjdCBkcHVfZW5jb2Rlcl9pcnEgaXJxW0lOVFJfSURYX01BWF07CiB9OwpAQCAt MzIzLDkgKzMyMCw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9hdXRvcmVmcmVzaCB7 CiAgKgkJCWFmdGVyIGN0bF9zdGFydCBpbnN0ZWFkIG9mIGJlZm9yZSBuZXh0IGZyYW1lIGtpY2tv ZmYKICAqIEBwcF90aW1lb3V0X3JlcG9ydF9jbnQ6IG51bWJlciBvZiBwaW5ncG9uZyBkb25lIGly cSB0aW1lb3V0IGVycm9ycwogICogQGF1dG9yZWZyZXNoOiBhdXRvcmVmcmVzaCBmZWF0dXJlIHN0 YXRlCi0gKiBAcGVuZGluZ19yZF9wdHJfY250OiBhdG9taWMgY291bnRlciB0byBpbmRpY2F0ZSBp ZiByZXRpcmUgZmVuY2UgY2FuIGJlCi0gKiAgICAgICAgICAgICAgICAgICAgICBzaWduYWxlZCBh dCB0aGUgbmV4dCByZF9wdHJfaXJxCi0gKiBAcmRfcHRyX3RpbWVzdGFtcDogbGFzdCByZF9wdHJf aXJxIHRpbWVzdGFtcAogICogQHBlbmRpbmdfdmJsYW5rX2NudDogQXRvbWljIGNvdW50ZXIgdHJh Y2tpbmcgcGVuZGluZyB3YWl0IGZvciBWQkxBTksKICAqIEBwZW5kaW5nX3ZibGFua193cTogV2Fp dCBxdWV1ZSBmb3IgYmxvY2tpbmcgdW50aWwgVkJMQU5LIHJlY2VpdmVkCiAgKi8KQEAgLTMzNSw4 ICszMjksNiBAQCBzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgewogCWJvb2wgc2VyaWFsaXpl X3dhaXQ0cHA7CiAJaW50IHBwX3RpbWVvdXRfcmVwb3J0X2NudDsKIAlzdHJ1Y3QgZHB1X2VuY29k ZXJfcGh5c19jbWRfYXV0b3JlZnJlc2ggYXV0b3JlZnJlc2g7Ci0JYXRvbWljX3QgcGVuZGluZ19y ZF9wdHJfY250OwotCWt0aW1lX3QgcmRfcHRyX3RpbWVzdGFtcDsKIAlhdG9taWNfdCBwZW5kaW5n X3ZibGFua19jbnQ7CiAJd2FpdF9xdWV1ZV9oZWFkX3QgcGVuZGluZ192Ymxhbmtfd3E7CiB9Owpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5 c19jbWQuYyBiL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNf Y21kLmMKaW5kZXggZTkyMzgwYTFkNWE0Li42Y2NmMzc4MjBhYTIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfY21kLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c19jbWQuYwpAQCAtNDQs MTIgKzQ0LDYgQEAKIAogI2RlZmluZSBEUFVfRU5DX1dSX1BUUl9TVEFSVF9USU1FT1VUX1VTIDIw MDAwCiAKLS8qCi0gKiBUaHJlc2hvbGQgZm9yIHNpZ25hbGxpbmcgcmV0aXJlIGZlbmNlcyBpbiBj YXNlcyB3aGVyZQotICogQ1RMX1NUQVJUX0lSUSBpcyByZWNlaXZlZCBqdXN0IGFmdGVyIFJEX1BU Ul9JUlEKLSAqLwotI2RlZmluZSBEUFVfRU5DX0NUTF9TVEFSVF9USFJFU0hPTERfVVMgNTAwCi0K IHN0YXRpYyBpbmxpbmUgaW50IF9kcHVfZW5jb2Rlcl9waHlzX2NtZF9nZXRfaWRsZV90aW1lb3V0 KAogCQlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5c19jbWQgKmNtZF9lbmMpCiB7CkBAIC0xNzAsOCAr MTY0LDcgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfcHBfdHhfZG9uZV9pcnEo dm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkKIAlzdHJ1Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19l bmMgPSBhcmc7CiAJdW5zaWduZWQgbG9uZyBsb2NrX2ZsYWdzOwogCWludCBuZXdfY250OwotCXUz MiBldmVudCA9IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0RPTkUgfAotCQkJRFBVX0VOQ09ERVJf RlJBTUVfRVZFTlRfU0lHTkFMX1JFTEVBU0VfRkVOQ0U7CisJdTMyIGV2ZW50ID0gRFBVX0VOQ09E RVJfRlJBTUVfRVZFTlRfRE9ORTsKIAogCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19w cCkKIAkJcmV0dXJuOwpAQCAtMjIxLDcgKzIxNCw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVy X3BoeXNfY21kX3BwX3JkX3B0cl9pcnEodm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkKIHsKIAlzdHJ1 Y3QgZHB1X2VuY29kZXJfcGh5cyAqcGh5c19lbmMgPSBhcmc7CiAJc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfY21kICpjbWRfZW5jOwotCXUzMiBldmVudCA9IDA7CiAKIAlpZiAoIXBoeXNfZW5jIHx8 ICFwaHlzX2VuYy0+aHdfcHApCiAJCXJldHVybjsKQEAgLTIyOSwzMCArMjIxLDEwIEBAIHN0YXRp YyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfY21kX3BwX3JkX3B0cl9pcnEodm9pZCAqYXJnLCBpbnQg aXJxX2lkeCkKIAlEUFVfQVRSQUNFX0JFR0lOKCJyZF9wdHJfaXJxIik7CiAJY21kX2VuYyA9IHRv X2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5jKTsKIAotCS8qKgotCSAqIHNpZ25hbCBvbmx5 IGZvciBtYXN0ZXIsIHdoZW4gdGhlIGN0bF9zdGFydCBpcnEgaXMKLQkgKiBkb25lIGFuZCBpbmNy ZW1lbnRlZCB0aGUgcGVuZGluZ19yZF9wdHJfY250LgotCSAqLwotCWlmIChkcHVfZW5jb2Rlcl9w aHlzX2NtZF9pc19tYXN0ZXIocGh5c19lbmMpCi0JCSAgICAmJiBhdG9taWNfYWRkX3VubGVzcygm Y21kX2VuYy0+cGVuZGluZ19yZF9wdHJfY250LCAtMSwgMCkKLQkJICAgICYmIGF0b21pY19hZGRf dW5sZXNzKAotCQkJCSZwaHlzX2VuYy0+cGVuZGluZ19yZXRpcmVfZmVuY2VfY250LCAtMSwgMCkp IHsKLQotCQlldmVudCA9IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX1NJR05BTF9SRVRJUkVfRkVO Q0U7Ci0JCWlmIChwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVfZG9uZSkKLQkJCXBo eXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKAotCQkJCXBoeXNfZW5jLT5wYXJl bnQsIHBoeXNfZW5jLCBldmVudCk7Ci0JfQotCi0JRFBVX0VWVDMyX0lSUShEUk1JRChwaHlzX2Vu Yy0+cGFyZW50KSwKLQkJCXBoeXNfZW5jLT5od19wcC0+aWR4IC0gUElOR1BPTkdfMCwgZXZlbnQs IDB4ZmZmKTsKLQogCWlmIChwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfdmJsYW5rX3ZpcnQp CiAJCXBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV92YmxhbmtfdmlydChwaHlzX2VuYy0+cGFy ZW50LAogCQkJcGh5c19lbmMpOwogCi0JY21kX2VuYy0+cmRfcHRyX3RpbWVzdGFtcCA9IGt0aW1l X2dldCgpOwotCiAJYXRvbWljX2FkZF91bmxlc3MoJmNtZF9lbmMtPnBlbmRpbmdfdmJsYW5rX2Nu dCwgLTEsIDApOwogCXdha2VfdXBfYWxsKCZjbWRfZW5jLT5wZW5kaW5nX3ZibGFua193cSk7CiAJ RFBVX0FUUkFDRV9FTkQoInJkX3B0cl9pcnEiKTsKQEAgLTI2Miw5ICsyMzQsNiBAQCBzdGF0aWMg dm9pZCBkcHVfZW5jb2Rlcl9waHlzX2NtZF9jdGxfc3RhcnRfaXJxKHZvaWQgKmFyZywgaW50IGly cV9pZHgpCiB7CiAJc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKnBoeXNfZW5jID0gYXJnOwogCXN0 cnVjdCBkcHVfZW5jb2Rlcl9waHlzX2NtZCAqY21kX2VuYzsKLQlzdHJ1Y3QgZHB1X2h3X2N0bCAq Y3RsOwotCXUzMiBldmVudCA9IDA7Ci0JczY0IHRpbWVfZGlmZl91czsKIAogCWlmICghcGh5c19l bmMgfHwgIXBoeXNfZW5jLT5od19jdGwpCiAJCXJldHVybjsKQEAgLTI3Miw0MyArMjQxLDggQEAg c3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c19jbWRfY3RsX3N0YXJ0X2lycSh2b2lkICphcmcs IGludCBpcnFfaWR4KQogCURQVV9BVFJBQ0VfQkVHSU4oImN0bF9zdGFydF9pcnEiKTsKIAljbWRf ZW5jID0gdG9fZHB1X2VuY29kZXJfcGh5c19jbWQocGh5c19lbmMpOwogCi0JY3RsID0gcGh5c19l bmMtPmh3X2N0bDsKIAlhdG9taWNfYWRkX3VubGVzcygmcGh5c19lbmMtPnBlbmRpbmdfY3Rsc3Rh cnRfY250LCAtMSwgMCk7CiAKLQl0aW1lX2RpZmZfdXMgPSBrdGltZV91c19kZWx0YShrdGltZV9n ZXQoKSwgY21kX2VuYy0+cmRfcHRyX3RpbWVzdGFtcCk7Ci0KLQkvKiBoYW5kbGUgcmV0aXJlIGZl bmNlIGJhc2VkIG9uIG9ubHkgbWFzdGVyICovCi0JaWYgKGRwdV9lbmNvZGVyX3BoeXNfY21kX2lz X21hc3RlcihwaHlzX2VuYykKLQkJCSYmIGF0b21pY19yZWFkKCZwaHlzX2VuYy0+cGVuZGluZ19y ZXRpcmVfZmVuY2VfY250KSkgewotCQkvKioKLQkJICogSGFuZGxlIHJhcmUgY2FzZXMgd2hlcmUg dGhlIGN0bF9zdGFydF9pcnEgaXMgcmVjZWl2ZWQKLQkJICogYWZ0ZXIgcmRfcHRyX2lycS4gSWYg aXQgZmFsbHMgd2l0aGluIGEgdGhyZXNob2xkLCBpdCBpcwotCQkgKiBndWFyYW50ZWVkIHRoZSBm cmFtZSB3b3VsZCBiZSBwaWNrZWQgdXAgaW4gdGhlIGN1cnJlbnQgVEUuCi0JCSAqIFNpZ25hbCBy ZXRpcmUgZmVuY2UgaW1tZWRpYXRlbHkgaW4gc3VjaCBjYXNlLgotCQkgKi8KLQkJaWYgKCh0aW1l X2RpZmZfdXMgPD0gRFBVX0VOQ19DVExfU1RBUlRfVEhSRVNIT0xEX1VTKQotCQkJICAgICYmIGF0 b21pY19hZGRfdW5sZXNzKAotCQkJCSZwaHlzX2VuYy0+cGVuZGluZ19yZXRpcmVfZmVuY2VfY250 LCAtMSwgMCkpIHsKLQotCQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9TSUdOQUxf UkVUSVJFX0ZFTkNFOwotCi0JCQlpZiAocGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1l X2RvbmUpCi0JCQkJcGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUoCi0JCQkJ CXBoeXNfZW5jLT5wYXJlbnQsIHBoeXNfZW5jLCBldmVudCk7Ci0KLQkJLyoqCi0JCSAqIEluIGlk ZWFsIGNhc2VzLCBjdGxfc3RhcnRfaXJxIGlzIHJlY2VpdmVkIGJlZm9yZSB0aGUKLQkJICogcmRf cHRyX2lycSwgc28gc2V0IHRoZSBhdG9taWMgZmxhZyB0byBpbmRpY2F0ZSB0aGUgZXZlbnQKLQkJ ICogYW5kIHJkX3B0cl9pcnEgd2lsbCBoYW5kbGUgc2lnbmFsbGluZyB0aGUgcmV0aXJlIGZlbmNl Ci0JCSAqLwotCQl9IGVsc2UgewotCQkJYXRvbWljX2luYygmY21kX2VuYy0+cGVuZGluZ19yZF9w dHJfY250KTsKLQkJfQotCX0KLQotCURQVV9FVlQzMl9JUlEoRFJNSUQocGh5c19lbmMtPnBhcmVu dCksIGN0bC0+aWR4IC0gQ1RMXzAsCi0JCQkJdGltZV9kaWZmX3VzLCBldmVudCwgMHhmZmYpOwot CiAJLyogU2lnbmFsIGFueSB3YWl0aW5nIGN0bCBzdGFydCBpbnRlcnJ1cHQgKi8KIAl3YWtlX3Vw X2FsbCgmcGh5c19lbmMtPnBlbmRpbmdfa2lja29mZl93cSk7CiAJRFBVX0FUUkFDRV9FTkQoImN0 bF9zdGFydF9pcnEiKTsKQEAgLTQwOSw4ICszNDMsNyBAQCBzdGF0aWMgaW50IF9kcHVfZW5jb2Rl cl9waHlzX2NtZF9oYW5kbGVfcHBkb25lX3RpbWVvdXQoCiB7CiAJc3RydWN0IGRwdV9lbmNvZGVy X3BoeXNfY21kICpjbWRfZW5jID0KIAkJCXRvX2RwdV9lbmNvZGVyX3BoeXNfY21kKHBoeXNfZW5j KTsKLQl1MzIgZnJhbWVfZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9FUlJPUgotCQkJ CXwgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfU0lHTkFMX1JFTEVBU0VfRkVOQ0U7CisJdTMyIGZy YW1lX2V2ZW50ID0gRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRVJST1I7CiAJYm9vbCBkb19sb2cg PSBmYWxzZTsKIAogCWlmICghcGh5c19lbmMgfHwgIXBoeXNfZW5jLT5od19wcCB8fCAhcGh5c19l bmMtPmh3X2N0bCkKQEAgLTEzNDYsOCArMTI3OSw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rlcl9waHlz ICpkcHVfZW5jb2Rlcl9waHlzX2NtZF9pbml0KAogCWF0b21pY19zZXQoJnBoeXNfZW5jLT52Ymxh bmtfcmVmY291bnQsIDApOwogCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5kaW5nX2tpY2tvZmZf Y250LCAwKTsKIAlhdG9taWNfc2V0KCZwaHlzX2VuYy0+cGVuZGluZ19jdGxzdGFydF9jbnQsIDAp OwotCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQsIDApOwot CWF0b21pY19zZXQoJmNtZF9lbmMtPnBlbmRpbmdfcmRfcHRyX2NudCwgMCk7CiAJYXRvbWljX3Nl dCgmY21kX2VuYy0+cGVuZGluZ192YmxhbmtfY250LCAwKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFk KCZwaHlzX2VuYy0+cGVuZGluZ19raWNrb2ZmX3dxKTsKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZj bWRfZW5jLT5wZW5kaW5nX3ZibGFua193cSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v bXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3ZpZC5jIGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2VuY29kZXJfcGh5c192aWQuYwppbmRleCA2MmM2ZjVjMzU0N2EuLmVk YWFkMDQxMzk4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1 X2VuY29kZXJfcGh5c192aWQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9k cHVfZW5jb2Rlcl9waHlzX3ZpZC5jCkBAIC0zNzMsMTMgKzM3MywxMCBAQCBzdGF0aWMgdm9pZCBk cHVfZW5jb2Rlcl9waHlzX3ZpZF9zZXR1cF90aW1pbmdfZW5naW5lKAogc3RhdGljIHZvaWQgZHB1 X2VuY29kZXJfcGh5c192aWRfdmJsYW5rX2lycSh2b2lkICphcmcsIGludCBpcnFfaWR4KQogewog CXN0cnVjdCBkcHVfZW5jb2Rlcl9waHlzICpwaHlzX2VuYyA9IGFyZzsKLQlzdHJ1Y3QgZHB1X2Vu Y29kZXJfcGh5c192aWQgKnZpZF9lbmMgPQotCQkJdG9fZHB1X2VuY29kZXJfcGh5c192aWQocGh5 c19lbmMpOwogCXN0cnVjdCBkcHVfaHdfY3RsICpod19jdGw7CiAJdW5zaWduZWQgbG9uZyBsb2Nr X2ZsYWdzOwogCXUzMiBmbHVzaF9yZWdpc3RlciA9IDA7CiAJaW50IG5ld19jbnQgPSAtMSwgb2xk X2NudCA9IC0xOwotCXUzMiBldmVudCA9IDA7CiAKIAlpZiAoIXBoeXNfZW5jKQogCQlyZXR1cm47 CkBAIC0zOTAsMTggKzM4Nyw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlkX3Zi bGFua19pcnEodm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkKIAogCURQVV9BVFJBQ0VfQkVHSU4oInZi bGFua19pcnEiKTsKIAotCS8qIHNpZ25hbCBvbmx5IGZvciBtYXN0ZXIsIHdoZXJlIHRoZXJlIGlz IGEgcGVuZGluZyBraWNrb2ZmICovCi0JaWYgKGRwdV9lbmNvZGVyX3BoeXNfdmlkX2lzX21hc3Rl cihwaHlzX2VuYykKLQkJCSYmIGF0b21pY19hZGRfdW5sZXNzKAotCQkJCSZwaHlzX2VuYy0+cGVu ZGluZ19yZXRpcmVfZmVuY2VfY250LCAtMSwgMCkpIHsKLQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9G UkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9GRU5DRQotCQkJCXwgRFBVX0VOQ09ERVJfRlJBTUVf RVZFTlRfU0lHTkFMX1JFVElSRV9GRU5DRTsKLQotCQlpZiAocGh5c19lbmMtPnBhcmVudF9vcHMu aGFuZGxlX2ZyYW1lX2RvbmUpCi0JCQlwaHlzX2VuYy0+cGFyZW50X29wcy5oYW5kbGVfZnJhbWVf ZG9uZShwaHlzX2VuYy0+cGFyZW50LAotCQkJCXBoeXNfZW5jLCBldmVudCk7Ci0JfQotCiAJaWYg KHBoeXNfZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV92YmxhbmtfdmlydCkKIAkJcGh5c19lbmMtPnBh cmVudF9vcHMuaGFuZGxlX3ZibGFua192aXJ0KHBoeXNfZW5jLT5wYXJlbnQsCiAJCQkJcGh5c19l bmMpOwpAQCAtNDIyLDkgKzQwNyw2IEBAIHN0YXRpYyB2b2lkIGRwdV9lbmNvZGVyX3BoeXNfdmlk X3ZibGFua19pcnEodm9pZCAqYXJnLCBpbnQgaXJxX2lkeCkKIAkJCQktMSwgMCk7CiAJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZShwaHlzX2VuYy0+ZW5jX3NwaW5sb2NrLCBsb2NrX2ZsYWdzKTsKIAot CURQVV9FVlQzMl9JUlEoRFJNSUQocGh5c19lbmMtPnBhcmVudCksIHZpZF9lbmMtPmh3X2ludGYt PmlkeCAtIElOVEZfMCwKLQkJCW9sZF9jbnQsIG5ld19jbnQsIGZsdXNoX3JlZ2lzdGVyLCBldmVu dCk7Ci0KIAkvKiBTaWduYWwgYW55IHdhaXRpbmcgYXRvbWljIGNvbW1pdCB0aHJlYWQgKi8KIAl3 YWtlX3VwX2FsbCgmcGh5c19lbmMtPnBlbmRpbmdfa2lja29mZl93cSk7CiAJRFBVX0FUUkFDRV9F TkQoInZibGFua19pcnEiKTsKQEAgLTEwMjgsNyArMTAxMCw2IEBAIHN0cnVjdCBkcHVfZW5jb2Rl cl9waHlzICpkcHVfZW5jb2Rlcl9waHlzX3ZpZF9pbml0KAogCiAJYXRvbWljX3NldCgmcGh5c19l bmMtPnZibGFua19yZWZjb3VudCwgMCk7CiAJYXRvbWljX3NldCgmcGh5c19lbmMtPnBlbmRpbmdf a2lja29mZl9jbnQsIDApOwotCWF0b21pY19zZXQoJnBoeXNfZW5jLT5wZW5kaW5nX3JldGlyZV9m ZW5jZV9jbnQsIDApOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJnBoeXNfZW5jLT5wZW5kaW5nX2tp Y2tvZmZfd3EpOwogCXBoeXNfZW5jLT5lbmFibGVfc3RhdGUgPSBEUFVfRU5DX0RJU0FCTEVEOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9w aHlzX3diLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlz X3diLmMKaW5kZXggOWE2ZmEzZTFlOGI0Li4yYmM1ODk0ODM5YzQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyX3BoeXNfd2IuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlcl9waHlzX3diLmMKQEAgLTY4MCwx MSArNjgwLDggQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfcGh5c193Yl9kb25lX2lycSh2b2lk ICphcmcsIGludCBpcnFfaWR4KQogCWlmIChwaHlzX2VuYy0+ZW5hYmxlX3N0YXRlID09IERQVV9F TkNfRElTQUJMSU5HKQogCQlnb3RvIGNvbXBsZXRlOwogCi0JZXZlbnQgPSBEUFVfRU5DT0RFUl9G UkFNRV9FVkVOVF9TSUdOQUxfUkVMRUFTRV9GRU5DRQotCQkJfCBEUFVfRU5DT0RFUl9GUkFNRV9F VkVOVF9TSUdOQUxfUkVUSVJFX0ZFTkNFCi0JCQl8IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0RP TkU7CisJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9FVkVOVF9ET05FOwogCi0JYXRvbWljX2Fk ZF91bmxlc3MoJnBoeXNfZW5jLT5wZW5kaW5nX3JldGlyZV9mZW5jZV9jbnQsIC0xLCAwKTsKIAlp ZiAocGh5c19lbmMtPnBhcmVudF9vcHMuaGFuZGxlX2ZyYW1lX2RvbmUpCiAJCXBoeXNfZW5jLT5w YXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKHBoeXNfZW5jLT5wYXJlbnQsCiAJCQkJcGh5c19l bmMsIGV2ZW50KTsKQEAgLTg0NywxMiArODQ0LDggQEAgc3RhdGljIGludCBkcHVfZW5jb2Rlcl9w aHlzX3diX3dhaXRfZm9yX2NvbW1pdF9kb25lKAogCQl9IGVsc2UgewogCQkJRFBVX0VSUk9SKCJ3 YjolZCBraWNrb2ZmIHRpbWVkIG91dFxuIiwKIAkJCQkJd2JfZW5jLT53Yl9kZXYtPndiX2lkeCAt IFdCXzApOwotCQkJYXRvbWljX2FkZF91bmxlc3MoCi0JCQkJJnBoeXNfZW5jLT5wZW5kaW5nX3Jl dGlyZV9mZW5jZV9jbnQsIC0xLCAwKTsKIAotCQkJZXZlbnQgPSBEUFVfRU5DT0RFUl9GUkFNRV9F VkVOVF9TSUdOQUxfUkVMRUFTRV9GRU5DRQotCQkJCXwgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRf U0lHTkFMX1JFVElSRV9GRU5DRQotCQkJCXwgRFBVX0VOQ09ERVJfRlJBTUVfRVZFTlRfRVJST1I7 CisJCQlldmVudCA9IERQVV9FTkNPREVSX0ZSQU1FX0VWRU5UX0VSUk9SOwogCQkJaWYgKHBoeXNf ZW5jLT5wYXJlbnRfb3BzLmhhbmRsZV9mcmFtZV9kb25lKQogCQkJCXBoeXNfZW5jLT5wYXJlbnRf b3BzLmhhbmRsZV9mcmFtZV9kb25lKAogCQkJCQlwaHlzX2VuYy0+cGFyZW50LCBwaHlzX2VuYywg ZXZlbnQpOwpAQCAtMTMzMyw3ICsxMzI2LDYgQEAgc3RydWN0IGRwdV9lbmNvZGVyX3BoeXMgKmRw dV9lbmNvZGVyX3BoeXNfd2JfaW5pdCgKIAlwaHlzX2VuYy0+aW50Zl9tb2RlID0gSU5URl9NT0RF X1dCX0xJTkU7CiAJcGh5c19lbmMtPmludGZfaWR4ID0gcC0+aW50Zl9pZHg7CiAJcGh5c19lbmMt PmVuY19zcGlubG9jayA9IHAtPmVuY19zcGlubG9jazsKLQlhdG9taWNfc2V0KCZwaHlzX2VuYy0+ cGVuZGluZ19yZXRpcmVfZmVuY2VfY250LCAwKTsKIAlJTklUX0xJU1RfSEVBRCgmd2JfZW5jLT5p cnFfY2IubGlzdCk7CiAKIAkvKiBjcmVhdGUgaW50ZXJuYWwgYnVmZmVyIGZvciBkaXNhYmxlIGxv Z2ljICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21z LmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfa21zLmMKaW5kZXggM2Q4MzAz N2U4MzA1Li45ZDY4MDMwMzc4YTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tc20vZGlz cC9kcHUxL2RwdV9rbXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVf a21zLmMKQEAgLTU0NSwzNSArNTQ1LDYgQEAgc3RhdGljIHZvaWQgZHB1X2ttc193YWl0X2Zvcl9j b21taXRfZG9uZShzdHJ1Y3QgbXNtX2ttcyAqa21zLAogCX0KIH0KIAotc3RhdGljIHZvaWQgZHB1 X2ttc19wcmVwYXJlX2ZlbmNlKHN0cnVjdCBtc21fa21zICprbXMsCi0JCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpvbGRfc3RhdGUpCi17Ci0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwotCXN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGU7Ci0JaW50IGksIHJjOwotCi0JaWYgKCFr bXMgfHwgIW9sZF9zdGF0ZSB8fCAhb2xkX3N0YXRlLT5kZXYgfHwgIW9sZF9zdGF0ZS0+YWNxdWly ZV9jdHgpIHsKLQkJRFBVX0VSUk9SKCJpbnZhbGlkIGFyZ3VtZW50KHMpXG4iKTsKLQkJcmV0dXJu OwotCX0KLQotcmV0cnk6Ci0JLyogYXR0ZW1wdCB0byBhY3F1aXJlIHd3IG11dGV4IGZvciBjb25u ZWN0aW9uICovCi0JcmMgPSBkcm1fbW9kZXNldF9sb2NrKCZvbGRfc3RhdGUtPmRldi0+bW9kZV9j b25maWcuY29ubmVjdGlvbl9tdXRleCwKLQkJCSAgICAgICBvbGRfc3RhdGUtPmFjcXVpcmVfY3R4 KTsKLQotCWlmIChyYyA9PSAtRURFQURMSykgewotCQlkcm1fbW9kZXNldF9iYWNrb2ZmKG9sZF9z dGF0ZS0+YWNxdWlyZV9jdHgpOwotCQlnb3RvIHJldHJ5OwotCX0KLQotCS8qIG9sZF9zdGF0ZSBh Y3R1YWxseSBjb250YWlucyB1cGRhdGVkIGNydGMgcG9pbnRlcnMgKi8KLQlmb3JfZWFjaF9vbGRf Y3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9jcnRjX3N0YXRlLCBpKSB7Ci0JCWlm IChjcnRjLT5zdGF0ZS0+YWN0aXZlKQotCQkJZHB1X2NydGNfcHJlcGFyZV9jb21taXQoY3J0Yywg b2xkX2NydGNfc3RhdGUpOwotCX0KLX0KLQogLyoqCiAgKiBfZHB1X2ttc19nZXRfZGlzcGxheXMg LSBxdWVyeSBmb3IgdW5kZXJseWluZyBkaXNwbGF5IGhhbmRsZXMgYW5kIGNhY2hlIHRoZW0KICAq IEBkcHVfa21zOiAgICBQb2ludGVyIHRvIGRwdSBrbXMgc3RydWN0dXJlCkBAIC0xNzM0LDcgKzE3 MDUsNiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1zbV9rbXNfZnVuY3Mga21zX2Z1bmNzID0gewog CS5pcnFfdW5pbnN0YWxsICAgPSBkcHVfaXJxX3VuaW5zdGFsbCwKIAkuaXJxICAgICAgICAgICAg ID0gZHB1X2lycSwKIAkucHJlY2xvc2UgICAgICAgID0gZHB1X2ttc19wcmVjbG9zZSwKLQkucHJl cGFyZV9mZW5jZSAgID0gZHB1X2ttc19wcmVwYXJlX2ZlbmNlLAogCS5wcmVwYXJlX2NvbW1pdCAg PSBkcHVfa21zX3ByZXBhcmVfY29tbWl0LAogCS5jb21taXQgICAgICAgICAgPSBkcHVfa21zX2Nv bW1pdCwKIAkuY29tcGxldGVfY29tbWl0ID0gZHB1X2ttc19jb21wbGV0ZV9jb21taXQsCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9t c20vbXNtX2Rydi5oCmluZGV4IDhjYWIzMzNkZjcxNy4uZTkyMzc2YWNiY2ZlIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNt L21zbV9kcnYuaApAQCAtMTMyLDggKzEzMiw2IEBAIGVudW0gbXNtX21kcF9jcnRjX3Byb3BlcnR5 IHsKIAogCS8qIHJhbmdlIHByb3BlcnRpZXMgKi8KIAlDUlRDX1BST1BfSU5QVVRfRkVOQ0VfVElN RU9VVCA9IENSVENfUFJPUF9CTE9CQ09VTlQsCi0JQ1JUQ19QUk9QX09VVFBVVF9GRU5DRSwKLQlD UlRDX1BST1BfT1VUUFVUX0ZFTkNFX09GRlNFVCwKIAlDUlRDX1BST1BfRElNX0xBWUVSX1YxLAog CUNSVENfUFJPUF9DT1JFX0NMSywKIAlDUlRDX1BST1BfQ09SRV9BQiwKQEAgLTE2Myw3ICsxNjEs NiBAQCBlbnVtIG1zbV9tZHBfY29ubl9wcm9wZXJ0eSB7CiAKIAkvKiByYW5nZSBwcm9wZXJ0aWVz ICovCiAJQ09OTkVDVE9SX1BST1BfT1VUX0ZCID0gQ09OTkVDVE9SX1BST1BfQkxPQkNPVU5ULAot CUNPTk5FQ1RPUl9QUk9QX1JFVElSRV9GRU5DRSwKIAlDT05ORUNUT1JfUFJPUF9EU1RfWCwKIAlD T05ORUNUT1JfUFJPUF9EU1RfWSwKIAlDT05ORUNUT1JfUFJPUF9EU1RfVywKLS0gClNlYW4gUGF1 bCwgU29mdHdhcmUgRW5naW5lZXIsIEdvb2dsZSAvIENocm9taXVtIE9TCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0 CkZyZWVkcmVub0BsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9mcmVlZHJlbm8K