From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ramalingam C Subject: Re: [PATCH v4 30/41] drm/i915: Initialize HDCP2.2 and its MEI interface Date: Fri, 25 May 2018 16:42:52 +0530 Message-ID: References: <1526907240-17639-1-git-send-email-ramalingam.c@intel.com> <1526907240-17639-31-git-send-email-ramalingam.c@intel.com> <20180524080648.GB3438@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180524080648.GB3438@phenom.ffwll.local> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: intel-gfx@lists.freedesktop.org, alexander.usyskin@intel.com, dri-devel@lists.freedesktop.org, tomas.winkler@intel.com List-Id: dri-devel@lists.freedesktop.org CgpPbiBUaHVyc2RheSAyNCBNYXkgMjAxOCAwMTozNiBQTSwgRGFuaWVsIFZldHRlciB3cm90ZToK PiBPbiBNb24sIE1heSAyMSwgMjAxOCBhdCAwNjoyMzo0OVBNICswNTMwLCBSYW1hbGluZ2FtIEMg d3JvdGU6Cj4+IEluaXRpYWxpemUgSERDUDIuMiBzdXBwb3J0LiBUaGlzIGluY2x1ZGVzIHRoZSBt ZWkgaW50ZXJmYWNlCj4+IGluaXRpYWxpemF0aW9uIGFsb25nIHdpdGggcmVxdWlyZWQgbm90aWZp ZXIgcmVnaXN0cmF0aW9uLgo+Pgo+PiB2MjoKPj4gICAgbWVpIGludGVyZmFjZSBoYW5kbGUgaXMg cHJvdGVjdGVkIHdpdGggbXV0ZXguIFtDaHJpcyBXaWxzb25dCj4+IHYzOgo+PiAgICBOb3RpZmll cnMgYXJlIHVzZWQgZm9yIHRoZSBtZWkgaW50ZXJmYWNlIHN0YXRlLgo+PiB2NDoKPj4gICAgUG9s bCBmb3IgbWVpIGNsaWVudCBkZXZpY2Ugc3RhdGUKPj4gICAgRXJyb3IgbXNnIGZvciBvdXQgb2Yg bWVtIFtVbWFdCj4+ICAgIElubGluZSByZXEgZm9yIGluaXQgZnVuY3Rpb24gcmVtb3ZlZCBbVW1h XQo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBSYW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5j b20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICB8ICAgMyAr LQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICB8ICAgNSArLQo+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkY3AuYyB8IDExNyArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWku YyB8ICAgMiArLQo+PiAgIDQgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDUgZGVs ZXRpb25zKC0pCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+PiBpbmRleCA2MmY4MmM0Mjk4 YWMuLjI3NmViNDkxMTNlOSAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+IEBAIC02 MzY4LDcgKzYzNjgsOCBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPj4gICAJaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMo aW50ZWxfZHAsIGNvbm5lY3Rvcik7Cj4+ICAgCj4+ICAgCWlmIChpc19oZGNwX3N1cHBvcnRlZChk ZXZfcHJpdiwgcG9ydCkgJiYgIWludGVsX2RwX2lzX2VkcChpbnRlbF9kcCkpIHsKPj4gLQkJaW50 IHJldCA9IGludGVsX2hkY3BfaW5pdChpbnRlbF9jb25uZWN0b3IsICZpbnRlbF9kcF9oZGNwX3No aW0pOwo+PiArCQlpbnQgcmV0ID0gaW50ZWxfaGRjcF9pbml0KGludGVsX2Nvbm5lY3RvciwgJmlu dGVsX2RwX2hkY3Bfc2hpbSwKPj4gKwkJCQkJICBmYWxzZSk7Cj4+ICAgCQlpZiAocmV0KQo+PiAg IAkJCURSTV9ERUJVR19LTVMoIkhEQ1AgaW5pdCBmYWlsZWQsIHNraXBwaW5nLlxuIik7Cj4+ICAg CX0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPj4gaW5kZXggYWM5NDNlYzczOTg3Li43YWFh YTUwZmMxOWYgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+IEBAIC00NDIsNyAr NDQyLDcgQEAgc3RydWN0IGludGVsX2hkY3Agewo+PiAgIAkvKiBtZWkgaW50ZXJmYWNlIHJlbGF0 ZWQgaW5mb3JtYXRpb24gKi8KPj4gICAJc3RydWN0IG1laV9jbF9kZXZpY2UgKmNsZGV2Owo+PiAg IAlzdHJ1Y3QgbWVpX2hkY3BfZGF0YSBtZWlfZGF0YTsKPj4gLQo+PiArCXN0cnVjdCBub3RpZmll cl9ibG9jayBtZWlfY2xkZXZfbmI7Cj4+ICAgCXN0cnVjdCBkZWxheWVkX3dvcmsgaGRjcDJfY2hl Y2tfd29yazsKPj4gICB9Owo+PiAgIAo+PiBAQCAtMTk0MCw3ICsxOTQwLDggQEAgdm9pZCBpbnRl bF9oZGNwX2F0b21pY19jaGVjayhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAg IAkJCSAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKm9sZF9zdGF0ZSwKPj4gICAJCQkg ICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpuZXdfc3RhdGUpOwo+PiAgIGludCBpbnRl bF9oZGNwX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+PiAtCQkgICAg Y29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqaGRjcF9zaGltKTsKPj4gKwkJICAgIGNvbnN0 IHN0cnVjdCBpbnRlbF9oZGNwX3NoaW0gKmhkY3Bfc2hpbSwKPj4gKwkJICAgIGJvb2wgaGRjcDJf c3VwcG9ydGVkKTsKPj4gICBpbnQgaW50ZWxfaGRjcF9lbmFibGUoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKPj4gICBpbnQgaW50ZWxfaGRjcF9kaXNhYmxlKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+ICAgaW50IGludGVsX2hkY3BfY2hlY2tfbGluayhz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRjcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRjcC5jCj4+IGluZGV4IGYzZjkzNTA0NmMzMS4uOTk0OGU0YjRlMjAzIDEwMDY0NAo+PiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZGNwLmMKPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRjcC5jCj4+IEBAIC0xMSw2ICsxMSw3IEBACj4+ICAgI2luY2x1ZGUg PGxpbnV4L2kyYy5oPgo+PiAgICNpbmNsdWRlIDxsaW51eC9yYW5kb20uaD4KPj4gICAjaW5jbHVk ZSA8bGludXgvbWVpX2hkY3AuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9ub3RpZmllci5oPgo+PiAg IAo+PiAgICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPj4gICAjaW5jbHVkZSAiaTkxNV9yZWcuaCIK Pj4gQEAgLTI1LDYgKzI2LDcgQEAgc3RhdGljIGludCBfaW50ZWxfaGRjcDJfZW5hYmxlKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4+ICAgc3RhdGljIGludCBfaW50ZWxfaGRj cDJfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgIHN0YXRp YyB2b2lkIGludGVsX2hkY3AyX2NoZWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsK Pj4gICBzdGF0aWMgaW50IGludGVsX2hkY3AyX2NoZWNrX2xpbmsoc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKTsKPj4gK3N0YXRpYyBpbnQgaW50ZWxfaGRjcDJfaW5pdChzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOwo+PiAgIAo+PiAgIHN0YXRpYyBpbnQgaW50ZWxf aGRjcF9wb2xsX2tzdl9maWZvKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19w b3J0LAo+PiAgIAkJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2hkY3Bfc2hpbSAqc2hpbSkKPj4g QEAgLTc2NiwxMSArNzY4LDE1IEBAIGJvb2wgaXNfaGRjcF9zdXBwb3J0ZWQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCkKPj4gICB9Cj4+ICAgCj4+ICAg aW50IGludGVsX2hkY3BfaW5pdChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4+ IC0JCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3NoaW0pCj4+ICsJCSAg ICBjb25zdCBzdHJ1Y3QgaW50ZWxfaGRjcF9zaGltICpoZGNwX3NoaW0sCj4+ICsJCSAgICBib29s IGhkY3AyX3N1cHBvcnRlZCkKPj4gICB7Cj4+ICAgCXN0cnVjdCBpbnRlbF9oZGNwICpoZGNwID0g JmNvbm5lY3Rvci0+aGRjcDsKPj4gICAJaW50IHJldDsKPj4gICAKPj4gKwlpZiAoIWhkY3Bfc2hp bSkKPj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4+ICsKPj4gICAJcmV0ID0gZHJtX2Nvbm5lY3Rvcl9h dHRhY2hfY29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KAo+PiAgIAkJCSZjb25uZWN0b3ItPmJh c2UpOwo+PiAgIAlpZiAocmV0KQo+PiBAQCAtNzc5LDcgKzc4NSwxMiBAQCBpbnQgaW50ZWxfaGRj cF9pbml0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPj4gICAJaGRjcC0+aGRj cF9zaGltID0gaGRjcF9zaGltOwo+PiAgIAltdXRleF9pbml0KCZoZGNwLT5oZGNwX211dGV4KTsK Pj4gICAJSU5JVF9ERUxBWUVEX1dPUksoJmhkY3AtPmhkY3BfY2hlY2tfd29yaywgaW50ZWxfaGRj cF9jaGVja193b3JrKTsKPj4gKwlJTklUX0RFTEFZRURfV09SSygmaGRjcC0+aGRjcDJfY2hlY2tf d29yaywgaW50ZWxfaGRjcDJfY2hlY2tfd29yayk7Cj4+ICAgCUlOSVRfV09SSygmaGRjcC0+aGRj cF9wcm9wX3dvcmssIGludGVsX2hkY3BfcHJvcF93b3JrKTsKPj4gKwo+PiArCWlmIChoZGNwMl9z dXBwb3J0ZWQpCj4+ICsJCWludGVsX2hkY3AyX2luaXQoY29ubmVjdG9yKTsKPj4gKwo+PiAgIAly ZXR1cm4gMDsKPj4gICB9Cj4+ICAgCj4+IEBAIC0xNjM3LDMgKzE2NDgsMTA3IEBAIHN0YXRpYyB2 b2lkIGludGVsX2hkY3AyX2NoZWNrX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+PiAg IAkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZoZGNwLT5oZGNwMl9jaGVja193b3JrLAo+PiAgIAkJ CQkgICAgICBEUk1fSERDUDJfQ0hFQ0tfUEVSSU9EX01TKTsKPj4gICB9Cj4+ICsKPj4gK3N0YXRp YyBpbnQgaW5pdGlhbGl6ZV9tZWlfaGRjcF9kYXRhKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPj4gK3sKPj4gKwlzdHJ1Y3QgaW50ZWxfaGRjcCAqaGRjcCA9ICZjb25uZWN0b3It PmhkY3A7Cj4+ICsJc3RydWN0IG1laV9oZGNwX2RhdGEgKmRhdGEgPSAmaGRjcC0+bWVpX2RhdGE7 Cj4+ICsJZW51bSBwb3J0IHBvcnQ7Cj4+ICsKPj4gKwlpZiAoY29ubmVjdG9yLT5lbmNvZGVyKSB7 Cj4+ICsJCXBvcnQgPSBjb25uZWN0b3ItPmVuY29kZXItPnBvcnQ7Cj4+ICsJCWRhdGEtPnBvcnQg PSBHRVRfTUVJX0RESV9JTkRFWChwb3J0KTsKPj4gKwl9Cj4+ICsKPj4gKwlkYXRhLT5wb3J0X3R5 cGUgPSBJTlRFR1JBVEVEOwo+PiArCWRhdGEtPnByb3RvY29sID0gaGRjcC0+aGRjcF9zaGltLT5o ZGNwX3Byb3RvY29sKCk7Cj4+ICsKPj4gKwlkYXRhLT5rID0gMTsKPj4gKwlpZiAoIWRhdGEtPnN0 cmVhbXMpCj4+ICsJCWRhdGEtPnN0cmVhbXMgPSBrY2FsbG9jKGRhdGEtPmssCj4+ICsJCQkJCXNp emVvZihzdHJ1Y3QgaGRjcDJfc3RyZWFtaWRfdHlwZSksCj4+ICsJCQkJCUdGUF9LRVJORUwpOwo+ PiArCWlmICghZGF0YS0+c3RyZWFtcykgewo+PiArCQlEUk1fRVJST1IoIk91dCBvZiBNZW1vcnlc biIpOwo+PiArCQlyZXR1cm4gLUVOT01FTTsKPj4gKwl9Cj4+ICsKPj4gKwlkYXRhLT5zdHJlYW1z WzBdLnN0cmVhbV9pZCA9IDA7Cj4+ICsJZGF0YS0+c3RyZWFtc1swXS5zdHJlYW1fdHlwZSA9IGhk Y3AtPmNvbnRlbnRfdHlwZTsKPiBPayB0aGVyZSdzIDAgbG9ja2luZyBoZXJlLiBJZiB0aGVyZSdz IG5vIGxvY2tpbmcgdGhlbiBvZiBjb3Vyc2UKPiBDT05GSUdfUFJPVkVfTE9DS0lORyB3aWxsIG5v dCBzcG90IGFueSBpc3N1ZXMuCj4KPiBJdCBhbHNvIG1lYW5zIHlvdSdyZSBjb2RlIGlzIHJhY3ks IGUuZy4gaWYgbWVpIGFuZCBpOTE1IGxvYWQgYXQgdGhlIHNhbWUKPiB0aW1lLCB0aGluZ3MgY291 bGQgZ2V0IGNvcnJ1cHRlZCBpbiBpbnRlcmVzdGluZyB3YXlzLiBTYW1lIGhvbGRzIGlmIHlvdQo+ IGhhdmUgb25nb2luZyBoZGNwMiBvcGVyYXRpb25zIGdvaW5nIG9uIGluIHRoZSBpbnRlbF9oZGNw IGNvZGUsIHdoaWxlIHRoZQo+IG1laSBkcml2ZXIgaXMgYmVpbmcgdW5sb2FkZWQuCkRhbmllbCwK CkJvdGggb2YgdGhlc2UgY2FzZXMgYXJlIG5vdCBwb3NzaWJsZSBhcyBNRUkgc3ltYm9scyBhcmUg dXNlZCBpbiBJOTE1LApTbyBJOTE1IGNhbid0IGJlIGxvYWRlZCBiZWZvcmUgb3IgaW4gcGFyYWxs ZWwgdG8gTUVJIGRyaXZlcnMuClNpbWlsYXJseSB3ZSBjYW4ndCB1bmxvYWQgdGhlIE1FSSBiZWZv cmUgSTkxNSBvciBpbiBwYXJhbGxlbC4gU28gSSBndWVzcyAKd2UgYXJlIG91dCBvZiBhYm92ZSBy YWNlIG1lbnRpb25lZAoKTUVJIHJlbGF0ZWQgZGF0YSBpbiBpbnRlbF9jb25uZWN0b3ItPmhkY3Ag aXMgcGVyIGNvbm5lY3RvciBiYXNpcy4gQW5kIApwZXIgY29ubmVjdG9yIGRhdGEncyBhcmUgcHJv dGVjdGVkIHdpdGggbXV0ZXggaW4gYXV0aGVudGljYXRpb24gcGF0aC4KCkluIE1FSSBIRENQIGRy aXZlcidzIEFQSXMgdG9vLCB0aGVyZSBpcyBubyBzaGFyZWQgdmFyaWFibGUgZXhjZXB0IAptZWlf Y2xkZXYgdGhhdCBhbHNvIG5vdCBtb2RpZmllZCBpbiB0aG9zZSBtZWlfaGRjcCBBUElzLgpTbyBJ IGFtIG5vdCBzZWVpbmcgYW55IHJhY2UgY29uZGl0aW9ucyBhcyBzdWNoLiBTbyB0aGVyZSBpcyBu byBuZWVkIGZvciAKYW55IGV4cGxpY2l0IGxvY2tpbmcgYmV0d2VlbiBJOTE1IGFuZCBNRUkuCgo+ IE5vdGUgdGhhdCB5b3UgY2FuIHVubG9hZCB0aGUgZHJpdmVyIHdpdGhvdXQgaGF2aW5nIHRvIHVu bG9hZCB0aGUgbW9kdWxlLAo+IHRob3NlIDIgdGhpbmdzIGFyZW4ndCBjb3VwbGVkLgpDYW4geW91 wqAgcGxlYXNlIGhlbHAgbWUgdG8gdW5kZXJzdGFuZCBtb3JlIG9uIHRoaXM/CklmIHlvdSBhcmUg cmVmZXJyaW5nIHRvIG1laSBkZXZpY2UgcmVtb3ZhbCwgbm90aWZpY2F0aW9uIHdpbGwgYmUgc2Vu dCB0byAKSTkxNS4KRXZlbiBpZiBhIGhkY3Agc2VydmljZSBpcyBwbGFjZWQgZm9yIGEgbWVpIGRl dmljZSwgdGhhdCBpcyAKdW5iaW5kZWQvZGlzYWJsZWQsIG1laSBidXMgd2lsbCBncmFjZWZ1bGx5 IGRlY2xpbmUgdGhlIHJlcXVlc3QuCgpTbyBJIGRvbid0IGV4cGVjdCBhbnkgcG9zc2libGUgaXNz dWVzLiBIZWxwIG1lIGlmIHlvdSBvdGhlcndpc2UuCgo+IEFub3RoZXIgcmVhc29uIGZvciBub3Qg dXNpbmcgbm90aWZpZXJzIGlzIHRoYXQgaXQncyBhbm90aGVyIHJlaW52ZW50ZWQKPiB3aGVlbCB0 byBtYWtlIG11bHRpLWRyaXZlciBzdHVmZiB3b3JrLiBXZSBhbHJlYWR5IGhhdmUgdGhlIGNvbXBv bmVudAo+IGZyYW1ld29yayBmb3IgdGhpcywgYW5kIHdlJ3JlIGFscmVhZHkgdXNpbmcgdGhlIGNv bXBvbmVudCBmcmFtZXdvcmsgZm9yCj4gdGhlIHNuZC1oZGEgdnMuIGk5MTUgY29vcmRpbmF0aW9u LgpJZiB3ZSBuZWVkIHRvIHdlIGNhbiBkbyB3aXRoIGNvbXBvbmVudC4gRXhwbG9yaW5nIHdoYXQg aXMgbmVlZGVkIGhlcmUuCkF0IEZpcnN0IGdsYW5jZSBJOTE1IHdpbGwgYmUgY29tcG9uZW50IG1h c3RlciBhbmQgbWVpIHdpbGwgYmUgY29tcG9uZW50IApjbGllbnQuCgpUaGFua3MgYW5kIFJlZ2Fy ZHMsClJhbQo+Cj4gU28gaGVyZSdzIG15IHJlY29tbWVuZGF0aW9uIGZvciBnZXR0aW5nIHRoaXMg c29ydGVkIG91dDoKPgo+IC0gVXNlIHRoZSBjb21wb25lbnQgZnJhbWV3b3JrIHRvIGNvb3JkaW5h dGUgdGhlIGxvYWRpbmcgb2YgaTkxNSBhbmQgdGhlCj4gICAgbWVpX2hkY3AgZHJpdmVyLgo+Cj4g LSBCb251cyBwb2ludHMgZm9yIHVzaW5nIGRldmljZV9saW5rIHRvIHRlbGwgdGhlIGRyaXZlciBj b3JlIGFib3V0IHRoaXMsCj4gICAgd2hpY2ggb3B0aW1pemVzIHRoZSBsb2FkIHNlcXVlbmNlICh1 bmZvcnR1bmF0ZWx5IHdlIGhhdmVuJ3QgZG9uZSB0aGF0Cj4gICAgZm9yIHNuZC1oZGEgeWV0LCBp bnN0ZWFkIGhhdmUgdG8gd29yayBhcm91bmQgb3JkZXJpbmcgaXNzdWVzIGluIHRoZQo+ICAgIHN1 c3BlbmQvcmVzdW1lIGhhbmRsZXJzIGEgYml0KS4KPgo+IC0gRHJvcCBhbGwgdGhlIEVYUE9SVF9T WU1CT0wgYW5kIGhhcmQgbGlua3MgYmV0d2VlbiB0aGUgdHdvIGRyaXZlcnMuCj4gICAgSW5zdGVh ZCBoYXZlIGEgdnRhYmxlLCBsaWtlIHdlJ3JlIHVzaW5nIGZvciB0aGUgYXVkaW8gc2lkZS4KPgo+ IC0gTWFrZSBzdXJlIHRoYXQgYW55IHNoYXJlZCBzdGF0ZSBpcyBhcHByb3ByaWF0ZWx5IHByb3Rl Y3RlZCB3aXRoIGEgbXV0ZXguCj4gICAgU3ByaW5rbGUgbG90cyBvZiBhc3NlcnRfbG9ja19oZWxk IG92ZXIgdGhlIGNvZGUgYmFzZSB0byBtYWtlIHN1cmUgeW91Cj4gICAgZGlkbid0IG1pc3MgYW55 dGhpbmcsIGFuZCB1c2UgQ09ORklHX1BST1ZFX0xPQ0tJTkcgdG8gbWFrZSBzdXJlIHRoZXJlJ3MK PiAgICBubyBkZWFkbG9ja3MgYW5kIG92ZXJzaWdodHMuCj4KPiAtIEV4dGVuZCB0aGUgaWd0IGRy dl9tb2R1bGVfcmVsb2FkIHRlc3RjYXNlIHRvIG1ha2Ugc3VyZSB5b3UncmUgZXhlcmNpc2luZwo+ ICAgIHRoZSBuZXcgRVBST0JFX0RFRkVSIHBvaW50IGZ1bGx5IChzaG91bGQganVzdCBuZWVkIGEg a2VybmVsIGNoYW5nZSB0bwo+ICAgIGFkZCB0aGF0IGFzIGEgcG90ZW50aWFsIGxvYWQgZmFpbHVy ZSBwYXRoKS4KPgo+IEkgdGhpbmsgd2l0aCB0aGF0IHdlIGhhdmUgYSBzb2xpZCBzb2x1dGlvbiBo ZXJlIHdoaWNoIGlzIGFsaWduZWQgd2l0aCBob3cKPiB3ZSBoYW5kbGUgdGhpcyBpbiBvdGhlciBj YXNlcy4KPgo+IFRoYW5rcywgRGFuaWVsCj4KPj4gKwo+PiArCXJldHVybiAwOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgdm9pZCBpbnRlbF9oZGNwMl9leGl0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPj4gK3sKPj4gKwlpbnRlbF9oZGNwX2Rpc2FibGUoY29ubmVjdG9yKTsKPj4g KwlrZnJlZShjb25uZWN0b3ItPmhkY3AubWVpX2RhdGEuc3RyZWFtcyk7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbnQgbWVpX2NsZGV2X25vdGlmeShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1 bnNpZ25lZCBsb25nIGV2ZW50LAo+PiArCQkJICAgIHZvaWQgKmNsZGV2KQo+PiArewo+PiArCXN0 cnVjdCBpbnRlbF9oZGNwICpoZGNwID0gY29udGFpbmVyX29mKG5iLCBzdHJ1Y3QgaW50ZWxfaGRj cCwKPj4gKwkJCQkJICAgICAgIG1laV9jbGRldl9uYik7Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqaW50ZWxfY29ubmVjdG9yID0gY29udGFpbmVyX29mKGhkY3AsCj4+ICsJCQkJCQkJc3Ry dWN0IGludGVsX2Nvbm5lY3RvciwKPj4gKwkJCQkJCQloZGNwKTsKPj4gKwo+PiArCURSTV9ERUJV R19LTVMoIlslczolZF0gTUVJX0hEQ1AgTm90aWZpY2F0aW9uLiBJbnRlcmZhY2U6ICVzXG4iLAo+ PiArCQkgICAgICBpbnRlbF9jb25uZWN0b3ItPmJhc2UubmFtZSwgaW50ZWxfY29ubmVjdG9yLT5i YXNlLmJhc2UuaWQsCj4+ICsJCSAgICAgIGNsZGV2ID8gIlVQIiA6ICJEb3duIik7Cj4+ICsKPj4g KwlpZiAoZXZlbnQgPT0gTUVJX0NMREVWX0VOQUJMRUQpIHsKPj4gKwkJaGRjcC0+Y2xkZXYgPSBj bGRldjsKPj4gKwkJaW5pdGlhbGl6ZV9tZWlfaGRjcF9kYXRhKGludGVsX2Nvbm5lY3Rvcik7Cj4+ ICsJfSBlbHNlIHsKPj4gKwkJaGRjcC0+Y2xkZXYgPSBOVUxMOwo+PiArCQlpbnRlbF9oZGNwMl9l eGl0KGludGVsX2Nvbm5lY3Rvcik7Cj4+ICsJfQo+PiArCj4+ICsJcmV0dXJuIE5PVElGWV9PSzsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGlubGluZQo+PiArYm9vbCBpc19oZGNwMl9zdXBwb3J0ZWQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+PiArewo+PiArCXJldHVybiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSAxMCB8fCBJU19HRU1JTklMQUtFKGRldl9wcml2KSB8fAo+PiAr CQlJU19LQUJZTEFLRShkZXZfcHJpdikpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGludGVs X2hkY3AyX2luaXQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+PiArewo+PiAr CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5i YXNlLmRldik7Cj4+ICsJc3RydWN0IGludGVsX2hkY3AgKmhkY3AgPSAmY29ubmVjdG9yLT5oZGNw Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwlpZiAoIWlzX2hkY3AyX3N1cHBvcnRlZChkZXZfcHJp dikpCj4+ICsJCXJldHVybiAtRUlOVkFMOwo+PiArCj4+ICsJaGRjcC0+aGRjcDJfc3VwcG9ydGVk ID0gdHJ1ZTsKPj4gKwo+PiArCWhkY3AtPm1laV9jbGRldl9uYi5ub3RpZmllcl9jYWxsID0gbWVp X2NsZGV2X25vdGlmeTsKPj4gKwlyZXQgPSBtZWlfY2xkZXZfcmVnaXN0ZXJfbm90aWZ5KCZoZGNw LT5tZWlfY2xkZXZfbmIpOwo+PiArCWlmIChyZXQpIHsKPj4gKwkJRFJNX0VSUk9SKCJtZWlfY2xk ZXYgbm90IGF2YWlsYWJsZS4gJWRcbiIsIHJldCk7Cj4+ICsJCWdvdG8gZXhpdDsKPj4gKwl9Cj4+ ICsKPj4gKwlyZXQgPSBpbml0aWFsaXplX21laV9oZGNwX2RhdGEoY29ubmVjdG9yKTsKPj4gKwlp ZiAocmV0KSB7Cj4+ICsJCW1laV9jbGRldl91bnJlZ2lzdGVyX25vdGlmeSgmaGRjcC0+bWVpX2Ns ZGV2X25iKTsKPj4gKwkJZ290byBleGl0Owo+PiArCX0KPj4gKwo+PiArCS8qCj4+ICsJICogSW5j YXNlIG5vdGlmaWVyIGlzIHRyaWdnZXJlZCB3ZWxsIGJlZm9yZSB0aGlzIHBvaW50LCByZXF1ZXN0 IGZvcgo+PiArCSAqIG5vdGlmaWNhdGlvbiBvZiB0aGUgbWVpIGNsaWVudCBkZXZpY2Ugc3RhdGUu Cj4+ICsJICovCj4+ICsJbWVpX2NsZGV2X3BvbGxfbm90aWZpY2F0aW9uKCk7Cj4+ICsKPj4gK2V4 aXQ6Cj4+ICsJaWYgKHJldCkKPj4gKwkJaGRjcC0+aGRjcDJfc3VwcG9ydGVkID0gZmFsc2U7Cj4+ ICsKPj4gKwlyZXR1cm4gcmV0Owo+PiArfQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4+ IGluZGV4IGVlOTI5ZjMxZjdkYi4uYTVjYzczMTAxYWNiIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfaGRtaS5jCj4+IEBAIC0yMzM0LDcgKzIzMzQsNyBAQCB2b2lkIGludGVsX2hkbWlfaW5p dF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4+ ICAgCj4+ICAgCWlmIChpc19oZGNwX3N1cHBvcnRlZChkZXZfcHJpdiwgcG9ydCkpIHsKPj4gICAJ CWludCByZXQgPSBpbnRlbF9oZGNwX2luaXQoaW50ZWxfY29ubmVjdG9yLAo+PiAtCQkJCQkgICZp bnRlbF9oZG1pX2hkY3Bfc2hpbSk7Cj4+ICsJCQkJCSAgJmludGVsX2hkbWlfaGRjcF9zaGltLCBm YWxzZSk7Cj4+ICAgCQlpZiAocmV0KQo+PiAgIAkJCURSTV9ERUJVR19LTVMoIkhEQ1AgaW5pdCBm YWlsZWQsIHNraXBwaW5nLlxuIik7Cj4+ICAgCX0KPj4gLS0gCj4+IDIuNy40Cj4+CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGlu ZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK