From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oscar Mateo Subject: [03/11 v3] drm/i915/guc: Add onion teardown to the GuC setup Date: Fri, 10 Mar 2017 08:28:50 -0800 Message-ID: <1489163337-36080-4-git-send-email-oscar.mateo@intel.com> References: <1489163337-36080-1-git-send-email-oscar.mateo@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id B7FEA6E11A for ; Sat, 11 Mar 2017 00:28:48 +0000 (UTC) In-Reply-To: <1489163337-36080-1-git-send-email-oscar.mateo@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org U3RhcnRpbmcgd2l0aCBpbnRlbF9ndWNfbG9hZGVyLCBkb3duIHRvIGludGVsX2d1Y19zdWJtaXNz aW9uCmFuZCBmaW5hbGx5IHRvIGludGVsX2d1Y19sb2cuCgp2MjoKICAtIE51bGwgZXhlY2J1ZiBj bGllbnQgb3V0c2lkZSBndWNfY2xpZW50X2ZyZWUgKERhbmllbGUpCiAgLSBBc3NlcnQgaWYgdGhp bmdzIHRyeSB0byBnZXQgYWxsb2NhdGVkIHR3aWNlIChEYW5pZWxlL0pvb25hcykKICAtIE51bGwg Z3VjLT5sb2cuYnVmX2FkZHIgd2hlbiBkZXN0cm95ZWQgKERhbmllbGUpCiAgLSBOZXdsaW5lIGJl dHdlZW4gcmV0dXJuaW5nIHN1Y2Nlc3MgYW5kIGVycm9yIGxhYmVscyAoSm9vbmFzKQogIC0gUmVt b3ZlIHNvbWUgdW5uZWNlc3NhcnkgY29tbWVudHMgKEpvb25hcykKICAtIEtlZXAgZ3VjX2xvZ19j cmVhdGVfZXh0cmFzIG5hbWluZyBjb252ZW50aW9uIChKb29uYXMpCiAgLSBIZWxwZXIgZnVuY3Rp b24gZ3VjX2xvZ19oYXNfZXh0cmFzIChKb29uYXMpCiAgLSBObyBuZWVkIGZvciBzZXBhcmF0ZSBy ZWxheV9jaGFubmVsIGNyZWF0ZS9kZXN0cm95LiBJdCdzIGp1c3QgYW5vdGhlciBleHRyYS4KICAt IE5vIG5lZWQgdG8gbnVsbGlmeSBndWMtPmxvZy5mbHVzaF93cSB3aGVuIGRlc3Ryb3llZCAoSm9v bmFzKQogIC0gSG9pc3QgdGhlIGNoZWNrIGZvciBoYXNfZXh0cmFzIG91dCBvZiBndWNfbG9nX2Ny ZWF0ZV9leHRyYXMgKEpvb25hcykKICAtIFRyeSB0byBkbyBpOTE1X2d1Y19sb2dfcmVnaXN0ZXIv dW5yZWdpc3RlciBjYWxscyAoa2luZCBvZikgc3ltbWV0cmljIChEYW5pZWxlKQogIC0gTWFrZSBz dXJlIGluaXRlbF9ndWNfZmluaSBpcyBub3QgY2FsbGVkIGJlZm9yZSBpbml0IGlzIGV2ZXIgY2Fs bGVkIChEYW5pZWxlKQoKdjM6CiAgLSBSZW1vdmUgdW5uZWNlc3NhcnkgcGFyZW50aGVzaXMgKEpv b25hcykKICAtIENoZWNrIGZvciBsb2dzIGVuYWJsZWQgb24gZGVidWdmcyByZWdpc3RyYXRpb24K ICAtIFJlYmFzZSBvbiB0b3Agb2YgVHZydGtvJ3MgIkZpeCByZXF1ZXN0IHJlLXN1Ym1pc3Npb24g YWZ0ZXIgcmVzZXQiCgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xv c3B1cmlvQGludGVsLmNvbT4KQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxp bnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogT3NjYXIgTWF0ZW8gPG9zY2FyLm1hdGVvQGlu dGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAg fCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyB8ICA5 NCArKysrLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jICAgIHwg IDMyICstLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvZy5jICAgICAgIHwgMzYy ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Yy5oICAgICAgICAgICAgfCAgIDggKy0KIDUgZmlsZXMgY2hhbmdlZCwgMjYxIGluc2VydGlv bnMoKyksIDI0MiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBiMWU5 MDI3Li4zMzI5NTA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTU0OSw2ICs1NDksOCBA QCBzdGF0aWMgYm9vbCBpOTE1X3N3aXRjaGVyb29fY2FuX3N3aXRjaChzdHJ1Y3QgcGNpX2RldiAq cGRldikKIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQogewogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK KwlpZiAoaTkxNS5lbmFibGVfZ3VjX3N1Ym1pc3Npb24pCisJCWludGVsX2d1Y19jbGVhbnVwKGRl dl9wcml2KTsKIAlpOTE1X2dlbV9jbGVhbnVwX2VuZ2luZXMoZGV2X3ByaXYpOwogCWk5MTVfZ2Vt X2NvbnRleHRfZmluaShkZXZfcHJpdik7CiAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7CkBAIC02MTIsNyArNjE0LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9k ZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlyZXQgPSBpOTE1X2dlbV9pbml0 KGRldl9wcml2KTsKIAlpZiAocmV0KQotCQlnb3RvIGNsZWFudXBfaXJxOworCQlnb3RvIGNsZWFu dXBfdWM7CiAKIAlpbnRlbF9tb2Rlc2V0X2dlbV9pbml0KGRldik7CiAKQEAgLTYzNCw5ICs2MzYs MTAgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCiAJaWYgKGk5MTVfZ2VtX3N1c3BlbmQoZGV2X3ByaXYpKQogCQlEUk1fRVJST1IoImZh aWxlZCB0byBpZGxlIGhhcmR3YXJlOyBjb250aW51aW5nIHRvIHVubG9hZCFcbiIpOwogCWk5MTVf Z2VtX2ZpbmkoZGV2X3ByaXYpOwotY2xlYW51cF9pcnE6CitjbGVhbnVwX3VjOgogCWludGVsX2d1 Y19maW5pKGRldl9wcml2KTsKIAlpbnRlbF9odWNfZmluaShkZXZfcHJpdik7CitjbGVhbnVwX2ly cToKIAlkcm1faXJxX3VuaW5zdGFsbChkZXYpOwogCWludGVsX3RlYXJkb3duX2dtYnVzKGRldl9w cml2KTsKIGNsZWFudXBfY3NyOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCmluZGV4IDg0M2M3M2EuLmYzM2M2NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2d1Y19zdWJtaXNzaW9uLmMKQEAgLTgwOSw3ICs4MDksNiBAQCBzdGF0aWMgaW50IGd1Y19p bml0X2Rvb3JiZWxsX2h3KHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAlpZGFfc2ltcGxlX3JlbW92 ZSgmZ3VjLT5jdHhfaWRzLCBjbGllbnQtPmN0eF9pbmRleCk7CiBlcnJfY2xpZW50OgogCWtmcmVl KGNsaWVudCk7Ci0KIAlyZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCkBAIC04MzUsNyArODM0LDcg QEAgc3RhdGljIHZvaWQgZ3VjX3BvbGljaWVzX2luaXQoc3RydWN0IGd1Y19wb2xpY2llcyAqcG9s aWNpZXMpCiAJcG9saWNpZXMtPmlzX3ZhbGlkID0gMTsKIH0KIAotc3RhdGljIHZvaWQgZ3VjX2Fk ZG9uX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCitzdGF0aWMgaW50IGd1Y19hZGRvbl9j cmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGd1Y190b19pOTE1KGd1Yyk7CiAJc3RydWN0IGk5MTVfdm1hICp2bWE7CkBA IC04NDcsMTkgKzg0NiwxOCBAQCBzdGF0aWMgdm9pZCBndWNfYWRkb25fY3JlYXRlKHN0cnVjdCBp bnRlbF9ndWMgKmd1YykKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAl1MzIgc2l6ZTsKIAorCUdFTV9C VUdfT04oZ3VjLT5hZHNfdm1hKTsKKwogCS8qIFRoZSBhZHMgb2JqIGluY2x1ZGVzIHRoZSBzdHJ1 Y3QgaXRzZWxmIGFuZCBidWZmZXJzIHBhc3NlZCB0byBHdUMgKi8KIAlzaXplID0gc2l6ZW9mKHN0 cnVjdCBndWNfYWRzKSArIHNpemVvZihzdHJ1Y3QgZ3VjX3BvbGljaWVzKSArCiAJCQlzaXplb2Yo c3RydWN0IGd1Y19tbWlvX3JlZ19zdGF0ZSkgKwogCQkJR1VDX1MzX1NBVkVfU1BBQ0VfUEFHRVMg KiBQQUdFX1NJWkU7CiAKLQl2bWEgPSBndWMtPmFkc192bWE7Ci0JaWYgKCF2bWEpIHsKLQkJdm1h ID0gaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShndWMsIFBBR0VfQUxJR04oc2l6ZSkpOwotCQlpZiAo SVNfRVJSKHZtYSkpCi0JCQlyZXR1cm47CisJdm1hID0gaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShn dWMsIFBBR0VfQUxJR04oc2l6ZSkpOworCWlmIChJU19FUlIodm1hKSkKKwkJcmV0dXJuIFBUUl9F UlIodm1hKTsKIAotCQlndWMtPmFkc192bWEgPSB2bWE7Ci0JfQorCWd1Yy0+YWRzX3ZtYSA9IHZt YTsKIAogCXBhZ2UgPSBpOTE1X3ZtYV9maXJzdF9wYWdlKHZtYSk7CiAJYWRzID0ga21hcChwYWdl KTsKQEAgLTkwMiw2ICs5MDAsMTMgQEAgc3RhdGljIHZvaWQgZ3VjX2FkZG9uX2NyZWF0ZShzdHJ1 Y3QgaW50ZWxfZ3VjICpndWMpCiAJCQlzaXplb2Yoc3RydWN0IGd1Y19tbWlvX3JlZ19zdGF0ZSk7 CiAKIAlrdW5tYXAocGFnZSk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgZ3VjX2Fk ZG9uX2Rlc3Ryb3koc3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCWk5MTVfdm1hX3VucGluX2Fu ZF9yZWxlYXNlKCZndWMtPmFkc192bWEpOwogfQogCiAvKgpAQCAtOTE2LDYgKzkyMSw3IEBAIGlu dCBpOTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3VjOwogCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwogCXZvaWQgKnZhZGRyOworCWludCByZXQ7CiAKIAlpZiAoIUhBU19HVUNf U0NIRUQoZGV2X3ByaXYpKQogCQlyZXR1cm4gMDsKQEAgLTkyNSwxMCArOTMxLDEwIEBAIGludCBp OTE1X2d1Y19zdWJtaXNzaW9uX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShkZXZfcHJpdik7CiAKIAlpZiAoIWk5MTUu ZW5hYmxlX2d1Y19zdWJtaXNzaW9uKQotCQlyZXR1cm4gMDsgLyogbm90IGVuYWJsZWQgICovCisJ CXJldHVybiAwOwogCiAJaWYgKGd1Yy0+Y3R4X3Bvb2wpCi0JCXJldHVybiAwOyAvKiBhbHJlYWR5 IGFsbG9jYXRlZCAqLworCQlyZXR1cm4gMDsKIAogCXZtYSA9IGludGVsX2d1Y19hbGxvY2F0ZV92 bWEoZ3VjLCBnZW1zaXplKTsKIAlpZiAoSVNfRVJSKHZtYSkpCkBAIC05MzYsMTUgKzk0MiwyMyBA QCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAogCWd1Yy0+Y3R4X3Bvb2wgPSB2bWE7CiAKLQl2YWRkciA9IGk5MTVfZ2VtX29i amVjdF9waW5fbWFwKHZtYS0+b2JqLCBJOTE1X01BUF9XQik7Ci0JaWYgKElTX0VSUih2YWRkcikp Ci0JCWdvdG8gZXJyOworCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5jdHhf cG9vbC0+b2JqLCBJOTE1X01BUF9XQik7CisJaWYgKElTX0VSUih2YWRkcikpIHsKKwkJcmV0ID0g UFRSX0VSUih2YWRkcik7CisJCWdvdG8gZXJyX3ZtYTsKKwl9CiAKIAlndWMtPmN0eF9wb29sX3Zh ZGRyID0gdmFkZHI7CiAKKwlyZXQgPSBpbnRlbF9ndWNfbG9nX2NyZWF0ZShndWMpOworCWlmIChy ZXQgPCAwKQorCQlnb3RvIGVycl92YWRkcjsKKworCXJldCA9IGd1Y19hZGRvbl9jcmVhdGUoZ3Vj KTsKKwlpZiAocmV0IDwgMCkKKwkJZ290byBlcnJfbG9nOworCiAJaWRhX2luaXQoJmd1Yy0+Y3R4 X2lkcyk7Ci0JaW50ZWxfZ3VjX2xvZ19jcmVhdGUoZ3VjKTsKLQlndWNfYWRkb25fY3JlYXRlKGd1 Yyk7CiAKIAlndWMtPmV4ZWNidWZfY2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXZfcHJpdiwK IAkJCQkJICAgICAgIElOVEVMX0lORk8oZGV2X3ByaXYpLT5yaW5nX21hc2ssCkBAIC05NTIsMTQg Kzk2NiwzNCBAQCBpbnQgaTkxNV9ndWNfc3VibWlzc2lvbl9pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKIAkJCQkJICAgICAgIGRldl9wcml2LT5rZXJuZWxfY29udGV4dCk7 CiAJaWYgKElTX0VSUihndWMtPmV4ZWNidWZfY2xpZW50KSkgewogCQlEUk1fRVJST1IoIkZhaWxl ZCB0byBjcmVhdGUgR3VDIGNsaWVudCBmb3IgZXhlY2J1ZiFcbiIpOwotCQlnb3RvIGVycjsKKwkJ cmV0ID0gUFRSX0VSUihndWMtPmV4ZWNidWZfY2xpZW50KTsKKwkJZ290byBlcnJfYWRzOwogCX0K IAogCXJldHVybiAwOwogCi1lcnI6Ci0JaTkxNV9ndWNfc3VibWlzc2lvbl9maW5pKGRldl9wcml2 KTsKLQlyZXR1cm4gLUVOT01FTTsKK2Vycl9hZHM6CisJZ3VjX2FkZG9uX2Rlc3Ryb3koZ3VjKTsK K2Vycl9sb2c6CisJaW50ZWxfZ3VjX2xvZ19kZXN0cm95KGd1Yyk7CitlcnJfdmFkZHI6CisJaTkx NV9nZW1fb2JqZWN0X3VucGluX21hcChndWMtPmN0eF9wb29sLT5vYmopOworZXJyX3ZtYToKKwlp OTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3VjLT5jdHhfcG9vbCk7CisJcmV0dXJuIHJldDsK K30KKwordm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3Vj OworCisJZ3VjX2NsaWVudF9mcmVlKGd1Yy0+ZXhlY2J1Zl9jbGllbnQpOworCWd1Yy0+ZXhlY2J1 Zl9jbGllbnQgPSBOVUxMOworCWlkYV9kZXN0cm95KCZndWMtPmN0eF9pZHMpOworCWd1Y19hZGRv bl9kZXN0cm95KGd1Yyk7CisJaW50ZWxfZ3VjX2xvZ19kZXN0cm95KGd1Yyk7CisJaTkxNV9nZW1f b2JqZWN0X3VucGluX21hcChndWMtPmN0eF9wb29sLT5vYmopOworCWk5MTVfdm1hX3VucGluX2Fu ZF9yZWxlYXNlKCZndWMtPmN0eF9wb29sKTsKIH0KIAogc3RhdGljIHZvaWQgZ3VjX3Jlc2V0X3dx KHN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudCkKQEAgLTEwNTMsMjYgKzEwODcsNiBAQCB2 b2lkIGk5MTVfZ3VjX3N1Ym1pc3Npb25fZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJaW50ZWxfZXhlY2xpc3RzX2VuYWJsZV9zdWJtaXNzaW9uKGRldl9wcml2KTsK IH0KIAotdm9pZCBpOTE1X2d1Y19zdWJtaXNzaW9uX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQotewotCXN0cnVjdCBpbnRlbF9ndWMgKmd1YyA9ICZkZXZfcHJpdi0+Z3Vj OwotCXN0cnVjdCBpOTE1X2d1Y19jbGllbnQgKmNsaWVudDsKLQotCWNsaWVudCA9IGZldGNoX2Fu ZF96ZXJvKCZndWMtPmV4ZWNidWZfY2xpZW50KTsKLQlpZiAoY2xpZW50ICYmICFJU19FUlIoY2xp ZW50KSkKLQkJZ3VjX2NsaWVudF9mcmVlKGNsaWVudCk7Ci0KLQlpOTE1X3ZtYV91bnBpbl9hbmRf cmVsZWFzZSgmZ3VjLT5hZHNfdm1hKTsKLQlpOTE1X3ZtYV91bnBpbl9hbmRfcmVsZWFzZSgmZ3Vj LT5sb2cudm1hKTsKLQotCWlmIChndWMtPmN0eF9wb29sX3ZhZGRyKSB7Ci0JCWlkYV9kZXN0cm95 KCZndWMtPmN0eF9pZHMpOwotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1Yy0+Y3R4X3Bv b2wtPm9iaik7Ci0JfQotCi0JaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+Y3R4X3Bv b2wpOwotfQotCiAvKioKICAqIGludGVsX2d1Y19zdXNwZW5kKCkgLSBub3RpZnkgR3VDIGVudGVy aW5nIHN1c3BlbmQgc3RhdGUKICAqIEBkZXZfcHJpdjoJaTkxNSBkZXZpY2UgcHJpdmF0ZQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCmluZGV4IGIxZWJmY2UuLmY5ZTE4M2Eg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKQEAgLTQ0Myw3ICs0NDMs NyBAQCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAogCWVyciA9IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChkZXZfcHJpdik7CiAJaWYgKGVy cikKLQkJZ290byBmYWlsOworCQlnb3RvIGVycl9ndWM7CiAKIAkvKgogCSAqIFdhRW5hYmxldUtl cm5lbEhlYWRlclZhbGlkRml4OnNrbCxieHQKQEAgLTQ1OCw3ICs0NTgsNyBAQCBpbnQgaW50ZWxf Z3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJICovCiAJCWVy ciA9IGd1Y19od19yZXNldChkZXZfcHJpdik7CiAJCWlmIChlcnIpCi0JCQlnb3RvIGZhaWw7CisJ CQlnb3RvIGVycl9zdWJtaXNzaW9uOwogCiAJCWludGVsX2h1Y19sb2FkKGRldl9wcml2KTsKIAkJ ZXJyID0gZ3VjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOwpAQCAtNDY2LDcgKzQ2Niw3IEBAIGludCBp bnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJYnJl YWs7CiAKIAkJaWYgKC0tcmV0cmllcyA9PSAwKQotCQkJZ290byBmYWlsOworCQkJZ290byBlcnJf c3VibWlzc2lvbjsKIAogCQlEUk1fSU5GTygiR3VDIGZ3IGxvYWQgZmFpbGVkOiAlZDsgd2lsbCBy ZXNldCBhbmQgIgogCQkJICJyZXRyeSAlZCBtb3JlIHRpbWUocylcbiIsIGVyciwgcmV0cmllcyk7 CkBAIC00ODIsNyArNDgyLDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAkJZXJyID0gaTkxNV9ndWNfc3VibWlzc2lvbl9lbmFibGUo ZGV2X3ByaXYpOwogCQlpZiAoZXJyKQotCQkJZ290byBmYWlsOworCQkJZ290byBlcnJfaW50ZXJy dXB0czsKIAl9CiAKIAlEUk1fSU5GTygiR3VDICVzIChmaXJtd2FyZSAlcyBbdmVyc2lvbiAldS4l dV0pXG4iLApAQCAtNDkyLDE1ICs0OTIsMTYgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlyZXR1cm4gMDsKIAorZXJyX2ludGVycnVw dHM6CisJZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKK2Vycl9zdWJtaXNz aW9uOgorCWk5MTVfZ3VjX3N1Ym1pc3Npb25fZmluaShkZXZfcHJpdik7CitlcnJfZ3VjOgorCWk5 MTVfZ2d0dF9kaXNhYmxlX2d1YyhkZXZfcHJpdik7CiBmYWlsOgogCWlmIChndWNfZnctPmxvYWRf c3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkcpCiAJCWd1Y19mdy0+bG9hZF9zdGF0 dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOwogCi0JZ3VjX2ludGVycnVwdHNfcmVsZWFzZShk ZXZfcHJpdik7Ci0JaTkxNV9ndWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKLQlpOTE1 X2d1Y19zdWJtaXNzaW9uX2ZpbmkoZGV2X3ByaXYpOwotCWk5MTVfZ2d0dF9kaXNhYmxlX2d1Yyhk ZXZfcHJpdik7Ci0KIAkvKgogCSAqIFdlJ3ZlIGZhaWxlZCB0byBsb2FkIHRoZSBmaXJtd2FyZSA6 KAogCSAqCkBAIC01NDAsNiArNTQxLDEzIEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXJldHVybiByZXQ7CiB9CiAKK3ZvaWQgaW50ZWxf Z3VjX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCWdlbjlf ZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhkZXZfcHJpdik7CisJaTkxNV9ndWNfc3VibWlzc2lvbl9m aW5pKGRldl9wcml2KTsKKwlpOTE1X2dndHRfZGlzYWJsZV9ndWMoZGV2X3ByaXYpOworfQorCiB2 b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwK IAkJCSBzdHJ1Y3QgaW50ZWxfdWNfZncgKnVjX2Z3KQogewpAQCAtNzQ1LDEyICs3NTMsNiBAQCB2 b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlz dHJ1Y3QgaW50ZWxfdWNfZncgKmd1Y19mdyA9ICZkZXZfcHJpdi0+Z3VjLmZ3OwogCXN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAKLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7Ci0JZ3VjX2ludGVycnVwdHNfcmVsZWFzZShkZXZfcHJpdik7Ci0JaTkxNV9n dWNfc3VibWlzc2lvbl9kaXNhYmxlKGRldl9wcml2KTsKLQlpOTE1X2d1Y19zdWJtaXNzaW9uX2Zp bmkoZGV2X3ByaXYpOwotCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgp OwotCiAJb2JqID0gZmV0Y2hfYW5kX3plcm8oJmd1Y19mdy0+b2JqKTsKIAlpZiAob2JqKQogCQlp OTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ndWNfbG9nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9nLmMK aW5kZXggNWMwZjlhNC4uM2IxNjQ0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZ3VjX2xvZy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2cu YwpAQCAtNjYsNyArNjYsNiBAQCBzdGF0aWMgaW50IGd1Y19sb2dfY29udHJvbChzdHJ1Y3QgaW50 ZWxfZ3VjICpndWMsIHUzMiBjb250cm9sX3ZhbCkKIAlyZXR1cm4gaW50ZWxfZ3VjX3NlbmQoZ3Vj LCBhY3Rpb24sIEFSUkFZX1NJWkUoYWN0aW9uKSk7CiB9CiAKLQogLyoKICAqIFN1YiBidWZmZXIg c3dpdGNoIGNhbGxiYWNrLiBDYWxsZWQgd2hlbmV2ZXIgcmVsYXkgaGFzIHRvIHN3aXRjaCB0byBh IG5ldwogICogc3ViIGJ1ZmZlciwgcmVsYXkgc3RheXMgb24gdGhlIHNhbWUgc3ViIGJ1ZmZlciBp ZiAwIGlzIHJldHVybmVkLgpAQCAtMTM5LDQ1ICsxMzgsMTUgQEAgc3RhdGljIGludCByZW1vdmVf YnVmX2ZpbGVfY2FsbGJhY2soc3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCS5yZW1vdmVfYnVmX2Zp bGUgPSByZW1vdmVfYnVmX2ZpbGVfY2FsbGJhY2ssCiB9OwogCi1zdGF0aWMgdm9pZCBndWNfbG9n X3JlbW92ZV9yZWxheV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlyZWxheV9jbG9z ZShndWMtPmxvZy5yZWxheV9jaGFuKTsKLX0KLQotc3RhdGljIGludCBndWNfbG9nX2NyZWF0ZV9y ZWxheV9jaGFubmVsKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwotCXN0cnVjdCByY2hhbiAqZ3Vj X2xvZ19yZWxheV9jaGFuOwotCXNpemVfdCBuX3N1YmJ1ZnMsIHN1YmJ1Zl9zaXplOwotCi0JLyog S2VlcCB0aGUgc2l6ZSBvZiBzdWIgYnVmZmVycyBzYW1lIGFzIHNoYXJlZCBsb2cgYnVmZmVyICov Ci0Jc3ViYnVmX3NpemUgPSBndWMtPmxvZy52bWEtPm9iai0+YmFzZS5zaXplOwotCi0JLyogU3Rv cmUgdXAgdG8gOCBzbmFwc2hvdHMsIHdoaWNoIGlzIGxhcmdlIGVub3VnaCB0byBidWZmZXIgc3Vm ZmljaWVudAotCSAqIGJvb3QgdGltZSBsb2dzIGFuZCBwcm92aWRlcyBlbm91Z2ggbGVld2F5IHRv IFVzZXIsIGluIHRlcm1zIG9mCi0JICogbGF0ZW5jeSwgZm9yIGNvbnN1bWluZyB0aGUgbG9ncyBm cm9tIHJlbGF5LiBBbHNvIGRvZXNuJ3QgdGFrZQotCSAqIHVwIHRvbyBtdWNoIG1lbW9yeS4KLQkg Ki8KLQluX3N1YmJ1ZnMgPSA4OwotCi0JZ3VjX2xvZ19yZWxheV9jaGFuID0gcmVsYXlfb3BlbihO VUxMLCBOVUxMLCBzdWJidWZfc2l6ZSwKLQkJCQkJbl9zdWJidWZzLCAmcmVsYXlfY2FsbGJhY2tz LCBkZXZfcHJpdik7Ci0JaWYgKCFndWNfbG9nX3JlbGF5X2NoYW4pIHsKLQkJRFJNX0VSUk9SKCJD b3VsZG4ndCBjcmVhdGUgcmVsYXkgY2hhbiBmb3IgR3VDIGxvZ2dpbmdcbiIpOwotCQlyZXR1cm4g LUVOT01FTTsKLQl9Ci0KLQlHRU1fQlVHX09OKGd1Y19sb2dfcmVsYXlfY2hhbi0+c3ViYnVmX3Np emUgPCBzdWJidWZfc2l6ZSk7Ci0JZ3VjLT5sb2cucmVsYXlfY2hhbiA9IGd1Y19sb2dfcmVsYXlf Y2hhbjsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBndWNfbG9nX2NyZWF0ZV9yZWxheV9m aWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKK3N0YXRpYyBpbnQgZ3VjX2xvZ19yZWxheV9maWxl X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKIAlzdHJ1Y3QgZGVudHJ5ICpsb2dfZGly OwogCWludCByZXQ7CiAKKwlpZiAoaTkxNS5ndWNfbG9nX2xldmVsIDwgMCkKKwkJcmV0dXJuIDA7 CisKIAkvKiBGb3Igbm93IGNyZWF0ZSB0aGUgbG9nIGZpbGUgaW4gL3N5cy9rZXJuZWwvZGVidWcv ZHJpLzAgZGlyICovCiAJbG9nX2RpciA9IGRldl9wcml2LT5kcm0ucHJpbWFyeS0+ZGVidWdmc19y b290OwogCkBAIC0xOTgsNyArMTY3LDcgQEAgc3RhdGljIGludCBndWNfbG9nX2NyZWF0ZV9yZWxh eV9maWxlKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAl9CiAKIAlyZXQgPSByZWxheV9sYXRlX3Nl dHVwX2ZpbGVzKGd1Yy0+bG9nLnJlbGF5X2NoYW4sICJndWNfbG9nIiwgbG9nX2Rpcik7Ci0JaWYg KHJldCkgeworCWlmIChyZXQgPCAwICYmIHJldCAhPSAtRUVYSVNUKSB7CiAJCURSTV9FUlJPUigi Q291bGRuJ3QgYXNzb2NpYXRlIHJlbGF5IGNoYW4gd2l0aCBmaWxlICVkXG4iLCByZXQpOwogCQly ZXR1cm4gcmV0OwogCX0KQEAgLTM3MSwzMSArMzQwLDYgQEAgc3RhdGljIHZvaWQgZ3VjX3JlYWRf dXBkYXRlX2xvZ19idWZmZXIoc3RydWN0IGludGVsX2d1YyAqZ3VjKQogCX0KIH0KIAotc3RhdGlj IHZvaWQgZ3VjX2xvZ19jbGVhbnVwKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKLXsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBndWNfdG9faTkxNShndWMpOwotCi0JbG9ja2Rl cF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwotCi0JLyogRmlyc3Qg ZGlzYWJsZSB0aGUgZmx1c2ggaW50ZXJydXB0ICovCi0JZ2VuOV9kaXNhYmxlX2d1Y19pbnRlcnJ1 cHRzKGRldl9wcml2KTsKLQotCWlmIChndWMtPmxvZy5mbHVzaF93cSkKLQkJZGVzdHJveV93b3Jr cXVldWUoZ3VjLT5sb2cuZmx1c2hfd3EpOwotCi0JZ3VjLT5sb2cuZmx1c2hfd3EgPSBOVUxMOwot Ci0JaWYgKGd1Yy0+bG9nLnJlbGF5X2NoYW4pCi0JCWd1Y19sb2dfcmVtb3ZlX3JlbGF5X2ZpbGUo Z3VjKTsKLQotCWd1Yy0+bG9nLnJlbGF5X2NoYW4gPSBOVUxMOwotCi0JaWYgKGd1Yy0+bG9nLmJ1 Zl9hZGRyKQotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1Yy0+bG9nLnZtYS0+b2JqKTsK LQotCWd1Yy0+bG9nLmJ1Zl9hZGRyID0gTlVMTDsKLX0KLQogc3RhdGljIHZvaWQgY2FwdHVyZV9s b2dzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogewogCXN0cnVjdCBpbnRlbF9ndWMg Kmd1YyA9CkBAIC00MDQsMTIwICszNDgsMTA1IEBAIHN0YXRpYyB2b2lkIGNhcHR1cmVfbG9nc193 b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlndWNfbG9nX2NhcHR1cmVfbG9ncyhndWMp OwogfQogCitzdGF0aWMgYm9vbCBndWNfbG9nX2hhc19leHRyYXMoc3RydWN0IGludGVsX2d1YyAq Z3VjKQoreworCXJldHVybiBndWMtPmxvZy5idWZfYWRkciAhPSBOVUxMOworfQorCiBzdGF0aWMg aW50IGd1Y19sb2dfY3JlYXRlX2V4dHJhcyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMpCiB7CiAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZ3VjX3RvX2k5MTUoZ3VjKTsKIAl2b2lk ICp2YWRkcjsKLQlpbnQgcmV0OworCXN0cnVjdCByY2hhbiAqZ3VjX2xvZ19yZWxheV9jaGFuOwor CXNpemVfdCBuX3N1YmJ1ZnMsIHN1YmJ1Zl9zaXplOworCWludCByZXQgPSAwOwogCiAJbG9ja2Rl cF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCi0JLyogTm90aGlu ZyB0byBkbyAqLwotCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQotCQlyZXR1cm4gMDsKLQot CWlmICghZ3VjLT5sb2cuYnVmX2FkZHIpIHsKLQkJLyogQ3JlYXRlIGEgV0MgKFVuY2FjaGVkIGZv ciByZWFkKSB2bWFsbG9jIG1hcHBpbmcgb2YgbG9nCi0JCSAqIGJ1ZmZlciBwYWdlcywgc28gdGhh dCB3ZSBjYW4gZGlyZWN0bHkgZ2V0IHRoZSBkYXRhCi0JCSAqICh1cC10by1kYXRlKSBmcm9tIG1l bW9yeS4KLQkJICovCi0JCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoZ3VjLT5sb2cu dm1hLT5vYmosIEk5MTVfTUFQX1dDKTsKLQkJaWYgKElTX0VSUih2YWRkcikpIHsKLQkJCXJldCA9 IFBUUl9FUlIodmFkZHIpOwotCQkJRFJNX0VSUk9SKCJDb3VsZG4ndCBtYXAgbG9nIGJ1ZmZlciBw YWdlcyAlZFxuIiwgcmV0KTsKLQkJCXJldHVybiByZXQ7Ci0JCX0KLQotCQlndWMtPmxvZy5idWZf YWRkciA9IHZhZGRyOwotCX0KKwlHRU1fQlVHX09OKGd1Y19sb2dfaGFzX2V4dHJhcyhndWMpKTsK IAotCWlmICghZ3VjLT5sb2cucmVsYXlfY2hhbikgewotCQkvKiBDcmVhdGUgYSByZWxheSBjaGFu bmVsLCBzbyB0aGF0IHdlIGhhdmUgYnVmZmVycyBmb3Igc3RvcmluZwotCQkgKiB0aGUgR3VDIGZp cm13YXJlIGxvZ3MsIHRoZSBjaGFubmVsIHdpbGwgYmUgbGlua2VkIHdpdGggYSBmaWxlCi0JCSAq IGxhdGVyIG9uIHdoZW4gZGVidWdmcyBpcyByZWdpc3RlcmVkLgotCQkgKi8KLQkJcmV0ID0gZ3Vj X2xvZ19jcmVhdGVfcmVsYXlfY2hhbm5lbChndWMpOwotCQlpZiAocmV0KQotCQkJcmV0dXJuIHJl dDsKKwkvKiBDcmVhdGUgYSBXQyAoVW5jYWNoZWQgZm9yIHJlYWQpIHZtYWxsb2MgbWFwcGluZyBv ZiBsb2cKKwkgKiBidWZmZXIgcGFnZXMsIHNvIHRoYXQgd2UgY2FuIGRpcmVjdGx5IGdldCB0aGUg ZGF0YQorCSAqICh1cC10by1kYXRlKSBmcm9tIG1lbW9yeS4KKwkgKi8KKwl2YWRkciA9IGk5MTVf Z2VtX29iamVjdF9waW5fbWFwKGd1Yy0+bG9nLnZtYS0+b2JqLCBJOTE1X01BUF9XQyk7CisJaWYg KElTX0VSUih2YWRkcikpIHsKKwkJRFJNX0VSUk9SKCJDb3VsZG4ndCBtYXAgbG9nIGJ1ZmZlciBw YWdlcyAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIFBUUl9FUlIodmFkZHIpOwogCX0KIAotCWlmICgh Z3VjLT5sb2cuZmx1c2hfd3EpIHsKLQkJSU5JVF9XT1JLKCZndWMtPmxvZy5mbHVzaF93b3JrLCBj YXB0dXJlX2xvZ3Nfd29yayk7Ci0KLQkJIC8qCi0JCSAqIEd1QyBsb2cgYnVmZmVyIGZsdXNoIHdv cmsgaXRlbSBoYXMgdG8gZG8gcmVnaXN0ZXIgYWNjZXNzIHRvCi0JCSAqIHNlbmQgdGhlIGFjayB0 byBHdUMgYW5kIHRoaXMgd29yayBpdGVtLCBpZiBub3Qgc3luY2VkIGJlZm9yZQotCQkgKiBzdXNw ZW5kLCBjYW4gcG90ZW50aWFsbHkgZ2V0IGV4ZWN1dGVkIGFmdGVyIHRoZSBHRlggZGV2aWNlIGlz Ci0JCSAqIHN1c3BlbmRlZC4KLQkJICogQnkgbWFya2luZyB0aGUgV1EgYXMgZnJlZXphYmxlLCB3 ZSBkb24ndCBoYXZlIHRvIGJvdGhlciBhYm91dAotCQkgKiBmbHVzaGluZyBvZiB0aGlzIHdvcmsg aXRlbSBmcm9tIHRoZSBzdXNwZW5kIGhvb2tzLCB0aGUgcGVuZGluZwotCQkgKiB3b3JrIGl0ZW0g aWYgYW55IHdpbGwgYmUgZWl0aGVyIGV4ZWN1dGVkIGJlZm9yZSB0aGUgc3VzcGVuZAotCQkgKiBv ciBzY2hlZHVsZWQgbGF0ZXIgb24gcmVzdW1lLiBUaGlzIHdheSB0aGUgaGFuZGxpbmcgb2Ygd29y awotCQkgKiBpdGVtIGNhbiBiZSBrZXB0IHNhbWUgYmV0d2VlbiBzeXN0ZW0gc3VzcGVuZCAmIHJw bSBzdXNwZW5kLgotCQkgKi8KLQkJZ3VjLT5sb2cuZmx1c2hfd3EgPSBhbGxvY19vcmRlcmVkX3dv cmtxdWV1ZSgiaTkxNS1ndWNfbG9nIiwKLQkJCQkJCQkgICAgV1FfSElHSFBSSSB8IFdRX0ZSRUVa QUJMRSk7Ci0JCWlmIChndWMtPmxvZy5mbHVzaF93cSA9PSBOVUxMKSB7Ci0JCQlEUk1fRVJST1Io IkNvdWxkbid0IGFsbG9jYXRlIHRoZSB3cSBmb3IgR3VDIGxvZ2dpbmdcbiIpOwotCQkJcmV0dXJu IC1FTk9NRU07Ci0JCX0KLQl9CisJZ3VjLT5sb2cuYnVmX2FkZHIgPSB2YWRkcjsKIAotCXJldHVy biAwOwotfQorCSAvKiBLZWVwIHRoZSBzaXplIG9mIHN1YiBidWZmZXJzIHNhbWUgYXMgc2hhcmVk IGxvZyBidWZmZXIgKi8KKwlzdWJidWZfc2l6ZSA9IGd1Yy0+bG9nLnZtYS0+b2JqLT5iYXNlLnNp emU7CiAKLXZvaWQgaW50ZWxfZ3VjX2xvZ19jcmVhdGUoc3RydWN0IGludGVsX2d1YyAqZ3VjKQot ewotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXVuc2lnbmVkIGxvbmcgb2Zmc2V0OwotCXVpbnQz Ml90IHNpemUsIGZsYWdzOworCS8qIFN0b3JlIHVwIHRvIDggc25hcHNob3RzLCB3aGljaCBpcyBs YXJnZSBlbm91Z2ggdG8gYnVmZmVyIHN1ZmZpY2llbnQKKwkgKiBib290IHRpbWUgbG9ncyBhbmQg cHJvdmlkZXMgZW5vdWdoIGxlZXdheSB0byBVc2VyLCBpbiB0ZXJtcyBvZgorCSAqIGxhdGVuY3ks IGZvciBjb25zdW1pbmcgdGhlIGxvZ3MgZnJvbSByZWxheS4gQWxzbyBkb2Vzbid0IHRha2UKKwkg KiB1cCB0b28gbXVjaCBtZW1vcnkuCisJICovCisJbl9zdWJidWZzID0gODsKIAotCWlmIChpOTE1 Lmd1Y19sb2dfbGV2ZWwgPiBHVUNfTE9HX1ZFUkJPU0lUWV9NQVgpCi0JCWk5MTUuZ3VjX2xvZ19s ZXZlbCA9IEdVQ19MT0dfVkVSQk9TSVRZX01BWDsKKwkvKiBDcmVhdGUgYSByZWxheSBjaGFubmVs LCBzbyB0aGF0IHdlIGhhdmUgYnVmZmVycyBmb3Igc3RvcmluZworCSAqIHRoZSBHdUMgZmlybXdh cmUgbG9ncywgdGhlIGNoYW5uZWwgd2lsbCBiZSBsaW5rZWQgd2l0aCBhIGZpbGUKKwkgKiBsYXRl ciBvbiB3aGVuIGRlYnVnZnMgaXMgcmVnaXN0ZXJlZC4KKwkgKi8KKwlndWNfbG9nX3JlbGF5X2No YW4gPSByZWxheV9vcGVuKE5VTEwsIE5VTEwsIHN1YmJ1Zl9zaXplLAorCQkJCQluX3N1YmJ1ZnMs ICZyZWxheV9jYWxsYmFja3MsIGRldl9wcml2KTsKKwlpZiAoIWd1Y19sb2dfcmVsYXlfY2hhbikg eworCQlEUk1fRVJST1IoIkNvdWxkbid0IGNyZWF0ZSByZWxheSBjaGFuIGZvciBHdUMgbG9nZ2lu Z1xuIik7CiAKLQkvKiBUaGUgZmlyc3QgcGFnZSBpcyB0byBzYXZlIGxvZyBidWZmZXIgc3RhdGUu IEFsbG9jYXRlIG9uZQotCSAqIGV4dHJhIHBhZ2UgZm9yIG90aGVycyBpbiBjYXNlIGZvciBvdmVy bGFwICovCi0Jc2l6ZSA9ICgxICsgR1VDX0xPR19EUENfUEFHRVMgKyAxICsKLQkJR1VDX0xPR19J U1JfUEFHRVMgKyAxICsKLQkJR1VDX0xPR19DUkFTSF9QQUdFUyArIDEpIDw8IFBBR0VfU0hJRlQ7 CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJyX3ZhZGRyOworCX0KIAotCXZtYSA9IGd1Yy0+ bG9nLnZtYTsKLQlpZiAoIXZtYSkgewotCQkvKiBXZSByZXF1aXJlIFNTRSA0LjEgZm9yIGZhc3Qg cmVhZHMgZnJvbSB0aGUgR3VDIGxvZyBidWZmZXIgYW5kCi0JCSAqIGl0IHNob3VsZCBiZSBwcmVz ZW50IG9uIHRoZSBjaGlwc2V0cyBzdXBwb3J0aW5nIEd1QyBiYXNlZAotCQkgKiBzdWJtaXNzc2lv bnMuCi0JCSAqLwotCQlpZiAoV0FSTl9PTighaTkxNV9oYXNfbWVtY3B5X2Zyb21fd2MoKSkpIHsK LQkJCS8qIGxvZ2dpbmcgd2lsbCBub3QgYmUgZW5hYmxlZCAqLwotCQkJaTkxNS5ndWNfbG9nX2xl dmVsID0gLTE7Ci0JCQlyZXR1cm47Ci0JCX0KKwlHRU1fQlVHX09OKGd1Y19sb2dfcmVsYXlfY2hh bi0+c3ViYnVmX3NpemUgPCBzdWJidWZfc2l6ZSk7CisJZ3VjLT5sb2cucmVsYXlfY2hhbiA9IGd1 Y19sb2dfcmVsYXlfY2hhbjsKIAotCQl2bWEgPSBpbnRlbF9ndWNfYWxsb2NhdGVfdm1hKGd1Yywg c2l6ZSk7Ci0JCWlmIChJU19FUlIodm1hKSkgewotCQkJLyogbG9nZ2luZyB3aWxsIGJlIG9mZiAq LwotCQkJaTkxNS5ndWNfbG9nX2xldmVsID0gLTE7Ci0JCQlyZXR1cm47Ci0JCX0KKwlJTklUX1dP UksoJmd1Yy0+bG9nLmZsdXNoX3dvcmssIGNhcHR1cmVfbG9nc193b3JrKTsKKworCS8qCisJICog R3VDIGxvZyBidWZmZXIgZmx1c2ggd29yayBpdGVtIGhhcyB0byBkbyByZWdpc3RlciBhY2Nlc3Mg dG8KKwkgKiBzZW5kIHRoZSBhY2sgdG8gR3VDIGFuZCB0aGlzIHdvcmsgaXRlbSwgaWYgbm90IHN5 bmNlZCBiZWZvcmUKKwkgKiBzdXNwZW5kLCBjYW4gcG90ZW50aWFsbHkgZ2V0IGV4ZWN1dGVkIGFm dGVyIHRoZSBHRlggZGV2aWNlIGlzCisJICogc3VzcGVuZGVkLgorCSAqIEJ5IG1hcmtpbmcgdGhl IFdRIGFzIGZyZWV6YWJsZSwgd2UgZG9uJ3QgaGF2ZSB0byBib3RoZXIgYWJvdXQKKwkgKiBmbHVz aGluZyBvZiB0aGlzIHdvcmsgaXRlbSBmcm9tIHRoZSBzdXNwZW5kIGhvb2tzLCB0aGUgcGVuZGlu ZworCSAqIHdvcmsgaXRlbSBpZiBhbnkgd2lsbCBiZSBlaXRoZXIgZXhlY3V0ZWQgYmVmb3JlIHRo ZSBzdXNwZW5kCisJICogb3Igc2NoZWR1bGVkIGxhdGVyIG9uIHJlc3VtZS4gVGhpcyB3YXkgdGhl IGhhbmRsaW5nIG9mIHdvcmsKKwkgKiBpdGVtIGNhbiBiZSBrZXB0IHNhbWUgYmV0d2VlbiBzeXN0 ZW0gc3VzcGVuZCAmIHJwbSBzdXNwZW5kLgorCSAqLworCWd1Yy0+bG9nLmZsdXNoX3dxID0gYWxs b2Nfb3JkZXJlZF93b3JrcXVldWUoImk5MTUtZ3VjX2xvZyIsCisJCQkJCQkgICAgV1FfSElHSFBS SSB8IFdRX0ZSRUVaQUJMRSk7CisJaWYgKCFndWMtPmxvZy5mbHVzaF93cSkgeworCQlEUk1fRVJS T1IoIkNvdWxkbid0IGFsbG9jYXRlIHRoZSB3cSBmb3IgR3VDIGxvZ2dpbmdcbiIpOworCQlyZXQg PSAtRU5PTUVNOworCQlnb3RvIGVycl9yZWxheWNoYW47CisJfQogCi0JCWd1Yy0+bG9nLnZtYSA9 IHZtYTsKKwlyZXR1cm4gMDsKIAotCQlpZiAoZ3VjX2xvZ19jcmVhdGVfZXh0cmFzKGd1YykpIHsK LQkJCWd1Y19sb2dfY2xlYW51cChndWMpOwotCQkJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2Uo Jmd1Yy0+bG9nLnZtYSk7Ci0JCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKLQkJCXJldHVybjsK LQkJfQotCX0KK2Vycl9yZWxheWNoYW46CisJcmVsYXlfY2xvc2UoZ3VjLT5sb2cucmVsYXlfY2hh bik7CitlcnJfdmFkZHI6CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChndWMtPmxvZy52bWEt Pm9iaik7CisJZ3VjLT5sb2cuYnVmX2FkZHIgPSBOVUxMOworCXJldHVybiByZXQ7Cit9CiAKLQkv KiBlYWNoIGFsbG9jYXRlZCB1bml0IGlzIGEgcGFnZSAqLwotCWZsYWdzID0gR1VDX0xPR19WQUxJ RCB8IEdVQ19MT0dfTk9USUZZX09OX0hBTEZfRlVMTCB8Ci0JCShHVUNfTE9HX0RQQ19QQUdFUyA8 PCBHVUNfTE9HX0RQQ19TSElGVCkgfAotCQkoR1VDX0xPR19JU1JfUEFHRVMgPDwgR1VDX0xPR19J U1JfU0hJRlQpIHwKLQkJKEdVQ19MT0dfQ1JBU0hfUEFHRVMgPDwgR1VDX0xPR19DUkFTSF9TSElG VCk7CitzdGF0aWMgdm9pZCBndWNfbG9nX2Rlc3Ryb3lfZXh0cmFzKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKK3sKKwkvKgorCSAqIEl0J3MgcG9zc2libGUgdGhhdCBleHRyYXMgd2VyZSBuZXZlciBh bGxvY2F0ZWQgYmVjYXVzZSBndWNfbG9nX2xldmVsCisJICogd2FzIDwgMCBhdCB0aGUgdGltZQor CSAqKi8KKwlpZiAoIWd1Y19sb2dfaGFzX2V4dHJhcyhndWMpKQorCQlyZXR1cm47CiAKLQlvZmZz ZXQgPSBndWNfZ2d0dF9vZmZzZXQodm1hKSA+PiBQQUdFX1NISUZUOyAvKiBpbiBwYWdlcyAqLwot CWd1Yy0+bG9nLmZsYWdzID0gKG9mZnNldCA8PCBHVUNfTE9HX0JVRl9BRERSX1NISUZUKSB8IGZs YWdzOworCWRlc3Ryb3lfd29ya3F1ZXVlKGd1Yy0+bG9nLmZsdXNoX3dxKTsKKwlyZWxheV9jbG9z ZShndWMtPmxvZy5yZWxheV9jaGFuKTsKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGd1Yy0+ bG9nLnZtYS0+b2JqKTsKKwlndWMtPmxvZy5idWZfYWRkciA9IE5VTEw7CiB9CiAKIHN0YXRpYyBp bnQgZ3VjX2xvZ19sYXRlX3NldHVwKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKQEAgLTUyNywyNCAr NDU2LDI1IEBAIHN0YXRpYyBpbnQgZ3VjX2xvZ19sYXRlX3NldHVwKHN0cnVjdCBpbnRlbF9ndWMg Kmd1YykKIAogCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKIAotCWlmIChpOTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQotCQlyZXR1cm4gLUVJTlZBTDsKKwlp ZiAoIWd1Y19sb2dfaGFzX2V4dHJhcyhndWMpKSB7CisJCS8qIElmIGxvZ19sZXZlbCB3YXMgc2V0 IGFzIC0xIGF0IGJvb3QgdGltZSwgdGhlbiBzZXR1cCBuZWVkZWQgdG8KKwkJICogaGFuZGxlIGxv ZyBidWZmZXIgZmx1c2ggaW50ZXJydXB0cyB3b3VsZCBub3QgaGF2ZSBiZWVuIGRvbmUgeWV0LAor CQkgKiBzbyBkbyB0aGF0IG5vdy4KKwkJICovCisJCXJldCA9IGd1Y19sb2dfY3JlYXRlX2V4dHJh cyhndWMpOworCQlpZiAocmV0KQorCQkJZ290byBlcnI7CisJfQogCi0JLyogSWYgbG9nX2xldmVs IHdhcyBzZXQgYXMgLTEgYXQgYm9vdCB0aW1lLCB0aGVuIHNldHVwIG5lZWRlZCB0bwotCSAqIGhh bmRsZSBsb2cgYnVmZmVyIGZsdXNoIGludGVycnVwdHMgd291bGQgbm90IGhhdmUgYmVlbiBkb25l IHlldCwKLQkgKiBzbyBkbyB0aGF0IG5vdy4KLQkgKi8KLQlyZXQgPSBndWNfbG9nX2NyZWF0ZV9l eHRyYXMoZ3VjKTsKKwlyZXQgPSBndWNfbG9nX3JlbGF5X2ZpbGVfY3JlYXRlKGd1Yyk7CiAJaWYg KHJldCkKLQkJZ290byBlcnI7Ci0KLQlyZXQgPSBndWNfbG9nX2NyZWF0ZV9yZWxheV9maWxlKGd1 Yyk7Ci0JaWYgKHJldCkKLQkJZ290byBlcnI7CisJCWdvdG8gZXJyX2V4dHJhczsKIAogCXJldHVy biAwOworCitlcnJfZXh0cmFzOgorCWd1Y19sb2dfZGVzdHJveV9leHRyYXMoZ3VjKTsKIGVycjoK LQlndWNfbG9nX2NsZWFudXAoZ3VjKTsKIAkvKiBsb2dnaW5nIHdpbGwgcmVtYWluIG9mZiAqLwog CWk5MTUuZ3VjX2xvZ19sZXZlbCA9IC0xOwogCXJldHVybiByZXQ7CkBAIC01ODYsNiArNTE2LDcy IEBAIHN0YXRpYyB2b2lkIGd1Y19mbHVzaF9sb2dzKHN0cnVjdCBpbnRlbF9ndWMgKmd1YykKIAln dWNfbG9nX2NhcHR1cmVfbG9ncyhndWMpOwogfQogCitpbnQgaW50ZWxfZ3VjX2xvZ19jcmVhdGUo c3RydWN0IGludGVsX2d1YyAqZ3VjKQoreworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXVuc2ln bmVkIGxvbmcgb2Zmc2V0OworCXVpbnQzMl90IHNpemUsIGZsYWdzOworCWludCByZXQ7CisKKwlH RU1fQlVHX09OKGd1Yy0+bG9nLnZtYSk7CisKKwlpZiAoaTkxNS5ndWNfbG9nX2xldmVsID4gR1VD X0xPR19WRVJCT1NJVFlfTUFYKQorCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSBHVUNfTE9HX1ZFUkJP U0lUWV9NQVg7CisKKwkvKiBUaGUgZmlyc3QgcGFnZSBpcyB0byBzYXZlIGxvZyBidWZmZXIgc3Rh dGUuIEFsbG9jYXRlIG9uZQorCSAqIGV4dHJhIHBhZ2UgZm9yIG90aGVycyBpbiBjYXNlIGZvciBv dmVybGFwICovCisJc2l6ZSA9ICgxICsgR1VDX0xPR19EUENfUEFHRVMgKyAxICsKKwkJR1VDX0xP R19JU1JfUEFHRVMgKyAxICsKKwkJR1VDX0xPR19DUkFTSF9QQUdFUyArIDEpIDw8IFBBR0VfU0hJ RlQ7CisKKwkvKiBXZSByZXF1aXJlIFNTRSA0LjEgZm9yIGZhc3QgcmVhZHMgZnJvbSB0aGUgR3VD IGxvZyBidWZmZXIgYW5kCisJICogaXQgc2hvdWxkIGJlIHByZXNlbnQgb24gdGhlIGNoaXBzZXRz IHN1cHBvcnRpbmcgR3VDIGJhc2VkCisJICogc3VibWlzc3Npb25zLgorCSAqLworCWlmIChXQVJO X09OKCFpOTE1X2hhc19tZW1jcHlfZnJvbV93YygpKSkgeworCQlyZXQgPSAtRUlOVkFMOworCQln b3RvIGVycjsKKwl9CisKKwl2bWEgPSBpbnRlbF9ndWNfYWxsb2NhdGVfdm1hKGd1Yywgc2l6ZSk7 CisJaWYgKElTX0VSUih2bWEpKSB7CisJCXJldCA9IFBUUl9FUlIodm1hKTsKKwkJZ290byBlcnI7 CisJfQorCisJZ3VjLT5sb2cudm1hID0gdm1hOworCisJaWYgKGk5MTUuZ3VjX2xvZ19sZXZlbCA+ PSAwKSB7CisJCXJldCA9IGd1Y19sb2dfY3JlYXRlX2V4dHJhcyhndWMpOworCQlpZiAocmV0IDwg MCkKKwkJCWdvdG8gZXJyX3ZtYTsKKwl9CisKKwkvKiBlYWNoIGFsbG9jYXRlZCB1bml0IGlzIGEg cGFnZSAqLworCWZsYWdzID0gR1VDX0xPR19WQUxJRCB8IEdVQ19MT0dfTk9USUZZX09OX0hBTEZf RlVMTCB8CisJCShHVUNfTE9HX0RQQ19QQUdFUyA8PCBHVUNfTE9HX0RQQ19TSElGVCkgfAorCQko R1VDX0xPR19JU1JfUEFHRVMgPDwgR1VDX0xPR19JU1JfU0hJRlQpIHwKKwkJKEdVQ19MT0dfQ1JB U0hfUEFHRVMgPDwgR1VDX0xPR19DUkFTSF9TSElGVCk7CisKKwlvZmZzZXQgPSBndWNfZ2d0dF9v ZmZzZXQodm1hKSA+PiBQQUdFX1NISUZUOyAvKiBpbiBwYWdlcyAqLworCWd1Yy0+bG9nLmZsYWdz ID0gKG9mZnNldCA8PCBHVUNfTE9HX0JVRl9BRERSX1NISUZUKSB8IGZsYWdzOworCisJcmV0dXJu IDA7CisKK2Vycl92bWE6CisJaTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+bG9nLnZt YSk7CitlcnI6CisJLyogbG9nZ2luZyB3aWxsIGJlIG9mZiAqLworCWk5MTUuZ3VjX2xvZ19sZXZl bCA9IC0xOworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgaW50ZWxfZ3VjX2xvZ19kZXN0cm95KHN0 cnVjdCBpbnRlbF9ndWMgKmd1YykKK3sKKwlndWNfbG9nX2Rlc3Ryb3lfZXh0cmFzKGd1Yyk7CisJ aTkxNV92bWFfdW5waW5fYW5kX3JlbGVhc2UoJmd1Yy0+bG9nLnZtYSk7Cit9CisKIGludCBpOTE1 X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBj b250cm9sX3ZhbCkKIHsKIAlzdHJ1Y3QgaW50ZWxfZ3VjICpndWMgPSAmZGV2X3ByaXYtPmd1YzsK QEAgLTYwOSwxNyArNjA1LDIxIEBAIGludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCkKIAkJcmV0dXJuIHJldDsK IAl9CiAKLQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSBsb2dfcGFyYW0udmVyYm9zaXR5OworCWlmIChs b2dfcGFyYW0ubG9nZ2luZ19lbmFibGVkKSB7CisJCWk5MTUuZ3VjX2xvZ19sZXZlbCA9IGxvZ19w YXJhbS52ZXJib3NpdHk7CiAKLQkvKiBJZiBsb2dfbGV2ZWwgd2FzIHNldCBhcyAtMSBhdCBib290 IHRpbWUsIHRoZW4gdGhlIHJlbGF5IGNoYW5uZWwgZmlsZQotCSAqIHdvdWxkbid0IGhhdmUgYmVl biBjcmVhdGVkIGJ5IG5vdyBhbmQgaW50ZXJydXB0cyBhbHNvIHdvdWxkIG5vdCBoYXZlCi0JICog YmVlbiBlbmFibGVkLgotCSAqLwotCWlmICghZGV2X3ByaXYtPmd1Yy5sb2cucmVsYXlfY2hhbikg eworCQkvKiBJZiBsb2dfbGV2ZWwgd2FzIHNldCBhcyAtMSBhdCBib290IHRpbWUsIHRoZW4gdGhl IHJlbGF5IGNoYW5uZWwgZmlsZQorCQkgKiB3b3VsZG4ndCBoYXZlIGJlZW4gY3JlYXRlZCBieSBu b3cgYW5kIGludGVycnVwdHMgYWxzbyB3b3VsZCBub3QgaGF2ZQorCQkgKiBiZWVuIGVuYWJsZWQu IFRyeSBhZ2FpbiBub3csIGp1c3QgaW4gY2FzZS4KKwkJICovCiAJCXJldCA9IGd1Y19sb2dfbGF0 ZV9zZXR1cChndWMpOwotCQlpZiAoIXJldCkKLQkJCWdlbjlfZW5hYmxlX2d1Y19pbnRlcnJ1cHRz KGRldl9wcml2KTsKLQl9IGVsc2UgaWYgKCFsb2dfcGFyYW0ubG9nZ2luZ19lbmFibGVkKSB7CisJ CWlmIChyZXQgPCAwKSB7CisJCQlEUk1fREVCVUdfRFJJVkVSKCJHdUMgbG9nIGxhdGUgc2V0dXAg ZmFpbGVkICVkXG4iLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCWdlbjlfZW5hYmxl X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKKwl9IGVsc2UgewogCQkvKiBPbmNlIGxvZ2dpbmcg aXMgZGlzYWJsZWQsIEd1QyB3b24ndCBnZW5lcmF0ZSBsb2dzICYgc2VuZCBhbgogCQkgKiBpbnRl cnJ1cHQuIEJ1dCB0aGVyZSBjb3VsZCBiZSBzb21lIGRhdGEgaW4gdGhlIGxvZyBidWZmZXIKIAkJ ICogd2hpY2ggaXMgeWV0IHRvIGJlIGNhcHR1cmVkLiBTbyByZXF1ZXN0IEd1QyB0byB1cGRhdGUg dGhlIGxvZwpAQCAtNjI5LDkgKzYyOSw2IEBAIGludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCkKIAogCQkvKiBB cyBsb2dnaW5nIGlzIGRpc2FibGVkLCB1cGRhdGUgbG9nIGxldmVsIHRvIHJlZmxlY3QgdGhhdCAq LwogCQlpOTE1Lmd1Y19sb2dfbGV2ZWwgPSAtMTsKLQl9IGVsc2UgewotCQkvKiBJbiBjYXNlIGlu dGVycnVwdHMgd2VyZSBkaXNhYmxlZCwgZW5hYmxlIHRoZW0gbm93ICovCi0JCWdlbjlfZW5hYmxl X2d1Y19pbnRlcnJ1cHRzKGRldl9wcml2KTsKIAl9CiAKIAlyZXR1cm4gcmV0OwpAQCAtNjM5LDcg KzYzNiw3IEBAIGludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHU2NCBjb250cm9sX3ZhbCkKIAogdm9pZCBpOTE1X2d1Y19sb2dfcmVnaXN0 ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlmICghaTkxNS5lbmFi bGVfZ3VjX3N1Ym1pc3Npb24pCisJaWYgKCFpOTE1LmVuYWJsZV9ndWNfc3VibWlzc2lvbiB8fCBp OTE1Lmd1Y19sb2dfbGV2ZWwgPCAwKQogCQlyZXR1cm47CiAKIAltdXRleF9sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7CkBAIC02NTMsNiArNjUwLDcgQEAgdm9pZCBpOTE1X2d1Y19s b2dfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVy bjsKIAogCW11dGV4X2xvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKLQlndWNfbG9n X2NsZWFudXAoJmRldl9wcml2LT5ndWMpOworCWdlbjlfZGlzYWJsZV9ndWNfaW50ZXJydXB0cyhk ZXZfcHJpdik7CisJZ3VjX2xvZ19kZXN0cm95X2V4dHJhcygmZGV2X3ByaXYtPmd1Yyk7CiAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CiB9CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWMuaAppbmRleCAwZDEyYzhlLi4xYTc1ZWYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91Yy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgK QEAgLTE5MCw4ICsxOTAsOSBAQCBzdHJ1Y3QgaW50ZWxfaHVjIHsKIAogLyogaW50ZWxfZ3VjX2xv YWRlci5jICovCiBleHRlcm4gdm9pZCBpbnRlbF9ndWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwotZXh0ZXJuIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CitleHRlcm4gaW50IGludGVsX2d1Y19zZXR1 cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworZXh0ZXJuIHZvaWQgaW50ZWxf Z3VjX2NsZWFudXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBj b25zdCBjaGFyICppbnRlbF91Y19md19zdGF0dXNfcmVwcihlbnVtIGludGVsX3VjX2Z3X3N0YXR1 cyBzdGF0dXMpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIGludCBpbnRlbF9ndWNfcmVzdW1lKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CkBAIC0yMDksMTAgKzIxMCwxMSBAQCB2b2lkIGlu dGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0cnVj dCBpOTE1X3ZtYSAqaW50ZWxfZ3VjX2FsbG9jYXRlX3ZtYShzdHJ1Y3QgaW50ZWxfZ3VjICpndWMs IHUzMiBzaXplKTsKIAogLyogaW50ZWxfZ3VjX2xvZy5jICovCi12b2lkIGludGVsX2d1Y19sb2df Y3JlYXRlKHN0cnVjdCBpbnRlbF9ndWMgKmd1Yyk7CitpbnQgaW50ZWxfZ3VjX2xvZ19jcmVhdGUo c3RydWN0IGludGVsX2d1YyAqZ3VjKTsKK3ZvaWQgaW50ZWxfZ3VjX2xvZ19kZXN0cm95KHN0cnVj dCBpbnRlbF9ndWMgKmd1Yyk7CitpbnQgaTkxNV9ndWNfbG9nX2NvbnRyb2woc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1NjQgY29udHJvbF92YWwpOwogdm9pZCBpOTE1X2d1Y19s b2dfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaTkx NV9ndWNfbG9nX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK LWludCBpOTE1X2d1Y19sb2dfY29udHJvbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHU2NCBjb250cm9sX3ZhbCk7CiAKIHN0YXRpYyBpbmxpbmUgdTMyIGd1Y19nZ3R0X29mZnNl dChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIHsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK