From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v8 12/35] drm/i915: Implement the HDCP2.2 support for DP Date: Tue, 27 Nov 2018 16:13:10 +0530 Message-ID: <1543315413-24302-13-git-send-email-ramalingam.c@intel.com> References: <1543315413-24302-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: <1543315413-24302-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, daniel.vetter@ffwll.ch, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyB0aGUgRFAgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4K ClRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21t dW5pY2F0aW5nIHRoZQpIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KCnYyOgog IHdhaXQgZm9yIGNwX2lycSBpcyBtZXJnZWQgd2l0aCB0aGlzIHBhdGNoLiBSZWJhc2VkLgp2MzoK ICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQp2 NDoKICBTdHlsZSBmaXhlZC4KICAlcy9QQVJJTkcvUEFJUklORwogIEZldyBzdHlsZSBmaXhlcyBb VW1hXQp2NToKICBMb29rdXAgdGFibGUgZm9yIERQIEhEQ1AyLjIgbXNnIGRldGFpbHMgW0Rhbmll bF0uCiAgRXh0cmEgbGluZXMgYXJlIHJlbW92ZWQuCnY2OgogIFJlYmFzZWQuCnY3OgogIEZpeGVk IHNvbWUgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGF0IHY1LiBbQW5raXRdCiAgTWFjcm8gSERDUF8y XzJfUlhfQ0FQU19WRVJTSU9OX1ZBTCBpcyByZXVzZWQgW1VtYV0KICBDb252ZXJ0ZWQgYSBmdW5j dGlvbiB0byBpbmxpbmUgW1VtYV0KICAlcy91aW50eHhfdC91eHgKdjg6CiAgRXJyb3IgZHVlIHRv IHRoZSBzaW5rcyBhcmUgcmVwb3J0ZWQgYXMgREVCVUcgbG9ncy4KICBBZGp1c3QgdG8gdGhlIG5l dyBtZWkgaW50ZXJmYWNlLgoKU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2Ft LmNAaW50ZWwuY29tPgpTaWduZWQtb2ZmLWJ5OiBBbmtpdCBLIE5hdXRpeWFsIDxhbmtpdC5rLm5h dXRpeWFsQGludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBp bnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgIHwgMzM4ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j IHwgICA2ICsKIDMgZmlsZXMgY2hhbmdlZCwgMzUxIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwppbmRleCBlY2M0NzA2ZGI3ZGMuLjFjYzgyZTQ5MDk5OSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4K ICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgogI2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgor I2luY2x1ZGUgPGxpbnV4L21laV9oZGNwLmg+CiAjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgog I2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+ CkBAIC01MzQ3LDYgKzUzNDgsMjcgQEAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3N1c3BlbmQoc3Ry dWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJcHBzX3VubG9jayhpbnRlbF9kcCk7 CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxfZHBfaGRjcF93YWl0X2Zvcl9jcF9pcnEoc3RydWN0IGlu dGVsX2hkY3AgKmhkY3AsCisJCQkJCSBpbnQgdGltZW91dCkKK3sKKwlsb25nIHJldDsKKworCS8q IFJlaW5pdCAqLworCWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQsIDApOworCisjZGVm aW5lIEMgKGF0b21pY19yZWFkKCZoZGNwLT5jcF9pcnFfcmVjdmVkKSA+IDApCisJcmV0ID0gd2Fp dF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRjcC0+Y3BfaXJxX3F1ZXVlLCBDLAorCQkJ CQkgICAgICAgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0KSk7CisKKwlpZiAocmV0ID4gMCkgewor CQlhdG9taWNfc2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsKKwkJcmV0dXJuIDA7CisJfSBl bHNlIGlmICghcmV0KSB7CisJCXJldHVybiAtRVRJTUVET1VUOworCX0KKwlyZXR1cm4gKGludCly ZXQ7Cit9CisKIHN0YXRpYwogaW50IGludGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdihzdHJ1Y3Qg aW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJCQl1OCAqYW4pCkBAIC01NTcw LDYgKzU1OTIsMzE2IEBAIGludCBpbnRlbF9kcF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBzdHJ1 Y3QgaGRjcDJfZHBfbXNnX2RhdGEgeworCXU4IG1zZ19pZDsKKwl1MzIgb2Zmc2V0OworCWJvb2wg bXNnX2RldGVjdGFibGU7CisJdTMyIHRpbWVvdXQ7CisJdTMyIHRpbWVvdXQyOyAvKiBBZGRlZCBm b3Igbm9uX3BhaXJlZCBzaXR1YXRpb24gKi8KKwl9IGhkY3AyX21zZ19kYXRhW10gPSB7CisJCXtI RENQXzJfMl9BS0VfSU5JVCwgRFBfSERDUF8yXzJfQUtFX0lOSVRfT0ZGU0VULCBmYWxzZSwgMCwg MH0sCisJCXtIRENQXzJfMl9BS0VfU0VORF9DRVJULCBEUF9IRENQXzJfMl9BS0VfU0VORF9DRVJU X09GRlNFVCwKKwkJCQlmYWxzZSwgSERDUF8yXzJfQ0VSVF9USU1FT1VUX01TLCAwfSwKKwkJe0hE Q1BfMl8yX0FLRV9OT19TVE9SRURfS00sIERQX0hEQ1BfMl8yX0FLRV9OT19TVE9SRURfS01fT0ZG U0VULAorCQkJCWZhbHNlLCAwLCAwfSwKKwkJe0hEQ1BfMl8yX0FLRV9TVE9SRURfS00sIERQX0hE Q1BfMl8yX0FLRV9TVE9SRURfS01fT0ZGU0VULAorCQkJCWZhbHNlLCAwLCAwfSwKKwkJe0hEQ1Bf Ml8yX0FLRV9TRU5EX0hQUklNRSwgRFBfSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FX09GRlNFVCwK KwkJCQl0cnVlLCBIRENQXzJfMl9IUFJJTUVfUEFJUkVEX1RJTUVPVVRfTVMsCisJCQkJSERDUF8y XzJfSFBSSU1FX05PX1BBSVJFRF9USU1FT1VUX01TfSwKKwkJe0hEQ1BfMl8yX0FLRV9TRU5EX1BB SVJJTkdfSU5GTywKKwkJCQlEUF9IRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk9fT0ZGU0VU LCB0cnVlLAorCQkJCUhEQ1BfMl8yX1BBSVJJTkdfVElNRU9VVF9NUywgMH0sCisJCXtIRENQXzJf Ml9MQ19JTklULCBEUF9IRENQXzJfMl9MQ19JTklUX09GRlNFVCwgZmFsc2UsIDAsIDB9LAorCQl7 SERDUF8yXzJfTENfU0VORF9MUFJJTUUsIERQX0hEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FX09GRlNF VCwKKwkJCQlmYWxzZSwgSERDUF8yXzJfRFBfTFBSSU1FX1RJTUVPVVRfTVMsIDB9LAorCQl7SERD UF8yXzJfU0tFX1NFTkRfRUtTLCBEUF9IRENQXzJfMl9TS0VfU0VORF9FS1NfT0ZGU0VULCBmYWxz ZSwKKwkJCQkwLCAwfSwKKwkJe0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNULAorCQkJCURQ X0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUX09GRlNFVCwgdHJ1ZSwKKwkJCQlIRENQXzJf Ml9SRUNWSURfTElTVF9USU1FT1VUX01TLCAwfSwKKwkJe0hEQ1BfMl8yX1JFUF9TRU5EX0FDSywg RFBfSERDUF8yXzJfUkVQX1NFTkRfQUNLX09GRlNFVCwgZmFsc2UsCisJCQkJMCwgMH0sCisJCXtI RENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRSwKKwkJCQlEUF9IRENQXzJfMl9SRVBfU1RSRUFNX01B TkFHRV9PRkZTRVQsIGZhbHNlLAorCQkJCTAsIDB9LAorCQl7SERDUF8yXzJfUkVQX1NUUkVBTV9S RUFEWSwgRFBfSERDUF8yXzJfUkVQX1NUUkVBTV9SRUFEWV9PRkZTRVQsCisJCQkJZmFsc2UsIEhE Q1BfMl8yX1NUUkVBTV9SRUFEWV9USU1FT1VUX01TLCAwfSwKKwkJe0hEQ1BfMl8yX0VSUkFUQV9E UF9TVFJFQU1fVFlQRSwKKwkJCQlEUF9IRENQXzJfMl9SRUdfU1RSRUFNX1RZUEVfT0ZGU0VULCBm YWxzZSwKKwkJCQkwLCAwfSwKKwkJfTsKKworc3RhdGljIGlubGluZQoraW50IGludGVsX2RwX2hk Y3AyX3JlYWRfcnhfc3RhdHVzKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0LAorCQkJCSAgdTggKnJ4X3N0YXR1cykKK3sKKwlzc2l6ZV90IHJldDsKKworCXJldCA9IGRy bV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJCQkgICAgICAgRFBfSERD UF8yXzJfUkVHX1JYU1RBVFVTX09GRlNFVCwgcnhfc3RhdHVzLAorCQkJICAgICAgIEhEQ1BfMl8y X0RQX1JYU1RBVFVTX0xFTik7CisJaWYgKHJldCAhPSBIRENQXzJfMl9EUF9SWFNUQVRVU19MRU4p IHsKKwkJRFJNX0RFQlVHX0tNUygiUmVhZCBic3RhdHVzIGZyb20gRFAvQVVYIGZhaWxlZCAoJXpk KVxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKwl9CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljCitpbnQgaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJICB1OCBtc2dfaWQs IGJvb2wgKm1zZ19yZWFkeSkKK3sKKwl1OCByeF9zdGF0dXM7CisJaW50IHJldDsKKworCSptc2df cmVhZHkgPSBmYWxzZTsKKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRl bF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiByZXQ7CisK Kwlzd2l0Y2ggKG1zZ19pZCkgeworCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgorCQlp ZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfSF9QUklNRShyeF9zdGF0dXMpKQorCQkJKm1zZ19yZWFk eSA9IHRydWU7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZP OgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUEFJUklORyhyeF9zdGF0dXMpKQorCQkJKm1z Z19yZWFkeSA9IHRydWU7CisJCWJyZWFrOworCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklE X0xJU1Q6CisJCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFEWShyeF9zdGF0dXMpKQorCQkJ Km1zZ19yZWFkeSA9IHRydWU7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCURSTV9FUlJPUigiVW5p ZGVudGlmaWVkIG1zZ19pZDogJWRcbiIsIG1zZ19pZCk7CisJCXJldHVybiAtRUlOVkFMOworCX0K KworCXJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdAoraW50ZWxfZHBfaGRjcDJfd2FpdF9m b3JfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAg IHN0cnVjdCBoZGNwMl9kcF9tc2dfZGF0YSAqaGRjcDJfbXNnX2RhdGEpCit7CisJc3RydWN0IGlu dGVsX2RwICpkcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7CisJc3RydWN0IGludGVsX2hkY3AgKmhk Y3AgPSAmZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcDsKKwlpbnQgcmV0LCB0aW1lb3V0Owor CWJvb2wgbXNnX3JlYWR5ID0gZmFsc2U7CisKKwlpZiAoaGRjcDJfbXNnX2RhdGEtPm1zZ19pZCA9 PSBIRENQXzJfMl9BS0VfU0VORF9IUFJJTUUgJiYKKwkgICAgIWhkY3AtPmlzX3BhaXJlZCkKKwkJ dGltZW91dCA9IGhkY3AyX21zZ19kYXRhLT50aW1lb3V0MjsKKwllbHNlCisJCXRpbWVvdXQgPSBo ZGNwMl9tc2dfZGF0YS0+dGltZW91dDsKKworCS8qCisJICogVGhlcmUgaXMgbm8gd2F5IHRvIGRl dGVjdCB0aGUgQ0VSVCwgTFBSSU1FIGFuZCBTVFJFQU1fUkVBRFkKKwkgKiBhdmFpbGFiaWxpdHku IFNvIFdhaXQgZm9yIHRpbWVvdXQgYW5kIHJlYWQgdGhlIG1zZy4KKwkgKi8KKwlpZiAoIWhkY3Ay X21zZ19kYXRhLT5tc2dfZGV0ZWN0YWJsZSkgeworCQltZGVsYXkodGltZW91dCk7CisJCXJldCA9 IDA7CisJfSBlbHNlIHsKKwkJLyoKKwkJICogSWdub3JpbmcgdGhlIHJldHVybiBvZiB0aGUgaW50 ZWxfZHBfaGRjcF93YWl0X2Zvcl9jcF9pcnEsCisJCSAqIEp1c3QgdG8gZGV0ZWN0IHRoZSBtc2cg YXZhaWxhYmlsaXR5IGJlZm9yZSBmYWlsaW5nIGl0LgorCQkgKi8KKwkJaW50ZWxfZHBfaGRjcF93 YWl0X2Zvcl9jcF9pcnEoaGRjcCwgdGltZW91dCk7CisJCXJldCA9IGhkY3AyX2RldGVjdF9tc2df YXZhaWxhYmlsaXR5KGludGVsX2RpZ19wb3J0LAorCQkJCQkJICAgIGhkY3AyX21zZ19kYXRhLT5t c2dfaWQsCisJCQkJCQkgICAgJm1zZ19yZWFkeSk7CisJCWlmICghbXNnX3JlYWR5KQorCQkJcmV0 ID0gLUVUSU1FRE9VVDsKKwl9CisKKwlpZiAocmV0KQorCQlEUk1fREVCVUdfS01TKCJtc2dfaWQg JWQsIHJldCAlZCwgdGltZW91dChtU2VjKTogJWRcbiIsCisJCQkgICAgICBoZGNwMl9tc2dfZGF0 YS0+bXNnX2lkLCByZXQsIHRpbWVvdXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0 cnVjdCBoZGNwMl9kcF9tc2dfZGF0YSAqZ2V0X2hkY3AyX2RwX21zZ19kYXRhKHU4IG1zZ19pZCkK K3sKKwlpbnQgaTsKKworCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoaGRjcDJfbXNnX2RhdGEpOyBp KyspCisJCWlmIChoZGNwMl9tc2dfZGF0YVtpXS5tc2dfaWQgPT0gbXNnX2lkKQorCQkJcmV0dXJu ICZoZGNwMl9tc2dfZGF0YVtpXTsKKworCXJldHVybiBOVUxMOworfQorCitzdGF0aWMKK2ludCBp bnRlbF9kcF9oZGNwMl93cml0ZV9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCisJCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJdW5zaWduZWQg aW50IG9mZnNldDsKKwl1OCAqYnl0ZSA9IGJ1ZjsKKwlzc2l6ZV90IHJldCwgYnl0ZXNfdG9fd3Jp dGUsIGxlbjsKKwlzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgKmhkY3AyX21zZ19kYXRhOworCisJ aGRjcDJfbXNnX2RhdGEgPSBnZXRfaGRjcDJfZHBfbXNnX2RhdGEoKmJ5dGUpOworCWlmICghaGRj cDJfbXNnX2RhdGEpCisJCXJldHVybiAtRUlOVkFMOworCisJb2Zmc2V0ID0gaGRjcDJfbXNnX2Rh dGEtPm9mZnNldDsKKworCS8qIE5vIG1zZ19pZCBpbiBEUCBIRENQMi4yIG1zZ3MgKi8KKwlieXRl c190b193cml0ZSA9IHNpemUgLSAxOworCWJ5dGUrKzsKKworCXdoaWxlIChieXRlc190b193cml0 ZSkgeworCQlsZW4gPSBieXRlc190b193cml0ZSA+IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA/ CisJCQkJRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTIDogYnl0ZXNfdG9fd3JpdGU7CisKKwkJcmV0 ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJCQkJCW9mZnNl dCwgKHZvaWQgKilieXRlLCBsZW4pOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisK KwkJYnl0ZXNfdG9fd3JpdGUgLT0gcmV0OworCQlieXRlICs9IHJldDsKKwkJb2Zmc2V0ICs9IHJl dDsKKwl9CisKKwlyZXR1cm4gc2l6ZTsKK30KKworc3RhdGljCitzc2l6ZV90IGdldF9yZWNlaXZl cl9pZF9saXN0X3NpemUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQp Cit7CisJdTggcnhfaW5mb1tIRENQXzJfMl9SWElORk9fTEVOXTsKKwl1MzIgZGV2X2NudDsKKwlz c2l6ZV90IHJldDsKKworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5k cC5hdXgsCisJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYSU5GT19PRkZTRVQsCisJCQkgICAg ICAgKHZvaWQgKilyeF9pbmZvLCBIRENQXzJfMl9SWElORk9fTEVOKTsKKwlpZiAocmV0ICE9IEhE Q1BfMl8yX1JYSU5GT19MRU4pCisJCXJldHVybiByZXQgPj0gMCA/IC1FSU8gOiByZXQ7CisKKwlk ZXZfY250ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZvWzBdKSA8PCA0IHwKKwkJICAg SERDUF8yXzJfREVWX0NPVU5UX0xPKHJ4X2luZm9bMV0pKTsKKworCWlmIChkZXZfY250ID4gSERD UF8yXzJfTUFYX0RFVklDRV9DT1VOVCkKKwkJZGV2X2NudCA9IEhEQ1BfMl8yX01BWF9ERVZJQ0Vf Q09VTlQ7CisKKwlyZXQgPSBzaXplb2Yoc3RydWN0IGhkY3AyX3JlcF9zZW5kX3JlY2VpdmVyaWRf bGlzdCkgLQorCQlIRENQXzJfMl9SRUNFSVZFUl9JRFNfTUFYX0xFTiArCisJCShkZXZfY250ICog SERDUF8yXzJfUkVDRUlWRVJfSURfTEVOKTsKKworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYwor aW50IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0LAorCQkJICAgIHU4IG1zZ19pZCwgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkK K3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCXU4ICpieXRlID0gYnVmOworCXNzaXplX3QgcmV0 LCBieXRlc190b19yZWN2LCBsZW47CisJc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9t c2dfZGF0YTsKKworCWhkY3AyX21zZ19kYXRhID0gZ2V0X2hkY3AyX2RwX21zZ19kYXRhKG1zZ19p ZCk7CisJaWYgKCFoZGNwMl9tc2dfZGF0YSkKKwkJcmV0dXJuIC1FSU5WQUw7CisJb2Zmc2V0ID0g aGRjcDJfbXNnX2RhdGEtPm9mZnNldDsKKworCXJldCA9IGludGVsX2RwX2hkY3AyX3dhaXRfZm9y X21zZyhpbnRlbF9kaWdfcG9ydCwgaGRjcDJfbXNnX2RhdGEpOworCWlmIChyZXQgPCAwKQorCQly ZXR1cm4gcmV0OworCisJaWYgKG1zZ19pZCA9PSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElT VCkgeworCQlyZXQgPSBnZXRfcmVjZWl2ZXJfaWRfbGlzdF9zaXplKGludGVsX2RpZ19wb3J0KTsK KwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCXNpemUgPSByZXQ7CisJfQorCWJ5 dGVzX3RvX3JlY3YgPSBzaXplIC0gMTsKKworCS8qIERQIGFkYXB0YXRpb24gbXNncyBoYXMgbm8g bXNnX2lkICovCisJYnl0ZSsrOworCisJd2hpbGUgKGJ5dGVzX3RvX3JlY3YpIHsKKwkJbGVuID0g Ynl0ZXNfdG9fcmVjdiA+IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA/CisJCSAgICAgIERQX0FV WF9NQVhfUEFZTE9BRF9CWVRFUyA6IGJ5dGVzX3RvX3JlY3Y7CisKKwkJcmV0ID0gZHJtX2RwX2Rw Y2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwgb2Zmc2V0LAorCQkJCSAgICAgICAodm9p ZCAqKWJ5dGUsIGxlbik7CisJCWlmIChyZXQgPCAwKSB7CisJCQlEUk1fREVCVUdfS01TKCJtc2df aWQgJWQsIHJldCAlemRcbiIsIG1zZ19pZCwgcmV0KTsKKwkJCXJldHVybiByZXQ7CisJCX0KKwor CQlieXRlc190b19yZWN2IC09IHJldDsKKwkJYnl0ZSArPSByZXQ7CisJCW9mZnNldCArPSByZXQ7 CisJfQorCWJ5dGUgPSBidWY7CisJKmJ5dGUgPSBtc2dfaWQ7CisKKwlyZXR1cm4gc2l6ZTsKK30K Kworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBlKHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJCSAgICAgIHZvaWQgKmJ1Ziwg c2l6ZV90IHNpemUpCit7CisJcmV0dXJuIGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhpbnRlbF9k aWdfcG9ydCwgYnVmLCBzaXplKTsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJfY2hl Y2tfbGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKK3sKKwl1 OCByeF9zdGF0dXM7CisJaW50IHJldDsKKworCXJldCA9IGludGVsX2RwX2hkY3AyX3JlYWRfcnhf c3RhdHVzKGludGVsX2RpZ19wb3J0LCAmcnhfc3RhdHVzKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g cmV0OworCisJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1JFQVVUSF9SRVEocnhfc3RhdHVzKSkK KwkJcmV0ID0gRFJNX0hEQ1BfUkVBVVRIX1JFUVVFU1Q7CisJZWxzZSBpZiAoSERDUF8yXzJfRFBf UlhTVEFUVVNfTElOS19GQUlMRUQocnhfc3RhdHVzKSkKKwkJcmV0ID0gRFJNX0hEQ1BfTElOS19J TlRFR1JJVFlfRkFJTFVSRTsKKwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFEWShy eF9zdGF0dXMpKQorCQlyZXQgPSBEUk1fSERDUF9UT1BPTE9HWV9DSEFOR0U7CisKKwlyZXR1cm4g cmV0OworfQorCitzdGF0aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9jYXBhYmxlKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAorCQkJICAgYm9vbCAqY2FwYWJsZSkKK3sK Kwl1OCByeF9jYXBzWzNdOworCWludCByZXQ7CisKKwkqY2FwYWJsZSA9IGZhbHNlOworCXJldCA9 IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJCQkgICAgICAgRFBf SERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAorCQkJICAgICAgIHJ4X2NhcHMsIEhEQ1BfMl8y X1JYQ0FQU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfUlhDQVBTX0xFTikKKwkJcmV0dXJu IHJldCA+PSAwID8gLUVJTyA6IHJldDsKKworCWlmIChyeF9jYXBzWzBdID09IEhEQ1BfMl8yX1JY X0NBUFNfVkVSU0lPTl9WQUwgJiYKKwkgICAgSERDUF8yXzJfRFBfSERDUF9DQVBBQkxFKHJ4X2Nh cHNbMl0pKQorCQkqY2FwYWJsZSA9IHRydWU7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGlu bGluZQorZW51bSBtZWlfaGRjcF93aXJlZF9wcm90b2NvbCBpbnRlbF9kcF9oZGNwMl9wcm90b2Nv bCh2b2lkKQoreworCXJldHVybiBNRUlfSERDUF9QUk9UT0NPTF9EUDsKK30KKwogc3RhdGljIGNv bnN0IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gaW50ZWxfZHBfaGRjcF9zaGltID0gewogCS53cml0 ZV9hbl9ha3N2ID0gaW50ZWxfZHBfaGRjcF93cml0ZV9hbl9ha3N2LAogCS5yZWFkX2Jrc3YgPSBp bnRlbF9kcF9oZGNwX3JlYWRfYmtzdiwKQEAgLTU1ODIsNiArNTkxNCwxMiBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7CiAJLnRvZ2ds ZV9zaWduYWxsaW5nID0gaW50ZWxfZHBfaGRjcF90b2dnbGVfc2lnbmFsbGluZywKIAkuY2hlY2tf bGluayA9IGludGVsX2RwX2hkY3BfY2hlY2tfbGluaywKIAkuaGRjcF9jYXBhYmxlID0gaW50ZWxf ZHBfaGRjcF9jYXBhYmxlLAorCS53cml0ZV8yXzJfbXNnID0gaW50ZWxfZHBfaGRjcDJfd3JpdGVf bXNnLAorCS5yZWFkXzJfMl9tc2cgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX21zZywKKwkuY29uZmln X3N0cmVhbV90eXBlID0gaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBlLAorCS5jaGVj a18yXzJfbGluayA9IGludGVsX2RwX2hkY3AyX2NoZWNrX2xpbmssCisJLmhkY3BfMl8yX2NhcGFi bGUgPSBpbnRlbF9kcF9oZGNwMl9jYXBhYmxlLAorCS5oZGNwX3Byb3RvY29sID0gaW50ZWxfZHBf aGRjcDJfcHJvdG9jb2wsCiB9OwogCiBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcGFuZWxfdmRkX3Nh bml0aXplKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CmluZGV4IGQ1YWIxZmY5Y2M2OS4uMmI3MTgxYjc2NDc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaApAQCAtNDUwLDYgKzQ1MCwxMyBAQCBzdHJ1Y3QgaW50ZWxfaGRjcCB7CiAJdTMyIHNlcV9u dW1fbTsKIAogCXN0cnVjdCBkZWxheWVkX3dvcmsgaGRjcDJfY2hlY2tfd29yazsKKworCS8qCisJ ICogV29yayBxdWV1ZSB0byBzaWduYWwgdGhlIENQX0lSUS4gVXNlZCBmb3IgdGhlIHdhaXRlcnMg dG8gcmVhZCB0aGUKKwkgKiBhdmFpbGFibGUgaW5mb3JtYXRpb24gZnJvbSBIRENQIERQIHNpbmsu CisJICovCisJd2FpdF9xdWV1ZV9oZWFkX3QgY3BfaXJxX3F1ZXVlOworCWF0b21pY190IGNwX2ly cV9yZWN2ZWQ7CiB9OwogCiBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2hkY3AuYwppbmRleCBiOWU1ZjczYzY0MGQuLmJlNDc1OTE0YzNjZCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYwpAQCAtMTg5OSw2ICsxODk5LDkgQEAgaW50IGludGVsX2hkY3BfaW5p dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCiAJaWYgKGhkY3AyX3N1cHBvcnRl ZCkKIAkJaW50ZWxfaGRjcDJfaW5pdChjb25uZWN0b3IpOwogCisJYXRvbWljX3NldCgmaGRjcC0+ Y3BfaXJxX3JlY3ZlZCwgMCk7CisJaW5pdF93YWl0cXVldWVfaGVhZCgmaGRjcC0+Y3BfaXJxX3F1 ZXVlKTsKKwogCXJldHVybiAwOwogfQogCkBAIC0yMDM2LDQgKzIwMzksNyBAQCB2b2lkIGludGVs X2hkY3BfaGFuZGxlX2NwX2lycShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJ CWludGVsX2hkY3BfY2hlY2tfbGluayhjb25uZWN0b3IpOwogCWVsc2UgaWYgKGludGVsX2hkY3Ay X2luX3VzZShjb25uZWN0b3IpKQogCQlpbnRlbF9oZGNwMl9jaGVja19saW5rKGNvbm5lY3Rvcik7 CisKKwlhdG9taWNfc2V0KCZjb25uZWN0b3ItPmhkY3AuY3BfaXJxX3JlY3ZlZCwgMSk7CisJd2Fr ZV91cF9hbGwoJmNvbm5lY3Rvci0+aGRjcC5jcF9pcnFfcXVldWUpOwogfQotLSAKMi43LjQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=