From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [RFCv2 DP-typeC 5/6] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Mon, 26 Oct 2015 09:13:26 +0200 Message-ID: <1445843606.2806.12.camel@gmail.com> References: <1444824013-23147-1-git-send-email-durgadoss.r@intel.com> <1444824013-23147-6-git-send-email-durgadoss.r@intel.com> <1445441880.3989.22.camel@gmail.com> <4D68720C2E767A4AA6A8796D42C8EB590928CFA3@BGSMSX101.gar.corp.intel.com> <562D969F.7030702@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pa0-f48.google.com (mail-pa0-f48.google.com [209.85.220.48]) by gabe.freedesktop.org (Postfix) with ESMTPS id 97CAB6E742 for ; Mon, 26 Oct 2015 00:13:32 -0700 (PDT) Received: by pasz6 with SMTP id z6so179708672pas.2 for ; Mon, 26 Oct 2015 00:13:32 -0700 (PDT) In-Reply-To: <562D969F.7030702@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Thulasimani, Sivakumar" , "R, Durgadoss" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE1LTEwLTI2IGF0IDA4OjI3ICswNTMwLCBUaHVsYXNpbWFuaSwgU2l2YWt1bWFy IHdyb3RlOgo+IAo+IE9uIDEwLzIzLzIwMTUgNTozNyBQTSwgUiwgRHVyZ2Fkb3NzIHdyb3RlOgo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4gPiBGcm9tOiBBbmRlciBDb25zZWx2 YW4gRGUgT2xpdmVpcmEgW21haWx0bzpjb25zZWx2YW4yQGdtYWlsLmNvbV0KPiA+ID4gU2VudDog V2VkbmVzZGF5LCBPY3RvYmVyIDIxLCAyMDE1IDk6MDggUE0KPiA+ID4gVG86IFIsIER1cmdhZG9z czsgaW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4gPiBTdWJqZWN0OiBSZTogW0lu dGVsLWdmeF0gW1JGQ3YyIERQLXR5cGVDIDUvNl0gZHJtL2k5MTUvZHA6IEVuYWJsZSBVcGZyb250 Cj4gPiA+IGxpbmsgdHJhaW5pbmcgZm9yIHR5cGVDIERQCj4gPiA+IHN1cHBvcnQgb24gQlhUCj4g PiA+IAo+ID4gPiBPbiBXZWQsIDIwMTUtMTAtMTQgYXQgMTc6MzAgKzA1MzAsIER1cmdhZG9zcyBS IHdyb3RlOgo+ID4gPiA+IFRvIHN1cHBvcnQgVVNCIHR5cGUgQyBhbHRlcm5hdGUgRFAgbW9kZSwg dGhlIGRpc3BsYXkgZHJpdmVyIG5lZWRzIHRvCj4gPiA+ID4ga25vdyB0aGUgbnVtYmVyIG9mIGxh bmVzIHJlcXVpcmVkIGJ5IHRoZSBEUCBwYW5lbCBhcyB3ZWxsIGFzIG51bWJlcgo+ID4gPiA+IG9m IGxhbmVzIHRoYXQgY2FuIGJlIHN1cHBvcnRlZCBieSB0aGUgdHlwZS1DIGNhYmxlLiBTb21ldGlt ZXMsIHRoZQo+ID4gPiA+IHR5cGUtQyBjYWJsZSBtYXkgbGltaXQgdGhlIGJhbmR3aWR0aCBldmVu IGlmIFBhbmVsIGNhbiBzdXBwb3J0Cj4gPiA+ID4gbW9yZSBsYW5lcy4gVG8gYWRkcmVzcyB0aGVz ZSBzY2VuYXJpb3MsIHRoZSBkaXNwbGF5IGRyaXZlciB3aWxsCj4gPiA+ID4gc3RhcnQgbGluayB0 cmFpbmluZyB3aXRoIG1heCBsYW5lcywgYW5kIGlmIHRoYXQgZmFpbHMsIHRoZSBkcml2ZXIKPiA+ ID4gPiBmYWxscyBiYWNrIHRvIHgyIGxhbmVzOyBhbmQgcmVwZWF0cyB0aGlzIHByb2NlZHVyZSBm b3IgYWxsCj4gPiA+ID4gYmFuZHdpZHRoL2xhbmUgY29uZmlndXJhdGlvbnMuCj4gPiA+ID4gCj4g PiA+ID4gKiBTaW5jZSBsaW5rIHRyYWluaW5nIGlzIGRvbmUgYmVmb3JlIG1vZGVzZXQgb25seSB0 aGUgcG9ydAo+ID4gPiA+ICAgIChhbmQgbm90IHBpcGUvcGxhbmVzKSBhbmQgaXRzIGFzc29jaWF0 ZWQgUExMcyBhcmUgZW5hYmxlZC4KPiA+ID4gPiAqIE9uY2UgbGluayB0cmFpbmluZyBpcyBkb25l LCB0aGUgcG9ydCBhbmQgaXRzIFBMTHMgYXJlIGRpc2FibGVkOwo+ID4gPiA+ICAgIHNvIHRoYXQg dGhlIHN1YnNlcXVlbnQgbW9kZXNldCBpcyBub3QgYXdhcmUgb2YgdGhlc2UgY2hhbmdlcy4KPiA+ ID4gPiAqIE9uIERQIGhvdHBsdWc6IERpcmVjdGx5IHN0YXJ0IGxpbmsgdHJhaW5pbmcgb24gdGhl IGNydGMKPiA+ID4gPiAgICBhc3NvY2lhdGVkIHdpdGggdGhlIERQIGVuY29kZXIuCj4gPiA+ID4g KiBPbiBDb25uZWN0ZWQgYm9vdCBzY2VuYXJpb3M6IFdoZW4gYm9vdGVkIHdpdGggYW4gTEZQIGFu ZCBhIERQLAo+ID4gPiA+ICAgIHR5cGljYWxseSwgQklPUyBicmluZ3MgdXAgRFAuIEluIHRoZXNl IGNhc2VzLCB3ZSBkaXNhYmxlIHRoZQo+ID4gPiA+ICAgIGNydGMgZmlyc3QgYW5kIHRoZW4gc3Rh cnQgdXBmcm9udCBsaW5rIHRyYWluaW5nLiBUaGUgY3J0YyBpcwo+ID4gPiA+ICAgIHJlLWVuYWJs ZWQgYXMgcGFydCBvZiBhIHN1YnNlcXVlbnQgbW9kZXNldC4KPiA+ID4gPiAqIEZvciBCWFQsIGRk aS0+ZW5hYmxlL2Rpc2FibGUgZm9yIERQIG9ubHkgZW5hYmxlL2Rpc2FibGUKPiA+ID4gPiAgICBh dWRpbyBjb2RlYyBhbmQgaGVuY2UgYXJlIG5vdCBpbmNsdWRlZCBpbiB1cGZyb250IGxpbmsKPiA+ ID4gPiAgICB0cmFpbmluZyBzZXF1ZW5jZS4KPiA+ID4gPiAqIEFzIG9mIG5vdywgdGhpcyBpcyB0 ZXN0ZWQgb25seSBvbiBCWFQgQTEgcGxhdGZvcm0sIG9uCj4gPiA+ID4gICAga2VybmVsIDQuMi1y YzIuCj4gPiA+ID4gCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9z cy5yQGludGVsLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jIHwgMTUyCj4gPiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gPiA+ID4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8ICA0 MSArKysrKysrKysrLQo+ID4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2Lmgg fCAgIDIgKwo+ID4gPiA+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxOTQgaW5zZXJ0aW9ucygrKSwgMSBk ZWxldGlvbigtKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiA+ID4gPiBpbmRleCA4ZTRlYTM2Li5iM2E5YmZmIDEwMDY0NAo+ID4gPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gPiBAQCAtMzIwOSw2ICszMjA5LDE1OCBAQCBpbnRl bF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3RvcihzdHJ1Y3QKPiA+ID4gPiBpbnRlbF9kaWdpdGFsX3Bv cnQgKmludGVsX2RpZ19wb3J0KQo+ID4gPiA+ICAgCXJldHVybiBjb25uZWN0b3I7Cj4gPiA+ID4g ICB9Cj4gPiA+ID4gCj4gPiA+ID4gK2Jvb2wgaW50ZWxfZGRpX3VwZnJvbnRfbGlua190cmFpbihz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiA+ICsJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsIHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gPiA+ICsJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCk7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRl bF9kcAo+ID4gPiA+IC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ID4gPiA+ICsJc3RydWN0IGludGVs X2VuY29kZXIgKnRtcF9lbmNvZGVyLCAqZW5jb2RlciA9IGNvbm5lY3Rvcgo+ID4gPiA+IC0+ZW5j b2RlcjsKPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ID4gPiA+ICsJ c3RydWN0IGludGVsX2NydGMgKnRtcF9jcnRjOwo+ID4gPiA+ICsJc3RydWN0IGRybV9jcnRjICp0 bXBfZHJtX2NydGM7Cj4gPiA+ID4gKwl1aW50OF90IHRtcF9sYW5lX2NvdW50LCB0bXBfbGlua19i dzsKPiA+ID4gPiArCWJvb2wgcmV0LCBmb3VuZCwgdmFsaWRfY3J0YyA9IGZhbHNlOwo+ID4gPiA+ ICsKPiA+ID4gPiArCS8qIEZvciBub3csIHdlIGhhdmUgb25seSBTS0wgYW5kIEJYVCBzdXBwb3J0 aW5nIHR5cGUtQyAqLwo+ID4gPiA+ICsJaWYgKCFJU19CUk9YVE9OKGRldikgfHwgIUlTX1NLWUxB S0UoZGV2KSkKPiA+ID4gPiArCQlyZXR1cm4gdHJ1ZTsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAo IWNvbm5lY3RvciB8fCAhZW5jb2Rlcikgewo+ID4gPiA+ICsJCURSTV9ERUJVR19LTVMoImRwIGNv bm5lY3Rvci9lbmNvZGVyIGlzIE5VTExcbiIpOwo+ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBjcnRj LCBzdGFydCBsaW5rIHRyYWluaW5nIGRpcmVjdGx5ICovCj4gPiA+ID4gKwlpZiAoY3J0Yykgewo+ ID4gPiA+ICsJCXZhbGlkX2NydGMgPSB0cnVlOwo+ID4gPiA+ICsJCWdvdG8gc3RhcnRfbGlua190 cmFpbjsKPiA+ID4gPiArCX0KPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBGaW5kIGFuIHVudXNlZCBj cnRjIGFuZCB1c2UgaXQgZm9yIGxpbmsgdHJhaW5pbmcgKi8KPiA+ID4gPiArCWZvcl9lYWNoX2lu dGVsX2NydGMoZGV2LCBjcnRjKSB7Cj4gPiA+ID4gKwkJaWYgKGludGVsX2NydGNfYWN0aXZlKCZj cnRjLT5iYXNlKSkKPiA+ID4gPiArCQkJY29udGludWU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCS8q IE1ha2Ugc3VyZSB0aGUgbmV3IGNydGMgd2lsbCB3b3JrIHdpdGggdGhlIGVuY29kZXIgKi8KPiA+ ID4gPiArCQlpZiAoZHJtX2VuY29kZXJfY3J0Y19vaygmZW5jb2Rlci0+YmFzZSwgJmNydGMtPmJh c2UpKSB7Cj4gPiA+ID4gKwkJCWZvdW5kID0gdHJ1ZTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJCS8q IFNhdmUgdGhlIGV4aXN0aW5nIHZhbHVlcyAqLwo+ID4gPiA+ICsJCQl0bXBfZW5jb2RlciA9IGNv bm5lY3Rvci0+bmV3X2VuY29kZXI7Cj4gPiA+ID4gKwkJCXRtcF9jcnRjID0gZW5jb2Rlci0+bmV3 X2NydGM7Cj4gPiA+ID4gKwkJCXRtcF9kcm1fY3J0YyA9IGVuY29kZXItPmJhc2UuY3J0YzsKPiA+ ID4gSW4gd2hpY2ggY2FzZSBhcmUgdGhlc2UgZGlmZmVyZW50IHRoYW4gTlVMTD8gSSB0aG91Z2h0 IGF0IHRoaXMgcG9pbnQgdGhlcmUKPiA+ID4gaGFzbid0IGJlZW4gYSBtb2Rlc2V0IGluIHRoZSBo b3RwbHVnIGNhc2UgYW5kIHlvdSBkaXNhYmxlIHRoZSBjcnRjIG9uIHRoZQo+ID4gPiBjb25uZWN0 ZWQgb24gYm9vdCBjYXNlLiBUaGlzIHdpbGwgYWxzbyBuZWVkIHRvIGJlIHJlYmFzZWQgb24gYXRv bWljLgo+ID4gQXMgZmFyIGFzIEkgdGVzdGVkIHRoZXNlLCB0aGV5IGFyZSBOVUxMIGluIGJvdGgg SG90cGx1ZyBhbmQgY29ubmVjdGVkIGJvb3QKPiA+IENhc2VzLiBUaGVyZSB3YXMgb25lIGlzc3Vl IGR1cmluZyBzdXNwZW5kL3Jlc3VtZSB3aGVyZSBpdCB3YXMgbm90IE5VTEwuCj4gPiBCdXQgbGF0 ZXIgd2UgZmlndXJlZCBvdXQsIHdlIGFsd2F5cyBoYXZlIGEgdmFsaWQgY3J0YyBkdXJpbmcgcmVz dW1lIGFuZAo+ID4gaGVuY2UKPiA+IFNob3VsZCBub3QgdGFrZSB0aGlzIHBhdGguIFNvLCB5ZXMs IHdpdGggYWxsIG91ciB0ZXN0aW5nIHNvIGZhciwgTlVMTCB3b3Jrcwo+ID4gZmluZSBoZXJlLgo+ ID4gCj4gPiBBZ3JlZWQsIHRoaXMgbmVlZCB0byBiZSByZWJhc2VkIG9uIGF0b21pYy4gV2lsbCBk byB0aGlzIGluIG5leHQgdmVyc2lvbi4KPiA+IAo+ID4gPiA+ICsKPiA+ID4gPiArCQkJY29ubmVj dG9yLT5uZXdfZW5jb2RlciA9IGVuY29kZXI7Cj4gPiA+ID4gKwkJCWVuY29kZXItPm5ld19jcnRj ID0gY3J0YzsKPiA+ID4gPiArCQkJZW5jb2Rlci0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7Cj4g PiA+ID4gKwo+ID4gPiA+ICsJCQlicmVhazsKPiA+ID4gPiArCQl9Cj4gPiA+ID4gKwl9Cj4gPiA+ IEkgdGhpbmsgaXQgd291bGQgYmUgYSBnb29kIGlkZWEgdG8gc3BsaXQgdGhlIHNlYXJjaCBmb3Ig YW4gdW51c2VkIGNydGMgdG8KPiA+ID4gYQo+ID4gPiBzZXBhcmF0ZSBmdW5jdGlvbi4gQWxzbywg dGhlcmUncyBzaW1pbGFyIGNvZGUgaW4KPiA+ID4gaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUo KSwKPiA+ID4gaXQgd291bGQgYmUgbmljZSBpZiB0aGF0IGNvdWxkIHVzZSB0aGUgc2FtZSBmdW5j dGlvbi4KPiA+IFllcywgSSBhbHNvIGhhZCBhIHNpbWlsYXIgdGhvdWdodCwgYnV0IGRpZCBub3Qg Z2V0IHRvIF9sb2FkX2RldGVjdF9waXBlKCkKPiA+IEZ1bmN0aW9uLiBXaWxsIGxvb2sgYXQgaXQg YW5kIHRyeSB0byB1c2UgaXQuLgo+ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKCFmb3VuZCkg ewo+ID4gPiA+ICsJCURSTV9FUlJPUigiQ291bGQgbm90IGZpbmQgY3J0YyBmb3IgdXBmcm9udCBs aW5rCj4gPiA+ID4gdHJhaW5pbmdcbiIpOwo+ID4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4g PiArCX0KPiA+ID4gPiArCj4gPiA+ID4gK3N0YXJ0X2xpbmtfdHJhaW46Cj4gPiA+ID4gKwlEUk1f REVCVUdfS01TKCJ1cGZyb250IGxpbmsgdHJhaW4gb24gcGlwZTolY1xuIiwgcGlwZV9uYW1lKGNy dGMKPiA+ID4gPiAtPnBpcGUpKTsKPiA+ID4gPiArCWZvdW5kID0gZmFsc2U7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsJLyogU2F2ZSB0aGUgZXhpc3RpbmcgbGFuZV9jb3VudCBhbmQgbGlua19idyB2YWx1 ZXMgKi8KPiA+ID4gPiArCXRtcF9sYW5lX2NvdW50ID0gaW50ZWxfZHAtPmxhbmVfY291bnQ7Cj4g PiA+ID4gKwl0bXBfbGlua19idyA9IGludGVsX2RwLT5saW5rX2J3Owo+ID4gPiA+ICsKPiA+ID4g PiArCS8qIEluaXRpYWxpemUgd2l0aCBNYXggTGluayByYXRlICYgbGFuZSBjb3VudCBzdXBwb3J0 ZWQgYnkKPiA+ID4gPiBwYW5lbCAqLwo+ID4gPiA+ICsJaW50ZWxfZHAtPmxpbmtfYncgPSAgaW50 ZWxfZHAtPmRwY2RbRFBfTUFYX0xJTktfUkFURV07Cj4gPiA+ID4gKwlpbnRlbF9kcC0+bGFuZV9j b3VudCA9IGludGVsX2RwLT5kcGNkW0RQX01BWF9MQU5FX0NPVU5UXSAmCj4gPiA+ID4gKwkJCQkJ RFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKPiA+ID4gPiArCj4gPiA+ID4gKwkvKiBTZWxlY3RzIHRo ZSBzaGFyZWQgRFBMTCB0byB1c2UgZm9yIHRoaXMgcG9ydCAqLwo+ID4gPiA+ICsJaW50ZWxfZ2V0 X2RkaV9wbGwoZGV2X3ByaXYsIGRpZ19wb3J0LT5wb3J0LCBjcnRjLT5jb25maWcpOwo+ID4gPiA+ ICsJcGxsID0gaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChjcnRjKTsKPiA+ID4gPiArCWlmICgh cGxsKSB7Cj4gPiA+ID4gKwkJRFJNX0VSUk9SKCJDb3VsZCBub3QgZ2V0IHNoYXJlZCBEUExMXG4i KTsKPiA+ID4gPiArCQlnb3RvIGV4aXQ7Cj4gPiA+ID4gKwl9Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ ZG8gewo+ID4gPiA+ICsJCS8qIEZpbmQgcG9ydCBjbG9jayBmcm9tIGxpbmtfYncgKi8KPiA+ID4g PiArCQljcnRjLT5jb25maWctPnBvcnRfY2xvY2sgPQo+ID4gPiA+ICsJCQkJZHJtX2RwX2J3X2Nv ZGVfdG9fbGlua19yYXRlKGludGVsX2RwCj4gPiA+ID4gLT5saW5rX2J3KTsKPiA+ID4gPiArCj4g PiA+ID4gKwkJcmV0ID0gaW50ZWxfZGRpX3BsbF9zZWxlY3QoY3J0YywgY3J0Yy0+Y29uZmlnLCBl bmNvZGVyLAo+ID4gPiA+IGZhbHNlKTsKPiA+ID4gPiArCQlpZiAoIXJldCkgewo+ID4gPiA+ICsJ CQlEUk1fRVJST1IoIkNvdWxkIG5vdCBzZWxlY3QgUExMXG4iKTsKPiA+ID4gPiArCQkJZ290byBl eGl0Owo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCj4gPiA+ID4gKwkJcGxsLT5jb25maWcuY3J0Y19t YXNrID0gKDEgPDwgY3J0Yy0+cGlwZSk7Cj4gPiA+IElzIGl0IHBvc3NpYmxlIHRoYXQgdGhpcyBw bGwgaXMgYmVpbmcgdXNlZCBieSBhbm90aGVyIGFjdGl2ZSBjcnRjPyBJbiB0aGF0Cj4gPiA+IGNh c2UKPiA+ID4geW91IHN0ZWFsIHRoZSBwbGwgYW5kIGNoYW5nZSB0aGUgY29uZmlndXJhdGlvbiBi ZWhpbmQgaXRzIGJhY2suCj4gPiBJIGFtIG5vdCBzdXJlIGVpdGhlci4gV2hlbiB3ZSB0ZXN0ZWQg b24gQlhULCB0aGVzZSB3ZXJlIGFsd2F5cwo+ID4gdXNlZCBieSBvbmUgY3J0YyBvbmx5LiBTbywg aXMgdGhpcyBhIHZhbGlkIGNhc2UgaW4gQlhUIG9yIGluIHNvbWUgb3RoZXIgRERJCj4gPiBiYXNl ZCBwbGF0Zm9ybXMgPwo+IHllcywgd2Ugc2hvdWxkIGhhbmRsZSB0aGlzLiB0aGUgdHdvIHBsYXRm b3JtcyB0aGlzIGlzIHRlc3RlZCBpbiBkaWQgbm90IAo+IGhhdmUgUExMCj4gc2hhcmluZyBzbyBp dCB3YXMgbm90IGNvbnNpZGVyZWQuCj4gPiA+ID4gKwkJcGxsLT5jb25maWcuaHdfc3RhdGUgPSBj cnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGU7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCURSTV9ERUJV R19LTVMoIlVzaW5nIHNoYXJlZF9kcGxsOiVkXG4iLCBjcnRjLT5jb25maWcKPiA+ID4gPiAtPnNo YXJlZF9kcGxsKTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJLyogRW5hYmxlIFBMTCBmb2xsb3dlZCBi eSBwb3J0ICovCj4gPiA+ID4gKwkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGNydGMpOwo+ID4g PiA+ICsJCWVuY29kZXItPnByZV9lbmFibGUoZW5jb2Rlcik7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ CS8qIENoZWNrIGlmIGxpbmsgdHJhaW5pbmcgcGFzc2VkOyBpZiBzbyB1cGRhdGUgbGFuZQo+ID4g PiA+IGNvdW50ICovCj4gPiA+ID4gKwkJaWYgKGludGVsX2RwLT50cmFpbl9zZXRfdmFsaWQpIHsK PiA+ID4gPiArCQkJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdICY9Cj4gPiA+ID4g KwkJCQkJCX5EUF9NQVhfTEFORV9DT1VOVF9NQVNLCj4gPiA+ID4gOwo+ID4gPiA+ICsJCQlpbnRl bF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VOVF0gfD0KPiA+ID4gPiArCQkJCWludGVsX2RwLT5s YW5lX2NvdW50ICYKPiA+ID4gPiBEUF9NQVhfTEFORV9DT1VOVF9NQVNLOwo+ID4gPiA+ICsKPiA+ ID4gPiArCQkJZm91bmQgPSB0cnVlOwo+ID4gPiA+ICsJCX0KPiA+ID4gPiArCj4gPiA+ID4gKwkJ LyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBmb3IgbmV4dCByZXRyeS9jbGVhbiB1cAo+ ID4gPiA+ICovCj4gPiA+ID4gKwkJZW5jb2Rlci0+cG9zdF9kaXNhYmxlKGVuY29kZXIpOwo+ID4g PiA+ICsJCWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwoY3J0Yyk7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsJCWlmIChmb3VuZCkKPiA+ID4gPiArCQkJZ290byBleGl0Owo+ID4gPiA+ICsKPiA+ID4gPiAr CQlEUk1fREVCVUdfS01TKCJ1cGZyb250IGxpbmsgdHJhaW5pbmcgZmFpbGVkLiBsYW5lczolZAo+ ID4gPiA+IGJ3OiVkXG4iLAo+ID4gPiA+ICsJCQkJaW50ZWxfZHAtPmxhbmVfY291bnQsIGludGVs X2RwCj4gPiA+ID4gLT5saW5rX2J3KTsKPiA+ID4gPiArCj4gPiA+ID4gKwkJLyogR28gZG93biB0 byB0aGUgbmV4dCBsZXZlbCBhbmQgcmV0cnkgbGluayB0cmFpbmluZyAqLwo+ID4gPiA+ICsJCWlm IChpbnRlbF9kcC0+bGFuZV9jb3VudCA9PSA0KSB7Cj4gPiA+ID4gKwkJCWludGVsX2RwLT5sYW5l X2NvdW50ID0gMjsKPiA+ID4gPiArCQl9IGVsc2UgaWYgKGludGVsX2RwLT5sYW5lX2NvdW50ID09 IDIpIHsKPiA+ID4gPiArCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgPSAxOwo+ID4gPiA+ICsJCX0g ZWxzZSBpZiAoaW50ZWxfZHAtPmxpbmtfYncgPT0gRFBfTElOS19CV181XzQpIHsKPiA+ID4gPiAr CQkJaW50ZWxfZHAtPmxpbmtfYncgPSBEUF9MSU5LX0JXXzJfNzsKPiA+ID4gPiArCQkJaW50ZWxf ZHAtPmxhbmVfY291bnQgPSA0Owo+ID4gPiA+ICsJCX0gZWxzZSBpZiAoaW50ZWxfZHAtPmxpbmtf YncgPT0gRFBfTElOS19CV18yXzcpIHsKPiA+ID4gPiArCQkJaW50ZWxfZHAtPmxpbmtfYncgPSBE UF9MSU5LX0JXXzFfNjI7Cj4gPiA+ID4gKwkJCWludGVsX2RwLT5sYW5lX2NvdW50ID0gNDsKPiA+ ID4gPiArCQl9IGVsc2Ugewo+ID4gPiA+ICsJCQkvKiBUcmllZCBhbGwgY29tYmluYXRpb25zLCBz byBleGl0ICovCj4gPiA+ID4gKwkJCWJyZWFrOwo+ID4gPiA+ICsJCX0KPiA+ID4gSSB3b25kZXIg d2hhdCBoYXBwZW5zIHRvIHRoZSBsYW5lIHN0YXR1cyBkcGNkIHJlZ2lzdGVycyB3aGVuIHRoZSBj YWJsZQo+ID4gPiBvbmx5Cj4gPiA+IHN1cHBvcnRzIGEgcmVkdWNlZCBudW1iZXIgb2YgbGFuZXMu IFRoZSBEUCBzdGFuZGFyZCAoYXQgbGVhc3QgdGhlIDEuMwo+ID4gPiB2ZXJzaW9uKQo+ID4gPiBz YXlzIHRoYXQgaWYgY2xvY2sgcmVjb3ZlcnkgZmFpbHMgd2l0aCBSQlIsIHRoZSBzb3VyY2UgZGV2 aWNlIHNob3VsZCBjaGVjawo+ID4gPiBpZgo+ID4gPiB0aGUgbG93ZXIgbnVtYmVyIGxhbmVzIGhh dmUgdGhlIENSX0RPTkUgYml0IHNldCwgYW5kIGluIHRoYXQgY2FzZSByZWR1Y2UKPiA+ID4gdGhl Cj4gPiA+IG51bWJlciBvZiBsYW5lcywgZ28gYmFjayB0byB0aGUgaGlnaGVzdCByYXRlIGRlc2ly ZWQgYW5kIGNvbnRpbnVlIHRoZSBsaW5rCj4gPiA+IHRyYWluaW5nLgo+ID4gSSBiZWxpZXZlIHlv dSBhcmUgdGFsa2luZyBhYm91dCBEUENEIDIwMmggYW5kIDIwM2ggaS5lIHdoaWNoIG9uZSBvZiB0 aGVtIGlzCj4gPiBhY3R1YWxseSBiZWluZyB1c2VkL3JlcG9ydGVkIGNvcnJlY3RseS4gSSB3aWxs IGNoZWNrIG9uIHRoaXMgd2l0aCBmZXcKPiA+IGRpZmZlcmVudAo+ID4gY2FibGVzIGR1cmluZyBt eSBuZXh0IHJvdW5kIG9mIHRlc3RpbmcuCj4gY2FuIHlvdSBwbGVhc2Ugc2hhcmUgd2hlcmUgaXMg aXQgbWVudGlvbmVkIGluIHRoZSBzcGVjIHRoYXQgaWYgQ1IgZmFpbHMKPiB3ZSBzaG91bGQgcmV0 cnkgd2l0aCBoaWdoZXIgcmF0ZSBhbmQgbG93ZXIgbGFuZXMgID8gaSBhbSBub3QgYXdhcmUgb2Yg Cj4gc3VjaCBhIHJlcXVpcmVtZW50LgoKU2VjdGlvbiAzLjUuMS4yLjIuMSBvZiB0aGUgMS4zIHZl cnNpb24uCgoKQW5kZXIKCgo+IFRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGlmIGNhYmxlIHN1cHBv cnRzIGxlc3NlciBubyBvZiBsYW5lcyB0aGFuIHRoZSAKPiBudW1iZXIgc3VwcG9ydGVkIGJ5IHBh bmVsCj4gQ1Igc2hvdWxkIGZhaWwgZm9yIHRoZSBhZGRpdGlvbmFsIGxhbmVzLiByZXN1bHRpbmcg aW4gdGhlIG5leHQgbGluayAKPiB0cmFpbmluZyB3aXRoIGxvd2VyIGxhbmUgY291bnQKPiB0byBw YXNzLiB0aGF0IGlzIHRoZSBiYXNpYyBhc3N1bXB0aW9uIG9mIHRoaXMgcGF0Y2ggOikKCj4gcmVn YXJkcywKPiBTaXZha3VtYXIKPiA+ID4gPiArCj4gPiA+ID4gKwl9IHdoaWxlICgxKTsKPiA+ID4g TWF5YmUgbWFrZSB0aGlzIGludG8gYSBmb3IgKDs7KSBsb29wLiBUaGF0IHdheSBvbmUgY2FuIHNw b3QgdGhlIChsYWNrIG9mKQo+ID4gPiBlbmQKPiA+ID4gY29uZGl0aW9uIGVhcmxpZXIgd2hlbiBy ZWFkaW5nIHRvcCB0byBib3R0b20uCj4gPiBPaywgd2lsbCB0cnkgdGhpcyBpbXBsZW1lbnRhdGlv bi4uCj4gPiAKPiA+IFRoYW5rIHlvdSBmb3IgaGF2aW5nIGEgbG9vayBhdCB0aGlzIHBhdGNoIEFu ZGVyLi4KPiA+IAo+ID4gVGhhbmtzLAo+ID4gRHVyZ2EKPiA+IAo+ID4gPiAKPiA+ID4gQW5kZXIK PiA+ID4gCj4gPiA+ID4gKwo+ID4gPiA+ICtleGl0Ogo+ID4gPiA+ICsJLyogUmVzdG9yZSBsb2Nh bCBhc3NvY2lhdGlvbnMgbWFkZSAqLwo+ID4gPiA+ICsJaWYgKCF2YWxpZF9jcnRjKSB7Cj4gPiA+ ID4gKwkJY29ubmVjdG9yLT5uZXdfZW5jb2RlciA9IHRtcF9lbmNvZGVyOwo+ID4gPiA+ICsJCWVu Y29kZXItPm5ld19jcnRjID0gdG1wX2NydGM7Cj4gPiA+ID4gKwkJZW5jb2Rlci0+YmFzZS5jcnRj ID0gdG1wX2RybV9jcnRjOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWlmIChmb3Vu ZCkKPiA+ID4gPiArCQlEUk1fREVCVUdfS01TKCJ1cGZyb250IGxpbmsgdHJhaW5pbmcgcGFzc2Vk LiBsYW5lczolZAo+ID4gPiA+IGJ3OiVkXG4iLAo+ID4gPiA+ICsJCQkJaW50ZWxfZHAtPmxhbmVf Y291bnQsIGludGVsX2RwCj4gPiA+ID4gLT5saW5rX2J3KTsKPiA+ID4gPiArCS8qIFJlc3RvcmUg bGFuZV9jb3VudCBhbmQgbGlua19idyB2YWx1ZXMgKi8KPiA+ID4gPiArCWludGVsX2RwLT5sYW5l X2NvdW50ID0gdG1wX2xhbmVfY291bnQ7Cj4gPiA+ID4gKwlpbnRlbF9kcC0+bGlua19idyA9IHRt cF9saW5rX2J3Owo+ID4gPiA+ICsKPiA+ID4gPiArCXJldHVybiBmb3VuZDsKPiA+ID4gPiArfQo+ ID4gPiA+ICsKPiA+ID4gPiAgIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPiA+ID4gICB7Cj4gPiA+ID4gICAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiA+ID4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+IGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+IGluZGV4IDE4YmNmYmUuLjgzNzZiNDcgMTAw NjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gPiBAQCAtNDc4NSw2 ICs0Nzg1LDM1IEBAIGludGVsX2RwX3Bvd2VyX3B1dChzdHJ1Y3QgaW50ZWxfZHAgKmRwLAo+ID4g PiA+ICAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYp LAo+ID4gPiA+IHBvd2VyX2RvbWFpbik7Cj4gPiA+ID4gICB9Cj4gPiA+ID4gCj4gPiA+ID4gK3N0 YXRpYyBib29sIGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpp bnRlbF9kaWdfcG9ydCA9Cj4gPiA+ID4gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gPiA+ ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRj Owo+ID4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmaW50ZWxf ZGlnX3BvcnQtPmJhc2U7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxf ZW5jb2Rlci0+YmFzZS5kZXY7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0 YyA9IGNydGMgPyB0b19pbnRlbF9jcnRjKGNydGMpIDoKPiA+ID4gPiBOVUxMOwo+ID4gPiA+ICsK PiA+ID4gPiArCS8qCj4gPiA+ID4gKwkgKiBPbiBob3RwbHVnIGNhc2VzLCB3ZSBjYWxsIF91cGZy b250X2xpbmtfdHJhaW4gZGlyZWN0bHkuCj4gPiA+ID4gKwkgKiBJbiBjb25uZWN0ZWQgYm9vdCBz Y2VuYXJpb3MgKGJvb3Qgd2l0aCB7TUlQSS9lRFB9ICsgRFApLAo+ID4gPiA+ICsJICogQklPUyB0 eXBpY2FsbHkgYnJpbmdzIHVwIERQLiBIZW5jZSwgd2UgZGlzYWJsZSB0aGUgY3J0Ywo+ID4gPiA+ ICsJICogdG8gZG8gX3VwZnJvbnRfbGlua190cmFpbmluZy4gSXQgZ2V0cyByZS1lbmFibGVkIGFz IHBhcnQgb2YKPiA+ID4gPiArCSAqIHN1YnNlcXVlbnQgbW9kZXNldC4KPiA+ID4gPiArCSAqLwo+ ID4gPiA+ICsJaWYgKGludGVsX2VuY29kZXItPmNvbm5lY3RvcnNfYWN0aXZlICYmIGNydGMgJiYg Y3J0Yy0+ZW5hYmxlZCkKPiA+ID4gPiB7Cj4gPiA+ID4gKwkJRFJNX0RFQlVHX0tNUygiRGlzYWJs aW5nIGNydGMgJWMgZm9yIHVwZnJvbnQgbGluawo+ID4gPiA+IHRyYWluaW5nXG4iLAo+ID4gPiA+ ICsJCQkJcGlwZV9uYW1lKGludGVsX2NydGMtPnBpcGUpKTsKPiA+ID4gPiArCQlpbnRlbF9jcnRj X2NvbnRyb2woY3J0YywgZmFsc2UpOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCWlm IChIQVNfRERJKGRldikpCj4gPiA+ID4gKwkJcmV0dXJuIGludGVsX2RkaV91cGZyb250X2xpbmtf dHJhaW4oZGV2LCBpbnRlbF9kcCwKPiA+ID4gPiBpbnRlbF9jcnRjKTsKPiA+ID4gPiArCj4gPiA+ ID4gKwkvKiBOb3QgYSBzdXBwb3J0ZWQgcGxhdGZvcm0uIEFzc3VtZSB3ZSBkb24ndCBuZWVkIHVw ZnJvbnRfdHJhaW4KPiA+ID4gPiAqLwo+ID4gPiA+ICsJcmV0dXJuIHRydWU7Cj4gPiA+ID4gK30K PiA+ID4gPiArCj4gPiA+ID4gKwo+ID4gPiA+ICAgc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9z dGF0dXMKPiA+ID4gPiAgIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yLCBib29sIGZvcmNlKQo+ID4gPiA+ICAgewo+ID4gPiA+IEBAIC00Nzk0LDcgKzQ4MjMs NyBAQCBpbnRlbF9kcF9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+ ID4gPiBib29sCj4gPiA+ID4gZm9yY2UpCj4gPiA+ID4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNvbm5lY3Rvci0+ZGV2Owo+ID4gPiA+ICAgCWVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMg c3RhdHVzOwo+ID4gPiA+ICAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJf ZG9tYWluOwo+ID4gPiA+IC0JYm9vbCByZXQ7Cj4gPiA+ID4gKwlib29sIHJldCwgZG9fdXBmcm9u dF9saW5rX3RyYWluOwo+ID4gPiA+ICAgCXU4IHNpbmtfaXJxX3ZlY3RvcjsKPiA+ID4gPiAKPiA+ ID4gPiAgIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxuIiwKPiA+ID4gPiBAQCAt NDg1Miw2ICs0ODgxLDE2IEBAIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAo+ID4gPiA+IGJvb2wKPiA+ID4gPiBmb3JjZSkKPiA+ID4gPiAgIAkJCURSTV9E RUJVR19EUklWRVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxCj4gPiA+ID4gdW5oYW5kbGVkXG4i KTsKPiA+ID4gPiAgIAl9Cj4gPiA+ID4gCj4gPiA+ID4gKwkvKiBEbyBub3QgZG8gdXBmcm9udCBs aW5rIHRyYWluLCBpZiBpdCBpcyBhIGNvbXBsaWFuY2UgcmVxdWVzdAo+ID4gPiA+ICovCj4gPiA+ ID4gKwlkb191cGZyb250X2xpbmtfdHJhaW4gPQo+ID4gPiA+ICsJCWludGVsX2VuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQT1JUICYmCj4gPiA+ID4gKwkJaW50ZWxfZHAtPmNv bXBsaWFuY2VfdGVzdF90eXBlICE9Cj4gPiA+ID4gRFBfVEVTVF9MSU5LX1RSQUlOSU5HOwo+ID4g PiA+ICsKPiA+ID4gPiArCWlmIChkb191cGZyb250X2xpbmtfdHJhaW4pIHsKPiA+ID4gPiArCQly ZXQgPSBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4gPiA+ICsJCWlm ICghcmV0KQo+ID4gPiA+ICsJCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3Rl ZDsKPiA+ID4gPiArCX0KPiA+ID4gPiAgIG91dDoKPiA+ID4gPiAgIAlpbnRlbF9kcF9wb3dlcl9w dXQoaW50ZWxfZHAsIHBvd2VyX2RvbWFpbik7Cj4gPiA+ID4gICAJcmV0dXJuIHN0YXR1czsKPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4g PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ID4gaW5kZXggNWJjZGQz Ny4uODJhZjRlNiAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g PiA+ID4gQEAgLTEwMDcsNiArMTAwNyw4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1 Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gPiA+ICplbmNvZGVyLAo+ID4gPiA+ICAgCQkJIHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gPiA+ID4gICB2b2lkIGludGVsX2RkaV9z ZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wKPiA+ID4gPiBz dGF0ZSk7Cj4gPiA+ID4gICB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKTsKPiA+ID4gPiArYm9vbCBpbnRlbF9kZGlfdXBmcm9udF9saW5rX3RyYWlu KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiA+ID4gKwkJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgc3RydWN0IGludGVsX2NydGMgKmNydGMpOwo+ID4gPiA+IAo+ID4gPiA+ICAgLyogaW50 ZWxfZnJvbnRidWZmZXIuYyAqLwo+ID4gPiA+ICAgdm9pZCBpbnRlbF9mYl9vYmpfaW52YWxpZGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ID4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QK PiA+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5mcmVl ZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK