From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCH v4 5/6] drm/i915: enable scrambling Date: Thu, 23 Feb 2017 10:03:17 +0200 Message-ID: <1487836997.2361.2.camel@gmail.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-6-git-send-email-shashank.sharma@intel.com> <20170222172954.GM31595@intel.com> <548317e5-2fab-9832-142f-581be31aac39@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <548317e5-2fab-9832-142f-581be31aac39@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" , Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: jose.abreu@synopsys.com, daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, treding@nvidia.com, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAyMDE3LTAyLTIzIGF0IDEwOjAxICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3Rl Ogo+IFJlZ2FyZHMKPiAKPiBTaGFzaGFuawo+IAo+IAo+IE9uIDIvMjIvMjAxNyAxMDo1OSBQTSwg VmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gT24gV2VkLCBGZWIgMjIsIDIwMTcgYXQgMDY6NDg6 MzBQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1hIHdyb3RlOgo+ID4gPiBHZW1pbmlsYWtlIHBsYXRm b3JtIHNwb3J0cyBhIG5hdGl2ZSBIRE1JIDIuMCBjb250cm9sbGVyLCBhbmQgaXMKPiA+ID4gY2Fw YWJsZSBvZiBkcml2aW5nIHBpeGVsLWNsb2NrcyB1cHRvIDU5NE1oei4gSERNSSAyLjAgc3BlYwo+ ID4gPiBtZW5kYXRlcyBzY3JhbWJsaW5nIGZvciB0aGVzZSBoaWdoZXIgY2xvY2tzLCBmb3IgcmVk dWNlZCBSRiBmb290cHJpbnQuCj4gPiA+IAo+ID4gPiBUaGlzIHBhdGNoIGNoZWNrcyBpZiB0aGUg bW9uaXRvciBzdXBwb3J0cyBzY3JhbWJsaW5nLCBhbmQgaWYgcmVxdWlyZWQsCj4gPiA+IGVuYWJs ZXMgaXQgZHVyaW5nIHRoZSBtb2Rlc2V0Lgo+ID4gPiAKPiA+ID4gVjI6IEFkZHJlc3NlZCByZXZp ZXcgY29tbWVudHMgZnJvbSBWaWxsZToKPiA+ID4gLSBEbyBub3QgdHJhY2sgc2NyYW1ibGluZyBz dGF0dXMgaW4gRFJNIGxheWVyLCB0cmFjayBzb21ld2hlcmUgaW4KPiA+ID4gICAgZHJpdmVyIGxp a2UgaW4gaW50ZWxfY3J0Y19zdGF0ZS4KPiA+ID4gLSBEb24ndCB0YWxrIHRvIG1vbml0b3IgYXQg c3VjaCBhIGxvdyBsYXllciwgc2V0IG1vbml0b3Igc2NyYW1ibGluZwo+ID4gPiAgICBpbiBpbnRl bF9lbmFibGVfZGRpKCkgYmVmb3JlIGVuYWJsaW5nIHRoZSBwb3J0Lgo+ID4gPiAKPiA+ID4gVjM6 IEFkZHJlc3NlZCByZXZpZXcgY29tbWVudHMgZnJvbSBKYW5pCj4gPiA+IC0gSW4gY29tbWVudHMs IGZ1bmN0aW9uIG5hbWVzLCB1c2UgInNpbmsiIGluc3RlYWQgb2YgIm1vbml0b3IiLAo+ID4gPiAg ICBzbyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbiBjb3VsZCBiZSBjbG9zZSB0byB0aGUgbGFuZ3Vh Z2Ugb2YKPiA+ID4gICAgSERNSSBzcGVjLgo+ID4gPiAKPiA+ID4gVjQ6IEFkZHJlc3NlZCByZXZp ZXcgY29tbWVudCBmcm9tIE1hYXJ0ZW4KPiA+ID4gLSBzY3JhbWJsaW5nIC0+IGhkbWlfc2NyYW1i bGluZwo+ID4gPiAgICBoaWdoX3RtZHNfY2xvY2tfcmF0aW8gLT4gaGRtaV9oaWdoX3RtZHNfY2xv Y2tfcmF0aW8KPiA+ID4gCj4gPiA+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5rIFNoYXJtYSA8c2hh c2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiA+ID4gLS0tCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaCAgIHwgICA0ICsrCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMgIHwgIDI4ICsrKysrKysrKysKPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgfCAgMTQgKysrKysKPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9oZG1pLmMgfCAxMDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysK PiA+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25zKCspCj4gPiA+IAo+ID4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gaW5kZXggMTQxYTVjMS4uODFjZjEwYiAxMDA2NDQK PiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ID4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+IEBAIC03ODE5LDcgKzc4MTksMTEg QEAgZW51bSB7Cj4gPiA+ICAgI2RlZmluZSAgVFJBTlNfRERJX0VEUF9JTlBVVF9CX09OT0ZGCSg1 PDwxMikKPiA+ID4gICAjZGVmaW5lICBUUkFOU19ERElfRURQX0lOUFVUX0NfT05PRkYJKDY8PDEy KQo+ID4gPiAgICNkZWZpbmUgIFRSQU5TX0RESV9EUF9WQ19QQVlMT0FEX0FMTE9DCSgxPDw4KQo+ ID4gPiArI2RlZmluZSAgVFJBTlNfRERJX0hETUlfU0NSQU1CTEVSX0NUU19FTkFCTEUgKDE8PDcp Cj4gPiA+ICsjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfUkVTRVRfRlJFUSAoMTw8 NikKPiA+ID4gICAjZGVmaW5lICBUUkFOU19ERElfQkZJX0VOQUJMRQkJKDE8PDQpCj4gPiA+ICsj ZGVmaW5lICBUUkFOU19ERElfSElHSF9UTURTX0NIQVJfUkFURQkoMTw8NCkKPiA+ID4gKyNkZWZp bmUgIFRSQU5TX0RESV9IRE1JX1NDUkFNQkxJTkcJKDE8PDApCj4gPiA+ICAgCj4gPiA+ICAgLyog RGlzcGxheVBvcnQgVHJhbnNwb3J0IENvbnRyb2wgKi8KPiA+ID4gICAjZGVmaW5lIF9EUF9UUF9D VExfQQkJCTB4NjQwNDAKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gaW5kZXgg Y2Q2ZmVkZC4uYmQ4MjkzZCAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiA+ID4gQEAgLTEyNzgsNiArMTI3OCwxMSBAQCB2b2lkIGludGVsX2RkaV9lbmFibGVfdHJhbnNj b2Rlcl9mdW5jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+ID4gICAJCQl0ZW1wIHw9IFRSQU5T X0RESV9NT0RFX1NFTEVDVF9IRE1JOwo+ID4gPiAgIAkJZWxzZQo+ID4gPiAgIAkJCXRlbXAgfD0g VFJBTlNfRERJX01PREVfU0VMRUNUX0RWSTsKPiA+ID4gKwo+ID4gPiArCQlpZiAoSVNfR0VNSU5J TEFLRShkZXZfcHJpdikpCj4gPiA+ICsJCQl0ZW1wID0gaW50ZWxfaGRtaV9oYW5kbGVfc291cmNl X3NjcmFtYmxpbmcoCj4gPiA+ICsJCQkJaW50ZWxfZW5jb2RlciwKPiA+ID4gKwkJCQkmaW50ZWxf Y3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUsIHRlbXApOwo+ID4gPiAgIAl9IGVsc2Ug aWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0FOQUxPRykgewo+ID4gPiAgIAkJdGVtcCB8PSBUUkFO U19ERElfTU9ERV9TRUxFQ1RfRkRJOwo+ID4gPiAgIAkJdGVtcCB8PSAoaW50ZWxfY3J0Yy0+Y29u ZmlnLT5mZGlfbGFuZXMgLSAxKSA8PCAxOwo+ID4gPiBAQCAtMTg0Myw2ICsxODQ4LDIxIEBAIHN0 YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2Vu Y29kZXIsCj4gPiA+ICAgCQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCA9Cj4gPiA+ICAgCQkJZW5jX3RvX2RpZ19wb3J0KGVuY29kZXIpOwo+ID4gPiAgIAo+ID4gPiAr CQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiA+ID4gKwkJCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiA+ID4gKwkJCS8qCj4g PiA+ICsJCQkgKiBHTEsgc3BvcnRzIGEgbmF0aXZlIEhETUkgMi4wIGNvbnRyb2xsZXIuIElmIHJl cXVpcmVkCj4gPiA+ICsJCQkgKiBjbG9jayByYXRlIGlzID4gMzQwIE1oeiAmJiBzY3JhbWJsaW5n IGlzIHN1cHBvcnRlZAo+ID4gPiArCQkJICogYnkgc2luaywgZW5hYmxlIHNjcmFtYmxpbmcgYmVm b3JlIGVuYWJsaW5nIHRoZQo+ID4gPiArCQkJICogSERNSSAyLjAgcG9ydC4gVGhlIHNpbmsgY2Fu IGNob29zZSB0byBkaXNhYmxlIHRoZQo+ID4gPiArCQkJICogc2NyYW1ibGluZyBpZiBpdCBkb2Vz bid0IGRldGVjdCBhIHNjcmFtYmxlZCB3aXRoaW4KPiA+ID4gKwkJCSAqIDEwMCBtcy4KPiA+ID4g KwkJCSAqLwo+ID4gPiArCQkJaW50ZWxfaGRtaV9oYW5kbGVfc2lua19zY3JhbWJsaW5nKGludGVs X2VuY29kZXIsCj4gPiA+ICsJCQkJCQljb25uX3N0YXRlLT5jb25uZWN0b3IsCj4gPiA+ICsJCQkJ CQljcnRjLT5jb25maWcsIHRydWUpOwo+ID4gPiArCQl9Cj4gPiA+ICsKPiA+ID4gICAJCS8qIElu IEhETUkvRFZJIG1vZGUsIHRoZSBwb3J0IHdpZHRoLCBhbmQgc3dpbmcvZW1waGFzaXMgdmFsdWVz Cj4gPiA+ICAgCQkgKiBhcmUgaWdub3JlZCBzbyBub3RoaW5nIHNwZWNpYWwgbmVlZHMgdG8gYmUg ZG9uZSBiZXNpZGVzCj4gPiA+ICAgCQkgKiBlbmFibGluZyB0aGUgcG9ydC4KPiA+ID4gQEAgLTE4 NzUsNiArMTg5NSwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RkaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ID4gICAJaWYgKG9sZF9jcnRjX3N0YXRlLT5o YXNfYXVkaW8pCj4gPiA+ICAgCQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGludGVsX2VuY29k ZXIpOwo+ID4gPiAgIAo+ID4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4g PiA+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhlbmNv ZGVyLT5jcnRjKTsKPiA+ID4gKwo+ID4gPiArCQlpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFt YmxpbmcoaW50ZWxfZW5jb2RlciwKPiA+ID4gKwkJCQkJb2xkX2Nvbm5fc3RhdGUtPmNvbm5lY3Rv ciwKPiA+ID4gKwkJCQkJaW50ZWxfY3J0Yy0+Y29uZmlnLCBmYWxzZSk7Cj4gPiA+ICsJfQo+ID4g PiArCj4gPiA+ICAgCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiA+ID4gICAJCXN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4gPiA+ ICAgCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4IDgyMWM1N2MuLmM3 MjYyZDcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC02 OTEsNiArNjkxLDEyIEBAIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHsKPiA+ID4gICAKPiA+ID4g ICAJLyogR2FtbWEgbW9kZSBwcm9ncmFtbWVkIG9uIHRoZSBwaXBlICovCj4gPiA+ICAgCXVpbnQz Ml90IGdhbW1hX21vZGU7Cj4gPiA+ICsKPiA+ID4gKwkvKiBIRE1JIHNjcmFtYmxpbmcgc3RhdHVz IChzaW5rKSAqLwo+ID4gPiArCWJvb2wgaGRtaV9zY3JhbWJsaW5nOwo+ID4gPiArCj4gPiA+ICsJ LyogSERNSSBIaWdoIFRNRFMgY2hhciByYXRlIHJhdGlvIChzaW5rKSAqLwo+ID4gPiArCWJvb2wg aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW87Cj4gPiA+ICAgfTsKPiA+ID4gICAKPiA+ID4gICBz dHJ1Y3Qgdmx2X3dtX3N0YXRlIHsKPiA+ID4gQEAgLTE2MDksNiArMTYxNSwxNCBAQCB2b2lkIGlu dGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCj4gPiA+ICAgYm9vbCBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiAgIAkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gPiA+ICAgCQkJICAgICAgIHN0cnVjdCBkcm1fY29ubmVj dG9yX3N0YXRlICpjb25uX3N0YXRlKTsKPiA+ID4gK3VpbnQzMl90Cj4gPiA+ICtpbnRlbF9oZG1p X2hhbmRsZV9zb3VyY2Vfc2NyYW1ibGluZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciwKPiA+ID4gKwkJCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gPiA+ICsJ CQkJCXVpbnQzMl90IGNvbmZpZyk7Cj4gPiA+ICt2b2lkIGludGVsX2hkbWlfaGFuZGxlX3Npbmtf c2NyYW1ibGluZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ID4gKwkJ CQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gKwkJCQkJc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKmNvbmZpZywKPiA+ID4gKwkJCQkJYm9vbCBlbmFibGUpOwo+ID4gPiAg IHZvaWQgaW50ZWxfZHBfZHVhbF9tb2RlX3NldF90bWRzX291dHB1dChzdHJ1Y3QgaW50ZWxfaGRt aSAqaGRtaSwgYm9vbCBlbmFibGUpOwo+ID4gPiAgIAo+ID4gPiAgIAo+ID4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaGRtaS5jCj4gPiA+IGluZGV4IGE1ODBkZTguLmM0NGJlZWUgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+ID4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiA+ID4gQEAgLTM0LDYgKzM0LDcgQEAKPiA+ ID4gICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+Cj4gPiA+ICAgI2luY2x1ZGUg PGRybS9kcm1fY3J0Yy5oPgo+ID4gPiAgICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiA+ID4g KyNpbmNsdWRlIDxkcm0vZHJtX3NjZGNfaGVscGVyLmg+Cj4gPiA+ICAgI2luY2x1ZGUgImludGVs X2Rydi5oIgo+ID4gPiAgICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiA+ID4gICAjaW5jbHVk ZSA8ZHJtL2ludGVsX2xwZV9hdWRpby5oPgo+ID4gPiBAQCAtMTc5NSw2ICsxNzk2LDExMyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9oZG1pX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiA+ID4gICAJaW50ZWxfaGRtaS0+YXNwZWN0X3JhdGlvID0gSERNSV9QSUNUVVJFX0FT UEVDVF9OT05FOwo+ID4gPiAgIH0KPiA+ID4gICAKPiA+ID4gK3ZvaWQgaW50ZWxfaGRtaV9oYW5k bGVfc2lua19zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ ID4gPiArCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4gPiAr CQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnLAo+ID4gPiArCQkJCSAg ICAgICBib29sIGVuYWJsZSkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50 ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+ID4g KwlzdHJ1Y3QgZHJtX3NjZGMgKnNjZGMgPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaS5z Y2RjOwo+ID4gPiArCXN0cnVjdCBkcm1fc2NyYW1ibGluZyAqc2NyYW1ibGluZyA9ICZzY2RjLT5z Y3JhbWJsaW5nOwo+ID4gPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGNvbm5lY3Rvci0+ZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ID4gKwlzdHJ1Y3QgaTJj X2FkYXB0ZXIgKmFkcHRyID0gaW50ZWxfZ21idXNfZ2V0X2FkYXB0ZXIoZGV2X3ByaXYsCgpUaGVy ZSdzIG9ubHkgdHdvIGxldHRlcnMgbWlzc2luZy4gTWF5YmUganVzdCBzcGVsbCBhZGFwdGVyLgoK PiA+ID4gKwkJCQkJCQkgIGludGVsX2hkbWktPmRkY19idXMpOwo+ID4gPiArCj4gPiA+ICsJaWYg KCFzY3JhbWJsaW5nLT5zdXBwb3J0ZWQpCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiAr CURSTV9ERUJVR19LTVMoIlNldHRpbmcgc2luayBzY3JhbWJsaW5nIGZvciBlbmM6JXMgY29ubmVj dG9yOiVzXG4iLAo+ID4gPiArCQkJaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1lLCBjb25uZWN0b3It Pm5hbWUpOwo+ID4gPiArCj4gPiA+ICsJaWYgKGVuYWJsZSkgewo+ID4gPiArCj4gPiA+ICsJCWlm IChtb2RlLT5jbG9jayA+IDM0MDAwMCkgewo+ID4gPiArCQkJLyogU2V0IFRNRFMgYml0IGNsb2Nr IHJhdGlvIHRvIDEvNDAgKi8KPiA+ID4gKwkJCWNvbmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tf cmF0aW8gPQo+ID4gPiArCQkJCWRybV9zY2RjX3NldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oYWRw dHIpOwo+ID4gCj4gPiBZb3UncmUgbm90IGFsbG93ZWQgdG8gbXVjayB3aXRoIHRoZSBzdGF0ZSBh bnltb3JlLiBBbGwgc3RhdGUgY29tcHV0YXRpb24KPiA+IHNob3VsZCBoYXBwZW4gaW4gdGhlIC5j b21wdXRlX2NvbmZpZyBob29rLgo+IAo+IG9rLCBsZXQgbWUgcmUtYXJyYW5nZSB0aGlzIGZ1bmN0 aW9uIGluIHN1Y2ggYSB3YXkgdGhhdCBJIGRvIHRoZSBjb25maWcgCj4gdXBkYXRlIHBhcnQgaW4g Y29tcHV0ZV9jb25maWcKPiA+ID4gKwkJCWlmICghY29uZmlnLT5oZG1pX2hpZ2hfdG1kc19jbG9j a19yYXRpbykgewo+ID4gPiArCQkJCURSTV9FUlJPUigiU2V0IGhpZ2ggVE1EUyByYXRpbyBmYWls ZWRcbiIpOwo+ID4gPiArCQkJCXJldHVybjsKPiA+ID4gKwkJCX0KPiA+ID4gKwo+ID4gPiArCQkJ LyogRW5hYmxlIHNpbmsgc2NyYW1ibGluZyAqLwo+ID4gPiArCQkJY29uZmlnLT5oZG1pX3NjcmFt YmxpbmcgPQo+ID4gPiArCQkJCQlkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyhhZHB0cik7Cj4g PiA+ICsJCQlpZiAoIWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nKSB7Cj4gPiA+ICsJCQkJRFJNX0VS Uk9SKCJDYW4ndCBlbmFibGUgc2luayBzY3JhbWJsaW5nXG4iKTsKPiA+ID4gKwkJCQlyZXR1cm47 Cj4gPiA+ICsJCQl9Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiArCQkvKiBGZXcgc2lua3Mgc3Vw cG9ydCBzY3JhbWJsaW5nIGF0IGNsb2NrcyA8PTM0MCBNSHogdG9vICovCj4gPiA+ICsJCWlmICgh Y29uZmlnLT5oZG1pX3NjcmFtYmxpbmcgJiYgc2NyYW1ibGluZy0+bG93X3JhdGVzKSB7Cj4gPiA+ ICsJCQljb25maWctPmhkbWlfc2NyYW1ibGluZyA9Cj4gPiA+ICsJCQkJCWRybV9zY2RjX2VuYWJs ZV9zY3JhbWJsaW5nKGFkcHRyKTsKPiA+ID4gKwkJCWlmICghY29uZmlnLT5oZG1pX3NjcmFtYmxp bmcpCj4gPiA+ICsJCQkJRFJNX0VSUk9SKCJDYW4ndCBlbmFibGUgc2luayBzY3JhbWJsaW5nXG4i KTsKPiA+ID4gKwkJfQo+ID4gPiArCj4gPiA+ICsJCXJldHVybjsKPiA+ID4gKwl9Cj4gPiA+ICsK PiA+ID4gKwlpZiAoY29uZmlnLT5oZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRpbykgewo+ID4gPiAr CQkvKiBTZXQgVE1EUyBiaXQgY2xvY2sgcmF0aW8gYmFjayB0byAxLzEwICovCj4gPiA+ICsJCWNv bmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gPQo+ID4gPiArCQkJIShkcm1fc2NkY19j bGVhcl9oaWdoX3RtZHNfY2xvY2tfcmF0aW8oYWRwdHIpKTsKPiA+ID4gKwkJaWYgKGNvbmZpZy0+ aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8pCj4gPiA+ICsJCQlEUk1fRVJST1IoIlJlc2V0IGhp Z2ggVE1EUyByYXRpbyBmYWlsZWRcbiIpOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWlmIChj b25maWctPmhkbWlfc2NyYW1ibGluZykgewo+ID4gPiArCQkvKiBEaXNhYmxlIHNpbmsgc2NyYW1i bGluZyAqLwo+ID4gPiArCQljb25maWctPmhkbWlfc2NyYW1ibGluZyA9ICEoZHJtX3NjZGNfZGlz YWJsZV9zY3JhbWJsaW5nKGFkcHRyKSk7Cj4gPiA+ICsJCWlmIChjb25maWctPmhkbWlfc2NyYW1i bGluZykKPiA+ID4gKwkJCURSTV9FUlJPUigiRGlzYWJsZSBzaW5rIHNjcmFtYmxpbmcgZmFpbGVk XG4iKTsKPiA+ID4gKwl9Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3N0YXRpYyBpbmxpbmUgdWlu dDMyX3QgX2ludGVsX2hkbWlfc2V0X3NvdXJjZV9zY3JhbWJsaW5nKHVpbnQzMl90IGhkbWlfY29u ZmlnKQo+ID4gPiArewo+ID4gPiArCXJldHVybiBoZG1pX2NvbmZpZyB8PSAoVFJBTlNfRERJX0hE TUlfU0NSQU1CTElORyB8Cj4gPiA+ICsJCQlUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfUkVTRVRf RlJFUSB8Cj4gPiA+ICsJCQlUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJMRSk7Cj4g PiA+ICt9Cj4gPiA+ICsKPiA+ID4gK3VpbnQzMl90Cj4gPiA+ICtpbnRlbF9oZG1pX2hhbmRsZV9z b3VyY2Vfc2NyYW1ibGluZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+ ID4gKwkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLCB1aW50MzJfdCBoZG1pX2NvbmZp ZykKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190 b19pbnRlbF9oZG1pKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2hkbWktPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFz ZTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAqaGRtaV9pbmZvID0gJmNvbm5lY3Rvci0+ ZGlzcGxheV9pbmZvLmhkbWk7Cj4gPiA+ICsJc3RydWN0IGRybV9zY3JhbWJsaW5nICpzY3JhbWJs aW5nID0gJmhkbWlfaW5mby0+c2NkYy5zY3JhbWJsaW5nOwo+ID4gPiArCj4gPiA+ICsJRFJNX0RF QlVHX0tNUygiU2V0dGluZyBzY3JhbWJsaW5nIGZvciBlbmM6JXMgY29ubmVjdG9yOiVzXG4iLAo+ ID4gPiArCQkJaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPm5hbWUpOwo+ID4g PiArCj4gPiA+ICsJaGRtaV9jb25maWcgJj0gfihUUkFOU19ERElfSERNSV9TQ1JBTUJMSU5HIHwK PiA+ID4gKwkJVFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEUgfAo+ID4gPiArCQlUUkFOU19E RElfSERNSV9TQ1JBTUJMRVJfUkVTRVRfRlJFUSB8Cj4gPiA+ICsJCVRSQU5TX0RESV9IRE1JX1ND UkFNQkxFUl9DVFNfRU5BQkxFKTsKPiA+ID4gKwo+ID4gPiArCWlmIChtb2RlLT5jbG9jayA8PSAz NDAwMDApIHsKPiA+ID4gKwkJLyogRmV3IHNpbmtzIHN1cHBvcnQgc2NyYW1ibGluZyBhdCByYXRl IDwgMzQwIE1IeiB0b28gKi8KPiA+ID4gKwkJaWYgKHNjcmFtYmxpbmctPmxvd19yYXRlcykKPiA+ ID4gKwkJCWhkbWlfY29uZmlnID0KPiA+ID4gKwkJCQlfaW50ZWxfaGRtaV9zZXRfc291cmNlX3Nj cmFtYmxpbmcoaGRtaV9jb25maWcpOwo+ID4gPiArCQlyZXR1cm4gaGRtaV9jb25maWc7Cj4gPiA+ ICsJfQo+ID4gPiArCj4gPiA+ICsJLyogU2NyYW1ibGluZyBvciBub3QsIGlmIGNsb2NrID4gMzQw IE1Ieiwgc2V0IGhpZ2ggY2hhciByYXRlICovCj4gPiA+ICsJaGRtaV9jb25maWcgfD0gVFJBTlNf RERJX0hJR0hfVE1EU19DSEFSX1JBVEU7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoc2NyYW1ibGluZy0+ c3VwcG9ydGVkKQo+ID4gPiArCQloZG1pX2NvbmZpZyA9IF9pbnRlbF9oZG1pX3NldF9zb3VyY2Vf c2NyYW1ibGluZyhoZG1pX2NvbmZpZyk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gaGRtaV9jb25m aWc7Cj4gPiA+ICt9Cj4gPiAKPiA+IFNlZW1zIG92ZXJseSBjb21wbGljYXRlZCB0byBtZS4gSXQg Y291bGQganVzdCBiZSBzb21ldGhpbmcgc2ltcGxlIGxpa2U6Cj4gPiAKPiA+IHZvaWQgaW50ZWxf ZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+ID4gewo+ ID4gCS4uLgo+ID4gCWlmIChjb25maWctPmhkbWlfc2NyYW1ibGluZykKPiA+IAkJdGVtcCB8PSBU UkFOU19ERElfSERNSV9TQ1JBTUJMSU5HOwo+ID4gCQo+ID4gCWlmIChjb25maWctPndoYXRldmVy KQo+ID4gCQl0ZW1wIHw9IFRSQU5TX0RESV9ISUdIX1RNRFNfQ0hBUl9SQVRFOwo+ID4gCS4uLgo+ ID4gfQo+IAo+IEkga25vdyBpdCBhcHBlYXJzIGxpa2UgY29tcGxpY2F0ZWQsIGJ1dCBhY3R1YWxs eSB0aGUgcmVxdWlyZW1lbnQgaXMgCj4gY29tcGxpY2F0ZWQ6Cj4gLSBpZiBjbG9jayBpcyA+IDM0 MCBNaHosIHNldCBzY3JhbWJsaW5nICYmIHNldF9oaWdoX3RtZHNfY2xvY2tfcmF0aW8KPiAtIGlm IGNsb2NrIGlzIDwgMzQwIE1oeiwgYnV0IGlmIG1vbml0b3Igc3VwcG9ydHMgc2NyYW1ibGluZyBh dCBsb3dlciAKPiBjbG9ja3MsIHNldCBzY3JhbWJsaW5nIG9ubHkgKG5vdCB0bWRzX2Nsb2NrX3Jh dGlvKQo+IC0gdG8gc2V0IHNjcmFtYmxpbmcsIHdlIGhhdmUgdG8gZmlyc3QgY2hlY2sgaWYgc2Ny YW1ibGluZyBpcyBzdXBwb3J0ZWQgCj4gaW4gbW9uaXRvcgo+IFNvIHRvIG1lZXQgYWxsIHRoZXNl IGNvbmRpdGlvbiwgeW91IHdpbGwgZW5kIHVwIHdpdGggc29tZXRoaW5nIGxpa2UgCj4gd2hhdCdz IGltcGxlbWVudGVkIGFib3ZlLgo+IERvIHlvdSBzZWUgYSAgYmV0dGVyIHdheSA/CgpQdXQgdGhh dCBpbnRlbF9oZG1pX2NvbXB1dGVfY29uZmlnKCkgc28geW91IGNoZWNrIGl0IG9ubHkgb25jZSwg aS5lLjoKCmlmIChjbG9jayA+IDM0MCB8fCBzY3JhbWJsaW5nLT5sb3dfcmF0ZXMpCgljb25maWct PmhkbWlfc2NyYW1ibGluZyA9IHRydWU7CgppZiAoY2xvY2sgPiAzNDApCgljb25maWctPmhkbWlf aGlnaF90bWRzID0gdHJ1ZTsKClRoZW4geW91IGNhbiBkbyBqdXN0IGFzIFZpbGxlIHNhaWQgYWJv dmUgaW4gaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoKS4KQW5kIGFsc28gZm9yIHRo ZSBzaW5rIHBhcnQsIG5vIG5lZWQgdG8gY2hlY2sgdGhlIGlucHV0IHZhbHVlcyBhZ2FpbjoKCmlm IChjb25maWctPmhkbWlfaGlnaF90bWRzKQoJaWYgKCFkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Ns b2NrX3JhdGlvKGFkYXB0ZXIsIGVuYWJsZSkpCgkJRFJNX0VSUk9SKCk7CgppZiAoY29uZmlnLT5o ZG1pX3NjcmFtYmluZykKCWlmICghZHJtX3NjZGNfc2V0X3NjcmFtYmxpbmcoYWRhcHRlciwgZW5h YmxlKSkKCQlEUk1fRVJST1IoKTsKCkF0IGxlYXN0IHRoYXQncyBob3cgSSdkIGludGVycHJldCB3 aGF0IFZpbGxlIHdyb3RlLgoKQW5kZXIKCgo+IAo+IC0gU2hhc2hhbmsKPiA+IAo+ID4gPiArCj4g PiA+ICAgc3RhdGljIHU4IGludGVsX2hkbWlfZGRjX3BpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiA+ICAgCQkJICAgICBlbnVtIHBvcnQgcG9ydCkKPiA+ID4gICB7Cj4g PiA+IC0tIAo+ID4gPiAxLjkuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCj4gZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK