From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4 5/6] drm/i915: enable scrambling Date: Wed, 22 Feb 2017 19:29:54 +0200 Message-ID: <20170222172954.GM31595@intel.com> References: <1487769511-17359-1-git-send-email-shashank.sharma@intel.com> <1487769511-17359-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: Content-Disposition: inline In-Reply-To: <1487769511-17359-6-git-send-email-shashank.sharma@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Shashank Sharma Cc: jose.abreu@synopsys.com, intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, daniel.vetter@intel.com, treding@nvidia.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBGZWIgMjIsIDIwMTcgYXQgMDY6NDg6MzBQTSArMDUzMCwgU2hhc2hhbmsgU2hhcm1h IHdyb3RlOgo+IEdlbWluaWxha2UgcGxhdGZvcm0gc3BvcnRzIGEgbmF0aXZlIEhETUkgMi4wIGNv bnRyb2xsZXIsIGFuZCBpcwo+IGNhcGFibGUgb2YgZHJpdmluZyBwaXhlbC1jbG9ja3MgdXB0byA1 OTRNaHouIEhETUkgMi4wIHNwZWMKPiBtZW5kYXRlcyBzY3JhbWJsaW5nIGZvciB0aGVzZSBoaWdo ZXIgY2xvY2tzLCBmb3IgcmVkdWNlZCBSRiBmb290cHJpbnQuCj4gCj4gVGhpcyBwYXRjaCBjaGVj a3MgaWYgdGhlIG1vbml0b3Igc3VwcG9ydHMgc2NyYW1ibGluZywgYW5kIGlmIHJlcXVpcmVkLAo+ IGVuYWJsZXMgaXQgZHVyaW5nIHRoZSBtb2Rlc2V0Lgo+IAo+IFYyOiBBZGRyZXNzZWQgcmV2aWV3 IGNvbW1lbnRzIGZyb20gVmlsbGU6Cj4gLSBEbyBub3QgdHJhY2sgc2NyYW1ibGluZyBzdGF0dXMg aW4gRFJNIGxheWVyLCB0cmFjayBzb21ld2hlcmUgaW4KPiAgIGRyaXZlciBsaWtlIGluIGludGVs X2NydGNfc3RhdGUuCj4gLSBEb24ndCB0YWxrIHRvIG1vbml0b3IgYXQgc3VjaCBhIGxvdyBsYXll ciwgc2V0IG1vbml0b3Igc2NyYW1ibGluZwo+ICAgaW4gaW50ZWxfZW5hYmxlX2RkaSgpIGJlZm9y ZSBlbmFibGluZyB0aGUgcG9ydC4KPiAKPiBWMzogQWRkcmVzc2VkIHJldmlldyBjb21tZW50cyBm cm9tIEphbmkKPiAtIEluIGNvbW1lbnRzLCBmdW5jdGlvbiBuYW1lcywgdXNlICJzaW5rIiBpbnN0 ZWFkIG9mICJtb25pdG9yIiwKPiAgIHNvIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGNvdWxkIGJl IGNsb3NlIHRvIHRoZSBsYW5ndWFnZSBvZgo+ICAgSERNSSBzcGVjLgo+IAo+IFY0OiBBZGRyZXNz ZWQgcmV2aWV3IGNvbW1lbnQgZnJvbSBNYWFydGVuCj4gLSBzY3JhbWJsaW5nIC0+IGhkbWlfc2Ny YW1ibGluZwo+ICAgaGlnaF90bWRzX2Nsb2NrX3JhdGlvIC0+IGhkbWlfaGlnaF90bWRzX2Nsb2Nr X3JhdGlvCj4gCj4gU2lnbmVkLW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFy bWFAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAg fCAgIDQgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgIHwgIDI4ICsrKysr KysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggIHwgIDE0ICsrKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyB8IDEwOCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDE1NCBpbnNlcnRpb25z KCspCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggMTQxYTVjMS4uODFjZjEwYiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC03ODE5LDcgKzc4MTksMTEgQEAgZW51 bSB7Cj4gICNkZWZpbmUgIFRSQU5TX0RESV9FRFBfSU5QVVRfQl9PTk9GRgkoNTw8MTIpCj4gICNk ZWZpbmUgIFRSQU5TX0RESV9FRFBfSU5QVVRfQ19PTk9GRgkoNjw8MTIpCj4gICNkZWZpbmUgIFRS QU5TX0RESV9EUF9WQ19QQVlMT0FEX0FMTE9DCSgxPDw4KQo+ICsjZGVmaW5lICBUUkFOU19ERElf SERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJMRSAoMTw8NykKPiArI2RlZmluZSAgVFJBTlNfRERJX0hE TUlfU0NSQU1CTEVSX1JFU0VUX0ZSRVEgKDE8PDYpCj4gICNkZWZpbmUgIFRSQU5TX0RESV9CRklf RU5BQkxFCQkoMTw8NCkKPiArI2RlZmluZSAgVFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEUJ KDE8PDQpCj4gKyNkZWZpbmUgIFRSQU5TX0RESV9IRE1JX1NDUkFNQkxJTkcJKDE8PDApCj4gIAo+ ICAvKiBEaXNwbGF5UG9ydCBUcmFuc3BvcnQgQ29udHJvbCAqLwo+ICAjZGVmaW5lIF9EUF9UUF9D VExfQQkJCTB4NjQwNDAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IGNkNmZlZGQu LmJkODI5M2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0xMjc4LDYgKzEy NzgsMTEgQEAgdm9pZCBpbnRlbF9kZGlfZW5hYmxlX3RyYW5zY29kZXJfZnVuYyhzdHJ1Y3QgZHJt X2NydGMgKmNydGMpCj4gIAkJCXRlbXAgfD0gVFJBTlNfRERJX01PREVfU0VMRUNUX0hETUk7Cj4g IAkJZWxzZQo+ICAJCQl0ZW1wIHw9IFRSQU5TX0RESV9NT0RFX1NFTEVDVF9EVkk7Cj4gKwo+ICsJ CWlmIChJU19HRU1JTklMQUtFKGRldl9wcml2KSkKPiArCQkJdGVtcCA9IGludGVsX2hkbWlfaGFu ZGxlX3NvdXJjZV9zY3JhbWJsaW5nKAo+ICsJCQkJaW50ZWxfZW5jb2RlciwKPiArCQkJCSZpbnRl bF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZSwgdGVtcCk7Cj4gIAl9IGVsc2UgaWYg KHR5cGUgPT0gSU5URUxfT1VUUFVUX0FOQUxPRykgewo+ICAJCXRlbXAgfD0gVFJBTlNfRERJX01P REVfU0VMRUNUX0ZESTsKPiAgCQl0ZW1wIHw9IChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5l cyAtIDEpIDw8IDE7Cj4gQEAgLTE4NDMsNiArMTg0OCwyMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9l bmFibGVfZGRpKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ICAJCXN0cnVj dCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0KPiAgCQkJZW5jX3RvX2RpZ19w b3J0KGVuY29kZXIpOwo+ICAKPiArCQlpZiAoSVNfR0VNSU5JTEFLRShkZXZfcHJpdikpIHsKPiAr CQkJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMp Owo+ICsJCQkvKgo+ICsJCQkgKiBHTEsgc3BvcnRzIGEgbmF0aXZlIEhETUkgMi4wIGNvbnRyb2xs ZXIuIElmIHJlcXVpcmVkCj4gKwkJCSAqIGNsb2NrIHJhdGUgaXMgPiAzNDAgTWh6ICYmIHNjcmFt YmxpbmcgaXMgc3VwcG9ydGVkCj4gKwkJCSAqIGJ5IHNpbmssIGVuYWJsZSBzY3JhbWJsaW5nIGJl Zm9yZSBlbmFibGluZyB0aGUKPiArCQkJICogSERNSSAyLjAgcG9ydC4gVGhlIHNpbmsgY2FuIGNo b29zZSB0byBkaXNhYmxlIHRoZQo+ICsJCQkgKiBzY3JhbWJsaW5nIGlmIGl0IGRvZXNuJ3QgZGV0 ZWN0IGEgc2NyYW1ibGVkIHdpdGhpbgo+ICsJCQkgKiAxMDAgbXMuCj4gKwkJCSAqLwo+ICsJCQlp bnRlbF9oZG1pX2hhbmRsZV9zaW5rX3NjcmFtYmxpbmcoaW50ZWxfZW5jb2RlciwKPiArCQkJCQkJ Y29ubl9zdGF0ZS0+Y29ubmVjdG9yLAo+ICsJCQkJCQljcnRjLT5jb25maWcsIHRydWUpOwo+ICsJ CX0KPiArCj4gIAkJLyogSW4gSERNSS9EVkkgbW9kZSwgdGhlIHBvcnQgd2lkdGgsIGFuZCBzd2lu Zy9lbXBoYXNpcyB2YWx1ZXMKPiAgCQkgKiBhcmUgaWdub3JlZCBzbyBub3RoaW5nIHNwZWNpYWwg bmVlZHMgdG8gYmUgZG9uZSBiZXNpZGVzCj4gIAkJICogZW5hYmxpbmcgdGhlIHBvcnQuCj4gQEAg LTE4NzUsNiArMTg5NSwxNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kaXNhYmxlX2RkaShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiAgCWlmIChvbGRfY3J0Y19zdGF0ZS0+aGFz X2F1ZGlvKQo+ICAJCWludGVsX2F1ZGlvX2NvZGVjX2Rpc2FibGUoaW50ZWxfZW5jb2Rlcik7Cj4g IAo+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0hETUkpIHsKPiArCQlzdHJ1Y3QgaW50ZWxf Y3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+Y3J0Yyk7Cj4gKwo+ICsJ CWludGVsX2hkbWlfaGFuZGxlX3Npbmtfc2NyYW1ibGluZyhpbnRlbF9lbmNvZGVyLAo+ICsJCQkJ CW9sZF9jb25uX3N0YXRlLT5jb25uZWN0b3IsCj4gKwkJCQkJaW50ZWxfY3J0Yy0+Y29uZmlnLCBm YWxzZSk7Cj4gKwl9Cj4gKwo+ICAJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ICAJ CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4g IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggODIxYzU3Yy4uYzcyNjJkNyAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTY5MSw2ICs2OTEsMTIgQEAgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgewo+ICAKPiAgCS8qIEdhbW1hIG1vZGUgcHJvZ3JhbW1lZCBvbiB0 aGUgcGlwZSAqLwo+ICAJdWludDMyX3QgZ2FtbWFfbW9kZTsKPiArCj4gKwkvKiBIRE1JIHNjcmFt Ymxpbmcgc3RhdHVzIChzaW5rKSAqLwo+ICsJYm9vbCBoZG1pX3NjcmFtYmxpbmc7Cj4gKwo+ICsJ LyogSERNSSBIaWdoIFRNRFMgY2hhciByYXRlIHJhdGlvIChzaW5rKSAqLwo+ICsJYm9vbCBoZG1p X2hpZ2hfdG1kc19jbG9ja19yYXRpbzsKPiAgfTsKPiAgCj4gIHN0cnVjdCB2bHZfd21fc3RhdGUg ewo+IEBAIC0xNjA5LDYgKzE2MTUsMTQgQEAgdm9pZCBpbnRlbF9oZG1pX2luaXRfY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICBib29sIGludGVs X2hkbWlfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCj4gIAkJCSAgICAg ICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdGF0ZSk7Cj4gK3VpbnQzMl90Cj4g K2ludGVsX2hkbWlfaGFuZGxlX3NvdXJjZV9zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyLAo+ICsJCQkJCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAo+ ICsJCQkJCXVpbnQzMl90IGNvbmZpZyk7Cj4gK3ZvaWQgaW50ZWxfaGRtaV9oYW5kbGVfc2lua19z Y3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ICsJCQkJCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCQkJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNvbmZpZywKPiArCQkJCQlib29sIGVuYWJsZSk7Cj4gIHZvaWQgaW50ZWxfZHBfZHVh bF9tb2RlX3NldF90bWRzX291dHB1dChzdHJ1Y3QgaW50ZWxfaGRtaSAqaGRtaSwgYm9vbCBlbmFi bGUpOwo+ICAKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hk bWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYwo+IGluZGV4IGE1ODBkZTgu LmM0NGJlZWUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gQEAgLTM0LDYgKzM0 LDcgQEAKPiAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8 ZHJtL2RybV9jcnRjLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4KPiArI2luY2x1ZGUg PGRybS9kcm1fc2NkY19oZWxwZXIuaD4KPiAgI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICAjaW5j bHVkZSA8ZHJtL2k5MTVfZHJtLmg+Cj4gICNpbmNsdWRlIDxkcm0vaW50ZWxfbHBlX2F1ZGlvLmg+ Cj4gQEAgLTE3OTUsNiArMTc5NiwxMTMgQEAgc3RhdGljIHZvaWQgaW50ZWxfaGRtaV9kZXN0cm95 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gIAlpbnRlbF9oZG1pLT5hc3BlY3Rf cmF0aW8gPSBIRE1JX1BJQ1RVUkVfQVNQRUNUX05PTkU7Cj4gIH0KPiAgCj4gK3ZvaWQgaW50ZWxf aGRtaV9oYW5kbGVfc2lua19zY3JhbWJsaW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9l bmNvZGVyLAo+ICsJCQkJICAgICAgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4g KwkJCQkgICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNvbmZpZywKPiArCQkJCSAgICAg ICBib29sIGVuYWJsZSkKPiArewo+ICsJc3RydWN0IGludGVsX2hkbWkgKmludGVsX2hkbWkgPSBl bmNfdG9faW50ZWxfaGRtaSgmaW50ZWxfZW5jb2Rlci0+YmFzZSk7Cj4gKwlzdHJ1Y3QgZHJtX3Nj ZGMgKnNjZGMgPSAmY29ubmVjdG9yLT5kaXNwbGF5X2luZm8uaGRtaS5zY2RjOwo+ICsJc3RydWN0 IGRybV9zY3JhbWJsaW5nICpzY3JhbWJsaW5nID0gJnNjZGMtPnNjcmFtYmxpbmc7Cj4gKwlzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNvbm5lY3Rvci0+ZGV2LT5k ZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpMmNfYWRhcHRlciAqYWRwdHIgPSBpbnRlbF9nbWJ1c19n ZXRfYWRhcHRlcihkZXZfcHJpdiwKPiArCQkJCQkJCSAgaW50ZWxfaGRtaS0+ZGRjX2J1cyk7Cj4g Kwo+ICsJaWYgKCFzY3JhbWJsaW5nLT5zdXBwb3J0ZWQpCj4gKwkJcmV0dXJuOwo+ICsKPiArCURS TV9ERUJVR19LTVMoIlNldHRpbmcgc2luayBzY3JhbWJsaW5nIGZvciBlbmM6JXMgY29ubmVjdG9y OiVzXG4iLAo+ICsJCQlpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+bmFtZSk7 Cj4gKwo+ICsJaWYgKGVuYWJsZSkgewo+ICsKPiArCQlpZiAobW9kZS0+Y2xvY2sgPiAzNDAwMDAp IHsKPiArCQkJLyogU2V0IFRNRFMgYml0IGNsb2NrIHJhdGlvIHRvIDEvNDAgKi8KPiArCQkJY29u ZmlnLT5oZG1pX2hpZ2hfdG1kc19jbG9ja19yYXRpbyA9Cj4gKwkJCQlkcm1fc2NkY19zZXRfaGln aF90bWRzX2Nsb2NrX3JhdGlvKGFkcHRyKTsKCllvdSdyZSBub3QgYWxsb3dlZCB0byBtdWNrIHdp dGggdGhlIHN0YXRlIGFueW1vcmUuIEFsbCBzdGF0ZSBjb21wdXRhdGlvbgpzaG91bGQgaGFwcGVu IGluIHRoZSAuY29tcHV0ZV9jb25maWcgaG9vay4KCj4gKwkJCWlmICghY29uZmlnLT5oZG1pX2hp Z2hfdG1kc19jbG9ja19yYXRpbykgewo+ICsJCQkJRFJNX0VSUk9SKCJTZXQgaGlnaCBUTURTIHJh dGlvIGZhaWxlZFxuIik7Cj4gKwkJCQlyZXR1cm47Cj4gKwkJCX0KPiArCj4gKwkJCS8qIEVuYWJs ZSBzaW5rIHNjcmFtYmxpbmcgKi8KPiArCQkJY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcgPQo+ICsJ CQkJCWRybV9zY2RjX2VuYWJsZV9zY3JhbWJsaW5nKGFkcHRyKTsKPiArCQkJaWYgKCFjb25maWct PmhkbWlfc2NyYW1ibGluZykgewo+ICsJCQkJRFJNX0VSUk9SKCJDYW4ndCBlbmFibGUgc2luayBz Y3JhbWJsaW5nXG4iKTsKPiArCQkJCXJldHVybjsKPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJLyog RmV3IHNpbmtzIHN1cHBvcnQgc2NyYW1ibGluZyBhdCBjbG9ja3MgPD0zNDAgTUh6IHRvbyAqLwo+ ICsJCWlmICghY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcgJiYgc2NyYW1ibGluZy0+bG93X3JhdGVz KSB7Cj4gKwkJCWNvbmZpZy0+aGRtaV9zY3JhbWJsaW5nID0KPiArCQkJCQlkcm1fc2NkY19lbmFi bGVfc2NyYW1ibGluZyhhZHB0cik7Cj4gKwkJCWlmICghY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcp Cj4gKwkJCQlEUk1fRVJST1IoIkNhbid0IGVuYWJsZSBzaW5rIHNjcmFtYmxpbmdcbiIpOwo+ICsJ CX0KPiArCj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCWlmIChjb25maWctPmhkbWlfaGlnaF90 bWRzX2Nsb2NrX3JhdGlvKSB7Cj4gKwkJLyogU2V0IFRNRFMgYml0IGNsb2NrIHJhdGlvIGJhY2sg dG8gMS8xMCAqLwo+ICsJCWNvbmZpZy0+aGRtaV9oaWdoX3RtZHNfY2xvY2tfcmF0aW8gPQo+ICsJ CQkhKGRybV9zY2RjX2NsZWFyX2hpZ2hfdG1kc19jbG9ja19yYXRpbyhhZHB0cikpOwo+ICsJCWlm IChjb25maWctPmhkbWlfaGlnaF90bWRzX2Nsb2NrX3JhdGlvKQo+ICsJCQlEUk1fRVJST1IoIlJl c2V0IGhpZ2ggVE1EUyByYXRpbyBmYWlsZWRcbiIpOwo+ICsJfQo+ICsKPiArCWlmIChjb25maWct PmhkbWlfc2NyYW1ibGluZykgewo+ICsJCS8qIERpc2FibGUgc2luayBzY3JhbWJsaW5nICovCj4g KwkJY29uZmlnLT5oZG1pX3NjcmFtYmxpbmcgPSAhKGRybV9zY2RjX2Rpc2FibGVfc2NyYW1ibGlu ZyhhZHB0cikpOwo+ICsJCWlmIChjb25maWctPmhkbWlfc2NyYW1ibGluZykKPiArCQkJRFJNX0VS Uk9SKCJEaXNhYmxlIHNpbmsgc2NyYW1ibGluZyBmYWlsZWRcbiIpOwo+ICsJfQo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90IF9pbnRlbF9oZG1pX3NldF9zb3VyY2Vfc2NyYW1ibGlu Zyh1aW50MzJfdCBoZG1pX2NvbmZpZykKPiArewo+ICsJcmV0dXJuIGhkbWlfY29uZmlnIHw9IChU UkFOU19ERElfSERNSV9TQ1JBTUJMSU5HIHwKPiArCQkJVFJBTlNfRERJX0hETUlfU0NSQU1CTEVS X1JFU0VUX0ZSRVEgfAo+ICsJCQlUUkFOU19ERElfSERNSV9TQ1JBTUJMRVJfQ1RTX0VOQUJMRSk7 Cj4gK30KPiArCj4gK3VpbnQzMl90Cj4gK2ludGVsX2hkbWlfaGFuZGxlX3NvdXJjZV9zY3JhbWJs aW5nKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ICsJCQlzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSwgdWludDMyX3QgaGRtaV9jb25maWcpCj4gK3sKPiArCXN0cnVj dCBpbnRlbF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoJmludGVsX2VuY29k ZXItPmJhc2UpOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9o ZG1pLT5hdHRhY2hlZF9jb25uZWN0b3ItPmJhc2U7Cj4gKwlzdHJ1Y3QgZHJtX2hkbWlfaW5mbyAq aGRtaV9pbmZvID0gJmNvbm5lY3Rvci0+ZGlzcGxheV9pbmZvLmhkbWk7Cj4gKwlzdHJ1Y3QgZHJt X3NjcmFtYmxpbmcgKnNjcmFtYmxpbmcgPSAmaGRtaV9pbmZvLT5zY2RjLnNjcmFtYmxpbmc7Cj4g Kwo+ICsJRFJNX0RFQlVHX0tNUygiU2V0dGluZyBzY3JhbWJsaW5nIGZvciBlbmM6JXMgY29ubmVj dG9yOiVzXG4iLAo+ICsJCQlpbnRlbF9lbmNvZGVyLT5iYXNlLm5hbWUsIGNvbm5lY3Rvci0+bmFt ZSk7Cj4gKwo+ICsJaGRtaV9jb25maWcgJj0gfihUUkFOU19ERElfSERNSV9TQ1JBTUJMSU5HIHwK PiArCQlUUkFOU19ERElfSElHSF9UTURTX0NIQVJfUkFURSB8Cj4gKwkJVFJBTlNfRERJX0hETUlf U0NSQU1CTEVSX1JFU0VUX0ZSRVEgfAo+ICsJCVRSQU5TX0RESV9IRE1JX1NDUkFNQkxFUl9DVFNf RU5BQkxFKTsKPiArCj4gKwlpZiAobW9kZS0+Y2xvY2sgPD0gMzQwMDAwKSB7Cj4gKwkJLyogRmV3 IHNpbmtzIHN1cHBvcnQgc2NyYW1ibGluZyBhdCByYXRlIDwgMzQwIE1IeiB0b28gKi8KPiArCQlp ZiAoc2NyYW1ibGluZy0+bG93X3JhdGVzKQo+ICsJCQloZG1pX2NvbmZpZyA9Cj4gKwkJCQlfaW50 ZWxfaGRtaV9zZXRfc291cmNlX3NjcmFtYmxpbmcoaGRtaV9jb25maWcpOwo+ICsJCXJldHVybiBo ZG1pX2NvbmZpZzsKPiArCX0KPiArCj4gKwkvKiBTY3JhbWJsaW5nIG9yIG5vdCwgaWYgY2xvY2sg PiAzNDAgTUh6LCBzZXQgaGlnaCBjaGFyIHJhdGUgKi8KPiArCWhkbWlfY29uZmlnIHw9IFRSQU5T X0RESV9ISUdIX1RNRFNfQ0hBUl9SQVRFOwo+ICsKPiArCWlmIChzY3JhbWJsaW5nLT5zdXBwb3J0 ZWQpCj4gKwkJaGRtaV9jb25maWcgPSBfaW50ZWxfaGRtaV9zZXRfc291cmNlX3NjcmFtYmxpbmco aGRtaV9jb25maWcpOwo+ICsKPiArCXJldHVybiBoZG1pX2NvbmZpZzsKPiArfQoKU2VlbXMgb3Zl cmx5IGNvbXBsaWNhdGVkIHRvIG1lLiBJdCBjb3VsZCBqdXN0IGJlIHNvbWV0aGluZyBzaW1wbGUg bGlrZToKCnZvaWQgaW50ZWxfZGRpX2VuYWJsZV90cmFuc2NvZGVyX2Z1bmMoc3RydWN0IGRybV9j cnRjICpjcnRjKQp7CgkuLi4KCWlmIChjb25maWctPmhkbWlfc2NyYW1ibGluZykKCQl0ZW1wIHw9 IFRSQU5TX0RESV9IRE1JX1NDUkFNQkxJTkc7CgkKCWlmIChjb25maWctPndoYXRldmVyKQoJCXRl bXAgfD0gVFJBTlNfRERJX0hJR0hfVE1EU19DSEFSX1JBVEU7CgkuLi4KfQoKPiArCj4gIHN0YXRp YyB1OCBpbnRlbF9oZG1pX2RkY19waW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ICAJCQkgICAgIGVudW0gcG9ydCBwb3J0KQo+ICB7Cj4gLS0gCj4gMS45LjEKCi0tIApWaWxs ZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=