From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v14 13/33] drm/i915: Implement the HDCP2.2 support for DP Date: Mon, 19 Aug 2019 20:36:24 +0530 Message-ID: <20190819150624.GA15940@intel.com> References: <1550338640-17470-1-git-send-email-ramalingam.c@intel.com> <1550338640-17470-14-git-send-email-ramalingam.c@intel.com> <87o90qg6np.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <87o90qg6np.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Jani Nikula Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, uma.shankar@intel.com, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gMjAxOS0wOC0xNSBhdCAxMTo0Mzo1NCArMDMwMCwgSmFuaSBOaWt1bGEgd3JvdGU6Cj4gT24g U2F0LCAxNiBGZWIgMjAxOSwgUmFtYWxpbmdhbSBDIHZpYSBkcmktZGV2ZWwgPGRyaS1kZXZlbEBs aXN0cy5mcmVlZGVza3RvcC5vcmc+IHdyb3RlOgo+ID4gSW1wbGVtZW50cyB0aGUgRFAgYWRhcHRh dGlvbiBzcGVjaWZpYyBIRENQMi4yIGZ1bmN0aW9ucy4KPiA+Cj4gPiBUaGVzZSBmdW5jdGlvbnMg cGVyZm9ybSB0aGUgRFBDRCByZWFkIGFuZCB3cml0ZSBmb3IgY29tbXVuaWNhdGluZyB0aGUKPiA+ IEhEQ1AyLjIgYXV0aCBtZXNzYWdlIGJhY2sgYW5kIGZvcnRoLgo+ID4KPiA+IHYyOgo+ID4gICB3 YWl0IGZvciBjcF9pcnEgaXMgbWVyZ2VkIHdpdGggdGhpcyBwYXRjaC4gUmViYXNlZC4KPiA+IHYz Ogo+ID4gICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9yIHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2ls c29uXQo+ID4gdjQ6Cj4gPiAgIFN0eWxlIGZpeGVkLgo+ID4gICAlcy9QQVJJTkcvUEFJUklORwo+ ID4gICBGZXcgc3R5bGUgZml4ZXMgW1VtYV0KPiA+IHY1Ogo+ID4gICBMb29rdXAgdGFibGUgZm9y IERQIEhEQ1AyLjIgbXNnIGRldGFpbHMgW0RhbmllbF0uCj4gPiAgIEV4dHJhIGxpbmVzIGFyZSBy ZW1vdmVkLgo+ID4gdjY6IFJlYmFzZWQuCj4gPiB2NzoKPiA+ICAgRml4ZWQgc29tZSByZWdyZXNz aW9uIGludHJvZHVjZWQgYXQgdjUuIFtBbmtpdF0KPiA+ICAgTWFjcm8gSERDUF8yXzJfUlhfQ0FQ U19WRVJTSU9OX1ZBTCBpcyByZXVzZWQgW1VtYV0KPiA+ICAgQ29udmVydGVkIGEgZnVuY3Rpb24g dG8gaW5saW5lIFtVbWFdCj4gPiAgICVzL3VpbnR4eF90L3V4eAo+ID4gdjg6Cj4gPiAgIEVycm9y IGR1ZSB0byB0aGUgc2lua3MgYXJlIHJlcG9ydGVkIGFzIERFQlVHIGxvZ3MuCj4gPiAgIEFkanVz dCB0byB0aGUgbmV3IG1laSBpbnRlcmZhY2UuCj4gPiB2OToKPiA+ICAgQVJSQVlfU0laRSBmb3Ig bm8gb2YgYXJyYXkgbWVtYmVycyBbSm9uICYgRGFuaWVsXQo+ID4gICByZXR1cm4gb2YgdGhlIHdh aXRfZm9yX2NwX2lycSBpcyBtYWRlIGFzIHZvaWQgW0RhbmllbF0KPiA+ICAgV2FpdCBmb3IgSERD UDIuMiBtc2cgaXMgZG9uZSBiYXNlZCBvbiBwb2xsaW5nIHRoZSByZWcgYml0IHRoYW4KPiA+ICAg ICBDUF9JUlEgYmFzZWQuIFtEYW5pZWxdCj4gPiAgIGhkY3AgYWRhcHRhdGlvbiBpcyBhZGRlZCBh cyBhIGNvbnN0IGluIHRoZSBoZGNwX3NoaW0gW0RhbmllbF0KPiA+IHYxMDoKPiA+ICAgY29uZmln X3N0cmVhbV90eXBlIGlzIHJlZGVmaW5lZCBbRGFuaWVsXQo+ID4gICBEUCBFcnJhdGEgc3BlY2lm aWMgZGVmaW5lcyBhcmUgbW92ZWQgaW50byBpbnRlbF9kcC5jLgo+ID4KPiA+IFNpZ25lZC1vZmYt Ynk6IFJhbWFsaW5nYW0gQyA8cmFtYWxpbmdhbS5jQGludGVsLmNvbT4KPiA+IFNpZ25lZC1vZmYt Ynk6IEFua2l0IEsgTmF1dGl5YWwgPGFua2l0LmsubmF1dGl5YWxAaW50ZWwuY29tPgo+ID4gUmV2 aWV3ZWQtYnk6IFVtYSBTaGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIHwgMzMzICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiA+ICAxIGZpbGUgY2hhbmdlZCwgMzMzIGluc2VydGlv bnMoKykKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IDlmNzNhNDIzOTU3 NC4uZTlmZTI1ZjIxMjAwIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAg LTU4NDcsNiArNTg0NywzMzMgQEAgaW50IGludGVsX2RwX2hkY3BfY2FwYWJsZShzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ICAJcmV0dXJuIDA7Cj4gPiAgfQo+ ID4gIAo+ID4gK3N0cnVjdCBoZGNwMl9kcF9lcnJhdGFfc3RyZWFtX3R5cGUgewo+ID4gKwl1OAlt c2dfaWQ7Cj4gPiArCXU4CXN0cmVhbV90eXBlOwo+ID4gK30gX19wYWNrZWQ7Cj4gPiArCj4gPiAr c3RhdGljIHN0cnVjdCBoZGNwMl9kcF9tc2dfZGF0YSB7Cj4gPiArCXU4IG1zZ19pZDsKPiA+ICsJ dTMyIG9mZnNldDsKPiA+ICsJYm9vbCBtc2dfZGV0ZWN0YWJsZTsKPiA+ICsJdTMyIHRpbWVvdXQ7 Cj4gPiArCXUzMiB0aW1lb3V0MjsgLyogQWRkZWQgZm9yIG5vbl9wYWlyZWQgc2l0dWF0aW9uICov Cj4gPiArCX0gaGRjcDJfbXNnX2RhdGFbXSA9IHsKPiA+ICsJCXtIRENQXzJfMl9BS0VfSU5JVCwg RFBfSERDUF8yXzJfQUtFX0lOSVRfT0ZGU0VULCBmYWxzZSwgMCwgMH0sCj4gPiArCQl7SERDUF8y XzJfQUtFX1NFTkRfQ0VSVCwgRFBfSERDUF8yXzJfQUtFX1NFTkRfQ0VSVF9PRkZTRVQsCj4gPiAr CQkJCWZhbHNlLCBIRENQXzJfMl9DRVJUX1RJTUVPVVRfTVMsIDB9LAo+ID4gKwkJe0hEQ1BfMl8y X0FLRV9OT19TVE9SRURfS00sIERQX0hEQ1BfMl8yX0FLRV9OT19TVE9SRURfS01fT0ZGU0VULAo+ ID4gKwkJCQlmYWxzZSwgMCwgMH0sCj4gPiArCQl7SERDUF8yXzJfQUtFX1NUT1JFRF9LTSwgRFBf SERDUF8yXzJfQUtFX1NUT1JFRF9LTV9PRkZTRVQsCj4gPiArCQkJCWZhbHNlLCAwLCAwfSwKPiA+ ICsJCXtIRENQXzJfMl9BS0VfU0VORF9IUFJJTUUsIERQX0hEQ1BfMl8yX0FLRV9TRU5EX0hQUklN RV9PRkZTRVQsCj4gPiArCQkJCXRydWUsIEhEQ1BfMl8yX0hQUklNRV9QQUlSRURfVElNRU9VVF9N UywKPiA+ICsJCQkJSERDUF8yXzJfSFBSSU1FX05PX1BBSVJFRF9USU1FT1VUX01TfSwKPiA+ICsJ CXtIRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk8sCj4gPiArCQkJCURQX0hEQ1BfMl8yX0FL RV9TRU5EX1BBSVJJTkdfSU5GT19PRkZTRVQsIHRydWUsCj4gPiArCQkJCUhEQ1BfMl8yX1BBSVJJ TkdfVElNRU9VVF9NUywgMH0sCj4gPiArCQl7SERDUF8yXzJfTENfSU5JVCwgRFBfSERDUF8yXzJf TENfSU5JVF9PRkZTRVQsIGZhbHNlLCAwLCAwfSwKPiA+ICsJCXtIRENQXzJfMl9MQ19TRU5EX0xQ UklNRSwgRFBfSERDUF8yXzJfTENfU0VORF9MUFJJTUVfT0ZGU0VULAo+ID4gKwkJCQlmYWxzZSwg SERDUF8yXzJfRFBfTFBSSU1FX1RJTUVPVVRfTVMsIDB9LAo+ID4gKwkJe0hEQ1BfMl8yX1NLRV9T RU5EX0VLUywgRFBfSERDUF8yXzJfU0tFX1NFTkRfRUtTX09GRlNFVCwgZmFsc2UsCj4gPiArCQkJ CTAsIDB9LAo+ID4gKwkJe0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNULAo+ID4gKwkJCQlE UF9IRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVF9PRkZTRVQsIHRydWUsCj4gPiArCQkJCUhE Q1BfMl8yX1JFQ1ZJRF9MSVNUX1RJTUVPVVRfTVMsIDB9LAo+ID4gKwkJe0hEQ1BfMl8yX1JFUF9T RU5EX0FDSywgRFBfSERDUF8yXzJfUkVQX1NFTkRfQUNLX09GRlNFVCwgZmFsc2UsCj4gPiArCQkJ CTAsIDB9LAo+ID4gKwkJe0hEQ1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdFLAo+ID4gKwkJCQlEUF9I RENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRV9PRkZTRVQsIGZhbHNlLAo+ID4gKwkJCQkwLCAwfSwK PiA+ICsJCXtIRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZLCBEUF9IRENQXzJfMl9SRVBfU1RSRUFN X1JFQURZX09GRlNFVCwKPiA+ICsJCQkJZmFsc2UsIEhEQ1BfMl8yX1NUUkVBTV9SRUFEWV9USU1F T1VUX01TLCAwfSwKPiA+ICsvKiBsb2NhbCBkZWZpbmUgdG8gc2hvdmVsIHRoaXMgdGhyb3VnaCB0 aGUgd3JpdGVfMl8yIGludGVyZmFjZSAqLwo+ID4gKyNkZWZpbmUgSERDUF8yXzJfRVJSQVRBX0RQ X1NUUkVBTV9UWVBFCTUwCj4gPiArCQl7SERDUF8yXzJfRVJSQVRBX0RQX1NUUkVBTV9UWVBFLAo+ ID4gKwkJCQlEUF9IRENQXzJfMl9SRUdfU1RSRUFNX1RZUEVfT0ZGU0VULCBmYWxzZSwKPiA+ICsJ CQkJMCwgMH0sCj4gPiArCQl9Owo+IAo+IEhhdGUgdG8gYnJpbmcgdGhpcyB1cCBzbyBmYXIgYWZ0 ZXIgdGhpcyBoYXMgYmVlbiBtZXJnZWQsIGJ1dAo+IGhkY3AyX21zZ19kYXRhW10gbXVzdCBiZSBt b3ZlZCBvdXQgb2YgZHJpdmVyIHN0YXRpYyBkYXRhLgpKYW5pLAoKQ291bGQgeW91IHBsZWFzZSBl eHBsYWluIHdoeSB3ZSBkb250IGxpa2UgaXQ/CgpBbHRlcm5hdGUgaSBjb3VsZCB0aGluayBpbW1l ZGlhdGVseSBpcyBwb3B1bGF0ZSB0aGUgbWVzc2FnZXMgaW4gdGhlCnJ1bnRpbWUgYmFzZWQgb24g dGhlIG1zZ19pZCB1c2luZyB0aGUgZnVuY3Rpb25zIGFuZCB1c2UgdGhlbS4KCi1SYW0KPiAKPiBC UiwKPiBKYW5pLgo+IAo+IAo+ID4gKwo+ID4gK3N0YXRpYyBpbmxpbmUKPiA+ICtpbnQgaW50ZWxf ZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCj4gPiArCQkJCSAgdTggKnJ4X3N0YXR1cykKPiA+ICt7Cj4gPiArCXNzaXplX3Qg cmV0Owo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ ZHAuYXV4LAo+ID4gKwkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhTVEFUVVNfT0ZGU0VULCBy eF9zdGF0dXMsCj4gPiArCQkJICAgICAgIEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xFTik7Cj4gPiAr CWlmIChyZXQgIT0gSERDUF8yXzJfRFBfUlhTVEFUVVNfTEVOKSB7Cj4gPiArCQlEUk1fREVCVUdf S01TKCJSZWFkIGJzdGF0dXMgZnJvbSBEUC9BVVggZmFpbGVkICglemQpXG4iLCByZXQpOwo+ID4g KwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1 cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiArc3RhdGljCj4gPiAraW50IGhkY3AyX2RldGVjdF9tc2df YXZhaWxhYmlsaXR5KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ ID4gKwkJCQkgIHU4IG1zZ19pZCwgYm9vbCAqbXNnX3JlYWR5KQo+ID4gK3sKPiA+ICsJdTggcnhf c3RhdHVzOwo+ID4gKwlpbnQgcmV0Owo+ID4gKwo+ID4gKwkqbXNnX3JlYWR5ID0gZmFsc2U7Cj4g PiArCXJldCA9IGludGVsX2RwX2hkY3AyX3JlYWRfcnhfc3RhdHVzKGludGVsX2RpZ19wb3J0LCAm cnhfc3RhdHVzKTsKPiA+ICsJaWYgKHJldCA8IDApCj4gPiArCQlyZXR1cm4gcmV0Owo+ID4gKwo+ ID4gKwlzd2l0Y2ggKG1zZ19pZCkgewo+ID4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklN RToKPiA+ICsJCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19IX1BSSU1FKHJ4X3N0YXR1cykpCj4g PiArCQkJKm1zZ19yZWFkeSA9IHRydWU7Cj4gPiArCQlicmVhazsKPiA+ICsJY2FzZSBIRENQXzJf Ml9BS0VfU0VORF9QQUlSSU5HX0lORk86Cj4gPiArCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNf UEFJUklORyhyeF9zdGF0dXMpKQo+ID4gKwkJCSptc2dfcmVhZHkgPSB0cnVlOwo+ID4gKwkJYnJl YWs7Cj4gPiArCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6Cj4gPiArCQlpZiAo SERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBRFkocnhfc3RhdHVzKSkKPiA+ICsJCQkqbXNnX3JlYWR5 ID0gdHJ1ZTsKPiA+ICsJCWJyZWFrOwo+ID4gKwlkZWZhdWx0Ogo+ID4gKwkJRFJNX0VSUk9SKCJV bmlkZW50aWZpZWQgbXNnX2lkOiAlZFxuIiwgbXNnX2lkKTsKPiA+ICsJCXJldHVybiAtRUlOVkFM Owo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg c3NpemVfdAo+ID4gK2ludGVsX2RwX2hkY3AyX3dhaXRfZm9yX21zZyhzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+ICsJCQkgICAgc3RydWN0IGhkY3AyX2RwX21z Z19kYXRhICpoZGNwMl9tc2dfZGF0YSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9kcCAqZHAg PSAmaW50ZWxfZGlnX3BvcnQtPmRwOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZk cC0+YXR0YWNoZWRfY29ubmVjdG9yLT5oZGNwOwo+ID4gKwl1OCBtc2dfaWQgPSBoZGNwMl9tc2df ZGF0YS0+bXNnX2lkOwo+ID4gKwlpbnQgcmV0LCB0aW1lb3V0Owo+ID4gKwlib29sIG1zZ19yZWFk eSA9IGZhbHNlOwo+ID4gKwo+ID4gKwlpZiAobXNnX2lkID09IEhEQ1BfMl8yX0FLRV9TRU5EX0hQ UklNRSAmJiAhaGRjcC0+aXNfcGFpcmVkKQo+ID4gKwkJdGltZW91dCA9IGhkY3AyX21zZ19kYXRh LT50aW1lb3V0MjsKPiA+ICsJZWxzZQo+ID4gKwkJdGltZW91dCA9IGhkY3AyX21zZ19kYXRhLT50 aW1lb3V0Owo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0 IHRoZSBDRVJULCBMUFJJTUUgYW5kIFNUUkVBTV9SRUFEWQo+ID4gKwkgKiBhdmFpbGFiaWxpdHku IFNvIFdhaXQgZm9yIHRpbWVvdXQgYW5kIHJlYWQgdGhlIG1zZy4KPiA+ICsJICovCj4gPiArCWlm ICghaGRjcDJfbXNnX2RhdGEtPm1zZ19kZXRlY3RhYmxlKSB7Cj4gPiArCQltZGVsYXkodGltZW91 dCk7Cj4gPiArCQlyZXQgPSAwOwo+ID4gKwl9IGVsc2Ugewo+ID4gKwkJLyogVE9ETzogSW4gY2Fz ZSBpZiB5b3UgbmVlZCB0byB3YWl0IG9uIENQX0lSUSwgZG8gaXQgaGVyZSAqLwo+ID4gKwkJcmV0 ID0gX193YWl0X2ZvcihyZXQgPQo+ID4gKwkJCQkgaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxp dHkoaW50ZWxfZGlnX3BvcnQsCj4gPiArCQkJCQkJCSAgICAgICBtc2dfaWQsCj4gPiArCQkJCQkJ CSAgICAgICAmbXNnX3JlYWR5KSwKPiA+ICsJCQkJICFyZXQgJiYgbXNnX3JlYWR5LCB0aW1lb3V0 ICogMTAwMCwKPiA+ICsJCQkJIDEwMDAsIDUgKiAxMDAwKTsKPiA+ICsKPiA+ICsJCWlmICghbXNn X3JlYWR5KQo+ID4gKwkJCXJldCA9IC1FVElNRURPVVQ7Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYg KHJldCkKPiA+ICsJCURSTV9ERUJVR19LTVMoIm1zZ19pZCAlZCwgcmV0ICVkLCB0aW1lb3V0KG1T ZWMpOiAlZFxuIiwKPiA+ICsJCQkgICAgICBoZGNwMl9tc2dfZGF0YS0+bXNnX2lkLCByZXQsIHRp bWVvdXQpOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg c3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpnZXRfaGRjcDJfZHBfbXNnX2RhdGEodTggbXNnX2lk KQo+ID4gK3sKPiA+ICsJaW50IGk7Cj4gPiArCj4gPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9T SVpFKGhkY3AyX21zZ19kYXRhKTsgaSsrKQo+ID4gKwkJaWYgKGhkY3AyX21zZ19kYXRhW2ldLm1z Z19pZCA9PSBtc2dfaWQpCj4gPiArCQkJcmV0dXJuICZoZGNwMl9tc2dfZGF0YVtpXTsKPiA+ICsK PiA+ICsJcmV0dXJuIE5VTEw7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYwo+ID4gK2ludCBpbnRl bF9kcF9oZGNwMl93cml0ZV9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQsCj4gPiArCQkJICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplKQo+ID4gK3sKPiA+ICsJ dW5zaWduZWQgaW50IG9mZnNldDsKPiA+ICsJdTggKmJ5dGUgPSBidWY7Cj4gPiArCXNzaXplX3Qg cmV0LCBieXRlc190b193cml0ZSwgbGVuOwo+ID4gKwlzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEg KmhkY3AyX21zZ19kYXRhOwo+ID4gKwo+ID4gKwloZGNwMl9tc2dfZGF0YSA9IGdldF9oZGNwMl9k cF9tc2dfZGF0YSgqYnl0ZSk7Cj4gPiArCWlmICghaGRjcDJfbXNnX2RhdGEpCj4gPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiA+ICsKPiA+ICsJb2Zmc2V0ID0gaGRjcDJfbXNnX2RhdGEtPm9mZnNldDsK PiA+ICsKPiA+ICsJLyogTm8gbXNnX2lkIGluIERQIEhEQ1AyLjIgbXNncyAqLwo+ID4gKwlieXRl c190b193cml0ZSA9IHNpemUgLSAxOwo+ID4gKwlieXRlKys7Cj4gPiArCj4gPiArCXdoaWxlIChi eXRlc190b193cml0ZSkgewo+ID4gKwkJbGVuID0gYnl0ZXNfdG9fd3JpdGUgPiBEUF9BVVhfTUFY X1BBWUxPQURfQllURVMgPwo+ID4gKwkJCQlEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRl c190b193cml0ZTsKPiA+ICsKPiA+ICsJCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9k aWdfcG9ydC0+ZHAuYXV4LAo+ID4gKwkJCQkJb2Zmc2V0LCAodm9pZCAqKWJ5dGUsIGxlbik7Cj4g PiArCQlpZiAocmV0IDwgMCkKPiA+ICsJCQlyZXR1cm4gcmV0Owo+ID4gKwo+ID4gKwkJYnl0ZXNf dG9fd3JpdGUgLT0gcmV0Owo+ID4gKwkJYnl0ZSArPSByZXQ7Cj4gPiArCQlvZmZzZXQgKz0gcmV0 Owo+ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiBzaXplOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0 aWMKPiA+ICtzc2l6ZV90IGdldF9yZWNlaXZlcl9pZF9saXN0X3NpemUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gPiArewo+ID4gKwl1OCByeF9pbmZvW0hEQ1Bf Ml8yX1JYSU5GT19MRU5dOwo+ID4gKwl1MzIgZGV2X2NudDsKPiA+ICsJc3NpemVfdCByZXQ7Cj4g PiArCj4gPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgs Cj4gPiArCQkJICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWElORk9fT0ZGU0VULAo+ID4gKwkJCSAg ICAgICAodm9pZCAqKXJ4X2luZm8sIEhEQ1BfMl8yX1JYSU5GT19MRU4pOwo+ID4gKwlpZiAocmV0 ICE9IEhEQ1BfMl8yX1JYSU5GT19MRU4pCj4gPiArCQlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDog cmV0Owo+ID4gKwo+ID4gKwlkZXZfY250ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZv WzBdKSA8PCA0IHwKPiA+ICsJCSAgIEhEQ1BfMl8yX0RFVl9DT1VOVF9MTyhyeF9pbmZvWzFdKSk7 Cj4gPiArCj4gPiArCWlmIChkZXZfY250ID4gSERDUF8yXzJfTUFYX0RFVklDRV9DT1VOVCkKPiA+ ICsJCWRldl9jbnQgPSBIRENQXzJfMl9NQVhfREVWSUNFX0NPVU5UOwo+ID4gKwo+ID4gKwlyZXQg PSBzaXplb2Yoc3RydWN0IGhkY3AyX3JlcF9zZW5kX3JlY2VpdmVyaWRfbGlzdCkgLQo+ID4gKwkJ SERDUF8yXzJfUkVDRUlWRVJfSURTX01BWF9MRU4gKwo+ID4gKwkJKGRldl9jbnQgKiBIRENQXzJf Ml9SRUNFSVZFUl9JRF9MRU4pOwo+ID4gKwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsK PiA+ICtzdGF0aWMKPiA+ICtpbnQgaW50ZWxfZHBfaGRjcDJfcmVhZF9tc2coc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiArCQkJICAgIHU4IG1zZ19pZCwgdm9p ZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPiA+ICt7Cj4gPiArCXVuc2lnbmVkIGludCBvZmZzZXQ7Cj4g PiArCXU4ICpieXRlID0gYnVmOwo+ID4gKwlzc2l6ZV90IHJldCwgYnl0ZXNfdG9fcmVjdiwgbGVu Owo+ID4gKwlzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgKmhkY3AyX21zZ19kYXRhOwo+ID4gKwo+ ID4gKwloZGNwMl9tc2dfZGF0YSA9IGdldF9oZGNwMl9kcF9tc2dfZGF0YShtc2dfaWQpOwo+ID4g KwlpZiAoIWhkY3AyX21zZ19kYXRhKQo+ID4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gPiArCW9mZnNl dCA9IGhkY3AyX21zZ19kYXRhLT5vZmZzZXQ7Cj4gPiArCj4gPiArCXJldCA9IGludGVsX2RwX2hk Y3AyX3dhaXRfZm9yX21zZyhpbnRlbF9kaWdfcG9ydCwgaGRjcDJfbXNnX2RhdGEpOwo+ID4gKwlp ZiAocmV0IDwgMCkKPiA+ICsJCXJldHVybiByZXQ7Cj4gPiArCj4gPiArCWlmIChtc2dfaWQgPT0g SERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1QpIHsKPiA+ICsJCXJldCA9IGdldF9yZWNlaXZl cl9pZF9saXN0X3NpemUoaW50ZWxfZGlnX3BvcnQpOwo+ID4gKwkJaWYgKHJldCA8IDApCj4gPiAr CQkJcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsJCXNpemUgPSByZXQ7Cj4gPiArCX0KPiA+ICsJYnl0 ZXNfdG9fcmVjdiA9IHNpemUgLSAxOwo+ID4gKwo+ID4gKwkvKiBEUCBhZGFwdGF0aW9uIG1zZ3Mg aGFzIG5vIG1zZ19pZCAqLwo+ID4gKwlieXRlKys7Cj4gPiArCj4gPiArCXdoaWxlIChieXRlc190 b19yZWN2KSB7Cj4gPiArCQlsZW4gPSBieXRlc190b19yZWN2ID4gRFBfQVVYX01BWF9QQVlMT0FE X0JZVEVTID8KPiA+ICsJCSAgICAgIERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA6IGJ5dGVzX3Rv X3JlY3Y7Cj4gPiArCj4gPiArCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9y dC0+ZHAuYXV4LCBvZmZzZXQsCj4gPiArCQkJCSAgICAgICAodm9pZCAqKWJ5dGUsIGxlbik7Cj4g PiArCQlpZiAocmV0IDwgMCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoIm1zZ19pZCAlZCwgcmV0 ICV6ZFxuIiwgbXNnX2lkLCByZXQpOwo+ID4gKwkJCXJldHVybiByZXQ7Cj4gPiArCQl9Cj4gPiAr Cj4gPiArCQlieXRlc190b19yZWN2IC09IHJldDsKPiA+ICsJCWJ5dGUgKz0gcmV0Owo+ID4gKwkJ b2Zmc2V0ICs9IHJldDsKPiA+ICsJfQo+ID4gKwlieXRlID0gYnVmOwo+ID4gKwkqYnl0ZSA9IG1z Z19pZDsKPiA+ICsKPiA+ICsJcmV0dXJuIHNpemU7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYwo+ ID4gK2ludCBpbnRlbF9kcF9oZGNwMl9jb25maWdfc3RyZWFtX3R5cGUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiArCQkJCSAgICAgIGJvb2wgaXNfcmVwZWF0 ZXIsIHU4IGNvbnRlbnRfdHlwZSkKPiA+ICt7Cj4gPiArCXN0cnVjdCBoZGNwMl9kcF9lcnJhdGFf c3RyZWFtX3R5cGUgc3RyZWFtX3R5cGVfbXNnOwo+ID4gKwo+ID4gKwlpZiAoaXNfcmVwZWF0ZXIp Cj4gPiArCQlyZXR1cm4gMDsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogRXJyYXRhIGZvciBEUDog QXMgU3RyZWFtIHR5cGUgaXMgdXNlZCBmb3IgZW5jcnlwdGlvbiwgUmVjZWl2ZXIKPiA+ICsJICog c2hvdWxkIGJlIGNvbW11bmljYXRlZCB3aXRoIHN0cmVhbSB0eXBlIGZvciB0aGUgZGVjcnlwdGlv biBvZiB0aGUKPiA+ICsJICogY29udGVudC4KPiA+ICsJICogUmVwZWF0ZXIgd2lsbCBiZSBjb21t dW5pY2F0ZWQgd2l0aCBzdHJlYW0gdHlwZSBhcyBhIHBhcnQgb2YgaXQncwo+ID4gKwkgKiBhdXRo IGxhdGVyIGluIHRpbWUuCj4gPiArCSAqLwo+ID4gKwlzdHJlYW1fdHlwZV9tc2cubXNnX2lkID0g SERDUF8yXzJfRVJSQVRBX0RQX1NUUkVBTV9UWVBFOwo+ID4gKwlzdHJlYW1fdHlwZV9tc2cuc3Ry ZWFtX3R5cGUgPSBjb250ZW50X3R5cGU7Cj4gPiArCj4gPiArCXJldHVybiBpbnRlbF9kcF9oZGNw Ml93cml0ZV9tc2coaW50ZWxfZGlnX3BvcnQsICZzdHJlYW1fdHlwZV9tc2csCj4gPiArCQkJCQlz aXplb2Yoc3RyZWFtX3R5cGVfbXNnKSk7Cj4gPiArfQo+ID4gKwo+ID4gK3N0YXRpYwo+ID4gK2lu dCBpbnRlbF9kcF9oZGNwMl9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0KQo+ID4gK3sKPiA+ICsJdTggcnhfc3RhdHVzOwo+ID4gKwlpbnQgcmV0Owo+ ID4gKwo+ID4gKwlyZXQgPSBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhpbnRlbF9kaWdf cG9ydCwgJnJ4X3N0YXR1cyk7Cj4gPiArCWlmIChyZXQpCj4gPiArCQlyZXR1cm4gcmV0Owo+ID4g Kwo+ID4gKwlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUkVBVVRIX1JFUShyeF9zdGF0dXMpKQo+ ID4gKwkJcmV0ID0gSERDUF9SRUFVVEhfUkVRVUVTVDsKPiA+ICsJZWxzZSBpZiAoSERDUF8yXzJf RFBfUlhTVEFUVVNfTElOS19GQUlMRUQocnhfc3RhdHVzKSkKPiA+ICsJCXJldCA9IEhEQ1BfTElO S19JTlRFR1JJVFlfRkFJTFVSRTsKPiA+ICsJZWxzZSBpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNf UkVBRFkocnhfc3RhdHVzKSkKPiA+ICsJCXJldCA9IEhEQ1BfVE9QT0xPR1lfQ0hBTkdFOwo+ID4g Kwo+ID4gKwlyZXR1cm4gcmV0Owo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMKPiA+ICtpbnQgaW50 ZWxfZHBfaGRjcDJfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdf cG9ydCwKPiA+ICsJCQkgICBib29sICpjYXBhYmxlKQo+ID4gK3sKPiA+ICsJdTggcnhfY2Fwc1sz XTsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJKmNhcGFibGUgPSBmYWxzZTsKPiA+ICsJcmV0 ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQtPmRwLmF1eCwKPiA+ICsJCQkgICAg ICAgRFBfSERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAo+ID4gKwkJCSAgICAgICByeF9jYXBz LCBIRENQXzJfMl9SWENBUFNfTEVOKTsKPiA+ICsJaWYgKHJldCAhPSBIRENQXzJfMl9SWENBUFNf TEVOKQo+ID4gKwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKPiA+ICsKPiA+ICsJaWYg KHJ4X2NhcHNbMF0gPT0gSERDUF8yXzJfUlhfQ0FQU19WRVJTSU9OX1ZBTCAmJgo+ID4gKwkgICAg SERDUF8yXzJfRFBfSERDUF9DQVBBQkxFKHJ4X2NhcHNbMl0pKQo+ID4gKwkJKmNhcGFibGUgPSB0 cnVlOwo+ID4gKwo+ID4gKwlyZXR1cm4gMDsKPiA+ICt9Cj4gPiArCj4gPiAgc3RhdGljIGNvbnN0 IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gaW50ZWxfZHBfaGRjcF9zaGltID0gewo+ID4gIAkud3Jp dGVfYW5fYWtzdiA9IGludGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdiwKPiA+ICAJLnJlYWRfYmtz diA9IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2LAo+ID4gQEAgLTU4NTksNiArNjE4NiwxMiBAQCBz dGF0aWMgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7 Cj4gPiAgCS50b2dnbGVfc2lnbmFsbGluZyA9IGludGVsX2RwX2hkY3BfdG9nZ2xlX3NpZ25hbGxp bmcsCj4gPiAgCS5jaGVja19saW5rID0gaW50ZWxfZHBfaGRjcF9jaGVja19saW5rLAo+ID4gIAku aGRjcF9jYXBhYmxlID0gaW50ZWxfZHBfaGRjcF9jYXBhYmxlLAo+ID4gKwkud3JpdGVfMl8yX21z ZyA9IGludGVsX2RwX2hkY3AyX3dyaXRlX21zZywKPiA+ICsJLnJlYWRfMl8yX21zZyA9IGludGVs X2RwX2hkY3AyX3JlYWRfbXNnLAo+ID4gKwkuY29uZmlnX3N0cmVhbV90eXBlID0gaW50ZWxfZHBf aGRjcDJfY29uZmlnX3N0cmVhbV90eXBlLAo+ID4gKwkuY2hlY2tfMl8yX2xpbmsgPSBpbnRlbF9k cF9oZGNwMl9jaGVja19saW5rLAo+ID4gKwkuaGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hk Y3AyX2NhcGFibGUsCj4gPiArCS5wcm90b2NvbCA9IEhEQ1BfUFJPVE9DT0xfRFAsCj4gPiAgfTsK PiA+ICAKPiA+ICBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcGFuZWxfdmRkX3Nhbml0aXplKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gCj4gLS0gCj4gSmFuaSBOaWt1bGEsIEludGVsIE9wZW4g U291cmNlIEdyYXBoaWNzIENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9kcmktZGV2ZWw=