From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v8 12/35] drm/i915: Implement the HDCP2.2 support for DP Date: Thu, 6 Dec 2018 14:58:01 +0100 Message-ID: <20181206135801.GV21184@phenom.ffwll.local> References: <1543315413-24302-1-git-send-email-ramalingam.c@intel.com> <1543315413-24302-13-git-send-email-ramalingam.c@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: <1543315413-24302-13-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: Ramalingam C Cc: daniel.vetter@ffwll.ch, intel-gfx@lists.freedesktop.org, tomas.winkler@intel.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBOb3YgMjcsIDIwMTggYXQgMDQ6MTM6MTBQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IEltcGxlbWVudHMgdGhlIERQIGFkYXB0YXRpb24gc3BlY2lmaWMgSERDUDIuMiBmdW5j dGlvbnMuCj4gCj4gVGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gdGhlIERQQ0QgcmVhZCBhbmQgd3Jp dGUgZm9yIGNvbW11bmljYXRpbmcgdGhlCj4gSERDUDIuMiBhdXRoIG1lc3NhZ2UgYmFjayBhbmQg Zm9ydGguCj4gCj4gdjI6Cj4gICB3YWl0IGZvciBjcF9pcnEgaXMgbWVyZ2VkIHdpdGggdGhpcyBw YXRjaC4gUmViYXNlZC4KPiB2MzoKPiAgIHdhaXRfcXVldWUgaXMgdXNlZCBmb3Igd2FpdCBmb3Ig Y3BfaXJxIFtDaHJpcyBXaWxzb25dCj4gdjQ6Cj4gICBTdHlsZSBmaXhlZC4KPiAgICVzL1BBUklO Ry9QQUlSSU5HCj4gICBGZXcgc3R5bGUgZml4ZXMgW1VtYV0KPiB2NToKPiAgIExvb2t1cCB0YWJs ZSBmb3IgRFAgSERDUDIuMiBtc2cgZGV0YWlscyBbRGFuaWVsXS4KPiAgIEV4dHJhIGxpbmVzIGFy ZSByZW1vdmVkLgo+IHY2Ogo+ICAgUmViYXNlZC4KPiB2NzoKPiAgIEZpeGVkIHNvbWUgcmVncmVz c2lvbiBpbnRyb2R1Y2VkIGF0IHY1LiBbQW5raXRdCj4gICBNYWNybyBIRENQXzJfMl9SWF9DQVBT X1ZFUlNJT05fVkFMIGlzIHJldXNlZCBbVW1hXQo+ICAgQ29udmVydGVkIGEgZnVuY3Rpb24gdG8g aW5saW5lIFtVbWFdCj4gICAlcy91aW50eHhfdC91eHgKPiB2ODoKPiAgIEVycm9yIGR1ZSB0byB0 aGUgc2lua3MgYXJlIHJlcG9ydGVkIGFzIERFQlVHIGxvZ3MuCj4gICBBZGp1c3QgdG8gdGhlIG5l dyBtZWkgaW50ZXJmYWNlLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFJhbWFsaW5nYW0gQyA8cmFtYWxp bmdhbS5jQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBBbmtpdCBLIE5hdXRpeWFsIDxhbmtp dC5rLm5hdXRpeWFsQGludGVsLmNvbT4KPiBSZXZpZXdlZC1ieTogVW1hIFNoYW5rYXIgPHVtYS5z aGFua2FyQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyAgIHwgMzM4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNyArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2hkY3AuYyB8ICAgNiArCj4gIDMgZmlsZXMgY2hhbmdlZCwgMzUxIGluc2VydGlv bnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCBlY2M0NzA2ZGI3ZGMuLjFj YzgyZTQ5MDk5OSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0zMSw2ICszMSw3 IEBACj4gICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICAjaW5jbHVkZSA8bGludXgvbm90aWZp ZXIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L3JlYm9vdC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbWVp X2hkY3AuaD4KPiAgI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1QLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KPiBAQCAtNTM0Nyw2 ICs1MzQ4LDI3IEBAIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9l bmNvZGVyICppbnRlbF9lbmNvZGVyKQo+ICAJcHBzX3VubG9jayhpbnRlbF9kcCk7Cj4gIH0KPiAg Cj4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfaGRjcF93YWl0X2Zvcl9jcF9pcnEoc3RydWN0IGludGVs X2hkY3AgKmhkY3AsCj4gKwkJCQkJIGludCB0aW1lb3V0KQo+ICt7Cj4gKwlsb25nIHJldDsKPiAr Cj4gKwkvKiBSZWluaXQgKi8KPiArCWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQsIDAp OwoKVGhpcyBoZXJlIGRvZXNuJ3QgZml4IGFueSByYWNlIGhlcmUsIHlvdSBtaWdodCBhcyB3ZWxs IHVzZQoKI2RlZmluZSBDIHRydWUKCmhlcmUgKEV4Y2VwdCBvZiBjb3Vyc2UgaXQgcmVjaGVja3Mg dGhhdCkuCgo+ICsKPiArI2RlZmluZSBDIChhdG9taWNfcmVhZCgmaGRjcC0+Y3BfaXJxX3JlY3Zl ZCkgPiAwKQo+ICsJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3RpbWVvdXQoaGRjcC0+ Y3BfaXJxX3F1ZXVlLCBDLAo+ICsJCQkJCSAgICAgICBtc2Vjc190b19qaWZmaWVzKHRpbWVvdXQp KTsKCldoYXQgeW91IHJlYWxseSBuZWVkL3dhbnQgdG8gZG8gdG8gY2hlY2sgd2hldGhlciB0aGUg d2FpdCBzdWNjZWVkZWQgaXMKY2FsbCBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJpbGl0eSgpLiBN aWdodCBiZSBiZXR0ZXIgdG8gb3Blbi1jb2RlIHRoZQp3YWl0X2V2ZW50IGZvciBjbGFyaXR5LgoK CkFsc28gZGVidWcgb3VwdHV0IHRvIGNvbXBsYWluIHdoZW4gd2UgdGltZWQgb3V0IGhlcmUgd291 bGQgYmUgZ29vZCAoc2luY2UKeW91IGlnbm9yZSB0aGUgZXJyb3IgbGF0ZXIgb24pCj4gKwo+ICsJ aWYgKHJldCA+IDApIHsKPiArCQlhdG9taWNfc2V0KCZoZGNwLT5jcF9pcnFfcmVjdmVkLCAwKTsK PiArCQlyZXR1cm4gMDsKPiArCX0gZWxzZSBpZiAoIXJldCkgewo+ICsJCXJldHVybiAtRVRJTUVE T1VUOwo+ICsJfQo+ICsJcmV0dXJuIChpbnQpcmV0Owo+ICt9Cj4gKwo+ICBzdGF0aWMKPiAgaW50 IGludGVsX2RwX2hkY3Bfd3JpdGVfYW5fYWtzdihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCwKPiAgCQkJCXU4ICphbikKPiBAQCAtNTU3MCw2ICs1NTkyLDMxNiBAQCBp bnQgaW50ZWxfZHBfaGRjcF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gK3N0YXRpYyBzdHJ1Y3QgaGRjcDJf ZHBfbXNnX2RhdGEgewo+ICsJdTggbXNnX2lkOwo+ICsJdTMyIG9mZnNldDsKPiArCWJvb2wgbXNn X2RldGVjdGFibGU7Cj4gKwl1MzIgdGltZW91dDsKPiArCXUzMiB0aW1lb3V0MjsgLyogQWRkZWQg Zm9yIG5vbl9wYWlyZWQgc2l0dWF0aW9uICovCj4gKwl9IGhkY3AyX21zZ19kYXRhW10gPSB7Cj4g KwkJe0hEQ1BfMl8yX0FLRV9JTklULCBEUF9IRENQXzJfMl9BS0VfSU5JVF9PRkZTRVQsIGZhbHNl LCAwLCAwfSwKPiArCQl7SERDUF8yXzJfQUtFX1NFTkRfQ0VSVCwgRFBfSERDUF8yXzJfQUtFX1NF TkRfQ0VSVF9PRkZTRVQsCj4gKwkJCQlmYWxzZSwgSERDUF8yXzJfQ0VSVF9USU1FT1VUX01TLCAw fSwKPiArCQl7SERDUF8yXzJfQUtFX05PX1NUT1JFRF9LTSwgRFBfSERDUF8yXzJfQUtFX05PX1NU T1JFRF9LTV9PRkZTRVQsCj4gKwkJCQlmYWxzZSwgMCwgMH0sCj4gKwkJe0hEQ1BfMl8yX0FLRV9T VE9SRURfS00sIERQX0hEQ1BfMl8yX0FLRV9TVE9SRURfS01fT0ZGU0VULAo+ICsJCQkJZmFsc2Us IDAsIDB9LAo+ICsJCXtIRENQXzJfMl9BS0VfU0VORF9IUFJJTUUsIERQX0hEQ1BfMl8yX0FLRV9T RU5EX0hQUklNRV9PRkZTRVQsCj4gKwkJCQl0cnVlLCBIRENQXzJfMl9IUFJJTUVfUEFJUkVEX1RJ TUVPVVRfTVMsCj4gKwkJCQlIRENQXzJfMl9IUFJJTUVfTk9fUEFJUkVEX1RJTUVPVVRfTVN9LAo+ ICsJCXtIRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk8sCj4gKwkJCQlEUF9IRENQXzJfMl9B S0VfU0VORF9QQUlSSU5HX0lORk9fT0ZGU0VULCB0cnVlLAo+ICsJCQkJSERDUF8yXzJfUEFJUklO R19USU1FT1VUX01TLCAwfSwKPiArCQl7SERDUF8yXzJfTENfSU5JVCwgRFBfSERDUF8yXzJfTENf SU5JVF9PRkZTRVQsIGZhbHNlLCAwLCAwfSwKPiArCQl7SERDUF8yXzJfTENfU0VORF9MUFJJTUUs IERQX0hEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FX09GRlNFVCwKPiArCQkJCWZhbHNlLCBIRENQXzJf Ml9EUF9MUFJJTUVfVElNRU9VVF9NUywgMH0sCj4gKwkJe0hEQ1BfMl8yX1NLRV9TRU5EX0VLUywg RFBfSERDUF8yXzJfU0tFX1NFTkRfRUtTX09GRlNFVCwgZmFsc2UsCj4gKwkJCQkwLCAwfSwKPiAr CQl7SERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1QsCj4gKwkJCQlEUF9IRENQXzJfMl9SRVBf U0VORF9SRUNWSURfTElTVF9PRkZTRVQsIHRydWUsCj4gKwkJCQlIRENQXzJfMl9SRUNWSURfTElT VF9USU1FT1VUX01TLCAwfSwKPiArCQl7SERDUF8yXzJfUkVQX1NFTkRfQUNLLCBEUF9IRENQXzJf Ml9SRVBfU0VORF9BQ0tfT0ZGU0VULCBmYWxzZSwKPiArCQkJCTAsIDB9LAo+ICsJCXtIRENQXzJf Ml9SRVBfU1RSRUFNX01BTkFHRSwKPiArCQkJCURQX0hEQ1BfMl8yX1JFUF9TVFJFQU1fTUFOQUdF X09GRlNFVCwgZmFsc2UsCj4gKwkJCQkwLCAwfSwKPiArCQl7SERDUF8yXzJfUkVQX1NUUkVBTV9S RUFEWSwgRFBfSERDUF8yXzJfUkVQX1NUUkVBTV9SRUFEWV9PRkZTRVQsCj4gKwkJCQlmYWxzZSwg SERDUF8yXzJfU1RSRUFNX1JFQURZX1RJTUVPVVRfTVMsIDB9LAo+ICsJCXtIRENQXzJfMl9FUlJB VEFfRFBfU1RSRUFNX1RZUEUsCj4gKwkJCQlEUF9IRENQXzJfMl9SRUdfU1RSRUFNX1RZUEVfT0ZG U0VULCBmYWxzZSwKPiArCQkJCTAsIDB9LAo+ICsJCX07Cj4gKwo+ICtzdGF0aWMgaW5saW5lCj4g K2ludCBpbnRlbF9kcF9oZGNwMl9yZWFkX3J4X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICppbnRlbF9kaWdfcG9ydCwKPiArCQkJCSAgdTggKnJ4X3N0YXR1cykKPiArewo+ICsJc3Np emVfdCByZXQ7Cj4gKwo+ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZCgmaW50ZWxfZGlnX3BvcnQt PmRwLmF1eCwKPiArCQkJICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWFNUQVRVU19PRkZTRVQsIHJ4 X3N0YXR1cywKPiArCQkJICAgICAgIEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xFTik7Cj4gKwlpZiAo cmV0ICE9IEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0xFTikgewo+ICsJCURSTV9ERUJVR19LTVMoIlJl YWQgYnN0YXR1cyBmcm9tIERQL0FVWCBmYWlsZWQgKCV6ZClcbiIsIHJldCk7Cj4gKwkJcmV0dXJu IHJldCA+PSAwID8gLUVJTyA6IHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArc3RhdGljCj4gK2ludCBoZGNwMl9kZXRlY3RfbXNnX2F2YWlsYWJpbGl0eShzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiArCQkJCSAgdTggbXNnX2lkLCBib29s ICptc2dfcmVhZHkpCj4gK3sKPiArCXU4IHJ4X3N0YXR1czsKPiArCWludCByZXQ7Cj4gKwo+ICsJ Km1zZ19yZWFkeSA9IGZhbHNlOwo+ICsJcmV0ID0gaW50ZWxfZHBfaGRjcDJfcmVhZF9yeF9zdGF0 dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0 dXJuIHJldDsKPiArCj4gKwlzd2l0Y2ggKG1zZ19pZCkgewo+ICsJY2FzZSBIRENQXzJfMl9BS0Vf U0VORF9IUFJJTUU6Cj4gKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0hfUFJJTUUocnhfc3Rh dHVzKSkKPiArCQkJKm1zZ19yZWFkeSA9IHRydWU7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhEQ1Bf Ml8yX0FLRV9TRU5EX1BBSVJJTkdfSU5GTzoKPiArCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNf UEFJUklORyhyeF9zdGF0dXMpKQo+ICsJCQkqbXNnX3JlYWR5ID0gdHJ1ZTsKPiArCQlicmVhazsK PiArCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6Cj4gKwkJaWYgKEhEQ1BfMl8y X0RQX1JYU1RBVFVTX1JFQURZKHJ4X3N0YXR1cykpCj4gKwkJCSptc2dfcmVhZHkgPSB0cnVlOwo+ ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlEUk1fRVJST1IoIlVuaWRlbnRpZmllZCBtc2df aWQ6ICVkXG4iLCBtc2dfaWQpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJl dHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3NpemVfdAo+ICtpbnRlbF9kcF9oZGNwMl93YWl0 X2Zvcl9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gKwkJ CSAgICBzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgKmhkY3AyX21zZ19kYXRhKQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfZHAgKmRwID0gJmludGVsX2RpZ19wb3J0LT5kcDsKPiArCXN0cnVjdCBpbnRl bF9oZGNwICpoZGNwID0gJmRwLT5hdHRhY2hlZF9jb25uZWN0b3ItPmhkY3A7Cj4gKwlpbnQgcmV0 LCB0aW1lb3V0Owo+ICsJYm9vbCBtc2dfcmVhZHkgPSBmYWxzZTsKPiArCj4gKwlpZiAoaGRjcDJf bXNnX2RhdGEtPm1zZ19pZCA9PSBIRENQXzJfMl9BS0VfU0VORF9IUFJJTUUgJiYKPiArCSAgICAh aGRjcC0+aXNfcGFpcmVkKQo+ICsJCXRpbWVvdXQgPSBoZGNwMl9tc2dfZGF0YS0+dGltZW91dDI7 Cj4gKwllbHNlCj4gKwkJdGltZW91dCA9IGhkY3AyX21zZ19kYXRhLT50aW1lb3V0Owo+ICsKPiAr CS8qCj4gKwkgKiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZWN0IHRoZSBDRVJULCBMUFJJTUUgYW5k IFNUUkVBTV9SRUFEWQo+ICsJICogYXZhaWxhYmlsaXR5LiBTbyBXYWl0IGZvciB0aW1lb3V0IGFu ZCByZWFkIHRoZSBtc2cuCj4gKwkgKi8KPiArCWlmICghaGRjcDJfbXNnX2RhdGEtPm1zZ19kZXRl Y3RhYmxlKSB7Cj4gKwkJbWRlbGF5KHRpbWVvdXQpOwo+ICsJCXJldCA9IDA7Cj4gKwl9IGVsc2Ug ewo+ICsJCS8qCj4gKwkJICogSWdub3JpbmcgdGhlIHJldHVybiBvZiB0aGUgaW50ZWxfZHBfaGRj cF93YWl0X2Zvcl9jcF9pcnEsCj4gKwkJICogSnVzdCB0byBkZXRlY3QgdGhlIG1zZyBhdmFpbGFi aWxpdHkgYmVmb3JlIGZhaWxpbmcgaXQuCj4gKwkJICovCj4gKwkJaW50ZWxfZHBfaGRjcF93YWl0 X2Zvcl9jcF9pcnEoaGRjcCwgdGltZW91dCk7CgpJZiB5b3UgaWdub3JlIHRoZSBlcnJvciBvZiBh IHN0YXRpYyBmdW5jdGlvbiwgbWFrZSBpdCByZXR1cm4gdm9pZC4KT3RoZXJ3aXNlIGp1c3QgY29u ZnVzaW5nIHRvIHRoZSByZWFkZXIuCgo+ICsJCXJldCA9IGhkY3AyX2RldGVjdF9tc2dfYXZhaWxh YmlsaXR5KGludGVsX2RpZ19wb3J0LAo+ICsJCQkJCQkgICAgaGRjcDJfbXNnX2RhdGEtPm1zZ19p ZCwKPiArCQkJCQkJICAgICZtc2dfcmVhZHkpOwo+ICsJCWlmICghbXNnX3JlYWR5KQo+ICsJCQly ZXQgPSAtRVRJTUVET1VUOwo+ICsJfQo+ICsKPiArCWlmIChyZXQpCj4gKwkJRFJNX0RFQlVHX0tN UygibXNnX2lkICVkLCByZXQgJWQsIHRpbWVvdXQobVNlYyk6ICVkXG4iLAo+ICsJCQkgICAgICBo ZGNwMl9tc2dfZGF0YS0+bXNnX2lkLCByZXQsIHRpbWVvdXQpOwo+ICsKPiArCXJldHVybiByZXQ7 Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaGRjcDJfZHBfbXNnX2RhdGEgKmdldF9oZGNwMl9k cF9tc2dfZGF0YSh1OCBtc2dfaWQpCj4gK3sKPiArCWludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7 IGkgPCBzaXplb2YoaGRjcDJfbXNnX2RhdGEpOyBpKyspCj4gKwkJaWYgKGhkY3AyX21zZ19kYXRh W2ldLm1zZ19pZCA9PSBtc2dfaWQpCj4gKwkJCXJldHVybiAmaGRjcDJfbXNnX2RhdGFbaV07Cj4g Kwo+ICsJcmV0dXJuIE5VTEw7Cj4gK30KPiArCj4gK3N0YXRpYwo+ICtpbnQgaW50ZWxfZHBfaGRj cDJfd3JpdGVfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ ICsJCQkgICAgIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBv ZmZzZXQ7Cj4gKwl1OCAqYnl0ZSA9IGJ1ZjsKPiArCXNzaXplX3QgcmV0LCBieXRlc190b193cml0 ZSwgbGVuOwo+ICsJc3RydWN0IGhkY3AyX2RwX21zZ19kYXRhICpoZGNwMl9tc2dfZGF0YTsKPiAr Cj4gKwloZGNwMl9tc2dfZGF0YSA9IGdldF9oZGNwMl9kcF9tc2dfZGF0YSgqYnl0ZSk7Cj4gKwlp ZiAoIWhkY3AyX21zZ19kYXRhKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCW9mZnNldCA9 IGhkY3AyX21zZ19kYXRhLT5vZmZzZXQ7Cj4gKwo+ICsJLyogTm8gbXNnX2lkIGluIERQIEhEQ1Ay LjIgbXNncyAqLwo+ICsJYnl0ZXNfdG9fd3JpdGUgPSBzaXplIC0gMTsKPiArCWJ5dGUrKzsKPiAr Cj4gKwl3aGlsZSAoYnl0ZXNfdG9fd3JpdGUpIHsKPiArCQlsZW4gPSBieXRlc190b193cml0ZSA+ IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA/Cj4gKwkJCQlEUF9BVVhfTUFYX1BBWUxPQURfQllU RVMgOiBieXRlc190b193cml0ZTsKPiArCj4gKwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmlu dGVsX2RpZ19wb3J0LT5kcC5hdXgsCj4gKwkJCQkJb2Zmc2V0LCAodm9pZCAqKWJ5dGUsIGxlbik7 Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCWJ5dGVzX3RvX3dy aXRlIC09IHJldDsKPiArCQlieXRlICs9IHJldDsKPiArCQlvZmZzZXQgKz0gcmV0Owo+ICsJfQo+ ICsKPiArCXJldHVybiBzaXplOwo+ICt9Cj4gKwo+ICtzdGF0aWMKPiArc3NpemVfdCBnZXRfcmVj ZWl2ZXJfaWRfbGlzdF9zaXplKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0KQo+ICt7Cj4gKwl1OCByeF9pbmZvW0hEQ1BfMl8yX1JYSU5GT19MRU5dOwo+ICsJdTMyIGRl dl9jbnQ7Cj4gKwlzc2l6ZV90IHJldDsKPiArCj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZp bnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAo+ICsJCQkgICAgICAgRFBfSERDUF8yXzJfUkVHX1JYSU5G T19PRkZTRVQsCj4gKwkJCSAgICAgICAodm9pZCAqKXJ4X2luZm8sIEhEQ1BfMl8yX1JYSU5GT19M RU4pOwo+ICsJaWYgKHJldCAhPSBIRENQXzJfMl9SWElORk9fTEVOKQo+ICsJCXJldHVybiByZXQg Pj0gMCA/IC1FSU8gOiByZXQ7Cj4gKwo+ICsJZGV2X2NudCA9IChIRENQXzJfMl9ERVZfQ09VTlRf SEkocnhfaW5mb1swXSkgPDwgNCB8Cj4gKwkJICAgSERDUF8yXzJfREVWX0NPVU5UX0xPKHJ4X2lu Zm9bMV0pKTsKPiArCj4gKwlpZiAoZGV2X2NudCA+IEhEQ1BfMl8yX01BWF9ERVZJQ0VfQ09VTlQp Cj4gKwkJZGV2X2NudCA9IEhEQ1BfMl8yX01BWF9ERVZJQ0VfQ09VTlQ7Cj4gKwo+ICsJcmV0ID0g c2l6ZW9mKHN0cnVjdCBoZGNwMl9yZXBfc2VuZF9yZWNlaXZlcmlkX2xpc3QpIC0KPiArCQlIRENQ XzJfMl9SRUNFSVZFUl9JRFNfTUFYX0xFTiArCj4gKwkJKGRldl9jbnQgKiBIRENQXzJfMl9SRUNF SVZFUl9JRF9MRU4pOwo+ICsKPiArCXJldHVybiByZXQ7Cj4gK30KPiArCj4gK3N0YXRpYwo+ICtp bnQgaW50ZWxfZHBfaGRjcDJfcmVhZF9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50 ZWxfZGlnX3BvcnQsCj4gKwkJCSAgICB1OCBtc2dfaWQsIHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUp Cj4gK3sKPiArCXVuc2lnbmVkIGludCBvZmZzZXQ7Cj4gKwl1OCAqYnl0ZSA9IGJ1ZjsKPiArCXNz aXplX3QgcmV0LCBieXRlc190b19yZWN2LCBsZW47Cj4gKwlzdHJ1Y3QgaGRjcDJfZHBfbXNnX2Rh dGEgKmhkY3AyX21zZ19kYXRhOwo+ICsKPiArCWhkY3AyX21zZ19kYXRhID0gZ2V0X2hkY3AyX2Rw X21zZ19kYXRhKG1zZ19pZCk7Cj4gKwlpZiAoIWhkY3AyX21zZ19kYXRhKQo+ICsJCXJldHVybiAt RUlOVkFMOwo+ICsJb2Zmc2V0ID0gaGRjcDJfbXNnX2RhdGEtPm9mZnNldDsKPiArCj4gKwlyZXQg PSBpbnRlbF9kcF9oZGNwMl93YWl0X2Zvcl9tc2coaW50ZWxfZGlnX3BvcnQsIGhkY3AyX21zZ19k YXRhKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaWYgKG1zZ19p ZCA9PSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVCkgewo+ICsJCXJldCA9IGdldF9yZWNl aXZlcl9pZF9saXN0X3NpemUoaW50ZWxfZGlnX3BvcnQpOwo+ICsJCWlmIChyZXQgPCAwKQo+ICsJ CQlyZXR1cm4gcmV0Owo+ICsKPiArCQlzaXplID0gcmV0Owo+ICsJfQo+ICsJYnl0ZXNfdG9fcmVj diA9IHNpemUgLSAxOwo+ICsKPiArCS8qIERQIGFkYXB0YXRpb24gbXNncyBoYXMgbm8gbXNnX2lk ICovCj4gKwlieXRlKys7Cj4gKwo+ICsJd2hpbGUgKGJ5dGVzX3RvX3JlY3YpIHsKPiArCQlsZW4g PSBieXRlc190b19yZWN2ID4gRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8KPiArCQkgICAgICBE UF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRlc190b19yZWN2Owo+ICsKPiArCQlyZXQgPSBk cm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LCBvZmZzZXQsCj4gKwkJCQkg ICAgICAgKHZvaWQgKilieXRlLCBsZW4pOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCURSTV9E RUJVR19LTVMoIm1zZ19pZCAlZCwgcmV0ICV6ZFxuIiwgbXNnX2lkLCByZXQpOwo+ICsJCQlyZXR1 cm4gcmV0Owo+ICsJCX0KPiArCj4gKwkJYnl0ZXNfdG9fcmVjdiAtPSByZXQ7Cj4gKwkJYnl0ZSAr PSByZXQ7Cj4gKwkJb2Zmc2V0ICs9IHJldDsKPiArCX0KPiArCWJ5dGUgPSBidWY7Cj4gKwkqYnl0 ZSA9IG1zZ19pZDsKPiArCj4gKwlyZXR1cm4gc2l6ZTsKPiArfQo+ICsKPiArc3RhdGljCj4gK2lu dCBpbnRlbF9kcF9oZGNwMl9jb25maWdfc3RyZWFtX3R5cGUoc3RydWN0IGludGVsX2RpZ2l0YWxf cG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gKwkJCQkgICAgICB2b2lkICpidWYsIHNpemVfdCBzaXpl KQo+ICt7Cj4gKwlyZXR1cm4gaW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnKGludGVsX2RpZ19wb3J0 LCBidWYsIHNpemUpOwo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGludGVsX2RwX2hkY3AyX2No ZWNrX2xpbmsoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4gK3sK PiArCXU4IHJ4X3N0YXR1czsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaW50ZWxfZHBfaGRj cDJfcmVhZF9yeF9zdGF0dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMpOwo+ICsJaWYgKHJl dCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFV VEhfUkVRKHJ4X3N0YXR1cykpCj4gKwkJcmV0ID0gRFJNX0hEQ1BfUkVBVVRIX1JFUVVFU1Q7Cj4g KwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19MSU5LX0ZBSUxFRChyeF9zdGF0dXMpKQo+ ICsJCXJldCA9IERSTV9IRENQX0xJTktfSU5URUdSSVRZX0ZBSUxVUkU7Cj4gKwllbHNlIGlmIChI RENQXzJfMl9EUF9SWFNUQVRVU19SRUFEWShyeF9zdGF0dXMpKQo+ICsJCXJldCA9IERSTV9IRENQ X1RPUE9MT0dZX0NIQU5HRTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMK PiAraW50IGludGVsX2RwX2hkY3AyX2NhcGFibGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq aW50ZWxfZGlnX3BvcnQsCj4gKwkJCSAgIGJvb2wgKmNhcGFibGUpCj4gK3sKPiArCXU4IHJ4X2Nh cHNbM107Cj4gKwlpbnQgcmV0Owo+ICsKPiArCSpjYXBhYmxlID0gZmFsc2U7Cj4gKwlyZXQgPSBk cm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAo+ICsJCQkgICAgICAgRFBf SERDUF8yXzJfUkVHX1JYX0NBUFNfT0ZGU0VULAo+ICsJCQkgICAgICAgcnhfY2FwcywgSERDUF8y XzJfUlhDQVBTX0xFTik7Cj4gKwlpZiAocmV0ICE9IEhEQ1BfMl8yX1JYQ0FQU19MRU4pCj4gKwkJ cmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKPiArCj4gKwlpZiAocnhfY2Fwc1swXSA9PSBI RENQXzJfMl9SWF9DQVBTX1ZFUlNJT05fVkFMICYmCj4gKwkgICAgSERDUF8yXzJfRFBfSERDUF9D QVBBQkxFKHJ4X2NhcHNbMl0pKQo+ICsJCSpjYXBhYmxlID0gdHJ1ZTsKPiArCj4gKwlyZXR1cm4g MDsKPiArfQo+ICsKPiArc3RhdGljIGlubGluZQo+ICtlbnVtIG1laV9oZGNwX3dpcmVkX3Byb3Rv Y29sIGludGVsX2RwX2hkY3AyX3Byb3RvY29sKHZvaWQpCj4gK3sKPiArCXJldHVybiBNRUlfSERD UF9QUk9UT0NPTF9EUDsKPiArfQo+ICsKPiAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNw X3NoaW0gaW50ZWxfZHBfaGRjcF9zaGltID0gewo+ICAJLndyaXRlX2FuX2Frc3YgPSBpbnRlbF9k cF9oZGNwX3dyaXRlX2FuX2Frc3YsCj4gIAkucmVhZF9ia3N2ID0gaW50ZWxfZHBfaGRjcF9yZWFk X2Jrc3YsCj4gQEAgLTU1ODIsNiArNTkxNCwxMiBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGludGVs X2hkY3Bfc2hpbSBpbnRlbF9kcF9oZGNwX3NoaW0gPSB7Cj4gIAkudG9nZ2xlX3NpZ25hbGxpbmcg PSBpbnRlbF9kcF9oZGNwX3RvZ2dsZV9zaWduYWxsaW5nLAo+ICAJLmNoZWNrX2xpbmsgPSBpbnRl bF9kcF9oZGNwX2NoZWNrX2xpbmssCj4gIAkuaGRjcF9jYXBhYmxlID0gaW50ZWxfZHBfaGRjcF9j YXBhYmxlLAo+ICsJLndyaXRlXzJfMl9tc2cgPSBpbnRlbF9kcF9oZGNwMl93cml0ZV9tc2csCj4g KwkucmVhZF8yXzJfbXNnID0gaW50ZWxfZHBfaGRjcDJfcmVhZF9tc2csCj4gKwkuY29uZmlnX3N0 cmVhbV90eXBlID0gaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBlLAo+ICsJLmNoZWNr XzJfMl9saW5rID0gaW50ZWxfZHBfaGRjcDJfY2hlY2tfbGluaywKPiArCS5oZGNwXzJfMl9jYXBh YmxlID0gaW50ZWxfZHBfaGRjcDJfY2FwYWJsZSwKPiArCS5oZGNwX3Byb3RvY29sID0gaW50ZWxf ZHBfaGRjcDJfcHJvdG9jb2wsCj4gIH07Cj4gIAo+ICBzdGF0aWMgdm9pZCBpbnRlbF9lZHBfcGFu ZWxfdmRkX3Nhbml0aXplKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBpbmRleCBkNWFiMWZmOWNjNjkuLjJiNzE4MWI3NjQ3NSAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTQ1MCw2ICs0NTAsMTMgQEAgc3RydWN0IGludGVs X2hkY3Agewo+ICAJdTMyIHNlcV9udW1fbTsKPiAgCj4gIAlzdHJ1Y3QgZGVsYXllZF93b3JrIGhk Y3AyX2NoZWNrX3dvcms7Cj4gKwo+ICsJLyoKPiArCSAqIFdvcmsgcXVldWUgdG8gc2lnbmFsIHRo ZSBDUF9JUlEuIFVzZWQgZm9yIHRoZSB3YWl0ZXJzIHRvIHJlYWQgdGhlCj4gKwkgKiBhdmFpbGFi bGUgaW5mb3JtYXRpb24gZnJvbSBIRENQIERQIHNpbmsuCj4gKwkgKi8KPiArCXdhaXRfcXVldWVf aGVhZF90IGNwX2lycV9xdWV1ZTsKPiArCWF0b21pY190IGNwX2lycV9yZWN2ZWQ7Cj4gIH07Cj4g IAo+ICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5j Cj4gaW5kZXggYjllNWY3M2M2NDBkLi5iZTQ3NTkxNGMzY2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRjcC5jCj4gQEAgLTE4OTksNiArMTg5OSw5IEBAIGludCBpbnRlbF9oZGNwX2luaXQo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJaWYgKGhkY3AyX3N1cHBvcnRl ZCkKPiAgCQlpbnRlbF9oZGNwMl9pbml0KGNvbm5lY3Rvcik7Cj4gIAo+ICsJYXRvbWljX3NldCgm aGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7Cj4gKwlpbml0X3dhaXRxdWV1ZV9oZWFkKCZoZGNwLT5j cF9pcnFfcXVldWUpOwo+ICsKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0yMDM2LDQgKzIw MzksNyBAQCB2b2lkIGludGVsX2hkY3BfaGFuZGxlX2NwX2lycShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICpjb25uZWN0b3IpCj4gIAkJaW50ZWxfaGRjcF9jaGVja19saW5rKGNvbm5lY3Rvcik7Cj4g IAllbHNlIGlmIChpbnRlbF9oZGNwMl9pbl91c2UoY29ubmVjdG9yKSkKPiAgCQlpbnRlbF9oZGNw Ml9jaGVja19saW5rKGNvbm5lY3Rvcik7Cj4gKwo+ICsJYXRvbWljX3NldCgmY29ubmVjdG9yLT5o ZGNwLmNwX2lycV9yZWN2ZWQsIDEpOwo+ICsJd2FrZV91cF9hbGwoJmNvbm5lY3Rvci0+aGRjcC5j cF9pcnFfcXVldWUpOwoKVGhpcyBkZWFkbG9ja3MgdGhlIHdhaXRlciwgYW5kIHlvdSdsbCB0aW1l IG91dCAod2hpY2ggc2F2ZXMgdGhlIGRheSkuIElmCmNoZWNrX2xpbmsgbmVlZHMgdG8gZG8gc29t ZSBIRENQMiB3cml0ZXMsIHdoaWNoIG5lZWRzIHRvIHdhaXQgZm9yIHRoZSBjcAppbnRlcnJ1cHQs IHRoZW4gdGhpcyB3aWxsIG5ldmVyIGhhcHBlbmVkIGJlY2F1c2UgdGhlIGV4YWN0IHNhbWUgd29y a2VyIGlzCndhaXRpbmcgZm9yIHRoYXQgY3AgaW50ZXJydXB0IHRvIGJlIHNpZ25hbGVkLgoKWW91 IG5lZWQgMiB3b3JrZXJzIHRvIG1ha2UgdGhpcyB3b3JrOgoxLiBIYW5kbGVzIHRoZSBDUCBpbnRl cnJ1cHQgYW5kIGNhbGxzIHdha2VfdXBfYWxsKCksIHBsdXMgc2NoZWR1bGVzIHRoZQpjaGVja19s aW5rIHdvcmtlciAoaWYgbmVlZGVkIC4uLi4gaG93IHNob3VsZCB3ZSBkZWNpZGUgdGhhdCBleGFj dGx5PykKCjIuIDJuZCB3b3JrZXIgcnVucyB0aGUgY2hlY2tfbGluayB3b3JrLgoKVGhpcyB3YXkg dGhlIDJuZCB3b3JrZXIgY2FuIGdvIHRocm91Z2ggdGhlIGVudGlyZSBzZXF1ZW5jZSwgd2hpbGUg dGhlIDFzdAp3b3JrZXIgaGFuZGxlcyBpbnRlcnJ1cHRzIGFuZCBkb2VzIHdha2VfdXBfYWxsIGNh bGxzIGFzIG5lZWRlZC4gUHJvYmxlbQppcywgaWYgdGhlIGZpcnN0IHdvcmtlciBhbHNvIHNjaGVk dWxlcyB0aGUgMm5kIG9uZSwgeW91J3JlIG5vdyBpbiBhbgplbmRsZXNzIGxvb3AuCgpTaW5jZSB0 aGUgZW50aXJlIHRoaW5nIHNlZW1zIHRvIGJlIG5vdCB0aGF0IHdlbGwgdGhvdWdodCBvdXQ6IFdo YXQgYWJvdXQKanVzdCBnb2luZyB3aXRoIHRoZSBtc2xlZXAodGltZW91dCkgZm9yIG5vdywgYW5k IGZpZ3VyaW5nIHRoaXMgb3V0IGxhdGVyPwpEZWZhY3RvIHRoaXMgaXMgd2hhdCB5b3VyIGNvZGUg YWxyZWFkeSBkb2VzLgoKRm9yIHRoZSBoZGNwMiBsb2dpYyBpdHNlbGYgSSdtIGdvaW5nIHRvIHRy dXN0IFVtYSBhZ2Fpbi4KLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVl ciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==