From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v4 38/41] drm/i915: Implement the HDCP2.2 support for DP Date: Mon, 21 May 2018 18:23:57 +0530 Message-ID: <1526907240-17639-39-git-send-email-ramalingam.c@intel.com> References: <1526907240-17639-1-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1526907240-17639-1-git-send-email-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@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: alexander.usyskin@intel.com, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyB0aGUgRFAgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4K ClRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21t dW5pY2F0aW5nIHRoZQpIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KCk5vdGU6 IENocmlzIFdpbHNvbiBzdWdnZXN0ZWQgYWx0ZXJuYXRlIG1ldGhvZCBmb3Igd2FpdGluZyBmb3Ig Q1BfSVJRLAp0aGFuIGNvbXBsZXRpb25zIGNvbmNlcHQuIFdJUCB0byB1bmRlcnN0YW5kIGFuZCBp bXBsZW1lbnQgdGhhdCwKaWYgbmVlZGVkLiBKdXN0IHRvIHVuYmxvY2sgdGhlIHJldmlldyBvZiBv dGhlciBjaGFuZ2VzLCB2MiBzdGlsbApjb250aW51ZXMgd2l0aCBjb21wbGV0aW9ucy4KCnYyOgog IHdhaXQgZm9yIGNwX2lycSBpcyBtZXJnZWQgd2l0aCB0aGlzIHBhdGNoLiBSZWJhc2VkLgp2MzoK ICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQp2 NDoKICBTdHlsZSBmaXhlZC4KICAlcy9QQVJJTkcvUEFJUklORwogIEZldyBzdHlsZSBmaXhlcyBb VW1hXQoKU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8IDM1OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggIHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8ICAgNSAr CiAzIGZpbGVzIGNoYW5nZWQsIDM3MCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKaW5kZXggNTI4NDA3ZDYwOGM4Li5lZTcxYTI2ZWMyM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVk ZSA8bGludXgvbm90aWZpZXIuaD4KICNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KKyNpbmNsdWRl IDxsaW51eC9tZWlfaGRjcC5oPgogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KICNpbmNsdWRl IDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgpAQCAtNTA1 Nyw2ICs1MDU4LDI4IEBAIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRl bF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQogCXBwc191bmxvY2soaW50ZWxfZHApOwogfQogCitz dGF0aWMgaW50IGludGVsX2RwX2hkY3Bfd2FpdF9mb3JfY3BfaXJxKHN0cnVjdCBpbnRlbF9oZGNw ICpoZGNwLAorCQkJCQkgaW50IHRpbWVvdXQpCit7CisJbG9uZyByZXQ7CisKKwkvKiBSZWluaXQg Ki8KKwlhdG9taWNfc2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsKKworI2RlZmluZSBDIChh dG9taWNfcmVhZCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCkgPiAwKQorCXJldCA9IHdhaXRfZXZlbnRf aW50ZXJydXB0aWJsZV90aW1lb3V0KGhkY3AtPmNwX2lycV9xdWV1ZSwgQywKKwkJCQkJICAgICAg IG1zZWNzX3RvX2ppZmZpZXModGltZW91dCkpOworCisJaWYgKHJldCA+IDApIHsKKwkJYXRvbWlj X3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAo IXJldCkgeworCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisJcmV0dXJuIChpbnQpcmV0OworfQor CisKIHN0YXRpYwogaW50IGludGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdihzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJCQl1OCAqYW4pCkBAIC01Mjc1LDYgKzUy OTgsMzM1IEBAIGludCBpbnRlbF9kcF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYworaW50IGludGVs X2RwY2Rfb2Zmc2V0X2Zvcl9oZGNwMl9tc2dpZCh1aW50OF90IGJ5dGUsIHVuc2lnbmVkIGludCAq b2Zmc2V0KQoreworCXN3aXRjaCAoYnl0ZSkgeworCWNhc2UgSERDUF8yXzJfQUtFX0lOSVQ6CisJ CSpvZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfSU5JVF9PRkZTRVQ7CisJCWJyZWFrOworCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfQ0VSVDoKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9TRU5E X0NFUlRfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9OT19TVE9SRURfS006 CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfTk9fU1RPUkVEX0tNX09GRlNFVDsKKwkJYnJl YWs7CisJY2FzZSBIRENQXzJfMl9BS0VfU1RPUkVEX0tNOgorCQkqb2Zmc2V0ID0gRFBfSERDUF8y XzJfQUtFX1NUT1JFRF9LTV9PRkZTRVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfQUtFX1NF TkRfSFBSSU1FOgorCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FX09GRlNF VDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk86CisJCSpv ZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk9fT0ZGU0VUOworCQlicmVh azsKKwljYXNlIEhEQ1BfMl8yX0xDX0lOSVQ6CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9MQ19J TklUX09GRlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9MQ19TRU5EX0xQUklNRToKKwkJ Km9mZnNldCA9IERQX0hEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FX09GRlNFVDsKKwkJYnJlYWs7CisJ Y2FzZSBIRENQXzJfMl9TS0VfU0VORF9FS1M6CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9TS0Vf U0VORF9FS1NfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJ RF9MSVNUOgorCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1RfT0ZG U0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX1JFUF9TRU5EX0FDSzoKKwkJKm9mZnNldCA9 IERQX0hEQ1BfMl8yX1JFUF9TRU5EX0FDS19PRkZTRVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8y XzJfUkVQX1NUUkVBTV9NQU5BR0U6CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9SRVBfU1RSRUFN X01BTkFHRV9PRkZTRVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NUUkVBTV9SRUFE WToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFlfT0ZGU0VUOworCQli cmVhazsKKwljYXNlIEhEQ1BfMl8yX0VSUkFUQV9EUF9TVFJFQU1fVFlQRToKKwkJKm9mZnNldCA9 IERQX0hEQ1BfMl8yX1JFR19TVFJFQU1fVFlQRV9PRkZTRVQ7CisJCWJyZWFrOworCWRlZmF1bHQ6 CisJCURSTV9FUlJPUigiVW5yZWNvZ25pemVkIE1zZyBJRFxuIik7CisJCXJldHVybiAtRUlOVkFM OworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lCitpbnQgaW50ZWxfZHBfaGRj cDJfcmVhZF9yeF9zdGF0dXMoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCisJCQkJICB1aW50OF90ICpyeF9zdGF0dXMpCit7CisJc3NpemVfdCByZXQ7CisKKwlyZXQg PSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAorCQkJICAgICAgIERQ X0hEQ1BfMl8yX1JFR19SWFNUQVRVU19PRkZTRVQsIHJ4X3N0YXR1cywKKwkJCSAgICAgICBIRENQ XzJfMl9EUF9SWFNUQVRVU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfRFBfUlhTVEFUVVNf TEVOKSB7CisJCURSTV9FUlJPUigiUmVhZCBic3RhdHVzIGZyb20gRFAvQVVYIGZhaWxlZCAoJWxk KVxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfdGltZW91dF9mb3JfbXNnKHVp bnQ4X3QgbXNnX2lkLCBib29sIHBhaXJlZCkKK3sKKwlpbnQgdGltZW91dDsKKworCXN3aXRjaCAo bXNnX2lkKSB7CisJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9DRVJUOgorCQl0aW1lb3V0ID0gSERD UF8yXzJfQ0VSVF9USU1FT1VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQ UklNRToKKwkJaWYgKHBhaXJlZCkKKwkJCXRpbWVvdXQgPSBIRENQXzJfMl9IUFJJTUVfUEFJUkVE X1RJTUVPVVQ7CisJCWVsc2UKKwkJCXRpbWVvdXQgPSBIRENQXzJfMl9IUFJJTUVfTk9fUEFJUkVE X1RJTUVPVVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZP OgorCQl0aW1lb3V0ID0gSERDUF8yXzJfUEFJUklOR19USU1FT1VUOworCQlicmVhazsKKwljYXNl IEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FOgorCQl0aW1lb3V0ID0gSERDUF8yXzJfRFBfTFBSSU1F X1RJTUVPVVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6 CisJCXRpbWVvdXQgPSBIRENQXzJfMl9SRUNWSURfTElTVF9USU1FT1VUOworCQlicmVhazsKKwlj YXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFk6CisJCXRpbWVvdXQgPSBIRENQXzJfMl9TVFJF QU1fUkVBRFlfVElNRU9VVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJdGltZW91dCA9IC1FSU5W QUw7CisJCURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgbXNnX2lkOiAlZFxuIiwgKGludCltc2dfaWQp OworCX0KKworCXJldHVybiB0aW1lb3V0OworfQorCitzdGF0aWMKK2ludCBoZGNwMl9kZXRlY3Rf bXNnX2F2YWlsYWJpbGl0eShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKKwkJCQkgIHVpbnQ4X3QgbXNnX2lkLCBib29sICptc2dfcmVhZHkpCit7CisJdWludDhfdCBy eF9zdGF0dXM7CisJaW50IHJldDsKKworCSptc2dfcmVhZHkgPSBmYWxzZTsKKwlyZXQgPSBpbnRl bF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7CisJ aWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlzd2l0Y2ggKG1zZ19pZCkgeworCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfSF9Q UklNRShyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFrOworCWNhc2Ug SERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPOgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFU VVNfUEFJUklORyhyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFrOwor CWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6CisJCWlmIChIRENQXzJfMl9EUF9S WFNUQVRVU19SRUFEWShyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFr OworCWRlZmF1bHQ6CisJCURSTV9ERUJVR19LTVMoIlVuaWRlbnRpZmllZCBtc2dfaWQ6ICVkXG4i LCAoaW50KW1zZ19pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCXJldHVybiAwOworfQor CisKK3N0YXRpYyBzc2l6ZV90CitpbnRlbF9kcF9oZGNwMl93YWl0X2Zvcl9tc2coc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgdWludDhfdCBtc2dfaWQp Cit7CisJc3RydWN0IGludGVsX2RwICpkcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7CisJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcDsKKwlpbnQg cmV0LCB0aW1lb3V0OworCWJvb2wgbXNnX3JlYWR5ID0gZmFsc2U7CisKKwl0aW1lb3V0ID0gaW50 ZWxfZHBfaGRjcDJfdGltZW91dF9mb3JfbXNnKG1zZ19pZCwgaGRjcC0+aXNfcGFpcmVkKTsKKwlz d2l0Y2ggKG1zZ19pZCkgeworCisJLyoKKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRo ZSBDRVJULCBMUFJJTUUgYW5kIFNUUkVBTV9SRUFEWQorCSAqIGF2YWlsYWJpbGl0eS4gU28gV2Fp dCBmb3IgdGltZW91dCBhbmQgcmVhZCB0aGUgbXNnLgorCSAqLworCWNhc2UgSERDUF8yXzJfQUtF X1NFTkRfQ0VSVDoKKwljYXNlIEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FOgorCWNhc2UgSERDUF8y XzJfUkVQX1NUUkVBTV9SRUFEWToKKwkJbWRlbGF5KHRpbWVvdXQpOworCQlyZXQgPSAwOworCQli cmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToKKwljYXNlIEhEQ1BfMl8yX0FL RV9TRU5EX1BBSVJJTkdfSU5GTzoKKwljYXNlIEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNU OgorCQlpbnRlbF9kcF9oZGNwX3dhaXRfZm9yX2NwX2lycShoZGNwLCB0aW1lb3V0KTsKKwkJcmV0 ID0gaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoaW50ZWxfZGlnX3BvcnQsIG1zZ19pZCwK KwkJCQkJCSAgICAmbXNnX3JlYWR5KTsKKwkJaWYgKCFtc2dfcmVhZHkpCisJCQlyZXQgPSAtRVRJ TUVET1VUOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVCVUdfS01TKCJVbmlkZW50aWZp ZWQgbXNnX2lkOiAlZFxuIiwgKGludCltc2dfaWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJ aWYgKHJldCkKKwkJRFJNX0VSUk9SKCJtc2dfaWQgJWQsIHJldCAlZCwgdGltZW91dChtU2VjKTog JWRcbiIsIG1zZ19pZCwgcmV0LAorCQkJICB0aW1lb3V0KTsKKworCXJldHVybiByZXQ7Cit9CisK K3N0YXRpYworaW50IGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkK K3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCXVpbnQ4X3QgKmJ5dGUgPSBidWY7CisJc3NpemVf dCByZXQsIGJ5dGVzX3RvX3dyaXRlLCBsZW47CisKKwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRfZm9y X2hkY3AyX21zZ2lkKCpieXRlLCAmb2Zmc2V0KSA8IDApCisJCXJldHVybiAtRUlOVkFMOworCisJ LyogTm8gbXNnX2lkIGluIERQIEhEQ1AyLjIgbXNncyAqLworCWJ5dGVzX3RvX3dyaXRlID0gc2l6 ZSAtIDE7CisJYnl0ZSsrOworCisJd2hpbGUgKGJ5dGVzX3RvX3dyaXRlKSB7CisJCWxlbiA9IGJ5 dGVzX3RvX3dyaXRlID4gRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8KKwkJCQlEUF9BVVhfTUFY X1BBWUxPQURfQllURVMgOiBieXRlc190b193cml0ZTsKKworCQlyZXQgPSBkcm1fZHBfZHBjZF93 cml0ZSgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwgb2Zmc2V0LAorCQkJCQkodm9pZCAqKWJ5dGUs IGxlbik7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKworCQlieXRlc190b193cml0 ZSAtPSByZXQ7CisJCWJ5dGUgKz0gcmV0OworCQlvZmZzZXQgKz0gcmV0OworCX0KKworCXJldHVy biBzaXplOworfQorCitzdGF0aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9yZWFkX21zZyhzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgICB1aW50OF90IG1zZ19p ZCwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0LCBkZXZf Y250OworCXVpbnQ4X3QgKmJ5dGUgPSBidWY7CisJdWludDhfdCByeF9pbmZvW0hEQ1BfMl8yX1JY SU5GT19MRU5dOworCXNzaXplX3QgcmV0LCBieXRlc190b19yZWN2LCBsZW47CisKKwlpZiAoaW50 ZWxfZHBjZF9vZmZzZXRfZm9yX2hkY3AyX21zZ2lkKG1zZ19pZCwgJm9mZnNldCkgPCAwKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCXJldCA9IGludGVsX2RwX2hkY3AyX3dhaXRfZm9yX21zZyhpbnRl bF9kaWdfcG9ydCwgbXNnX2lkKTsKKwlpZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8q IEZpbmRpbmcgdGhlIFJlY2VpdmVySUQgTGlzdCBzaXplICovCisJaWYgKG1zZ19pZCA9PSBIRENQ XzJfMl9SRVBfU0VORF9SRUNWSURfTElTVCkgeworCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZp bnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAorCQkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhJTkZP X09GRlNFVCwKKwkJCQkgICAgICAgKHZvaWQgKilyeF9pbmZvLCBIRENQXzJfMl9SWElORk9fTEVO KTsKKwkJaWYgKHJldCAhPSBIRENQXzJfMl9SWElORk9fTEVOKQorCQkJcmV0dXJuIHJldCA+PSAw ID8gLUVJTyA6IHJldDsKKworCQlkZXZfY250ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9p bmZvWzBdKSA8PCA0IHwKKwkJCSAgIEhEQ1BfMl8yX0RFVl9DT1VOVF9MTyhyeF9pbmZvWzFdKSk7 CisKKwkJaWYgKGRldl9jbnQgPiBIRENQXzJfMl9NQVhfREVWSUNFX0NPVU5UKQorCQkJZGV2X2Nu dCA9IEhEQ1BfMl8yX01BWF9ERVZJQ0VfQ09VTlQ7CisKKwkJc2l6ZSA9IHNpemVvZihzdHJ1Y3Qg aGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0KSAtCisJCSAgICAgICBIRENQXzJfMl9SRUNF SVZFUl9JRFNfTUFYX0xFTiArCisJCSAgICAgICAoZGV2X2NudCAqIEhEQ1BfMl8yX1JFQ0VJVkVS X0lEX0xFTik7CisJfQorCisJYnl0ZXNfdG9fcmVjdiA9IHNpemUgLSAxOworCisJLyogVG8gc2tp cCB0aGUgbXNnX2lkLCBhcyBtc2dzIGluIERQIGFkYXB0YXRpb24gaGFzIG5vIG1zZ19pZCAqLwor CWJ5dGUrKzsKKworCXdoaWxlIChieXRlc190b19yZWN2KSB7CisJCWxlbiA9IGJ5dGVzX3RvX3Jl Y3YgPiBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgPworCQkgICAgICBEUF9BVVhfTUFYX1BBWUxP QURfQllURVMgOiBieXRlc190b19yZWN2OworCisJCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmlu dGVsX2RpZ19wb3J0LT5kcC5hdXgsIG9mZnNldCwKKwkJCQkgICAgICAgKHZvaWQgKilieXRlLCBs ZW4pOworCQlpZiAocmV0IDwgMCkgeworCQkJRFJNX0RFQlVHX0tNUygibXNnX2lkICVkLCByZXQg JWRcbiIsIG1zZ19pZCwgKGludClyZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCWJ5dGVz X3RvX3JlY3YgLT0gcmV0OworCQlieXRlICs9IHJldDsKKwkJb2Zmc2V0ICs9IHJldDsKKwl9CisJ Ynl0ZSA9IGJ1ZjsKKwkqYnl0ZSA9IG1zZ19pZDsKKworCXJldHVybiBzaXplOworfQorCitzdGF0 aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9jb25maWdfc3RyZWFtX3R5cGUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJICAgICAgdm9pZCAqYnVmLCBzaXplX3Qg c2l6ZSkKK3sKKwlyZXR1cm4gaW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnKGludGVsX2RpZ19wb3J0 LCBidWYsIHNpemUpOworfQorCitzdGF0aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9jaGVja19saW5r KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQoreworCXVpbnQ4X3Qg cnhfc3RhdHVzOworCWludCByZXQ7CisKKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0 YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJl dDsKKworCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFVVEhfUkVRKHJ4X3N0YXR1cykpCisJ CXJldCA9IERSTV9IRENQX1JFQVVUSF9SRVFVRVNUOworCWVsc2UgaWYgKEhEQ1BfMl8yX0RQX1JY U1RBVFVTX0xJTktfRkFJTEVEKHJ4X3N0YXR1cykpCisJCXJldCA9IERSTV9IRENQX0xJTktfSU5U RUdSSVRZX0ZBSUxVUkU7CisJZWxzZSBpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBRFkocnhf c3RhdHVzKSkKKwkJcmV0ID0gRFJNX0hEQ1BfVE9QT0xPR1lfQ0hBTkdFOworCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxf ZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgIGJvb2wgKmNhcGFibGUpCit7CisJ dWludDhfdCByeF9jYXBzWzNdOworCWludCByZXQ7CisKKwkqY2FwYWJsZSA9IGZhbHNlOworCXJl dCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJCQkgICAgICAg RFBfSERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAorCQkJICAgICAgIHJ4X2NhcHMsIEhEQ1Bf Ml8yX1JYQ0FQU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfUlhDQVBTX0xFTikKKwkJcmV0 dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKworCWlmIChyeF9jYXBzWzBdID09IEhEQ1BfMl8y X1JYQ0FQU19WRVJTSU9OX1ZBTCAmJgorCSAgICBIRENQXzJfMl9EUF9IRENQX0NBUEFCTEUocnhf Y2Fwc1syXSkpCisJCSpjYXBhYmxlID0gdHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMK K2VudW0gaGRjcF9wcm90b2NvbCBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCh2b2lkKQoreworCXJl dHVybiBIRENQX1BST1RPQ09MX0RQOworfQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2hk Y3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7CiAJLndyaXRlX2FuX2Frc3YgPSBpbnRlbF9k cF9oZGNwX3dyaXRlX2FuX2Frc3YsCiAJLnJlYWRfYmtzdiA9IGludGVsX2RwX2hkY3BfcmVhZF9i a3N2LApAQCAtNTI4Nyw2ICs1NjM5LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRj cF9zaGltIGludGVsX2RwX2hkY3Bfc2hpbSA9IHsKIAkudG9nZ2xlX3NpZ25hbGxpbmcgPSBpbnRl bF9kcF9oZGNwX3RvZ2dsZV9zaWduYWxsaW5nLAogCS5jaGVja19saW5rID0gaW50ZWxfZHBfaGRj cF9jaGVja19saW5rLAogCS5oZGNwX2NhcGFibGUgPSBpbnRlbF9kcF9oZGNwX2NhcGFibGUsCisJ LndyaXRlXzJfMl9tc2cgPSBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2csCisJLnJlYWRfMl8yX21z ZyA9IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnLAorCS5jb25maWdfc3RyZWFtX3R5cGUgPSBpbnRl bF9kcF9oZGNwMl9jb25maWdfc3RyZWFtX3R5cGUsCisJLmNoZWNrXzJfMl9saW5rID0gaW50ZWxf ZHBfaGRjcDJfY2hlY2tfbGluaywKKwkuaGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hkY3Ay X2NhcGFibGUsCisJLmhkY3BfcHJvdG9jb2wgPSBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCwKIH07 CiAKIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wYW5lbF92ZGRfc2FuaXRpemUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggZGVmOGUzMjU1NzQy Li4wNDk2ZWJlYzI4N2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00NDQsNiArNDQ0 LDEzIEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSBtZWlfZGF0 YTsKIAlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbWVpX2NsZGV2X25iOwogCXN0cnVjdCBkZWxheWVk X3dvcmsgaGRjcDJfY2hlY2tfd29yazsKKworCS8qCisJICogV29yayBxdWV1ZSB0byBzaWduYWwg dGhlIENQX0lSUS4gVXNlZCBmb3IgdGhlIHdhaXRlcnMgdG8gcmVhZCB0aGUKKwkgKiBhdmFpbGFi bGUgaW5mb3JtYXRpb24gZnJvbSBIRENQIERQIHNpbmsuCisJICovCisJd2FpdF9xdWV1ZV9oZWFk X3QgY3BfaXJxX3F1ZXVlOworCWF0b21pY190IGNwX2lycV9yZWN2ZWQ7CiB9OwogCiBzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwppbmRleCBkMDYwZDdm MmUxM2IuLmQ1MDJiZGIzODBkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwpAQCAtODcw LDYgKzg3MCw4IEBAIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAogCWlmIChoZGNwMl9zdXBwb3J0ZWQpCiAJCWludGVsX2hkY3AyX2luaXQoY29u bmVjdG9yKTsKIAorCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhkY3AtPmNwX2lycV9xdWV1ZSk7CisJ YXRvbWljX3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAg LTE4NDksNCArMTg1MSw3IEBAIHZvaWQgaW50ZWxfaGRjcF9oYW5kbGVfY3BfaXJxKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAkJaW50ZWxfaGRjcF9jaGVja19saW5rKGNvbm5l Y3Rvcik7CiAJZWxzZSBpZiAoaW50ZWxfaGRjcDJfaW5fZm9yY2UoY29ubmVjdG9yKSkKIAkJaW50 ZWxfaGRjcDJfY2hlY2tfbGluayhjb25uZWN0b3IpOworCisJYXRvbWljX3NldCgmY29ubmVjdG9y LT5oZGNwLmNwX2lycV9yZWN2ZWQsIDEpOworCXdha2VfdXBfYWxsKCZjb25uZWN0b3ItPmhkY3Au Y3BfaXJxX3F1ZXVlKTsKIH0KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK