From: Rex Zhu Subject: [PATCH 2/4] drm/amd/powerplay: add ci support in hwmgr Date: Wed, 13 Sep 2017 21:08:34 +0800 Message-ID: <1505308116-31991-2-git-send-email-Rex.Zhu@amd.com> References: <1505308116-31991-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: <1505308116-31991-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 Q2hhbmdlLUlkOiBJZmQ5NjkzNDcwNTM0ZDk2YmZhOTlhNmRlMmZhNzljODRkNmI5NzY2MgpTaWdu ZWQtb2ZmLWJ5OiBSZXggWmh1IDxSZXguWmh1QGFtZC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvaHdtZ3IvaHdtZ3IuYyAgICAgICAgfCAgNTIgKysrKystLS0tCiBkcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9wcGF0b21jdHJsLmMgICB8ICA4NCArKysr KysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3Ry bC5oICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdf aHdtZ3IuYyAgIHwgMTI0ICsrKysrKysrKysrKysrKystLS0tLQogLi4uL2dwdS9kcm0vYW1kL3Bv d2VycGxheS9od21nci9zbXU3X3Bvd2VydHVuZS5jICAgfCAgIDYgKy0KIDUgZmlsZXMgY2hhbmdl ZCwgMjE1IGluc2VydGlvbnMoKyksIDU5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci9od21nci5jCmluZGV4IGYzNjgyMGQuLjFkMjdjYmQgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL2h3bWdyLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvaHdtZ3IuYwpAQCAtNDQsNiArNDQs NyBAQAogc3RhdGljIGludCBmaWppX3NldF9hc2ljX3NwZWNpYWxfY2FwcyhzdHJ1Y3QgcHBfaHdt Z3IgKmh3bWdyKTsKIHN0YXRpYyBpbnQgdG9uZ2Ffc2V0X2FzaWNfc3BlY2lhbF9jYXBzKHN0cnVj dCBwcF9od21nciAqaHdtZ3IpOwogc3RhdGljIGludCB0b3Bhel9zZXRfYXNpY19zcGVjaWFsX2Nh cHMoc3RydWN0IHBwX2h3bWdyICpod21ncik7CitzdGF0aWMgaW50IGNpX3NldF9hc2ljX3NwZWNp YWxfY2FwcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKTsKIAogdWludDhfdCBjb252ZXJ0X3RvX3Zp ZCh1aW50MTZfdCB2ZGRjKQogewpAQCAtNzYsNiArNzcsMTMgQEAgaW50IGh3bWdyX2Vhcmx5X2lu aXQoc3RydWN0IHBwX2luc3RhbmNlICpoYW5kbGUpCiAJaHdtZ3ItPmZhbl9jdHJsX2lzX2luX2Rl ZmF1bHRfbW9kZSA9IHRydWU7CiAKIAlzd2l0Y2ggKGh3bWdyLT5jaGlwX2ZhbWlseSkgeworCWNh c2UgQU1ER1BVX0ZBTUlMWV9DSToKKwkJY2lfc2V0X2FzaWNfc3BlY2lhbF9jYXBzKGh3bWdyKTsK KwkJaHdtZ3ItPmZlYXR1cmVfbWFzayAmPSB+KFBQX1ZCSV9USU1FX1NVUFBPUlRfTUFTSyB8CisJ CQkJCVBQX0VOQUJMRV9HRlhfQ0dfVEhSVV9TTVUpOworCQlod21nci0+cHBfdGFibGVfdmVyc2lv biA9IFBQX1RBQkxFX1YwOworCQlzbXU3X2luaXRfZnVuY3Rpb25fcG9pbnRlcnMoaHdtZ3IpOwor CQlicmVhazsKIAljYXNlIEFNREdQVV9GQU1JTFlfQ1o6CiAJCWN6X2luaXRfZnVuY3Rpb25fcG9p bnRlcnMoaHdtZ3IpOwogCQlicmVhazsKQEAgLTc0OCwyOCArNzU2LDggQEAgdm9pZCBwaG1fYXBw bHlfZGFsX21pbl92b2x0YWdlX3JlcXVlc3Qoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAogdm9p ZCBod21ncl9pbml0X2RlZmF1bHRfY2FwcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogewotCXBo bV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1f UGxhdGZvcm1DYXBzX0Rpc2FibGVWb2x0YWdlVHJhbnNpdGlvbik7Ci0JcGhtX2NhcF91bnNldCho d21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsIFBITV9QbGF0Zm9ybUNhcHNf RGlzYWJsZUVuZ2luZVRyYW5zaXRpb24pOwotCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3Jt X2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX0Rpc2FibGVNZW1vcnlU cmFuc2l0aW9uKTsKLQlwaG1fY2FwX3Vuc2V0KGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBs YXRmb3JtQ2FwcywgUEhNX1BsYXRmb3JtQ2Fwc19EaXNhYmxlTUdDbG9ja0dhdGluZyk7Ci0JcGht X2NhcF91bnNldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsIFBITV9Q bGF0Zm9ybUNhcHNfRGlzYWJsZU1HQ0dUU1NNKTsKLQlwaG1fY2FwX3Vuc2V0KGh3bWdyLT5wbGF0 Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywgUEhNX1BsYXRmb3JtQ2Fwc19EaXNhYmxlTFND bG9ja0dhdGluZyk7Ci0JcGhtX2NhcF91bnNldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5w bGF0Zm9ybUNhcHMsIFBITV9QbGF0Zm9ybUNhcHNfRm9yY2UzRENsb2NrU3VwcG9ydCk7Ci0JcGht X2NhcF91bnNldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsIFBITV9Q bGF0Zm9ybUNhcHNfRGlzYWJsZUxpZ2h0U2xlZXApOwotCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBs YXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX0Rpc2FibGVN Q0xTKTsKLQlwaG1fY2FwX3NldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNh cHMsIFBITV9QbGF0Zm9ybUNhcHNfRGlzYWJsZVBvd2VyR2F0aW5nKTsKLQotCXBobV9jYXBfdW5z ZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1D YXBzX0Rpc2FibGVEUE0pOwotCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0 b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX0Rpc2FibGVTTVVVVkRIYW5kc2hha2Up OwotCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBz LCBQSE1fUGxhdGZvcm1DYXBzX1RoZXJtYWxBdXRvVGhyb3R0bGluZyk7Ci0KIAlwaG1fY2FwX3Vu c2V0KGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywgUEhNX1BsYXRmb3Jt Q2Fwc19QQ0lFUGVyZm9ybWFuY2VSZXF1ZXN0KTsKIAotCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBs YXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX05vT0Q1U3Vw cG9ydCk7Ci0JcGhtX2NhcF91bnNldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9y bUNhcHMsIFBITV9QbGF0Zm9ybUNhcHNfVXNlck1heENsb2NrRm9yTXVsdGlEaXNwbGF5cyk7Ci0K LQlwaG1fY2FwX3Vuc2V0KGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2Fwcywg UEhNX1BsYXRmb3JtQ2Fwc19WcHVSZWNvdmVyeUluUHJvZ3Jlc3MpOwotCiAJcGhtX2NhcF9zZXQo aHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBz X1VWRERQTSk7CiAJcGhtX2NhcF9zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZv cm1DYXBzLCBQSE1fUGxhdGZvcm1DYXBzX1ZDRURQTSk7CiAKQEAgLTc5NCw3ICs3ODIsOCBAQCB2 b2lkIGh3bWdyX2luaXRfZGVmYXVsdF9jYXBzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAKIAlw aG1fY2FwX3NldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCiAJCQkJ CQlQSE1fUGxhdGZvcm1DYXBzX0ZhblNwZWVkSW5UYWJsZUlzUlBNKTsKLQorCXBobV9jYXBfc2V0 KGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKKwkJCQkJCVBITV9QbGF0 Zm9ybUNhcHNfRVZWKTsKIAlyZXR1cm47CiB9CiAKQEAgLTg3Nyw3ICs4NjYsNiBAQCBpbnQgZmlq aV9zZXRfYXNpY19zcGVjaWFsX2NhcHMoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkJCVBITV9Q bGF0Zm9ybUNhcHNfVERSYW1waW5nKTsKIAlwaG1fY2FwX3Vuc2V0KGh3bWdyLT5wbGF0Zm9ybV9k ZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKIAkJCVBITV9QbGF0Zm9ybUNhcHNfVENQUmFtcGluZyk7 Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtODk2LDcgKzg4NCw2IEBAIGludCB0b25nYV9zZXRfYXNp Y19zcGVjaWFsX2NhcHMoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkJICAgICAgUEhNX1BsYXRm b3JtQ2Fwc19VVkRQb3dlckdhdGluZyk7CiAJcGhtX2NhcF91bnNldChod21nci0+cGxhdGZvcm1f ZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCiAJCSAgICAgIFBITV9QbGF0Zm9ybUNhcHNfVkNFUG93 ZXJHYXRpbmcpOwotCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTkxMCw3ICs4OTcsMjQgQEAgaW50IHRv cGF6X3NldF9hc2ljX3NwZWNpYWxfY2FwcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCQkJUEhN X1BsYXRmb3JtQ2Fwc19URFJhbXBpbmcpOwogCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3Jt X2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAogCQkJUEhNX1BsYXRmb3JtQ2Fwc19UQ1BSYW1waW5n KTsKKwlyZXR1cm4gMDsKK30KKworaW50IGNpX3NldF9hc2ljX3NwZWNpYWxfY2FwcyhzdHJ1Y3Qg cHBfaHdtZ3IgKmh3bWdyKQoreworCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2Ny aXB0b3IucGxhdGZvcm1DYXBzLAorCQkJCQkJUEhNX1BsYXRmb3JtQ2Fwc19FVlYpOworCXBobV9j YXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJUEhN X1BsYXRmb3JtQ2Fwc19TUVJhbXBpbmcpOworCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3Jt X2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJUEhNX1BsYXRmb3JtQ2Fwc19EQlJhbXBpbmcp OworCXBobV9jYXBfdW5zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBz LAorCQkJUEhNX1BsYXRmb3JtQ2Fwc19URFJhbXBpbmcpOworCXBobV9jYXBfdW5zZXQoaHdtZ3It PnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAorCQkJUEhNX1BsYXRmb3JtQ2Fwc19U Q1BSYW1waW5nKTsKKwlwaG1fY2FwX3NldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0 Zm9ybUNhcHMsCisJCQlQSE1fUGxhdGZvcm1DYXBzX01lbW9yeVNwcmVhZFNwZWN0cnVtU3VwcG9y dCk7CiAJcGhtX2NhcF9zZXQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBz LAotCQkgICAgUEhNX1BsYXRmb3JtQ2Fwc19FVlYpOworCQkJUEhNX1BsYXRmb3JtQ2Fwc19Fbmdp bmVTcHJlYWRTcGVjdHJ1bVN1cHBvcnQpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5jIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5jCmluZGV4IDk1M2UwYzkuLjkw MDFlZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3Bw YXRvbWN0cmwuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9wcGF0 b21jdHJsLmMKQEAgLTMxNSw4ICszMTUsOCBAQCBpbnQgYXRvbWN0cmxfZ2V0X2VuZ2luZV9wbGxf ZGl2aWRlcnNfa29uZyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAogCQkJCQkgIHVpbnQzMl90IGNs b2NrX3ZhbHVlLAogCQkJCQkgIHBwX2F0b21jdHJsX2Nsb2NrX2RpdmlkZXJzX2tvbmcgKmRpdmlk ZXJzKQogewotCUNPTVBVVEVfTUVNT1JZX0VOR0lORV9QTExfUEFSQU1FVEVSU19WNCBwbGxfcGFy YW1ldGVyczsKIAlpbnQgcmVzdWx0OworCUNPTVBVVEVfTUVNT1JZX0VOR0lORV9QTExfUEFSQU1F VEVSU19WNCBwbGxfcGFyYW1ldGVyczsKIAogCXBsbF9wYXJhbWV0ZXJzLnVsQ2xvY2sgPSBjcHVf dG9fbGUzMihjbG9ja192YWx1ZSk7CiAKQEAgLTQ3MCw3ICs0NzAsNyBAQCB1aW50MzJfdCBhdG9t Y3RybF9nZXRfcmVmZXJlbmNlX2Nsb2NrKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAgKiBTRVRf Vk9MVEFHRV9UWVBFX0FTSUNfTVZEREMsIFNFVF9WT0xUQUdFX1RZUEVfQVNJQ19NVkREUS4KICAq IHZvbHRhZ2VfbW9kZSBpcyBvbmUgb2YgQVRPTV9TRVRfVk9MVEFHRSwgQVRPTV9TRVRfVk9MVEFH RV9QSEFTRQogICovCi1ib29sIGF0b21jdHJsX2lzX3ZvbHRhZ2VfY29udHJvbGVkX2J5X2dwaW9f djMoCitib29sIGF0b21jdHJsX2lzX3ZvbHRhZ2VfY29udHJvbGxlZF9ieV9ncGlvX3YzKAogCQlz dHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLAogCQl1aW50OF90IHZvbHRhZ2VfdHlwZSwKIAkJdWludDhf dCB2b2x0YWdlX21vZGUpCkBAIC0xNDE4LDMgKzE0MTgsODMgQEAgaW50ICBhdG9tY3RybF9nZXRf c3ZpMl9pbmZvKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQ4X3Qgdm9sdGFnZV90eXBlLAog CiAJcmV0dXJuIDA7CiB9CisKK2ludCBhdG9tY3RybF9nZXRfbGVha2FnZV9pZF9mcm9tX2VmdXNl KHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQxNl90ICp2aXJ0dWFsX3ZvbHRhZ2VfaWQpCit7 CisJaW50IHJlc3VsdDsKKwlTRVRfVk9MVEFHRV9QU19BTExPQ0FUSU9OIGFsbG9jYXRpb247CisJ U0VUX1ZPTFRBR0VfUEFSQU1FVEVSU19WMV8zICp2b2x0YWdlX3BhcmFtZXRlcnMgPQorCQkJKFNF VF9WT0xUQUdFX1BBUkFNRVRFUlNfVjFfMyAqKSZhbGxvY2F0aW9uLnNBU0lDU2V0Vm9sdGFnZTsK KworCXZvbHRhZ2VfcGFyYW1ldGVycy0+dWNWb2x0YWdlTW9kZSA9IEFUT01fR0VUX0xFQUtBR0Vf SUQ7CisKKwlyZXN1bHQgPSBjZ3NfYXRvbV9leGVjX2NtZF90YWJsZShod21nci0+ZGV2aWNlLAor CQkJR2V0SW5kZXhJbnRvTWFzdGVyVGFibGUoQ09NTUFORCwgU2V0Vm9sdGFnZSksCisJCQl2b2x0 YWdlX3BhcmFtZXRlcnMpOworCisJKnZpcnR1YWxfdm9sdGFnZV9pZCA9IHZvbHRhZ2VfcGFyYW1l dGVycy0+dXNWb2x0YWdlTGV2ZWw7CisKKwlyZXR1cm4gcmVzdWx0OworfQorCitpbnQgYXRvbWN0 cmxfZ2V0X2xlYWthZ2VfdmRkY19iYXNlX29uX2xlYWthZ2Uoc3RydWN0IHBwX2h3bWdyICpod21n ciwKKwkJCQkJdWludDE2X3QgKnZkZGMsIHVpbnQxNl90ICp2ZGRjaSwKKwkJCQkJdWludDE2X3Qg dmlydHVhbF92b2x0YWdlX2lkLAorCQkJCQl1aW50MTZfdCBlZnVzZV92b2x0YWdlX2lkKQorewor CWludCBpLCBqOworCWludCBpeDsKKwl1MTYgKmxlYWthZ2VfYmluLCAqdmRkY19pZF9idWYsICp2 ZGRjX2J1ZiwgKnZkZGNpX2lkX2J1ZiwgKnZkZGNpX2J1ZjsKKwlBVE9NX0FTSUNfUFJPRklMSU5H X0lORk9fVjJfMSAqcHJvZmlsZTsKKworCSp2ZGRjID0gMDsKKwkqdmRkY2kgPSAwOworCisJaXgg PSBHZXRJbmRleEludG9NYXN0ZXJUYWJsZShEQVRBLCBBU0lDX1Byb2ZpbGluZ0luZm8pOworCisJ cHJvZmlsZSA9IChBVE9NX0FTSUNfUFJPRklMSU5HX0lORk9fVjJfMSAqKQorCQkJY2dzX2F0b21f Z2V0X2RhdGFfdGFibGUoaHdtZ3ItPmRldmljZSwKKwkJCQkJaXgsCisJCQkJCU5VTEwsIE5VTEws IE5VTEwpOworCWlmICghcHJvZmlsZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoKHByb2Zp bGUtPmFzSGVhZGVyLnVjVGFibGVGb3JtYXRSZXZpc2lvbiA+PSAyKSAmJgorCQkocHJvZmlsZS0+ YXNIZWFkZXIudWNUYWJsZUNvbnRlbnRSZXZpc2lvbiA+PSAxKSAmJgorCQkocHJvZmlsZS0+YXNI ZWFkZXIudXNTdHJ1Y3R1cmVTaXplID49IHNpemVvZihBVE9NX0FTSUNfUFJPRklMSU5HX0lORk9f VjJfMSkpKSB7CisJCWxlYWthZ2VfYmluID0gKHUxNiAqKSgoY2hhciAqKXByb2ZpbGUgKyBwcm9m aWxlLT51c0xlYWthZ2VCaW5BcnJheU9mZnNldCk7CisJCXZkZGNfaWRfYnVmID0gKHUxNiAqKSgo Y2hhciAqKXByb2ZpbGUgKyBwcm9maWxlLT51c0VsYlZERENfSWRBcnJheU9mZnNldCk7CisJCXZk ZGNfYnVmID0gKHUxNiAqKSgoY2hhciAqKXByb2ZpbGUgKyBwcm9maWxlLT51c0VsYlZERENfTGV2 ZWxBcnJheU9mZnNldCk7CisJCWlmIChwcm9maWxlLT51Y0VsYlZERENfTnVtID4gMCkgeworCQkJ Zm9yIChpID0gMDsgaSA8IHByb2ZpbGUtPnVjRWxiVkREQ19OdW07IGkrKykgeworCQkJCWlmICh2 ZGRjX2lkX2J1ZltpXSA9PSB2aXJ0dWFsX3ZvbHRhZ2VfaWQpIHsKKwkJCQkJZm9yIChqID0gMDsg aiA8IHByb2ZpbGUtPnVjTGVha2FnZUJpbk51bTsgaisrKSB7CisJCQkJCQlpZiAoZWZ1c2Vfdm9s dGFnZV9pZCA8PSBsZWFrYWdlX2JpbltqXSkgeworCQkJCQkJCSp2ZGRjID0gdmRkY19idWZbaiAq IHByb2ZpbGUtPnVjRWxiVkREQ19OdW0gKyBpXTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJ CQkJfQorCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCX0KKworCQl2ZGRjaV9pZF9idWYgPSAo dTE2ICopKChjaGFyICopcHJvZmlsZSArIHByb2ZpbGUtPnVzRWxiVkREQ0lfSWRBcnJheU9mZnNl dCk7CisJCXZkZGNpX2J1ZiAgID0gKHUxNiAqKSgoY2hhciAqKXByb2ZpbGUgKyBwcm9maWxlLT51 c0VsYlZERENJX0xldmVsQXJyYXlPZmZzZXQpOworCQlpZiAocHJvZmlsZS0+dWNFbGJWRERDSV9O dW0gPiAwKSB7CisJCQlmb3IgKGkgPSAwOyBpIDwgcHJvZmlsZS0+dWNFbGJWRERDSV9OdW07IGkr KykgeworCQkJCWlmICh2ZGRjaV9pZF9idWZbaV0gPT0gdmlydHVhbF92b2x0YWdlX2lkKSB7CisJ CQkJCWZvciAoaiA9IDA7IGogPCBwcm9maWxlLT51Y0xlYWthZ2VCaW5OdW07IGorKykgeworCQkJ CQkJaWYgKGVmdXNlX3ZvbHRhZ2VfaWQgPD0gbGVha2FnZV9iaW5bal0pIHsKKwkJCQkJCQkqdmRk Y2kgPSB2ZGRjaV9idWZbaiAqIHByb2ZpbGUtPnVjRWxiVkREQ19OdW0gKyBpXTsKKwkJCQkJCQli cmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisJCX0KKwl9 CisKKwlyZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJw bGF5L2h3bWdyL3BwYXRvbWN0cmwuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3 bWdyL3BwYXRvbWN0cmwuaAppbmRleCBlOWZlMmU4Li5jNDRhOTIwIDEwMDY0NAotLS0gYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9wcGF0b21jdHJsLmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3IvcHBhdG9tY3RybC5oCkBAIC0yOTEsNyArMjkx LDcgQEAgc3RydWN0IHBwX2F0b21fY3RybF9fYXZmc19wYXJhbWV0ZXJzIHsKIGV4dGVybiBpbnQg YXRvbWN0cmxfZ2V0X21lbW9yeV9wbGxfZGl2aWRlcnNfc2koc3RydWN0IHBwX2h3bWdyICpod21n ciwgdWludDMyX3QgY2xvY2tfdmFsdWUsIHBwX2F0b21jdHJsX21lbW9yeV9jbG9ja19wYXJhbSAq bXBsbF9wYXJhbSwgYm9vbCBzdHJvYmVfbW9kZSk7CiBleHRlcm4gaW50IGF0b21jdHJsX2dldF9l bmdpbmVfcGxsX2RpdmlkZXJzX3ZpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQzMl90IGNs b2NrX3ZhbHVlLCBwcF9hdG9tY3RybF9jbG9ja19kaXZpZGVyc192aSAqZGl2aWRlcnMpOwogZXh0 ZXJuIGludCBhdG9tY3RybF9nZXRfZGZzX3BsbF9kaXZpZGVyc192aShzdHJ1Y3QgcHBfaHdtZ3Ig Kmh3bWdyLCB1aW50MzJfdCBjbG9ja192YWx1ZSwgcHBfYXRvbWN0cmxfY2xvY2tfZGl2aWRlcnNf dmkgKmRpdmlkZXJzKTsKLWV4dGVybiBib29sIGF0b21jdHJsX2lzX3ZvbHRhZ2VfY29udHJvbGVk X2J5X2dwaW9fdjMoc3RydWN0IHBwX2h3bWdyICpod21nciwgdWludDhfdCB2b2x0YWdlX3R5cGUs IHVpbnQ4X3Qgdm9sdGFnZV9tb2RlKTsKK2V4dGVybiBib29sIGF0b21jdHJsX2lzX3ZvbHRhZ2Vf Y29udHJvbGxlZF9ieV9ncGlvX3YzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQ4X3Qgdm9s dGFnZV90eXBlLCB1aW50OF90IHZvbHRhZ2VfbW9kZSk7CiBleHRlcm4gaW50IGF0b21jdHJsX2dl dF92b2x0YWdlX3RhYmxlX3YzKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQ4X3Qgdm9sdGFn ZV90eXBlLCB1aW50OF90IHZvbHRhZ2VfbW9kZSwgcHBfYXRvbWN0cmxfdm9sdGFnZV90YWJsZSAq dm9sdGFnZV90YWJsZSk7CiBleHRlcm4gaW50IGF0b21jdHJsX2dldF9tZW1vcnlfcGxsX2Rpdmlk ZXJzX3ZpKHN0cnVjdCBwcF9od21nciAqaHdtZ3IsCiAJCXVpbnQzMl90IGNsb2NrX3ZhbHVlLCBw cF9hdG9tY3RybF9tZW1vcnlfY2xvY2tfcGFyYW0gKm1wbGxfcGFyYW0pOwpAQCAtMzE0LDUgKzMx NCwxMSBAQCBleHRlcm4gaW50IGF0b21jdHJsX2dldF92b2x0YWdlX2V2dl9vbl9zY2xrX2FpKHN0 cnVjdCBwcF9od21nciAqaHdtZ3IsIHVpbnQ4X3QgdgogZXh0ZXJuIGludCAgYXRvbWN0cmxfZ2V0 X3N2aTJfaW5mbyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50OF90IHZvbHRhZ2VfdHlwZSwK IAkJCQl1aW50OF90ICpzdmRfZ3Bpb19pZCwgdWludDhfdCAqc3ZjX2dwaW9faWQsCiAJCQkJdWlu dDE2X3QgKmxvYWRfbGluZSk7CisKK2V4dGVybiBpbnQgYXRvbWN0cmxfZ2V0X2xlYWthZ2VfdmRk Y19iYXNlX29uX2xlYWthZ2Uoc3RydWN0IHBwX2h3bWdyICpod21nciwKKwkJCQkJdWludDE2X3Qg KnZkZGMsIHVpbnQxNl90ICp2ZGRjaSwKKwkJCQkJdWludDE2X3QgdmlydHVhbF92b2x0YWdlX2lk LAorCQkJCQl1aW50MTZfdCBlZnVzZV92b2x0YWdlX2lkKTsKK2V4dGVybiBpbnQgYXRvbWN0cmxf Z2V0X2xlYWthZ2VfaWRfZnJvbV9lZnVzZShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCB1aW50MTZf dCAqdmlydHVhbF92b2x0YWdlX2lkKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU3X2h3bWdyLmMgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL3Bvd2VycGxheS9od21nci9zbXU3X2h3bWdyLmMKaW5kZXggYjFhZDQyNC4uNDUwNDVhNiAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211N19od21n ci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfaHdtZ3Iu YwpAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CiAjaW5jbHVkZSA8YXNt L2RpdjY0Lmg+CiAjaW5jbHVkZSAibGludXgvZGVsYXkuaCIKKyNpbmNsdWRlIDxkcm0vYW1kZ3B1 X2RybS5oPgogI2luY2x1ZGUgInBwX2FjcGkuaCIKICNpbmNsdWRlICJwcGF0b21jdHJsLmgiCiAj aW5jbHVkZSAiYXRvbWJpb3MuaCIKQEAgLTU1NSw3ICs1NTYsNiBAQCBzdGF0aWMgaW50IHNtdTdf c2V0dXBfZGVmYXVsdF9wY2llX3RhYmxlKHN0cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJcGhtX3Jl c2V0X3NpbmdsZV9kcG1fdGFibGUoJmRhdGEtPmRwbV90YWJsZS5wY2llX3NwZWVkX3RhYmxlLAog CQkJCQl0bXAsCiAJCQkJCU1BWF9SRUdVTEFSX0RQTV9OVU1CRVIpOwotCiAJaWYgKHBjaWVfdGFi bGUgIT0gTlVMTCkgewogCQkvKiBtYXhfZW50cnkgaXMgdXNlZCB0byBtYWtlIHN1cmUgd2UgcmVz ZXJ2ZSBvbmUgUENJRSBsZXZlbAogCQkgKiBmb3IgYm9vdCBsZXZlbCAoZml4IGZvciBBK0EgUFNQ UCBpc3N1ZSkuCkBAIC02ODksNyArNjg5LDcgQEAgc3RhdGljIGludCBzbXU3X3NldHVwX2RwbV90 YWJsZXNfdjAoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkJCQlhbGxvd2VkX3ZkZF9zY2xrX3Rh YmxlLT5lbnRyaWVzW2ldLmNsaykgewogCQkJZGF0YS0+ZHBtX3RhYmxlLnNjbGtfdGFibGUuZHBt X2xldmVsc1tkYXRhLT5kcG1fdGFibGUuc2Nsa190YWJsZS5jb3VudF0udmFsdWUgPQogCQkJCWFs bG93ZWRfdmRkX3NjbGtfdGFibGUtPmVudHJpZXNbaV0uY2xrOwotCQkJZGF0YS0+ZHBtX3RhYmxl LnNjbGtfdGFibGUuZHBtX2xldmVsc1tkYXRhLT5kcG1fdGFibGUuc2Nsa190YWJsZS5jb3VudF0u ZW5hYmxlZCA9IDE7IC8qKGk9PTApID8gMSA6IDA7IHRvIGRvICovCisJCQlkYXRhLT5kcG1fdGFi bGUuc2Nsa190YWJsZS5kcG1fbGV2ZWxzW2RhdGEtPmRwbV90YWJsZS5zY2xrX3RhYmxlLmNvdW50 XS5lbmFibGVkID0gKGkgPT0gMCkgPyAxIDogMDsKIAkJCWRhdGEtPmRwbV90YWJsZS5zY2xrX3Rh YmxlLmNvdW50Kys7CiAJCX0KIAl9CkBAIC03MDMsNyArNzAzLDcgQEAgc3RhdGljIGludCBzbXU3 X3NldHVwX2RwbV90YWJsZXNfdjAoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAkJCWFsbG93ZWRf dmRkX21jbGtfdGFibGUtPmVudHJpZXNbaV0uY2xrKSB7CiAJCQlkYXRhLT5kcG1fdGFibGUubWNs a190YWJsZS5kcG1fbGV2ZWxzW2RhdGEtPmRwbV90YWJsZS5tY2xrX3RhYmxlLmNvdW50XS52YWx1 ZSA9CiAJCQkJYWxsb3dlZF92ZGRfbWNsa190YWJsZS0+ZW50cmllc1tpXS5jbGs7Ci0JCQlkYXRh LT5kcG1fdGFibGUubWNsa190YWJsZS5kcG1fbGV2ZWxzW2RhdGEtPmRwbV90YWJsZS5tY2xrX3Rh YmxlLmNvdW50XS5lbmFibGVkID0gMTsgLyooaT09MCkgPyAxIDogMDsgKi8KKwkJCWRhdGEtPmRw bV90YWJsZS5tY2xrX3RhYmxlLmRwbV9sZXZlbHNbZGF0YS0+ZHBtX3RhYmxlLm1jbGtfdGFibGUu Y291bnRdLmVuYWJsZWQgPSAoaSA9PSAwKSA/IDEgOiAwOwogCQkJZGF0YS0+ZHBtX3RhYmxlLm1j bGtfdGFibGUuY291bnQrKzsKIAkJfQogCX0KQEAgLTk2MywxMyArOTYzLDI0IEBAIHN0YXRpYyBp bnQgc211N19lbmFibGVfc2Nsa19tY2xrX2RwbShzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCiAJ CVBITV9XUklURV9GSUVMRChod21nci0+ZGV2aWNlLCBNQ19TRVFfQ05UTF8zLCBDQUNfRU4sIDB4 MSk7CiAKLQkJY2dzX3dyaXRlX2luZF9yZWdpc3Rlcihod21nci0+ZGV2aWNlLCBDR1NfSU5EX1JF R19fU01DLCBpeExDQUNfTUMwX0NOVEwsIDB4NSk7Ci0JCWNnc193cml0ZV9pbmRfcmVnaXN0ZXIo aHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywgaXhMQ0FDX01DMV9DTlRMLCAweDUpOwot CQljZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRfUkVHX19TTUMs IGl4TENBQ19DUExfQ05UTCwgMHgxMDAwMDUpOwotCQl1ZGVsYXkoMTApOwotCQljZ3Nfd3JpdGVf aW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRfUkVHX19TTUMsIGl4TENBQ19NQzBf Q05UTCwgMHg0MDAwMDUpOwotCQljZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2Us IENHU19JTkRfUkVHX19TTUMsIGl4TENBQ19NQzFfQ05UTCwgMHg0MDAwMDUpOwotCQljZ3Nfd3Jp dGVfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRfUkVHX19TTUMsIGl4TENBQ19D UExfQ05UTCwgMHg1MDAwMDUpOworCisJCWlmIChod21nci0+Y2hpcF9mYW1pbHkgPT0gQU1ER1BV X0ZBTUlMWV9DSSkgeworCQkJY2dzX3dyaXRlX2luZF9yZWdpc3Rlcihod21nci0+ZGV2aWNlLCBD R1NfSU5EX1JFR19fU01DLCAweGMwNDAwZDMwLCAweDUpOworCQkJY2dzX3dyaXRlX2luZF9yZWdp c3Rlcihod21nci0+ZGV2aWNlLCBDR1NfSU5EX1JFR19fU01DLCAweGMwNDAwZDNjLCAweDUpOwor CQkJY2dzX3dyaXRlX2luZF9yZWdpc3Rlcihod21nci0+ZGV2aWNlLCBDR1NfSU5EX1JFR19fU01D LCAweGMwNDAwZDgwLCAweDEwMDAwNSk7CisJCQl1ZGVsYXkoMTApOworCQkJY2dzX3dyaXRlX2lu ZF9yZWdpc3Rlcihod21nci0+ZGV2aWNlLCBDR1NfSU5EX1JFR19fU01DLCAweGMwNDAwZDMwLCAw eDQwMDAwNSk7CisJCQljZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19J TkRfUkVHX19TTUMsIDB4YzA0MDBkM2MsIDB4NDAwMDA1KTsKKwkJCWNnc193cml0ZV9pbmRfcmVn aXN0ZXIoaHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywgMHhjMDQwMGQ4MCwgMHg1MDAw MDUpOworCQl9IGVsc2UgeworCQkJY2dzX3dyaXRlX2luZF9yZWdpc3Rlcihod21nci0+ZGV2aWNl LCBDR1NfSU5EX1JFR19fU01DLCBpeExDQUNfTUMwX0NOVEwsIDB4NSk7CisJCQljZ3Nfd3JpdGVf aW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRfUkVHX19TTUMsIGl4TENBQ19NQzFf Q05UTCwgMHg1KTsKKwkJCWNnc193cml0ZV9pbmRfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgQ0dT X0lORF9SRUdfX1NNQywgaXhMQ0FDX0NQTF9DTlRMLCAweDEwMDAwNSk7CisJCQl1ZGVsYXkoMTAp OworCQkJY2dzX3dyaXRlX2luZF9yZWdpc3Rlcihod21nci0+ZGV2aWNlLCBDR1NfSU5EX1JFR19f U01DLCBpeExDQUNfTUMwX0NOVEwsIDB4NDAwMDA1KTsKKwkJCWNnc193cml0ZV9pbmRfcmVnaXN0 ZXIoaHdtZ3ItPmRldmljZSwgQ0dTX0lORF9SRUdfX1NNQywgaXhMQ0FDX01DMV9DTlRMLCAweDQw MDAwNSk7CisJCQljZ3Nfd3JpdGVfaW5kX3JlZ2lzdGVyKGh3bWdyLT5kZXZpY2UsIENHU19JTkRf UkVHX19TTUMsIGl4TENBQ19DUExfQ05UTCwgMHg1MDAwMDUpOworCQl9CiAJfQogCiAJcmV0dXJu IDA7CkBAIC05OTgsNiArMTAwOSwxMCBAQCBzdGF0aWMgaW50IHNtdTdfc3RhcnRfZHBtKHN0cnVj dCBwcF9od21nciAqaHdtZ3IpCiAJUEhNX1dSSVRFX0lORElSRUNUX0ZJRUxEKGh3bWdyLT5kZXZp Y2UsIENHU19JTkRfUkVHX19QQ0lFLAogCQkJU1dSU1RfQ09NTUFORF8xLCBSRVNFVExDLCAweDAp OwogCisJaWYgKGh3bWdyLT5jaGlwX2ZhbWlseSA9PSBBTURHUFVfRkFNSUxZX0NJKQorCQljZ3Nf d3JpdGVfcmVnaXN0ZXIoaHdtZ3ItPmRldmljZSwgMHgxNDg4LAorCQkJKGNnc19yZWFkX3JlZ2lz dGVyKGh3bWdyLT5kZXZpY2UsIDB4MTQ4OCkgJiB+MHgxKSk7CisKIAlpZiAoc211N19lbmFibGVf c2Nsa19tY2xrX2RwbShod21ncikpIHsKIAkJcHJfZXJyKCJGYWlsZWQgdG8gZW5hYmxlIFNjbGsg RFBNIGFuZCBNY2xrIERQTSEiKTsKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xMzg5LDE2ICsxNDA0 LDMzIEBAIHN0YXRpYyB2b2lkIHNtdTdfaW5pdF9kcG1fZGVmYXVsdHMoc3RydWN0IHBwX2h3bWdy ICpod21ncikKIAkJCQkJCSZ0bXAzKTsKIAkJdG1wMyA9ICh0bXAzID4+IDUpICYgMHgzOwogCQlk YXRhLT52ZGRjX3BoYXNlX3NoZWRfY29udHJvbCA9ICgodG1wMyA8PCAxKSB8ICh0bXAzID4+IDEp KSAmIDB4MzsKKwl9IGVsc2UgaWYgKGh3bWdyLT5jaGlwX2ZhbWlseSA9PSBBTURHUFVfRkFNSUxZ X0NJKSB7CisJCWRhdGEtPnZkZGNfcGhhc2Vfc2hlZF9jb250cm9sID0gMTsKKwl9IGVsc2Ugewor CQlkYXRhLT52ZGRjX3BoYXNlX3NoZWRfY29udHJvbCA9IDA7CisJfQorCisJaWYgKGh3bWdyLT5j aGlwX2lkICA9PSBDSElQX0hBV0FJSSkgeworCQlkYXRhLT50aGVybWFsX3RlbXBfc2V0dGluZy50 ZW1wZXJhdHVyZV9sb3cgPSA5NDUwMDsKKwkJZGF0YS0+dGhlcm1hbF90ZW1wX3NldHRpbmcudGVt cGVyYXR1cmVfaGlnaCA9IDk1MDAwOworCQlkYXRhLT50aGVybWFsX3RlbXBfc2V0dGluZy50ZW1w ZXJhdHVyZV9zaHV0ZG93biA9IDEwNDAwMDsKKwl9IGVsc2UgeworCQlkYXRhLT50aGVybWFsX3Rl bXBfc2V0dGluZy50ZW1wZXJhdHVyZV9sb3cgPSA5OTUwMDsKKwkJZGF0YS0+dGhlcm1hbF90ZW1w X3NldHRpbmcudGVtcGVyYXR1cmVfaGlnaCA9IDEwMDAwMDsKKwkJZGF0YS0+dGhlcm1hbF90ZW1w X3NldHRpbmcudGVtcGVyYXR1cmVfc2h1dGRvd24gPSAxMDQwMDA7CiAJfQogCiAJZGF0YS0+ZmFz dF93YXRlcm1hcmtfdGhyZXNob2xkID0gMTAwOwotCWlmIChhdG9tY3RybF9pc192b2x0YWdlX2Nv bnRyb2xlZF9ieV9ncGlvX3YzKGh3bWdyLAorCWlmIChhdG9tY3RybF9pc192b2x0YWdlX2NvbnRy b2xsZWRfYnlfZ3Bpb192Myhod21nciwKIAkJCVZPTFRBR0VfVFlQRV9WRERDLCBWT0xUQUdFX09C Sl9TVklEMikpCiAJCWRhdGEtPnZvbHRhZ2VfY29udHJvbCA9IFNNVTdfVk9MVEFHRV9DT05UUk9M X0JZX1NWSUQyOworCWVsc2UgaWYgKGF0b21jdHJsX2lzX3ZvbHRhZ2VfY29udHJvbGxlZF9ieV9n cGlvX3YzKGh3bWdyLAorCQkJVk9MVEFHRV9UWVBFX1ZEREMsIFZPTFRBR0VfT0JKX0dQSU9fTFVU KSkKKwkJZGF0YS0+dm9sdGFnZV9jb250cm9sID0gU01VN19WT0xUQUdFX0NPTlRST0xfQllfR1BJ TzsKIAogCWlmIChwaG1fY2FwX2VuYWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxh dGZvcm1DYXBzLAogCQkJUEhNX1BsYXRmb3JtQ2Fwc19Db250cm9sVkRER0ZYKSkgewotCQlpZiAo YXRvbWN0cmxfaXNfdm9sdGFnZV9jb250cm9sZWRfYnlfZ3Bpb192Myhod21nciwKKwkJaWYgKGF0 b21jdHJsX2lzX3ZvbHRhZ2VfY29udHJvbGxlZF9ieV9ncGlvX3YzKGh3bWdyLAogCQkJVk9MVEFH RV9UWVBFX1ZEREdGWCwgVk9MVEFHRV9PQkpfU1ZJRDIpKSB7CiAJCQlkYXRhLT52ZGRfZ2Z4X2Nv bnRyb2wgPSBTTVU3X1ZPTFRBR0VfQ09OVFJPTF9CWV9TVklEMjsKIAkJfQpAQCAtMTQwNiwyNSAr MTQzOCwyNCBAQCBzdGF0aWMgdm9pZCBzbXU3X2luaXRfZHBtX2RlZmF1bHRzKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IpCiAKIAlpZiAocGhtX2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNj cmlwdG9yLnBsYXRmb3JtQ2FwcywKIAkJCVBITV9QbGF0Zm9ybUNhcHNfRW5hYmxlTVZERENvbnRy b2wpKSB7Ci0JCWlmIChhdG9tY3RybF9pc192b2x0YWdlX2NvbnRyb2xlZF9ieV9ncGlvX3YzKGh3 bWdyLAorCQlpZiAoYXRvbWN0cmxfaXNfdm9sdGFnZV9jb250cm9sbGVkX2J5X2dwaW9fdjMoaHdt Z3IsCiAJCQkJVk9MVEFHRV9UWVBFX01WRERDLCBWT0xUQUdFX09CSl9HUElPX0xVVCkpCiAJCQlk YXRhLT5tdmRkX2NvbnRyb2wgPSBTTVU3X1ZPTFRBR0VfQ09OVFJPTF9CWV9HUElPOwotCQllbHNl IGlmIChhdG9tY3RybF9pc192b2x0YWdlX2NvbnRyb2xlZF9ieV9ncGlvX3YzKGh3bWdyLAorCQll bHNlIGlmIChhdG9tY3RybF9pc192b2x0YWdlX2NvbnRyb2xsZWRfYnlfZ3Bpb192Myhod21nciwK IAkJCQlWT0xUQUdFX1RZUEVfTVZEREMsIFZPTFRBR0VfT0JKX1NWSUQyKSkKIAkJCWRhdGEtPm12 ZGRfY29udHJvbCA9IFNNVTdfVk9MVEFHRV9DT05UUk9MX0JZX1NWSUQyOwogCX0KIAotCWlmIChT TVU3X1ZPTFRBR0VfQ09OVFJPTF9OT05FID09IGRhdGEtPnZkZF9nZnhfY29udHJvbCkgeworCWlm IChTTVU3X1ZPTFRBR0VfQ09OVFJPTF9OT05FID09IGRhdGEtPnZkZF9nZnhfY29udHJvbCkKIAkJ cGhtX2NhcF91bnNldChod21nci0+cGxhdGZvcm1fZGVzY3JpcHRvci5wbGF0Zm9ybUNhcHMsCiAJ CQlQSE1fUGxhdGZvcm1DYXBzX0NvbnRyb2xWRERHRlgpOwotCX0KIAogCWlmIChwaG1fY2FwX2Vu YWJsZWQoaHdtZ3ItPnBsYXRmb3JtX2Rlc2NyaXB0b3IucGxhdGZvcm1DYXBzLAogCQkJUEhNX1Bs YXRmb3JtQ2Fwc19Db250cm9sVkREQ0kpKSB7Ci0JCWlmIChhdG9tY3RybF9pc192b2x0YWdlX2Nv bnRyb2xlZF9ieV9ncGlvX3YzKGh3bWdyLAorCQlpZiAoYXRvbWN0cmxfaXNfdm9sdGFnZV9jb250 cm9sbGVkX2J5X2dwaW9fdjMoaHdtZ3IsCiAJCQkJVk9MVEFHRV9UWVBFX1ZERENJLCBWT0xUQUdF X09CSl9HUElPX0xVVCkpCiAJCQlkYXRhLT52ZGRjaV9jb250cm9sID0gU01VN19WT0xUQUdFX0NP TlRST0xfQllfR1BJTzsKLQkJZWxzZSBpZiAoYXRvbWN0cmxfaXNfdm9sdGFnZV9jb250cm9sZWRf YnlfZ3Bpb192Myhod21nciwKKwkJZWxzZSBpZiAoYXRvbWN0cmxfaXNfdm9sdGFnZV9jb250cm9s bGVkX2J5X2dwaW9fdjMoaHdtZ3IsCiAJCQkJVk9MVEFHRV9UWVBFX1ZERENJLCBWT0xUQUdFX09C Sl9TVklEMikpCiAJCQlkYXRhLT52ZGRjaV9jb250cm9sID0gU01VN19WT0xUQUdFX0NPTlRST0xf QllfU1ZJRDI7CiAJfQpAQCAtMjA2MCw2ICsyMDkxLDcgQEAgc3RhdGljIGludCBzbXU3X3BhdGNo X3ZkZGMoc3RydWN0IHBwX2h3bWdyICpod21nciwKIAkJCXNtdTdfcGF0Y2hfcHB0X3YwX3dpdGhf dmRkX2xlYWthZ2UoaHdtZ3IsICZ0YWItPmVudHJpZXNbaV0udiwKIAkJCQkJCSZkYXRhLT52ZGRj X2xlYWthZ2UpOwogCisKIAlyZXR1cm4gMDsKIH0KIApAQCAtMjI3NCw5ICsyMzA2LDggQEAgc3Rh dGljIGludCBzbXU3X3NldF9wcml2YXRlX2RhdGFfYmFzZWRfb25fcHB0YWJsZV92MChzdHJ1Y3Qg cHBfaHdtZ3IgKmh3bWdyKQogCQlkYXRhLT5tYXhfdmRkY2lfaW5fcHB0YWJsZSA9ICh1aW50MTZf dClhbGxvd2VkX21jbGtfdmRkY2lfdGFibGUtPmVudHJpZXNbYWxsb3dlZF9tY2xrX3ZkZGNpX3Rh YmxlLT5jb3VudCAtIDFdLnY7CiAJfQogCi0JaWYgKGh3bWdyLT5keW5fc3RhdGUudmRkY2lfZGVw ZW5kZW5jeV9vbl9tY2xrICE9IE5VTEwgJiYgaHdtZ3ItPmR5bl9zdGF0ZS52ZGRjaV9kZXBlbmRl bmN5X29uX21jbGstPmNvdW50ID4gMSkKKwlpZiAoaHdtZ3ItPmR5bl9zdGF0ZS52ZGRjaV9kZXBl bmRlbmN5X29uX21jbGsgIT0gTlVMTCAmJiBod21nci0+ZHluX3N0YXRlLnZkZGNpX2RlcGVuZGVu Y3lfb25fbWNsay0+Y291bnQgPj0gMSkKIAkJaHdtZ3ItPmR5bl9zdGF0ZS5tYXhfY2xvY2tfdm9s dGFnZV9vbl9hYy52ZGRjaSA9IGh3bWdyLT5keW5fc3RhdGUudmRkY2lfZGVwZW5kZW5jeV9vbl9t Y2xrLT5lbnRyaWVzW2h3bWdyLT5keW5fc3RhdGUudmRkY2lfZGVwZW5kZW5jeV9vbl9tY2xrLT5j b3VudCAtIDFdLnY7Ci0KIAlyZXR1cm4gMDsKIH0KIApAQCAtMjI5MCwxMCArMjMyMSwzOCBAQCBz dGF0aWMgaW50IHNtdTdfaHdtZ3JfYmFja2VuZF9maW5pKHN0cnVjdCBwcF9od21nciAqaHdtZ3Ip CiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgc211N19nZXRfZWxiX3ZvbHRhZ2VzKHN0cnVj dCBwcF9od21nciAqaHdtZ3IpCit7CisJdWludDE2X3QgdmlydHVhbF92b2x0YWdlX2lkLCB2ZGRj LCB2ZGRjaSwgZWZ1c2Vfdm9sdGFnZV9pZDsKKwlzdHJ1Y3Qgc211N19od21nciAqZGF0YSA9IChz dHJ1Y3Qgc211N19od21nciAqKShod21nci0+YmFja2VuZCk7CisJaW50IGk7CisKKwlpZiAoYXRv bWN0cmxfZ2V0X2xlYWthZ2VfaWRfZnJvbV9lZnVzZShod21nciwgJmVmdXNlX3ZvbHRhZ2VfaWQp ID09IDApIHsKKwkJZm9yIChpID0gMDsgaSA8IFNNVTdfTUFYX0xFQUtBR0VfQ09VTlQ7IGkrKykg eworCQkJdmlydHVhbF92b2x0YWdlX2lkID0gQVRPTV9WSVJUVUFMX1ZPTFRBR0VfSUQwICsgaTsK KwkJCWlmIChhdG9tY3RybF9nZXRfbGVha2FnZV92ZGRjX2Jhc2Vfb25fbGVha2FnZShod21nciwg JnZkZGMsICZ2ZGRjaSwKKwkJCQkJCQkJdmlydHVhbF92b2x0YWdlX2lkLAorCQkJCQkJCQllZnVz ZV92b2x0YWdlX2lkKSA9PSAwKSB7CisJCQkJaWYgKHZkZGMgIT0gMCAmJiB2ZGRjICE9IHZpcnR1 YWxfdm9sdGFnZV9pZCkgeworCQkJCQlkYXRhLT52ZGRjX2xlYWthZ2UuYWN0dWFsX3ZvbHRhZ2Vb ZGF0YS0+dmRkY19sZWFrYWdlLmNvdW50XSA9IHZkZGM7CisJCQkJCWRhdGEtPnZkZGNfbGVha2Fn ZS5sZWFrYWdlX2lkW2RhdGEtPnZkZGNfbGVha2FnZS5jb3VudF0gPSB2aXJ0dWFsX3ZvbHRhZ2Vf aWQ7CisJCQkJCWRhdGEtPnZkZGNfbGVha2FnZS5jb3VudCsrOworCQkJCX0KKwkJCQlpZiAodmRk Y2kgIT0gMCAmJiB2ZGRjaSAhPSB2aXJ0dWFsX3ZvbHRhZ2VfaWQpIHsKKwkJCQkJZGF0YS0+dmRk Y2lfbGVha2FnZS5hY3R1YWxfdm9sdGFnZVtkYXRhLT52ZGRjaV9sZWFrYWdlLmNvdW50XSA9IHZk ZGNpOworCQkJCQlkYXRhLT52ZGRjaV9sZWFrYWdlLmxlYWthZ2VfaWRbZGF0YS0+dmRkY2lfbGVh a2FnZS5jb3VudF0gPSB2aXJ0dWFsX3ZvbHRhZ2VfaWQ7CisJCQkJCWRhdGEtPnZkZGNpX2xlYWth Z2UuY291bnQrKzsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisJcmV0dXJuIDA7Cit9CisKIHN0YXRp YyBpbnQgc211N19od21ncl9iYWNrZW5kX2luaXQoc3RydWN0IHBwX2h3bWdyICpod21ncikKIHsK IAlzdHJ1Y3Qgc211N19od21nciAqZGF0YTsKLQlpbnQgcmVzdWx0OworCWludCByZXN1bHQgPSAw OwogCiAJZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzbXU3X2h3bWdyKSwgR0ZQX0tFUk5F TCk7CiAJaWYgKGRhdGEgPT0gTlVMTCkKQEAgLTIzMDQsMTEgKzIzNjMsMTUgQEAgc3RhdGljIGlu dCBzbXU3X2h3bWdyX2JhY2tlbmRfaW5pdChzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyKQogCXNtdTdf aW5pdF9kcG1fZGVmYXVsdHMoaHdtZ3IpOwogCiAJLyogR2V0IGxlYWthZ2Ugdm9sdGFnZSBiYXNl ZCBvbiBsZWFrYWdlIElELiAqLwotCXJlc3VsdCA9IHNtdTdfZ2V0X2V2dl92b2x0YWdlcyhod21n cik7Ci0KLQlpZiAocmVzdWx0KSB7Ci0JCXByX2luZm8oIkdldCBFVlYgVm9sdGFnZSBGYWlsZWQu ICBBYm9ydCBEcml2ZXIgbG9hZGluZyFcbiIpOwotCQlyZXR1cm4gLUVJTlZBTDsKKwlpZiAocGht X2NhcF9lbmFibGVkKGh3bWdyLT5wbGF0Zm9ybV9kZXNjcmlwdG9yLnBsYXRmb3JtQ2FwcywKKwkJ CVBITV9QbGF0Zm9ybUNhcHNfRVZWKSkgeworCQlyZXN1bHQgPSBzbXU3X2dldF9ldnZfdm9sdGFn ZXMoaHdtZ3IpOworCQlpZiAocmVzdWx0KSB7CisJCQlwcl9pbmZvKCJHZXQgRVZWIFZvbHRhZ2Ug RmFpbGVkLiAgQWJvcnQgRHJpdmVyIGxvYWRpbmchXG4iKTsKKwkJCXJldHVybiAtRUlOVkFMOwor CQl9CisJfSBlbHNlIHsKKwkJc211N19nZXRfZWxiX3ZvbHRhZ2VzKGh3bWdyKTsKIAl9CiAKIAlp ZiAoaHdtZ3ItPnBwX3RhYmxlX3ZlcnNpb24gPT0gUFBfVEFCTEVfVjEpIHsKQEAgLTI0MjUsNyAr MjQ4OCw2IEBAIHN0YXRpYyBpbnQgc211N191cGxvYWRfZHBtX2xldmVsX2VuYWJsZV9tYXNrKHN0 cnVjdCBwcF9od21nciAqaHdtZ3IpCiAJCQkJCVBQU01DX01TR19TQ0xLRFBNX1NldEVuYWJsZWRN YXNrLAogCQkJCQlkYXRhLT5kcG1fbGV2ZWxfZW5hYmxlX21hc2suc2Nsa19kcG1fZW5hYmxlX21h c2spOwogCX0KLQogCWlmICghZGF0YS0+bWNsa19kcG1fa2V5X2Rpc2FibGVkKSB7CiAJCWlmIChk YXRhLT5kcG1fbGV2ZWxfZW5hYmxlX21hc2subWNsa19kcG1fZW5hYmxlX21hc2spCiAJCQlzbXVt X3NlbmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLApAQCAtMzc3Niwx MSArMzgzOCwxNCBAQCBzdGF0aWMgaW50IHNtdTdfbm90aWZ5X2xpbmtfc3BlZWRfY2hhbmdlX2Fm dGVyX3N0YXRlX2NoYW5nZSgKIHN0YXRpYyBpbnQgc211N19ub3RpZnlfc21jX2Rpc3BsYXkoc3Ry dWN0IHBwX2h3bWdyICpod21ncikKIHsKIAlzdHJ1Y3Qgc211N19od21nciAqZGF0YSA9IChzdHJ1 Y3Qgc211N19od21nciAqKShod21nci0+YmFja2VuZCk7CisJaW50IHJldCA9IDA7CiAKLQlpZiAo aHdtZ3ItPmZlYXR1cmVfbWFzayAmIFBQX1ZCSV9USU1FX1NVUFBPUlRfTUFTSykKKwlpZiAoaHdt Z3ItPmZlYXR1cmVfbWFzayAmIFBQX1ZCSV9USU1FX1NVUFBPUlRfTUFTSykgewogCQlzbXVtX3Nl bmRfbXNnX3RvX3NtY193aXRoX3BhcmFtZXRlcihod21nci0+c211bWdyLAogCQkJKFBQU01DX01z ZylQUFNNQ19NU0dfU2V0VkJJVGltZW91dCwgZGF0YS0+ZnJhbWVfdGltZV94Mik7Ci0JcmV0dXJu IChzbXVtX3NlbmRfbXNnX3RvX3NtYyhod21nci0+c211bWdyLCAoUFBTTUNfTXNnKVBQU01DX0hh c0Rpc3BsYXkpID09IDApID8gIDAgOiAtRUlOVkFMOworCQlyZXQgPSAoc211bV9zZW5kX21zZ190 b19zbWMoaHdtZ3ItPnNtdW1nciwgKFBQU01DX01zZylQUFNNQ19IYXNEaXNwbGF5KSA9PSAwKSA/ ICAwIDogLUVJTlZBTDsKKwl9CisJcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGludCBzbXU3X3Nl dF9wb3dlcl9zdGF0ZV90YXNrcyhzdHJ1Y3QgcHBfaHdtZ3IgKmh3bWdyLCBjb25zdCB2b2lkICpp bnB1dCkKQEAgLTQxMTYsNyArNDE4MSw2IEBAIHN0YXRpYyBpbnQgc211N19nZXRfbWVtb3J5X3R5 cGUoc3RydWN0IHBwX2h3bWdyICpod21ncikKIAlkYXRhLT5pc19tZW1vcnlfZ2RkcjUgPSAoTUNf U0VRX01JU0MwX0dERFI1X1ZBTFVFID09CiAJCQkoKHRlbXAgJiBNQ19TRVFfTUlTQzBfR0REUjVf TUFTSykgPj4KIAkJCSBNQ19TRVFfTUlTQzBfR0REUjVfU0hJRlQpKTsKLQogCXJldHVybiAwOwog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU3 X3Bvd2VydHVuZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaHdtZ3Ivc211N19w b3dlcnR1bmUuYwppbmRleCAwZjc1YWYzLi5lY2U1NzA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9od21nci9zbXU3X3Bvd2VydHVuZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hbWQvcG93ZXJwbGF5L2h3bWdyL3NtdTdfcG93ZXJ0dW5lLmMKQEAgLTkwNSw3ICs5 MDUsNiBAQCBpbnQgc211N19lbmFibGVfcG93ZXJfY29udGFpbm1lbnQoc3RydWN0IHBwX2h3bWdy ICpod21ncikKIAkJCWlmICgwID09IHNtY19yZXN1bHQpIHsKIAkJCQl1aW50MzJfdCBkZWZhdWx0 X2xpbWl0ID0KIAkJCQkJKHVpbnQzMl90KShjYWNfdGFibGUtPnVzTWF4aW11bVBvd2VyRGVsaXZl cnlMaW1pdCAqIDI1Nik7Ci0KIAkJCQlkYXRhLT5wb3dlcl9jb250YWlubWVudF9mZWF0dXJlcyB8 PQogCQkJCQkJUE9XRVJDT05UQUlOTUVOVF9GRUFUVVJFX1BrZ1B3ckxpbWl0OwogCkBAIC05Nzks NyArOTc4LDEwIEBAIGludCBzbXU3X3Bvd2VyX2NvbnRyb2xfc2V0X2xldmVsKHN0cnVjdCBwcF9o d21nciAqaHdtZ3IpCiAJCS8qIFNNQyByZXF1ZXN0ZWQgdGhhdCB0YXJnZXRfdGRwIHRvIGJlIDcg Yml0IGZyYWN0aW9uIGluIERQTSB0YWJsZQogCQkgKiBidXQgbWVzc2FnZSB0byBiZSA4IGJpdCBm cmFjdGlvbiBmb3IgbWVzc2FnZXMKIAkJICovCi0JCXRhcmdldF90ZHAgPSAoKDEwMCArIGFkanVz dF9wZXJjZW50KSAqIChpbnQpKGNhY190YWJsZS0+dXNURFAgKiAyNTYpKSAvIDEwMDsKKwkJIGlm IChod21nci0+Y2hpcF9pZCA+IENISVBfVE9OR0EpCisJCQl0YXJnZXRfdGRwID0gKCgxMDAgKyBh ZGp1c3RfcGVyY2VudCkgKiAoaW50KShjYWNfdGFibGUtPnVzVERQICogMjU2KSkgLyAxMDA7CisJ CWVsc2UKKwkJCXRhcmdldF90ZHAgPSAoKDEwMCArIGFkanVzdF9wZXJjZW50KSAqIChpbnQpKGNh Y190YWJsZS0+dXNDb25maWd1cmFibGVURFApKSAvIDEwMDsKIAkJcmVzdWx0ID0gc211N19zZXRf b3ZlcmRyaXZlcl90YXJnZXRfdGRwKGh3bWdyLCAodWludDMyX3QpdGFyZ2V0X3RkcCk7CiAJfQog Ci0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==