From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v5 23/40] drm/i915: Implement the HDCP2.2 support for DP Date: Wed, 27 Jun 2018 14:10:12 +0530 Message-ID: <1530088829-11730-24-git-send-email-ramalingam.c@intel.com> References: <1530088829-11730-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: <1530088829-11730-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@ffwll.ch, tomas.winkler@intel.com, alexander.usyskin@intel.com, uma.shankar@intel.com List-Id: dri-devel@lists.freedesktop.org SW1wbGVtZW50cyB0aGUgRFAgYWRhcHRhdGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4K ClRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21t dW5pY2F0aW5nIHRoZQpIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KCk5vdGU6 IENocmlzIFdpbHNvbiBzdWdnZXN0ZWQgYWx0ZXJuYXRlIG1ldGhvZCBmb3Igd2FpdGluZyBmb3Ig Q1BfSVJRLAp0aGFuIGNvbXBsZXRpb25zIGNvbmNlcHQuIFdJUCB0byB1bmRlcnN0YW5kIGFuZCBp bXBsZW1lbnQgdGhhdCwKaWYgbmVlZGVkLiBKdXN0IHRvIHVuYmxvY2sgdGhlIHJldmlldyBvZiBv dGhlciBjaGFuZ2VzLCB2MiBzdGlsbApjb250aW51ZXMgd2l0aCBjb21wbGV0aW9ucy4KCnYyOgog IHdhaXQgZm9yIGNwX2lycSBpcyBtZXJnZWQgd2l0aCB0aGlzIHBhdGNoLiBSZWJhc2VkLgp2MzoK ICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQp2 NDoKICBTdHlsZSBmaXhlZC4KICAlcy9QQVJJTkcvUEFJUklORwogIEZldyBzdHlsZSBmaXhlcyBb VW1hXQp2NToKICBMb29rdXAgdGFibGUgZm9yIERQIEhEQ1AyLjIgbXNnIGRldGFpbHMgW0Rhbmll bF0uCiAgRXh0cmEgbGluZXMgYXJlIHJlbW92ZWQuCgpTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2Ft IEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyAgIHwgMzMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDcgKwogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRjcC5jIHwgICA1ICsKIDMgZmlsZXMgY2hhbmdlZCwgMzQ1IGluc2VydGlv bnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBhNmJhMjdlZjIwYWUuLmM4OTc0YTdk MmQzNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgogI2luY2x1ZGUg PGxpbnV4L3JlYm9vdC5oPgorI2luY2x1ZGUgPGxpbnV4L21laV9oZGNwLmg+CiAjaW5jbHVkZSA8 YXNtL2J5dGVvcmRlci5oPgogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+CkBAIC01MDg2LDYgKzUwODcsMjcgQEAgdm9pZCBpbnRlbF9kcF9l bmNvZGVyX3N1c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCiAJcHBz X3VubG9jayhpbnRlbF9kcCk7CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxfZHBfaGRjcF93YWl0X2Zv cl9jcF9pcnEoc3RydWN0IGludGVsX2hkY3AgKmhkY3AsCisJCQkJCSBpbnQgdGltZW91dCkKK3sK Kwlsb25nIHJldDsKKworCS8qIFJlaW5pdCAqLworCWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9y ZWN2ZWQsIDApOworCisjZGVmaW5lIEMgKGF0b21pY19yZWFkKCZoZGNwLT5jcF9pcnFfcmVjdmVk KSA+IDApCisJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRjcC0+Y3Bf aXJxX3F1ZXVlLCBDLAorCQkJCQkgICAgICAgbXNlY3NfdG9famlmZmllcyh0aW1lb3V0KSk7CisK KwlpZiAocmV0ID4gMCkgeworCQlhdG9taWNfc2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsK KwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmICghcmV0KSB7CisJCXJldHVybiAtRVRJTUVET1VUOwor CX0KKwlyZXR1cm4gKGludClyZXQ7Cit9CisKIHN0YXRpYwogaW50IGludGVsX2RwX2hkY3Bfd3Jp dGVfYW5fYWtzdihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKIAkJ CQl1OCAqYW4pCkBAIC01MzA0LDYgKzUzMjYsMzExIEBAIGludCBpbnRlbF9kcF9oZGNwX2NhcGFi bGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCiAJcmV0dXJuIDA7 CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgeworCXVpbnQ4X3QgbXNnX2lk OworCXVpbnQzMl90IG9mZnNldDsKKwlib29sIG1zZ19kZXRlY3RhYmxlOworCXVpbnQzMl90IHRp bWVvdXQ7CisJdWludDMyX3QgdGltZW91dDI7IC8qIEFkZGVkIGZvciBub25fcGFpcmVkIHNpdHVh dGlvbiAqLworCX0gaGRjcDJfbXNnX2RhdGFbXSA9IHsKKwkJe0hEQ1BfMl8yX0FLRV9JTklULCBE UF9IRENQXzJfMl9BS0VfSU5JVF9PRkZTRVQsIGZhbHNlLCAwLCAwfSwKKwkJe0hEQ1BfMl8yX0FL RV9TRU5EX0NFUlQsIERQX0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlRfT0ZGU0VULAorCQkJCWZhbHNl LCBIRENQXzJfMl9DRVJUX1RJTUVPVVQsIDB9LAorCQl7SERDUF8yXzJfQUtFX05PX1NUT1JFRF9L TSwgRFBfSERDUF8yXzJfQUtFX05PX1NUT1JFRF9LTV9PRkZTRVQsCisJCQkJZmFsc2UsIDAsIDB9 LAorCQl7SERDUF8yXzJfQUtFX1NUT1JFRF9LTSwgRFBfSERDUF8yXzJfQUtFX1NUT1JFRF9LTV9P RkZTRVQsCisJCQkJZmFsc2UsIDAsIDB9LAorCQl7SERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FLCBE UF9IRENQXzJfMl9BS0VfU0VORF9IUFJJTUVfT0ZGU0VULAorCQkJCXRydWUsIEhEQ1BfMl8yX0hQ UklNRV9QQUlSRURfVElNRU9VVCwKKwkJCQlIRENQXzJfMl9IUFJJTUVfTk9fUEFJUkVEX1RJTUVP VVR9LAorCQl7SERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19JTkZPLAorCQkJCURQX0hEQ1BfMl8y X0FLRV9TRU5EX1BBSVJJTkdfSU5GT19PRkZTRVQsIHRydWUsCisJCQkJSERDUF8yXzJfUEFJUklO R19USU1FT1VULCAwfSwKKwkJe0hEQ1BfMl8yX0xDX0lOSVQsIERQX0hEQ1BfMl8yX0xDX0lOSVRf T0ZGU0VULCBmYWxzZSwgMCwgMH0sCisJCXtIRENQXzJfMl9MQ19TRU5EX0xQUklNRSwgRFBfSERD UF8yXzJfTENfU0VORF9MUFJJTUVfT0ZGU0VULAorCQkJCWZhbHNlLCBIRENQXzJfMl9EUF9MUFJJ TUVfVElNRU9VVCwgMH0sCisJCXtIRENQXzJfMl9TS0VfU0VORF9FS1MsIERQX0hEQ1BfMl8yX1NL RV9TRU5EX0VLU19PRkZTRVQsIGZhbHNlLAorCQkJCTAsIDB9LAorCQl7SERDUF8yXzJfUkVQX1NF TkRfUkVDVklEX0xJU1QsCisJCQkJRFBfSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1RfT0ZG U0VULCB0cnVlLAorCQkJCUhEQ1BfMl8yX1JFQ1ZJRF9MSVNUX1RJTUVPVVQsIDB9LAorCQl7SERD UF8yXzJfUkVQX1NFTkRfQUNLLCBEUF9IRENQXzJfMl9SRVBfU0VORF9BQ0tfT0ZGU0VULCBmYWxz ZSwKKwkJCQkwLCAwfSwKKwkJe0hEQ1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdFLAorCQkJCURQX0hE Q1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdFX09GRlNFVCwgZmFsc2UsCisJCQkJMCwgMH0sCisJCXtI RENQXzJfMl9SRVBfU1RSRUFNX1JFQURZLCBEUF9IRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZX09G RlNFVCwKKwkJCQlmYWxzZSwgSERDUF8yXzJfU1RSRUFNX1JFQURZX1RJTUVPVVQsIDB9LAorCQl7 SERDUF8yXzJfRVJSQVRBX0RQX1NUUkVBTV9UWVBFLAorCQkJCURQX0hEQ1BfMl8yX1JFR19TVFJF QU1fVFlQRV9PRkZTRVQsIGZhbHNlLAorCQkJCTAsIDB9LAorCQl9OworCitzdGF0aWMgaW5saW5l CitpbnQgaW50ZWxfZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJICB1aW50OF90ICpyeF9zdGF0dXMpCit7CisJc3Np emVfdCByZXQ7CisKKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAu YXV4LAorCQkJICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWFNUQVRVU19PRkZTRVQsIHJ4X3N0YXR1 cywKKwkJCSAgICAgICBIRENQXzJfMl9EUF9SWFNUQVRVU19MRU4pOworCWlmIChyZXQgIT0gSERD UF8yXzJfRFBfUlhTVEFUVVNfTEVOKSB7CisJCURSTV9FUlJPUigiUmVhZCBic3RhdHVzIGZyb20g RFAvQVVYIGZhaWxlZCAoJXpkKVxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6 IHJldDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljCitpbnQgaGRjcDJfZGV0ZWN0X21z Z19hdmFpbGFiaWxpdHkoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs CisJCQkJICB1aW50OF90IG1zZ19pZCwgYm9vbCAqbXNnX3JlYWR5KQoreworCXVpbnQ4X3Qgcnhf c3RhdHVzOworCWludCByZXQ7CisKKwkqbXNnX3JlYWR5ID0gZmFsc2U7CisJcmV0ID0gaW50ZWxf ZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOworCWlm IChyZXQgPCAwKQorCQlyZXR1cm4gcmV0OworCisJc3dpdGNoIChtc2dfaWQpIHsKKwljYXNlIEhE Q1BfMl8yX0FLRV9TRU5EX0hQUklNRToKKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0hfUFJJ TUUocnhfc3RhdHVzKSkKKwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwljYXNlIEhE Q1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GTzoKKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVT X1BBSVJJTkcocnhfc3RhdHVzKSkKKwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwlj YXNlIEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUOgorCQlpZiAoSERDUF8yXzJfRFBfUlhT VEFUVVNfUkVBRFkocnhfc3RhdHVzKSkKKwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsK KwlkZWZhdWx0OgorCQlEUk1fREVCVUdfS01TKCJVbmlkZW50aWZpZWQgbXNnX2lkOiAlZFxuIiwg bXNnX2lkKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBzc2l6ZV90CitpbnRlbF9kcF9oZGNwMl93YWl0X2Zvcl9tc2coc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgc3RydWN0IGhkY3AyX2RwX21zZ19kYXRh ICpoZGNwMl9tc2dfZGF0YSkKK3sKKwlzdHJ1Y3QgaW50ZWxfZHAgKmRwID0gJmludGVsX2RpZ19w b3J0LT5kcDsKKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZkcC0+YXR0YWNoZWRfY29ubmVj dG9yLT5oZGNwOworCWludCByZXQsIHRpbWVvdXQ7CisJYm9vbCBtc2dfcmVhZHkgPSBmYWxzZTsK KworCWlmIChoZGNwMl9tc2dfZGF0YS0+bXNnX2lkID09IEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklN RSAmJgorCSAgICAhaGRjcC0+aXNfcGFpcmVkKQorCQl0aW1lb3V0ID0gaGRjcDJfbXNnX2RhdGEt PnRpbWVvdXQyOworCWVsc2UKKwkJdGltZW91dCA9IGhkY3AyX21zZ19kYXRhLT50aW1lb3V0Owor CisJLyoKKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoZSBDRVJULCBMUFJJTUUgYW5k IFNUUkVBTV9SRUFEWQorCSAqIGF2YWlsYWJpbGl0eS4gU28gV2FpdCBmb3IgdGltZW91dCBhbmQg cmVhZCB0aGUgbXNnLgorCSAqLworCWlmICghaGRjcDJfbXNnX2RhdGEtPm1zZ19kZXRlY3RhYmxl KSB7CisJCW1kZWxheSh0aW1lb3V0KTsKKwkJcmV0ID0gMDsKKwl9IGVsc2UgeworCQlpbnRlbF9k cF9oZGNwX3dhaXRfZm9yX2NwX2lycShoZGNwLCB0aW1lb3V0KTsKKwkJcmV0ID0gaGRjcDJfZGV0 ZWN0X21zZ19hdmFpbGFiaWxpdHkoaW50ZWxfZGlnX3BvcnQsCisJCQkJCQkgICAgaGRjcDJfbXNn X2RhdGEtPm1zZ19pZCwKKwkJCQkJCSAgICAmbXNnX3JlYWR5KTsKKwkJaWYgKCFtc2dfcmVhZHkp CisJCQlyZXQgPSAtRVRJTUVET1VUOworCX0KKworCWlmIChyZXQpCisJCURSTV9FUlJPUigibXNn X2lkICVkLCByZXQgJWQsIHRpbWVvdXQobVNlYyk6ICVkXG4iLAorCQkJICBoZGNwMl9tc2dfZGF0 YS0+bXNnX2lkLCByZXQsIHRpbWVvdXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0 cnVjdCBoZGNwMl9kcF9tc2dfZGF0YSAqZ2V0X2hkY3AyX2RwX21zZ19kYXRhKHVpbnQ4X3QgbXNn X2lkKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHNpemVvZihoZGNwMl9tc2dfZGF0 YSk7IGkrKykKKwkJaWYgKGhkY3AyX21zZ19kYXRhW2ldLm1zZ19pZCA9PSBtc2dfaWQpCisJCQly ZXR1cm4gJmhkY3AyX21zZ19kYXRhW2ldOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYwor aW50IGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwKKwkJCSAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwl1bnNp Z25lZCBpbnQgb2Zmc2V0OworCXVpbnQ4X3QgKmJ5dGUgPSBidWY7CisJc3NpemVfdCByZXQsIGJ5 dGVzX3RvX3dyaXRlLCBsZW47CisJc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9tc2df ZGF0YTsKKworCWhkY3AyX21zZ19kYXRhID0gZ2V0X2hkY3AyX2RwX21zZ19kYXRhKCpieXRlKTsK KwlpZiAoIWhkY3AyX21zZ19kYXRhKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE5vIG1zZ19p ZCBpbiBEUCBIRENQMi4yIG1zZ3MgKi8KKwlieXRlc190b193cml0ZSA9IHNpemUgLSAxOworCWJ5 dGUrKzsKKworCXdoaWxlIChieXRlc190b193cml0ZSkgeworCQlsZW4gPSBieXRlc190b193cml0 ZSA+IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA/CisJCQkJRFBfQVVYX01BWF9QQVlMT0FEX0JZ VEVTIDogYnl0ZXNfdG9fd3JpdGU7CisKKwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVs X2RpZ19wb3J0LT5kcC5hdXgsCisJCQkJCWhkY3AyX21zZ19kYXRhLT5vZmZzZXQsCisJCQkJCSh2 b2lkICopYnl0ZSwgbGVuKTsKKwkJaWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCWJ5 dGVzX3RvX3dyaXRlIC09IHJldDsKKwkJYnl0ZSArPSByZXQ7CisJCW9mZnNldCArPSByZXQ7CisJ fQorCisJcmV0dXJuIHNpemU7Cit9CisKK3N0YXRpYworc3NpemVfdCBnZXRfcmVjZWl2ZXJfaWRf bGlzdF9zaXplKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQorewor CXVpbnQ4X3QgcnhfaW5mb1tIRENQXzJfMl9SWElORk9fTEVOXTsKKwl1aW50MzJfdCBkZXZfY250 OworCXNzaXplX3QgcmV0OworCisJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3Bv cnQtPmRwLmF1eCwKKwkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhJTkZPX09GRlNFVCwKKwkJ CSAgICAgICAodm9pZCAqKXJ4X2luZm8sIEhEQ1BfMl8yX1JYSU5GT19MRU4pOworCWlmIChyZXQg IT0gSERDUF8yXzJfUlhJTkZPX0xFTikKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsK KworCWRldl9jbnQgPSAoSERDUF8yXzJfREVWX0NPVU5UX0hJKHJ4X2luZm9bMF0pIDw8IDQgfAor CQkgICBIRENQXzJfMl9ERVZfQ09VTlRfTE8ocnhfaW5mb1sxXSkpOworCisJaWYgKGRldl9jbnQg PiBIRENQXzJfMl9NQVhfREVWSUNFX0NPVU5UKQorCQlkZXZfY250ID0gSERDUF8yXzJfTUFYX0RF VklDRV9DT1VOVDsKKworCXJldCA9IHNpemVvZihzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfcmVjZWl2 ZXJpZF9saXN0KSAtCisJCUhEQ1BfMl8yX1JFQ0VJVkVSX0lEU19NQVhfTEVOICsKKwkJKGRldl9j bnQgKiBIRENQXzJfMl9SRUNFSVZFUl9JRF9MRU4pOworCisJcmV0dXJuIHJldDsKK30KKworc3Rh dGljCitpbnQgaW50ZWxfZHBfaGRjcDJfcmVhZF9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9y dCAqaW50ZWxfZGlnX3BvcnQsCisJCQkgICAgdWludDhfdCBtc2dfaWQsIHZvaWQgKmJ1Ziwgc2l6 ZV90IHNpemUpCit7CisJdW5zaWduZWQgaW50IG9mZnNldDsKKwl1aW50OF90ICpieXRlID0gYnVm OworCXNzaXplX3QgcmV0LCBieXRlc190b19yZWN2LCBsZW47CisJc3RydWN0IGhkY3AyX2RwX21z Z19kYXRhICpoZGNwMl9tc2dfZGF0YTsKKworCWhkY3AyX21zZ19kYXRhID0gZ2V0X2hkY3AyX2Rw X21zZ19kYXRhKCpieXRlKTsKKwlpZiAoIWhkY3AyX21zZ19kYXRhKQorCQlyZXR1cm4gLUVJTlZB TDsKKwlvZmZzZXQgPSBoZGNwMl9tc2dfZGF0YS0+b2Zmc2V0OworCisJcmV0ID0gaW50ZWxfZHBf aGRjcDJfd2FpdF9mb3JfbXNnKGludGVsX2RpZ19wb3J0LCBoZGNwMl9tc2dfZGF0YSk7CisJaWYg KHJldCA8IDApCisJCXJldHVybiByZXQ7CisKKwlpZiAobXNnX2lkID09IEhEQ1BfMl8yX1JFUF9T RU5EX1JFQ1ZJRF9MSVNUKSB7CisJCXJldCA9IGdldF9yZWNlaXZlcl9pZF9saXN0X3NpemUoaW50 ZWxfZGlnX3BvcnQpOworCQlpZiAocmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisKKwkJc2l6ZSA9 IHJldDsKKwl9CisJYnl0ZXNfdG9fcmVjdiA9IHNpemUgLSAxOworCisJLyogRFAgYWRhcHRhdGlv biBtc2dzIGhhcyBubyBtc2dfaWQgKi8KKwlieXRlKys7CisKKwl3aGlsZSAoYnl0ZXNfdG9fcmVj dikgeworCQlsZW4gPSBieXRlc190b19yZWN2ID4gRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8K KwkJICAgICAgRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTIDogYnl0ZXNfdG9fcmVjdjsKKworCQly ZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LCBvZmZzZXQsCisJ CQkJICAgICAgICh2b2lkICopYnl0ZSwgbGVuKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCURSTV9E RUJVR19LTVMoIm1zZ19pZCAlZCwgcmV0ICV6ZFxuIiwgbXNnX2lkLCByZXQpOworCQkJcmV0dXJu IHJldDsKKwkJfQorCisJCWJ5dGVzX3RvX3JlY3YgLT0gcmV0OworCQlieXRlICs9IHJldDsKKwkJ b2Zmc2V0ICs9IHJldDsKKwl9CisJYnl0ZSA9IGJ1ZjsKKwkqYnl0ZSA9IG1zZ19pZDsKKworCXJl dHVybiBzaXplOworfQorCitzdGF0aWMKK2ludCBpbnRlbF9kcF9oZGNwMl9jb25maWdfc3RyZWFt X3R5cGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJICAg ICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwlyZXR1cm4gaW50ZWxfZHBfaGRjcDJfd3Jp dGVfbXNnKGludGVsX2RpZ19wb3J0LCBidWYsIHNpemUpOworfQorCitzdGF0aWMKK2ludCBpbnRl bF9kcF9oZGNwMl9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0KQoreworCXVpbnQ4X3Qgcnhfc3RhdHVzOworCWludCByZXQ7CisKKwlyZXQgPSBpbnRl bF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdfcG9ydCwgJnJ4X3N0YXR1cyk7CisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFV VEhfUkVRKHJ4X3N0YXR1cykpCisJCXJldCA9IERSTV9IRENQX1JFQVVUSF9SRVFVRVNUOworCWVs c2UgaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xJTktfRkFJTEVEKHJ4X3N0YXR1cykpCisJCXJl dCA9IERSTV9IRENQX0xJTktfSU5URUdSSVRZX0ZBSUxVUkU7CisJZWxzZSBpZiAoSERDUF8yXzJf RFBfUlhTVEFUVVNfUkVBRFkocnhfc3RhdHVzKSkKKwkJcmV0ID0gRFJNX0hEQ1BfVE9QT0xPR1lf Q0hBTkdFOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRjcDJf Y2FwYWJsZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAg IGJvb2wgKmNhcGFibGUpCit7CisJdWludDhfdCByeF9jYXBzWzNdOworCWludCByZXQ7CisKKwkq Y2FwYWJsZSA9IGZhbHNlOworCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0 LT5kcC5hdXgsCisJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAorCQkJ ICAgICAgIHJ4X2NhcHMsIEhEQ1BfMl8yX1JYQ0FQU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8y XzJfUlhDQVBTX0xFTikKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKworCWlmIChy eF9jYXBzWzBdID09IEhEQ1BfMl8yX1JYQ0FQU19WRVJTSU9OX1ZBTCAmJgorCSAgICBIRENQXzJf Ml9EUF9IRENQX0NBUEFCTEUocnhfY2Fwc1syXSkpCisJCSpjYXBhYmxlID0gdHJ1ZTsKKworCXJl dHVybiAwOworfQorCitzdGF0aWMKK2VudW0gaGRjcF9wcm90b2NvbCBpbnRlbF9kcF9oZGNwMl9w cm90b2NvbCh2b2lkKQoreworCXJldHVybiBIRENQX1BST1RPQ09MX0RQOworfQorCiBzdGF0aWMg Y29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7CiAJLndy aXRlX2FuX2Frc3YgPSBpbnRlbF9kcF9oZGNwX3dyaXRlX2FuX2Frc3YsCiAJLnJlYWRfYmtzdiA9 IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2LApAQCAtNTMxNiw2ICs1NjQzLDEyIEBAIHN0YXRpYyBj b25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2RwX2hkY3Bfc2hpbSA9IHsKIAkudG9n Z2xlX3NpZ25hbGxpbmcgPSBpbnRlbF9kcF9oZGNwX3RvZ2dsZV9zaWduYWxsaW5nLAogCS5jaGVj a19saW5rID0gaW50ZWxfZHBfaGRjcF9jaGVja19saW5rLAogCS5oZGNwX2NhcGFibGUgPSBpbnRl bF9kcF9oZGNwX2NhcGFibGUsCisJLndyaXRlXzJfMl9tc2cgPSBpbnRlbF9kcF9oZGNwMl93cml0 ZV9tc2csCisJLnJlYWRfMl8yX21zZyA9IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnLAorCS5jb25m aWdfc3RyZWFtX3R5cGUgPSBpbnRlbF9kcF9oZGNwMl9jb25maWdfc3RyZWFtX3R5cGUsCisJLmNo ZWNrXzJfMl9saW5rID0gaW50ZWxfZHBfaGRjcDJfY2hlY2tfbGluaywKKwkuaGRjcF8yXzJfY2Fw YWJsZSA9IGludGVsX2RwX2hkY3AyX2NhcGFibGUsCisJLmhkY3BfcHJvdG9jb2wgPSBpbnRlbF9k cF9oZGNwMl9wcm90b2NvbCwKIH07CiAKIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wYW5lbF92ZGRf c2FuaXRpemUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKaW5kZXggODc1NjU3ZmQ3ZDNjLi4wNzRkYzViNTM0ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCkBAIC00NDQsNiArNDQ0LDEzIEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAkvKiBtZWkg aW50ZXJmYWNlIHJlbGF0ZWQgaW5mb3JtYXRpb24gKi8KIAlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSBt ZWlfZGF0YTsKIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGhkY3AyX2NoZWNrX3dvcms7CisKKwkvKgor CSAqIFdvcmsgcXVldWUgdG8gc2lnbmFsIHRoZSBDUF9JUlEuIFVzZWQgZm9yIHRoZSB3YWl0ZXJz IHRvIHJlYWQgdGhlCisJICogYXZhaWxhYmxlIGluZm9ybWF0aW9uIGZyb20gSERDUCBEUCBzaW5r LgorCSAqLworCXdhaXRfcXVldWVfaGVhZF90IGNwX2lycV9xdWV1ZTsKKwlhdG9taWNfdCBjcF9p cnFfcmVjdmVkOwogfTsKIAogc3RydWN0IGludGVsX2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZGNwLmMKaW5kZXggYjAzNTI3NDc4NWM4Li5lZGM0MTNlY2YxN2YgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMKQEAgLTg3MCw2ICs4NzAsOCBAQCBpbnQgaW50ZWxfaGRjcF9pbml0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlpZiAoaGRjcDJfc3VwcG9ydGVk KQogCQlpbnRlbF9oZGNwMl9pbml0KGNvbm5lY3Rvcik7CiAKKwlpbml0X3dhaXRxdWV1ZV9oZWFk KCZoZGNwLT5jcF9pcnFfcXVldWUpOworCWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQs IDApOwogCXJldHVybiAwOwogfQogCkBAIC0yMDM5LDQgKzIwNDEsNyBAQCB2b2lkIGludGVsX2hk Y3BfaGFuZGxlX2NwX2lycShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCWlu dGVsX2hkY3BfY2hlY2tfbGluayhjb25uZWN0b3IpOwogCWVsc2UgaWYgKGludGVsX2hkY3AyX2lu X2ZvcmNlKGNvbm5lY3RvcikpCiAJCWludGVsX2hkY3AyX2NoZWNrX2xpbmsoY29ubmVjdG9yKTsK KworCWF0b21pY19zZXQoJmNvbm5lY3Rvci0+aGRjcC5jcF9pcnFfcmVjdmVkLCAxKTsKKwl3YWtl X3VwX2FsbCgmY29ubmVjdG9yLT5oZGNwLmNwX2lycV9xdWV1ZSk7CiB9Ci0tIAoyLjcuNAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==