From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [Intel-gfx] [PATCH v3 5/6] drm/i915: enable scrambling Date: Mon, 20 Feb 2017 13:18:18 +0100 Message-ID: References: <1486744168-7857-1-git-send-email-shashank.sharma@intel.com> <1486744168-7857-6-git-send-email-shashank.sharma@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1486744168-7857-6-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Shashank Sharma , dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org, jose.abreu@synopsys.com, jani.nikula@linux.intel.com Cc: daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org T3AgMTAtMDItMTcgb20gMTc6Mjkgc2NocmVlZiBTaGFzaGFuayBTaGFybWE6Cj4gR2VtaW5pbGFr ZSBwbGF0Zm9ybSBzcG9ydHMgYSBuYXRpdmUgSERNSSAyLjAgY29udHJvbGxlciwgYW5kIGlzCj4g Y2FwYWJsZSBvZiBkcml2aW5nIHBpeGVsLWNsb2NrcyB1cHRvIDU5NE1oei4gSERNSSAyLjAgc3Bl Ywo+IG1lbmRhdGVzIHNjcmFtYmxpbmcgZm9yIHRoZXNlIGhpZ2hlciBjbG9ja3MsIGZvciByZWR1 Y2VkIFJGIGZvb3RwcmludC4KPgo+IFRoaXMgcGF0Y2ggY2hlY2tzIGlmIHRoZSBtb25pdG9yIHN1 cHBvcnRzIHNjcmFtYmxpbmcsIGFuZCBpZiByZXF1aXJlZCwKPiBlbmFibGVzIGl0IGR1cmluZyB0 aGUgbW9kZXNldC4KPgo+IFYyOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gVmlsbGU6 Cj4gLSBEbyBub3QgdHJhY2sgc2NyYW1ibGluZyBzdGF0dXMgaW4gRFJNIGxheWVyLCB0cmFjayBz b21ld2hlcmUgaW4KPiAgIGRyaXZlciBsaWtlIGluIGludGVsX2NydGNfc3RhdGUuCj4gLSBEb24n dCB0YWxrIHRvIG1vbml0b3IgYXQgc3VjaCBhIGxvdyBsYXllciwgc2V0IG1vbml0b3Igc2NyYW1i bGluZwo+ICAgaW4gaW50ZWxfZW5hYmxlX2RkaSgpIGJlZm9yZSBlbmFibGluZyB0aGUgcG9ydC4K Pgo+IFYzOiBBZGRyZXNzZWQgcmV2aWV3IGNvbW1lbnRzIGZyb20gSmFuaQo+IC0gSW4gY29tbWVu dHMsIGZ1bmN0aW9uIG5hbWVzLCB1c2UgInNpbmsiIGluc3RlYWQgb2YgIm1vbml0b3IiLAo+ICAg c28gdGhhdCB0aGUgaW1wbGVtZW50YXRpb24gY291bGQgYmUgY2xvc2UgdG8gdGhlIGxhbmd1YWdl IG9mCj4gICBIRE1JIHNwZWMuCj4KPiBTaWduZWQtb2ZmLWJ5OiBTaGFzaGFuayBTaGFybWEgPHNo YXNoYW5rLnNoYXJtYUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICB8ICAgNCArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAg fCAgMjggKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgfCAg MTQgKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIHwgMTA2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDQgZmlsZXMgY2hhbmdlZCwgMTUy IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDE0MWE1YzEu LjgxY2YxMGIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNzgxOSw3ICs3ODE5 LDExIEBAIGVudW0gewo+ICAjZGVmaW5lICBUUkFOU19ERElfRURQX0lOUFVUX0JfT05PRkYJKDU8 PDEyKQo+ICAjZGVmaW5lICBUUkFOU19ERElfRURQX0lOUFVUX0NfT05PRkYJKDY8PDEyKQo+ICAj ZGVmaW5lICBUUkFOU19ERElfRFBfVkNfUEFZTE9BRF9BTExPQwkoMTw8OCkKPiArI2RlZmluZSAg VFJBTlNfRERJX0hETUlfU0NSQU1CTEVSX0NUU19FTkFCTEUgKDE8PDcpCj4gKyNkZWZpbmUgIFRS QU5TX0RESV9IRE1JX1NDUkFNQkxFUl9SRVNFVF9GUkVRICgxPDw2KQo+ICAjZGVmaW5lICBUUkFO U19ERElfQkZJX0VOQUJMRQkJKDE8PDQpCj4gKyNkZWZpbmUgIFRSQU5TX0RESV9ISUdIX1RNRFNf Q0hBUl9SQVRFCSgxPDw0KQo+ICsjZGVmaW5lICBUUkFOU19ERElfSERNSV9TQ1JBTUJMSU5HCSgx PDwwKQo+ICAKPiAgLyogRGlzcGxheVBvcnQgVHJhbnNwb3J0IENvbnRyb2wgKi8KPiAgI2RlZmlu ZSBfRFBfVFBfQ1RMX0EJCQkweDY0MDQwCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRl eCBjZDZmZWRkLi5iZDgyOTNkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBAQCAt MTI3OCw2ICsxMjc4LDExIEBAIHZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICAJCQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVD VF9IRE1JOwo+ICAJCWVsc2UKPiAgCQkJdGVtcCB8PSBUUkFOU19ERElfTU9ERV9TRUxFQ1RfRFZJ Owo+ICsKPiArCQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpCj4gKwkJCXRlbXAgPSBpbnRl bF9oZG1pX2hhbmRsZV9zb3VyY2Vfc2NyYW1ibGluZygKPiArCQkJCWludGVsX2VuY29kZXIsCj4g KwkJCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUsIHRlbXApOwo+ICAJ fSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9BTkFMT0cpIHsKPiAgCQl0ZW1wIHw9IFRS QU5TX0RESV9NT0RFX1NFTEVDVF9GREk7Cj4gIAkJdGVtcCB8PSAoaW50ZWxfY3J0Yy0+Y29uZmln LT5mZGlfbGFuZXMgLSAxKSA8PCAxOwo+IEBAIC0xODQzLDYgKzE4NDgsMjEgQEAgc3RhdGljIHZv aWQgaW50ZWxfZW5hYmxlX2RkaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwK PiAgCQlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9Cj4gIAkJCWVu Y190b19kaWdfcG9ydChlbmNvZGVyKTsKPiAgCj4gKwkJaWYgKElTX0dFTUlOSUxBS0UoZGV2X3By aXYpKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNv ZGVyLT5jcnRjKTsKPiArCQkJLyoKPiArCQkJICogR0xLIHNwb3J0cyBhIG5hdGl2ZSBIRE1JIDIu MCBjb250cm9sbGVyLiBJZiByZXF1aXJlZAo+ICsJCQkgKiBjbG9jayByYXRlIGlzID4gMzQwIE1o eiAmJiBzY3JhbWJsaW5nIGlzIHN1cHBvcnRlZAo+ICsJCQkgKiBieSBzaW5rLCBlbmFibGUgc2Ny YW1ibGluZyBiZWZvcmUgZW5hYmxpbmcgdGhlCj4gKwkJCSAqIEhETUkgMi4wIHBvcnQuIFRoZSBz aW5rIGNhbiBjaG9vc2UgdG8gZGlzYWJsZSB0aGUKPiArCQkJICogc2NyYW1ibGluZyBpZiBpdCBk b2Vzbid0IGRldGVjdCBhIHNjcmFtYmxlZCB3aXRoaW4KPiArCQkJICogMTAwIG1zLgo+ICsJCQkg Ki8KPiArCQkJaW50ZWxfaGRtaV9oYW5kbGVfc2lua19zY3JhbWJsaW5nKGludGVsX2VuY29kZXIs Cj4gKwkJCQkJCWNvbm5fc3RhdGUtPmNvbm5lY3RvciwKPiArCQkJCQkJY3J0Yy0+Y29uZmlnLCB0 cnVlKTsKPiArCQl9Cj4gKwo+ICAJCS8qIEluIEhETUkvRFZJIG1vZGUsIHRoZSBwb3J0IHdpZHRo LCBhbmQgc3dpbmcvZW1waGFzaXMgdmFsdWVzCj4gIAkJICogYXJlIGlnbm9yZWQgc28gbm90aGlu ZyBzcGVjaWFsIG5lZWRzIHRvIGJlIGRvbmUgYmVzaWRlcwo+ICAJCSAqIGVuYWJsaW5nIHRoZSBw b3J0Lgo+IEBAIC0xODc1LDYgKzE4OTUsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGlzYWJsZV9k ZGkoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gIAlpZiAob2xkX2NydGNf c3RhdGUtPmhhc19hdWRpbykKPiAgCQlpbnRlbF9hdWRpb19jb2RlY19kaXNhYmxlKGludGVsX2Vu Y29kZXIpOwo+ICAKPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4gKwkJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMp Owo+ICsKPiArCQlpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoaW50ZWxfZW5jb2Rl ciwKPiArCQkJCQlvbGRfY29ubl9zdGF0ZS0+Y29ubmVjdG9yLAo+ICsJCQkJCWludGVsX2NydGMt PmNvbmZpZywgZmFsc2UpOwo+ICsJfQo+ICsKPiAgCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9F RFApIHsKPiAgCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKGVu Y29kZXIpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDZlMzdmYmEuLmRm MDE3MGI4OCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTY5MSw2ICs2OTEs MTIgQEAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgewo+ICAKPiAgCS8qIEdhbW1hIG1vZGUgcHJv Z3JhbW1lZCBvbiB0aGUgcGlwZSAqLwo+ICAJdWludDMyX3QgZ2FtbWFfbW9kZTsKPiArCj4gKwkv KiBIRE1JIHNjcmFtYmxpbmcgc3RhdHVzIChzaW5rKSAqLwo+ICsJYm9vbCBzY3JhbWJsaW5nOwo+ ICsKPiArCS8qIEhETUkgSGlnaCBUTURTIGNoYXIgcmF0ZSByYXRpbyAoc2luaykgKi8KPiArCWJv b2wgaGlnaF90bWRzX2Nsb2NrX3JhdGlvOwo+ICB9OwpTaW5jZSB0aGlzIGlzIGZvciBoZG1pLCBt YXliZSBhZGQgdGhhdCB0byB0aGUgdmFyaWFibGUgbmFtZSB0b28/CgpPdGhlcndpc2UgbG9va3Mg c2FuZSwgSSB3aXNoIGludGVsX2NydGMtPmNvbmZpZyB3YXMgZ29uZSBhbmQgaW50ZWxfY3J0Y19z dGF0ZSBleHBsaWNpdGx5IHBhc3NlZCwgYnV0IHRoYXQgd29uJ3QgaGFwcGVuIGp1c3QgeWV0Li4K PiAgc3RydWN0IHZsdl93bV9zdGF0ZSB7Cj4gQEAgLTE2MDksNiArMTYxNSwxNCBAQCB2b2lkIGlu dGVsX2hkbWlfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxf ZGlnX3BvcnQsCj4gIGJvb2wgaW50ZWxfaGRtaV9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZywKPiAgCQkJICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25u X3N0YXRlKTsKPiArdWludDMyX3QKPiAraW50ZWxfaGRtaV9oYW5kbGVfc291cmNlX3NjcmFtYmxp bmcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gKwkJCQkJc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUsCj4gKwkJCQkJdWludDMyX3QgY29uZmlnKTsKPiArdm9pZCBp bnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoc3RydWN0IGludGVsX2VuY29kZXIgKmlu dGVsX2VuY29kZXIsCj4gKwkJCQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAr CQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY29uZmlnLAo+ICsJCQkJCWJvb2wgZW5hYmxl KTsKPiAgdm9pZCBpbnRlbF9kcF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0KHN0cnVjdCBpbnRl bF9oZG1pICpoZG1pLCBib29sIGVuYWJsZSk7Cj4gIAo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aGRtaS5jCj4gaW5kZXggYTU4MGRlOC4uOTk3MDEzMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9oZG1pLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9oZG1pLmMKPiBAQCAtMzQsNiArMzQsNyBAQAo+ICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNf aGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1fZWRpZC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9zY2RjX2hlbHBlci5oPgo+ICAjaW5jbHVk ZSAiaW50ZWxfZHJ2LmgiCj4gICNpbmNsdWRlIDxkcm0vaTkxNV9kcm0uaD4KPiAgI2luY2x1ZGUg PGRybS9pbnRlbF9scGVfYXVkaW8uaD4KPiBAQCAtMTc5NSw2ICsxNzk2LDExMSBAQCBzdGF0aWMg dm9pZCBpbnRlbF9oZG1pX2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiAgCWludGVsX2hkbWktPmFzcGVjdF9yYXRpbyA9IEhETUlfUElDVFVSRV9BU1BFQ1RfTk9ORTsK PiAgfQo+ICAKPiArdm9pZCBpbnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoc3RydWN0 IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsCj4gKwkJCQkgICAgICAgc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0 ZSAqY29uZmlnLAo+ICsJCQkJICAgICAgIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZpbnRlbF9lbmNvZGVyLT5i YXNlKTsKPiArCXN0cnVjdCBkcm1fc2NkYyAqc2NkYyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5m by5oZG1pLnNjZGM7Cj4gKwlzdHJ1Y3QgZHJtX3NjcmFtYmxpbmcgKnNjcmFtYmxpbmcgPSAmc2Nk Yy0+c2NyYW1ibGluZzsKPiArCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0gJmNvbmZp Zy0+YmFzZS5hZGp1c3RlZF9tb2RlOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gY29ubmVjdG9yLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGkyY19hZGFwdGVy ICphZHB0ciA9IGludGVsX2dtYnVzX2dldF9hZGFwdGVyKGRldl9wcml2LAo+ICsJCQkJCQkJICBp bnRlbF9oZG1pLT5kZGNfYnVzKTsKPiArCj4gKwlpZiAoIXNjcmFtYmxpbmctPnN1cHBvcnRlZCkK PiArCQlyZXR1cm47Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBzaW5rIHNjcmFtYmxp bmcgZm9yIGVuYzolcyBjb25uZWN0b3I6JXNcbiIsCj4gKwkJCWludGVsX2VuY29kZXItPmJhc2Uu bmFtZSwgY29ubmVjdG9yLT5uYW1lKTsKPiArCj4gKwlpZiAoZW5hYmxlKSB7Cj4gKwo+ICsJCWlm IChtb2RlLT5jbG9jayA+IDM0MDAwMCkgewo+ICsJCQkvKiBTZXQgVE1EUyBiaXQgY2xvY2sgcmF0 aW8gdG8gMS80MCAqLwo+ICsJCQljb25maWctPmhpZ2hfdG1kc19jbG9ja19yYXRpbyA9Cj4gKwkJ CQlkcm1fc2NkY19zZXRfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKGFkcHRyKTsKPiArCQkJaWYgKCFj b25maWctPmhpZ2hfdG1kc19jbG9ja19yYXRpbykgewo+ICsJCQkJRFJNX0VSUk9SKCJTZXQgaGln aCBUTURTIHJhdGlvIGZhaWxlZFxuIik7Cj4gKwkJCQlyZXR1cm47Cj4gKwkJCX0KPiArCj4gKwkJ CS8qIEVuYWJsZSBzaW5rIHNjcmFtYmxpbmcgKi8KPiArCQkJY29uZmlnLT5zY3JhbWJsaW5nID0g ZHJtX3NjZGNfZW5hYmxlX3NjcmFtYmxpbmcoYWRwdHIpOwo+ICsJCQlpZiAoIWNvbmZpZy0+c2Ny YW1ibGluZykgewo+ICsJCQkJRFJNX0VSUk9SKCJDYW4ndCBlbmFibGUgc2luayBzY3JhbWJsaW5n XG4iKTsKPiArCQkJCXJldHVybjsKPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJLyogRmV3IHNpbmtz IHN1cHBvcnQgc2NyYW1ibGluZyBhdCBjbG9ja3MgPD0zNDAgTUh6IHRvbyAqLwo+ICsJCWlmICgh Y29uZmlnLT5zY3JhbWJsaW5nICYmIHNjcmFtYmxpbmctPmxvd19yYXRlcykgewo+ICsJCQljb25m aWctPnNjcmFtYmxpbmcgPSBkcm1fc2NkY19lbmFibGVfc2NyYW1ibGluZyhhZHB0cik7Cj4gKwkJ CWlmICghY29uZmlnLT5zY3JhbWJsaW5nKQo+ICsJCQkJRFJNX0VSUk9SKCJDYW4ndCBlbmFibGUg c2luayBzY3JhbWJsaW5nXG4iKTsKPiArCQl9Cj4gKwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4g KwlpZiAoY29uZmlnLT5oaWdoX3RtZHNfY2xvY2tfcmF0aW8pIHsKPiArCQkvKiBTZXQgVE1EUyBi aXQgY2xvY2sgcmF0aW8gYmFjayB0byAxLzEwICovCj4gKwkJY29uZmlnLT5oaWdoX3RtZHNfY2xv Y2tfcmF0aW8gPQo+ICsJCQkhKGRybV9zY2RjX2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyhh ZHB0cikpOwo+ICsJCWlmIChjb25maWctPmhpZ2hfdG1kc19jbG9ja19yYXRpbykKPiArCQkJRFJN X0VSUk9SKCJSZXNldCBoaWdoIFRNRFMgcmF0aW8gZmFpbGVkXG4iKTsKPiArCX0KPiArCj4gKwlp ZiAoY29uZmlnLT5zY3JhbWJsaW5nKSB7Cj4gKwkJLyogRGlzYWJsZSBzaW5rIHNjcmFtYmxpbmcg Ki8KPiArCQljb25maWctPnNjcmFtYmxpbmcgPSAhKGRybV9zY2RjX2Rpc2FibGVfc2NyYW1ibGlu ZyhhZHB0cikpOwo+ICsJCWlmIChjb25maWctPnNjcmFtYmxpbmcpCj4gKwkJCURSTV9FUlJPUigi RGlzYWJsZSBzaW5rIHNjcmFtYmxpbmcgZmFpbGVkXG4iKTsKPiArCX0KPiArfQo+ICsKPiArc3Rh dGljIGlubGluZSB1aW50MzJfdCBfaW50ZWxfaGRtaV9zZXRfc291cmNlX3NjcmFtYmxpbmcodWlu dDMyX3QgaGRtaV9jb25maWcpCj4gK3sKPiArCXJldHVybiBoZG1pX2NvbmZpZyB8PSAoVFJBTlNf RERJX0hETUlfU0NSQU1CTElORyB8Cj4gKwkJCVRSQU5TX0RESV9IRE1JX1NDUkFNQkxFUl9SRVNF VF9GUkVRIHwKPiArCQkJVFJBTlNfRERJX0hETUlfU0NSQU1CTEVSX0NUU19FTkFCTEUpOwo+ICt9 Cj4gKwo+ICt1aW50MzJfdAo+ICtpbnRlbF9oZG1pX2hhbmRsZV9zb3VyY2Vfc2NyYW1ibGluZyhz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiArCQkJc3RydWN0IGRybV9kaXNw bGF5X21vZGUgKm1vZGUsIHVpbnQzMl90IGhkbWlfY29uZmlnKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50 ZWxfaGRtaSAqaW50ZWxfaGRtaSA9IGVuY190b19pbnRlbF9oZG1pKCZpbnRlbF9lbmNvZGVyLT5i YXNlKTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfaGRtaS0+ YXR0YWNoZWRfY29ubmVjdG9yLT5iYXNlOwo+ICsJc3RydWN0IGRybV9oZG1pX2luZm8gKmhkbWlf aW5mbyA9ICZjb25uZWN0b3ItPmRpc3BsYXlfaW5mby5oZG1pOwo+ICsJc3RydWN0IGRybV9zY3Jh bWJsaW5nICpzY3JhbWJsaW5nID0gJmhkbWlfaW5mby0+c2NkYy5zY3JhbWJsaW5nOwo+ICsKPiAr CURSTV9ERUJVR19LTVMoIlNldHRpbmcgc2NyYW1ibGluZyBmb3IgZW5jOiVzIGNvbm5lY3Rvcjol c1xuIiwKPiArCQkJaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1lLCBjb25uZWN0b3ItPm5hbWUpOwo+ ICsKPiArCWhkbWlfY29uZmlnICY9IH4oVFJBTlNfRERJX0hETUlfU0NSQU1CTElORyB8Cj4gKwkJ VFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEUgfAo+ICsJCVRSQU5TX0RESV9IRE1JX1NDUkFN QkxFUl9SRVNFVF9GUkVRIHwKPiArCQlUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJM RSk7Cj4gKwo+ICsJaWYgKG1vZGUtPmNsb2NrIDw9IDM0MDAwMCkgewo+ICsJCS8qIEZldyBzaW5r cyBzdXBwb3J0IHNjcmFtYmxpbmcgYXQgcmF0ZSA8IDM0MCBNSHogdG9vICovCj4gKwkJaWYgKHNj cmFtYmxpbmctPmxvd19yYXRlcykKPiArCQkJaGRtaV9jb25maWcgPQo+ICsJCQkJX2ludGVsX2hk bWlfc2V0X3NvdXJjZV9zY3JhbWJsaW5nKGhkbWlfY29uZmlnKTsKPiArCQlyZXR1cm4gaGRtaV9j b25maWc7Cj4gKwl9Cj4gKwo+ICsJLyogU2NyYW1ibGluZyBvciBub3QsIGlmIGNsb2NrID4gMzQw IE1Ieiwgc2V0IGhpZ2ggY2hhciByYXRlICovCj4gKwloZG1pX2NvbmZpZyB8PSBUUkFOU19ERElf SElHSF9UTURTX0NIQVJfUkFURTsKPiArCj4gKwlpZiAoc2NyYW1ibGluZy0+c3VwcG9ydGVkKQo+ ICsJCWhkbWlfY29uZmlnID0gX2ludGVsX2hkbWlfc2V0X3NvdXJjZV9zY3JhbWJsaW5nKGhkbWlf Y29uZmlnKTsKPiArCj4gKwlyZXR1cm4gaGRtaV9jb25maWc7Cj4gK30KPiArCj4gIHN0YXRpYyB1 OCBpbnRlbF9oZG1pX2RkY19waW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJCQkgICAgIGVudW0gcG9ydCBwb3J0KQo+ICB7CgoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vZHJpLWRldmVsCg==