From mboxrd@z Thu Jan 1 00:00:00 1970 From: Huang Rui Subject: [PATCH 106/138] drm/amd/powerplay: add function to set default overdrive settings Date: Fri, 25 Jan 2019 18:25:13 +0800 Message-ID: <1548411945-12396-107-git-send-email-ray.huang@amd.com> References: <1548411945-12396-1-git-send-email-ray.huang@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1548411945-12396-1-git-send-email-ray.huang-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: Likun Gao , Kevin Wang , Chengming Gui RnJvbTogTGlrdW4gR2FvIDxMaWt1bi5HYW9AYW1kLmNvbT4KCkFkZCBmdW5jdGlvbiBvZiB2ZWdh MjBfc2V0X2RlZmF1bHRfb2Q4X3NldHR0aW5ncyBmb3IgdmVnYTIwIHdpdGggc211MTEKYXJjaCB0 byBzZXR1cCBkZWZhdWx0IG92ZXJkcml2ZSB2YWx1ZS4KClNpZ25lZC1vZmYtYnk6IExpa3VuIEdh byA8TGlrdW4uR2FvQGFtZC5jb20+ClJldmlld2VkLWJ5OiBLZXZpbiBXYW5nIDxrZXZpbjEud2Fu Z0BhbWQuY29tPgpSZXZpZXdlZC1ieTogRXZhbiBRdWFuIDxldmFuLnF1YW5AYW1kLmNvbT4KLS0t CiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRncHVfc211LmMgICAgIHwgIDE0ICsr CiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvYW1kZ3B1X3NtdS5oIHwgICA4ICsK IGRyaXZlcnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jICAgICAgfCAgODQgKysr Ky0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvdmVnYTIwX3BwdC5jICAgICB8 IDIwMyArKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2Vy cGxheS92ZWdhMjBfcHB0LmggICAgIHwgIDUxICsrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgMzA5 IGluc2VydGlvbnMoKyksIDUxIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvcG93ZXJwbGF5L2FtZGdwdV9zbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvcG93 ZXJwbGF5L2FtZGdwdV9zbXUuYwppbmRleCAzY2MyNmFkLi5mNGI2YWUyIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxheS9hbWRncHVfc211LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2FtZC9wb3dlcnBsYXkvYW1kZ3B1X3NtdS5jCkBAIC01MjYsNiArNTI2LDEwIEBAIHN0 YXRpYyBpbnQgc211X3NtY190YWJsZV9od19pbml0KHN0cnVjdCBzbXVfY29udGV4dCAqc211KQog CWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKKwlyZXQgPSBzbXVfc2V0X29kOF9kZWZhdWx0X3Nl dHRpbmdzKHNtdSk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwogCXJldCA9IHNtdV9wb3B1 bGF0ZV91bWRfc3RhdGVfY2xrKHNtdSk7CiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKQEAgLTY5 Nyw2ICs3MDEsMTYgQEAgc3RhdGljIGludCBzbXVfaHdfZmluaSh2b2lkICpoYW5kbGUpCiAJCXRh YmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21pbiA9IE5VTEw7CiAJfQogCisJaWYgKHRhYmxlX2Nv bnRleHQtPm92ZXJkcml2ZV90YWJsZSkgeworCQlrZnJlZSh0YWJsZV9jb250ZXh0LT5vdmVyZHJp dmVfdGFibGUpOworCQl0YWJsZV9jb250ZXh0LT5vdmVyZHJpdmVfdGFibGUgPSBOVUxMOworCX0K KworCWlmICh0YWJsZV9jb250ZXh0LT5vZDhfc2V0dGluZ3MpIHsKKwkJa2ZyZWUodGFibGVfY29u dGV4dC0+b2Q4X3NldHRpbmdzKTsKKwkJdGFibGVfY29udGV4dC0+b2Q4X3NldHRpbmdzID0gTlVM TDsKKwl9CisKIAlyZXQgPSBzbXVfZmluaV9mYl9hbGxvY2F0aW9ucyhzbXUpOwogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3Bvd2VycGxh eS9pbmMvYW1kZ3B1X3NtdS5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvaW5jL2Ft ZGdwdV9zbXUuaAppbmRleCAyNzIzOTU1Li5lZjhlMzAxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL3Bvd2VycGxheS9pbmMvYW1kZ3B1X3NtdS5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L2luYy9hbWRncHVfc211LmgKQEAgLTE5Niw2ICsxOTYsOCBAQCBzdHJ1 Y3Qgc211X3RhYmxlX2NvbnRleHQKIAl1aW50OF90CQkJCSpvZF9mZWF0dXJlX2NhcGFiaWxpdGll czsKIAl1aW50MzJfdAkJCSpvZF9zZXR0aW5nc19tYXg7CiAJdWludDMyX3QJCQkqb2Rfc2V0dGlu Z3NfbWluOworCXZvaWQJCQkJKm92ZXJkcml2ZV90YWJsZTsKKwl2b2lkCQkJCSpvZDhfc2V0dGlu Z3M7CiB9OwogCiBzdHJ1Y3Qgc211X2RwbV9jb250ZXh0IHsKQEAgLTI1OCw2ICsyNjAsNyBAQCBz dHJ1Y3QgcHB0YWJsZV9mdW5jcyB7CiAJaW50ICgqcG9wdWxhdGVfdW1kX3N0YXRlX2Nsaykoc3Ry dWN0IHNtdV9jb250ZXh0ICpzbXUpOwogCWludCAoKnByaW50X2Nsa19sZXZlbHMpKHN0cnVjdCBz bXVfY29udGV4dCAqc211LCBlbnVtIHBwX2Nsb2NrX3R5cGUgdHlwZSwgY2hhciAqYnVmKTsKIAlp bnQgKCpmb3JjZV9jbGtfbGV2ZWxzKShzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSwgZW51bSBwcF9j bG9ja190eXBlIHR5cGUsIHVpbnQzMl90IG1hc2spOworCWludCAoKnNldF9kZWZhdWx0X29kOF9z ZXR0aW5ncykoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpOwogCWludCAoKmdldF9jbG9ja19ieV90 eXBlX3dpdGhfbGF0ZW5jeSkoc3RydWN0IHNtdV9jb250ZXh0ICpzbXUsCiAJCQkJCSAgICAgIGVu dW0gYW1kX3BwX2Nsb2NrX3R5cGUgdHlwZSwKIAkJCQkJICAgICAgc3RydWN0CkBAIC0zMzEsNiAr MzM0LDcgQEAgc3RydWN0IHNtdV9mdW5jcwogCWludCAoKm5vdGlmeV9zbXVfZW5hYmxlX3B3ZSko c3RydWN0IHNtdV9jb250ZXh0ICpzbXUpOwogCWludCAoKnNldF93YXRlcm1hcmtzX2Zvcl9jbG9j a19yYW5nZXMpKHN0cnVjdCBzbXVfY29udGV4dCAqc211LAogCQkJCQkgICAgICAgc3RydWN0IGRt X3BwX3dtX3NldHNfd2l0aF9jbG9ja19yYW5nZXNfc29jMTUgKmNsb2NrX3Jhbmdlcyk7CisJaW50 ICgqc2V0X29kOF9kZWZhdWx0X3NldHRpbmdzKShzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSk7CiB9 OwogCiAjZGVmaW5lIHNtdV9pbml0X21pY3JvY29kZShzbXUpIFwKQEAgLTM3Nyw2ICszODEsOCBA QCBzdHJ1Y3Qgc211X2Z1bmNzCiAJKChzbXUpLT5mdW5jcy0+c3lzdGVtX2ZlYXR1cmVzX2NvbnRy b2wgPyAoc211KS0+ZnVuY3MtPnN5c3RlbV9mZWF0dXJlc19jb250cm9sKChzbXUpLCAoZW4pKSA6 IDApCiAjZGVmaW5lIHNtdV9pbml0X21heF9zdXN0YWluYWJsZV9jbG9ja3Moc211KSBcCiAJKChz bXUpLT5mdW5jcy0+aW5pdF9tYXhfc3VzdGFpbmFibGVfY2xvY2tzID8gKHNtdSktPmZ1bmNzLT5p bml0X21heF9zdXN0YWluYWJsZV9jbG9ja3MoKHNtdSkpIDogMCkKKyNkZWZpbmUgc211X3NldF9v ZDhfZGVmYXVsdF9zZXR0aW5ncyhzbXUpIFwKKwkoKHNtdSktPmZ1bmNzLT5zZXRfb2Q4X2RlZmF1 bHRfc2V0dGluZ3MgPyAoc211KS0+ZnVuY3MtPnNldF9vZDhfZGVmYXVsdF9zZXR0aW5ncygoc211 KSkgOiAwKQogI2RlZmluZSBzbXVfc2VuZF9zbWNfbXNnKHNtdSwgbXNnKSBcCiAJKChzbXUpLT5m dW5jcy0+c2VuZF9zbWNfbXNnPyAoc211KS0+ZnVuY3MtPnNlbmRfc21jX21zZygoc211KSwgKG1z ZykpIDogMCkKICNkZWZpbmUgc211X3NlbmRfc21jX21zZ193aXRoX3BhcmFtKHNtdSwgbXNnLCBw YXJhbSkgXApAQCAtNDA3LDYgKzQxMyw4IEBAIHN0cnVjdCBzbXVfZnVuY3MKIAkoKHNtdSktPnBw dF9mdW5jcy0+c2V0X2RlZmF1bHRfZHBtX3RhYmxlID8gKHNtdSktPnBwdF9mdW5jcy0+c2V0X2Rl ZmF1bHRfZHBtX3RhYmxlKChzbXUpKSA6IDApCiAjZGVmaW5lIHNtdV9wb3B1bGF0ZV91bWRfc3Rh dGVfY2xrKHNtdSkgXAogCSgoc211KS0+cHB0X2Z1bmNzLT5wb3B1bGF0ZV91bWRfc3RhdGVfY2xr ID8gKHNtdSktPnBwdF9mdW5jcy0+cG9wdWxhdGVfdW1kX3N0YXRlX2Nsaygoc211KSkgOiAwKQor I2RlZmluZSBzbXVfc2V0X2RlZmF1bHRfb2Q4X3NldHRpbmdzKHNtdSkgXAorCSgoc211KS0+cHB0 X2Z1bmNzLT5zZXRfZGVmYXVsdF9vZDhfc2V0dGluZ3MgPyAoc211KS0+cHB0X2Z1bmNzLT5zZXRf ZGVmYXVsdF9vZDhfc2V0dGluZ3MoKHNtdSkpIDogMCkKICNkZWZpbmUgc211X2dldF9wb3dlcl9s aW1pdChzbXUpIFwKIAkoKHNtdSktPmZ1bmNzLT5nZXRfcG93ZXJfbGltaXQ/IChzbXUpLT5mdW5j cy0+Z2V0X3Bvd2VyX2xpbWl0KChzbXUpKSA6IDApCiAjZGVmaW5lIHNtdV9nZXRfY3VycmVudF9j bGtfZnJlcShzbXUsIGNsa19pZCwgdmFsdWUpIFwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvc211X3YxMV8wLmMKaW5kZXggZjVlMThhMi4uM2M0YzMyN2UgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvcG93ZXJwbGF5L3NtdV92MTFfMC5jCkBAIC01NDIsNjEgKzU0MiwxMiBAQCBzdGF0aWMg aW50IHNtdV92MTFfMF9wb3B1bGF0ZV9zbWNfcHB0YWJsZShzdHJ1Y3Qgc211X2NvbnRleHQgKnNt dSkKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IHNtdV92MTFfMF9jb3B5X3RhYmxlX3Rv X3NtYyhzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSwKLQkJCQkgICAgICAgdWludDMyX3QgdGFibGVf aWQpCi17Ci0Jc3RydWN0IHNtdV90YWJsZV9jb250ZXh0ICp0YWJsZV9jb250ZXh0ID0gJnNtdS0+ c211X3RhYmxlOwotCXN0cnVjdCBzbXVfdGFibGUgKmRyaXZlcl9wcHRhYmxlID0gJnNtdS0+c211 X3RhYmxlLnRhYmxlc1t0YWJsZV9pZF07Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAodGFibGVfaWQg Pj0gVEFCTEVfQ09VTlQpIHsKLQkJcHJfZXJyKCJJbnZhbGlkIFNNVSBUYWJsZSBJRCBmb3Igc211 MTEhIik7Ci0JCXJldHVybiAtRUlOVkFMOwotCX0KLQotCWlmICghZHJpdmVyX3BwdGFibGUtPmNw dV9hZGRyKSB7Ci0JCXByX2VycigiSW52YWxpZCB2aXJ0dWFsIGFkZHJlc3MgZm9yIHNtdTExISIp OwotCQlyZXR1cm4gLUVJTlZBTDsKLQl9Ci0JaWYgKCFkcml2ZXJfcHB0YWJsZS0+bWNfYWRkcmVz cykgewotCQlwcl9lcnIoIkludmFsaWQgTUMgYWRkcmVzcyBmb3Igc211MTEhIik7Ci0JCXJldHVy biAtRUlOVkFMOwotCX0KLQlpZiAoIWRyaXZlcl9wcHRhYmxlLT5zaXplKSB7Ci0JCXByX2Vycigi SW52YWxpZCBTTVUgVGFibGUgc2l6ZSBmb3Igc211MTEhIik7Ci0JCXJldHVybiAtRUlOVkFMOwot CX0KLQotCW1lbWNweShkcml2ZXJfcHB0YWJsZS0+Y3B1X2FkZHIsIHRhYmxlX2NvbnRleHQtPmRy aXZlcl9wcHRhYmxlLAotCSAgICAgICBkcml2ZXJfcHB0YWJsZS0+c2l6ZSk7Ci0KLQlyZXQgPSBz bXVfc2VuZF9zbWNfbXNnX3dpdGhfcGFyYW0oc211LCBTTVVfTVNHX1NldERyaXZlckRyYW1BZGRy SGlnaCwKLQkJCXVwcGVyXzMyX2JpdHMoZHJpdmVyX3BwdGFibGUtPm1jX2FkZHJlc3MpKTsKLQlp ZiAocmV0KSB7Ci0JCXByX2VycigiW0NvcHlUYWJsZVRvU01DXSBBdHRlbXB0IHRvIFNldCBEcmFt IEFkZHIgSGlnaCBGYWlsZWQhIik7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJldCA9IHNtdV9zZW5k X3NtY19tc2dfd2l0aF9wYXJhbShzbXUsIFNNVV9NU0dfU2V0RHJpdmVyRHJhbUFkZHJMb3csCi0J CQlsb3dlcl8zMl9iaXRzKGRyaXZlcl9wcHRhYmxlLT5tY19hZGRyZXNzKSk7Ci0JaWYgKHJldCkg ewotCQlwcl9lcnIoIltDb3B5VGFibGVUb1NNQ10gQXR0ZW1wdCB0byBTZXQgRHJhbSBBZGRyIExv dyBGYWlsZWQhIik7Ci0JCXJldHVybiByZXQ7Ci0JfQotCXJldCA9IHNtdV9zZW5kX3NtY19tc2df d2l0aF9wYXJhbShzbXUsIFNNVV9NU0dfVHJhbnNmZXJUYWJsZURyYW0yU211LAotCQkJCQkgIHRh YmxlX2lkKTsKLQlpZiAocmV0KSB7Ci0JCXByX2VycigiW0NvcHlUYWJsZVRvU01DXSBBdHRlbXB0 IHRvIFRyYW5zZmVyIFRhYmxlIFRvIFNNVSBGYWlsZWQhIik7Ci0JCXJldHVybiByZXQ7Ci0JfQot Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBpbnQgc211X3YxMV8wX3dyaXRlX3BwdGFibGUoc3Ry dWN0IHNtdV9jb250ZXh0ICpzbXUpCiB7CisJc3RydWN0IHNtdV90YWJsZV9jb250ZXh0ICp0YWJs ZV9jb250ZXh0ID0gJnNtdS0+c211X3RhYmxlOwogCWludCByZXQgPSAwOwogCi0JcmV0ID0gc211 X3YxMV8wX2NvcHlfdGFibGVfdG9fc21jKHNtdSwgVEFCTEVfUFBUQUJMRSk7CisJcmV0ID0gc211 X3VwZGF0ZV90YWJsZShzbXUsIFRBQkxFX1BQVEFCTEUsIHRhYmxlX2NvbnRleHQtPmRyaXZlcl9w cHRhYmxlLCB0cnVlKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xMjQ1LDYgKzExOTYsMzYgQEAg c211X3YxMV8wX3NldF93YXRlcm1hcmtzX2Zvcl9jbG9ja19yYW5nZXMoc3RydWN0IHNtdV9jb250 ZXh0ICpzbXUsIHN0cnVjdAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgc211X3YxMV8w X3NldF9vZDhfZGVmYXVsdF9zZXR0aW5ncyhzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKK3sKKwlz dHJ1Y3Qgc211X3RhYmxlX2NvbnRleHQgKnRhYmxlX2NvbnRleHQgPSAmc211LT5zbXVfdGFibGU7 CisJaW50IHJldDsKKworCWlmICh0YWJsZV9jb250ZXh0LT5vdmVyZHJpdmVfdGFibGUpCisJCSBy ZXR1cm4gLUVJTlZBTDsKKworCXRhYmxlX2NvbnRleHQtPm92ZXJkcml2ZV90YWJsZSA9IGt6YWxs b2Moc2l6ZW9mKE92ZXJEcml2ZVRhYmxlX3QpLCBHRlBfS0VSTkVMKTsKKworCWlmICghdGFibGVf Y29udGV4dC0+b3ZlcmRyaXZlX3RhYmxlKQorCQlyZXR1cm4gLUVOT01FTTsKKworCXJldCA9IHNt dV91cGRhdGVfdGFibGUoc211LCBUQUJMRV9PVkVSRFJJVkUsIHRhYmxlX2NvbnRleHQtPm92ZXJk cml2ZV90YWJsZSwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gZXhw b3J0IG92ZXIgZHJpdmUgdGFibGUhXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzbXVfc2V0 X2RlZmF1bHRfb2Q4X3NldHRpbmdzKHNtdSk7CisKKwlyZXQgPSBzbXVfdXBkYXRlX3RhYmxlKHNt dSwgVEFCTEVfT1ZFUkRSSVZFLCB0YWJsZV9jb250ZXh0LT5vdmVyZHJpdmVfdGFibGUsIHRydWUp OworCWlmIChyZXQpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gaW1wb3J0IG92ZXIgZHJpdmUgdGFi bGUhXG4iKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKwogc3RhdGljIGNv bnN0IHN0cnVjdCBzbXVfZnVuY3Mgc211X3YxMV8wX2Z1bmNzID0gewogCS5pbml0X21pY3JvY29k ZSA9IHNtdV92MTFfMF9pbml0X21pY3JvY29kZSwKIAkubG9hZF9taWNyb2NvZGUgPSBzbXVfdjEx XzBfbG9hZF9taWNyb2NvZGUsCkBAIC0xMjgxLDYgKzEyNjIsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHNtdV9mdW5jcyBzbXVfdjExXzBfZnVuY3MgPSB7CiAJLnNldF9kZWVwX3NsZWVwX2RjZWZj bGsgPSBzbXVfdjExXzBfc2V0X2RlZXBfc2xlZXBfZGNlZmNsaywKIAkuZGlzcGxheV9jbG9ja192 b2x0YWdlX3JlcXVlc3QgPSBzbXVfdjExXzBfZGlzcGxheV9jbG9ja192b2x0YWdlX3JlcXVlc3Qs CiAJLnNldF93YXRlcm1hcmtzX2Zvcl9jbG9ja19yYW5nZXMgPSBzbXVfdjExXzBfc2V0X3dhdGVy bWFya3NfZm9yX2Nsb2NrX3JhbmdlcywKKwkuc2V0X29kOF9kZWZhdWx0X3NldHRpbmdzID0gc211 X3YxMV8wX3NldF9vZDhfZGVmYXVsdF9zZXR0aW5ncywKIH07CiAKIHZvaWQgc211X3YxMV8wX3Nl dF9zbXVfZnVuY3Moc3RydWN0IHNtdV9jb250ZXh0ICpzbXUpCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYW1kL3Bvd2VycGxheS92ZWdhMjBfcHB0LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L3Bvd2VycGxheS92ZWdhMjBfcHB0LmMKaW5kZXggZGYzNDk1My4uYzM5ODg5OSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBsYXkvdmVnYTIwX3BwdC5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3ZlZ2EyMF9wcHQuYwpAQCAtOTA0LDYgKzkwNCwyMDgg QEAgc3RhdGljIGludCB2ZWdhMjBfZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5KHN0cnVj dCBzbXVfY29udGV4dCAqc211LAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgdmVnYTIw X292ZXJkcml2ZV9nZXRfZ2Z4X2Nsa19iYXNlX3ZvbHRhZ2Uoc3RydWN0IHNtdV9jb250ZXh0ICpz bXUsCisJCQkJCQkgICAgIHVpbnQzMl90ICp2b2x0YWdlLAorCQkJCQkJICAgICB1aW50MzJfdCBm cmVxKQoreworCWludCByZXQ7CisKKwlyZXQgPSBzbXVfc2VuZF9zbWNfbXNnX3dpdGhfcGFyYW0o c211LAorCQkJU01VX01TR19HZXRBVkZTVm9sdGFnZUJ5RHBtLAorCQkJKChBVkZTX0NVUlZFIDw8 IDI0KSB8IChPRDhfSE9UQ1VSVkVfVEVNUEVSQVRVUkUgPDwgMTYpIHwgZnJlcSkpOworCWlmIChy ZXQpIHsKKwkJcHJfZXJyKCJbR2V0QmFzZVZvbHRhZ2VdIGZhaWxlZCB0byBnZXQgR0ZYQ0xLIEFW RlMgdm9sdGFnZSBmcm9tIFNNVSEiKTsKKwkJcmV0dXJuIHJldDsKKwl9CisKKwlzbXVfcmVhZF9z bWNfYXJnKHNtdSwgdm9sdGFnZSk7CisJKnZvbHRhZ2UgPSAqdm9sdGFnZSAvIFZPTFRBR0VfU0NB TEU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCB2ZWdhMjBfc2V0X2RlZmF1bHRfb2Q4 X3NldHR0aW5ncyhzdHJ1Y3Qgc211X2NvbnRleHQgKnNtdSkKK3sKKwlzdHJ1Y3Qgc211X3RhYmxl X2NvbnRleHQgKnRhYmxlX2NvbnRleHQgPSAmc211LT5zbXVfdGFibGU7CisJT3ZlckRyaXZlVGFi bGVfdCAqb2RfdGFibGUgPSAoT3ZlckRyaXZlVGFibGVfdCAqKSh0YWJsZV9jb250ZXh0LT5vdmVy ZHJpdmVfdGFibGUpOworCXN0cnVjdCB2ZWdhMjBfb2Q4X3NldHRpbmdzICpvZDhfc2V0dGluZ3Mg PSBOVUxMOworCVBQVGFibGVfdCAqc21jX3BwdGFibGUgPSB0YWJsZV9jb250ZXh0LT5kcml2ZXJf cHB0YWJsZTsKKwlpbnQgaSwgcmV0OworCisJaWYgKHRhYmxlX2NvbnRleHQtPm9kOF9zZXR0aW5n cykKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwl0YWJsZV9jb250ZXh0LT5vZDhfc2V0dGluZ3MgPSBr emFsbG9jKHNpemVvZihzdHJ1Y3QgdmVnYTIwX29kOF9zZXR0aW5ncyksIEdGUF9LRVJORUwpOwor CisJaWYgKCF0YWJsZV9jb250ZXh0LT5vZDhfc2V0dGluZ3MpCisJCXJldHVybiAtRU5PTUVNOwor CisJbWVtc2V0KHRhYmxlX2NvbnRleHQtPm9kOF9zZXR0aW5ncywgMCwgc2l6ZW9mKHN0cnVjdCB2 ZWdhMjBfb2Q4X3NldHRpbmdzKSk7CisJb2Q4X3NldHRpbmdzID0gKHN0cnVjdCB2ZWdhMjBfb2Q4 X3NldHRpbmdzICopdGFibGVfY29udGV4dC0+b2Q4X3NldHRpbmdzOworCisJaWYgKHNtdV9mZWF0 dXJlX2lzX2VuYWJsZWQoc211LCBGRUFUVVJFX0RQTV9TT0NDTEtfQklUKSkgeworCQlpZiAodGFi bGVfY29udGV4dC0+b2RfZmVhdHVyZV9jYXBhYmlsaXRpZXNbQVRPTV9WRUdBMjBfT0RGRUFUVVJF X0dGWENMS19MSU1JVFNdICYmCisJCSAgICB0YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhb T0Q4X1NFVFRJTkdfR0ZYQ0xLX0ZNQVhdID4gMCAmJgorCQkgICAgdGFibGVfY29udGV4dC0+b2Rf c2V0dGluZ3NfbWluW09EOF9TRVRUSU5HX0dGWENMS19GTUlOXSA+IDAgJiYKKwkJICAgICh0YWJs ZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhbT0Q4X1NFVFRJTkdfR0ZYQ0xLX0ZNQVhdID49CisJ CSAgICAgdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWluW09EOF9TRVRUSU5HX0dGWENMS19G TUlOXSkpIHsKKwkJCW9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W09EOF9TRVRUSU5H X0dGWENMS19GTUlOXS5mZWF0dXJlX2lkID0KKwkJCQlPRDhfR0ZYQ0xLX0xJTUlUUzsKKwkJCW9k OF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W09EOF9TRVRUSU5HX0dGWENMS19GTUFYXS5m ZWF0dXJlX2lkID0KKwkJCQlPRDhfR0ZYQ0xLX0xJTUlUUzsKKwkJCW9kOF9zZXR0aW5ncy0+b2Q4 X3NldHRpbmdzX2FycmF5W09EOF9TRVRUSU5HX0dGWENMS19GTUlOXS5kZWZhdWx0X3ZhbHVlID0K KwkJCQlvZF90YWJsZS0+R2Z4Y2xrRm1pbjsKKwkJCW9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdz X2FycmF5W09EOF9TRVRUSU5HX0dGWENMS19GTUFYXS5kZWZhdWx0X3ZhbHVlID0KKwkJCQlvZF90 YWJsZS0+R2Z4Y2xrRm1heDsKKwkJfQorCisJCWlmICh0YWJsZV9jb250ZXh0LT5vZF9mZWF0dXJl X2NhcGFiaWxpdGllc1tBVE9NX1ZFR0EyMF9PREZFQVRVUkVfR0ZYQ0xLX0NVUlZFXSAmJgorCQkg ICAgKHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21pbltPRDhfU0VUVElOR19HRlhDTEtfVk9M VEFHRTFdID49CisJCSAgICAgc21jX3BwdGFibGUtPk1pblZvbHRhZ2VHZnggLyBWT0xUQUdFX1ND QUxFKSAmJgorCQkgICAgKHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21heFtPRDhfU0VUVElO R19HRlhDTEtfVk9MVEFHRTNdIDw9CisJCSAgICAgc21jX3BwdGFibGUtPk1heFZvbHRhZ2VHZngg LyBWT0xUQUdFX1NDQUxFKSAmJgorCQkgICAgKHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21p bltPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTFdIDw9CisJCSAgICAgdGFibGVfY29udGV4dC0+ b2Rfc2V0dGluZ3NfbWF4W09EOF9TRVRUSU5HX0dGWENMS19WT0xUQUdFM10pKSB7CisJCQlvZDhf c2V0dGluZ3MtPm9kOF9zZXR0aW5nc19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfRlJFUTFdLmZl YXR1cmVfaWQgPQorCQkJCU9EOF9HRlhDTEtfQ1VSVkU7CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9z ZXR0aW5nc19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTFdLmZlYXR1cmVfaWQgPQor CQkJCU9EOF9HRlhDTEtfQ1VSVkU7CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5nc19hcnJh eVtPRDhfU0VUVElOR19HRlhDTEtfRlJFUTJdLmZlYXR1cmVfaWQgPQorCQkJCU9EOF9HRlhDTEtf Q1VSVkU7CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5nc19hcnJheVtPRDhfU0VUVElOR19H RlhDTEtfVk9MVEFHRTJdLmZlYXR1cmVfaWQgPQorCQkJCU9EOF9HRlhDTEtfQ1VSVkU7CisJCQlv ZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5nc19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfRlJFUTNd LmZlYXR1cmVfaWQgPQorCQkJCU9EOF9HRlhDTEtfQ1VSVkU7CisJCQlvZDhfc2V0dGluZ3MtPm9k OF9zZXR0aW5nc19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTNdLmZlYXR1cmVfaWQg PQorCQkJCU9EOF9HRlhDTEtfQ1VSVkU7CisKKwkJCW9kX3RhYmxlLT5HZnhjbGtGcmVxMSA9IG9k X3RhYmxlLT5HZnhjbGtGbWluOworCQkJb2RfdGFibGUtPkdmeGNsa0ZyZXEyID0gKG9kX3RhYmxl LT5HZnhjbGtGbWluICsgb2RfdGFibGUtPkdmeGNsa0ZtYXgpIC8gMjsKKwkJCW9kX3RhYmxlLT5H ZnhjbGtGcmVxMyA9IG9kX3RhYmxlLT5HZnhjbGtGbWF4OworCQkJb2Q4X3NldHRpbmdzLT5vZDhf c2V0dGluZ3NfYXJyYXlbT0Q4X1NFVFRJTkdfR0ZYQ0xLX0ZSRVExXS5kZWZhdWx0X3ZhbHVlID0K KwkJCQlvZF90YWJsZS0+R2Z4Y2xrRnJlcTE7CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfRlJFUTJdLmRlZmF1bHRfdmFsdWUgPQorCQkJCW9k X3RhYmxlLT5HZnhjbGtGcmVxMjsKKwkJCW9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5 W09EOF9TRVRUSU5HX0dGWENMS19GUkVRM10uZGVmYXVsdF92YWx1ZSA9CisJCQkJb2RfdGFibGUt PkdmeGNsa0ZyZXEzOworCisJCQlyZXQgPSB2ZWdhMjBfb3ZlcmRyaXZlX2dldF9nZnhfY2xrX2Jh c2Vfdm9sdGFnZShzbXUsCisJCQkJJm9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W09E OF9TRVRUSU5HX0dGWENMS19WT0xUQUdFMV0uZGVmYXVsdF92YWx1ZSwKKwkJCQlvZF90YWJsZS0+ R2Z4Y2xrRnJlcTEpOworCQkJaWYgKHJldCkKKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTFdLmRlZmF1bHRfdmFsdWUgPSAwOwor CQkJb2RfdGFibGUtPkdmeGNsa1ZvbHQxID0KKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTFdLmRlZmF1bHRfdmFsdWUKKwkJCQkq IFZPTFRBR0VfU0NBTEU7CisJCQlyZXQgPSB2ZWdhMjBfb3ZlcmRyaXZlX2dldF9nZnhfY2xrX2Jh c2Vfdm9sdGFnZShzbXUsCisJCQkJJm9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W09E OF9TRVRUSU5HX0dGWENMS19WT0xUQUdFMl0uZGVmYXVsdF92YWx1ZSwKKwkJCQlvZF90YWJsZS0+ R2Z4Y2xrRnJlcTIpOworCQkJaWYgKHJldCkKKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTJdLmRlZmF1bHRfdmFsdWUgPSAwOwor CQkJb2RfdGFibGUtPkdmeGNsa1ZvbHQyID0KKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTJdLmRlZmF1bHRfdmFsdWUKKwkJCQkq IFZPTFRBR0VfU0NBTEU7CisJCQlyZXQgPSB2ZWdhMjBfb3ZlcmRyaXZlX2dldF9nZnhfY2xrX2Jh c2Vfdm9sdGFnZShzbXUsCisJCQkJJm9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W09E OF9TRVRUSU5HX0dGWENMS19WT0xUQUdFM10uZGVmYXVsdF92YWx1ZSwKKwkJCQlvZF90YWJsZS0+ R2Z4Y2xrRnJlcTMpOworCQkJaWYgKHJldCkKKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTNdLmRlZmF1bHRfdmFsdWUgPSAwOwor CQkJb2RfdGFibGUtPkdmeGNsa1ZvbHQzID0KKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTNdLmRlZmF1bHRfdmFsdWUKKwkJCQkq IFZPTFRBR0VfU0NBTEU7CisJCX0KKwl9CisKKwlpZiAoc211X2ZlYXR1cmVfaXNfZW5hYmxlZChz bXUsIEZFQVRVUkVfRFBNX1VDTEtfQklUKSkgeworCQlpZiAodGFibGVfY29udGV4dC0+b2RfZmVh dHVyZV9jYXBhYmlsaXRpZXNbQVRPTV9WRUdBMjBfT0RGRUFUVVJFX1VDTEtfTUFYXSAmJgorCQkg ICAgdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWluW09EOF9TRVRUSU5HX1VDTEtfRk1BWF0g PiAwICYmCisJCSAgICB0YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhbT0Q4X1NFVFRJTkdf VUNMS19GTUFYXSA+IDAgJiYKKwkJICAgICh0YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhb T0Q4X1NFVFRJTkdfVUNMS19GTUFYXSA+PQorCQkgICAgIHRhYmxlX2NvbnRleHQtPm9kX3NldHRp bmdzX21pbltPRDhfU0VUVElOR19VQ0xLX0ZNQVhdKSkgeworCQkJb2Q4X3NldHRpbmdzLT5vZDhf c2V0dGluZ3NfYXJyYXlbT0Q4X1NFVFRJTkdfVUNMS19GTUFYXS5mZWF0dXJlX2lkID0KKwkJCQlP RDhfVUNMS19NQVg7CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5nc19hcnJheVtPRDhfU0VU VElOR19VQ0xLX0ZNQVhdLmRlZmF1bHRfdmFsdWUgPQorCQkJCW9kX3RhYmxlLT5VY2xrRm1heDsK KwkJfQorCX0KKworCWlmICh0YWJsZV9jb250ZXh0LT5vZF9mZWF0dXJlX2NhcGFiaWxpdGllc1tB VE9NX1ZFR0EyMF9PREZFQVRVUkVfUE9XRVJfTElNSVRdICYmCisJICAgIHRhYmxlX2NvbnRleHQt Pm9kX3NldHRpbmdzX21pbltPRDhfU0VUVElOR19QT1dFUl9QRVJDRU5UQUdFXSA+IDAgJiYKKwkg ICAgdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWluW09EOF9TRVRUSU5HX1BPV0VSX1BFUkNF TlRBR0VdIDw9IDEwMCAmJgorCSAgICB0YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhbT0Q4 X1NFVFRJTkdfUE9XRVJfUEVSQ0VOVEFHRV0gPiAwICYmCisJICAgIHRhYmxlX2NvbnRleHQtPm9k X3NldHRpbmdzX21heFtPRDhfU0VUVElOR19QT1dFUl9QRVJDRU5UQUdFXSA8PSAxMDApIHsKKwkJ b2Q4X3NldHRpbmdzLT5vZDhfc2V0dGluZ3NfYXJyYXlbT0Q4X1NFVFRJTkdfUE9XRVJfUEVSQ0VO VEFHRV0uZmVhdHVyZV9pZCA9CisJCQlPRDhfUE9XRVJfTElNSVQ7CisJCW9kOF9zZXR0aW5ncy0+ b2Q4X3NldHRpbmdzX2FycmF5W09EOF9TRVRUSU5HX1BPV0VSX1BFUkNFTlRBR0VdLmRlZmF1bHRf dmFsdWUgPQorCQkJb2RfdGFibGUtPk92ZXJEcml2ZVBjdDsKKwl9CisKKwlpZiAoc211X2ZlYXR1 cmVfaXNfZW5hYmxlZChzbXUsIEZFQVRVUkVfRkFOX0NPTlRST0xfQklUKSkgeworCQlpZiAodGFi bGVfY29udGV4dC0+b2RfZmVhdHVyZV9jYXBhYmlsaXRpZXNbQVRPTV9WRUdBMjBfT0RGRUFUVVJF X0ZBTl9BQ09VU1RJQ19MSU1JVF0gJiYKKwkJICAgIHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdz X21pbltPRDhfU0VUVElOR19GQU5fQUNPVVNUSUNfTElNSVRdID4gMCAmJgorCQkgICAgdGFibGVf Y29udGV4dC0+b2Rfc2V0dGluZ3NfbWF4W09EOF9TRVRUSU5HX0ZBTl9BQ09VU1RJQ19MSU1JVF0g PiAwICYmCisJCSAgICAodGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWF4W09EOF9TRVRUSU5H X0ZBTl9BQ09VU1RJQ19MSU1JVF0gPj0KKwkJICAgICB0YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5n c19taW5bT0Q4X1NFVFRJTkdfRkFOX0FDT1VTVElDX0xJTUlUXSkpIHsKKwkJCW9kOF9zZXR0aW5n cy0+b2Q4X3NldHRpbmdzX2FycmF5W09EOF9TRVRUSU5HX0ZBTl9BQ09VU1RJQ19MSU1JVF0uZmVh dHVyZV9pZCA9CisJCQkJT0Q4X0FDT1VTVElDX0xJTUlUX1NDTEs7CisJCQlvZDhfc2V0dGluZ3Mt Pm9kOF9zZXR0aW5nc19hcnJheVtPRDhfU0VUVElOR19GQU5fQUNPVVNUSUNfTElNSVRdLmRlZmF1 bHRfdmFsdWUgPQorCQkJCW9kX3RhYmxlLT5GYW5NYXhpbXVtUnBtOworCQl9CisKKwkJaWYgKHRh YmxlX2NvbnRleHQtPm9kX2ZlYXR1cmVfY2FwYWJpbGl0aWVzW0FUT01fVkVHQTIwX09ERkVBVFVS RV9GQU5fU1BFRURfTUlOXSAmJgorCQkgICAgdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWlu W09EOF9TRVRUSU5HX0ZBTl9NSU5fU1BFRURdID4gMCAmJgorCQkgICAgdGFibGVfY29udGV4dC0+ b2Rfc2V0dGluZ3NfbWF4W09EOF9TRVRUSU5HX0ZBTl9NSU5fU1BFRURdID4gMCAmJgorCQkgICAg KHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21heFtPRDhfU0VUVElOR19GQU5fTUlOX1NQRUVE XSA+PQorCQkgICAgIHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21pbltPRDhfU0VUVElOR19G QU5fTUlOX1NQRUVEXSkpIHsKKwkJCW9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W09E OF9TRVRUSU5HX0ZBTl9NSU5fU1BFRURdLmZlYXR1cmVfaWQgPQorCQkJCU9EOF9GQU5fU1BFRURf TUlOOworCQkJb2Q4X3NldHRpbmdzLT5vZDhfc2V0dGluZ3NfYXJyYXlbT0Q4X1NFVFRJTkdfRkFO X01JTl9TUEVFRF0uZGVmYXVsdF92YWx1ZSA9CisJCQkJb2RfdGFibGUtPkZhbk1pbmltdW1Qd20g KiBzbWNfcHB0YWJsZS0+RmFuTWF4aW11bVJwbSAvIDEwMDsKKwkJfQorCX0KKworCWlmIChzbXVf ZmVhdHVyZV9pc19lbmFibGVkKHNtdSwgRkVBVFVSRV9USEVSTUFMX0JJVCkpIHsKKwkJaWYgKHRh YmxlX2NvbnRleHQtPm9kX2ZlYXR1cmVfY2FwYWJpbGl0aWVzW0FUT01fVkVHQTIwX09ERkVBVFVS RV9URU1QRVJBVFVSRV9GQU5dICYmCisJCSAgICB0YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5nc19t aW5bT0Q4X1NFVFRJTkdfRkFOX1RBUkdFVF9URU1QXSA+IDAgJiYKKwkJICAgIHRhYmxlX2NvbnRl eHQtPm9kX3NldHRpbmdzX21heFtPRDhfU0VUVElOR19GQU5fVEFSR0VUX1RFTVBdID4gMCAmJgor CQkgICAgKHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21heFtPRDhfU0VUVElOR19GQU5fVEFS R0VUX1RFTVBdID49CisJCSAgICAgdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWluW09EOF9T RVRUSU5HX0ZBTl9UQVJHRVRfVEVNUF0pKSB7CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5n c19hcnJheVtPRDhfU0VUVElOR19GQU5fVEFSR0VUX1RFTVBdLmZlYXR1cmVfaWQgPQorCQkJCU9E OF9URU1QRVJBVFVSRV9GQU47CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0aW5nc19hcnJheVtP RDhfU0VUVElOR19GQU5fVEFSR0VUX1RFTVBdLmRlZmF1bHRfdmFsdWUgPQorCQkJCW9kX3RhYmxl LT5GYW5UYXJnZXRUZW1wZXJhdHVyZTsKKwkJfQorCisJCWlmICh0YWJsZV9jb250ZXh0LT5vZF9m ZWF0dXJlX2NhcGFiaWxpdGllc1tBVE9NX1ZFR0EyMF9PREZFQVRVUkVfVEVNUEVSQVRVUkVfU1lT VEVNXSAmJgorCQkgICAgdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWluW09EOF9TRVRUSU5H X09QRVJBVElOR19URU1QX01BWF0gPiAwICYmCisJCSAgICB0YWJsZV9jb250ZXh0LT5vZF9zZXR0 aW5nc19tYXhbT0Q4X1NFVFRJTkdfT1BFUkFUSU5HX1RFTVBfTUFYXSA+IDAgJiYKKwkJICAgICh0 YWJsZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhbT0Q4X1NFVFRJTkdfT1BFUkFUSU5HX1RFTVBf TUFYXSA+PQorCQkgICAgIHRhYmxlX2NvbnRleHQtPm9kX3NldHRpbmdzX21pbltPRDhfU0VUVElO R19PUEVSQVRJTkdfVEVNUF9NQVhdKSkgeworCQkJb2Q4X3NldHRpbmdzLT5vZDhfc2V0dGluZ3Nf YXJyYXlbT0Q4X1NFVFRJTkdfT1BFUkFUSU5HX1RFTVBfTUFYXS5mZWF0dXJlX2lkID0KKwkJCQlP RDhfVEVNUEVSQVRVUkVfU1lTVEVNOworCQkJb2Q4X3NldHRpbmdzLT5vZDhfc2V0dGluZ3NfYXJy YXlbT0Q4X1NFVFRJTkdfT1BFUkFUSU5HX1RFTVBfTUFYXS5kZWZhdWx0X3ZhbHVlID0KKwkJCQlv ZF90YWJsZS0+TWF4T3BUZW1wOworCQl9CisJfQorCisJZm9yIChpID0gMDsgaSA8IE9EOF9TRVRU SU5HX0NPVU5UOyBpKyspIHsKKwkJaWYgKG9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5 W2ldLmZlYXR1cmVfaWQpIHsKKwkJCW9kOF9zZXR0aW5ncy0+b2Q4X3NldHRpbmdzX2FycmF5W2ld Lm1pbl92YWx1ZSA9CisJCQkJdGFibGVfY29udGV4dC0+b2Rfc2V0dGluZ3NfbWluW2ldOworCQkJ b2Q4X3NldHRpbmdzLT5vZDhfc2V0dGluZ3NfYXJyYXlbaV0ubWF4X3ZhbHVlID0KKwkJCQl0YWJs ZV9jb250ZXh0LT5vZF9zZXR0aW5nc19tYXhbaV07CisJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0 aW5nc19hcnJheVtpXS5jdXJyZW50X3ZhbHVlID0KKwkJCQlvZDhfc2V0dGluZ3MtPm9kOF9zZXR0 aW5nc19hcnJheVtpXS5kZWZhdWx0X3ZhbHVlOworCQl9IGVsc2UgeworCQkJb2Q4X3NldHRpbmdz LT5vZDhfc2V0dGluZ3NfYXJyYXlbaV0ubWluX3ZhbHVlID0gMDsKKwkJCW9kOF9zZXR0aW5ncy0+ b2Q4X3NldHRpbmdzX2FycmF5W2ldLm1heF92YWx1ZSA9IDA7CisJCQlvZDhfc2V0dGluZ3MtPm9k OF9zZXR0aW5nc19hcnJheVtpXS5jdXJyZW50X3ZhbHVlID0gMDsKKwkJfQorCX0KKworCXJldHVy biAwOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IHBwdGFibGVfZnVuY3MgdmVnYTIwX3BwdF9m dW5jcyA9IHsKIAkuYWxsb2NfZHBtX2NvbnRleHQgPSB2ZWdhMjBfYWxsb2NhdGVfZHBtX2NvbnRl eHQsCiAJLnN0b3JlX3Bvd2VycGxheV90YWJsZSA9IHZlZ2EyMF9zdG9yZV9wb3dlcnBsYXlfdGFi bGUsCkBAIC05MTcsNiArMTExOSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcHB0YWJsZV9mdW5j cyB2ZWdhMjBfcHB0X2Z1bmNzID0gewogCS5wcmludF9jbGtfbGV2ZWxzID0gdmVnYTIwX3ByaW50 X2Nsa19sZXZlbHMsCiAJLmZvcmNlX2Nsa19sZXZlbHMgPSB2ZWdhMjBfZm9yY2VfY2xrX2xldmVs cywKIAkuZ2V0X2Nsb2NrX2J5X3R5cGVfd2l0aF9sYXRlbmN5ID0gdmVnYTIwX2dldF9jbG9ja19i eV90eXBlX3dpdGhfbGF0ZW5jeSwKKwkuc2V0X2RlZmF1bHRfb2Q4X3NldHRpbmdzID0gdmVnYTIw X3NldF9kZWZhdWx0X29kOF9zZXR0dGluZ3MsCiB9OwogCiB2b2lkIHZlZ2EyMF9zZXRfcHB0X2Z1 bmNzKHN0cnVjdCBzbXVfY29udGV4dCAqc211KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2FtZC9wb3dlcnBsYXkvdmVnYTIwX3BwdC5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9wb3dlcnBs YXkvdmVnYTIwX3BwdC5oCmluZGV4IGNlYmE0ZjcuLjliMjI5YjIgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvcG93ZXJwbGF5L3ZlZ2EyMF9wcHQuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL3Bvd2VycGxheS92ZWdhMjBfcHB0LmgKQEAgLTI5LDYgKzI5LDEwIEBACiAjZGVmaW5l IE1BWF9SRUdVTEFSX0RQTV9OVU1CRVIgMTYKICNkZWZpbmUgTUFYX1BDSUVfQ09ORiAyCiAKKyNk ZWZpbmUgVk9MVEFHRV9TQ0FMRSA0CisjZGVmaW5lIEFWRlNfQ1VSVkUgMAorI2RlZmluZSBPRDhf SE9UQ1VSVkVfVEVNUEVSQVRVUkUgODUKKwogc3RydWN0IHZlZ2EyMF9kcG1fbGV2ZWwgewogICAg ICAgICBib29sICAgICAgICAgICAgZW5hYmxlZDsKICAgICAgICAgdWludDMyX3QgICAgICAgIHZh bHVlOwpAQCAtNzAsNiArNzQsNTMgQEAgc3RydWN0IHZlZ2EyMF9kcG1fdGFibGUgewogICAgICAg ICBzdHJ1Y3QgdmVnYTIwX3BjaWVfdGFibGUgICAgICAgIHBjaWVfdGFibGU7CiB9OwogCitlbnVt IE9EOF9GRUFUVVJFX0lECit7CisJT0Q4X0dGWENMS19MSU1JVFMgICAgICAgICAgICAgICA9IDEg PDwgMCwKKwlPRDhfR0ZYQ0xLX0NVUlZFICAgICAgICAgICAgICAgID0gMSA8PCAxLAorCU9EOF9V Q0xLX01BWCAgICAgICAgICAgICAgICAgICAgPSAxIDw8IDIsCisJT0Q4X1BPV0VSX0xJTUlUICAg ICAgICAgICAgICAgICA9IDEgPDwgMywKKwlPRDhfQUNPVVNUSUNfTElNSVRfU0NMSyAgICAgICAg ID0gMSA8PCA0LCAgIC8vRmFuTWF4aW11bVJwbQorCU9EOF9GQU5fU1BFRURfTUlOICAgICAgICAg ICAgICAgPSAxIDw8IDUsICAgLy9GYW5NaW5pbXVtUHdtCisJT0Q4X1RFTVBFUkFUVVJFX0ZBTiAg ICAgICAgICAgICA9IDEgPDwgNiwgICAvL0ZhblRhcmdldFRlbXBlcmF0dXJlCisJT0Q4X1RFTVBF UkFUVVJFX1NZU1RFTSAgICAgICAgICA9IDEgPDwgNywgICAvL01heE9wVGVtcAorCU9EOF9NRU1P UllfVElNSU5HX1RVTkUgICAgICAgICAgPSAxIDw8IDgsCisJT0Q4X0ZBTl9aRVJPX1JQTV9DT05U Uk9MICAgICAgICA9IDEgPDwgOQorfTsKKworZW51bSBPRDhfU0VUVElOR19JRAoreworCU9EOF9T RVRUSU5HX0dGWENMS19GTUlOID0gMCwKKwlPRDhfU0VUVElOR19HRlhDTEtfRk1BWCwKKwlPRDhf U0VUVElOR19HRlhDTEtfRlJFUTEsCisJT0Q4X1NFVFRJTkdfR0ZYQ0xLX1ZPTFRBR0UxLAorCU9E OF9TRVRUSU5HX0dGWENMS19GUkVRMiwKKwlPRDhfU0VUVElOR19HRlhDTEtfVk9MVEFHRTIsCisJ T0Q4X1NFVFRJTkdfR0ZYQ0xLX0ZSRVEzLAorCU9EOF9TRVRUSU5HX0dGWENMS19WT0xUQUdFMywK KwlPRDhfU0VUVElOR19VQ0xLX0ZNQVgsCisJT0Q4X1NFVFRJTkdfUE9XRVJfUEVSQ0VOVEFHRSwK KwlPRDhfU0VUVElOR19GQU5fQUNPVVNUSUNfTElNSVQsCisJT0Q4X1NFVFRJTkdfRkFOX01JTl9T UEVFRCwKKwlPRDhfU0VUVElOR19GQU5fVEFSR0VUX1RFTVAsCisJT0Q4X1NFVFRJTkdfT1BFUkFU SU5HX1RFTVBfTUFYLAorCU9EOF9TRVRUSU5HX0FDX1RJTUlORywKKwlPRDhfU0VUVElOR19GQU5f WkVST19SUE1fQ09OVFJPTCwKKwlPRDhfU0VUVElOR19DT1VOVAorfTsKKworc3RydWN0IHZlZ2Ey MF9vZDhfc2luZ2xlX3NldHRpbmcgeworCXVpbnQzMl90CWZlYXR1cmVfaWQ7CisJaW50MzJfdAkJ bWluX3ZhbHVlOworCWludDMyX3QJCW1heF92YWx1ZTsKKwlpbnQzMl90CQljdXJyZW50X3ZhbHVl OworCWludDMyX3QJCWRlZmF1bHRfdmFsdWU7Cit9OworCitzdHJ1Y3QgdmVnYTIwX29kOF9zZXR0 aW5ncyB7CisJc3RydWN0IHZlZ2EyMF9vZDhfc2luZ2xlX3NldHRpbmcJb2Q4X3NldHRpbmdzX2Fy cmF5W09EOF9TRVRUSU5HX0NPVU5UXTsKK307CisKIGV4dGVybiB2b2lkIHZlZ2EyMF9zZXRfcHB0 X2Z1bmNzKHN0cnVjdCBzbXVfY29udGV4dCAqc211KTsKIAogI2VuZGlmCi0tIAoyLjcuNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWls aW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==