From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 38/41] drm/i915: Implement the HDCP2.2 support for DP Date: Thu, 31 May 2018 09:22:01 +0200 Message-ID: <20180531072201.GN3438@phenom.ffwll.local> References: <1526907240-17639-1-git-send-email-ramalingam.c@intel.com> <1526907240-17639-39-git-send-email-ramalingam.c@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x244.google.com (mail-wm0-x244.google.com [IPv6:2a00:1450:400c:c09::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 26E5089E11 for ; Thu, 31 May 2018 07:22:06 +0000 (UTC) Received: by mail-wm0-x244.google.com with SMTP id j15-v6so659352wme.0 for ; Thu, 31 May 2018 00:22:06 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1526907240-17639-39-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: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, tomas.winkler@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXkgMjEsIDIwMTggYXQgMDY6MjM6NTdQTSArMDUzMCwgUmFtYWxpbmdhbSBDIHdy b3RlOgo+IEltcGxlbWVudHMgdGhlIERQIGFkYXB0YXRpb24gc3BlY2lmaWMgSERDUDIuMiBmdW5j dGlvbnMuCj4gCj4gVGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gdGhlIERQQ0QgcmVhZCBhbmQgd3Jp dGUgZm9yIGNvbW11bmljYXRpbmcgdGhlCj4gSERDUDIuMiBhdXRoIG1lc3NhZ2UgYmFjayBhbmQg Zm9ydGguCj4gCj4gTm90ZTogQ2hyaXMgV2lsc29uIHN1Z2dlc3RlZCBhbHRlcm5hdGUgbWV0aG9k IGZvciB3YWl0aW5nIGZvciBDUF9JUlEsCj4gdGhhbiBjb21wbGV0aW9ucyBjb25jZXB0LiBXSVAg dG8gdW5kZXJzdGFuZCBhbmQgaW1wbGVtZW50IHRoYXQsCj4gaWYgbmVlZGVkLiBKdXN0IHRvIHVu YmxvY2sgdGhlIHJldmlldyBvZiBvdGhlciBjaGFuZ2VzLCB2MiBzdGlsbAo+IGNvbnRpbnVlcyB3 aXRoIGNvbXBsZXRpb25zLgo+IAo+IHYyOgo+ICAgd2FpdCBmb3IgY3BfaXJxIGlzIG1lcmdlZCB3 aXRoIHRoaXMgcGF0Y2guIFJlYmFzZWQuCj4gdjM6Cj4gICB3YWl0X3F1ZXVlIGlzIHVzZWQgZm9y IHdhaXQgZm9yIGNwX2lycSBbQ2hyaXMgV2lsc29uXQo+IHY0Ogo+ICAgU3R5bGUgZml4ZWQuCj4g ICAlcy9QQVJJTkcvUEFJUklORwo+ICAgRmV3IHN0eWxlIGZpeGVzIFtVbWFdCj4gCj4gU2lnbmVk LW9mZi1ieTogUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29tPgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgfCAzNTggKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg IHwgICA3ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIHwgICA1ICsKPiAg MyBmaWxlcyBjaGFuZ2VkLCAzNzAgaW5zZXJ0aW9ucygrKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+IGluZGV4IDUyODQwN2Q2MDhjOC4uZWU3MWEyNmVjMjNmIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCj4gQEAgLTMxLDYgKzMxLDcgQEAKPiAgI2luY2x1ZGUgPGxpbnV4L3R5cGVz Lmg+Cj4gICNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+ICAjaW5jbHVkZSA8bGludXgvcmVi b290Lmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9tZWlfaGRjcC5oPgo+ICAjaW5jbHVkZSA8YXNtL2J5 dGVvcmRlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgo+IEBAIC01MDU3LDYgKzUwNTgsMjggQEAgdm9pZCBpbnRlbF9kcF9l bmNvZGVyX3N1c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpCj4gIAlw cHNfdW5sb2NrKGludGVsX2RwKTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBpbnRlbF9kcF9oZGNw X3dhaXRfZm9yX2NwX2lycShzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCwKPiArCQkJCQkgaW50IHRp bWVvdXQpCj4gK3sKPiArCWxvbmcgcmV0Owo+ICsKPiArCS8qIFJlaW5pdCAqLwo+ICsJYXRvbWlj X3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7Cj4gKwo+ICsjZGVmaW5lIEMgKGF0b21pY19y ZWFkKCZoZGNwLT5jcF9pcnFfcmVjdmVkKSA+IDApCj4gKwlyZXQgPSB3YWl0X2V2ZW50X2ludGVy cnVwdGlibGVfdGltZW91dChoZGNwLT5jcF9pcnFfcXVldWUsIEMsCj4gKwkJCQkJICAgICAgIG1z ZWNzX3RvX2ppZmZpZXModGltZW91dCkpOwo+ICsKPiArCWlmIChyZXQgPiAwKSB7Cj4gKwkJYXRv bWljX3NldCgmaGRjcC0+Y3BfaXJxX3JlY3ZlZCwgMCk7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9IGVs c2UgaWYgKCFyZXQpIHsKPiArCQlyZXR1cm4gLUVUSU1FRE9VVDsKPiArCX0KPiArCXJldHVybiAo aW50KXJldDsKPiArfQo+ICsKPiArCj4gIHN0YXRpYwo+ICBpbnQgaW50ZWxfZHBfaGRjcF93cml0 ZV9hbl9ha3N2KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAJ CQkJdTggKmFuKQo+IEBAIC01Mjc1LDYgKzUyOTgsMzM1IEBAIGludCBpbnRlbF9kcF9oZGNwX2Nh cGFibGUoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAlyZXR1 cm4gMDsKPiAgfQo+ICAKPiArc3RhdGljCj4gK2ludCBpbnRlbF9kcGNkX29mZnNldF9mb3JfaGRj cDJfbXNnaWQodWludDhfdCBieXRlLCB1bnNpZ25lZCBpbnQgKm9mZnNldCkKClVnaCwgdGhpcyBp cyBhbm5veWluZyB0aGF0IHdlIGhhdmUgdG8gbWFwIHRoaW5ncyBhcm91bmQgbGlrZSB0aGF0LiBC dXQKbG9va2luZyBhdCB0aGUgbnVtYmVycyB0aGUgc3RhbmRhcmRzIHJlYWxseSBkb24ndCBzZWVt IHRvIG1hdGNoIGF0IGFsbC4KCkluc3RlYWQgb2Ygb3Blbi1jb2RpbmcgdGhpcyBJIHN1Z2dlc3Rl ZCB5b3UgdXNlIGEgdGFibGUgd2l0aCBhIHN0cnVjdApsaWtlOgoKY29uc3Qgc3RhdGljIHN0cnVj dCBoZGNwX2RwIHsKCWludCBoZGNwX21zZzsKCWludCBkcGNkX29mZnNldDsKCWludCB0aW1lb3V0 OwoJLyogd2hhdGV2ZXIgZWxzZSB5b3UgbWlnaHQgbmVlZCAqLwp9IGhkY3BfMl9kcF90YWJsZVtd ID0gewoJeyBIRENQXzJfMl9BS0VfSU5JVCwgRFBfSERDUF8yXzJfQUtFX0lOSVRfT0ZGU0VULCAu Li4gfSwKCS4uLgp9OwoKVGhlbiBqdXN0IHNlYXJjaCB0aGF0IHRhYmxlIGluIHRoZSBjb2RlIGlu c3RlYWQgb2YgdGhlIGh1Z2Ugc3dpdGNoIHRhYmxlCmJlbG93LgoKPiArewo+ICsJc3dpdGNoIChi eXRlKSB7Cj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9JTklUOgo+ICsJCSpvZmZzZXQgPSBEUF9IRENQ XzJfMl9BS0VfSU5JVF9PRkZTRVQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9T RU5EX0NFUlQ6Cj4gKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0FLRV9TRU5EX0NFUlRfT0ZGU0VU Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSBIRENQXzJfMl9BS0VfTk9fU1RPUkVEX0tNOgo+ICsJCSpv ZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfTk9fU1RPUkVEX0tNX09GRlNFVDsKPiArCQlicmVhazsK PiArCWNhc2UgSERDUF8yXzJfQUtFX1NUT1JFRF9LTToKPiArCQkqb2Zmc2V0ID0gRFBfSERDUF8y XzJfQUtFX1NUT1JFRF9LTV9PRkZTRVQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhEQ1BfMl8yX0FL RV9TRU5EX0hQUklNRToKPiArCQkqb2Zmc2V0ID0gRFBfSERDUF8yXzJfQUtFX1NFTkRfSFBSSU1F X09GRlNFVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8yXzJfQUtFX1NFTkRfUEFJUklOR19J TkZPOgo+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9BS0VfU0VORF9QQUlSSU5HX0lORk9fT0ZG U0VUOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBIRENQXzJfMl9MQ19JTklUOgo+ICsJCSpvZmZzZXQg PSBEUF9IRENQXzJfMl9MQ19JTklUX09GRlNFVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8y XzJfTENfU0VORF9MUFJJTUU6Cj4gKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX0xDX1NFTkRfTFBS SU1FX09GRlNFVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8yXzJfU0tFX1NFTkRfRUtTOgo+ ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9TS0VfU0VORF9FS1NfT0ZGU0VUOwo+ICsJCWJyZWFr Owo+ICsJY2FzZSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKPiArCQkqb2Zmc2V0ID0g RFBfSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1RfT0ZGU0VUOwo+ICsJCWJyZWFrOwo+ICsJ Y2FzZSBIRENQXzJfMl9SRVBfU0VORF9BQ0s6Cj4gKwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JF UF9TRU5EX0FDS19PRkZTRVQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9TVFJF QU1fTUFOQUdFOgo+ICsJCSpvZmZzZXQgPSBEUF9IRENQXzJfMl9SRVBfU1RSRUFNX01BTkFHRV9P RkZTRVQ7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFk6Cj4g KwkJKm9mZnNldCA9IERQX0hEQ1BfMl8yX1JFUF9TVFJFQU1fUkVBRFlfT0ZGU0VUOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBIRENQXzJfMl9FUlJBVEFfRFBfU1RSRUFNX1RZUEU6Cj4gKwkJKm9mZnNl dCA9IERQX0hEQ1BfMl8yX1JFR19TVFJFQU1fVFlQRV9PRkZTRVQ7Cj4gKwkJYnJlYWs7Cj4gKwlk ZWZhdWx0Ogo+ICsJCURSTV9FUlJPUigiVW5yZWNvZ25pemVkIE1zZyBJRFxuIik7Cj4gKwkJcmV0 dXJuIC1FSU5WQUw7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBp bmxpbmUKPiAraW50IGludGVsX2RwX2hkY3AyX3JlYWRfcnhfc3RhdHVzKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkJICB1aW50OF90ICpyeF9zdGF0dXMp Cj4gK3sKPiArCXNzaXplX3QgcmV0Owo+ICsKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmlu dGVsX2RpZ19wb3J0LT5kcC5hdXgsCj4gKwkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhTVEFU VVNfT0ZGU0VULCByeF9zdGF0dXMsCj4gKwkJCSAgICAgICBIRENQXzJfMl9EUF9SWFNUQVRVU19M RU4pOwo+ICsJaWYgKHJldCAhPSBIRENQXzJfMl9EUF9SWFNUQVRVU19MRU4pIHsKPiArCQlEUk1f RVJST1IoIlJlYWQgYnN0YXR1cyBmcm9tIERQL0FVWCBmYWlsZWQgKCVsZClcbiIsIHJldCk7Cj4g KwkJcmV0dXJuIHJldCA+PSAwID8gLUVJTyA6IHJldDsKPiArCX0KPiArCj4gKwlyZXR1cm4gMDsK PiArfQo+ICsKPiArc3RhdGljCj4gK2ludCBpbnRlbF9kcF9oZGNwMl90aW1lb3V0X2Zvcl9tc2co dWludDhfdCBtc2dfaWQsIGJvb2wgcGFpcmVkKQoKRm9yIHRoZSB0aW1lb3V0IGFuZCB0aGUgYXZh aWxhYmlsaXR5IGNoZWNrIGJlbG93LCBpcyB0aGF0IG5vdCB0aGUgc2FtZSBmb3IKaGRtaT8gTWln aHQgYmUgZ29vZCB0byBzZXQgdGhlIHRpbWVvdXQvY2hlY2sgdmFsdWVzIG9uY2UsIGFuZCBwZXJo YXBzIHBhc3MKdGhhdCB0aGVuIGRvd24gdG8gdGhlIGRwL2hkbWkgaW1wbGVtZW50YXRpb24sIGlu c3RlYWQgb2YgY29tcHV0aW5nIGl0CmhlcmUuCgpBbGwgdGhlc2UgZnVuY3Rpb25zIGhlcmUgbG9v ayBsaWtlIGEgaHVnZSBsYXllcmluZyB2aW9sYXRpb24uIEltbyBhbGwgdGhpcwp0aW1lb3V0IHN0 dWZmIHNob3VsZCBiZSBoYW5kbGVkIGhpZ2hlciB1cCwgb3IgYXQgbGVhc3QgbW9yZSB0aWdodGx5 Cmdyb3VwZWQgdG9nZXRoZXIuCgpSZW1hcHBpbmcgZnJvbSB0aGUgSERDUF8yXzIgZGVmaW5lcyB0 byB0aGUgZHBjZCBvZmZzZXRzIGlzIGltbyBkaWZmZXJlbnQKdGhhbiBhbGwgdGhlIHN0dWZmIGJl bG93IGhlcmUuCi1EYW5pZWwKCj4gK3sKPiArCWludCB0aW1lb3V0Owo+ICsKPiArCXN3aXRjaCAo bXNnX2lkKSB7Cj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQ6Cj4gKwkJdGltZW91dCA9 IEhEQ1BfMl8yX0NFUlRfVElNRU9VVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8yXzJfQUtF X1NFTkRfSFBSSU1FOgo+ICsJCWlmIChwYWlyZWQpCj4gKwkJCXRpbWVvdXQgPSBIRENQXzJfMl9I UFJJTUVfUEFJUkVEX1RJTUVPVVQ7Cj4gKwkJZWxzZQo+ICsJCQl0aW1lb3V0ID0gSERDUF8yXzJf SFBSSU1FX05PX1BBSVJFRF9USU1FT1VUOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSBIRENQXzJfMl9B S0VfU0VORF9QQUlSSU5HX0lORk86Cj4gKwkJdGltZW91dCA9IEhEQ1BfMl8yX1BBSVJJTkdfVElN RU9VVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8yXzJfTENfU0VORF9MUFJJTUU6Cj4gKwkJ dGltZW91dCA9IEhEQ1BfMl8yX0RQX0xQUklNRV9USU1FT1VUOwo+ICsJCWJyZWFrOwo+ICsJY2Fz ZSBIRENQXzJfMl9SRVBfU0VORF9SRUNWSURfTElTVDoKPiArCQl0aW1lb3V0ID0gSERDUF8yXzJf UkVDVklEX0xJU1RfVElNRU9VVDsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8yXzJfUkVQX1NU UkVBTV9SRUFEWToKPiArCQl0aW1lb3V0ID0gSERDUF8yXzJfU1RSRUFNX1JFQURZX1RJTUVPVVQ7 Cj4gKwkJYnJlYWs7Cj4gKwlkZWZhdWx0Ogo+ICsJCXRpbWVvdXQgPSAtRUlOVkFMOwo+ICsJCURS TV9FUlJPUigiVW5zdXBwb3J0ZWQgbXNnX2lkOiAlZFxuIiwgKGludCltc2dfaWQpOwo+ICsJfQo+ ICsKPiArCXJldHVybiB0aW1lb3V0Owo+ICt9Cj4gKwo+ICtzdGF0aWMKPiAraW50IGhkY3AyX2Rl dGVjdF9tc2dfYXZhaWxhYmlsaXR5KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0LAo+ICsJCQkJICB1aW50OF90IG1zZ19pZCwgYm9vbCAqbXNnX3JlYWR5KQo+ICt7Cj4g Kwl1aW50OF90IHJ4X3N0YXR1czsKPiArCWludCByZXQ7Cj4gKwo+ICsJKm1zZ19yZWFkeSA9IGZh bHNlOwo+ICsJcmV0ID0gaW50ZWxfZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMoaW50ZWxfZGlnX3Bv cnQsICZyeF9zdGF0dXMpOwo+ICsJaWYgKHJldCA8IDApCj4gKwkJcmV0dXJuIHJldDsKPiArCj4g Kwlzd2l0Y2ggKG1zZ19pZCkgewo+ICsJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9IUFJJTUU6Cj4g KwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX0hfUFJJTUUocnhfc3RhdHVzKSkKPiArCQkJKm1z Z19yZWFkeSA9IHRydWU7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX1BB SVJJTkdfSU5GTzoKPiArCQlpZiAoSERDUF8yXzJfRFBfUlhTVEFUVVNfUEFJUklORyhyeF9zdGF0 dXMpKQo+ICsJCQkqbXNnX3JlYWR5ID0gdHJ1ZTsKPiArCQlicmVhazsKPiArCWNhc2UgSERDUF8y XzJfUkVQX1NFTkRfUkVDVklEX0xJU1Q6Cj4gKwkJaWYgKEhEQ1BfMl8yX0RQX1JYU1RBVFVTX1JF QURZKHJ4X3N0YXR1cykpCj4gKwkJCSptc2dfcmVhZHkgPSB0cnVlOwo+ICsJCWJyZWFrOwo+ICsJ ZGVmYXVsdDoKPiArCQlEUk1fREVCVUdfS01TKCJVbmlkZW50aWZpZWQgbXNnX2lkOiAlZFxuIiwg KGludCltc2dfaWQpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICsKPiArc3RhdGljIHNzaXplX3QKPiAraW50ZWxfZHBfaGRjcDJfd2FpdF9m b3JfbXNnKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkg ICAgdWludDhfdCBtc2dfaWQpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9kcCAqZHAgPSAmaW50ZWxf ZGlnX3BvcnQtPmRwOwo+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmZHAtPmF0dGFjaGVk X2Nvbm5lY3Rvci0+aGRjcDsKPiArCWludCByZXQsIHRpbWVvdXQ7Cj4gKwlib29sIG1zZ19yZWFk eSA9IGZhbHNlOwo+ICsKPiArCXRpbWVvdXQgPSBpbnRlbF9kcF9oZGNwMl90aW1lb3V0X2Zvcl9t c2cobXNnX2lkLCBoZGNwLT5pc19wYWlyZWQpOwo+ICsJc3dpdGNoIChtc2dfaWQpIHsKPiArCj4g KwkvKgo+ICsJICogVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVjdCB0aGUgQ0VSVCwgTFBSSU1FIGFu ZCBTVFJFQU1fUkVBRFkKPiArCSAqIGF2YWlsYWJpbGl0eS4gU28gV2FpdCBmb3IgdGltZW91dCBh bmQgcmVhZCB0aGUgbXNnLgo+ICsJICovCj4gKwljYXNlIEhEQ1BfMl8yX0FLRV9TRU5EX0NFUlQ6 Cj4gKwljYXNlIEhEQ1BfMl8yX0xDX1NFTkRfTFBSSU1FOgo+ICsJY2FzZSBIRENQXzJfMl9SRVBf U1RSRUFNX1JFQURZOgo+ICsJCW1kZWxheSh0aW1lb3V0KTsKPiArCQlyZXQgPSAwOwo+ICsJCWJy ZWFrOwo+ICsJY2FzZSBIRENQXzJfMl9BS0VfU0VORF9IUFJJTUU6Cj4gKwljYXNlIEhEQ1BfMl8y X0FLRV9TRU5EX1BBSVJJTkdfSU5GTzoKPiArCWNhc2UgSERDUF8yXzJfUkVQX1NFTkRfUkVDVklE X0xJU1Q6Cj4gKwkJaW50ZWxfZHBfaGRjcF93YWl0X2Zvcl9jcF9pcnEoaGRjcCwgdGltZW91dCk7 Cj4gKwkJcmV0ID0gaGRjcDJfZGV0ZWN0X21zZ19hdmFpbGFiaWxpdHkoaW50ZWxfZGlnX3BvcnQs IG1zZ19pZCwKPiArCQkJCQkJICAgICZtc2dfcmVhZHkpOwo+ICsJCWlmICghbXNnX3JlYWR5KQo+ ICsJCQlyZXQgPSAtRVRJTUVET1VUOwo+ICsJCWJyZWFrOwo+ICsJZGVmYXVsdDoKPiArCQlEUk1f REVCVUdfS01TKCJVbmlkZW50aWZpZWQgbXNnX2lkOiAlZFxuIiwgKGludCltc2dfaWQpOwo+ICsJ CXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsJaWYgKHJldCkKPiArCQlEUk1fRVJST1IoIm1zZ19p ZCAlZCwgcmV0ICVkLCB0aW1lb3V0KG1TZWMpOiAlZFxuIiwgbXNnX2lkLCByZXQsCj4gKwkJCSAg dGltZW91dCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3RhdGljCj4gK2ludCBp bnRlbF9kcF9oZGNwMl93cml0ZV9tc2coc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCj4gKwkJCSAgICAgdm9pZCAqYnVmLCBzaXplX3Qgc2l6ZSkKPiArewo+ICsJdW5z aWduZWQgaW50IG9mZnNldDsKPiArCXVpbnQ4X3QgKmJ5dGUgPSBidWY7Cj4gKwlzc2l6ZV90IHJl dCwgYnl0ZXNfdG9fd3JpdGUsIGxlbjsKPiArCj4gKwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRfZm9y X2hkY3AyX21zZ2lkKCpieXRlLCAmb2Zmc2V0KSA8IDApCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4g Kwo+ICsJLyogTm8gbXNnX2lkIGluIERQIEhEQ1AyLjIgbXNncyAqLwo+ICsJYnl0ZXNfdG9fd3Jp dGUgPSBzaXplIC0gMTsKPiArCWJ5dGUrKzsKPiArCj4gKwl3aGlsZSAoYnl0ZXNfdG9fd3JpdGUp IHsKPiArCQlsZW4gPSBieXRlc190b193cml0ZSA+IERQX0FVWF9NQVhfUEFZTE9BRF9CWVRFUyA/ Cj4gKwkJCQlEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRlc190b193cml0ZTsKPiArCj4g KwkJcmV0ID0gZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgsIG9mZnNl dCwKPiArCQkJCQkodm9pZCAqKWJ5dGUsIGxlbik7Cj4gKwkJaWYgKHJldCA8IDApCj4gKwkJCXJl dHVybiByZXQ7Cj4gKwo+ICsJCWJ5dGVzX3RvX3dyaXRlIC09IHJldDsKPiArCQlieXRlICs9IHJl dDsKPiArCQlvZmZzZXQgKz0gcmV0Owo+ICsJfQo+ICsKPiArCXJldHVybiBzaXplOwo+ICt9Cj4g Kwo+ICtzdGF0aWMKPiAraW50IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkgICAgdWludDhfdCBtc2dfaWQsIHZv aWQgKmJ1Ziwgc2l6ZV90IHNpemUpCj4gK3sKPiArCXVuc2lnbmVkIGludCBvZmZzZXQsIGRldl9j bnQ7Cj4gKwl1aW50OF90ICpieXRlID0gYnVmOwo+ICsJdWludDhfdCByeF9pbmZvW0hEQ1BfMl8y X1JYSU5GT19MRU5dOwo+ICsJc3NpemVfdCByZXQsIGJ5dGVzX3RvX3JlY3YsIGxlbjsKPiArCj4g KwlpZiAoaW50ZWxfZHBjZF9vZmZzZXRfZm9yX2hkY3AyX21zZ2lkKG1zZ19pZCwgJm9mZnNldCkg PCAwKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXJldCA9IGludGVsX2RwX2hkY3AyX3dh aXRfZm9yX21zZyhpbnRlbF9kaWdfcG9ydCwgbXNnX2lkKTsKPiArCWlmIChyZXQgPCAwKQo+ICsJ CXJldHVybiByZXQ7Cj4gKwo+ICsJLyogRmluZGluZyB0aGUgUmVjZWl2ZXJJRCBMaXN0IHNpemUg Ki8KPiArCWlmIChtc2dfaWQgPT0gSERDUF8yXzJfUkVQX1NFTkRfUkVDVklEX0xJU1QpIHsKPiAr CQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LAo+ICsJCQkJ ICAgICAgIERQX0hEQ1BfMl8yX1JFR19SWElORk9fT0ZGU0VULAo+ICsJCQkJICAgICAgICh2b2lk ICopcnhfaW5mbywgSERDUF8yXzJfUlhJTkZPX0xFTik7Cj4gKwkJaWYgKHJldCAhPSBIRENQXzJf Ml9SWElORk9fTEVOKQo+ICsJCQlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0Owo+ICsKPiAr CQlkZXZfY250ID0gKEhEQ1BfMl8yX0RFVl9DT1VOVF9ISShyeF9pbmZvWzBdKSA8PCA0IHwKPiAr CQkJICAgSERDUF8yXzJfREVWX0NPVU5UX0xPKHJ4X2luZm9bMV0pKTsKPiArCj4gKwkJaWYgKGRl dl9jbnQgPiBIRENQXzJfMl9NQVhfREVWSUNFX0NPVU5UKQo+ICsJCQlkZXZfY250ID0gSERDUF8y XzJfTUFYX0RFVklDRV9DT1VOVDsKPiArCj4gKwkJc2l6ZSA9IHNpemVvZihzdHJ1Y3QgaGRjcDJf cmVwX3NlbmRfcmVjZWl2ZXJpZF9saXN0KSAtCj4gKwkJICAgICAgIEhEQ1BfMl8yX1JFQ0VJVkVS X0lEU19NQVhfTEVOICsKPiArCQkgICAgICAgKGRldl9jbnQgKiBIRENQXzJfMl9SRUNFSVZFUl9J RF9MRU4pOwo+ICsJfQo+ICsKPiArCWJ5dGVzX3RvX3JlY3YgPSBzaXplIC0gMTsKPiArCj4gKwkv KiBUbyBza2lwIHRoZSBtc2dfaWQsIGFzIG1zZ3MgaW4gRFAgYWRhcHRhdGlvbiBoYXMgbm8gbXNn X2lkICovCj4gKwlieXRlKys7Cj4gKwo+ICsJd2hpbGUgKGJ5dGVzX3RvX3JlY3YpIHsKPiArCQls ZW4gPSBieXRlc190b19yZWN2ID4gRFBfQVVYX01BWF9QQVlMT0FEX0JZVEVTID8KPiArCQkgICAg ICBEUF9BVVhfTUFYX1BBWUxPQURfQllURVMgOiBieXRlc190b19yZWN2Owo+ICsKPiArCQlyZXQg PSBkcm1fZHBfZHBjZF9yZWFkKCZpbnRlbF9kaWdfcG9ydC0+ZHAuYXV4LCBvZmZzZXQsCj4gKwkJ CQkgICAgICAgKHZvaWQgKilieXRlLCBsZW4pOwo+ICsJCWlmIChyZXQgPCAwKSB7Cj4gKwkJCURS TV9ERUJVR19LTVMoIm1zZ19pZCAlZCwgcmV0ICVkXG4iLCBtc2dfaWQsIChpbnQpcmV0KTsKPiAr CQkJcmV0dXJuIHJldDsKPiArCQl9Cj4gKwo+ICsJCWJ5dGVzX3RvX3JlY3YgLT0gcmV0Owo+ICsJ CWJ5dGUgKz0gcmV0Owo+ICsJCW9mZnNldCArPSByZXQ7Cj4gKwl9Cj4gKwlieXRlID0gYnVmOwo+ ICsJKmJ5dGUgPSBtc2dfaWQ7Cj4gKwo+ICsJcmV0dXJuIHNpemU7Cj4gK30KPiArCj4gK3N0YXRp Ywo+ICtpbnQgaW50ZWxfZHBfaGRjcDJfY29uZmlnX3N0cmVhbV90eXBlKHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICsJCQkJICAgICAgdm9pZCAqYnVmLCBzaXpl X3Qgc2l6ZSkKPiArewo+ICsJcmV0dXJuIGludGVsX2RwX2hkY3AyX3dyaXRlX21zZyhpbnRlbF9k aWdfcG9ydCwgYnVmLCBzaXplKTsKPiArfQo+ICsKPiArc3RhdGljCj4gK2ludCBpbnRlbF9kcF9o ZGNwMl9jaGVja19saW5rKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0 KQo+ICt7Cj4gKwl1aW50OF90IHJ4X3N0YXR1czsKPiArCWludCByZXQ7Cj4gKwo+ICsJcmV0ID0g aW50ZWxfZHBfaGRjcDJfcmVhZF9yeF9zdGF0dXMoaW50ZWxfZGlnX3BvcnQsICZyeF9zdGF0dXMp Owo+ICsJaWYgKHJldCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWlmIChIRENQXzJfMl9EUF9S WFNUQVRVU19SRUFVVEhfUkVRKHJ4X3N0YXR1cykpCj4gKwkJcmV0ID0gRFJNX0hEQ1BfUkVBVVRI X1JFUVVFU1Q7Cj4gKwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19MSU5LX0ZBSUxFRChy eF9zdGF0dXMpKQo+ICsJCXJldCA9IERSTV9IRENQX0xJTktfSU5URUdSSVRZX0ZBSUxVUkU7Cj4g KwllbHNlIGlmIChIRENQXzJfMl9EUF9SWFNUQVRVU19SRUFEWShyeF9zdGF0dXMpKQo+ICsJCXJl dCA9IERSTV9IRENQX1RPUE9MT0dZX0NIQU5HRTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4g Kwo+ICtzdGF0aWMKPiAraW50IGludGVsX2RwX2hkY3AyX2NhcGFibGUoc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gKwkJCSAgIGJvb2wgKmNhcGFibGUpCj4gK3sK PiArCXVpbnQ4X3QgcnhfY2Fwc1szXTsKPiArCWludCByZXQ7Cj4gKwo+ICsJKmNhcGFibGUgPSBm YWxzZTsKPiArCXJldCA9IGRybV9kcF9kcGNkX3JlYWQoJmludGVsX2RpZ19wb3J0LT5kcC5hdXgs Cj4gKwkJCSAgICAgICBEUF9IRENQXzJfMl9SRUdfUlhfQ0FQU19PRkZTRVQsCj4gKwkJCSAgICAg ICByeF9jYXBzLCBIRENQXzJfMl9SWENBUFNfTEVOKTsKPiArCWlmIChyZXQgIT0gSERDUF8yXzJf UlhDQVBTX0xFTikKPiArCQlyZXR1cm4gcmV0ID49IDAgPyAtRUlPIDogcmV0Owo+ICsKPiArCWlm IChyeF9jYXBzWzBdID09IEhEQ1BfMl8yX1JYQ0FQU19WRVJTSU9OX1ZBTCAmJgo+ICsJICAgIEhE Q1BfMl8yX0RQX0hEQ1BfQ0FQQUJMRShyeF9jYXBzWzJdKSkKPiArCQkqY2FwYWJsZSA9IHRydWU7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYwo+ICtlbnVtIGhkY3BfcHJvdG9j b2wgaW50ZWxfZHBfaGRjcDJfcHJvdG9jb2wodm9pZCkKPiArewo+ICsJcmV0dXJuIEhEQ1BfUFJP VE9DT0xfRFA7Cj4gK30KPiArCj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGlt IGludGVsX2RwX2hkY3Bfc2hpbSA9IHsKPiAgCS53cml0ZV9hbl9ha3N2ID0gaW50ZWxfZHBfaGRj cF93cml0ZV9hbl9ha3N2LAo+ICAJLnJlYWRfYmtzdiA9IGludGVsX2RwX2hkY3BfcmVhZF9ia3N2 LAo+IEBAIC01Mjg3LDYgKzU2MzksMTIgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlbF9oZGNw X3NoaW0gaW50ZWxfZHBfaGRjcF9zaGltID0gewo+ICAJLnRvZ2dsZV9zaWduYWxsaW5nID0gaW50 ZWxfZHBfaGRjcF90b2dnbGVfc2lnbmFsbGluZywKPiAgCS5jaGVja19saW5rID0gaW50ZWxfZHBf aGRjcF9jaGVja19saW5rLAo+ICAJLmhkY3BfY2FwYWJsZSA9IGludGVsX2RwX2hkY3BfY2FwYWJs ZSwKPiArCS53cml0ZV8yXzJfbXNnID0gaW50ZWxfZHBfaGRjcDJfd3JpdGVfbXNnLAo+ICsJLnJl YWRfMl8yX21zZyA9IGludGVsX2RwX2hkY3AyX3JlYWRfbXNnLAo+ICsJLmNvbmZpZ19zdHJlYW1f dHlwZSA9IGludGVsX2RwX2hkY3AyX2NvbmZpZ19zdHJlYW1fdHlwZSwKPiArCS5jaGVja18yXzJf bGluayA9IGludGVsX2RwX2hkY3AyX2NoZWNrX2xpbmssCj4gKwkuaGRjcF8yXzJfY2FwYWJsZSA9 IGludGVsX2RwX2hkY3AyX2NhcGFibGUsCj4gKwkuaGRjcF9wcm90b2NvbCA9IGludGVsX2RwX2hk Y3AyX3Byb3RvY29sLAo+ICB9Owo+ICAKPiAgc3RhdGljIHZvaWQgaW50ZWxfZWRwX3BhbmVsX3Zk ZF9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gaW5kZXggZGVmOGUzMjU1NzQyLi4wNDk2ZWJlYzI4N2IgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IEBAIC00NDQsNiArNDQ0LDEzIEBAIHN0cnVjdCBpbnRlbF9oZGNw IHsKPiAgCXN0cnVjdCBtZWlfaGRjcF9kYXRhIG1laV9kYXRhOwo+ICAJc3RydWN0IG5vdGlmaWVy X2Jsb2NrIG1laV9jbGRldl9uYjsKPiAgCXN0cnVjdCBkZWxheWVkX3dvcmsgaGRjcDJfY2hlY2tf d29yazsKPiArCj4gKwkvKgo+ICsJICogV29yayBxdWV1ZSB0byBzaWduYWwgdGhlIENQX0lSUS4g VXNlZCBmb3IgdGhlIHdhaXRlcnMgdG8gcmVhZCB0aGUKPiArCSAqIGF2YWlsYWJsZSBpbmZvcm1h dGlvbiBmcm9tIEhEQ1AgRFAgc2luay4KPiArCSAqLwo+ICsJd2FpdF9xdWV1ZV9oZWFkX3QgY3Bf aXJxX3F1ZXVlOwo+ICsJYXRvbWljX3QgY3BfaXJxX3JlY3ZlZDsKPiAgfTsKPiAgCj4gIHN0cnVj dCBpbnRlbF9jb25uZWN0b3Igewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZGNwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPiBpbmRleCBk MDYwZDdmMmUxM2IuLmQ1MDJiZGIzODBkMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZGNwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNw LmMKPiBAQCAtODcwLDYgKzg3MCw4IEBAIGludCBpbnRlbF9oZGNwX2luaXQoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJaWYgKGhkY3AyX3N1cHBvcnRlZCkKPiAgCQlpbnRl bF9oZGNwMl9pbml0KGNvbm5lY3Rvcik7Cj4gIAo+ICsJaW5pdF93YWl0cXVldWVfaGVhZCgmaGRj cC0+Y3BfaXJxX3F1ZXVlKTsKPiArCWF0b21pY19zZXQoJmhkY3AtPmNwX2lycV9yZWN2ZWQsIDAp Owo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAgCj4gQEAgLTE4NDksNCArMTg1MSw3IEBAIHZvaWQgaW50 ZWxfaGRjcF9oYW5kbGVfY3BfaXJxKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiAgCQlpbnRlbF9oZGNwX2NoZWNrX2xpbmsoY29ubmVjdG9yKTsKPiAgCWVsc2UgaWYgKGludGVs X2hkY3AyX2luX2ZvcmNlKGNvbm5lY3RvcikpCj4gIAkJaW50ZWxfaGRjcDJfY2hlY2tfbGluayhj b25uZWN0b3IpOwo+ICsKPiArCWF0b21pY19zZXQoJmNvbm5lY3Rvci0+aGRjcC5jcF9pcnFfcmVj dmVkLCAxKTsKPiArCXdha2VfdXBfYWxsKCZjb25uZWN0b3ItPmhkY3AuY3BfaXJxX3F1ZXVlKTsK PiAgfQo+IC0tIAo+IDIuNy40Cj4gCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVl ciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==