From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v10 6/6] drm/i915/hdcp: Enable HDCP 1.4 and 2.2 on Gen12+ Date: Tue, 27 Aug 2019 16:20:14 +0530 Message-ID: <20190827105014.14181-7-ramalingam.c@intel.com> References: <20190827105014.14181-1-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20190827105014.14181-1-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx , dri-devel Cc: Jani Nikula , tomas.winkler@intel.com List-Id: intel-gfx@lists.freedesktop.org PkZyb20gR2VuMTIgb253YXJkcywgSERDUCBIVyBibG9jayBpcyBpbXBsZW1lbnRlZCB3aXRoaW4g dHJhbnNjb2RlcnMuClRpbGwgR2VuMTEgSERDUCBIVyBibG9jayB3YXMgcGFydCBvZiBEREkuCgpI ZW5jZSByZXF1aXJlZCBjaGFuZ2VzIGluIEhXIHByb2dyYW1taW5nIGlzIGhhbmRsZWQgaGVyZS4K CkFzIE1FIEZXIG5lZWRzIHRoZSB0cmFuc2NvZGVyIGRldGFpbCBvbiB3aGljaCBIRENQIGlzIGVu YWJsZWQKb24gR2VuMTIrIHBsYXRmb3JtLCB3ZSBhcmUgcG9wdWxhdGluZyB0aGUgZGV0YWlsIGlu IGhkY3BfcG9ydF9kYXRhLgoKdjI6CiAgX01NSU9fVFJBTlMgaXMgdXNlZCBbTHVjYXMgYW5kIERh bmllbF0KICBwbGF0Zm9ybSBjaGVjayBpcyBtb3ZlZCBpbnRvIHRoZSBjYWxsZXIgW0x1Y2FzXQp2 MzoKICBwbGF0Zm9ybSBjaGVjayBpcyBtb3ZlZCBpbnRvIGEgbWFjcm8gW1NoYXNoYW5rXQp2NDoK ICBGZXcgb3B0aW1pemF0aW9ucyBpbiB0aGUgY29kaW5nIFtTaGFzaGFua10KdjU6CiAgRml4ZWQg YWxpZ25tZW50IGluIG1hY3JvIGRlZmluaXRpb24gaW4gaTkxNV9yZWcuaCBbU2hhc2hhbmtdCiAg dW51c2VkIHZhcmlhYmxlcyAicmVnIiBpcyByZW1vdmVkLgp2NjoKICBDb25maWd1cmluZyB0aGUg dHJhbnNjb2RlciBhdCBjb21wdXRlX2NvbmZpZy4KICB0cmFuc2NvZGVyIGlzIHVzZWQgaW5zdGVh ZCBvZiBwaXBlIGluIG1hY3Jvcy4KICBSZWJhc2VkLgp2NzoKICB0cmFuc2NvZGVyIGlzIGNhY2hl ZCBhdCBpbnRlbF9oZGNwCiAgaGRjcF9wb3J0X2RhdGEgaXMgY29uZmlndXJlZCB3aXRoIHRyYW5z Y29kZXIgaW5kZXggYXNwZXIgTUUgRlcuCnY4OgogIHMvdHJhbnMvY3B1X3RyYW5zY29kZXIKICBz L3RjL2NwdV90cmFuc2NvZGVyCnY5OgogIHJlcF9jdGwgaXMgcHJlcGFyZWQgZm9yIFRDRCB0b28u CiAgcmV0dXJuIG1vdmVkIGludG8gZGVhdWx0IG9mIHJlcF9jdGwgcHJlcGFyZSBmdW5jdGlvbiBb U2hhc2hhbmtdCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRl bC5jb20+ClJldmlld2VkLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNoYXNoYW5rLnNoYXJtYUBpbnRl bC5jb20+CkFja2VkLWJ5OiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jIHwgMTUyICsrKysrKysr KysrKysrLS0tLS0tLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRtaS5j IHwgIDEwICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgICAgICB8IDEy NCArKysrKysrKysrKysrKysrLS0KIDMgZmlsZXMgY2hhbmdlZCwgMjIxIGluc2VydGlvbnMoKyks IDY1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3Bs YXkvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZGlzcGxheS9pbnRlbF9oZGNw LmMKaW5kZXggMzU5MWI4ZjdmZTMwLi4zZGU4OGEyMWQwZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2Rpc3BsYXkvaW50ZWxfaGRjcC5jCkBAIC0xOCw2ICsxOCw3IEBACiAjaW5jbHVkZSAiaW50 ZWxfZGlzcGxheV90eXBlcy5oIgogI2luY2x1ZGUgImludGVsX2hkY3AuaCIKICNpbmNsdWRlICJp bnRlbF9zaWRlYmFuZC5oIgorI2luY2x1ZGUgImludGVsX2Nvbm5lY3Rvci5oIgogCiAjZGVmaW5l IEtFWV9MT0FEX1RSSUVTCTUKICNkZWZpbmUgRU5DUllQVF9TVEFUVVNfQ0hBTkdFX1RJTUVPVVRf TVMJNTAKQEAgLTEwNSwyNCArMTA2LDIwIEBAIGJvb2wgaW50ZWxfaGRjcDJfY2FwYWJsZShzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJcmV0dXJuIGNhcGFibGU7CiB9CiAKLXN0 YXRpYyBpbmxpbmUgYm9vbCBpbnRlbF9oZGNwX2luX3VzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCitzdGF0aWMgaW5saW5lCitib29sIGludGVsX2hkY3BfaW5fdXNlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJICAgICAgIGVudW0gdHJhbnNjb2RlciBj cHVfdHJhbnNjb2RlciwgZW51bSBwb3J0IHBvcnQpCiB7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKLQllbnVtIHBvcnQg cG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rlci0+cG9ydDsKLQl1MzIgcmVnOwotCi0JcmVnID0gSTkx NV9SRUFEKFBPUlRfSERDUF9TVEFUVVMocG9ydCkpOwotCXJldHVybiByZWcgJiBIRENQX1NUQVRV U19FTkM7CisJcmV0dXJuIEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5z Y29kZXIsIHBvcnQpKSAmCisJICAgICAgIEhEQ1BfU1RBVFVTX0VOQzsKIH0KIAotc3RhdGljIGlu bGluZSBib29sIGludGVsX2hkY3AyX2luX3VzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCitzdGF0aWMgaW5saW5lCitib29sIGludGVsX2hkY3AyX2luX3VzZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29k ZXIsIGVudW0gcG9ydCBwb3J0KQogewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7Ci0JZW51bSBwb3J0IHBvcnQgPSBjb25u ZWN0b3ItPmVuY29kZXItPnBvcnQ7Ci0JdTMyIHJlZzsKLQotCXJlZyA9IEk5MTVfUkVBRChIRENQ Ml9TVEFUVVNfRERJKHBvcnQpKTsKLQlyZXR1cm4gcmVnICYgTElOS19FTkNSWVBUSU9OX1NUQVRV UzsKKwlyZXR1cm4gSTkxNV9SRUFEKEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29k ZXIsIHBvcnQpKSAmCisJICAgICAgIExJTktfRU5DUllQVElPTl9TVEFUVVM7CiB9CiAKIHN0YXRp YyBpbnQgaW50ZWxfaGRjcF9wb2xsX2tzdl9maWZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQg KmludGVsX2RpZ19wb3J0LApAQCAtMjUzLDkgKzI1MCwyOSBAQCBzdGF0aWMgaW50IGludGVsX3dy aXRlX3NoYV90ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHNoYV90 ZXh0KQogfQogCiBzdGF0aWMKLXUzMiBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCit1MzIgaW50ZWxfaGRjcF9nZXRf cmVwZWF0ZXJfY3RsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQllbnVt IHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIsIGVudW0gcG9ydCBwb3J0KQogewotCWVudW0gcG9y dCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSAxMikgeworCQlzd2l0Y2ggKGNwdV90cmFuc2NvZGVyKSB7CisJCWNhc2UgVFJBTlND T0RFUl9BOgorCQkJcmV0dXJuIEhEQ1BfVFJBTlNBX1JFUF9QUkVTRU5UIHwKKwkJCSAgICAgICBI RENQX1RSQU5TQV9TSEExX00wOworCQljYXNlIFRSQU5TQ09ERVJfQjoKKwkJCXJldHVybiBIRENQ X1RSQU5TQl9SRVBfUFJFU0VOVCB8CisJCQkgICAgICAgSERDUF9UUkFOU0JfU0hBMV9NMDsKKwkJ Y2FzZSBUUkFOU0NPREVSX0M6CisJCQlyZXR1cm4gSERDUF9UUkFOU0NfUkVQX1BSRVNFTlQgfAor CQkJICAgICAgIEhEQ1BfVFJBTlNDX1NIQTFfTTA7CisJCWNhc2UgVFJBTlNDT0RFUl9EOgorCQkJ cmV0dXJuIEhEQ1BfVFJBTlNEX1JFUF9QUkVTRU5UIHwKKwkJCSAgICAgICBIRENQX1RSQU5TRF9T SEExX00wOworCQlkZWZhdWx0OgorCQkJRFJNX0VSUk9SKCJVbmtub3duIHRyYW5zY29kZXIgJWRc biIsIGNwdV90cmFuc2NvZGVyKTsKKwkJCXJldHVybiAtRUlOVkFMOworCQl9CisJfQorCiAJc3dp dGNoIChwb3J0KSB7CiAJY2FzZSBQT1JUX0E6CiAJCXJldHVybiBIRENQX0RESUFfUkVQX1BSRVNF TlQgfCBIRENQX0RESUFfU0hBMV9NMDsKQEAgLTI2OCwxOCArMjg1LDIwIEBAIHUzMiBpbnRlbF9o ZGNwX2dldF9yZXBlYXRlcl9jdGwoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQpCiAJY2FzZSBQT1JUX0U6CiAJCXJldHVybiBIRENQX0RESUVfUkVQX1BSRVNFTlQgfCBI RENQX0RESUVfU0hBMV9NMDsKIAlkZWZhdWx0OgotCQlicmVhazsKKwkJRFJNX0VSUk9SKCJVbmtu b3duIHBvcnQgJWRcbiIsIHBvcnQpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9Ci0JRFJNX0VSUk9S KCJVbmtub3duIHBvcnQgJWRcbiIsIHBvcnQpOwotCXJldHVybiAtRUlOVkFMOwogfQogCiBzdGF0 aWMKLWludCBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJpbWUoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCitpbnQgaW50ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxf aGRjcF9zaGltICpzaGltLAogCQkJCXU4ICprc3ZfZmlmbywgdTggbnVtX2Rvd25zdHJlYW0sIHU4 ICpic3RhdHVzKQogeworCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 ID0gY29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdjsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBjb25uZWN0b3It PmhkY3AuY3B1X3RyYW5zY29kZXI7CisJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+ YmFzZS5wb3J0OwogCXUzMiB2cHJpbWUsIHNoYV90ZXh0LCBzaGFfbGVmdG92ZXJzLCByZXBfY3Rs OwogCWludCByZXQsIGksIGosIHNoYV9pZHg7CiAKQEAgLTMwNiw3ICszMjUsNyBAQCBpbnQgaW50 ZWxfaGRjcF92YWxpZGF0ZV92X3ByaW1lKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAogCXNoYV9pZHggPSAwOwogCXNoYV90ZXh0ID0gMDsKIAlzaGFfbGVmdG92ZXJz ID0gMDsKLQlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVsX2RpZ19w b3J0KTsKKwlyZXBfY3RsID0gaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGRldl9wcml2LCBj cHVfdHJhbnNjb2RlciwgcG9ydCk7CiAJSTkxNV9XUklURShIRENQX1JFUF9DVEwsIHJlcF9jdGwg fCBIRENQX1NIQTFfVEVYVF8zMik7CiAJZm9yIChpID0gMDsgaSA8IG51bV9kb3duc3RyZWFtOyBp KyspIHsKIAkJdW5zaWduZWQgaW50IHNoYV9lbXB0eTsKQEAgLTU0OCw3ICs1NjcsNyBAQCBpbnQg aW50ZWxfaGRjcF9hdXRoX2Rvd25zdHJlYW0oc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQogCSAqIFYgcHJpbWUgYXRsZWFzdCB0d2ljZS4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwg dHJpZXM7IGkrKykgewotCQlyZXQgPSBpbnRlbF9oZGNwX3ZhbGlkYXRlX3ZfcHJpbWUoaW50ZWxf ZGlnX3BvcnQsIHNoaW0sCisJCXJldCA9IGludGVsX2hkY3BfdmFsaWRhdGVfdl9wcmltZShjb25u ZWN0b3IsIHNoaW0sCiAJCQkJCQkgIGtzdl9maWZvLCBudW1fZG93bnN0cmVhbSwKIAkJCQkJCSAg YnN0YXR1cyk7CiAJCWlmICghcmV0KQpAQCAtNTc2LDYgKzU5NSw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKIAljb25zdCBzdHJ1Y3QgaW50 ZWxfaGRjcF9zaGltICpzaGltID0gaGRjcC0+c2hpbTsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXY7CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY29ubmVjdG9y LT5oZGNwLmNwdV90cmFuc2NvZGVyOwogCWVudW0gcG9ydCBwb3J0OwogCXVuc2lnbmVkIGxvbmcg cjBfcHJpbWVfZ2VuX3N0YXJ0OwogCWludCByZXQsIGksIHRyaWVzID0gMjsKQEAgLTYxNSwxOCAr NjM1LDIxIEBAIHN0YXRpYyBpbnQgaW50ZWxfaGRjcF9hdXRoKHN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcikKIAogCS8qIEluaXRpYWxpemUgQW4gd2l0aCAyIHJhbmRvbSB2YWx1ZXMg YW5kIGFjcXVpcmUgaXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQotCQlJOTE1X1dSSVRF KFBPUlRfSERDUF9BTklOSVQocG9ydCksIGdldF9yYW5kb21fdTMyKCkpOwotCUk5MTVfV1JJVEUo UE9SVF9IRENQX0NPTkYocG9ydCksIEhEQ1BfQ09ORl9DQVBUVVJFX0FOKTsKKwkJSTkxNV9XUklU RShIRENQX0FOSU5JVChkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHBvcnQpLAorCQkJICAgZ2V0 X3JhbmRvbV91MzIoKSk7CisJSTkxNV9XUklURShIRENQX0NPTkYoZGV2X3ByaXYsIGNwdV90cmFu c2NvZGVyLCBwb3J0KSwKKwkJICAgSERDUF9DT05GX0NBUFRVUkVfQU4pOwogCiAJLyogV2FpdCBm b3IgQW4gdG8gYmUgYWNxdWlyZWQgKi8KLQlpZiAoaW50ZWxfZGVfd2FpdF9mb3Jfc2V0KGRldl9w cml2LCBQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpLAorCWlmIChpbnRlbF9kZV93YWl0X2Zvcl9zZXQo ZGV2X3ByaXYsCisJCQkJICBIRENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHBv cnQpLAogCQkJCSAgSERDUF9TVEFUVVNfQU5fUkVBRFksIDEpKSB7CiAJCURSTV9FUlJPUigiVGlt ZWQgb3V0IHdhaXRpbmcgZm9yIEFuXG4iKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCi0J YW4ucmVnWzBdID0gSTkxNV9SRUFEKFBPUlRfSERDUF9BTkxPKHBvcnQpKTsKLQlhbi5yZWdbMV0g PSBJOTE1X1JFQUQoUE9SVF9IRENQX0FOSEkocG9ydCkpOworCWFuLnJlZ1swXSA9IEk5MTVfUkVB RChIRENQX0FOTE8oZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSk7CisJYW4ucmVnWzFd ID0gSTkxNV9SRUFEKEhEQ1BfQU5ISShkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHBvcnQpKTsK IAlyZXQgPSBzaGltLT53cml0ZV9hbl9ha3N2KGludGVsX2RpZ19wb3J0LCBhbi5zaGltKTsKIAlp ZiAocmV0KQogCQlyZXR1cm4gcmV0OwpAQCAtNjQ0LDI0ICs2NjcsMjYgQEAgc3RhdGljIGludCBp bnRlbF9oZGNwX2F1dGgoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlyZXR1 cm4gLUVQRVJNOwogCX0KIAotCUk5MTVfV1JJVEUoUE9SVF9IRENQX0JLU1ZMTyhwb3J0KSwgYmtz di5yZWdbMF0pOwotCUk5MTVfV1JJVEUoUE9SVF9IRENQX0JLU1ZISShwb3J0KSwgYmtzdi5yZWdb MV0pOworCUk5MTVfV1JJVEUoSERDUF9CS1NWTE8oZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBw b3J0KSwgYmtzdi5yZWdbMF0pOworCUk5MTVfV1JJVEUoSERDUF9CS1NWSEkoZGV2X3ByaXYsIGNw dV90cmFuc2NvZGVyLCBwb3J0KSwgYmtzdi5yZWdbMV0pOwogCiAJcmV0ID0gc2hpbS0+cmVwZWF0 ZXJfcHJlc2VudChpbnRlbF9kaWdfcG9ydCwgJnJlcGVhdGVyX3ByZXNlbnQpOwogCWlmIChyZXQp CiAJCXJldHVybiByZXQ7CiAJaWYgKHJlcGVhdGVyX3ByZXNlbnQpCiAJCUk5MTVfV1JJVEUoSERD UF9SRVBfQ1RMLAotCQkJICAgaW50ZWxfaGRjcF9nZXRfcmVwZWF0ZXJfY3RsKGludGVsX2RpZ19w b3J0KSk7CisJCQkgICBpbnRlbF9oZGNwX2dldF9yZXBlYXRlcl9jdGwoZGV2X3ByaXYsIGNwdV90 cmFuc2NvZGVyLAorCQkJCQkJICAgICAgIHBvcnQpKTsKIAogCXJldCA9IHNoaW0tPnRvZ2dsZV9z aWduYWxsaW5nKGludGVsX2RpZ19wb3J0LCB0cnVlKTsKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0 OwogCi0JSTkxNV9XUklURShQT1JUX0hEQ1BfQ09ORihwb3J0KSwgSERDUF9DT05GX0FVVEhfQU5E X0VOQyk7CisJSTkxNV9XUklURShIRENQX0NPTkYoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBw b3J0KSwKKwkJICAgSERDUF9DT05GX0FVVEhfQU5EX0VOQyk7CiAKIAkvKiBXYWl0IGZvciBSMCBy ZWFkeSAqLwotCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkg JgorCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoSERDUF9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFu c2NvZGVyLCBwb3J0KSkgJgogCQkgICAgIChIRENQX1NUQVRVU19SMF9SRUFEWSB8IEhEQ1BfU1RB VFVTX0VOQyksIDEpKSB7CiAJCURSTV9FUlJPUigiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFIwIHJl YWR5XG4iKTsKIAkJcmV0dXJuIC1FVElNRURPVVQ7CkBAIC02ODksMjIgKzcxNCwyNSBAQCBzdGF0 aWMgaW50IGludGVsX2hkY3BfYXV0aChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ip CiAJCXJldCA9IHNoaW0tPnJlYWRfcmlfcHJpbWUoaW50ZWxfZGlnX3BvcnQsIHJpLnNoaW0pOwog CQlpZiAocmV0KQogCQkJcmV0dXJuIHJldDsKLQkJSTkxNV9XUklURShQT1JUX0hEQ1BfUlBSSU1F KHBvcnQpLCByaS5yZWcpOworCQlJOTE1X1dSSVRFKEhEQ1BfUlBSSU1FKGRldl9wcml2LCBjcHVf dHJhbnNjb2RlciwgcG9ydCksIHJpLnJlZyk7CiAKIAkJLyogV2FpdCBmb3IgUmkgcHJpbWUgbWF0 Y2ggKi8KLQkJaWYgKCF3YWl0X2ZvcihJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkg JgorCQlpZiAoIXdhaXRfZm9yKEk5MTVfUkVBRChIRENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3Ry YW5zY29kZXIsCisJCQkJCQkgICAgcG9ydCkpICYKIAkJICAgIChIRENQX1NUQVRVU19SSV9NQVRD SCB8IEhEQ1BfU1RBVFVTX0VOQyksIDEpKQogCQkJYnJlYWs7CiAJfQogCiAJaWYgKGkgPT0gdHJp ZXMpIHsKIAkJRFJNX0RFQlVHX0tNUygiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFJpIHByaW1lIG1h dGNoICgleClcbiIsCi0JCQkgICAgICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkp OworCQkJICAgICAgSTkxNV9SRUFEKEhEQ1BfU1RBVFVTKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rl ciwKKwkJCQkJCSAgICBwb3J0KSkpOwogCQlyZXR1cm4gLUVUSU1FRE9VVDsKIAl9CiAKIAkvKiBX YWl0IGZvciBlbmNyeXB0aW9uIGNvbmZpcm1hdGlvbiAqLwotCWlmIChpbnRlbF9kZV93YWl0X2Zv cl9zZXQoZGV2X3ByaXYsIFBPUlRfSERDUF9TVEFUVVMocG9ydCksCisJaWYgKGludGVsX2RlX3dh aXRfZm9yX3NldChkZXZfcHJpdiwKKwkJCQkgIEhEQ1BfU1RBVFVTKGRldl9wcml2LCBjcHVfdHJh bnNjb2RlciwgcG9ydCksCiAJCQkJICBIRENQX1NUQVRVU19FTkMsCiAJCQkJICBFTkNSWVBUX1NU QVRVU19DSEFOR0VfVElNRU9VVF9NUykpIHsKIAkJRFJNX0VSUk9SKCJUaW1lZCBvdXQgd2FpdGlu ZyBmb3IgZW5jcnlwdGlvblxuIik7CkBAIC03MjksMTUgKzc1NywxNyBAQCBzdGF0aWMgaW50IF9p bnRlbF9oZGNwX2Rpc2FibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtPmRl dl9wcml2YXRlOwogCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0g Y29ubl90b19kaWdfcG9ydChjb25uZWN0b3IpOwogCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGln X3BvcnQtPmJhc2UucG9ydDsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBoZGNw LT5jcHVfdHJhbnNjb2RlcjsKIAlpbnQgcmV0OwogCiAJRFJNX0RFQlVHX0tNUygiWyVzOiVkXSBI RENQIGlzIGJlaW5nIGRpc2FibGVkLi4uXG4iLAogCQkgICAgICBjb25uZWN0b3ItPmJhc2UubmFt ZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQpOwogCiAJaGRjcC0+aGRjcF9lbmNyeXB0ZWQgPSBm YWxzZTsKLQlJOTE1X1dSSVRFKFBPUlRfSERDUF9DT05GKHBvcnQpLCAwKTsKLQlpZiAoaW50ZWxf ZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsIFBPUlRfSERDUF9TVEFUVVMocG9ydCksIH4wLAot CQkJCSAgICBFTkNSWVBUX1NUQVRVU19DSEFOR0VfVElNRU9VVF9NUykpIHsKKwlJOTE1X1dSSVRF KEhEQ1BfQ09ORihkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIHBvcnQpLCAwKTsKKwlpZiAoaW50 ZWxfZGVfd2FpdF9mb3JfY2xlYXIoZGV2X3ByaXYsCisJCQkJICAgIEhEQ1BfU1RBVFVTKGRldl9w cml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCksCisJCQkJICAgIH4wLCBFTkNSWVBUX1NUQVRVU19D SEFOR0VfVElNRU9VVF9NUykpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZGlzYWJsZSBIRENQ LCB0aW1lb3V0IGNsZWFyaW5nIHN0YXR1c1xuIik7CiAJCXJldHVybiAtRVRJTUVET1VUOwogCX0K QEAgLTgwOCw5ICs4MzgsMTEgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2NoZWNrX2xpbmsoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gY29ubl90b19kaWdfcG9ydChjb25u ZWN0b3IpOwogCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UucG9ydDsKKwll bnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXI7CiAJaW50IHJldCA9IDA7CiAKIAltdXRleF9s b2NrKCZoZGNwLT5tdXRleCk7CisJY3B1X3RyYW5zY29kZXIgPSBoZGNwLT5jcHVfdHJhbnNjb2Rl cjsKIAogCS8qIENoZWNrX2xpbmsgdmFsaWQgb25seSB3aGVuIEhEQ1AxLjQgaXMgZW5hYmxlZCAq LwogCWlmIChoZGNwLT52YWx1ZSAhPSBEUk1fTU9ERV9DT05URU5UX1BST1RFQ1RJT05fRU5BQkxF RCB8fApAQCAtODE5LDEwICs4NTEsMTEgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwX2NoZWNrX2xp bmsoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCQlnb3RvIG91dDsKIAl9CiAK LQlpZiAoV0FSTl9PTighaW50ZWxfaGRjcF9pbl91c2UoY29ubmVjdG9yKSkpIHsKKwlpZiAoV0FS Tl9PTighaW50ZWxfaGRjcF9pbl91c2UoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSkp IHsKIAkJRFJNX0VSUk9SKCIlczolZCBIRENQIGxpbmsgc3RvcHBlZCBlbmNyeXB0aW9uLCV4XG4i LAogCQkJICBjb25uZWN0b3ItPmJhc2UubmFtZSwgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCi0J CQkgIEk5MTVfUkVBRChQT1JUX0hEQ1BfU1RBVFVTKHBvcnQpKSk7CisJCQkgIEk5MTVfUkVBRChI RENQX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsCisJCQkJCQlwb3J0KSkpOwogCQly ZXQgPSAtRU5YSU87CiAJCWhkY3AtPnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9O X0RFU0lSRUQ7CiAJCXNjaGVkdWxlX3dvcmsoJmhkY3AtPnByb3Bfd29yayk7CkBAIC0xNDkzLDEw ICsxNTI2LDExIEBAIHN0YXRpYyBpbnQgaGRjcDJfZW5hYmxlX2VuY3J5cHRpb24oc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNlLmRldik7CiAJc3RydWN0IGludGVsX2hkY3Ag KmhkY3AgPSAmY29ubmVjdG9yLT5oZGNwOwogCWVudW0gcG9ydCBwb3J0ID0gY29ubmVjdG9yLT5l bmNvZGVyLT5wb3J0OworCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGhkY3AtPmNw dV90cmFuc2NvZGVyOwogCWludCByZXQ7CiAKLQlXQVJOX09OKEk5MTVfUkVBRChIRENQMl9TVEFU VVNfRERJKHBvcnQpKSAmIExJTktfRU5DUllQVElPTl9TVEFUVVMpOwotCisJV0FSTl9PTihJOTE1 X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCkpICYKKwkJ TElOS19FTkNSWVBUSU9OX1NUQVRVUyk7CiAJaWYgKGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxs aW5nKSB7CiAJCXJldCA9IGhkY3AtPnNoaW0tPnRvZ2dsZV9zaWduYWxsaW5nKGludGVsX2RpZ19w b3J0LCB0cnVlKTsKIAkJaWYgKHJldCkgewpAQCAtMTUwNiwxNCArMTU0MCwxOCBAQCBzdGF0aWMg aW50IGhkY3AyX2VuYWJsZV9lbmNyeXB0aW9uKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKIAkJfQogCX0KIAotCWlmIChJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0KSkg JiBMSU5LX0FVVEhfU1RBVFVTKSB7CisJaWYgKEk5MTVfUkVBRChIRENQMl9TVEFUVVMoZGV2X3By aXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSkgJgorCSAgICBMSU5LX0FVVEhfU1RBVFVTKSB7CiAJ CS8qIExpbmsgaXMgQXV0aGVudGljYXRlZC4gTm93IHNldCBmb3IgRW5jcnlwdGlvbiAqLwotCQlJ OTE1X1dSSVRFKEhEQ1AyX0NUTF9EREkocG9ydCksCi0JCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RM X0RESShwb3J0KSkgfAorCQlJOTE1X1dSSVRFKEhEQ1AyX0NUTChkZXZfcHJpdiwgY3B1X3RyYW5z Y29kZXIsIHBvcnQpLAorCQkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTChkZXZfcHJpdiwgY3B1X3Ry YW5zY29kZXIsCisJCQkJCSAgICAgICBwb3J0KSkgfAogCQkJICAgQ1RMX0xJTktfRU5DUllQVElP Tl9SRVEpOwogCX0KIAotCXJldCA9IGludGVsX2RlX3dhaXRfZm9yX3NldChkZXZfcHJpdiwgSERD UDJfU1RBVFVTX0RESShwb3J0KSwKKwlyZXQgPSBpbnRlbF9kZV93YWl0X2Zvcl9zZXQoZGV2X3By aXYsCisJCQkJICAgIEhEQ1AyX1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsCisJCQkJ CQkgcG9ydCksCiAJCQkJICAgIExJTktfRU5DUllQVElPTl9TVEFUVVMsCiAJCQkJICAgIEVOQ1JZ UFRfU1RBVFVTX0NIQU5HRV9USU1FT1VUX01TKTsKIApAQCAtMTUyNiwxNCArMTU2NCwxOSBAQCBz dGF0aWMgaW50IGhkY3AyX2Rpc2FibGVfZW5jcnlwdGlvbihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkx NShjb25uZWN0b3ItPmJhc2UuZGV2KTsKIAlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25u ZWN0b3ItPmhkY3A7CiAJZW51bSBwb3J0IHBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7 CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaGRjcC0+Y3B1X3RyYW5zY29kZXI7 CiAJaW50IHJldDsKIAotCVdBUk5fT04oIShJOTE1X1JFQUQoSERDUDJfU1RBVFVTX0RESShwb3J0 KSkgJiBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTKSk7CisJV0FSTl9PTighKEk5MTVfUkVBRChIRENQ Ml9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSkgJgorCQkJICAgIExJTktf RU5DUllQVElPTl9TVEFUVVMpKTsKIAotCUk5MTVfV1JJVEUoSERDUDJfQ1RMX0RESShwb3J0KSwK LQkJICAgSTkxNV9SRUFEKEhEQ1AyX0NUTF9EREkocG9ydCkpICYgfkNUTF9MSU5LX0VOQ1JZUFRJ T05fUkVRKTsKKwlJOTE1X1dSSVRFKEhEQ1AyX0NUTChkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIs IHBvcnQpLAorCQkgICBJOTE1X1JFQUQoSERDUDJfQ1RMKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rl ciwgcG9ydCkpICYKKwkJICAgfkNUTF9MSU5LX0VOQ1JZUFRJT05fUkVRKTsKIAotCXJldCA9IGlu dGVsX2RlX3dhaXRfZm9yX2NsZWFyKGRldl9wcml2LCBIRENQMl9TVEFUVVNfRERJKHBvcnQpLAor CXJldCA9IGludGVsX2RlX3dhaXRfZm9yX2NsZWFyKGRldl9wcml2LAorCQkJCSAgICAgIEhEQ1Ay X1NUQVRVUyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsCisJCQkJCQkgICBwb3J0KSwKIAkJCQkg ICAgICBMSU5LX0VOQ1JZUFRJT05fU1RBVFVTLAogCQkJCSAgICAgIEVOQ1JZUFRfU1RBVFVTX0NI QU5HRV9USU1FT1VUX01TKTsKIAlpZiAocmV0ID09IC1FVElNRURPVVQpCkBAIC0xNjMyLDkgKzE2 NzUsMTEgQEAgc3RhdGljIGludCBpbnRlbF9oZGNwMl9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvcikKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNvbm5lY3Rvci0+YmFzZS5kZXYpOwogCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNw ID0gJmNvbm5lY3Rvci0+aGRjcDsKIAllbnVtIHBvcnQgcG9ydCA9IGNvbm5lY3Rvci0+ZW5jb2Rl ci0+cG9ydDsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXI7CiAJaW50IHJldCA9IDA7 CiAKIAltdXRleF9sb2NrKCZoZGNwLT5tdXRleCk7CisJY3B1X3RyYW5zY29kZXIgPSBoZGNwLT5j cHVfdHJhbnNjb2RlcjsKIAogCS8qIGhkY3AyX2NoZWNrX2xpbmsgaXMgZXhwZWN0ZWQgb25seSB3 aGVuIEhEQ1AyLjIgaXMgRW5hYmxlZCAqLwogCWlmIChoZGNwLT52YWx1ZSAhPSBEUk1fTU9ERV9D T05URU5UX1BST1RFQ1RJT05fRU5BQkxFRCB8fApAQCAtMTY0Myw5ICsxNjg4LDEwIEBAIHN0YXRp YyBpbnQgaW50ZWxfaGRjcDJfY2hlY2tfbGluayhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCiAJCWdvdG8gb3V0OwogCX0KIAotCWlmIChXQVJOX09OKCFpbnRlbF9oZGNwMl9pbl91 c2UoY29ubmVjdG9yKSkpIHsKKwlpZiAoV0FSTl9PTighaW50ZWxfaGRjcDJfaW5fdXNlKGRldl9w cml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCkpKSB7CiAJCURSTV9FUlJPUigiSERDUDIuMiBsaW5r IHN0b3BwZWQgdGhlIGVuY3J5cHRpb24sICV4XG4iLAotCQkJICBJOTE1X1JFQUQoSERDUDJfU1RB VFVTX0RESShwb3J0KSkpOworCQkJICBJOTE1X1JFQUQoSERDUDJfU1RBVFVTKGRldl9wcml2LCBj cHVfdHJhbnNjb2RlciwKKwkJCQkJCSBwb3J0KSkpOwogCQlyZXQgPSAtRU5YSU87CiAJCWhkY3At PnZhbHVlID0gRFJNX01PREVfQ09OVEVOVF9QUk9URUNUSU9OX0RFU0lSRUQ7CiAJCXNjaGVkdWxl X3dvcmsoJmhkY3AtPnByb3Bfd29yayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9kaXNwbGF5L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2Rpc3BsYXkvaW50 ZWxfaGRtaS5jCmluZGV4IDZlOWJiNmJkMWVlMi4uZjZiYjc3ZmQwOTMwIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9kaXNwbGF5L2ludGVsX2hkbWkuYwpAQCAtMTQ5MSw3ICsxNDkxLDEwIEBAIGJv b2wgaW50ZWxfaGRtaV9oZGNwX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0K IAkJaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5kZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9CisJCWludGVsX2RpZ19wb3J0LT5oZG1pLmF0dGFj aGVkX2Nvbm5lY3RvcjsKIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RpZ19wb3J0LT5iYXNlLnBv cnQ7CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY29ubmVjdG9yLT5oZGNwLmNw dV90cmFuc2NvZGVyOwogCWludCByZXQ7CiAJdW5pb24gewogCQl1MzIgcmVnOwpAQCAtMTUwMiwx MyArMTUwNSwxNCBAQCBib29sIGludGVsX2hkbWlfaGRjcF9jaGVja19saW5rKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQogCWlmIChyZXQpCiAJCXJldHVybiBmYWxz ZTsKIAotCUk5MTVfV1JJVEUoUE9SVF9IRENQX1JQUklNRShwb3J0KSwgcmkucmVnKTsKKwlJOTE1 X1dSSVRFKEhEQ1BfUlBSSU1FKGRldl9wcml2LCBjcHVfdHJhbnNjb2RlciwgcG9ydCksIHJpLnJl Zyk7CiAKIAkvKiBXYWl0IGZvciBSaSBwcmltZSBtYXRjaCAqLwotCWlmICh3YWl0X2ZvcihJOTE1 X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkgJgorCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQo SERDUF9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLCBwb3J0KSkgJgogCQkgICAgIChI RENQX1NUQVRVU19SSV9NQVRDSCB8IEhEQ1BfU1RBVFVTX0VOQyksIDEpKSB7CiAJCURSTV9FUlJP UigiUmknIG1pc21hdGNoIGRldGVjdGVkLCBsaW5rIGNoZWNrIGZhaWxlZCAoJXgpXG4iLAotCQkJ ICBJOTE1X1JFQUQoUE9SVF9IRENQX1NUQVRVUyhwb3J0KSkpOworCQkJICBJOTE1X1JFQUQoSERD UF9TVEFUVVMoZGV2X3ByaXYsIGNwdV90cmFuc2NvZGVyLAorCQkJCQkJcG9ydCkpKTsKIAkJcmV0 dXJuIGZhbHNlOwogCX0KIAlyZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4 IDAyZTFlZjEwYzQ3ZS4uM2NmZGFiMThjMGNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAg LTkyODEsMTIgKzkyODEsMjAgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7CiAKIC8qIEhEQ1AgUmVw ZWF0ZXIgUmVnaXN0ZXJzICovCiAjZGVmaW5lIEhEQ1BfUkVQX0NUTAkJCV9NTUlPKDB4NjZkMDAp CisjZGVmaW5lICBIRENQX1RSQU5TQV9SRVBfUFJFU0VOVAlCSVQoMzEpCisjZGVmaW5lICBIRENQ X1RSQU5TQl9SRVBfUFJFU0VOVAlCSVQoMzApCisjZGVmaW5lICBIRENQX1RSQU5TQ19SRVBfUFJF U0VOVAlCSVQoMjkpCisjZGVmaW5lICBIRENQX1RSQU5TRF9SRVBfUFJFU0VOVAlCSVQoMjgpCiAj ZGVmaW5lICBIRENQX0RESUJfUkVQX1BSRVNFTlQJCUJJVCgzMCkKICNkZWZpbmUgIEhEQ1BfRERJ QV9SRVBfUFJFU0VOVAkJQklUKDI5KQogI2RlZmluZSAgSERDUF9ERElDX1JFUF9QUkVTRU5UCQlC SVQoMjgpCiAjZGVmaW5lICBIRENQX0RESURfUkVQX1BSRVNFTlQJCUJJVCgyNykKICNkZWZpbmUg IEhEQ1BfRERJRl9SRVBfUFJFU0VOVAkJQklUKDI2KQogI2RlZmluZSAgSERDUF9ERElFX1JFUF9Q UkVTRU5UCQlCSVQoMjUpCisjZGVmaW5lICBIRENQX1RSQU5TQV9TSEExX00wCQkoMSA8PCAyMCkK KyNkZWZpbmUgIEhEQ1BfVFJBTlNCX1NIQTFfTTAJCSgyIDw8IDIwKQorI2RlZmluZSAgSERDUF9U UkFOU0NfU0hBMV9NMAkJKDMgPDwgMjApCisjZGVmaW5lICBIRENQX1RSQU5TRF9TSEExX00wCQko NCA8PCAyMCkKICNkZWZpbmUgIEhEQ1BfRERJQl9TSEExX00wCQkoMSA8PCAyMCkKICNkZWZpbmUg IEhEQ1BfRERJQV9TSEExX00wCQkoMiA8PCAyMCkKICNkZWZpbmUgIEhEQ1BfRERJQ19TSEExX00w CQkoMyA8PCAyMCkKQEAgLTkzMjYsMTUgKzkzMzQsOTIgQEAgZW51bSBza2xfcG93ZXJfZ2F0ZSB7 CiAJCQkJCSAgX1BPUlRFX0hEQ1BfQVVUSEVOQywgXAogCQkJCQkgIF9QT1JURl9IRENQX0FVVEhF TkMpICsgKHgpKQogI2RlZmluZSBQT1JUX0hEQ1BfQ09ORihwb3J0KQkJX1BPUlRfSERDUF9BVVRI RU5DKHBvcnQsIDB4MCkKKyNkZWZpbmUgX1RSQU5TQV9IRENQX0NPTkYJCTB4NjY0MDAKKyNkZWZp bmUgX1RSQU5TQl9IRENQX0NPTkYJCTB4NjY1MDAKKyNkZWZpbmUgVFJBTlNfSERDUF9DT05GKHRy YW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUF9DT05GLCBcCisJCQkJCQkgICAg X1RSQU5TQl9IRENQX0NPTkYpCisjZGVmaW5lIEhEQ1BfQ09ORihkZXZfcHJpdiwgdHJhbnMsIHBv cnQpIFwKKwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCisJCQkJCSBUUkFOU19I RENQX0NPTkYodHJhbnMpIDogXAorCQkJCQkgUE9SVF9IRENQX0NPTkYocG9ydCkpCisKICNkZWZp bmUgIEhEQ1BfQ09ORl9DQVBUVVJFX0FOCQlCSVQoMCkKICNkZWZpbmUgIEhEQ1BfQ09ORl9BVVRI X0FORF9FTkMJCShCSVQoMSkgfCBCSVQoMCkpCiAjZGVmaW5lIFBPUlRfSERDUF9BTklOSVQocG9y dCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDQpCisjZGVmaW5lIF9UUkFOU0FfSERDUF9B TklOSVQJCTB4NjY0MDQKKyNkZWZpbmUgX1RSQU5TQl9IRENQX0FOSU5JVAkJMHg2NjUwNAorI2Rl ZmluZSBUUkFOU19IRENQX0FOSU5JVCh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKKwkJCQkJ CSAgICBfVFJBTlNBX0hEQ1BfQU5JTklULCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQX0FOSU5J VCkKKyNkZWZpbmUgSERDUF9BTklOSVQoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCisJCQkJCShJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAorCQkJCQkgVFJBTlNfSERDUF9BTklOSVQodHJh bnMpIDogXAorCQkJCQkgUE9SVF9IRENQX0FOSU5JVChwb3J0KSkKKwogI2RlZmluZSBQT1JUX0hE Q1BfQU5MTyhwb3J0KQkJX1BPUlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4OCkKKyNkZWZpbmUgX1RS QU5TQV9IRENQX0FOTE8JCTB4NjY0MDgKKyNkZWZpbmUgX1RSQU5TQl9IRENQX0FOTE8JCTB4NjY1 MDgKKyNkZWZpbmUgVFJBTlNfSERDUF9BTkxPKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9U UkFOU0FfSERDUF9BTkxPLCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQX0FOTE8pCisjZGVmaW5l IEhEQ1BfQU5MTyhkZXZfcHJpdiwgdHJhbnMsIHBvcnQpIFwKKwkJCQkJKElOVEVMX0dFTihkZXZf cHJpdikgPj0gMTIgPyBcCisJCQkJCSBUUkFOU19IRENQX0FOTE8odHJhbnMpIDogXAorCQkJCQkg UE9SVF9IRENQX0FOTE8ocG9ydCkpCisKICNkZWZpbmUgUE9SVF9IRENQX0FOSEkocG9ydCkJCV9Q T1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweEMpCisjZGVmaW5lIF9UUkFOU0FfSERDUF9BTkhJCQkw eDY2NDBDCisjZGVmaW5lIF9UUkFOU0JfSERDUF9BTkhJCQkweDY2NTBDCisjZGVmaW5lIFRSQU5T X0hEQ1BfQU5ISSh0cmFucykJCV9NTUlPX1RSQU5TKHRyYW5zLCBfVFJBTlNBX0hEQ1BfQU5ISSwg XAorCQkJCQkJICAgIF9UUkFOU0JfSERDUF9BTkhJKQorI2RlZmluZSBIRENQX0FOSEkoZGV2X3By aXYsIHRyYW5zLCBwb3J0KSBcCisJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAor CQkJCQkgVFJBTlNfSERDUF9BTkhJKHRyYW5zKSA6IFwKKwkJCQkJIFBPUlRfSERDUF9BTkhJKHBv cnQpKQorCiAjZGVmaW5lIFBPUlRfSERDUF9CS1NWTE8ocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVO Qyhwb3J0LCAweDEwKQorI2RlZmluZSBfVFJBTlNBX0hEQ1BfQktTVkxPCQkweDY2NDEwCisjZGVm aW5lIF9UUkFOU0JfSERDUF9CS1NWTE8JCTB4NjY1MTAKKyNkZWZpbmUgVFJBTlNfSERDUF9CS1NW TE8odHJhbnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCisJCQkJCQkgICAgX1RSQU5TQV9IRENQX0JL U1ZMTywgXAorCQkJCQkJICAgIF9UUkFOU0JfSERDUF9CS1NWTE8pCisjZGVmaW5lIEhEQ1BfQktT VkxPKGRldl9wcml2LCB0cmFucywgcG9ydCkgXAorCQkJCQkoSU5URUxfR0VOKGRldl9wcml2KSA+ PSAxMiA/IFwKKwkJCQkJIFRSQU5TX0hEQ1BfQktTVkxPKHRyYW5zKSA6IFwKKwkJCQkJIFBPUlRf SERDUF9CS1NWTE8ocG9ydCkpCisKICNkZWZpbmUgUE9SVF9IRENQX0JLU1ZISShwb3J0KQkJX1BP UlRfSERDUF9BVVRIRU5DKHBvcnQsIDB4MTQpCisjZGVmaW5lIF9UUkFOU0FfSERDUF9CS1NWSEkJ CTB4NjY0MTQKKyNkZWZpbmUgX1RSQU5TQl9IRENQX0JLU1ZISQkJMHg2NjUxNAorI2RlZmluZSBU UkFOU19IRENQX0JLU1ZISSh0cmFucykJX01NSU9fVFJBTlModHJhbnMsIFwKKwkJCQkJCSAgICBf VFJBTlNBX0hEQ1BfQktTVkhJLCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQX0JLU1ZISSkKKyNk ZWZpbmUgSERDUF9CS1NWSEkoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCisJCQkJCShJTlRFTF9H RU4oZGV2X3ByaXYpID49IDEyID8gXAorCQkJCQkgVFJBTlNfSERDUF9CS1NWSEkodHJhbnMpIDog XAorCQkJCQkgUE9SVF9IRENQX0JLU1ZISShwb3J0KSkKKwogI2RlZmluZSBQT1JUX0hEQ1BfUlBS SU1FKHBvcnQpCQlfUE9SVF9IRENQX0FVVEhFTkMocG9ydCwgMHgxOCkKKyNkZWZpbmUgX1RSQU5T QV9IRENQX1JQUklNRQkJMHg2NjQxOAorI2RlZmluZSBfVFJBTlNCX0hEQ1BfUlBSSU1FCQkweDY2 NTE4CisjZGVmaW5lIFRSQU5TX0hEQ1BfUlBSSU1FKHRyYW5zKQlfTU1JT19UUkFOUyh0cmFucywg XAorCQkJCQkJICAgIF9UUkFOU0FfSERDUF9SUFJJTUUsIFwKKwkJCQkJCSAgICBfVFJBTlNCX0hE Q1BfUlBSSU1FKQorI2RlZmluZSBIRENQX1JQUklNRShkZXZfcHJpdiwgdHJhbnMsIHBvcnQpIFwK KwkJCQkJKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTIgPyBcCisJCQkJCSBUUkFOU19IRENQX1JQ UklNRSh0cmFucykgOiBcCisJCQkJCSBQT1JUX0hEQ1BfUlBSSU1FKHBvcnQpKQorCiAjZGVmaW5l IFBPUlRfSERDUF9TVEFUVVMocG9ydCkJCV9QT1JUX0hEQ1BfQVVUSEVOQyhwb3J0LCAweDFDKQor I2RlZmluZSBfVFJBTlNBX0hEQ1BfU1RBVFVTCQkweDY2NDFDCisjZGVmaW5lIF9UUkFOU0JfSERD UF9TVEFUVVMJCTB4NjY1MUMKKyNkZWZpbmUgVFJBTlNfSERDUF9TVEFUVVModHJhbnMpCV9NTUlP X1RSQU5TKHRyYW5zLCBcCisJCQkJCQkgICAgX1RSQU5TQV9IRENQX1NUQVRVUywgXAorCQkJCQkJ ICAgIF9UUkFOU0JfSERDUF9TVEFUVVMpCisjZGVmaW5lIEhEQ1BfU1RBVFVTKGRldl9wcml2LCB0 cmFucywgcG9ydCkgXAorCQkJCQkoSU5URUxfR0VOKGRldl9wcml2KSA+PSAxMiA/IFwKKwkJCQkJ IFRSQU5TX0hEQ1BfU1RBVFVTKHRyYW5zKSA6IFwKKwkJCQkJIFBPUlRfSERDUF9TVEFUVVMocG9y dCkpCisKICNkZWZpbmUgIEhEQ1BfU1RBVFVTX1NUUkVBTV9BX0VOQwlCSVQoMzEpCiAjZGVmaW5l ICBIRENQX1NUQVRVU19TVFJFQU1fQl9FTkMJQklUKDMwKQogI2RlZmluZSAgSERDUF9TVEFUVVNf U1RSRUFNX0NfRU5DCUJJVCgyOSkKQEAgLTkzNjEsMjMgKzk0NDYsNDQgQEAgZW51bSBza2xfcG93 ZXJfZ2F0ZSB7CiAJCQkJCSAgX1BPUlREX0hEQ1AyX0JBU0UsIFwKIAkJCQkJICBfUE9SVEVfSERD UDJfQkFTRSwgXAogCQkJCQkgIF9QT1JURl9IRENQMl9CQVNFKSArICh4KSkKLQotI2RlZmluZSBI RENQMl9BVVRIX0RESShwb3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweDk4KQorI2RlZmlu ZSBQT1JUX0hEQ1AyX0FVVEgocG9ydCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHg5OCkKKyNk ZWZpbmUgX1RSQU5TQV9IRENQMl9BVVRICQkweDY2NDk4CisjZGVmaW5lIF9UUkFOU0JfSERDUDJf QVVUSAkJMHg2NjU5OAorI2RlZmluZSBUUkFOU19IRENQMl9BVVRIKHRyYW5zKQkJX01NSU9fVFJB TlModHJhbnMsIF9UUkFOU0FfSERDUDJfQVVUSCwgXAorCQkJCQkJICAgIF9UUkFOU0JfSERDUDJf QVVUSCkKICNkZWZpbmUgICBBVVRIX0xJTktfQVVUSEVOVElDQVRFRAlCSVQoMzEpCiAjZGVmaW5l ICAgQVVUSF9MSU5LX1RZUEUJCUJJVCgzMCkKICNkZWZpbmUgICBBVVRIX0ZPUkNFX0NMUl9JTlBV VENUUglCSVQoMTkpCiAjZGVmaW5lICAgQVVUSF9DTFJfS0VZUwkJCUJJVCgxOCkKLQotI2RlZmlu ZSBIRENQMl9DVExfRERJKHBvcnQpCQlfUE9SVF9IRENQMl9CQVNFKHBvcnQsIDB4QjApCisjZGVm aW5lIEhEQ1AyX0FVVEgoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBcCisJCQkJCShJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDEyID8gXAorCQkJCQkgVFJBTlNfSERDUDJfQVVUSCh0cmFucykgOiBcCisJ CQkJCSBQT1JUX0hEQ1AyX0FVVEgocG9ydCkpCisKKyNkZWZpbmUgUE9SVF9IRENQMl9DVEwocG9y dCkJCV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHhCMCkKKyNkZWZpbmUgX1RSQU5TQV9IRENQMl9D VEwJCTB4NjY0QjAKKyNkZWZpbmUgX1RSQU5TQl9IRENQMl9DVEwJCTB4NjY1QjAKKyNkZWZpbmUg VFJBTlNfSERDUDJfQ1RMKHRyYW5zKQkJX01NSU9fVFJBTlModHJhbnMsIF9UUkFOU0FfSERDUDJf Q1RMLCBcCisJCQkJCQkgICAgX1RSQU5TQl9IRENQMl9DVEwpCiAjZGVmaW5lICAgQ1RMX0xJTktf RU5DUllQVElPTl9SRVEJQklUKDMxKQotCi0jZGVmaW5lIEhEQ1AyX1NUQVRVU19EREkocG9ydCkJ CV9QT1JUX0hEQ1AyX0JBU0UocG9ydCwgMHhCNCkKLSNkZWZpbmUgICBTVFJFQU1fRU5DUllQVElP Tl9TVEFUVVNfQQlCSVQoMzEpCi0jZGVmaW5lICAgU1RSRUFNX0VOQ1JZUFRJT05fU1RBVFVTX0IJ QklUKDMwKQotI2RlZmluZSAgIFNUUkVBTV9FTkNSWVBUSU9OX1NUQVRVU19DCUJJVCgyOSkKKyNk ZWZpbmUgSERDUDJfQ1RMKGRldl9wcml2LCB0cmFucywgcG9ydCkgXAorCQkJCQkoSU5URUxfR0VO KGRldl9wcml2KSA+PSAxMiA/IFwKKwkJCQkJIFRSQU5TX0hEQ1AyX0NUTCh0cmFucykgOiBcCisJ CQkJCSBQT1JUX0hEQ1AyX0NUTChwb3J0KSkKKworI2RlZmluZSBQT1JUX0hEQ1AyX1NUQVRVUyhw b3J0KQkJX1BPUlRfSERDUDJfQkFTRShwb3J0LCAweEI0KQorI2RlZmluZSBfVFJBTlNBX0hEQ1Ay X1NUQVRVUwkJMHg2NjRCNAorI2RlZmluZSBfVFJBTlNCX0hEQ1AyX1NUQVRVUwkJMHg2NjVCNAor I2RlZmluZSBUUkFOU19IRENQMl9TVEFUVVModHJhbnMpCV9NTUlPX1RSQU5TKHRyYW5zLCBcCisJ CQkJCQkgICAgX1RSQU5TQV9IRENQMl9TVEFUVVMsIFwKKwkJCQkJCSAgICBfVFJBTlNCX0hEQ1Ay X1NUQVRVUykKICNkZWZpbmUgICBMSU5LX1RZUEVfU1RBVFVTCQlCSVQoMjIpCiAjZGVmaW5lICAg TElOS19BVVRIX1NUQVRVUwkJQklUKDIxKQogI2RlZmluZSAgIExJTktfRU5DUllQVElPTl9TVEFU VVMJQklUKDIwKQorI2RlZmluZSBIRENQMl9TVEFUVVMoZGV2X3ByaXYsIHRyYW5zLCBwb3J0KSBc CisJCQkJCShJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEyID8gXAorCQkJCQkgVFJBTlNfSERDUDJf U1RBVFVTKHRyYW5zKSA6IFwKKwkJCQkJIFBPUlRfSERDUDJfU1RBVFVTKHBvcnQpKQogCiAvKiBQ ZXItcGlwZSBEREkgRnVuY3Rpb24gQ29udHJvbCAqLwogI2RlZmluZSBfVFJBTlNfRERJX0ZVTkNf Q1RMX0EJCTB4NjA0MDAKLS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4