From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v3 37/40] drm/i915: Implement the HDCP2.2 support for DP Date: Mon, 21 May 2018 14:19:18 +0530 Message-ID: <12e6dc0b-87ee-1a26-4e11-262ee212ba80@intel.com> References: <1522763873-23041-1-git-send-email-ramalingam.c@intel.com> <1522763873-23041-38-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Shankar, Uma" , "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" , "Winkler, Tomas" , "Usyskin, Alexander" Cc: "Vivi, Rodrigo" List-Id: dri-devel@lists.freedesktop.org CgpPbiBGcmlkYXkgMTggTWF5IDIwMTggMDk6NDUgUE0sIFNoYW5rYXIsIFVtYSB3cm90ZToKPgo+ PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBkcmktZGV2ZWwgW21haWx0bzpk cmktZGV2ZWwtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmddIE9uIEJlaGFsZiBPZgo+PiBS YW1hbGluZ2FtIEMKPj4gU2VudDogVHVlc2RheSwgQXByaWwgMywgMjAxOCA3OjI4IFBNCj4+IFRv OiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBkcmktZGV2ZWxAbGlzdHMuZnJlZWRl c2t0b3Aub3JnOwo+PiBzZWFucGF1bEBjaHJvbWl1bS5vcmc7IGRhbmllbEBmZndsbC5jaDsgY2hy aXNAY2hyaXMtd2lsc29uLmNvLnVrOwo+PiBqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb207IFdp bmtsZXIsIFRvbWFzIDx0b21hcy53aW5rbGVyQGludGVsLmNvbT47Cj4+IFVzeXNraW4sIEFsZXhh bmRlciA8YWxleGFuZGVyLnVzeXNraW5AaW50ZWwuY29tPgo+PiBDYzogVml2aSwgUm9kcmlnbyA8 cm9kcmlnby52aXZpQGludGVsLmNvbT4KPj4gU3ViamVjdDogW1BBVENIIHYzIDM3LzQwXSBkcm0v aTkxNTogSW1wbGVtZW50IHRoZSBIRENQMi4yIHN1cHBvcnQgZm9yIERQCj4+Cj4+IEltcGxlbWVu dHMgdGhlIERQIGFkYXB0YXRpb24gc3BlY2lmaWMgSERDUDIuMiBmdW5jdGlvbnMuCj4+Cj4+IFRo ZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHRoZSBEUENEIHJlYWQgYW5kIHdyaXRlIGZvciBjb21tdW5p Y2F0aW5nIHRoZQo+PiBIRENQMi4yIGF1dGggbWVzc2FnZSBiYWNrIGFuZCBmb3J0aC4KPj4KPj4g Tm90ZTogQ2hyaXMgV2lsc29uIHN1Z2dlc3RlZCBhbHRlcm5hdGUgbWV0aG9kIGZvciB3YWl0aW5n IGZvciBDUF9JUlEsIHRoYW4KPj4gY29tcGxldGlvbnMgY29uY2VwdC4gV0lQIHRvIHVuZGVyc3Rh bmQgYW5kIGltcGxlbWVudCB0aGF0LCBpZiBuZWVkZWQuIEp1c3QgdG8KPj4gdW5ibG9jayB0aGUg cmV2aWV3IG9mIG90aGVyIGNoYW5nZXMsIHYyIHN0aWxsIGNvbnRpbnVlcyB3aXRoIGNvbXBsZXRp b25zLgo+Pgo+PiB2MjoKPj4gICB3YWl0IGZvciBjcF9pcnEgaXMgbWVyZ2VkIHdpdGggdGhpcyBw YXRjaC4gUmViYXNlZC4KPj4gdjM6Cj4+ICAgd2FpdF9xdWV1ZSBpcyB1c2VkIGZvciB3YWl0IGZv ciBjcF9pcnEgW0NocmlzIFdpbHNvbl0KPj4KPj4gU2lnbmVkLW9mZi1ieTogUmFtYWxpbmdhbSBD IDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+PiAtLS0KPj4gZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYyAgIHwgMzUyCj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrCj4+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNyArCj4+IGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8ICAgNSArCj4+IDMgZmlsZXMgY2hhbmdlZCwg MzY0IGluc2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+IGluZGV4IGY5 MmMwMzI2ZmZmNS4uZTVjYjU0Y2VkYTM4IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcC5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK Pj4gQEAgLTMxLDYgKzMxLDcgQEAKPj4gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+ICNpbmNs dWRlIDxsaW51eC9ub3RpZmllci5oPgo+PiAjaW5jbHVkZSA8bGludXgvcmVib290Lmg+Cj4+ICsj aW5jbHVkZSA8bGludXgvbWVpX2hkY3AuaD4KPj4gI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4K Pj4gI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4+ICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxw ZXIuaD4KPj4gQEAgLTUwNzAsNiArNTA3MSwyOCBAQCB2b2lkIGludGVsX2RwX2VuY29kZXJfc3Vz cGVuZChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+PiAqaW50ZWxfZW5jb2RlcikKPj4gCXBwc191bmxv Y2soaW50ZWxfZHApOwo+PiB9Cj4+Cj4+ICtzdGF0aWMgaW50IGludGVsX2RwX2hkY3Bfd2FpdF9m b3JfY3BfaXJxKHN0cnVjdCBpbnRlbF9oZGNwICpoZGNwLAo+PiArCQkJCQkgaW50IHRpbWVvdXQp Cj4+ICt7Cj4+ICsJbG9uZyByZXQ7Cj4+ICsKPj4gKwkvKiBSZWluaXQgKi8KPj4gKwlhdG9taWNf c2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsKPiBJIGZlZWwgInJlY2VpdmVkIiB3b3VsZCBz b3VuZCBiZXR0ZXIgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBhYmJyZXZpYXRpb24uCj4KPj4gKwo+ PiArI2RlZmluZSBDIChhdG9taWNfcmVhZCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCkgPiAwKQo+PiAr CXJldCA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90aW1lb3V0KGhkY3AtPmNwX2lycV9xdWV1 ZSwgQywKPj4gKwkJCQkJICAgICAgIG1zZWNzX3RvX2ppZmZpZXModGltZW91dCkpOwo+PiArCj4+ ICsJaWYgKHJldCA+IDApIHsKPj4gKwkJYXRvbWljX3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwg MCk7Cj4+ICsJCXJldHVybiAwOwo+PiArCX0gZWxzZSBpZiAoIXJldCkgewo+PiArCQlyZXR1cm4g LUVUSU1FRE9VVDsKPj4gKwl9Cj4+ICsJcmV0dXJuIChpbnQpcmV0Owo+PiArfQo+PiArCj4+ICsK Pj4gc3RhdGljCj4+IGludCBpbnRlbF9kcF9oZGNwX3dyaXRlX2FuX2Frc3Yoc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+IAkJCQl1OCAqYW4pCj4+IEBAIC01Mjg4 LDYgKzUzMTEsMzI5IEBAIGludCBpbnRlbF9kcF9oZGNwX2NhcGFibGUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydAo+PiAqaW50ZWxfZGlnX3BvcnQsCj4+IAlyZXR1cm4gMDsKPj4gfQo+Pgo+PiAr c3RhdGljIGlubGluZQo+IERvbuKAmXQgbWFrZSB0aGlzIGlubGluZS4KPgo+PiAraW50IGludGVs X2RwY2Rfb2Zmc2V0X2Zvcl9oZGNwMl9tc2dpZCh1aW50OF90IGJ5dGUsIHVuc2lnbmVkIGludAo+ PiArKm9mZnNldCkgewo+PiArCXN3aXRjaCAoYnl0ZSkgewo+PiArCWNhc2UgSERDUF8yXzJfQUtF X0lOSVQ6Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfSU5JVF9PRkZTRVQ7Cj4+ICsJ CWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfQ0VSVDoKPj4gKwkJKm9mZnNldCA9 IERQX0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlRfT0ZGU0VUOwo+PiArCQlicmVhazsKPj4gKwljYXNl IEhEQ1BfMl8yX0FLRV9OT19TVE9SRURfS006Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9B S0VfTk9fU1RPUkVEX0tNX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9B S0VfU1RPUkVEX0tNOgo+PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX1NUT1JFRF9LTV9P RkZTRVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgo+ PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FX09GRlNFVDsKPj4gKwkJ YnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9QQVJJTkdfSU5GTzoKPj4gKwkJKm9m ZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9TRU5EX1BBUklOR19JTkZPX09GRlNFVDsKPj4gKwkJYnJl YWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9MQ19JTklUOgo+PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8y XzJfTENfSU5JVF9PRkZTRVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfTENfU0VO RF9MUFJJTUU6Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9MQ19TRU5EX0xQUklNRV9PRkZT RVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfU0tFX1NFTkRfRUtTOgo+PiArCQkq b2Zmc2V0ID0gRFBfSERDUF8yXzJfU0tFX1NFTkRfRUtTX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ ICsJY2FzZSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKPj4gKwkJKm9mZnNldCA9IERQ X0hEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUX09GRlNFVDsKPj4gKwkJYnJlYWs7Cj4+ICsJ Y2FzZSBIRENQXzJfMl9SRVBfU0VORF9BQ0s6Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9S RVBfU0VORF9BQ0tfT0ZGU0VUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9T VFJFQU1fTUFOQUdFOgo+PiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfUkVQX1NUUkVBTV9NQU5B R0VfT0ZGU0VUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fUkVB RFk6Cj4+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZX09GRlNFVDsK Pj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9FUlJBVEFfRFBfU1RSRUFNX1RZUEU6Cj4+ ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9SRUdfU1RSRUFNX1RZUEVfT0ZGU0VUOwo+PiArCQli cmVhazsKPj4gKwlkZWZhdWx0Ogo+PiArCQlEUk1fRVJST1IoIlVucmVjb2duaXplZCBNc2cgSURc biIpOwo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwl9Cj4gTGVhdmUgYSBibGFuayBsaW5lLgo+ Cj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUKPj4gK2ludCBpbnRl bF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKPj4gKwkJCQkgIHVpbnQ4X3QgKnJ4X3N0YXR1cykKPj4gK3sKPj4gKwlzc2l6 ZV90IHJldDsKPj4gKwo+PiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0 LT5kcC5hdXgsCj4+ICsJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYU1RBVFVTX09GRlNFVCwg cnhfc3RhdHVzLAo+PiArCQkJICAgICAgIEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xFTik7Cj4+ICsJ aWYgKHJldCAhPSBIRENQXzJfMl9EUF9SWFNUQVRVU19MRU4pIHsKPj4gKwkJRFJNX0VSUk9SKCJS ZWFkIGJzdGF0dXMgZnJvbSBEUC9BVVggZmFpbGVkICglbGQpXG4iLCByZXQpOwo+PiArCQlyZXR1 cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0Owo+PiArCX0KPj4gKwo+PiArCXJldHVybiAwOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgaW5saW5lCj4+ICtpbnQgaW50ZWxfZHBfaGRjcDJfdGltZW91dF9m b3JfbXNnKHVpbnQ4X3QgbXNnX2lkLCBib29sIHBhaXJlZCkgewo+PiArCWludCB0aW1lb3V0ID0g LUVJTlZBTDsKPiBJbml0aWFsaXppbmcgd2l0aCAtRUlOVkFMIGRvZXNuJ3Qgc291bmQgcmlnaHQu IE1ha2UgaXQgbW9yZSBsb2dpY2FsLgpNb3ZlZCB0aGUgYXNzaWdubWVudCB1bmRlciB0aGUgZGVm YXVsdC4KPgo+PiArCj4+ICsJc3dpdGNoIChtc2dfaWQpIHsKPj4gKwljYXNlIEhEQ1BfMl8yX0FL RV9TRU5EX0NFUlQ6Cj4+ICsJCXRpbWVvdXQgPSBIRENQXzJfMl9DRVJUX1RJTUVPVVQ7Cj4+ICsJ CWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1FOgo+PiArCQlpZiAocGFp cmVkKQo+PiArCQkJdGltZW91dCA9IEhEQ1BfMl8yX0hQUklNRV9QQUlSRURfVElNRU9VVDsKPj4g KwkJZWxzZQo+PiArCQkJdGltZW91dCA9IEhEQ1BfMl8yX0hQUklNRV9OT19QQUlSRURfVElNRU9V VDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9QQVJJTkdfSU5GTzoK Pj4gKwkJdGltZW91dCA9IEhEQ1BfMl8yX1BBSVJJTkdfVElNRU9VVDsKPj4gKwkJYnJlYWs7Cj4+ ICsJY2FzZSBIRENQXzJfMl9MQ19TRU5EX0xQUklNRToKPj4gKwkJdGltZW91dCA9IEhEQ1BfMl8y X0RQX0xQUklNRV9USU1FT1VUOwo+PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9T RU5EX1JFQ1ZJRF9MSVNUOgo+PiArCQl0aW1lb3V0ID0gSERDUF8yXzJfUkVDVklEX0xJU1RfVElN RU9VVDsKPj4gKwkJYnJlYWs7Cj4+ICsJY2FzZSBIRENQXzJfMl9SRVBfU1RSRUFNX1JFQURZOgo+ PiArCQl0aW1lb3V0ID0gSERDUF8yXzJfU1RSRUFNX1JFQURZX1RJTUVPVVQ7Cj4+ICsJCWJyZWFr Owo+PiArCWRlZmF1bHQ6Cj4+ICsJCURSTV9FUlJPUigiVW5zdXBwb3J0ZWQgbXNnX2lkOiAlZFxu IiwgKGludCltc2dfaWQpOwo+PiArCX0KPiBMZWF2ZSBhIGJsYW5rIGxpbmUuCj4KPj4gKwlyZXR1 cm4gdGltZW91dDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZQo+IERvbid0IG1ha2UgaXQg aW5saW5lLgo+Cj4+ICtpbnQgaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ICsJCQkJICB1aW50OF90IG1zZ19p ZCwgYm9vbCAqbXNnX3JlYWR5KQo+PiArewo+PiArCXVpbnQ4X3Qgcnhfc3RhdHVzOwo+PiArCWlu dCByZXQ7Cj4+ICsKPj4gKwkqbXNnX3JlYWR5ID0gZmFsc2U7Cj4+ICsJcmV0ID0gaW50ZWxfZHBf aGRjcDJfcmVhZF9yeF9zdGF0dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOwo+PiArCWlm IChyZXQgPCAwKQo+PiArCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJc3dpdGNoIChtc2dfaWQpIHsK Pj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToKPj4gKwkJaWYgKEhEQ1BfMl8yX0RQ X1JYU1RBVFVTX0hfUFJJTUUocnhfc3RhdHVzKSkKPj4gKwkJCSptc2dfcmVhZHkgPSB0cnVlOwo+ PiArCQlicmVhazsKPj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX1BBUklOR19JTkZPOgo+PiAr CQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUEFJUklORyhyeF9zdGF0dXMpKQo+PiArCQkJKm1z Z19yZWFkeSA9IHRydWU7Cj4+ICsJCWJyZWFrOwo+PiArCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRf UkVDVklEX0xJU1Q6Cj4+ICsJCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFEWShyeF9zdGF0 dXMpKQo+PiArCQkJKm1zZ19yZWFkeSA9IHRydWU7Cj4+ICsJCWJyZWFrOwo+PiArCWRlZmF1bHQ6 Cj4+ICsJCURSTV9ERUJVR19LTVMoIlVuaWRlbnRpZmllZCBtc2dfaWQ6ICVkXG4iLCAoaW50KW1z Z19pZCk7Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPj4gKwlyZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHNzaXplX3QKPiBEb27igJl0IG1ha2UgaXQgaW5s aW5lLgo+Cj4+ICtpbnRlbF9kcF9oZGNwMl93YWl0X2Zvcl9tc2coc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ICsJCQkgICAgdWludDhfdCBtc2dfaWQpCj4+ICt7 Cj4+ICsJc3RydWN0IGludGVsX2RwICpkcCA9ICZpbnRlbF9kaWdfcG9ydC0+ZHA7Cj4+ICsJc3Ry dWN0IGludGVsX2hkY3AgKmhkY3AgPSAmZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+aGRjcDsKPj4g KwlpbnQgcmV0LCB0aW1lb3V0Owo+PiArCWJvb2wgbXNnX3JlYWR5ID0gZmFsc2U7Cj4+ICsKPj4g Kwl0aW1lb3V0ID0gaW50ZWxfZHBfaGRjcDJfdGltZW91dF9mb3JfbXNnKG1zZ19pZCwgaGRjcC0+ aXNfcGFpcmVkKTsKPj4gKwlzd2l0Y2ggKG1zZ19pZCkgewo+PiArCj4+ICsJLyoKPj4gKwkgKiBU aGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoZSBDRVJULCBMUFJJTUUgYW5kIFNUUkVBTV9SRUFE WQo+PiArCSAqIGF2YWlsYWJpbGl0eS4gU28gV2FpdCBmb3IgdGltZW91dCBhbmQgcmVhZCB0aGUg bXNnLgo+PiArCSAqLwo+PiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfQ0VSVDoKPj4gKwljYXNl IEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FOgo+PiArCWNhc2UgSERDUF8yXzJfUkVQX1NUUkVBTV9S RUFEWToKPj4gKwkJbWRlbGF5KHRpbWVvdXQpOwo+PiArCQlyZXQgPSAwOwo+PiArCQlicmVhazsK Pj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0hQUklNRToKPj4gKwljYXNlIEhEQ1BfMl8yX0FL RV9TRU5EX1BBUklOR19JTkZPOgo+PiArCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJ U1Q6Cj4+ICsJCWludGVsX2RwX2hkY3Bfd2FpdF9mb3JfY3BfaXJxKGhkY3AsIHRpbWVvdXQpOwo+ PiArCQlyZXQgPSBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJpbGl0eShpbnRlbF9kaWdfcG9ydCwg bXNnX2lkLAo+PiArCQkJCQkJICAgICZtc2dfcmVhZHkpOwo+PiArCQlpZiAoIW1zZ19yZWFkeSkK Pj4gKwkJCXJldCA9IC1FVElNRURPVVQ7Cj4+ICsJCWJyZWFrOwo+PiArCWRlZmF1bHQ6Cj4+ICsJ CURSTV9ERUJVR19LTVMoIlVuaWRlbnRpZmllZCBtc2dfaWQ6ICVkXG4iLCAoaW50KW1zZ19pZCk7 Cj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCX0KPiBMZWF2ZSBhIGJsYW5rIGxpbmUgaGVyZS4K Pgo+PiArCWlmIChyZXQpCj4+ICsJCURSTV9FUlJPUigibXNnX2lkICVkLCByZXQgJWQsIHRpbWVv dXQobVNlYyk6ICVkXG4iLAo+PiBtc2dfaWQsIHJldCwKPj4gKwkJCSAgdGltZW91dCk7Cj4+ICsJ cmV0dXJuIHJldDsKPj4gK30KPj4gKwo+PiArc3RhdGljCj4+ICtpbnQgaW50ZWxfZHBfaGRjcDJf d3JpdGVfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+PiAr CQkJICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplKQo+PiArewo+PiArCXVuc2lnbmVkIGludCBv ZmZzZXQ7Cj4+ICsJdWludDhfdCAqYnl0ZSA9IGJ1ZjsKPj4gKwlzc2l6ZV90IHJldCwgYnl0ZXNf dG9fd3JpdGUsIGxlbjsKPj4gKwo+PiArCWlmIChpbnRlbF9kcGNkX29mZnNldF9mb3JfaGRjcDJf bXNnaWQoKmJ5dGUsICZvZmZzZXQpIDwgMCkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4g KwkvKiBObyBtc2dfaWQgaW4gRFAgSERDUDIuMiBtc2dzICovCj4+ICsJYnl0ZXNfdG9fd3JpdGUg PSBzaXplIC0gMTsKPj4gKwlieXRlKys7Cj4+ICsKPj4gKwl3aGlsZSAoYnl0ZXNfdG9fd3JpdGUp IHsKPj4gKwkJbGVuID0gYnl0ZXNfdG9fd3JpdGUgPiBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMg Pwo+PiArCQkJCURQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA6Cj4+IGJ5dGVzX3RvX3dyaXRlOwo+ PiArCj4+ICsJCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4 LCBvZmZzZXQsCj4+ICsJCQkJCSh2b2lkICopYnl0ZSwgbGVuKTsKPj4gKwkJaWYgKHJldCA8IDAp Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJCWJ5dGVzX3RvX3dyaXRlIC09IHJldDsKPj4g KwkJYnl0ZSArPSByZXQ7Cj4+ICsJCW9mZnNldCArPSByZXQ7Cj4+ICsJfQo+IExlYXZlIGEgYmxh bmsgbGluZS4KPgo+PiArCXJldHVybiBzaXplOwo+PiArfQo+PiArCj4+ICtzdGF0aWMKPj4gK2lu dCBpbnRlbF9kcF9oZGNwMl9yZWFkX21zZyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRl bF9kaWdfcG9ydCwKPj4gKwkJCSAgICB1aW50OF90IG1zZ19pZCwgdm9pZCAqYnVmLCBzaXplX3Qg c2l6ZSkgewo+PiArCXVuc2lnbmVkIGludCBvZmZzZXQsIGRldl9jbnQ7Cj4+ICsJdWludDhfdCAq Ynl0ZSA9IGJ1ZjsKPj4gKwl1aW50OF90IHJ4X2luZm9bSERDUF8yXzJfUlhJTkZPX0xFTl07Cj4+ ICsJc3NpemVfdCByZXQsIGJ5dGVzX3RvX3JlY3YsIGxlbjsKPj4gKwo+PiArCWlmIChpbnRlbF9k cGNkX29mZnNldF9mb3JfaGRjcDJfbXNnaWQobXNnX2lkLCAmb2Zmc2V0KSA8IDApCj4+ICsJCXJl dHVybiAtRUlOVkFMOwo+PiArCj4+ICsJcmV0ID0gaW50ZWxfZHBfaGRjcDJfd2FpdF9mb3JfbXNn KGludGVsX2RpZ19wb3J0LCBtc2dfaWQpOwo+PiArCWlmIChyZXQgPCAwKQo+PiArCQlyZXR1cm4g cmV0Owo+PiArCj4+ICsJLyogRmluZGluZyB0aGUgUmVjZWl2ZXJJRCBMaXN0IHNpemUgKi8KPj4g KwlpZiAobXNnX2lkID09IEhEQ1BfMl8yX1JFUF9TRU5EX1JFQ1ZJRF9MSVNUKSB7Cj4+ICsJCXJl dCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsCj4+ICsJCQkJICAg ICAgIERQX0hEQ1BfMl8yX1JFR19SWElORk9fT0ZGU0VULAo+PiArCQkJCSAgICAgICAodm9pZCAq KXJ4X2luZm8sIEhEQ1BfMl8yX1JYSU5GT19MRU4pOwo+PiArCQlpZiAocmV0ICE9IEhEQ1BfMl8y X1JYSU5GT19MRU4pCj4+ICsJCQlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0Owo+PiArCj4+ ICsJCWRldl9jbnQgPSAoSERDUF8yXzJfREVWX0NPVU5UX0hJKHJ4X2luZm9bMF0pIDw8IDQgfAo+ PiArCQkJICAgSERDUF8yXzJfREVWX0NPVU5UX0xPKHJ4X2luZm9bMV0pKTsKPj4gKwo+PiArCQlp ZiAoZGV2X2NudCA+IEhEQ1BfMl8yX01BWF9ERVZJQ0VfQ09VTlQpCj4+ICsJCQlkZXZfY250ID0g SERDUF8yXzJfTUFYX0RFVklDRV9DT1VOVDsKPj4gKwo+PiArCQlzaXplID0gc2l6ZW9mKHN0cnVj dCBoZGNwMl9yZXBfc2VuZF9yZWNlaXZlcmlkX2xpc3QpIC0KPj4gKwkJICAgICAgIEhEQ1BfMl8y X1JFQ0VJVkVSX0lEU19NQVhfTEVOICsKPj4gKwkJICAgICAgIChkZXZfY250ICogSERDUF8yXzJf UkVDRUlWRVJfSURfTEVOKTsKPj4gKwl9Cj4+ICsKPj4gKwlieXRlc190b19yZWN2ID0gc2l6ZSAt IDE7Cj4+ICsKPj4gKwkvKiBUbyBza2lwIHRoZSBtc2dfaWQsIGFzIG1zZ3MgaW4gRFAgYWRhcHRh dGlvbiBoYXMgbm8gbXNnX2lkICovCj4+ICsJYnl0ZSsrOwo+PiArCj4+ICsJd2hpbGUgKGJ5dGVz X3RvX3JlY3YpIHsKPj4gKwkJbGVuID0gYnl0ZXNfdG9fcmVjdiA+IERQX0FVWF9NQVhfUEFZTE9B RF9CWVRFUyA/Cj4+ICsJCSAgICAgIERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA6IGJ5dGVzX3Rv X3JlY3Y7Cj4+ICsKPj4gKwkJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQt PmRwLmF1eCwgb2Zmc2V0LAo+PiArCQkJCSAgICAgICAodm9pZCAqKWJ5dGUsIGxlbik7Cj4+ICsJ CWlmIChyZXQgPCAwKSB7Cj4+ICsJCQlEUk1fREVCVUdfS01TKCJtc2dfaWQgJWQsIHJldCAlZFxu IiwgbXNnX2lkLAo+PiAoaW50KXJldCk7Cj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCQl9Cj4+ICsK Pj4gKwkJYnl0ZXNfdG9fcmVjdiAtPSByZXQ7Cj4+ICsJCWJ5dGUgKz0gcmV0Owo+PiArCQlvZmZz ZXQgKz0gcmV0Owo+PiArCX0KPj4gKwlieXRlID0gYnVmOwo+PiArCSpieXRlID0gbXNnX2lkOwo+ PiArCj4+ICsJcmV0dXJuIHNpemU7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYwo+IFRoaXMgY2FuIGJl IG1hZGUgaW5saW5lLgpTaW5jZSB0aGlzIGlzIHRoZSBmdW5jdGlvbiBmb3IgdGhlIGhkY3Bfc2hp bSBwdHIsIEkgYW0gbm90IHN1cmUgdGhhdCAKbWFraW5nIGlubGluZSB3aWxsIGJlIGhlbHBmdWwu ClNvIEkgYW0gbm90IG1ha2luZyBpdCBhcyBpbmxpbmUuCgpSYW0KPgo+PiAraW50IGludGVsX2Rw X2hkY3AyX2NvbmZpZ19zdHJlYW1fdHlwZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4+ICpp bnRlbF9kaWdfcG9ydCwKPj4gKwkJCQkgICAgICB2b2lkICpidWYsIHNpemVfdCBzaXplKQo+PiAr ewo+PiArCXJldHVybiBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2coaW50ZWxfZGlnX3BvcnQsIGJ1 Ziwgc2l6ZSk7IH0KPj4gKwo+PiArc3RhdGljCj4+ICtpbnQgaW50ZWxfZHBfaGRjcDJfY2hlY2tf bGluayhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4+ICsqaW50ZWxfZGlnX3BvcnQpIHsKPj4g Kwl1aW50OF90IHJ4X3N0YXR1czsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ICsJcmV0ID0gaW50ZWxf ZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOwo+PiAr CWlmIChyZXQpCj4+ICsJCXJldHVybiByZXQ7Cj4+ICsKPj4gKwlpZiAoSERDUF8yXzJfRFBfUlhT VEFUVVNfUkVBVVRIX1JFUShyeF9zdGF0dXMpKQo+PiArCQlyZXQgPSBEUk1fSERDUF9SRUFVVEhf UkVRVUVTVDsKPj4gKwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19MSU5LX0ZBSUxFRChy eF9zdGF0dXMpKQo+PiArCQlyZXQgPSBEUk1fSERDUF9MSU5LX0lOVEVHUklUWV9GQUlMVVJFOwo+ PiArCWVsc2UgaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1JFQURZKHJ4X3N0YXR1cykpCj4+ICsJ CXJldCA9IERSTV9IRENQX1RPUE9MT0dZX0NIQU5HRTsKPj4gKwo+PiArCXJldHVybiByZXQ7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYwo+PiAraW50IGludGVsX2RwX2hkY3AyX2NhcGFibGUoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ICsJCQkgICBib29sICpjYXBh YmxlKQo+PiArewo+PiArCXVpbnQ4X3QgcnhfY2Fwc1szXTsKPj4gKwlpbnQgcmV0Owo+PiArCj4+ ICsJKmNhcGFibGUgPSBmYWxzZTsKPj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9k aWdfcG9ydC0+ZHAuYXV4LAo+PiArCQkJICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWF9DQVBTX09G RlNFVCwKPj4gKwkJCSAgICAgICByeF9jYXBzLCBIRENQXzJfMl9SWENBUFNfTEVOKTsKPj4gKwlp ZiAocmV0ICE9IEhEQ1BfMl8yX1JYQ0FQU19MRU4pCj4+ICsJCXJldHVybiByZXQgPj0gMCA/IC1F SU8gOiByZXQ7Cj4+ICsKPj4gKwlpZiAocnhfY2Fwc1swXSA9PSBIRENQXzJfMl9SWENBUFNfVkVS U0lPTl9WQUwgJiYKPj4gKwkgICAgSERDUF8yXzJfRFBfSERDUF9DQVBBQkxFKHJ4X2NhcHNbMl0p KQo+PiArCQkqY2FwYWJsZSA9IHRydWU7Cj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30KPj4gKwo+ PiArc3RhdGljCj4+ICtlbnVtIGhkY3BfcHJvdG9jb2wgaW50ZWxfZHBfaGRjcDJfcHJvdG9jb2wo dm9pZCkgewo+PiArCXJldHVybiBIRENQX1BST1RPQ09MX0RQOwo+PiArfQo+PiArCj4+IHN0YXRp YyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltIGludGVsX2RwX2hkY3Bfc2hpbSA9IHsKPj4g CS53cml0ZV9hbl9ha3N2ID0gaW50ZWxfZHBfaGRjcF93cml0ZV9hbl9ha3N2LAo+PiAJLnJlYWRf YmtzdiA9IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2LAo+PiBAQCAtNTMwMCw2ICs1NjQ2LDEyIEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltCj4+IGludGVsX2RwX2hkY3Bfc2hp bSA9IHsKPj4gCS50b2dnbGVfc2lnbmFsbGluZyA9IGludGVsX2RwX2hkY3BfdG9nZ2xlX3NpZ25h bGxpbmcsCj4+IAkuY2hlY2tfbGluayA9IGludGVsX2RwX2hkY3BfY2hlY2tfbGluaywKPj4gCS5o ZGNwX2NhcGFibGUgPSBpbnRlbF9kcF9oZGNwX2NhcGFibGUsCj4+ICsJLndyaXRlXzJfMl9tc2cg PSBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2csCj4+ICsJLnJlYWRfMl8yX21zZyA9IGludGVsX2Rw X2hkY3AyX3JlYWRfbXNnLAo+PiArCS5jb25maWdfc3RyZWFtX3R5cGUgPSBpbnRlbF9kcF9oZGNw Ml9jb25maWdfc3RyZWFtX3R5cGUsCj4+ICsJLmNoZWNrXzJfMl9saW5rID0gaW50ZWxfZHBfaGRj cDJfY2hlY2tfbGluaywKPj4gKwkuaGRjcF8yXzJfY2FwYWJsZSA9IGludGVsX2RwX2hkY3AyX2Nh cGFibGUsCj4+ICsJLmhkY3BfcHJvdG9jb2wgPSBpbnRlbF9kcF9oZGNwMl9wcm90b2NvbCwKPj4g fTsKPj4KPj4gc3RhdGljIHZvaWQgaW50ZWxfZWRwX3BhbmVsX3ZkZF9zYW5pdGl6ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKSBkaWZmIC0tZ2l0Cj4+IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+PiBpbmRleCA4 ZTYwY2NkMGQzNjguLjM3ZjlhMGUyZWExMyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPj4gQEAgLTQ0NCw2ICs0NDQsMTMgQEAgc3RydWN0IGludGVsX2hkY3Agewo+PiAJc3RydWN0 IG1laV9oZGNwX2RhdGEgbWVpX2RhdGE7Cj4+IAlzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgbWVpX2Ns ZGV2X25iOwo+PiAJc3RydWN0IGRlbGF5ZWRfd29yayBoZGNwMl9jaGVja193b3JrOwo+PiArCj4+ ICsJLyoKPj4gKwkgKiBXb3JrIHF1ZXVlIHRvIHNpZ25hbCB0aGUgQ1BfSVJRLiBVc2VkIGZvciB0 aGUgd2FpdGVycyB0byByZWFkIHRoZQo+PiArCSAqIGF2YWlsYWJsZSBpbmZvcm1hdGlvbiBmcm9t IEhEQ1AgRFAgc2luay4KPj4gKwkgKi8KPj4gKwl3YWl0X3F1ZXVlX2hlYWRfdCBjcF9pcnFfcXVl dWU7Cj4+ICsJYXRvbWljX3QgY3BfaXJxX3JlY3ZlZDsKPj4gfTsKPj4KPj4gc3RydWN0IGludGVs X2Nvbm5lY3RvciB7Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o ZGNwLmMKPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gaW5kZXggOGNm MGVlYjRiM2Y4Li45Mzg2YjQ1MTE5MWUgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMKPj4gQEAgLTc4OCw2ICs3ODgsOCBAQCBpbnQgaW50ZWxfaGRjcF9pbml0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gCWlmIChoZGNwMl9zdXBwb3J0ZWQpCj4+IAkJaW50 ZWxfaGRjcDJfaW5pdChjb25uZWN0b3IpOwo+Pgo+PiArCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmhk Y3AtPmNwX2lycV9xdWV1ZSk7Cj4+ICsJYXRvbWljX3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwg MCk7Cj4gTGVhdmUgYSBibGFuayBsaW5lLgo+Cj4+IAlyZXR1cm4gMDsKPj4gfQo+Pgo+PiBAQCAt MTc2Miw0ICsxNzY0LDcgQEAgdm9pZCBpbnRlbF9oZGNwX2hhbmRsZV9jcF9pcnEoc3RydWN0IGlu dGVsX2Nvbm5lY3Rvcgo+PiAqY29ubmVjdG9yKQo+PiAJCWludGVsX2hkY3BfY2hlY2tfbGluayhj b25uZWN0b3IpOwo+PiAJZWxzZSBpZiAoaW50ZWxfaGRjcDJfaW5fZm9yY2UoY29ubmVjdG9yKSkK Pj4gCQlpbnRlbF9oZGNwMl9jaGVja19saW5rKGNvbm5lY3Rvcik7Cj4+ICsKPj4gKwlhdG9taWNf c2V0KCZjb25uZWN0b3ItPmhkY3AuY3BfaXJxX3JlY3ZlZCwgMSk7Cj4+ICsJd2FrZV91cF9hbGwo JmNvbm5lY3Rvci0+aGRjcC5jcF9pcnFfcXVldWUpOwo+PiB9Cj4+IC0tCj4+IDIuNy40Cj4+Cj4+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+IGRyaS1k ZXZlbCBtYWlsaW5nIGxpc3QKPj4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+PiBo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==