From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rex Zhu Subject: [PATCH 2/2] drm/amd/pp: Use atombios interface directly in powerplay Date: Mon, 26 Mar 2018 19:56:02 +0800 Message-ID: <1522065362-25568-2-git-send-email-Rex.Zhu@amd.com> References: <1522065362-25568-1-git-send-email-Rex.Zhu@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1522065362-25568-1-git-send-email-Rex.Zhu-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Rex Zhu SW4gb3JkZXIgdG8gcmVtb3ZlIHRoZSBjZ3Mgd3JhcHBlciBmdW5jdGlvbnMgZm9yIGF0b21iaW9z IGFwaS4KClNpZ25lZC1vZmYtYnk6IFJleCBaaHUgPFJleC5aaHVAYW1kLmNvbT4KLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9wcGF0b21jdHJsLmMgICB8IDE0NSArKysr KysrKysrKy0tLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3Bw YXRvbWN0cmwuaCAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci9wcGF0b21md2N0cmwuYyB8ICA4OCArKysrKysrLS0tLS0tCiAuLi4vYW1kL3Bvd2VycGxheS9o d21nci9wcm9jZXNzX3BwdGFibGVzX3YxXzAuYyAgICB8ICAgMiArLQogLi4uL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9od21nci9wcm9jZXNzcHB0YWJsZXMuYyAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYyAgIHwgICAzICstCiBkcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU4X2h3bWdyLmMgICB8ICAgMyArLQogZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211X2hlbHBlci5jICAgfCAgMTYgKysr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXVfaGVscGVyLmggICB8ICAg MyArCiAuLi4vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTBfcHJvY2Vzc3BwdGFibGVzLmMgICB8 ICAgMiArLQogLi4uL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEyX3Byb2Nlc3NwcHRhYmxlcy5j ICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9maWppX3Nt dW1nci5jIHwgICAyICstCiAxMiBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgMTIz IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL3BwYXRvbWN0cmwuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdy L3BwYXRvbWN0cmwuYwppbmRleCBjNmZlYmJmLi45NzFmYjVkIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9wcGF0b21jdHJsLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5jCkBAIC0yMyw3ICsyMyw3IEBA CiAjaW5jbHVkZSAicHBfZGVidWcuaCIKICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KICNpbmNs dWRlIDxsaW51eC9zbGFiLmg+Ci0KKyNpbmNsdWRlICJhdG9tLmgiCiAjaW5jbHVkZSAicHBhdG9t Y3RybC5oIgogI2luY2x1ZGUgImF0b21iaW9zLmgiCiAjaW5jbHVkZSAiY2dzX2NvbW1vbi5oIgpA QCAtMTI4LDcgKzEyOCw2IEBAIHN0YXRpYyBpbnQgYXRvbWN0cmxfc2V0X21jX3JlZ19hZGRyZXNz X3RhYmxlKAogCXJldHVybiAwOwogfQogCi0KIGludCBhdG9tY3RybF9pbml0aWFsaXplX21jX3Jl Z190YWJsZSgKIAkJc3RydWN0IHBwX2h3bWdyICpod21nciwKIAkJdWludDhfdCBtb2R1bGVfaW5k ZXgsCkBAIC0xNDEsNyArMTQwLDcgQEAgaW50IGF0b21jdHJsX2luaXRpYWxpemVfbWNfcmVnX3Rh YmxlKAogCXUxNiBzaXplOwogCiAJdnJhbV9pbmZvID0gKEFUT01fVlJBTV9JTkZPX0hFQURFUl9W Ml8xICopCi0JCWNnc19hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJCXNtdV9h dG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5hZGV2LAogCQkJCUdldEluZGV4SW50b01hc3RlclRh YmxlKERBVEEsIFZSQU1fSW5mbyksICZzaXplLCAmZnJldiwgJmNyZXYpOwogCiAJaWYgKG1vZHVs ZV9pbmRleCA+PSB2cmFtX2luZm8tPnVjTnVtT2ZWUkFNTW9kdWxlKSB7CkBAIC0xNzQsNiArMTcz LDggQEAgaW50IGF0b21jdHJsX3NldF9lbmdpbmVfZHJhbV90aW1pbmdzX3J2NzcwKAogCQl1aW50 MzJfdCBlbmdpbmVfY2xvY2ssCiAJCXVpbnQzMl90IG1lbW9yeV9jbG9jaykKIHsKKwlzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiA9IGh3bWdyLT5hZGV2OworCiAJU0VUX0VOR0lORV9DTE9DS19Q U19BTExPQ0FUSU9OIGVuZ2luZV9jbG9ja19wYXJhbWV0ZXJzOwogCiAJLyogVGhleSBhcmUgYm90 aCBpbiAxMEtIeiBVbml0cy4gKi8KQEAgLTE4NCw5ICsxODUsMTAgQEAgaW50IGF0b21jdHJsX3Nl dF9lbmdpbmVfZHJhbV90aW1pbmdzX3J2NzcwKAogCS8qIGluIDEwIGtoeiB1bml0cy4qLwogCWVu Z2luZV9jbG9ja19wYXJhbWV0ZXJzLnNSZXNlcnZlZC51bENsb2NrID0KIAkJY3B1X3RvX2xlMzIo bWVtb3J5X2Nsb2NrICYgU0VUX0NMT0NLX0ZSRVFfTUFTSyk7Ci0JcmV0dXJuIGNnc19hdG9tX2V4 ZWNfY21kX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisKKwlyZXR1cm4gYW1kZ3B1X2F0b21fZXhlY3V0 ZV90YWJsZShhZGV2LT5tb2RlX2luZm8uYXRvbV9jb250ZXh0LAogCQkJR2V0SW5kZXhJbnRvTWFz dGVyVGFibGUoQ09NTUFORCwgRHluYW1pY01lbW9yeVNldHRpbmdzKSwKLQkJCSZlbmdpbmVfY2xv Y2tfcGFyYW1ldGVycyk7CisJCQkodWludDMyX3QgKikmZW5naW5lX2Nsb2NrX3BhcmFtZXRlcnMp OwogfQogCiAvKioKQEAgLTIwMyw3ICsyMDUsNyBAQCBzdGF0aWMgQVRPTV9WT0xUQUdFX09CSkVD VF9JTkZPICpnZXRfdm9sdGFnZV9pbmZvX3RhYmxlKHZvaWQgKmRldmljZSkKIAl1bmlvbiB2b2x0 YWdlX29iamVjdF9pbmZvICp2b2x0YWdlX2luZm87CiAKIAl2b2x0YWdlX2luZm8gPSAodW5pb24g dm9sdGFnZV9vYmplY3RfaW5mbyAqKQotCQljZ3NfYXRvbV9nZXRfZGF0YV90YWJsZShkZXZpY2Us IGluZGV4LAorCQlzbXVfYXRvbV9nZXRfZGF0YV90YWJsZShkZXZpY2UsIGluZGV4LAogCQkJJnNp emUsICZmcmV2LCAmY3Jldik7CiAKIAlpZiAodm9sdGFnZV9pbmZvICE9IE5VTEwpCkBAIC0yNDcs MTYgKzI0OSwxNiBAQCBpbnQgYXRvbWN0cmxfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnNfc2koCiAJ CXBwX2F0b21jdHJsX21lbW9yeV9jbG9ja19wYXJhbSAqbXBsbF9wYXJhbSwKIAkJYm9vbCBzdHJv YmVfbW9kZSkKIHsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGh3bWdyLT5hZGV2Owog CUNPTVBVVEVfTUVNT1JZX0NMT0NLX1BBUkFNX1BBUkFNRVRFUlNfVjJfMSBtcGxsX3BhcmFtZXRl cnM7CiAJaW50IHJlc3VsdDsKIAogCW1wbGxfcGFyYW1ldGVycy51bENsb2NrID0gY3B1X3RvX2xl MzIoY2xvY2tfdmFsdWUpOwogCW1wbGxfcGFyYW1ldGVycy51Y0lucHV0RmxhZyA9ICh1aW50OF90 KSgoc3Ryb2JlX21vZGUpID8gMSA6IDApOwogCi0JcmVzdWx0ID0gY2dzX2F0b21fZXhlY19jbWRf dGFibGUKLQkJKGh3bWdyLT5kZXZpY2UsCisJcmVzdWx0ID0gYW1kZ3B1X2F0b21fZXhlY3V0ZV90 YWJsZShhZGV2LT5tb2RlX2luZm8uYXRvbV9jb250ZXh0LAogCQkgR2V0SW5kZXhJbnRvTWFzdGVy VGFibGUoQ09NTUFORCwgQ29tcHV0ZU1lbW9yeUNsb2NrUGFyYW0pLAotCQkgJm1wbGxfcGFyYW1l dGVycyk7CisJCSh1aW50MzJfdCAqKSZtcGxsX3BhcmFtZXRlcnMpOwogCiAJaWYgKDAgPT0gcmVz dWx0KSB7CiAJCW1wbGxfcGFyYW0tPm1wbGxfZmJfZGl2aWRlci5jbGtfZnJhYyA9CkBAIC0yOTUs MTQgKzI5NywxNSBAQCBpbnQgYXRvbWN0cmxfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnNfc2koCiBp bnQgYXRvbWN0cmxfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnNfdmkoc3RydWN0IHBwX2h3bWdyICpo d21nciwKIAkJdWludDMyX3QgY2xvY2tfdmFsdWUsIHBwX2F0b21jdHJsX21lbW9yeV9jbG9ja19w YXJhbSAqbXBsbF9wYXJhbSkKIHsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGh3bWdy LT5hZGV2OwogCUNPTVBVVEVfTUVNT1JZX0NMT0NLX1BBUkFNX1BBUkFNRVRFUlNfVjJfMiBtcGxs X3BhcmFtZXRlcnM7CiAJaW50IHJlc3VsdDsKIAogCW1wbGxfcGFyYW1ldGVycy51bENsb2NrLnVs Q2xvY2sgPSBjcHVfdG9fbGUzMihjbG9ja192YWx1ZSk7CiAKLQlyZXN1bHQgPSBjZ3NfYXRvbV9l eGVjX2NtZF90YWJsZShod21nci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1 dGVfdGFibGUoYWRldi0+bW9kZV9pbmZvLmF0b21fY29udGV4dCwKIAkJCUdldEluZGV4SW50b01h c3RlclRhYmxlKENPTU1BTkQsIENvbXB1dGVNZW1vcnlDbG9ja1BhcmFtKSwKLQkJCSZtcGxsX3Bh cmFtZXRlcnMpOworCQkJKHVpbnQzMl90ICopJm1wbGxfcGFyYW1ldGVycyk7CiAKIAlpZiAoIXJl c3VsdCkKIAkJbXBsbF9wYXJhbS0+bXBsbF9wb3N0X2RpdmlkZXIgPQpAQCAtMzE1LDE1ICszMTgs MTUgQEAgaW50IGF0b21jdHJsX2dldF9lbmdpbmVfcGxsX2RpdmlkZXJzX2tvbmcoc3RydWN0IHBw X2h3bWdyICpod21nciwKIAkJCQkJICB1aW50MzJfdCBjbG9ja192YWx1ZSwKIAkJCQkJICBwcF9h dG9tY3RybF9jbG9ja19kaXZpZGVyc19rb25nICpkaXZpZGVycykKIHsKKwlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IGh3bWdyLT5hZGV2OwogCUNPTVBVVEVfTUVNT1JZX0VOR0lORV9QTExf UEFSQU1FVEVSU19WNCBwbGxfcGFyYW1ldGVyczsKIAlpbnQgcmVzdWx0OwogCiAJcGxsX3BhcmFt ZXRlcnMudWxDbG9jayA9IGNwdV90b19sZTMyKGNsb2NrX3ZhbHVlKTsKIAotCXJlc3VsdCA9IGNn c19hdG9tX2V4ZWNfY21kX3RhYmxlCi0JCShod21nci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdw dV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+bW9kZV9pbmZvLmF0b21fY29udGV4dCwKIAkJIEdl dEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIENvbXB1dGVNZW1vcnlFbmdpbmVQTEwpLAot CQkgJnBsbF9wYXJhbWV0ZXJzKTsKKwkJKHVpbnQzMl90ICopJnBsbF9wYXJhbWV0ZXJzKTsKIAog CWlmICgwID09IHJlc3VsdCkgewogCQlkaXZpZGVycy0+cGxsX3Bvc3RfZGl2aWRlciA9IHBsbF9w YXJhbWV0ZXJzLnVjUG9zdERpdjsKQEAgLTMzOCwxNiArMzQxLDE2IEBAIGludCBhdG9tY3RybF9n ZXRfZW5naW5lX3BsbF9kaXZpZGVyc192aSgKIAkJdWludDMyX3QgY2xvY2tfdmFsdWUsCiAJCXBw X2F0b21jdHJsX2Nsb2NrX2RpdmlkZXJzX3ZpICpkaXZpZGVycykKIHsKKwlzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiA9IGh3bWdyLT5hZGV2OwogCUNPTVBVVEVfR1BVX0NMT0NLX09VVFBVVF9Q QVJBTUVURVJTX1YxXzYgcGxsX3BhdGFtZXRlcnM7CiAJaW50IHJlc3VsdDsKIAogCXBsbF9wYXRh bWV0ZXJzLnVsQ2xvY2sudWxDbG9jayA9IGNwdV90b19sZTMyKGNsb2NrX3ZhbHVlKTsKIAlwbGxf cGF0YW1ldGVycy51bENsb2NrLnVjUG9zdERpdiA9IENPTVBVVEVfR1BVQ0xLX0lOUFVUX0ZMQUdf U0NMSzsKIAotCXJlc3VsdCA9IGNnc19hdG9tX2V4ZWNfY21kX3RhYmxlCi0JCShod21nci0+ZGV2 aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+bW9kZV9pbmZv LmF0b21fY29udGV4dCwKIAkJIEdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIENvbXB1 dGVNZW1vcnlFbmdpbmVQTEwpLAotCQkgJnBsbF9wYXRhbWV0ZXJzKTsKKwkJKHVpbnQzMl90ICop JnBsbF9wYXRhbWV0ZXJzKTsKIAogCWlmICgwID09IHJlc3VsdCkgewogCQlkaXZpZGVycy0+cGxs X3Bvc3RfZGl2aWRlciA9CkBAIC0zNzUsMTYgKzM3OCwxNiBAQCBpbnQgYXRvbWN0cmxfZ2V0X2Vu Z2luZV9wbGxfZGl2aWRlcnNfYWkoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAkJdWludDMyX3Qg Y2xvY2tfdmFsdWUsCiAJCXBwX2F0b21jdHJsX2Nsb2NrX2RpdmlkZXJzX2FpICpkaXZpZGVycykK IHsKKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGh3bWdyLT5hZGV2OwogCUNPTVBVVEVf R1BVX0NMT0NLX09VVFBVVF9QQVJBTUVURVJTX1YxXzcgcGxsX3BhdGFtZXRlcnM7CiAJaW50IHJl c3VsdDsKIAogCXBsbF9wYXRhbWV0ZXJzLnVsQ2xvY2sudWxDbG9jayA9IGNwdV90b19sZTMyKGNs b2NrX3ZhbHVlKTsKIAlwbGxfcGF0YW1ldGVycy51bENsb2NrLnVjUG9zdERpdiA9IENPTVBVVEVf R1BVQ0xLX0lOUFVUX0ZMQUdfU0NMSzsKIAotCXJlc3VsdCA9IGNnc19hdG9tX2V4ZWNfY21kX3Rh YmxlCi0JCShod21nci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFi bGUoYWRldi0+bW9kZV9pbmZvLmF0b21fY29udGV4dCwKIAkJIEdldEluZGV4SW50b01hc3RlclRh YmxlKENPTU1BTkQsIENvbXB1dGVNZW1vcnlFbmdpbmVQTEwpLAotCQkgJnBsbF9wYXRhbWV0ZXJz KTsKKwkJKHVpbnQzMl90ICopJnBsbF9wYXRhbWV0ZXJzKTsKIAogCWlmICgwID09IHJlc3VsdCkg ewogCQlkaXZpZGVycy0+dXNTY2xrX2Zjd19mcmFjICAgICA9IGxlMTZfdG9fY3B1KHBsbF9wYXRh bWV0ZXJzLnVzU2Nsa19mY3dfZnJhYyk7CkBAIC00MDcsNiArNDEwLDcgQEAgaW50IGF0b21jdHJs X2dldF9kZnNfcGxsX2RpdmlkZXJzX3ZpKAogCQl1aW50MzJfdCBjbG9ja192YWx1ZSwKIAkJcHBf YXRvbWN0cmxfY2xvY2tfZGl2aWRlcnNfdmkgKmRpdmlkZXJzKQogeworCXN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2ID0gaHdtZ3ItPmFkZXY7CiAJQ09NUFVURV9HUFVfQ0xPQ0tfT1VUUFVUX1BB UkFNRVRFUlNfVjFfNiBwbGxfcGF0YW1ldGVyczsKIAlpbnQgcmVzdWx0OwogCkBAIC00MTQsMTAg KzQxOCw5IEBAIGludCBhdG9tY3RybF9nZXRfZGZzX3BsbF9kaXZpZGVyc192aSgKIAlwbGxfcGF0 YW1ldGVycy51bENsb2NrLnVjUG9zdERpdiA9CiAJCUNPTVBVVEVfR1BVQ0xLX0lOUFVUX0ZMQUdf REVGQVVMVF9HUFVDTEs7CiAKLQlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZQotCQko aHdtZ3ItPmRldmljZSwKKwlyZXN1bHQgPSBhbWRncHVfYXRvbV9leGVjdXRlX3RhYmxlKGFkZXYt Pm1vZGVfaW5mby5hdG9tX2NvbnRleHQsCiAJCSBHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01N QU5ELCBDb21wdXRlTWVtb3J5RW5naW5lUExMKSwKLQkJICZwbGxfcGF0YW1ldGVycyk7CisJCSh1 aW50MzJfdCAqKSZwbGxfcGF0YW1ldGVycyk7CiAKIAlpZiAoMCA9PSByZXN1bHQpIHsKIAkJZGl2 aWRlcnMtPnBsbF9wb3N0X2RpdmlkZXIgPQpAQCAtNDUyLDcgKzQ1NSw3IEBAIHVpbnQzMl90IGF0 b21jdHJsX2dldF9yZWZlcmVuY2VfY2xvY2soc3RydWN0IHBwX2h3bWdyICpod21ncikKIAl1aW50 MzJfdCBjbG9jazsKIAogCWZ3X2luZm8gPSAoQVRPTV9GSVJNV0FSRV9JTkZPICopCi0JCWNnc19h dG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJCXNtdV9hdG9tX2dldF9kYXRhX3Rh YmxlKGh3bWdyLT5hZGV2LAogCQkJR2V0SW5kZXhJbnRvTWFzdGVyVGFibGUoREFUQSwgRmlybXdh cmVJbmZvKSwKIAkJCSZzaXplLCAmZnJldiwgJmNyZXYpOwogCkBAIC00NzYsNyArNDc5LDcgQEAg Ym9vbCBhdG9tY3RybF9pc192b2x0YWdlX2NvbnRyb2xsZWRfYnlfZ3Bpb192MygKIAkJdWludDhf dCB2b2x0YWdlX21vZGUpCiB7CiAJQVRPTV9WT0xUQUdFX09CSkVDVF9JTkZPX1YzXzEgKnZvbHRh Z2VfaW5mbyA9Ci0JCShBVE9NX1ZPTFRBR0VfT0JKRUNUX0lORk9fVjNfMSAqKWdldF92b2x0YWdl X2luZm9fdGFibGUoaHdtZ3ItPmRldmljZSk7CisJCShBVE9NX1ZPTFRBR0VfT0JKRUNUX0lORk9f VjNfMSAqKWdldF92b2x0YWdlX2luZm9fdGFibGUoaHdtZ3ItPmFkZXYpOwogCWJvb2wgcmV0Owog CiAJUFBfQVNTRVJUX1dJVEhfQ09ERSgoTlVMTCAhPSB2b2x0YWdlX2luZm8pLApAQCAtNDk1LDcg KzQ5OCw3IEBAIGludCBhdG9tY3RybF9nZXRfdm9sdGFnZV90YWJsZV92MygKIAkJcHBfYXRvbWN0 cmxfdm9sdGFnZV90YWJsZSAqdm9sdGFnZV90YWJsZSkKIHsKIAlBVE9NX1ZPTFRBR0VfT0JKRUNU X0lORk9fVjNfMSAqdm9sdGFnZV9pbmZvID0KLQkJKEFUT01fVk9MVEFHRV9PQkpFQ1RfSU5GT19W M18xICopZ2V0X3ZvbHRhZ2VfaW5mb190YWJsZShod21nci0+ZGV2aWNlKTsKKwkJKEFUT01fVk9M VEFHRV9PQkpFQ1RfSU5GT19WM18xICopZ2V0X3ZvbHRhZ2VfaW5mb190YWJsZShod21nci0+YWRl dik7CiAJY29uc3QgQVRPTV9WT0xUQUdFX09CSkVDVF9WMyAqdm9sdGFnZV9vYmplY3Q7CiAJdW5z aWduZWQgaW50IGk7CiAKQEAgLTU3Miw3ICs1NzUsNyBAQCBzdGF0aWMgQVRPTV9HUElPX1BJTl9M VVQgKmdldF9ncGlvX2xvb2t1cF90YWJsZSh2b2lkICpkZXZpY2UpCiAJdm9pZCAqdGFibGVfYWRk cmVzczsKIAogCXRhYmxlX2FkZHJlc3MgPSAoQVRPTV9HUElPX1BJTl9MVVQgKikKLQkJY2dzX2F0 b21fZ2V0X2RhdGFfdGFibGUoZGV2aWNlLAorCQlzbXVfYXRvbV9nZXRfZGF0YV90YWJsZShkZXZp Y2UsCiAJCQkJR2V0SW5kZXhJbnRvTWFzdGVyVGFibGUoREFUQSwgR1BJT19QaW5fTFVUKSwKIAkJ CQkmc2l6ZSwgJmZyZXYsICZjcmV2KTsKIApAQCAtNTkyLDcgKzU5NSw3IEBAIGJvb2wgYXRvbWN0 cmxfZ2V0X3BwX2Fzc2lnbl9waW4oCiB7CiAJYm9vbCBiUmV0ID0gZmFsc2U7CiAJQVRPTV9HUElP X1BJTl9MVVQgKmdwaW9fbG9va3VwX3RhYmxlID0KLQkJZ2V0X2dwaW9fbG9va3VwX3RhYmxlKGh3 bWdyLT5kZXZpY2UpOworCQlnZXRfZ3Bpb19sb29rdXBfdGFibGUoaHdtZ3ItPmFkZXYpOwogCiAJ UFBfQVNTRVJUX1dJVEhfQ09ERSgoTlVMTCAhPSBncGlvX2xvb2t1cF90YWJsZSksCiAJCQkiQ291 bGQgbm90IGZpbmQgR1BJTyBsb29rdXAgVGFibGUgaW4gQklPUy4iLCByZXR1cm4gZmFsc2UpOwpA QCAtNjEzLDcgKzYxNiw3IEBAIGludCBhdG9tY3RybF9jYWxjdWxhdGVfdm9sdGFnZV9ldnZfb25f c2NsaygKIAkJYm9vbCBkZWJ1ZykKIHsKIAlBVE9NX0FTSUNfUFJPRklMSU5HX0lORk9fVjNfNCAq Z2V0QVNJQ1Byb2ZpbGluZ0luZm87Ci0KKwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGh3 bWdyLT5hZGV2OwogCUVGVVNFX0xJTkVBUl9GVU5DX1BBUkFNIHNST19mdXNlOwogCUVGVVNFX0xJ TkVBUl9GVU5DX1BBUkFNIHNDQUNtX2Z1c2U7CiAJRUZVU0VfTElORUFSX0ZVTkNfUEFSQU0gc0NB Q2JfZnVzZTsKQEAgLTY0MCw3ICs2NDMsNyBAQCBpbnQgYXRvbWN0cmxfY2FsY3VsYXRlX3ZvbHRh Z2VfZXZ2X29uX3NjbGsoCiAJaW50IHJlc3VsdDsKIAogCWdldEFTSUNQcm9maWxpbmdJbmZvID0g KEFUT01fQVNJQ19QUk9GSUxJTkdfSU5GT19WM180ICopCi0JCQljZ3NfYXRvbV9nZXRfZGF0YV90 YWJsZShod21nci0+ZGV2aWNlLAorCQkJc211X2F0b21fZ2V0X2RhdGFfdGFibGUoaHdtZ3ItPmFk ZXYsCiAJCQkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKERBVEEsIEFTSUNfUHJvZmlsaW5nSW5m byksCiAJCQkJCU5VTEwsIE5VTEwsIE5VTEwpOwogCkBAIC03MDYsOSArNzA5LDkgQEAgaW50IGF0 b21jdHJsX2NhbGN1bGF0ZV92b2x0YWdlX2V2dl9vbl9zY2xrKAogCiAJc091dHB1dF9GdXNlVmFs dWVzLnNFZnVzZSA9IHNJbnB1dF9GdXNlVmFsdWVzOwogCi0JcmVzdWx0ID0gY2dzX2F0b21fZXhl Y19jbWRfdGFibGUoaHdtZ3ItPmRldmljZSwKKwlyZXN1bHQgPSBhbWRncHVfYXRvbV9leGVjdXRl X3RhYmxlKGFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQsCiAJCQlHZXRJbmRleEludG9NYXN0 ZXJUYWJsZShDT01NQU5ELCBSZWFkRWZ1c2VWYWx1ZSksCi0JCQkmc091dHB1dF9GdXNlVmFsdWVz KTsKKwkJCSh1aW50MzJfdCAqKSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOwogCiAJaWYgKHJlc3VsdCkK IAkJcmV0dXJuIHJlc3VsdDsKQEAgLTcyNyw5ICs3MzAsOSBAQCBpbnQgYXRvbWN0cmxfY2FsY3Vs YXRlX3ZvbHRhZ2VfZXZ2X29uX3NjbGsoCiAKIAlzT3V0cHV0X0Z1c2VWYWx1ZXMuc0VmdXNlID0g c0lucHV0X0Z1c2VWYWx1ZXM7CiAKLQlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZSho d21nci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+ bW9kZV9pbmZvLmF0b21fY29udGV4dCwKIAkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1B TkQsIFJlYWRFZnVzZVZhbHVlKSwKLQkJCSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOworCQkJKHVpbnQz Ml90ICopJnNPdXRwdXRfRnVzZVZhbHVlcyk7CiAKIAlpZiAocmVzdWx0KQogCQlyZXR1cm4gcmVz dWx0OwpAQCAtNzQ3LDkgKzc1MCw5IEBAIGludCBhdG9tY3RybF9jYWxjdWxhdGVfdm9sdGFnZV9l dnZfb25fc2NsaygKIAlzSW5wdXRfRnVzZVZhbHVlcy51Y0JpdExlbmd0aCA9IHNDQUNiX2Z1c2Uu dWNFZnVzZUxlbmd0aDsKIAlzT3V0cHV0X0Z1c2VWYWx1ZXMuc0VmdXNlID0gc0lucHV0X0Z1c2VW YWx1ZXM7CiAKLQlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ZGV2aWNl LAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+bW9kZV9pbmZvLmF0 b21fY29udGV4dCwKIAkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIFJlYWRFZnVz ZVZhbHVlKSwKLQkJCSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOworCQkJKHVpbnQzMl90ICopJnNPdXRw dXRfRnVzZVZhbHVlcyk7CiAKIAlpZiAocmVzdWx0KQogCQlyZXR1cm4gcmVzdWx0OwpAQCAtNzY4 LDkgKzc3MSw5IEBAIGludCBhdG9tY3RybF9jYWxjdWxhdGVfdm9sdGFnZV9ldnZfb25fc2NsaygK IAogCXNPdXRwdXRfRnVzZVZhbHVlcy5zRWZ1c2UgPSBzSW5wdXRfRnVzZVZhbHVlczsKIAotCXJl c3VsdCA9IGNnc19hdG9tX2V4ZWNfY21kX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJcmVzdWx0ID0g YW1kZ3B1X2F0b21fZXhlY3V0ZV90YWJsZShhZGV2LT5tb2RlX2luZm8uYXRvbV9jb250ZXh0LAog CQkJR2V0SW5kZXhJbnRvTWFzdGVyVGFibGUoQ09NTUFORCwgUmVhZEVmdXNlVmFsdWUpLAotCQkJ JnNPdXRwdXRfRnVzZVZhbHVlcyk7CisJCQkodWludDMyX3QgKikmc091dHB1dF9GdXNlVmFsdWVz KTsKIAogCWlmIChyZXN1bHQpCiAJCXJldHVybiByZXN1bHQ7CkBAIC03OTAsOSArNzkzLDkgQEAg aW50IGF0b21jdHJsX2NhbGN1bGF0ZV92b2x0YWdlX2V2dl9vbl9zY2xrKAogCiAJc091dHB1dF9G dXNlVmFsdWVzLnNFZnVzZSA9IHNJbnB1dF9GdXNlVmFsdWVzOwogCi0JcmVzdWx0ID0gY2dzX2F0 b21fZXhlY19jbWRfdGFibGUoaHdtZ3ItPmRldmljZSwKKwlyZXN1bHQgPSBhbWRncHVfYXRvbV9l eGVjdXRlX3RhYmxlKGFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQsCiAJCQlHZXRJbmRleElu dG9NYXN0ZXJUYWJsZShDT01NQU5ELCBSZWFkRWZ1c2VWYWx1ZSksCi0JCQkmc091dHB1dF9GdXNl VmFsdWVzKTsKKwkJCSh1aW50MzJfdCAqKSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOwogCWlmIChyZXN1 bHQpCiAJCXJldHVybiByZXN1bHQ7CiAKQEAgLTgxMSw5ICs4MTQsOSBAQCBpbnQgYXRvbWN0cmxf Y2FsY3VsYXRlX3ZvbHRhZ2VfZXZ2X29uX3NjbGsoCiAJc0lucHV0X0Z1c2VWYWx1ZXMudWNCaXRM ZW5ndGggPSBzS3ZfYl9mdXNlLnVjRWZ1c2VMZW5ndGg7CiAJc091dHB1dF9GdXNlVmFsdWVzLnNF ZnVzZSA9IHNJbnB1dF9GdXNlVmFsdWVzOwogCi0JcmVzdWx0ID0gY2dzX2F0b21fZXhlY19jbWRf dGFibGUoaHdtZ3ItPmRldmljZSwKKwlyZXN1bHQgPSBhbWRncHVfYXRvbV9leGVjdXRlX3RhYmxl KGFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQsCiAJCQlHZXRJbmRleEludG9NYXN0ZXJUYWJs ZShDT01NQU5ELCBSZWFkRWZ1c2VWYWx1ZSksCi0JCQkmc091dHB1dF9GdXNlVmFsdWVzKTsKKwkJ CSh1aW50MzJfdCAqKSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOwogCiAJaWYgKHJlc3VsdCkKIAkJcmV0 dXJuIHJlc3VsdDsKQEAgLTg0Miw5ICs4NDUsOSBAQCBpbnQgYXRvbWN0cmxfY2FsY3VsYXRlX3Zv bHRhZ2VfZXZ2X29uX3NjbGsoCiAKIAlzT3V0cHV0X0Z1c2VWYWx1ZXMuc0VmdXNlID0gc0lucHV0 X0Z1c2VWYWx1ZXM7CiAKLQlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+bW9kZV9p bmZvLmF0b21fY29udGV4dCwKIAkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIFJl YWRFZnVzZVZhbHVlKSwKLQkJCSZzT3V0cHV0X0Z1c2VWYWx1ZXMpOworCQkJKHVpbnQzMl90ICop JnNPdXRwdXRfRnVzZVZhbHVlcyk7CiAKIAlpZiAocmVzdWx0KQogCQlyZXR1cm4gcmVzdWx0OwpA QCAtMTA1Myw4ICsxMDU2LDkgQEAgaW50IGF0b21jdHJsX2dldF92b2x0YWdlX2V2dl9vbl9zY2xr KAogCQl1aW50MzJfdCBzY2xrLCB1aW50MTZfdCB2aXJ0dWFsX3ZvbHRhZ2VfSWQsCiAJCXVpbnQx Nl90ICp2b2x0YWdlKQogewotCWludCByZXN1bHQ7CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFk ZXYgPSBod21nci0+YWRldjsKIAlHRVRfVk9MVEFHRV9JTkZPX0lOUFVUX1BBUkFNRVRFUl9WMV8y IGdldF92b2x0YWdlX2luZm9fcGFyYW1fc3BhY2U7CisJaW50IHJlc3VsdDsKIAogCWdldF92b2x0 YWdlX2luZm9fcGFyYW1fc3BhY2UudWNWb2x0YWdlVHlwZSAgID0KIAkJdm9sdGFnZV90eXBlOwpA QCAtMTA2NSw5ICsxMDY5LDkgQEAgaW50IGF0b21jdHJsX2dldF92b2x0YWdlX2V2dl9vbl9zY2xr KAogCWdldF92b2x0YWdlX2luZm9fcGFyYW1fc3BhY2UudWxTQ0xLRnJlcSAgICAgID0KIAkJY3B1 X3RvX2xlMzIoc2Nsayk7CiAKLQlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21n ci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+bW9k ZV9pbmZvLmF0b21fY29udGV4dCwKIAkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQs IEdldFZvbHRhZ2VJbmZvKSwKLQkJCSZnZXRfdm9sdGFnZV9pbmZvX3BhcmFtX3NwYWNlKTsKKwkJ CSh1aW50MzJfdCAqKSZnZXRfdm9sdGFnZV9pbmZvX3BhcmFtX3NwYWNlKTsKIAogCWlmICgwICE9 IHJlc3VsdCkKIAkJcmV0dXJuIHJlc3VsdDsKQEAgLTEwODgsOSArMTA5MiwxMCBAQCBpbnQgYXRv bWN0cmxfZ2V0X3ZvbHRhZ2VfZXZ2KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJCQkgICAgIHVp bnQxNl90IHZpcnR1YWxfdm9sdGFnZV9pZCwKIAkJCSAgICAgdWludDE2X3QgKnZvbHRhZ2UpCiB7 CisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBod21nci0+YWRldjsKKwlHRVRfVk9MVEFH RV9JTkZPX0lOUFVUX1BBUkFNRVRFUl9WMV8yIGdldF92b2x0YWdlX2luZm9fcGFyYW1fc3BhY2U7 CiAJaW50IHJlc3VsdDsKIAlpbnQgZW50cnlfaWQ7Ci0JR0VUX1ZPTFRBR0VfSU5GT19JTlBVVF9Q QVJBTUVURVJfVjFfMiBnZXRfdm9sdGFnZV9pbmZvX3BhcmFtX3NwYWNlOwogCiAJLyogc2VhcmNo IGZvciBsZWFrYWdlIHZvbHRhZ2UgSUQgMHhmZjAxIH4gMHhmZjA4IGFuZCBzY2tsICovCiAJZm9y IChlbnRyeV9pZCA9IDA7IGVudHJ5X2lkIDwgaHdtZ3ItPmR5bl9zdGF0ZS52ZGRjX2RlcGVuZGVu Y3lfb25fc2Nsay0+Y291bnQ7IGVudHJ5X2lkKyspIHsKQEAgLTExMTEsOSArMTExNiw5IEBAIGlu dCBhdG9tY3RybF9nZXRfdm9sdGFnZV9ldnYoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAlnZXRf dm9sdGFnZV9pbmZvX3BhcmFtX3NwYWNlLnVsU0NMS0ZyZXEgPQogCQljcHVfdG9fbGUzMihod21n ci0+ZHluX3N0YXRlLnZkZGNfZGVwZW5kZW5jeV9vbl9zY2xrLT5lbnRyaWVzW2VudHJ5X2lkXS5j bGspOwogCi0JcmVzdWx0ID0gY2dzX2F0b21fZXhlY19jbWRfdGFibGUoaHdtZ3ItPmRldmljZSwK KwlyZXN1bHQgPSBhbWRncHVfYXRvbV9leGVjdXRlX3RhYmxlKGFkZXYtPm1vZGVfaW5mby5hdG9t X2NvbnRleHQsCiAJCQlHZXRJbmRleEludG9NYXN0ZXJUYWJsZShDT01NQU5ELCBHZXRWb2x0YWdl SW5mbyksCi0JCQkmZ2V0X3ZvbHRhZ2VfaW5mb19wYXJhbV9zcGFjZSk7CisJCQkodWludDMyX3Qg KikmZ2V0X3ZvbHRhZ2VfaW5mb19wYXJhbV9zcGFjZSk7CiAKIAlpZiAoMCAhPSByZXN1bHQpCiAJ CXJldHVybiByZXN1bHQ7CkBAIC0xMTM1LDcgKzExNDAsNyBAQCB1aW50MzJfdCBhdG9tY3RybF9n ZXRfbXBsbF9yZWZlcmVuY2VfY2xvY2soc3RydWN0IHBwX2h3bWdyICpod21ncikKIAl1MTYgc2l6 ZTsKIAogCWZ3X2luZm8gPSAoQVRPTV9DT01NT05fVEFCTEVfSEVBREVSICopCi0JCWNnc19hdG9t X2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJCXNtdV9hdG9tX2dldF9kYXRhX3RhYmxl KGh3bWdyLT5hZGV2LAogCQkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKERBVEEsIEZpcm13YXJl SW5mbyksCiAJCQkJJnNpemUsICZmcmV2LCAmY3Jldik7CiAKQEAgLTExNjcsNyArMTE3Miw3IEBA IHN0YXRpYyBBVE9NX0FTSUNfSU5URVJOQUxfU1NfSU5GTyAqYXNpY19pbnRlcm5hbF9zc19nZXRf c3NfdGFibGUodm9pZCAqZGV2aWNlKQogCXUxNiBzaXplOwogCiAJdGFibGUgPSAoQVRPTV9BU0lD X0lOVEVSTkFMX1NTX0lORk8gKikKLQkJY2dzX2F0b21fZ2V0X2RhdGFfdGFibGUoZGV2aWNlLAor CQlzbXVfYXRvbV9nZXRfZGF0YV90YWJsZShkZXZpY2UsCiAJCQlHZXRJbmRleEludG9NYXN0ZXJU YWJsZShEQVRBLCBBU0lDX0ludGVybmFsU1NfSW5mbyksCiAJCQkmc2l6ZSwgJmZyZXYsICZjcmV2 KTsKIApAQCAtMTE4OCw3ICsxMTkzLDcgQEAgc3RhdGljIGludCBhc2ljX2ludGVybmFsX3NzX2dl dF9zc19hc2lnbm1lbnQoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAogCW1lbXNldChzc0VudHJ5 LCAweDAwLCBzaXplb2YocHBfYXRvbWN0cmxfaW50ZXJuYWxfc3NfaW5mbykpOwogCi0JdGFibGUg PSBhc2ljX2ludGVybmFsX3NzX2dldF9zc190YWJsZShod21nci0+ZGV2aWNlKTsKKwl0YWJsZSA9 IGFzaWNfaW50ZXJuYWxfc3NfZ2V0X3NzX3RhYmxlKGh3bWdyLT5hZGV2KTsKIAogCWlmIChOVUxM ID09IHRhYmxlKQogCQlyZXR1cm4gLTE7CkBAIC0xMjYwLDkgKzEyNjUsMTAgQEAgaW50IGF0b21j dHJsX2dldF9lbmdpbmVfY2xvY2tfc3ByZWFkX3NwZWN0cnVtKAogCQkJQVNJQ19JTlRFUk5BTF9F TkdJTkVfU1MsIGVuZ2luZV9jbG9jaywgc3NJbmZvKTsKIH0KIAotaW50IGF0b21jdHJsX3JlYWRf ZWZ1c2Uodm9pZCAqZGV2aWNlLCB1aW50MTZfdCBzdGFydF9pbmRleCwKK2ludCBhdG9tY3RybF9y ZWFkX2VmdXNlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQxNl90IHN0YXJ0X2luZGV4LAog CQl1aW50MTZfdCBlbmRfaW5kZXgsIHVpbnQzMl90IG1hc2ssIHVpbnQzMl90ICplZnVzZSkKIHsK KwlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGh3bWdyLT5hZGV2OwogCWludCByZXN1bHQ7 CiAJUkVBRF9FRlVTRV9WQUxVRV9QQVJBTUVURVIgZWZ1c2VfcGFyYW07CiAKQEAgLTEyNzIsOSAr MTI3OCw5IEBAIGludCBhdG9tY3RybF9yZWFkX2VmdXNlKHZvaWQgKmRldmljZSwgdWludDE2X3Qg c3RhcnRfaW5kZXgsCiAJZWZ1c2VfcGFyYW0uc0VmdXNlLnVjQml0TGVuZ3RoICA9ICh1aW50OF90 KQogCQkJKChlbmRfaW5kZXggLSBzdGFydF9pbmRleCkgKyAxKTsKIAotCXJlc3VsdCA9IGNnc19h dG9tX2V4ZWNfY21kX3RhYmxlKGRldmljZSwKKwlyZXN1bHQgPSBhbWRncHVfYXRvbV9leGVjdXRl X3RhYmxlKGFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQsCiAJCQlHZXRJbmRleEludG9NYXN0 ZXJUYWJsZShDT01NQU5ELCBSZWFkRWZ1c2VWYWx1ZSksCi0JCQkmZWZ1c2VfcGFyYW0pOworCQkJ KHVpbnQzMl90ICopJmVmdXNlX3BhcmFtKTsKIAlpZiAoIXJlc3VsdCkKIAkJKmVmdXNlID0gbGUz Ml90b19jcHUoZWZ1c2VfcGFyYW0udWxFZnVzZVZhbHVlKSAmIG1hc2s7CiAKQEAgLTEyODQsNiAr MTI5MCw3IEBAIGludCBhdG9tY3RybF9yZWFkX2VmdXNlKHZvaWQgKmRldmljZSwgdWludDE2X3Qg c3RhcnRfaW5kZXgsCiBpbnQgYXRvbWN0cmxfc2V0X2FjX3RpbWluZ19haShzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLCB1aW50MzJfdCBtZW1vcnlfY2xvY2ssCiAJCQkgICAgICB1aW50OF90IGxldmVs KQogeworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaHdtZ3ItPmFkZXY7CiAJRFlOQU1J Q0VfTUVNT1JZX1NFVFRJTkdTX1BBUkFNRVRFUl9WMl8xIG1lbW9yeV9jbG9ja19wYXJhbWV0ZXJz OwogCWludCByZXN1bHQ7CiAKQEAgLTEyOTMsMTAgKzEzMDAsOSBAQCBpbnQgYXRvbWN0cmxfc2V0 X2FjX3RpbWluZ19haShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50MzJfdCBtZW1vcnlfY2xv Y2ssCiAJCUFESlVTVF9NQ19TRVRUSU5HX1BBUkFNOwogCW1lbW9yeV9jbG9ja19wYXJhbWV0ZXJz LmFzRFBNTUNSZWcudWNNY2xrRFBNU3RhdGUgPSBsZXZlbDsKIAotCXJlc3VsdCA9IGNnc19hdG9t X2V4ZWNfY21kX3RhYmxlCi0JCShod21nci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFtZGdwdV9hdG9t X2V4ZWN1dGVfdGFibGUoYWRldi0+bW9kZV9pbmZvLmF0b21fY29udGV4dCwKIAkJIEdldEluZGV4 SW50b01hc3RlclRhYmxlKENPTU1BTkQsIER5bmFtaWNNZW1vcnlTZXR0aW5ncyksCi0JCSAmbWVt b3J5X2Nsb2NrX3BhcmFtZXRlcnMpOworCQkodWludDMyX3QgKikmbWVtb3J5X2Nsb2NrX3BhcmFt ZXRlcnMpOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTEzMDQsNyArMTMxMCw3IEBAIGludCBh dG9tY3RybF9zZXRfYWNfdGltaW5nX2FpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90 IG1lbW9yeV9jbG9jaywKIGludCBhdG9tY3RybF9nZXRfdm9sdGFnZV9ldnZfb25fc2Nsa19haShz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50OF90IHZvbHRhZ2VfdHlwZSwKIAkJCQl1aW50MzJf dCBzY2xrLCB1aW50MTZfdCB2aXJ0dWFsX3ZvbHRhZ2VfSWQsIHVpbnQzMl90ICp2b2x0YWdlKQog ewotCisJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBod21nci0+YWRldjsKIAlpbnQgcmVz dWx0OwogCUdFVF9WT0xUQUdFX0lORk9fSU5QVVRfUEFSQU1FVEVSX1YxXzMgZ2V0X3ZvbHRhZ2Vf aW5mb19wYXJhbV9zcGFjZTsKIApAQCAtMTMxMyw5ICsxMzE5LDkgQEAgaW50IGF0b21jdHJsX2dl dF92b2x0YWdlX2V2dl9vbl9zY2xrX2FpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQ4X3Qg dm9sdGFnZV8KIAlnZXRfdm9sdGFnZV9pbmZvX3BhcmFtX3NwYWNlLnVzVm9sdGFnZUxldmVsID0g Y3B1X3RvX2xlMTYodmlydHVhbF92b2x0YWdlX0lkKTsKIAlnZXRfdm9sdGFnZV9pbmZvX3BhcmFt X3NwYWNlLnVsU0NMS0ZyZXEgPSBjcHVfdG9fbGUzMihzY2xrKTsKIAotCXJlc3VsdCA9IGNnc19h dG9tX2V4ZWNfY21kX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJcmVzdWx0ID0gYW1kZ3B1X2F0b21f ZXhlY3V0ZV90YWJsZShhZGV2LT5tb2RlX2luZm8uYXRvbV9jb250ZXh0LAogCQkJR2V0SW5kZXhJ bnRvTWFzdGVyVGFibGUoQ09NTUFORCwgR2V0Vm9sdGFnZUluZm8pLAotCQkJJmdldF92b2x0YWdl X2luZm9fcGFyYW1fc3BhY2UpOworCQkJKHVpbnQzMl90ICopJmdldF92b2x0YWdlX2luZm9fcGFy YW1fc3BhY2UpOwogCiAJaWYgKDAgIT0gcmVzdWx0KQogCQlyZXR1cm4gcmVzdWx0OwpAQCAtMTMz NCw3ICsxMzQwLDcgQEAgaW50IGF0b21jdHJsX2dldF9zbWNfc2Nsa19yYW5nZV90YWJsZShzdHJ1 Y3QgcHBfaHdtZ3IgKmh3bWdyLCBzdHJ1Y3QgcHBfYXRvbV9jdHIKIAl1MTYgc2l6ZTsKIAogCUFU T01fU01VX0lORk9fVjJfMSAqcHNtdV9pbmZvID0KLQkJKEFUT01fU01VX0lORk9fVjJfMSAqKWNn c19hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJCShBVE9NX1NNVV9JTkZPX1Yy XzEgKilzbXVfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+YWRldiwKIAkJCUdldEluZGV4SW50 b01hc3RlclRhYmxlKERBVEEsIFNNVV9JbmZvKSwKIAkJCSZzaXplLCAmZnJldiwgJmNyZXYpOwog CkBAIC0xMzYyLDcgKzEzNjgsNyBAQCBpbnQgYXRvbWN0cmxfZ2V0X2F2ZnNfaW5mb3JtYXRpb24o c3RydWN0IHBwX2h3bWdyICpod21nciwKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlwcm9maWxlID0g KEFUT01fQVNJQ19QUk9GSUxJTkdfSU5GT19WM182ICopCi0JCQljZ3NfYXRvbV9nZXRfZGF0YV90 YWJsZShod21nci0+ZGV2aWNlLAorCQkJc211X2F0b21fZ2V0X2RhdGFfdGFibGUoaHdtZ3ItPmFk ZXYsCiAJCQkJCUdldEluZGV4SW50b01hc3RlclRhYmxlKERBVEEsIEFTSUNfUHJvZmlsaW5nSW5m byksCiAJCQkJCU5VTEwsIE5VTEwsIE5VTEwpOwogCWlmICghcHJvZmlsZSkKQEAgLTE0MDIsNyAr MTQwOCw3IEBAIGludCAgYXRvbWN0cmxfZ2V0X3N2aTJfaW5mbyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3 bWdyLCB1aW50OF90IHZvbHRhZ2VfdHlwZSwKIAkJCQl1aW50MTZfdCAqbG9hZF9saW5lKQogewog CUFUT01fVk9MVEFHRV9PQkpFQ1RfSU5GT19WM18xICp2b2x0YWdlX2luZm8gPQotCQkoQVRPTV9W T0xUQUdFX09CSkVDVF9JTkZPX1YzXzEgKilnZXRfdm9sdGFnZV9pbmZvX3RhYmxlKGh3bWdyLT5k ZXZpY2UpOworCQkoQVRPTV9WT0xUQUdFX09CSkVDVF9JTkZPX1YzXzEgKilnZXRfdm9sdGFnZV9p bmZvX3RhYmxlKGh3bWdyLT5hZGV2KTsKIAogCWNvbnN0IEFUT01fVk9MVEFHRV9PQkpFQ1RfVjMg KnZvbHRhZ2Vfb2JqZWN0OwogCkBAIC0xNDIxLDE2ICsxNDI3LDE3IEBAIGludCAgYXRvbWN0cmxf Z2V0X3N2aTJfaW5mbyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50OF90IHZvbHRhZ2VfdHlw ZSwKIAogaW50IGF0b21jdHJsX2dldF9sZWFrYWdlX2lkX2Zyb21fZWZ1c2Uoc3RydWN0IHBwX2h3 bWdyICpod21nciwgdWludDE2X3QgKnZpcnR1YWxfdm9sdGFnZV9pZCkKIHsKLQlpbnQgcmVzdWx0 OworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaHdtZ3ItPmFkZXY7CiAJU0VUX1ZPTFRB R0VfUFNfQUxMT0NBVElPTiBhbGxvY2F0aW9uOwogCVNFVF9WT0xUQUdFX1BBUkFNRVRFUlNfVjFf MyAqdm9sdGFnZV9wYXJhbWV0ZXJzID0KIAkJCShTRVRfVk9MVEFHRV9QQVJBTUVURVJTX1YxXzMg KikmYWxsb2NhdGlvbi5zQVNJQ1NldFZvbHRhZ2U7CisJaW50IHJlc3VsdDsKIAogCXZvbHRhZ2Vf cGFyYW1ldGVycy0+dWNWb2x0YWdlTW9kZSA9IEFUT01fR0VUX0xFQUtBR0VfSUQ7CiAKLQlyZXN1 bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ZGV2aWNlLAorCXJlc3VsdCA9IGFt ZGdwdV9hdG9tX2V4ZWN1dGVfdGFibGUoYWRldi0+bW9kZV9pbmZvLmF0b21fY29udGV4dCwKIAkJ CUdldEluZGV4SW50b01hc3RlclRhYmxlKENPTU1BTkQsIFNldFZvbHRhZ2UpLAotCQkJdm9sdGFn ZV9wYXJhbWV0ZXJzKTsKKwkJCSh1aW50MzJfdCAqKXZvbHRhZ2VfcGFyYW1ldGVycyk7CiAKIAkq dmlydHVhbF92b2x0YWdlX2lkID0gdm9sdGFnZV9wYXJhbWV0ZXJzLT51c1ZvbHRhZ2VMZXZlbDsK IApAQCAtMTQ1Myw3ICsxNDYwLDcgQEAgaW50IGF0b21jdHJsX2dldF9sZWFrYWdlX3ZkZGNfYmFz ZV9vbl9sZWFrYWdlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJaXggPSBHZXRJbmRleEludG9N YXN0ZXJUYWJsZShEQVRBLCBBU0lDX1Byb2ZpbGluZ0luZm8pOwogCiAJcHJvZmlsZSA9IChBVE9N X0FTSUNfUFJPRklMSU5HX0lORk9fVjJfMSAqKQotCQkJY2dzX2F0b21fZ2V0X2RhdGFfdGFibGUo aHdtZ3ItPmRldmljZSwKKwkJCXNtdV9hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5hZGV2LAog CQkJCQlpeCwKIAkJCQkJTlVMTCwgTlVMTCwgTlVMTCk7CiAJaWYgKCFwcm9maWxlKQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5oIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5oCmluZGV4IGM0 NGE5MjAuLmM2NzJhNTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL3BwYXRvbWN0cmwuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9o d21nci9wcGF0b21jdHJsLmgKQEAgLTI5OCw3ICsyOTgsNyBAQCBleHRlcm4gaW50IGF0b21jdHJs X2dldF9tZW1vcnlfcGxsX2RpdmlkZXJzX3ZpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiBleHRl cm4gaW50IGF0b21jdHJsX2dldF9lbmdpbmVfcGxsX2RpdmlkZXJzX2tvbmcoc3RydWN0IHBwX2h3 bWdyICpod21nciwKIAkJCQkJCSB1aW50MzJfdCBjbG9ja192YWx1ZSwKIAkJCQkJCSBwcF9hdG9t Y3RybF9jbG9ja19kaXZpZGVyc19rb25nICpkaXZpZGVycyk7Ci1leHRlcm4gaW50IGF0b21jdHJs X3JlYWRfZWZ1c2Uodm9pZCAqZGV2aWNlLCB1aW50MTZfdCBzdGFydF9pbmRleCwKK2V4dGVybiBp bnQgYXRvbWN0cmxfcmVhZF9lZnVzZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50MTZfdCBz dGFydF9pbmRleCwKIAkJdWludDE2X3QgZW5kX2luZGV4LCB1aW50MzJfdCBtYXNrLCB1aW50MzJf dCAqZWZ1c2UpOwogZXh0ZXJuIGludCBhdG9tY3RybF9jYWxjdWxhdGVfdm9sdGFnZV9ldnZfb25f c2NsayhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50OF90IHZvbHRhZ2VfdHlwZSwKIAkJdWlu dDMyX3Qgc2NsaywgdWludDE2X3QgdmlydHVhbF92b2x0YWdlX0lkLCB1aW50MTZfdCAqdm9sdGFn ZSwgdWludDE2X3QgZHBtX2xldmVsLCBib29sIGRlYnVnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3BwYXRvbWZ3Y3RybC5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tZndjdHJsLmMKaW5kZXggNTVmOWIzMC4uNWZh ODRjYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBh dG9tZndjdHJsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBh dG9tZndjdHJsLmMKQEAgLTIzLDkgKzIzLDkgQEAKIAogI2luY2x1ZGUgInBwYXRvbWZ3Y3RybC5o IgogI2luY2x1ZGUgImF0b21maXJtd2FyZS5oIgorI2luY2x1ZGUgImF0b20uaCIKICNpbmNsdWRl ICJwcF9kZWJ1Zy5oIgogCi0KIHN0YXRpYyBjb25zdCB1bmlvbiBhdG9tX3ZvbHRhZ2Vfb2JqZWN0 X3Y0ICpwcF9hdG9tZndjdHJsX2xvb2t1cF92b2x0YWdlX3R5cGVfdjQoCiAJCWNvbnN0IHN0cnVj dCBhdG9tX3ZvbHRhZ2Vfb2JqZWN0c19pbmZvX3Y0XzEgKnZvbHRhZ2Vfb2JqZWN0X2luZm9fdGFi bGUsCiAJCXVpbnQ4X3Qgdm9sdGFnZV90eXBlLCB1aW50OF90IHZvbHRhZ2VfbW9kZSkKQEAgLTQw LDMzICs0MCwzMiBAQCBzdGF0aWMgY29uc3QgdW5pb24gYXRvbV92b2x0YWdlX29iamVjdF92NCAq cHBfYXRvbWZ3Y3RybF9sb29rdXBfdm9sdGFnZV90eXBlX3Y0KAogCQljb25zdCB1bmlvbiBhdG9t X3ZvbHRhZ2Vfb2JqZWN0X3Y0ICp2b2x0YWdlX29iamVjdCA9CiAJCQkJKGNvbnN0IHVuaW9uIGF0 b21fdm9sdGFnZV9vYmplY3RfdjQgKikoc3RhcnQgKyBvZmZzZXQpOwogCi0gICAgICAgIGlmICh2 b2x0YWdlX3R5cGUgPT0gdm9sdGFnZV9vYmplY3QtPmdwaW9fdm9sdGFnZV9vYmouaGVhZGVyLnZv bHRhZ2VfdHlwZSAmJgotICAgICAgICAgICAgdm9sdGFnZV9tb2RlID09IHZvbHRhZ2Vfb2JqZWN0 LT5ncGlvX3ZvbHRhZ2Vfb2JqLmhlYWRlci52b2x0YWdlX21vZGUpCi0gICAgICAgICAgICByZXR1 cm4gdm9sdGFnZV9vYmplY3Q7CisJaWYgKHZvbHRhZ2VfdHlwZSA9PSB2b2x0YWdlX29iamVjdC0+ Z3Bpb192b2x0YWdlX29iai5oZWFkZXIudm9sdGFnZV90eXBlICYmCisJCXZvbHRhZ2VfbW9kZSA9 PSB2b2x0YWdlX29iamVjdC0+Z3Bpb192b2x0YWdlX29iai5oZWFkZXIudm9sdGFnZV9tb2RlKQor CQlyZXR1cm4gdm9sdGFnZV9vYmplY3Q7CiAKLSAgICAgICAgb2Zmc2V0ICs9IGxlMTZfdG9fY3B1 KHZvbHRhZ2Vfb2JqZWN0LT5ncGlvX3ZvbHRhZ2Vfb2JqLmhlYWRlci5vYmplY3Rfc2l6ZSk7CisJ CW9mZnNldCArPSBsZTE2X3RvX2NwdSh2b2x0YWdlX29iamVjdC0+Z3Bpb192b2x0YWdlX29iai5o ZWFkZXIub2JqZWN0X3NpemUpOwogCi0gICAgfQorCX0KIAotICAgIHJldHVybiBOVUxMOworCXJl dHVybiBOVUxMOwogfQogCiBzdGF0aWMgc3RydWN0IGF0b21fdm9sdGFnZV9vYmplY3RzX2luZm9f djRfMSAqcHBfYXRvbWZ3Y3RybF9nZXRfdm9sdGFnZV9pbmZvX3RhYmxlKAogCQlzdHJ1Y3QgcHBf aHdtZ3IgKmh3bWdyKQogewotICAgIGNvbnN0IHZvaWQgKnRhYmxlX2FkZHJlc3M7Ci0gICAgdWlu dDE2X3QgaWR4OworCWNvbnN0IHZvaWQgKnRhYmxlX2FkZHJlc3M7CisJdWludDE2X3QgaWR4Owog Ci0gICAgaWR4ID0gR2V0SW5kZXhJbnRvTWFzdGVyRGF0YVRhYmxlKHZvbHRhZ2VvYmplY3RfaW5m byk7Ci0gICAgdGFibGVfYWRkcmVzcyA9CWNnc19hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5k ZXZpY2UsCi0gICAgCQlpZHgsIE5VTEwsIE5VTEwsIE5VTEwpOworCWlkeCA9IEdldEluZGV4SW50 b01hc3RlckRhdGFUYWJsZSh2b2x0YWdlb2JqZWN0X2luZm8pOworCXRhYmxlX2FkZHJlc3MgPSBz bXVfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+YWRldiwKKwkJCQkJCWlkeCwgTlVMTCwgTlVM TCwgTlVMTCk7CiAKLSAgICBQUF9BU1NFUlRfV0lUSF9DT0RFKCAKLSAgICAgICAgdGFibGVfYWRk cmVzcywKLSAgICAgICAgIkVycm9yIHJldHJpZXZpbmcgQklPUyBUYWJsZSBBZGRyZXNzISIsCi0g ICAgICAgIHJldHVybiBOVUxMKTsKKwlQUF9BU1NFUlRfV0lUSF9DT0RFKHRhYmxlX2FkZHJlc3Ms CisJCQkiRXJyb3IgcmV0cmlldmluZyBCSU9TIFRhYmxlIEFkZHJlc3MhIiwKKwkJCXJldHVybiBO VUxMKTsKIAotICAgIHJldHVybiAoc3RydWN0IGF0b21fdm9sdGFnZV9vYmplY3RzX2luZm9fdjRf MSAqKXRhYmxlX2FkZHJlc3M7CisJcmV0dXJuIChzdHJ1Y3QgYXRvbV92b2x0YWdlX29iamVjdHNf aW5mb192NF8xICopdGFibGVfYWRkcmVzczsKIH0KIAogLyoqCkBAIC0xNjcsNyArMTY2LDcgQEAg c3RhdGljIHN0cnVjdCBhdG9tX2dwaW9fcGluX2x1dF92Ml8xICpwcF9hdG9tZndjdHJsX2dldF9n cGlvX2xvb2t1cF90YWJsZSgKIAl1aW50MTZfdCBpZHg7CiAKIAlpZHggPSBHZXRJbmRleEludG9N YXN0ZXJEYXRhVGFibGUoZ3Bpb19waW5fbHV0KTsKLQl0YWJsZV9hZGRyZXNzID0JY2dzX2F0b21f Z2V0X2RhdGFfdGFibGUoaHdtZ3ItPmRldmljZSwKKwl0YWJsZV9hZGRyZXNzID0Jc211X2F0b21f Z2V0X2RhdGFfdGFibGUoaHdtZ3ItPmFkZXYsCiAJCQlpZHgsIE5VTEwsIE5VTEwsIE5VTEwpOwog CVBQX0FTU0VSVF9XSVRIX0NPREUodGFibGVfYWRkcmVzcywKIAkJCSJFcnJvciByZXRyaWV2aW5n IEJJT1MgVGFibGUgQWRkcmVzcyEiLApAQCAtMjQ4LDI4ICsyNDcsMzAgQEAgaW50IHBwX2F0b21m d2N0cmxfZ2V0X2dwdV9wbGxfZGl2aWRlcnNfdmVnYTEwKHN0cnVjdCBwcF9od21nciAqaHdtZ3Is CiAJCXVpbnQzMl90IGNsb2NrX3R5cGUsIHVpbnQzMl90IGNsb2NrX3ZhbHVlLAogCQlzdHJ1Y3Qg cHBfYXRvbWZ3Y3RybF9jbG9ja19kaXZpZGVyc19zb2MxNSAqZGl2aWRlcnMpCiB7CisJc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSBod21nci0+YWRldjsKIAlzdHJ1Y3QgY29tcHV0ZV9ncHVf Y2xvY2tfaW5wdXRfcGFyYW1ldGVyX3YxXzggcGxsX3BhcmFtZXRlcnM7CiAJc3RydWN0IGNvbXB1 dGVfZ3B1X2Nsb2NrX291dHB1dF9wYXJhbWV0ZXJfdjFfOCAqcGxsX291dHB1dDsKLQlpbnQgcmVz dWx0OwogCXVpbnQzMl90IGlkeDsKIAogCXBsbF9wYXJhbWV0ZXJzLmdwdWNsb2NrXzEwa2h6ID0g KHVpbnQzMl90KWNsb2NrX3ZhbHVlOwogCXBsbF9wYXJhbWV0ZXJzLmdwdV9jbG9ja190eXBlID0g Y2xvY2tfdHlwZTsKIAogCWlkeCA9IEdldEluZGV4SW50b01hc3RlckNtZFRhYmxlKGNvbXB1dGVn cHVjbG9ja3BhcmFtKTsKLQlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ ZGV2aWNlLCBpZHgsICZwbGxfcGFyYW1ldGVycyk7Ci0KLQlpZiAoIXJlc3VsdCkgewotCQlwbGxf b3V0cHV0ID0gKHN0cnVjdCBjb21wdXRlX2dwdV9jbG9ja19vdXRwdXRfcGFyYW1ldGVyX3YxXzgg KikKLQkJCQkmcGxsX3BhcmFtZXRlcnM7Ci0JCWRpdmlkZXJzLT51bENsb2NrID0gbGUzMl90b19j cHUocGxsX291dHB1dC0+Z3B1Y2xvY2tfMTBraHopOwotCQlkaXZpZGVycy0+dWxEaWQgPSBsZTMy X3RvX2NwdShwbGxfb3V0cHV0LT5kZnNfZGlkKTsKLQkJZGl2aWRlcnMtPnVsUGxsX2ZiX211bHQg PSBsZTMyX3RvX2NwdShwbGxfb3V0cHV0LT5wbGxfZmJfbXVsdCk7Ci0JCWRpdmlkZXJzLT51bFBs bF9zc19mYnNtdWx0ID0gbGUzMl90b19jcHUocGxsX291dHB1dC0+cGxsX3NzX2Zic211bHQpOwot CQlkaXZpZGVycy0+dXNQbGxfc3Nfc2xld19mcmFjID0gbGUxNl90b19jcHUocGxsX291dHB1dC0+ cGxsX3NzX3NsZXdfZnJhYyk7Ci0JCWRpdmlkZXJzLT51Y1BsbF9zc19lbmFibGUgPSBwbGxfb3V0 cHV0LT5wbGxfc3NfZW5hYmxlOwotCX0KLQlyZXR1cm4gcmVzdWx0OworCisJaWYgKGFtZGdwdV9h dG9tX2V4ZWN1dGVfdGFibGUoCisJCWFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQsIGlkeCwg KHVpbnQzMl90ICopJnBsbF9wYXJhbWV0ZXJzKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlwbGxf b3V0cHV0ID0gKHN0cnVjdCBjb21wdXRlX2dwdV9jbG9ja19vdXRwdXRfcGFyYW1ldGVyX3YxXzgg KikKKwkJCSZwbGxfcGFyYW1ldGVyczsKKwlkaXZpZGVycy0+dWxDbG9jayA9IGxlMzJfdG9fY3B1 KHBsbF9vdXRwdXQtPmdwdWNsb2NrXzEwa2h6KTsKKwlkaXZpZGVycy0+dWxEaWQgPSBsZTMyX3Rv X2NwdShwbGxfb3V0cHV0LT5kZnNfZGlkKTsKKwlkaXZpZGVycy0+dWxQbGxfZmJfbXVsdCA9IGxl MzJfdG9fY3B1KHBsbF9vdXRwdXQtPnBsbF9mYl9tdWx0KTsKKwlkaXZpZGVycy0+dWxQbGxfc3Nf ZmJzbXVsdCA9IGxlMzJfdG9fY3B1KHBsbF9vdXRwdXQtPnBsbF9zc19mYnNtdWx0KTsKKwlkaXZp ZGVycy0+dXNQbGxfc3Nfc2xld19mcmFjID0gbGUxNl90b19jcHUocGxsX291dHB1dC0+cGxsX3Nz X3NsZXdfZnJhYyk7CisJZGl2aWRlcnMtPnVjUGxsX3NzX2VuYWJsZSA9IHBsbF9vdXRwdXQtPnBs bF9zc19lbmFibGU7CisKKwlyZXR1cm4gMDsKIH0KIAogaW50IHBwX2F0b21md2N0cmxfZ2V0X2F2 ZnNfaW5mb3JtYXRpb24oc3RydWN0IHBwX2h3bWdyICpod21nciwKQEAgLTI4Myw3ICsyODQsNyBA QCBpbnQgcHBfYXRvbWZ3Y3RybF9nZXRfYXZmc19pbmZvcm1hdGlvbihzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLAogCiAJaWR4ID0gR2V0SW5kZXhJbnRvTWFzdGVyRGF0YVRhYmxlKGFzaWNfcHJvZmls aW5nX2luZm8pOwogCXByb2ZpbGUgPSAoc3RydWN0IGF0b21fYXNpY19wcm9maWxpbmdfaW5mb192 NF8xICopCi0JCQljZ3NfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+ZGV2aWNlLAorCQkJc211 X2F0b21fZ2V0X2RhdGFfdGFibGUoaHdtZ3ItPmFkZXYsCiAJCQkJCWlkeCwgTlVMTCwgTlVMTCwg TlVMTCk7CiAKIAlpZiAoIXByb2ZpbGUpCkBAIC00NjcsNyArNDY4LDcgQEAgaW50IHBwX2F0b21m d2N0cmxfZ2V0X2dwaW9faW5mb3JtYXRpb24oc3RydWN0IHBwX2h3bWdyICpod21nciwKIAogCWlk eCA9IEdldEluZGV4SW50b01hc3RlckRhdGFUYWJsZShzbXVfaW5mbyk7CiAJaW5mbyA9IChzdHJ1 Y3QgYXRvbV9zbXVfaW5mb192M18xICopCi0JCWNnc19hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdy LT5kZXZpY2UsCisJCXNtdV9hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5hZGV2LAogCQkJCWlk eCwgTlVMTCwgTlVMTCwgTlVMTCk7CiAKIAlpZiAoIWluZm8pIHsKQEAgLTQ4OSw2ICs0OTAsNyBA QCBpbnQgcHBfYXRvbWZ3Y3RybF9nZXRfZ3Bpb19pbmZvcm1hdGlvbihzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLAogCiBpbnQgcHBfYXRvbWZ3Y3RybF9fZ2V0X2Nsa19pbmZvcm1hdGlvbl9ieV9jbGtp ZChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBCSU9TX0NMS0lEIGlkLCB1aW50MzJfdCAqZnJlcXVl bmN5KQogeworCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gaHdtZ3ItPmFkZXY7CiAJc3Ry dWN0IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX3BhcmFtZXRlcnNfdjNfMSAgIHBhcmFtZXRlcnM7 CiAJc3RydWN0IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX291dHB1dF9wYXJhbWV0ZXJzX3YzXzEg Km91dHB1dDsKIAl1aW50MzJfdCBpeDsKQEAgLTQ5NywxMyArNDk5LDEzIEBAIGludCBwcF9hdG9t ZndjdHJsX19nZXRfY2xrX2luZm9ybWF0aW9uX2J5X2Nsa2lkKHN0cnVjdCBwcF9od21nciAqaHdt Z3IsIEJJT1NfQ0xLCiAJcGFyYW1ldGVycy5jb21tYW5kID0gR0VUX1NNVV9DTE9DS19JTkZPX1Yz XzFfR0VUX0NMT0NLX0ZSRVE7CiAKIAlpeCA9IEdldEluZGV4SW50b01hc3RlckNtZFRhYmxlKGdl dHNtdWNsb2NraW5mbyk7Ci0JaWYgKCFjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ZGV2 aWNlLCBpeCwgJnBhcmFtZXRlcnMpKSB7Ci0JCW91dHB1dCA9IChzdHJ1Y3QgYXRvbV9nZXRfc211 X2Nsb2NrX2luZm9fb3V0cHV0X3BhcmFtZXRlcnNfdjNfMSAqKSZwYXJhbWV0ZXJzOwotCQkqZnJl cXVlbmN5ID0gb3V0cHV0LT5hdG9tX3NtdV9vdXRwdXRjbGtmcmVxLnNtdV9jbG9ja19mcmVxX2h6 IC8gMTAwMDA7Ci0JfSBlbHNlIHsKLQkJcHJfaW5mbygiRXJyb3IgZXhlY3V0ZV90YWJsZSBnZXRz bXVjbG9ja2luZm8hIik7Ci0JCXJldHVybiAtMTsKLQl9CisKKwlpZiAoYW1kZ3B1X2F0b21fZXhl Y3V0ZV90YWJsZSgKKwkJYWRldi0+bW9kZV9pbmZvLmF0b21fY29udGV4dCwgaXgsICh1aW50MzJf dCAqKSZwYXJhbWV0ZXJzKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlvdXRwdXQgPSAoc3RydWN0 IGF0b21fZ2V0X3NtdV9jbG9ja19pbmZvX291dHB1dF9wYXJhbWV0ZXJzX3YzXzEgKikmcGFyYW1l dGVyczsKKwkqZnJlcXVlbmN5ID0gb3V0cHV0LT5hdG9tX3NtdV9vdXRwdXRjbGtmcmVxLnNtdV9j bG9ja19mcmVxX2h6IC8gMTAwMDA7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTUxNyw3ICs1MTksNyBA QCBpbnQgcHBfYXRvbWZ3Y3RybF9nZXRfdmJpb3NfYm9vdHVwX3ZhbHVlcyhzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLAogCiAJaXggPSBHZXRJbmRleEludG9NYXN0ZXJEYXRhVGFibGUoZmlybXdhcmVp bmZvKTsKIAlpbmZvID0gKHN0cnVjdCBhdG9tX2Zpcm13YXJlX2luZm9fdjNfMSAqKQotCQljZ3Nf YXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+ZGV2aWNlLAorCQlzbXVfYXRvbV9nZXRfZGF0YV90 YWJsZShod21nci0+YWRldiwKIAkJCQlpeCwgTlVMTCwgTlVMTCwgTlVMTCk7CiAKIAlpZiAoIWlu Zm8pIHsKQEAgLTU1Myw3ICs1NTUsNyBAQCBpbnQgcHBfYXRvbWZ3Y3RybF9nZXRfc21jX2RwbV9p bmZvcm1hdGlvbihzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAogCiAJaXggPSBHZXRJbmRleEludG9N YXN0ZXJEYXRhVGFibGUoc21jX2RwbV9pbmZvKTsKIAlpbmZvID0gKHN0cnVjdCBhdG9tX3NtY19k cG1faW5mb192NF8xICopCi0JCWNnc19hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZpY2Us CisJCXNtdV9hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5hZGV2LAogCQkJCWl4LCBOVUxMLCBO VUxMLCBOVUxMKTsKIAlpZiAoIWluZm8pIHsKIAkJcHJfaW5mbygiRXJyb3IgcmV0cmlldmluZyBC SU9TIFRhYmxlIEFkZHJlc3MhIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9wcm9jZXNzX3BwdGFibGVzX3YxXzAuYyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2h3bWdyL3Byb2Nlc3NfcHB0YWJsZXNfdjFfMC5jCmluZGV4IGM5ZWVjY2Uu Ljg1MTY1MTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdy L3Byb2Nlc3NfcHB0YWJsZXNfdjFfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2h3bWdyL3Byb2Nlc3NfcHB0YWJsZXNfdjFfMC5jCkBAIC0xNDEsNyArMTQxLDcgQEAgc3Rh dGljIGNvbnN0IHZvaWQgKmdldF9wb3dlcnBsYXlfdGFibGUoc3RydWN0IHBwX2h3bWdyICpod21n cikKIAogCWlmICghdGFibGVfYWRkcmVzcykgewogCQl0YWJsZV9hZGRyZXNzID0gKEFUT01fVG9u Z2FfUE9XRVJQTEFZVEFCTEUgKikKLQkJCQljZ3NfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+ ZGV2aWNlLAorCQkJCXNtdV9hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5hZGV2LAogCQkJCQkJ aW5kZXgsICZzaXplLCAmZnJldiwgJmNyZXYpOwogCQlod21nci0+c29mdF9wcF90YWJsZSA9IHRh YmxlX2FkZHJlc3M7CS8qQ2FjaGUgdGhlIHJlc3VsdCBpbiBSQU0uKi8KIAkJaHdtZ3ItPnNvZnRf cHBfdGFibGVfc2l6ZSA9IHNpemU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9wcm9jZXNzcHB0YWJsZXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2h3bWdyL3Byb2Nlc3NwcHRhYmxlcy5jCmluZGV4IDM2Y2E3YzQuLmNlNjRkZmEgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3Byb2Nlc3NwcHRh Ymxlcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3Byb2Nlc3Nw cHRhYmxlcy5jCkBAIC04MzcsNyArODM3LDcgQEAgc3RhdGljIGNvbnN0IEFUT01fUFBMSUJfUE9X RVJQTEFZVEFCTEUgKmdldF9wb3dlcnBsYXlfdGFibGUoCiAJCQlod21nci0+c29mdF9wcF90YWJs ZSA9ICZzb2Z0X2R1bW15X3BwX3RhYmxlWzBdOwogCQkJaHdtZ3ItPnNvZnRfcHBfdGFibGVfc2l6 ZSA9IHNpemVvZihzb2Z0X2R1bW15X3BwX3RhYmxlKTsKIAkJfSBlbHNlIHsKLQkJCXRhYmxlX2Fk ZHIgPSBjZ3NfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+ZGV2aWNlLAorCQkJdGFibGVfYWRk ciA9IHNtdV9hdG9tX2dldF9kYXRhX3RhYmxlKGh3bWdyLT5hZGV2LAogCQkJCQlHZXRJbmRleElu dG9NYXN0ZXJUYWJsZShEQVRBLCBQb3dlclBsYXlJbmZvKSwKIAkJCQkJJnNpemUsICZmcmV2LCAm Y3Jldik7CiAJCQlod21nci0+c29mdF9wcF90YWJsZSA9IHRhYmxlX2FkZHI7CkBAIC0xMDU4LDcg KzEwNTgsNyBAQCBzdGF0aWMgaW50IGluaXRfb3ZlcmRyaXZlX2xpbWl0cyhzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyLAogCQlyZXR1cm4gMDsKIAogCS8qIFdlIGFzc3VtZSBoZXJlIHRoYXQgZndfaW5m byBpcyB1bmNoYW5nZWQgaWYgdGhpcyBjYWxsIGZhaWxzLiovCi0JZndfaW5mbyA9IGNnc19hdG9t X2dldF9kYXRhX3RhYmxlKGh3bWdyLT5kZXZpY2UsCisJZndfaW5mbyA9IHNtdV9hdG9tX2dldF9k YXRhX3RhYmxlKGh3bWdyLT5hZGV2LAogCQkJIEdldEluZGV4SW50b01hc3RlclRhYmxlKERBVEEs IEZpcm13YXJlSW5mbyksCiAJCQkgJnNpemUsICZmcmV2LCAmY3Jldik7CiAKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3IuYwppbmRleCBkNDY5MDU1 Li5mNmI3MWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21n ci9zbXU3X2h3bWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Iv c211N19od21nci5jCkBAIC0yOTU3LDggKzI5NTcsNyBAQCBzdGF0aWMgaW50IHNtdTdfZHBtX3Bh dGNoX2Jvb3Rfc3RhdGUoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAkvKiBGaXJzdCByZXRyaWV2 ZSB0aGUgQm9vdCBjbG9ja3MgYW5kIFZEREMgZnJvbSB0aGUgZmlybXdhcmUgaW5mbyB0YWJsZS4K IAkgKiBXZSBhc3N1bWUgaGVyZSB0aGF0IGZ3X2luZm8gaXMgdW5jaGFuZ2VkIGlmIHRoaXMgY2Fs bCBmYWlscy4KIAkgKi8KLQlmd19pbmZvID0gKEFUT01fRklSTVdBUkVfSU5GT19WMl8yICopY2dz X2F0b21fZ2V0X2RhdGFfdGFibGUoCi0JCQlod21nci0+ZGV2aWNlLCBpbmRleCwKKwlmd19pbmZv ID0gKEFUT01fRklSTVdBUkVfSU5GT19WMl8yICopc211X2F0b21fZ2V0X2RhdGFfdGFibGUoaHdt Z3ItPmFkZXYsIGluZGV4LAogCQkJJnNpemUsICZmcmV2LCAmY3Jldik7CiAJaWYgKCFmd19pbmZv KQogCQkvKiBEdXJpbmcgYSB0ZXN0LCB0aGVyZSBpcyBubyBmaXJtd2FyZSBpbmZvIHRhYmxlLiAq LwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211OF9o d21nci5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211OF9od21nci5j CmluZGV4IDc1YTQ2NWYuLjA1MzRiNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv cG93ZXJwbGF5L2h3bWdyL3NtdThfaHdtZ3IuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9zbXU4X2h3bWdyLmMKQEAgLTMxNCw4ICszMTQsNyBAQCBzdGF0aWMgaW50 IHNtdThfZ2V0X3N5c3RlbV9pbmZvX2RhdGEoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAl1aW50 OF90IGZyZXYsIGNyZXY7CiAJdWludDE2X3Qgc2l6ZTsKIAotCWluZm8gPSAoQVRPTV9JTlRFR1JB VEVEX1NZU1RFTV9JTkZPX1YxXzkgKikgY2dzX2F0b21fZ2V0X2RhdGFfdGFibGUoCi0JCQlod21n ci0+ZGV2aWNlLAorCWluZm8gPSAoQVRPTV9JTlRFR1JBVEVEX1NZU1RFTV9JTkZPX1YxXzkgKilz bXVfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+YWRldiwKIAkJCUdldEluZGV4SW50b01hc3Rl clRhYmxlKERBVEEsIEludGVncmF0ZWRTeXN0ZW1JbmZvKSwKIAkJCSZzaXplLCAmZnJldiwgJmNy ZXYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9z bXVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXVfaGVs cGVyLmMKaW5kZXggNTk4MTIyOC4uNTI5YmUzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211X2hlbHBlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvcG93ZXJwbGF5L2h3bWdyL3NtdV9oZWxwZXIuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1 ZGUgInBwX2RlYnVnLmgiCiAjaW5jbHVkZSAicHBhdG9tY3RybC5oIgogI2luY2x1ZGUgInBwc21j LmgiCisjaW5jbHVkZSAiYXRvbS5oIgogCiB1aW50OF90IGNvbnZlcnRfdG9fdmlkKHVpbnQxNl90 IHZkZGMpCiB7CkBAIC02MDgsMyArNjA5LDE4IEBAIGludCBzbXU5X3JlZ2lzdGVyX2lycV9oYW5k bGVycyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCiAJcmV0dXJuIDA7CiB9CisKK3ZvaWQgKnNt dV9hdG9tX2dldF9kYXRhX3RhYmxlKHZvaWQgKmRldiwgdWludDMyX3QgdGFibGUsIHVpbnQxNl90 ICpzaXplLAorCQkJCQkJdWludDhfdCAqZnJldiwgdWludDhfdCAqY3JldikKK3sKKwlzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiA9IGRldjsKKwl1aW50MTZfdCBkYXRhX3N0YXJ0OworCisJaWYg KGFtZGdwdV9hdG9tX3BhcnNlX2RhdGFfaGVhZGVyKAorCQkgICAgYWRldi0+bW9kZV9pbmZvLmF0 b21fY29udGV4dCwgdGFibGUsIHNpemUsCisJCSAgICBmcmV2LCBjcmV2LCAmZGF0YV9zdGFydCkp CisJCXJldHVybiAodWludDhfdCAqKWFkZXYtPm1vZGVfaW5mby5hdG9tX2NvbnRleHQtPmJpb3Mg KworCQkJZGF0YV9zdGFydDsKKworCXJldHVybiBOVUxMOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211X2hlbHBlci5oIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211X2hlbHBlci5oCmluZGV4IGQzN2QxNmUuLjE0ZWUx NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdV9o ZWxwZXIuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXVfaGVs cGVyLmgKQEAgLTgyLDYgKzgyLDkgQEAgaW50IHBobV9pcnFfcHJvY2VzcyhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKIAogaW50IHNtdTlfcmVnaXN0ZXJfaXJxX2hhbmRsZXJzKHN0cnVjdCBw cF9od21nciAqaHdtZ3IpOwogCit2b2lkICpzbXVfYXRvbV9nZXRfZGF0YV90YWJsZSh2b2lkICpk ZXYsIHVpbnQzMl90IHRhYmxlLCB1aW50MTZfdCAqc2l6ZSwKKwkJCQkJCXVpbnQ4X3QgKmZyZXYs IHVpbnQ4X3QgKmNyZXYpOworCiAjZGVmaW5lIFBITV9GSUVMRF9TSElGVChyZWcsIGZpZWxkKSBy ZWcjI19fIyNmaWVsZCMjX19TSElGVAogI2RlZmluZSBQSE1fRklFTERfTUFTSyhyZWcsIGZpZWxk KSByZWcjI19fIyNmaWVsZCMjX01BU0sKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2Ft ZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEwX3Byb2Nlc3NwcHRhYmxlcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEwX3Byb2Nlc3NwcHRhYmxlcy5jCmluZGV4IGM2 MWQwNzQuLjA3NjhkMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5 L2h3bWdyL3ZlZ2ExMF9wcm9jZXNzcHB0YWJsZXMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS9od21nci92ZWdhMTBfcHJvY2Vzc3BwdGFibGVzLmMKQEAgLTUyLDcgKzUyLDcg QEAgc3RhdGljIGNvbnN0IHZvaWQgKmdldF9wb3dlcnBsYXlfdGFibGUoc3RydWN0IHBwX2h3bWdy ICpod21ncikKIAogCWlmICghdGFibGVfYWRkcmVzcykgewogCQl0YWJsZV9hZGRyZXNzID0gKEFU T01fVmVnYTEwX1BPV0VSUExBWVRBQkxFICopCi0JCQkJY2dzX2F0b21fZ2V0X2RhdGFfdGFibGUo aHdtZ3ItPmRldmljZSwgaW5kZXgsCisJCQkJc211X2F0b21fZ2V0X2RhdGFfdGFibGUoaHdtZ3It PmFkZXYsIGluZGV4LAogCQkJCQkJJnNpemUsICZmcmV2LCAmY3Jldik7CiAKIAkJaHdtZ3ItPnNv ZnRfcHBfdGFibGUgPSB0YWJsZV9hZGRyZXNzOwkvKkNhY2hlIHRoZSByZXN1bHQgaW4gUkFNLiov CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92ZWdhMTJf cHJvY2Vzc3BwdGFibGVzLmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci92 ZWdhMTJfcHJvY2Vzc3BwdGFibGVzLmMKaW5kZXggZTdkNzk0OS4uOTI4YmI4ZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvdmVnYTEyX3Byb2Nlc3NwcHRh Ymxlcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3ZlZ2ExMl9w cm9jZXNzcHB0YWJsZXMuYwpAQCAtNTEsNyArNTEsNyBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqZ2V0 X3Bvd2VycGxheV90YWJsZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCiAJaWYgKCF0YWJsZV9h ZGRyZXNzKSB7CiAJCXRhYmxlX2FkZHJlc3MgPSAoQVRPTV9WZWdhMTJfUE9XRVJQTEFZVEFCTEUg KikKLQkJCQljZ3NfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+ZGV2aWNlLCBpbmRleCwKKwkJ CQlzbXVfYXRvbV9nZXRfZGF0YV90YWJsZShod21nci0+YWRldiwgaW5kZXgsCiAJCQkJCQkmc2l6 ZSwgJmZyZXYsICZjcmV2KTsKIAogCQlod21nci0+c29mdF9wcF90YWJsZSA9IHRhYmxlX2FkZHJl c3M7CS8qQ2FjaGUgdGhlIHJlc3VsdCBpbiBSQU0uKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L3NtdW1nci9maWppX3NtdW1nci5jIGIvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvc211bWdyL2Zpamlfc211bWdyLmMKaW5kZXggMzViOTQ3ZS4uMWVlYzUy NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL2Zpamlf c211bWdyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvc211bWdyL2Zpamlf c211bWdyLmMKQEAgLTMzNyw3ICszMzcsNyBAQCBzdGF0aWMgYm9vbCBmaWppX2lzX2h3X2F2ZnNf cHJlc2VudChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCWlmICghaHdtZ3ItPm5vdF92ZikKIAkJ cmV0dXJuIGZhbHNlOwogCi0JaWYgKCFhdG9tY3RybF9yZWFkX2VmdXNlKGh3bWdyLT5kZXZpY2Us IEFWRlNfRU5fTFNCLCBBVkZTX0VOX01TQiwKKwlpZiAoIWF0b21jdHJsX3JlYWRfZWZ1c2UoaHdt Z3IsIEFWRlNfRU5fTFNCLCBBVkZTX0VOX01TQiwKIAkJCW1hc2ssICZlZnVzZSkpIHsKIAkJaWYg KGVmdXNlKQogCQkJcmV0dXJuIHRydWU7Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9hbWQtZ2Z4Cg==