From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: [PATCH v6 18/35] drm/i915: Implement the HDCP2.2 support for DP Date: Sat, 14 Jul 2018 08:45:00 +0530 Message-ID: <1531538117-1606-19-git-send-email-ramalingam.c@intel.com> References: <1531538117-1606-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: <1531538117-1606-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, daniel@ffwll.ch, seanpaul@chromium.org, 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 bF0uCiAgRXh0cmEgbGluZXMgYXJlIHJlbW92ZWQuCnY2OgogIFJlYmFzZWQuCgpTaWduZWQtb2Zm LWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgIHwgMzMzICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAgIDcgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIHwgICA1ICsKIDMgZmlsZXMgY2hhbmdl ZCwgMzQ1IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCA2ZGNiMDk0 MzBmYjUuLmEwMGM0Y2ExOTViZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0zMSw2ICsz MSw3IEBACiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxsaW51eC9ub3RpZmll ci5oPgogI2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgorI2luY2x1ZGUgPGxpbnV4L21laV9oZGNw Lmg+CiAjaW5jbHVkZSA8YXNtL2J5dGVvcmRlci5oPgogI2luY2x1ZGUgPGRybS9kcm1QLmg+CiAj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+CkBAIC01MDg4LDYgKzUwODksMjcgQEAg dm9pZCBpbnRlbF9kcF9lbmNvZGVyX3N1c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVs X2VuY29kZXIpCiAJcHBzX3VubG9jayhpbnRlbF9kcCk7CiB9CiAKK3N0YXRpYyBpbnQgaW50ZWxf ZHBfaGRjcF93YWl0X2Zvcl9jcF9pcnEoc3RydWN0IGludGVsX2hkY3AgKmhkY3AsCisJCQkJCSBp bnQgdGltZW91dCkKK3sKKwlsb25nIHJldDsKKworCS8qIFJlaW5pdCAqLworCWF0b21pY19zZXQo JmhkY3AtPmNwX2lycV9yZWN2ZWQsIDApOworCisjZGVmaW5lIEMgKGF0b21pY19yZWFkKCZoZGNw LT5jcF9pcnFfcmVjdmVkKSA+IDApCisJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3Rp bWVvdXQoaGRjcC0+Y3BfaXJxX3F1ZXVlLCBDLAorCQkJCQkgICAgICAgbXNlY3NfdG9famlmZmll cyh0aW1lb3V0KSk7CisKKwlpZiAocmV0ID4gMCkgeworCQlhdG9taWNfc2V0KCZoZGNwLT5jcF9p cnFfcmVjdmVkLCAwKTsKKwkJcmV0dXJuIDA7CisJfSBlbHNlIGlmICghcmV0KSB7CisJCXJldHVy biAtRVRJTUVET1VUOworCX0KKwlyZXR1cm4gKGludClyZXQ7Cit9CisKIHN0YXRpYwogaW50IGlu dGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKIAkJCQl1OCAqYW4pCkBAIC01MzA2LDYgKzUzMjgsMzExIEBAIGludCBpbnRl bF9kcF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgewor CXVpbnQ4X3QgbXNnX2lkOworCXVpbnQzMl90IG9mZnNldDsKKwlib29sIG1zZ19kZXRlY3RhYmxl OworCXVpbnQzMl90IHRpbWVvdXQ7CisJdWludDMyX3QgdGltZW91dDI7IC8qIEFkZGVkIGZvciBu b25fcGFpcmVkIHNpdHVhdGlvbiAqLworCX0gaGRjcDJfbXNnX2RhdGFbXSA9IHsKKwkJe0hEQ1Bf Ml8yX0FLRV9JTklULCBEUF9IRENQXzJfMl9BS0VfSU5JVF9PRkZTRVQsIGZhbHNlLCAwLCAwfSwK KwkJe0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlQsIERQX0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlRfT0ZG U0VULAorCQkJCWZhbHNlLCBIRENQXzJfMl9DRVJUX1RJTUVPVVRfTVMsIDB9LAorCQl7SERDUF8y XzJfQUtFX05PX1NUT1JFRF9LTSwgRFBfSERDUF8yXzJfQUtFX05PX1NUT1JFRF9LTV9PRkZTRVQs CisJCQkJZmFsc2UsIDAsIDB9LAorCQl7SERDUF8yXzJfQUtFX1NUT1JFRF9LTSwgRFBfSERDUF8y XzJfQUtFX1NUT1JFRF9LTV9PRkZTRVQsCisJCQkJZmFsc2UsIDAsIDB9LAorCQl7SERDUF8yXzJf QUtFX1NFTkRfSFBSSU1FLCBEUF9IRENQXzJfMl9BS0VfU0VORF9IUFJJTUVfT0ZGU0VULAorCQkJ CXRydWUsIEhEQ1BfMl8yX0hQUklNRV9QQUlSRURfVElNRU9VVF9NUywKKwkJCQlIRENQXzJfMl9I UFJJTUVfTk9fUEFJUkVEX1RJTUVPVVRfTVN9LAorCQl7SERDUF8yXzJfQUtFX1NFTkRfUEFJUklO R19JTkZPLAorCQkJCURQX0hEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GT19PRkZTRVQsIHRy dWUsCisJCQkJSERDUF8yXzJfUEFJUklOR19USU1FT1VUX01TLCAwfSwKKwkJe0hEQ1BfMl8yX0xD X0lOSVQsIERQX0hEQ1BfMl8yX0xDX0lOSVRfT0ZGU0VULCBmYWxzZSwgMCwgMH0sCisJCXtIRENQ XzJfMl9MQ19TRU5EX0xQUklNRSwgRFBfSERDUF8yXzJfTENfU0VORF9MUFJJTUVfT0ZGU0VULAor CQkJCWZhbHNlLCBIRENQXzJfMl9EUF9MUFJJTUVfVElNRU9VVF9NUywgMH0sCisJCXtIRENQXzJf Ml9TS0VfU0VORF9FS1MsIERQX0hEQ1BfMl8yX1NLRV9TRU5EX0VLU19PRkZTRVQsIGZhbHNlLAor CQkJCTAsIDB9LAorCQl7SERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1QsCisJCQkJRFBfSERD UF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1RfT0ZGU0VULCB0cnVlLAorCQkJCUhEQ1BfMl8yX1JF Q1ZJRF9MSVNUX1RJTUVPVVRfTVMsIDB9LAorCQl7SERDUF8yXzJfUkVQX1NFTkRfQUNLLCBEUF9I RENQXzJfMl9SRVBfU0VORF9BQ0tfT0ZGU0VULCBmYWxzZSwKKwkJCQkwLCAwfSwKKwkJe0hEQ1Bf Ml8yX1JFUF9TVFJFQU1fTUFOQUdFLAorCQkJCURQX0hEQ1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdF X09GRlNFVCwgZmFsc2UsCisJCQkJMCwgMH0sCisJCXtIRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZ LCBEUF9IRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZX09GRlNFVCwKKwkJCQlmYWxzZSwgSERDUF8y XzJfU1RSRUFNX1JFQURZX1RJTUVPVVRfTVMsIDB9LAorCQl7SERDUF8yXzJfRVJSQVRBX0RQX1NU UkVBTV9UWVBFLAorCQkJCURQX0hEQ1BfMl8yX1JFR19TVFJFQU1fVFlQRV9PRkZTRVQsIGZhbHNl LAorCQkJCTAsIDB9LAorCQl9OworCitzdGF0aWMgaW5saW5lCitpbnQgaW50ZWxfZHBfaGRjcDJf cmVhZF9yeF9zdGF0dXMoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs CisJCQkJICB1aW50OF90ICpyeF9zdGF0dXMpCit7CisJc3NpemVfdCByZXQ7CisKKwlyZXQgPSBk cm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAorCQkJICAgICAgIERQX0hE Q1BfMl8yX1JFR19SWFNUQVRVU19PRkZTRVQsIHJ4X3N0YXR1cywKKwkJCSAgICAgICBIRENQXzJf Ml9EUF9SWFNUQVRVU19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfRFBfUlhTVEFUVVNfTEVO KSB7CisJCURSTV9FUlJPUigiUmVhZCBic3RhdHVzIGZyb20gRFAvQVVYIGZhaWxlZCAoJXpkKVxu IiwgcmV0KTsKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKwl9CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljCitpbnQgaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJCQkJICB1aW50OF90IG1zZ19p ZCwgYm9vbCAqbXNnX3JlYWR5KQoreworCXVpbnQ4X3Qgcnhfc3RhdHVzOworCWludCByZXQ7CisK KwkqbXNnX3JlYWR5ID0gZmFsc2U7CisJcmV0ID0gaW50ZWxfZHBfaGRjcDJfcmVhZF9yeF9zdGF0 dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOworCWlmIChyZXQgPCAwKQorCQlyZXR1cm4g cmV0OworCisJc3dpdGNoIChtc2dfaWQpIHsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklN RToKKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0hfUFJJTUUocnhfc3RhdHVzKSkKKwkJCSpt c2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX1BBSVJJ TkdfSU5GTzoKKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1BBSVJJTkcocnhfc3RhdHVzKSkK KwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwljYXNlIEhEQ1BfMl8yX1JFUF9TRU5E X1JFQ1ZJRF9MSVNUOgorCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBRFkocnhfc3RhdHVz KSkKKwkJCSptc2dfcmVhZHkgPSB0cnVlOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlEUk1fREVC VUdfS01TKCJVbmlkZW50aWZpZWQgbXNnX2lkOiAlZFxuIiwgbXNnX2lkKTsKKwkJcmV0dXJuIC1F SU5WQUw7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBzc2l6ZV90CitpbnRlbF9kcF9o ZGNwMl93YWl0X2Zvcl9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3Bv cnQsCisJCQkgICAgc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9tc2dfZGF0YSkKK3sK KwlzdHJ1Y3QgaW50ZWxfZHAgKmRwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKKwlzdHJ1Y3QgaW50 ZWxfaGRjcCAqaGRjcCA9ICZkcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5oZGNwOworCWludCByZXQs IHRpbWVvdXQ7CisJYm9vbCBtc2dfcmVhZHkgPSBmYWxzZTsKKworCWlmIChoZGNwMl9tc2dfZGF0 YS0+bXNnX2lkID09IEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRSAmJgorCSAgICAhaGRjcC0+aXNf cGFpcmVkKQorCQl0aW1lb3V0ID0gaGRjcDJfbXNnX2RhdGEtPnRpbWVvdXQyOworCWVsc2UKKwkJ dGltZW91dCA9IGhkY3AyX21zZ19kYXRhLT50aW1lb3V0OworCisJLyoKKwkgKiBUaGVyZSBpcyBu byB3YXkgdG8gZGV0ZWN0IHRoZSBDRVJULCBMUFJJTUUgYW5kIFNUUkVBTV9SRUFEWQorCSAqIGF2 YWlsYWJpbGl0eS4gU28gV2FpdCBmb3IgdGltZW91dCBhbmQgcmVhZCB0aGUgbXNnLgorCSAqLwor CWlmICghaGRjcDJfbXNnX2RhdGEtPm1zZ19kZXRlY3RhYmxlKSB7CisJCW1kZWxheSh0aW1lb3V0 KTsKKwkJcmV0ID0gMDsKKwl9IGVsc2UgeworCQlpbnRlbF9kcF9oZGNwX3dhaXRfZm9yX2NwX2ly cShoZGNwLCB0aW1lb3V0KTsKKwkJcmV0ID0gaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHko aW50ZWxfZGlnX3BvcnQsCisJCQkJCQkgICAgaGRjcDJfbXNnX2RhdGEtPm1zZ19pZCwKKwkJCQkJ CSAgICAmbXNnX3JlYWR5KTsKKwkJaWYgKCFtc2dfcmVhZHkpCisJCQlyZXQgPSAtRVRJTUVET1VU OworCX0KKworCWlmIChyZXQpCisJCURSTV9FUlJPUigibXNnX2lkICVkLCByZXQgJWQsIHRpbWVv dXQobVNlYyk6ICVkXG4iLAorCQkJICBoZGNwMl9tc2dfZGF0YS0+bXNnX2lkLCByZXQsIHRpbWVv dXQpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHN0cnVjdCBoZGNwMl9kcF9tc2dfZGF0 YSAqZ2V0X2hkY3AyX2RwX21zZ19kYXRhKHVpbnQ4X3QgbXNnX2lkKQoreworCWludCBpOworCisJ Zm9yIChpID0gMDsgaSA8IHNpemVvZihoZGNwMl9tc2dfZGF0YSk7IGkrKykKKwkJaWYgKGhkY3Ay X21zZ19kYXRhW2ldLm1zZ19pZCA9PSBtc2dfaWQpCisJCQlyZXR1cm4gJmhkY3AyX21zZ19kYXRh W2ldOworCisJcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYworaW50IGludGVsX2RwX2hkY3AyX3dy aXRlX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKKwkJCSAg ICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKK3sKKwl1bnNpZ25lZCBpbnQgb2Zmc2V0OworCXVp bnQ4X3QgKmJ5dGUgPSBidWY7CisJc3NpemVfdCByZXQsIGJ5dGVzX3RvX3dyaXRlLCBsZW47CisJ c3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9tc2dfZGF0YTsKKworCWhkY3AyX21zZ19k YXRhID0gZ2V0X2hkY3AyX2RwX21zZ19kYXRhKCpieXRlKTsKKwlpZiAoIWhkY3AyX21zZ19kYXRh KQorCQlyZXR1cm4gLUVJTlZBTDsKKworCS8qIE5vIG1zZ19pZCBpbiBEUCBIRENQMi4yIG1zZ3Mg Ki8KKwlieXRlc190b193cml0ZSA9IHNpemUgLSAxOworCWJ5dGUrKzsKKworCXdoaWxlIChieXRl c190b193cml0ZSkgeworCQlsZW4gPSBieXRlc190b193cml0ZSA+IERQX0FVWF9NQVhfUEFZTE9B RF9CWVRFUyA/CisJCQkJRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTIDogYnl0ZXNfdG9fd3JpdGU7 CisKKwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCisJ CQkJCWhkY3AyX21zZ19kYXRhLT5vZmZzZXQsCisJCQkJCSh2b2lkICopYnl0ZSwgbGVuKTsKKwkJ aWYgKHJldCA8IDApCisJCQlyZXR1cm4gcmV0OworCisJCWJ5dGVzX3RvX3dyaXRlIC09IHJldDsK KwkJYnl0ZSArPSByZXQ7CisJCW9mZnNldCArPSByZXQ7CisJfQorCisJcmV0dXJuIHNpemU7Cit9 CisKK3N0YXRpYworc3NpemVfdCBnZXRfcmVjZWl2ZXJfaWRfbGlzdF9zaXplKHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQoreworCXVpbnQ4X3QgcnhfaW5mb1tIRENQ XzJfMl9SWElORk9fTEVOXTsKKwl1aW50MzJfdCBkZXZfY250OworCXNzaXplX3QgcmV0OworCisJ cmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwKKwkJCSAgICAg ICBEUF9IRENQXzJfMl9SRUdfUlhJTkZPX09GRlNFVCwKKwkJCSAgICAgICAodm9pZCAqKXJ4X2lu Zm8sIEhEQ1BfMl8yX1JYSU5GT19MRU4pOworCWlmIChyZXQgIT0gSERDUF8yXzJfUlhJTkZPX0xF TikKKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKKworCWRldl9jbnQgPSAoSERDUF8y XzJfREVWX0NPVU5UX0hJKHJ4X2luZm9bMF0pIDw8IDQgfAorCQkgICBIRENQXzJfMl9ERVZfQ09V TlRfTE8ocnhfaW5mb1sxXSkpOworCisJaWYgKGRldl9jbnQgPiBIRENQXzJfMl9NQVhfREVWSUNF X0NPVU5UKQorCQlkZXZfY250ID0gSERDUF8yXzJfTUFYX0RFVklDRV9DT1VOVDsKKworCXJldCA9 IHNpemVvZihzdHJ1Y3QgaGRjcDJfcmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0KSAtCisJCUhEQ1Bf Ml8yX1JFQ0VJVkVSX0lEU19NQVhfTEVOICsKKwkJKGRldl9jbnQgKiBIRENQXzJfMl9SRUNFSVZF Ul9JRF9MRU4pOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljCitpbnQgaW50ZWxfZHBfaGRj cDJfcmVhZF9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCisJ CQkgICAgdWludDhfdCBtc2dfaWQsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCit7CisJdW5zaWdu ZWQgaW50IG9mZnNldDsKKwl1aW50OF90ICpieXRlID0gYnVmOworCXNzaXplX3QgcmV0LCBieXRl c190b19yZWN2LCBsZW47CisJc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9tc2dfZGF0 YTsKKworCWhkY3AyX21zZ19kYXRhID0gZ2V0X2hkY3AyX2RwX21zZ19kYXRhKCpieXRlKTsKKwlp ZiAoIWhkY3AyX21zZ19kYXRhKQorCQlyZXR1cm4gLUVJTlZBTDsKKwlvZmZzZXQgPSBoZGNwMl9t c2dfZGF0YS0+b2Zmc2V0OworCisJcmV0ID0gaW50ZWxfZHBfaGRjcDJfd2FpdF9mb3JfbXNnKGlu dGVsX2RpZ19wb3J0LCBoZGNwMl9tc2dfZGF0YSk7CisJaWYgKHJldCA8IDApCisJCXJldHVybiBy ZXQ7CisKKwlpZiAobXNnX2lkID09IEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUKSB7CisJ CXJldCA9IGdldF9yZWNlaXZlcl9pZF9saXN0X3NpemUoaW50ZWxfZGlnX3BvcnQpOworCQlpZiAo cmV0IDwgMCkKKwkJCXJldHVybiByZXQ7CisKKwkJc2l6ZSA9IHJldDsKKwl9CisJYnl0ZXNfdG9f cmVjdiA9IHNpemUgLSAxOworCisJLyogRFAgYWRhcHRhdGlvbiBtc2dzIGhhcyBubyBtc2dfaWQg Ki8KKwlieXRlKys7CisKKwl3aGlsZSAoYnl0ZXNfdG9fcmVjdikgeworCQlsZW4gPSBieXRlc190 b19yZWN2ID4gRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8KKwkJICAgICAgRFBfQVVYX01BWF9Q QVlMT0FEX0JZVEVTIDogYnl0ZXNfdG9fcmVjdjsKKworCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFk KCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LCBvZmZzZXQsCisJCQkJICAgICAgICh2b2lkICopYnl0 ZSwgbGVuKTsKKwkJaWYgKHJldCA8IDApIHsKKwkJCURSTV9ERUJVR19LTVMoIm1zZ19pZCAlZCwg cmV0ICV6ZFxuIiwgbXNnX2lkLCByZXQpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCisJCWJ5dGVz 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 a3N2LApAQCAtNTMxOCw2ICs1NjQ1LDEyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRj cF9zaGltIGludGVsX2RwX2hkY3Bfc2hpbSA9IHsKIAkudG9nZ2xlX3NpZ25hbGxpbmcgPSBpbnRl bF9kcF9oZGNwX3RvZ2dsZV9zaWduYWxsaW5nLAogCS5jaGVja19saW5rID0gaW50ZWxfZHBfaGRj cF9jaGVja19saW5rLAogCS5oZGNwX2NhcGFibGUgPSBpbnRlbF9kcF9oZGNwX2NhcGFibGUsCisJ LndyaXRlXzJfMl9tc2cgPSBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2csCisJLnJlYWRfMl8yX21z ZyA9IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnLAorCS5jb25maWdfc3RyZWFtX3R5cGUgPSBpbnRl bF9kcF9oZGNwMl9jb25maWdfc3RyZWFtX3R5cGUsCisJLmNoZWNrXzJfMl9saW5rID0gaW50ZWxf ZHBfaGRjcDJfY2hlY2tfbGluaywKKwkuaGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hkY3Ay X2NhcGFibGUsCisJLmhkY3BfcHJvdG9jb2wgPSBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCwKIH07 CiAKIHN0YXRpYyB2b2lkIGludGVsX2VkcF9wYW5lbF92ZGRfc2FuaXRpemUoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggODJjZGE5YTVhYWUz Li43YWUzNWQ3MWI5YzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC00NDcsNiArNDQ3 LDEzIEBAIHN0cnVjdCBpbnRlbF9oZGNwIHsKIAl1aW50MzJfdCBzZXFfbnVtX207CiAKIAlzdHJ1 Y3QgZGVsYXllZF93b3JrIGhkY3AyX2NoZWNrX3dvcms7CisKKwkvKgorCSAqIFdvcmsgcXVldWUg dG8gc2lnbmFsIHRoZSBDUF9JUlEuIFVzZWQgZm9yIHRoZSB3YWl0ZXJzIHRvIHJlYWQgdGhlCisJ ICogYXZhaWxhYmxlIGluZm9ybWF0aW9uIGZyb20gSERDUCBEUCBzaW5rLgorCSAqLworCXdhaXRf cXVldWVfaGVhZF90IGNwX2lycV9xdWV1ZTsKKwlhdG9taWNfdCBjcF9pcnFfcmVjdmVkOwogfTsK IAogc3RydWN0IGludGVsX2Nvbm5lY3RvciB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKaW5k ZXggNjZkNDcyNDAzMzZmLi4wYjYwNDM4M2Q1NTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2hkY3AuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMKQEAgLTg1MSw2ICs4NTEsOCBAQCBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwKIAlpZiAoaGRjcDJfc3VwcG9ydGVkKQogCQlpbnRlbF9oZGNw Ml9pbml0KGNvbm5lY3Rvcik7CiAKKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZoZGNwLT5jcF9pcnFf cXVldWUpOworCWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQsIDApOwogCXJldHVybiAw OwogfQogCkBAIC0xODQ5LDQgKzE4NTEsNyBAQCB2b2lkIGludGVsX2hkY3BfaGFuZGxlX2NwX2ly cShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCiAJCWludGVsX2hkY3BfY2hlY2tf bGluayhjb25uZWN0b3IpOwogCWVsc2UgaWYgKGludGVsX2hkY3AyX2luX3VzZShjb25uZWN0b3Ip KQogCQlpbnRlbF9oZGNwMl9jaGVja19saW5rKGNvbm5lY3Rvcik7CisKKwlhdG9taWNfc2V0KCZj b25uZWN0b3ItPmhkY3AuY3BfaXJxX3JlY3ZlZCwgMSk7CisJd2FrZV91cF9hbGwoJmNvbm5lY3Rv ci0+aGRjcC5jcF9pcnFfcXVldWUpOwogfQotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=