From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v3 37/40] drm/i915: Implement the HDCP2.2 support for DP Date: Tue, 3 Apr 2018 19:27:50 +0530 Message-ID: <1522763873-23041-38-git-send-email-ramalingam.c@intel.com> References: <1522763873-23041-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: <1522763873-23041-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, seanpaul@chromium.org, daniel@ffwll.ch, chris@chris-wilson.co.uk, jani.nikula@linux.intel.com, tomas.winkler@intel.com, alexander.usyskin@intel.com Cc: rodrigo.vivi@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyB0aGUgRFAgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4K ClRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21t dW5pY2F0aW5nIHRoZQpIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KCk5vdGU6 IENocmlzIFdpbHNvbiBzdWdnZXN0ZWQgYWx0ZXJuYXRlIG1ldGhvZCBmb3Igd2FpdGluZyBmb3Ig Q1BfSVJRLAp0aGFuIGNvbXBsZXRpb25zIGNvbmNlcHQuIFdJUCB0byB1bmRlcnN0YW5kIGFuZCBp bXBsZW1lbnQgdGhhdCwKaWYgbmVlZGVkLiBKdXN0IHRvIHVuYmxvY2sgdGhlIHJldmlldyBvZiBv dGhlciBjaGFuZ2VzLCB2MiBzdGlsbApjb250aW51ZXMgd2l0aCBjb21wbGV0aW9ucy4KCnYyOgog IHdhaXQgZm9yIGNwX2lycSBpcyBtZXJnZWQgd2l0aCB0aGlzIHBhdGNoLiBSZWJhc2VkLgp2MzoK ICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQoK U2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgotLS0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8IDM1MiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg IHwgICA3ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8ICAgNSArCiAzIGZp bGVzIGNoYW5nZWQsIDM2NCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5k ZXggZjkyYzAzMjZmZmY1Li5lNWNiNTRjZWRhMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpA QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CiAjaW5jbHVkZSA8bGlu dXgvbm90aWZpZXIuaD4KICNpbmNsdWRlIDxsaW51eC9yZWJvb3QuaD4KKyNpbmNsdWRlIDxsaW51 eC9tZWlfaGRjcC5oPgogI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KICNpbmNsdWRlIDxkcm0v ZHJtUC5oPgogI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgpAQCAtNTA3MCw2ICs1 MDcxLDI4IEBAIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyKQogCXBwc191bmxvY2soaW50ZWxfZHApOwogfQogCitzdGF0aWMg aW50IGludGVsX2RwX2hkY3Bfd2FpdF9mb3JfY3BfaXJxKHN0cnVjdCBpbnRlbF9oZGNwICpoZGNw LAorCQkJCQkgaW50IHRpbWVvdXQpCit7CisJbG9uZyByZXQ7CisKKwkvKiBSZWluaXQgKi8KKwlh dG9taWNfc2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsKKworI2RlZmluZSBDIChhdG9taWNf cmVhZCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCkgPiAwKQorCXJldCA9IHdhaXRfZXZlbnRfaW50ZXJy dXB0aWJsZV90aW1lb3V0KGhkY3AtPmNwX2lycV9xdWV1ZSwgQywKKwkJCQkJICAgICAgIG1zZWNz X3RvX2ppZmZpZXModGltZW91dCkpOworCisJaWYgKHJldCA+IDApIHsKKwkJYXRvbWljX3NldCgm aGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoIXJldCkg eworCQlyZXR1cm4gLUVUSU1FRE9VVDsKKwl9CisJcmV0dXJuIChpbnQpcmV0OworfQorCisKIHN0 YXRpYwogaW50IGludGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdihzdHJ1Y3QgaW50ZWxfZGlnaXRh bF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJCQl1OCAqYW4pCkBAIC01Mjg4LDYgKzUzMTEsMzI5 IEBAIGludCBpbnRlbF9kcF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbmxpbmUKK2ludCBpbnRl bF9kcGNkX29mZnNldF9mb3JfaGRjcDJfbXNnaWQodWludDhfdCBieXRlLCB1bnNpZ25lZCBpbnQg Km9mZnNldCkKK3sKKwlzd2l0Y2ggKGJ5dGUpIHsKKwljYXNlIEhEQ1BfMl8yX0FLRV9JTklUOgor CQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX0lOSVRfT0ZGU0VUOworCQlicmVhazsKKwljYXNl IEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQ6CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfU0VO RF9DRVJUX09GRlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9BS0VfTk9fU1RPUkVEX0tN OgorCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX05PX1NUT1JFRF9LTV9PRkZTRVQ7CisJCWJy ZWFrOworCWNhc2UgSERDUF8yXzJfQUtFX1NUT1JFRF9LTToKKwkJKm9mZnNldCA9IERQX0hEQ1Bf Ml8yX0FLRV9TVE9SRURfS01fT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9T RU5EX0hQUklNRToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRV9PRkZT RVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFSSU5HX0lORk86CisJCSpv ZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfU0VORF9QQVJJTkdfSU5GT19PRkZTRVQ7CisJCWJyZWFr OworCWNhc2UgSERDUF8yXzJfTENfSU5JVDoKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0xDX0lO SVRfT0ZGU0VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FOgorCQkq b2Zmc2V0ID0gRFBfSERDUF8yXzJfTENfU0VORF9MUFJJTUVfT0ZGU0VUOworCQlicmVhazsKKwlj YXNlIEhEQ1BfMl8yX1NLRV9TRU5EX0VLUzoKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1NLRV9T RU5EX0VLU19PRkZTRVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklE X0xJU1Q6CisJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVF9PRkZT RVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfQUNLOgorCQkqb2Zmc2V0ID0g RFBfSERDUF8yXzJfUkVQX1NFTkRfQUNLX09GRlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJf Ml9SRVBfU1RSRUFNX01BTkFHRToKKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JFUF9TVFJFQU1f TUFOQUdFX09GRlNFVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZ OgorCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfUkVQX1NUUkVBTV9SRUFEWV9PRkZTRVQ7CisJCWJy ZWFrOworCWNhc2UgSERDUF8yXzJfRVJSQVRBX0RQX1NUUkVBTV9UWVBFOgorCQkqb2Zmc2V0ID0g RFBfSERDUF8yXzJfUkVHX1NUUkVBTV9UWVBFX09GRlNFVDsKKwkJYnJlYWs7CisJZGVmYXVsdDoK KwkJRFJNX0VSUk9SKCJVbnJlY29nbml6ZWQgTXNnIElEXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW5saW5lCitpbnQgaW50ZWxfZHBfaGRjcDJf cmVhZF9yeF9zdGF0dXMoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs CisJCQkJICB1aW50OF90ICpyeF9zdGF0dXMpCit7CisJc3NpemVfdCByZXQ7CisKKwlyZXQgPSBk cm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAorCQkJICAgICAgIERQX0hE Q1BfMl8yX1JFR19SWFNUQVRVU19PRkZTRVQsIHJ4X3N0YXR1cywKKwkJCSAgICAgICBIRENQXzJf Ml9EUF9SWFNUQVRVU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfRFBfUlhTVEFUVVNfTEVO KSB7CisJCURSTV9FUlJPUigiUmVhZCBic3RhdHVzIGZyb20gRFAvQVVYIGZhaWxlZCAoJWxkKVxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKwl9CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGlubGluZQoraW50IGludGVsX2RwX2hkY3AyX3RpbWVvdXRfZm9yX21z Zyh1aW50OF90IG1zZ19pZCwgYm9vbCBwYWlyZWQpCit7CisJaW50IHRpbWVvdXQgPSAtRUlOVkFM OworCisJc3dpdGNoIChtc2dfaWQpIHsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQ6CisJ CXRpbWVvdXQgPSBIRENQXzJfMl9DRVJUX1RJTUVPVVQ7CisJCWJyZWFrOworCWNhc2UgSERDUF8y XzJfQUtFX1NFTkRfSFBSSU1FOgorCQlpZiAocGFpcmVkKQorCQkJdGltZW91dCA9IEhEQ1BfMl8y X0hQUklNRV9QQUlSRURfVElNRU9VVDsKKwkJZWxzZQorCQkJdGltZW91dCA9IEhEQ1BfMl8yX0hQ UklNRV9OT19QQUlSRURfVElNRU9VVDsKKwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9BS0VfU0VO RF9QQVJJTkdfSU5GTzoKKwkJdGltZW91dCA9IEhEQ1BfMl8yX1BBSVJJTkdfVElNRU9VVDsKKwkJ YnJlYWs7CisJY2FzZSBIRENQXzJfMl9MQ19TRU5EX0xQUklNRToKKwkJdGltZW91dCA9IEhEQ1Bf Ml8yX0RQX0xQUklNRV9USU1FT1VUOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX1JFUF9TRU5E X1JFQ1ZJRF9MSVNUOgorCQl0aW1lb3V0ID0gSERDUF8yXzJfUkVDVklEX0xJU1RfVElNRU9VVDsK KwkJYnJlYWs7CisJY2FzZSBIRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZOgorCQl0aW1lb3V0ID0g SERDUF8yXzJfU1RSRUFNX1JFQURZX1RJTUVPVVQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURS TV9FUlJPUigiVW5zdXBwb3J0ZWQgbXNnX2lkOiAlZFxuIiwgKGludCltc2dfaWQpOworCX0KKwly ZXR1cm4gdGltZW91dDsKK30KKworc3RhdGljIGlubGluZQoraW50IGhkY3AyX2RldGVjdF9tc2df YXZhaWxhYmlsaXR5KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAor CQkJCSAgdWludDhfdCBtc2dfaWQsIGJvb2wgKm1zZ19yZWFkeSkKK3sKKwl1aW50OF90IHJ4X3N0 YXR1czsKKwlpbnQgcmV0OworCisJKm1zZ19yZWFkeSA9IGZhbHNlOworCXJldCA9IGludGVsX2Rw X2hkY3AyX3JlYWRfcnhfc3RhdHVzKGludGVsX2RpZ19wb3J0LCAmcnhfc3RhdHVzKTsKKwlpZiAo cmV0IDwgMCkKKwkJcmV0dXJuIHJldDsKKworCXN3aXRjaCAobXNnX2lkKSB7CisJY2FzZSBIRENQ XzJfMl9BS0VfU0VORF9IUFJJTUU6CisJCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19IX1BSSU1F KHJ4X3N0YXR1cykpCisJCQkqbXNnX3JlYWR5ID0gdHJ1ZTsKKwkJYnJlYWs7CisJY2FzZSBIRENQ XzJfMl9BS0VfU0VORF9QQVJJTkdfSU5GTzoKKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1BB SVJJTkcocnhfc3RhdHVzKSkKKwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwljYXNl IEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUOgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFU VVNfUkVBRFkocnhfc3RhdHVzKSkKKwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwlk ZWZhdWx0OgorCQlEUk1fREVCVUdfS01TKCJVbmlkZW50aWZpZWQgbXNnX2lkOiAlZFxuIiwgKGlu dCltc2dfaWQpOworCQlyZXR1cm4gLUVJTlZBTDsKKwl9CisJcmV0dXJuIDA7Cit9CisKKworc3Rh dGljIGlubGluZSBzc2l6ZV90CitpbnRlbF9kcF9oZGNwMl93YWl0X2Zvcl9tc2coc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgdWludDhfdCBtc2dfaWQp Cit7CisJc3RydWN0IGludGVsX2RwICpkcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7CisJc3RydWN0 IGludGVsX2hkY3AgKmhkY3AgPSAmZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcDsKKwlpbnQg cmV0LCB0aW1lb3V0OworCWJvb2wgbXNnX3JlYWR5ID0gZmFsc2U7CisKKwl0aW1lb3V0ID0gaW50 ZWxfZHBfaGRjcDJfdGltZW91dF9mb3JfbXNnKG1zZ19pZCwgaGRjcC0+aXNfcGFpcmVkKTsKKwlz d2l0Y2ggKG1zZ19pZCkgeworCisJLyoKKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRo ZSBDRVJULCBMUFJJTUUgYW5kIFNUUkVBTV9SRUFEWQorCSAqIGF2YWlsYWJpbGl0eS4gU28gV2Fp dCBmb3IgdGltZW91dCBhbmQgcmVhZCB0aGUgbXNnLgorCSAqLworCWNhc2UgSERDUF8yXzJfQUtF X1NFTkRfQ0VSVDoKKwljYXNlIEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FOgorCWNhc2UgSERDUF8y XzJfUkVQX1NUUkVBTV9SRUFEWToKKwkJbWRlbGF5KHRpbWVvdXQpOworCQlyZXQgPSAwOworCQli cmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToKKwljYXNlIEhEQ1BfMl8yX0FL RV9TRU5EX1BBUklOR19JTkZPOgorCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6 CisJCWludGVsX2RwX2hkY3Bfd2FpdF9mb3JfY3BfaXJxKGhkY3AsIHRpbWVvdXQpOworCQlyZXQg PSBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJpbGl0eShpbnRlbF9kaWdfcG9ydCwgbXNnX2lkLAor CQkJCQkJICAgICZtc2dfcmVhZHkpOworCQlpZiAoIW1zZ19yZWFkeSkKKwkJCXJldCA9IC1FVElN RURPVVQ7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9ERUJVR19LTVMoIlVuaWRlbnRpZmll ZCBtc2dfaWQ6ICVkXG4iLCAoaW50KW1zZ19pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0KKwlp ZiAocmV0KQorCQlEUk1fRVJST1IoIm1zZ19pZCAlZCwgcmV0ICVkLCB0aW1lb3V0KG1TZWMpOiAl ZFxuIiwgbXNnX2lkLCByZXQsCisJCQkgIHRpbWVvdXQpOworCXJldHVybiByZXQ7Cit9CisKK3N0 YXRpYworaW50IGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sK Kwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCXVpbnQ4X3QgKmJ5dGUgPSBidWY7CisJc3NpemVfdCBy ZXQsIGJ5dGVzX3RvX3dyaXRlLCBsZW47CisKKwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRfZm9yX2hk Y3AyX21zZ2lkKCpieXRlLCAmb2Zmc2V0KSA8IDApCisJCXJldHVybiAtRUlOVkFMOworCisJLyog Tm8gbXNnX2lkIGluIERQIEhEQ1AyLjIgbXNncyAqLworCWJ5dGVzX3RvX3dyaXRlID0gc2l6ZSAt IDE7CisJYnl0ZSsrOworCisJd2hpbGUgKGJ5dGVzX3RvX3dyaXRlKSB7CisJCWxlbiA9IGJ5dGVz X3RvX3dyaXRlID4gRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8KKwkJCQlEUF9BVVhfTUFYX1BB WUxPQURfQllURVMgOiBieXRlc190b193cml0ZTsKKworCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0 ZSgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwgb2Zmc2V0LAorCQkJCQkodm9pZCAqKWJ5dGUsIGxl bik7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKworCQlieXRlc190b193cml0ZSAt PSByZXQ7CisJCWJ5dGUgKz0gcmV0OworCQlvZmZzZXQgKz0gcmV0OworCX0KKwlyZXR1cm4gc2l6 ZTsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfcmVhZF9tc2coc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgdWludDhfdCBtc2dfaWQsIHZv aWQgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJdW5zaWduZWQgaW50IG9mZnNldCwgZGV2X2NudDsK Kwl1aW50OF90ICpieXRlID0gYnVmOworCXVpbnQ4X3QgcnhfaW5mb1tIRENQXzJfMl9SWElORk9f TEVOXTsKKwlzc2l6ZV90IHJldCwgYnl0ZXNfdG9fcmVjdiwgbGVuOworCisJaWYgKGludGVsX2Rw Y2Rfb2Zmc2V0X2Zvcl9oZGNwMl9tc2dpZChtc2dfaWQsICZvZmZzZXQpIDwgMCkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl93YWl0X2Zvcl9tc2coaW50ZWxfZGln X3BvcnQsIG1zZ19pZCk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwkvKiBGaW5k aW5nIHRoZSBSZWNlaXZlcklEIExpc3Qgc2l6ZSAqLworCWlmIChtc2dfaWQgPT0gSERDUF8yXzJf UkVQX1NFTkRfUkVDVklEX0xJU1QpIHsKKwkJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxf ZGlnX3BvcnQtPmRwLmF1eCwKKwkJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYSU5GT19PRkZT RVQsCisJCQkJICAgICAgICh2b2lkICopcnhfaW5mbywgSERDUF8yXzJfUlhJTkZPX0xFTik7CisJ CWlmIChyZXQgIT0gSERDUF8yXzJfUlhJTkZPX0xFTikKKwkJCXJldHVybiByZXQgPj0gMCA/IC1F SU8gOiByZXQ7CisKKwkJZGV2X2NudCA9IChIRENQXzJfMl9ERVZfQ09VTlRfSEkocnhfaW5mb1sw XSkgPDwgNCB8CisJCQkgICBIRENQXzJfMl9ERVZfQ09VTlRfTE8ocnhfaW5mb1sxXSkpOworCisJ CWlmIChkZXZfY250ID4gSERDUF8yXzJfTUFYX0RFVklDRV9DT1VOVCkKKwkJCWRldl9jbnQgPSBI RENQXzJfMl9NQVhfREVWSUNFX0NPVU5UOworCisJCXNpemUgPSBzaXplb2Yoc3RydWN0IGhkY3Ay X3JlcF9zZW5kX3JlY2VpdmVyaWRfbGlzdCkgLQorCQkgICAgICAgSERDUF8yXzJfUkVDRUlWRVJf SURTX01BWF9MRU4gKworCQkgICAgICAgKGRldl9jbnQgKiBIRENQXzJfMl9SRUNFSVZFUl9JRF9M RU4pOworCX0KKworCWJ5dGVzX3RvX3JlY3YgPSBzaXplIC0gMTsKKworCS8qIFRvIHNraXAgdGhl IG1zZ19pZCwgYXMgbXNncyBpbiBEUCBhZGFwdGF0aW9uIGhhcyBubyBtc2dfaWQgKi8KKwlieXRl Kys7CisKKwl3aGlsZSAoYnl0ZXNfdG9fcmVjdikgeworCQlsZW4gPSBieXRlc190b19yZWN2ID4g RFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8KKwkJICAgICAgRFBfQVVYX01BWF9QQVlMT0FEX0JZ VEVTIDogYnl0ZXNfdG9fcmVjdjsKKworCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9k aWdfcG9ydC0+ZHAuYXV4LCBvZmZzZXQsCisJCQkJICAgICAgICh2b2lkICopYnl0ZSwgbGVuKTsK KwkJaWYgKHJldCA8IDApIHsKKwkJCURSTV9ERUJVR19LTVMoIm1zZ19pZCAlZCwgcmV0ICVkXG4i LCBtc2dfaWQsIChpbnQpcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKworCQlieXRlc190b19y ZWN2IC09IHJldDsKKwkJYnl0ZSArPSByZXQ7CisJCW9mZnNldCArPSByZXQ7CisJfQorCWJ5dGUg PSBidWY7CisJKmJ5dGUgPSBtc2dfaWQ7CisKKwlyZXR1cm4gc2l6ZTsKK30KKworc3RhdGljCitp bnQgaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBlKHN0cnVjdCBpbnRlbF9kaWdpdGFs X3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJCSAgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUp Cit7CisJcmV0dXJuIGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhpbnRlbF9kaWdfcG9ydCwgYnVm LCBzaXplKTsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfY2hlY2tfbGluayhzdHJ1 Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKK3sKKwl1aW50OF90IHJ4X3N0 YXR1czsKKwlpbnQgcmV0OworCisJcmV0ID0gaW50ZWxfZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMo aW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBVVRIX1JFUShyeF9zdGF0dXMpKQorCQlyZXQg PSBEUk1fSERDUF9SRUFVVEhfUkVRVUVTVDsKKwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRV U19MSU5LX0ZBSUxFRChyeF9zdGF0dXMpKQorCQlyZXQgPSBEUk1fSERDUF9MSU5LX0lOVEVHUklU WV9GQUlMVVJFOworCWVsc2UgaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1JFQURZKHJ4X3N0YXR1 cykpCisJCXJldCA9IERSTV9IRENQX1RPUE9MT0dZX0NIQU5HRTsKKworCXJldHVybiByZXQ7Cit9 CisKK3N0YXRpYworaW50IGludGVsX2RwX2hkY3AyX2NhcGFibGUoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICBib29sICpjYXBhYmxlKQoreworCXVpbnQ4 X3QgcnhfY2Fwc1szXTsKKwlpbnQgcmV0OworCisJKmNhcGFibGUgPSBmYWxzZTsKKwlyZXQgPSBk cm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAorCQkJICAgICAgIERQX0hE Q1BfMl8yX1JFR19SWF9DQVBTX09GRlNFVCwKKwkJCSAgICAgICByeF9jYXBzLCBIRENQXzJfMl9S WENBUFNfTEVOKTsKKwlpZiAocmV0ICE9IEhEQ1BfMl8yX1JYQ0FQU19MRU4pCisJCXJldHVybiBy ZXQgPj0gMCA/IC1FSU8gOiByZXQ7CisKKwlpZiAocnhfY2Fwc1swXSA9PSBIRENQXzJfMl9SWENB UFNfVkVSU0lPTl9WQUwgJiYKKwkgICAgSERDUF8yXzJfRFBfSERDUF9DQVBBQkxFKHJ4X2NhcHNb Ml0pKQorCQkqY2FwYWJsZSA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljCitlbnVt IGhkY3BfcHJvdG9jb2wgaW50ZWxfZHBfaGRjcDJfcHJvdG9jb2wodm9pZCkKK3sKKwlyZXR1cm4g SERDUF9QUk9UT0NPTF9EUDsKK30KKwogc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNwX3No aW0gaW50ZWxfZHBfaGRjcF9zaGltID0gewogCS53cml0ZV9hbl9ha3N2ID0gaW50ZWxfZHBfaGRj cF93cml0ZV9hbl9ha3N2LAogCS5yZWFkX2Jrc3YgPSBpbnRlbF9kcF9oZGNwX3JlYWRfYmtzdiwK QEAgLTUzMDAsNiArNTY0NiwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hp bSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7CiAJLnRvZ2dsZV9zaWduYWxsaW5nID0gaW50ZWxfZHBf aGRjcF90b2dnbGVfc2lnbmFsbGluZywKIAkuY2hlY2tfbGluayA9IGludGVsX2RwX2hkY3BfY2hl Y2tfbGluaywKIAkuaGRjcF9jYXBhYmxlID0gaW50ZWxfZHBfaGRjcF9jYXBhYmxlLAorCS53cml0 ZV8yXzJfbXNnID0gaW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnLAorCS5yZWFkXzJfMl9tc2cgPSBp bnRlbF9kcF9oZGNwMl9yZWFkX21zZywKKwkuY29uZmlnX3N0cmVhbV90eXBlID0gaW50ZWxfZHBf aGRjcDJfY29uZmlnX3N0cmVhbV90eXBlLAorCS5jaGVja18yXzJfbGluayA9IGludGVsX2RwX2hk Y3AyX2NoZWNrX2xpbmssCisJLmhkY3BfMl8yX2NhcGFibGUgPSBpbnRlbF9kcF9oZGNwMl9jYXBh YmxlLAorCS5oZGNwX3Byb3RvY29sID0gaW50ZWxfZHBfaGRjcDJfcHJvdG9jb2wsCiB9OwogCiBz dGF0aWMgdm9pZCBpbnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCmluZGV4IDhlNjBjY2QwZDM2OC4uMzdm OWEwZTJlYTEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaApAQCAtNDQ0LDYgKzQ0NCwxMyBA QCBzdHJ1Y3QgaW50ZWxfaGRjcCB7CiAJc3RydWN0IG1laV9oZGNwX2RhdGEgbWVpX2RhdGE7CiAJ c3RydWN0IG5vdGlmaWVyX2Jsb2NrIG1laV9jbGRldl9uYjsKIAlzdHJ1Y3QgZGVsYXllZF93b3Jr IGhkY3AyX2NoZWNrX3dvcms7CisKKwkvKgorCSAqIFdvcmsgcXVldWUgdG8gc2lnbmFsIHRoZSBD UF9JUlEuIFVzZWQgZm9yIHRoZSB3YWl0ZXJzIHRvIHJlYWQgdGhlCisJICogYXZhaWxhYmxlIGlu Zm9ybWF0aW9uIGZyb20gSERDUCBEUCBzaW5rLgorCSAqLworCXdhaXRfcXVldWVfaGVhZF90IGNw X2lycV9xdWV1ZTsKKwlhdG9taWNfdCBjcF9pcnFfcmVjdmVkOwogfTsKIAogc3RydWN0IGludGVs X2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKaW5kZXggOGNmMGVlYjRiM2Y4 Li45Mzg2YjQ1MTE5MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk Y3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKQEAgLTc4OCw2ICs3 ODgsOCBAQCBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvciwKIAlpZiAoaGRjcDJfc3VwcG9ydGVkKQogCQlpbnRlbF9oZGNwMl9pbml0KGNvbm5lY3Rv cik7CiAKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZoZGNwLT5jcF9pcnFfcXVldWUpOworCWF0b21p Y19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQsIDApOwogCXJldHVybiAwOwogfQogCkBAIC0xNzYy LDQgKzE3NjQsNyBAQCB2b2lkIGludGVsX2hkY3BfaGFuZGxlX2NwX2lycShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IpCiAJCWludGVsX2hkY3BfY2hlY2tfbGluayhjb25uZWN0b3Ip OwogCWVsc2UgaWYgKGludGVsX2hkY3AyX2luX2ZvcmNlKGNvbm5lY3RvcikpCiAJCWludGVsX2hk Y3AyX2NoZWNrX2xpbmsoY29ubmVjdG9yKTsKKworCWF0b21pY19zZXQoJmNvbm5lY3Rvci0+aGRj cC5jcF9pcnFfcmVjdmVkLCAxKTsKKwl3YWtlX3VwX2FsbCgmY29ubmVjdG9yLT5oZGNwLmNwX2ly cV9xdWV1ZSk7CiB9Ci0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vZHJpLWRldmVsCg==