From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v2 39/42] drm/i915: Implement the HDCP2.2 support for DP Date: Thu, 8 Mar 2018 17:29:06 +0530 Message-ID: <1520510349-8385-40-git-send-email-ramalingam.c@intel.com> References: <1520510349-8385-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: <1520510349-8385-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, seanpaul@chromium.org, chris@chris-wilson.co.uk, tomas.winkler@intel.com, jani.nikula@linux.intel.com Cc: rodrigo.vivi@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyB0aGUgRFAgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4K ClRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21t dW5pY2F0aW5nIHRoZQpIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KCk5vdGU6 IENocmlzIFdpbHNvbiBzdWdnZXN0ZWQgYWx0ZXJuYXRlIG1ldGhvZCBmb3Igd2FpdGluZyBmb3Ig Q1BfSVJRLAp0aGFuIGNvbXBsZXRpb25zIGNvbmNlcHQuIFdJUCB0byB1bmRlcnN0YW5kIGFuZCBp bXBsZW1lbnQgdGhhdCwKaWYgbmVlZGVkLiBKdXN0IHRvIHVuYmxvY2sgdGhlIHJldmlldyBvZiBv dGhlciBjaGFuZ2VzLCB2MiBzdGlsbApjb250aW51ZXMgd2l0aCBjb21wbGV0aW9ucy4KCnYyOgog IHdhaXQgZm9yIGNwX2lycSBpcyBtZXJnZWQgd2l0aCB0aGlzIHBhdGNoLiBSZWJhc2VkLgoKU2ln bmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgotLS0KIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8IDM1MCArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggIHwg ICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8ICAgMyArCiAzIGZpbGVz IGNoYW5nZWQsIDM1NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXgg NWQwNjk5NTM4ZTdhLi4yNDhmZDU3MGZjMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAt MzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGludXgv bm90aWZpZXIuaD4KICNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KKyNpbmNsdWRlIDxsaW51eC9t ZWlfaGRjcC5oPgogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KICNpbmNsdWRlIDxkcm0vZHJt UC5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgpAQCAtNTA4NSw2ICs1MDg2 LDI2IEBAIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyKQogCXBwc191bmxvY2soaW50ZWxfZHApOwogfQogCitzdGF0aWMgaW50 IGludGVsX2RwX2hkY3Bfd2FpdF9mb3JfY3BfaXJxKHN0cnVjdCBjb21wbGV0aW9uICpjcF9pcnFf cmVjdmVkLAorCQkJCQkgaW50IHRpbWVvdXQpCit7CisJbG9uZyByZXQ7CisKKwlpZiAoY29tcGxl dGlvbl9kb25lKGNwX2lycV9yZWN2ZWQpKQorCQlyZWluaXRfY29tcGxldGlvbihjcF9pcnFfcmVj dmVkKTsKKworCXJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZV90aW1lb3V0 KGNwX2lycV9yZWN2ZWQsCisJCQkJCQkJbXNlY3NfdG9famlmZmllcygKKwkJCQkJCQl0aW1lb3V0 KSk7CisJcmVpbml0X2NvbXBsZXRpb24oY3BfaXJxX3JlY3ZlZCk7CisJaWYgKHJldCA8IDApCisJ CXJldHVybiAoaW50KXJldDsKKwllbHNlIGlmICghcmV0KQorCQlyZXR1cm4gLUVUSU1FRE9VVDsK KwlyZXR1cm4gMDsKK30KKworCiBzdGF0aWMKIGludCBpbnRlbF9kcF9oZGNwX3dyaXRlX2FuX2Fr c3Yoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJCQkJdTggKmFu KQpAQCAtNTMwMSw2ICs1MzIyLDMyOSBAQCBpbnQgaW50ZWxfZHBfaGRjcF9jYXBhYmxlKHN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAogCXJldHVybiAwOwogfQogCitz dGF0aWMgaW5saW5lCitpbnQgaW50ZWxfZHBjZF9vZmZzZXRfZm9yX2hkY3AyX21zZ2lkKHVpbnQ4 X3QgYnl0ZSwgdW5zaWduZWQgaW50ICpvZmZzZXQpCit7CisJc3dpdGNoIChieXRlKSB7CisJY2Fz ZSBIRENQXzJfMl9BS0VfSU5JVDoKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9JTklUX09G RlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9DRVJUOgorCQkqb2Zmc2V0 ID0gRFBfSERDUF8yXzJfQUtFX1NFTkRfQ0VSVF9PRkZTRVQ7CisJCWJyZWFrOworCWNhc2UgSERD UF8yXzJfQUtFX05PX1NUT1JFRF9LTToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9OT19T VE9SRURfS01fT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TVE9SRURfS006 CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfU1RPUkVEX0tNX09GRlNFVDsKKwkJYnJlYWs7 CisJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9IUFJJTUU6CisJCSpvZmZzZXQgPSBEUF9IRENQXzJf Ml9BS0VfU0VORF9IUFJJTUVfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9T RU5EX1BBUklOR19JTkZPOgorCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX1NFTkRfUEFSSU5H X0lORk9fT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0xDX0lOSVQ6CisJCSpvZmZz ZXQgPSBEUF9IRENQXzJfMl9MQ19JTklUX09GRlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJf Ml9MQ19TRU5EX0xQUklNRToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0xDX1NFTkRfTFBSSU1F X09GRlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9TS0VfU0VORF9FS1M6CisJCSpvZmZz ZXQgPSBEUF9IRENQXzJfMl9TS0VfU0VORF9FS1NfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhE Q1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUOgorCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfUkVQ X1NFTkRfUkVDVklEX0xJU1RfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX1JFUF9T RU5EX0FDSzoKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JFUF9TRU5EX0FDS19PRkZTRVQ7CisJ CWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NUUkVBTV9NQU5BR0U6CisJCSpvZmZzZXQgPSBE UF9IRENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRV9PRkZTRVQ7CisJCWJyZWFrOworCWNhc2UgSERD UF8yXzJfUkVQX1NUUkVBTV9SRUFEWToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JFUF9TVFJF QU1fUkVBRFlfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0VSUkFUQV9EUF9TVFJF QU1fVFlQRToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JFR19TVFJFQU1fVFlQRV9PRkZTRVQ7 CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9FUlJPUigiVW5yZWNvZ25pemVkIE1zZyBJRFxu Iik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlubGlu ZQoraW50IGludGVsX2RwX2hkY3AyX3JlYWRfcnhfc3RhdHVzKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJCSAgdWludDhfdCAqcnhfc3RhdHVzKQoreworCXNz aXplX3QgcmV0OworCisJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRw LmF1eCwKKwkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhTVEFUVVNfT0ZGU0VULCByeF9zdGF0 dXMsCisJCQkgICAgICAgSERDUF8yXzJfRFBfUlhTVEFUVVNfTEVOKTsKKwlpZiAocmV0ICE9IEhE Q1BfMl8yX0RQX1JYU1RBVFVTX0xFTikgeworCQlEUk1fRVJST1IoIlJlYWQgYnN0YXR1cyBmcm9t IERQL0FVWCBmYWlsZWQgKCVsZClcbiIsIHJldCk7CisJCXJldHVybiByZXQgPj0gMCA/IC1FSU8g OiByZXQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbmxpbmUKK2ludCBpbnRlbF9k cF9oZGNwMl90aW1lb3V0X2Zvcl9tc2codWludDhfdCBtc2dfaWQsIGJvb2wgcGFpcmVkKQorewor CWludCB0aW1lb3V0ID0gLUVJTlZBTDsKKworCXN3aXRjaCAobXNnX2lkKSB7CisJY2FzZSBIRENQ XzJfMl9BS0VfU0VORF9DRVJUOgorCQl0aW1lb3V0ID0gSERDUF8yXzJfQ0VSVF9USU1FT1VUOwor CQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToKKwkJaWYgKHBhaXJlZCkK KwkJCXRpbWVvdXQgPSBIRENQXzJfMl9IUFJJTUVfUEFJUkVEX1RJTUVPVVQ7CisJCWVsc2UKKwkJ CXRpbWVvdXQgPSBIRENQXzJfMl9IUFJJTUVfTk9fUEFJUkVEX1RJTUVPVVQ7CisJCWJyZWFrOwor CWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFSSU5HX0lORk86CisJCXRpbWVvdXQgPSBIRENQXzJf Ml9QQUlSSU5HX1RJTUVPVVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfTENfU0VORF9MUFJJ TUU6CisJCXRpbWVvdXQgPSBIRENQXzJfMl9EUF9MUFJJTUVfVElNRU9VVDsKKwkJYnJlYWs7CisJ Y2FzZSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKKwkJdGltZW91dCA9IEhEQ1BfMl8y X1JFQ1ZJRF9MSVNUX1RJTUVPVVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NUUkVB TV9SRUFEWToKKwkJdGltZW91dCA9IEhEQ1BfMl8yX1NUUkVBTV9SRUFEWV9USU1FT1VUOworCQli cmVhazsKKwlkZWZhdWx0OgorCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIG1zZ19pZDogJWRcbiIs IChpbnQpbXNnX2lkKTsKKwl9CisJcmV0dXJuIHRpbWVvdXQ7Cit9CisKK3N0YXRpYyBpbmxpbmUK K2ludCBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJpbGl0eShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCQkgIHVpbnQ4X3QgbXNnX2lkLCBib29sICptc2dfcmVh ZHkpCit7CisJdWludDhfdCByeF9zdGF0dXM7CisJaW50IHJldDsKKworCSptc2dfcmVhZHkgPSBm YWxzZTsKKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9y dCwgJnJ4X3N0YXR1cyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlzd2l0Y2gg KG1zZ19pZCkgeworCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgorCQlpZiAoSERDUF8y XzJfRFBfUlhTVEFUVVNfSF9QUklNRShyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFkeSA9IHRydWU7 CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFSSU5HX0lORk86CisJCWlmIChI RENQXzJfMl9EUF9SWFNUQVRVU19QQUlSSU5HKHJ4X3N0YXR1cykpCisJCQkqbXNnX3JlYWR5ID0g dHJ1ZTsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKKwkJ aWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1JFQURZKHJ4X3N0YXR1cykpCisJCQkqbXNnX3JlYWR5 ID0gdHJ1ZTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJRFJNX0RFQlVHX0tNUygiVW5pZGVudGlm aWVkIG1zZ19pZDogJWRcbiIsIChpbnQpbXNnX2lkKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQor CXJldHVybiAwOworfQorCisKK3N0YXRpYyBpbmxpbmUgc3NpemVfdAoraW50ZWxfZHBfaGRjcDJf d2FpdF9mb3JfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAor CQkJICAgIHVpbnQ4X3QgbXNnX2lkKQoreworCXN0cnVjdCBpbnRlbF9kcCAqZHAgPSAmaW50ZWxf ZGlnX3BvcnQtPmRwOworCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gJmRwLT5hdHRhY2hlZF9j b25uZWN0b3ItPmhkY3A7CisJaW50IHJldCwgdGltZW91dDsKKwlib29sIG1zZ19yZWFkeSA9IGZh bHNlOworCisJdGltZW91dCA9IGludGVsX2RwX2hkY3AyX3RpbWVvdXRfZm9yX21zZyhtc2dfaWQs IGhkY3AtPmlzX3BhaXJlZCk7CisJc3dpdGNoIChtc2dfaWQpIHsKKworCS8qCisJICogVGhlcmUg aXMgbm8gd2F5IHRvIGRldGVjdCB0aGUgQ0VSVCwgTFBSSU1FIGFuZCBTVFJFQU1fUkVBRFkKKwkg KiBhdmFpbGFiaWxpdHkuIFNvIFdhaXQgZm9yIHRpbWVvdXQgYW5kIHJlYWQgdGhlIG1zZy4KKwkg Ki8KKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQ6CisJY2FzZSBIRENQXzJfMl9MQ19TRU5E X0xQUklNRToKKwljYXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFk6CisJCW1kZWxheSh0aW1l b3V0KTsKKwkJcmV0ID0gMDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9IUFJJ TUU6CisJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9QQVJJTkdfSU5GTzoKKwljYXNlIEhEQ1BfMl8y X1JFUF9TRU5EX1JFQ1ZJRF9MSVNUOgorCQlpbnRlbF9kcF9oZGNwX3dhaXRfZm9yX2NwX2lycSgm aGRjcC0+Y3BfaXJxX3JlY3ZlZCwgdGltZW91dCk7CisJCXJldCA9IGhkY3AyX2RldGVjdF9tc2df YXZhaWxhYmlsaXR5KGludGVsX2RpZ19wb3J0LCBtc2dfaWQsCisJCQkJCQkgICAgJm1zZ19yZWFk eSk7CisJCWlmICghbXNnX3JlYWR5KQorCQkJcmV0ID0gLUVUSU1FRE9VVDsKKwkJYnJlYWs7CisJ ZGVmYXVsdDoKKwkJRFJNX0RFQlVHX0tNUygiVW5pZGVudGlmaWVkIG1zZ19pZDogJWRcbiIsIChp bnQpbXNnX2lkKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCWlmIChyZXQpCisJCURSTV9FUlJP UigibXNnX2lkICVkLCByZXQgJWQsIHRpbWVvdXQobVNlYyk6ICVkXG4iLCBtc2dfaWQsIHJldCwK KwkJCSAgdGltZW91dCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBf aGRjcDJfd3JpdGVfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 LAorCQkJICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplKQoreworCXVuc2lnbmVkIGludCBvZmZz ZXQ7CisJdWludDhfdCAqYnl0ZSA9IGJ1ZjsKKwlzc2l6ZV90IHJldCwgYnl0ZXNfdG9fd3JpdGUs IGxlbjsKKworCWlmIChpbnRlbF9kcGNkX29mZnNldF9mb3JfaGRjcDJfbXNnaWQoKmJ5dGUsICZv ZmZzZXQpIDwgMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwkvKiBObyBtc2dfaWQgaW4gRFAgSERD UDIuMiBtc2dzICovCisJYnl0ZXNfdG9fd3JpdGUgPSBzaXplIC0gMTsKKwlieXRlKys7CisKKwl3 aGlsZSAoYnl0ZXNfdG9fd3JpdGUpIHsKKwkJbGVuID0gYnl0ZXNfdG9fd3JpdGUgPiBEUF9BVVhf TUFYX1BBWUxPQURfQllURVMgPworCQkJCURQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA6IGJ5dGVz X3RvX3dyaXRlOworCisJCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kaWdfcG9ydC0+ ZHAuYXV4LCBvZmZzZXQsCisJCQkJCSh2b2lkICopYnl0ZSwgbGVuKTsKKwkJaWYgKHJldCA8IDAp CisJCQlyZXR1cm4gcmV0OworCisJCWJ5dGVzX3RvX3dyaXRlIC09IHJldDsKKwkJYnl0ZSArPSBy ZXQ7CisJCW9mZnNldCArPSByZXQ7CisJfQorCXJldHVybiBzaXplOworfQorCitzdGF0aWMKK2lu dCBpbnRlbF9kcF9oZGNwMl9yZWFkX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKKwkJCSAgICB1aW50OF90IG1zZ19pZCwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6 ZSkKK3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0LCBkZXZfY250OworCXVpbnQ4X3QgKmJ5dGUgPSBi dWY7CisJdWludDhfdCByeF9pbmZvW0hEQ1BfMl8yX1JYSU5GT19MRU5dOworCXNzaXplX3QgcmV0 LCBieXRlc190b19yZWN2LCBsZW47CisKKwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRfZm9yX2hkY3Ay X21zZ2lkKG1zZ19pZCwgJm9mZnNldCkgPCAwKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldCA9 IGludGVsX2RwX2hkY3AyX3dhaXRfZm9yX21zZyhpbnRlbF9kaWdfcG9ydCwgbXNnX2lkKTsKKwlp ZiAocmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCS8qIEZpbmRpbmcgdGhlIFJlY2VpdmVySUQg TGlzdCBzaXplICovCisJaWYgKG1zZ19pZCA9PSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElT VCkgeworCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAor CQkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhJTkZPX09GRlNFVCwKKwkJCQkgICAgICAgKHZv aWQgKilyeF9pbmZvLCBIRENQXzJfMl9SWElORk9fTEVOKTsKKwkJaWYgKHJldCAhPSBIRENQXzJf Ml9SWElORk9fTEVOKQorCQkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKworCQlkZXZf Y250ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZvWzBdKSA8PCA0IHwKKwkJCSAgIEhE Q1BfMl8yX0RFVl9DT1VOVF9MTyhyeF9pbmZvWzFdKSk7CisKKwkJaWYgKGRldl9jbnQgPiBIRENQ XzJfMl9NQVhfREVWSUNFX0NPVU5UKQorCQkJZGV2X2NudCA9IEhEQ1BfMl8yX01BWF9ERVZJQ0Vf Q09VTlQ7CisKKwkJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJp ZF9saXN0KSAtCisJCSAgICAgICBIRENQXzJfMl9SRUNFSVZFUl9JRFNfTUFYX0xFTiArCisJCSAg ICAgICAoZGV2X2NudCAqIEhEQ1BfMl8yX1JFQ0VJVkVSX0lEX0xFTik7CisJfQorCisJYnl0ZXNf dG9fcmVjdiA9IHNpemUgLSAxOworCisJLyogVG8gc2tpcCB0aGUgbXNnX2lkLCBhcyBtc2dzIGlu IERQIGFkYXB0YXRpb24gaGFzIG5vIG1zZ19pZCAqLworCWJ5dGUrKzsKKworCXdoaWxlIChieXRl c190b19yZWN2KSB7CisJCWxlbiA9IGJ5dGVzX3RvX3JlY3YgPiBEUF9BVVhfTUFYX1BBWUxPQURf QllURVMgPworCQkgICAgICBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRlc190b19yZWN2 OworCisJCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsIG9m ZnNldCwKKwkJCQkgICAgICAgKHZvaWQgKilieXRlLCBsZW4pOworCQlpZiAocmV0IDwgMCkgewor CQkJRFJNX0RFQlVHX0tNUygibXNnX2lkICVkLCByZXQgJWRcbiIsIG1zZ19pZCwgKGludClyZXQp OworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCWJ5dGVzX3RvX3JlY3YgLT0gcmV0OworCQlieXRl ICs9IHJldDsKKwkJb2Zmc2V0ICs9IHJldDsKKwl9CisJYnl0ZSA9IGJ1ZjsKKwkqYnl0ZSA9IG1z Z19pZDsKKworCXJldHVybiBzaXplOworfQorCitzdGF0aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9j b25maWdfc3RyZWFtX3R5cGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCisJCQkJICAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwlyZXR1cm4gaW50ZWxf ZHBfaGRjcDJfd3JpdGVfbXNnKGludGVsX2RpZ19wb3J0LCBidWYsIHNpemUpOworfQorCitzdGF0 aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0KQoreworCXVpbnQ4X3Qgcnhfc3RhdHVzOworCWludCByZXQ7CisK KwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4 X3N0YXR1cyk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChIRENQXzJfMl9EUF9S WFNUQVRVU19SRUFVVEhfUkVRKHJ4X3N0YXR1cykpCisJCXJldCA9IERSTV9IRENQX1JFQVVUSF9S RVFVRVNUOworCWVsc2UgaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xJTktfRkFJTEVEKHJ4X3N0 YXR1cykpCisJCXJldCA9IERSTV9IRENQX0xJTktfSU5URUdSSVRZX0ZBSUxVUkU7CisJZWxzZSBp ZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBRFkocnhfc3RhdHVzKSkKKwkJcmV0ID0gRFJNX0hE Q1BfVE9QT0xPR1lfQ0hBTkdFOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljCitpbnQgaW50 ZWxfZHBfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCwKKwkJCSAgIGJvb2wgKmNhcGFibGUpCit7CisJdWludDhfdCByeF9jYXBzWzNdOworCWlu dCByZXQ7CisKKwkqY2FwYWJsZSA9IGZhbHNlOworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmlu dGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYX0NBUFNf T0ZGU0VULAorCQkJICAgICAgIHJ4X2NhcHMsIEhEQ1BfMl8yX1JYQ0FQU19MRU4pOworCWlmIChy ZXQgIT0gSERDUF8yXzJfUlhDQVBTX0xFTikKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJl dDsKKworCWlmIChyeF9jYXBzWzBdID09IEhEQ1BfMl8yX1JYQ0FQU19WRVJTSU9OX1ZBTCAmJgor CSAgICBIRENQXzJfMl9EUF9IRENQX0NBUEFCTEUocnhfY2Fwc1syXSkpCisJCSpjYXBhYmxlID0g dHJ1ZTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMKK2VudW0gaGRjcF9wcm90b2NvbCBpbnRl bF9kcF9oZGNwMl9wcm90b2NvbCh2b2lkKQoreworCXJldHVybiBIRENQX1BST1RPQ09MX0RQOwor fQorCiBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3No aW0gPSB7CiAJLndyaXRlX2FuX2Frc3YgPSBpbnRlbF9kcF9oZGNwX3dyaXRlX2FuX2Frc3YsCiAJ LnJlYWRfYmtzdiA9IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2LApAQCAtNTMxMyw2ICs1NjU3LDEy IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2RwX2hkY3Bfc2hp bSA9IHsKIAkudG9nZ2xlX3NpZ25hbGxpbmcgPSBpbnRlbF9kcF9oZGNwX3RvZ2dsZV9zaWduYWxs aW5nLAogCS5jaGVja19saW5rID0gaW50ZWxfZHBfaGRjcF9jaGVja19saW5rLAogCS5oZGNwX2Nh cGFibGUgPSBpbnRlbF9kcF9oZGNwX2NhcGFibGUsCisJLndyaXRlXzJfMl9tc2cgPSBpbnRlbF9k cF9oZGNwMl93cml0ZV9tc2csCisJLnJlYWRfMl8yX21zZyA9IGludGVsX2RwX2hkY3AyX3JlYWRf bXNnLAorCS5jb25maWdfc3RyZWFtX3R5cGUgPSBpbnRlbF9kcF9oZGNwMl9jb25maWdfc3RyZWFt X3R5cGUsCisJLmNoZWNrXzJfMl9saW5rID0gaW50ZWxfZHBfaGRjcDJfY2hlY2tfbGluaywKKwku aGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hkY3AyX2NhcGFibGUsCisJLmhkY3BfcHJvdG9j b2wgPSBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCwKIH07CiAKIHN0YXRpYyB2b2lkIGludGVsX2Vk cF9wYW5lbF92ZGRfc2FuaXRpemUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKaW5kZXggMTdlNmMwNTRlMTcxLi5lOTMxODc3ZGViNjkgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCkBAIC00NDIsNiArNDQyLDcgQEAgc3RydWN0IGludGVsX2hkY3Ag ewogCXN0cnVjdCBtZWlfaGRjcF9kYXRhIG1laV9kYXRhOwogCiAJc3RydWN0IGRlbGF5ZWRfd29y ayBoZGNwMl9jaGVja193b3JrOworCXN0cnVjdCBjb21wbGV0aW9uIGNwX2lycV9yZWN2ZWQ7CiB9 OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYwpp bmRleCAzMzYxMTYwMzJmZjcuLjE2MTQ0YWUxYmJhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk Y3AuYwpAQCAtNzg3LDYgKzc4Nyw3IEBAIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCWlmIChoZGNwMl9zdXBwb3J0ZWQpCiAJCWludGVsX2hk Y3AyX2luaXQoY29ubmVjdG9yKTsKIAorCWluaXRfY29tcGxldGlvbigmaGRjcC0+Y3BfaXJxX3Jl Y3ZlZCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE3ODEsNCArMTc4Miw2IEBAIHZvaWQgaW50ZWxf aGRjcF9oYW5kbGVfY3BfaXJxKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAkJ aW50ZWxfaGRjcF9jaGVja19saW5rKGNvbm5lY3Rvcik7CiAJZWxzZSBpZiAoaW50ZWxfaGRjcDJf aW5fZm9yY2UoY29ubmVjdG9yKSkKIAkJaW50ZWxfaGRjcDJfY2hlY2tfbGluayhjb25uZWN0b3Ip OworCisJY29tcGxldGVfYWxsKCZjb25uZWN0b3ItPmhkY3AuY3BfaXJxX3JlY3ZlZCk7CiB9Ci0t IAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==