From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thulasimani, Sivakumar" 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 08:27:35 +0530 Message-ID: <562D969F.7030702@intel.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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id A85106E779 for ; Sun, 25 Oct 2015 19:57:39 -0700 (PDT) In-Reply-To: <4D68720C2E767A4AA6A8796D42C8EB590928CFA3@BGSMSX101.gar.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "R, Durgadoss" , Ander Conselvan De Oliveira , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org CgpPbiAxMC8yMy8yMDE1IDU6MzcgUE0sIFIsIER1cmdhZG9zcyB3cm90ZToKPj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0KPj4gRnJvbTogQW5kZXIgQ29uc2VsdmFuIERlIE9saXZlaXJhIFtt YWlsdG86Y29uc2VsdmFuMkBnbWFpbC5jb21dCj4+IFNlbnQ6IFdlZG5lc2RheSwgT2N0b2JlciAy MSwgMjAxNSA5OjA4IFBNCj4+IFRvOiBSLCBEdXJnYWRvc3M7IGludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPj4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtSRkN2MiBEUC10eXBlQyA1 LzZdIGRybS9pOTE1L2RwOiBFbmFibGUgVXBmcm9udCBsaW5rIHRyYWluaW5nIGZvciB0eXBlQyBE UAo+PiBzdXBwb3J0IG9uIEJYVAo+Pgo+PiBPbiBXZWQsIDIwMTUtMTAtMTQgYXQgMTc6MzAgKzA1 MzAsIER1cmdhZG9zcyBSIHdyb3RlOgo+Pj4gVG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0 ZSBEUCBtb2RlLCB0aGUgZGlzcGxheSBkcml2ZXIgbmVlZHMgdG8KPj4+IGtub3cgdGhlIG51bWJl ciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAgcGFuZWwgYXMgd2VsbCBhcyBudW1iZXIKPj4+ IG9mIGxhbmVzIHRoYXQgY2FuIGJlIHN1cHBvcnRlZCBieSB0aGUgdHlwZS1DIGNhYmxlLiBTb21l dGltZXMsIHRoZQo+Pj4gdHlwZS1DIGNhYmxlIG1heSBsaW1pdCB0aGUgYmFuZHdpZHRoIGV2ZW4g aWYgUGFuZWwgY2FuIHN1cHBvcnQKPj4+IG1vcmUgbGFuZXMuIFRvIGFkZHJlc3MgdGhlc2Ugc2Nl bmFyaW9zLCB0aGUgZGlzcGxheSBkcml2ZXIgd2lsbAo+Pj4gc3RhcnQgbGluayB0cmFpbmluZyB3 aXRoIG1heCBsYW5lcywgYW5kIGlmIHRoYXQgZmFpbHMsIHRoZSBkcml2ZXIKPj4+IGZhbGxzIGJh Y2sgdG8geDIgbGFuZXM7IGFuZCByZXBlYXRzIHRoaXMgcHJvY2VkdXJlIGZvciBhbGwKPj4+IGJh bmR3aWR0aC9sYW5lIGNvbmZpZ3VyYXRpb25zLgo+Pj4KPj4+ICogU2luY2UgbGluayB0cmFpbmlu ZyBpcyBkb25lIGJlZm9yZSBtb2Rlc2V0IG9ubHkgdGhlIHBvcnQKPj4+ICAgIChhbmQgbm90IHBp cGUvcGxhbmVzKSBhbmQgaXRzIGFzc29jaWF0ZWQgUExMcyBhcmUgZW5hYmxlZC4KPj4+ICogT25j ZSBsaW5rIHRyYWluaW5nIGlzIGRvbmUsIHRoZSBwb3J0IGFuZCBpdHMgUExMcyBhcmUgZGlzYWJs ZWQ7Cj4+PiAgICBzbyB0aGF0IHRoZSBzdWJzZXF1ZW50IG1vZGVzZXQgaXMgbm90IGF3YXJlIG9m IHRoZXNlIGNoYW5nZXMuCj4+PiAqIE9uIERQIGhvdHBsdWc6IERpcmVjdGx5IHN0YXJ0IGxpbmsg dHJhaW5pbmcgb24gdGhlIGNydGMKPj4+ICAgIGFzc29jaWF0ZWQgd2l0aCB0aGUgRFAgZW5jb2Rl ci4KPj4+ICogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3aXRoIGFu IExGUCBhbmQgYSBEUCwKPj4+ICAgIHR5cGljYWxseSwgQklPUyBicmluZ3MgdXAgRFAuIEluIHRo ZXNlIGNhc2VzLCB3ZSBkaXNhYmxlIHRoZQo+Pj4gICAgY3J0YyBmaXJzdCBhbmQgdGhlbiBzdGFy dCB1cGZyb250IGxpbmsgdHJhaW5pbmcuIFRoZSBjcnRjIGlzCj4+PiAgICByZS1lbmFibGVkIGFz IHBhcnQgb2YgYSBzdWJzZXF1ZW50IG1vZGVzZXQuCj4+PiAqIEZvciBCWFQsIGRkaS0+ZW5hYmxl L2Rpc2FibGUgZm9yIERQIG9ubHkgZW5hYmxlL2Rpc2FibGUKPj4+ICAgIGF1ZGlvIGNvZGVjIGFu ZCBoZW5jZSBhcmUgbm90IGluY2x1ZGVkIGluIHVwZnJvbnQgbGluawo+Pj4gICAgdHJhaW5pbmcg c2VxdWVuY2UuCj4+PiAqIEFzIG9mIG5vdywgdGhpcyBpcyB0ZXN0ZWQgb25seSBvbiBCWFQgQTEg cGxhdGZvcm0sIG9uCj4+PiAgICBrZXJuZWwgNC4yLXJjMi4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5 OiBEdXJnYWRvc3MgUiA8ZHVyZ2Fkb3NzLnJAaW50ZWwuY29tPgo+Pj4gLS0tCj4+PiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIHwgMTUyCj4+PiArKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu YyAgfCAgNDEgKysrKysrKysrKy0KPj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmggfCAgIDIgKwo+Pj4gICAzIGZpbGVzIGNoYW5nZWQsIDE5NCBpbnNlcnRpb25zKCspLCAxIGRl bGV0aW9uKC0pCj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+PiBpbmRleCA4 ZTRlYTM2Li5iM2E5YmZmIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4+PiBA QCAtMzIwOSw2ICszMjA5LDE1OCBAQCBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3RvcihzdHJ1 Y3QKPj4+IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQpCj4+PiAgIAlyZXR1cm4g Y29ubmVjdG9yOwo+Pj4gICB9Cj4+Pgo+Pj4gK2Jvb2wgaW50ZWxfZGRpX3VwZnJvbnRfbGlua190 cmFpbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+Pj4gKwkJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+PiArewo+Pj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+Pj4gKwlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPj4+ ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVk X2Nvbm5lY3RvcjsKPj4+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKnRtcF9lbmNvZGVyLCAqZW5j b2RlciA9IGNvbm5lY3Rvci0+ZW5jb2RlcjsKPj4+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGw7Cj4+PiArCXN0cnVjdCBpbnRlbF9jcnRjICp0bXBfY3J0YzsKPj4+ICsJc3RydWN0IGRy bV9jcnRjICp0bXBfZHJtX2NydGM7Cj4+PiArCXVpbnQ4X3QgdG1wX2xhbmVfY291bnQsIHRtcF9s aW5rX2J3Owo+Pj4gKwlib29sIHJldCwgZm91bmQsIHZhbGlkX2NydGMgPSBmYWxzZTsKPj4+ICsK Pj4+ICsJLyogRm9yIG5vdywgd2UgaGF2ZSBvbmx5IFNLTCBhbmQgQlhUIHN1cHBvcnRpbmcgdHlw ZS1DICovCj4+PiArCWlmICghSVNfQlJPWFRPTihkZXYpIHx8ICFJU19TS1lMQUtFKGRldikpCj4+ PiArCQlyZXR1cm4gdHJ1ZTsKPj4+ICsKPj4+ICsJaWYgKCFjb25uZWN0b3IgfHwgIWVuY29kZXIp IHsKPj4+ICsJCURSTV9ERUJVR19LTVMoImRwIGNvbm5lY3Rvci9lbmNvZGVyIGlzIE5VTExcbiIp Owo+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIElmIHdlIGFscmVh ZHkgaGF2ZSBhIGNydGMsIHN0YXJ0IGxpbmsgdHJhaW5pbmcgZGlyZWN0bHkgKi8KPj4+ICsJaWYg KGNydGMpIHsKPj4+ICsJCXZhbGlkX2NydGMgPSB0cnVlOwo+Pj4gKwkJZ290byBzdGFydF9saW5r X3RyYWluOwo+Pj4gKwl9Cj4+PiArCj4+PiArCS8qIEZpbmQgYW4gdW51c2VkIGNydGMgYW5kIHVz ZSBpdCBmb3IgbGluayB0cmFpbmluZyAqLwo+Pj4gKwlmb3JfZWFjaF9pbnRlbF9jcnRjKGRldiwg Y3J0Yykgewo+Pj4gKwkJaWYgKGludGVsX2NydGNfYWN0aXZlKCZjcnRjLT5iYXNlKSkKPj4+ICsJ CQljb250aW51ZTsKPj4+ICsKPj4+ICsJCS8qIE1ha2Ugc3VyZSB0aGUgbmV3IGNydGMgd2lsbCB3 b3JrIHdpdGggdGhlIGVuY29kZXIgKi8KPj4+ICsJCWlmIChkcm1fZW5jb2Rlcl9jcnRjX29rKCZl bmNvZGVyLT5iYXNlLCAmY3J0Yy0+YmFzZSkpIHsKPj4+ICsJCQlmb3VuZCA9IHRydWU7Cj4+PiAr Cj4+PiArCQkJLyogU2F2ZSB0aGUgZXhpc3RpbmcgdmFsdWVzICovCj4+PiArCQkJdG1wX2VuY29k ZXIgPSBjb25uZWN0b3ItPm5ld19lbmNvZGVyOwo+Pj4gKwkJCXRtcF9jcnRjID0gZW5jb2Rlci0+ bmV3X2NydGM7Cj4+PiArCQkJdG1wX2RybV9jcnRjID0gZW5jb2Rlci0+YmFzZS5jcnRjOwo+PiBJ biB3aGljaCBjYXNlIGFyZSB0aGVzZSBkaWZmZXJlbnQgdGhhbiBOVUxMPyBJIHRob3VnaHQgYXQg dGhpcyBwb2ludCB0aGVyZQo+PiBoYXNuJ3QgYmVlbiBhIG1vZGVzZXQgaW4gdGhlIGhvdHBsdWcg Y2FzZSBhbmQgeW91IGRpc2FibGUgdGhlIGNydGMgb24gdGhlCj4+IGNvbm5lY3RlZCBvbiBib290 IGNhc2UuIFRoaXMgd2lsbCBhbHNvIG5lZWQgdG8gYmUgcmViYXNlZCBvbiBhdG9taWMuCj4gQXMg ZmFyIGFzIEkgdGVzdGVkIHRoZXNlLCB0aGV5IGFyZSBOVUxMIGluIGJvdGggSG90cGx1ZyBhbmQg Y29ubmVjdGVkIGJvb3QKPiBDYXNlcy4gVGhlcmUgd2FzIG9uZSBpc3N1ZSBkdXJpbmcgc3VzcGVu ZC9yZXN1bWUgd2hlcmUgaXQgd2FzIG5vdCBOVUxMLgo+IEJ1dCBsYXRlciB3ZSBmaWd1cmVkIG91 dCwgd2UgYWx3YXlzIGhhdmUgYSB2YWxpZCBjcnRjIGR1cmluZyByZXN1bWUgYW5kIGhlbmNlCj4g U2hvdWxkIG5vdCB0YWtlIHRoaXMgcGF0aC4gU28sIHllcywgd2l0aCBhbGwgb3VyIHRlc3Rpbmcg c28gZmFyLCBOVUxMIHdvcmtzIGZpbmUgaGVyZS4KPgo+IEFncmVlZCwgdGhpcyBuZWVkIHRvIGJl IHJlYmFzZWQgb24gYXRvbWljLiBXaWxsIGRvIHRoaXMgaW4gbmV4dCB2ZXJzaW9uLgo+Cj4+PiAr Cj4+PiArCQkJY29ubmVjdG9yLT5uZXdfZW5jb2RlciA9IGVuY29kZXI7Cj4+PiArCQkJZW5jb2Rl ci0+bmV3X2NydGMgPSBjcnRjOwo+Pj4gKwkJCWVuY29kZXItPmJhc2UuY3J0YyA9ICZjcnRjLT5i YXNlOwo+Pj4gKwo+Pj4gKwkJCWJyZWFrOwo+Pj4gKwkJfQo+Pj4gKwl9Cj4+IEkgdGhpbmsgaXQg d291bGQgYmUgYSBnb29kIGlkZWEgdG8gc3BsaXQgdGhlIHNlYXJjaCBmb3IgYW4gdW51c2VkIGNy dGMgdG8gYQo+PiBzZXBhcmF0ZSBmdW5jdGlvbi4gQWxzbywgdGhlcmUncyBzaW1pbGFyIGNvZGUg aW4gaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoKSwKPj4gaXQgd291bGQgYmUgbmljZSBpZiB0 aGF0IGNvdWxkIHVzZSB0aGUgc2FtZSBmdW5jdGlvbi4KPiBZZXMsIEkgYWxzbyBoYWQgYSBzaW1p bGFyIHRob3VnaHQsIGJ1dCBkaWQgbm90IGdldCB0byBfbG9hZF9kZXRlY3RfcGlwZSgpCj4gRnVu Y3Rpb24uIFdpbGwgbG9vayBhdCBpdCBhbmQgdHJ5IHRvIHVzZSBpdC4uCj4KPj4+ICsKPj4+ICsJ aWYgKCFmb3VuZCkgewo+Pj4gKwkJRFJNX0VSUk9SKCJDb3VsZCBub3QgZmluZCBjcnRjIGZvciB1 cGZyb250IGxpbmsgdHJhaW5pbmdcbiIpOwo+Pj4gKwkJcmV0dXJuIGZhbHNlOwo+Pj4gKwl9Cj4+ PiArCj4+PiArc3RhcnRfbGlua190cmFpbjoKPj4+ICsJRFJNX0RFQlVHX0tNUygidXBmcm9udCBs aW5rIHRyYWluIG9uIHBpcGU6JWNcbiIsIHBpcGVfbmFtZShjcnRjCj4+PiAtPnBpcGUpKTsKPj4+ ICsJZm91bmQgPSBmYWxzZTsKPj4+ICsKPj4+ICsJLyogU2F2ZSB0aGUgZXhpc3RpbmcgbGFuZV9j b3VudCBhbmQgbGlua19idyB2YWx1ZXMgKi8KPj4+ICsJdG1wX2xhbmVfY291bnQgPSBpbnRlbF9k cC0+bGFuZV9jb3VudDsKPj4+ICsJdG1wX2xpbmtfYncgPSBpbnRlbF9kcC0+bGlua19idzsKPj4+ ICsKPj4+ICsJLyogSW5pdGlhbGl6ZSB3aXRoIE1heCBMaW5rIHJhdGUgJiBsYW5lIGNvdW50IHN1 cHBvcnRlZCBieSBwYW5lbCAqLwo+Pj4gKwlpbnRlbF9kcC0+bGlua19idyA9ICBpbnRlbF9kcC0+ ZHBjZFtEUF9NQVhfTElOS19SQVRFXTsKPj4+ICsJaW50ZWxfZHAtPmxhbmVfY291bnQgPSBpbnRl bF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VOVF0gJgo+Pj4gKwkJCQkJRFBfTUFYX0xBTkVfQ09V TlRfTUFTSzsKPj4+ICsKPj4+ICsJLyogU2VsZWN0cyB0aGUgc2hhcmVkIERQTEwgdG8gdXNlIGZv ciB0aGlzIHBvcnQgKi8KPj4+ICsJaW50ZWxfZ2V0X2RkaV9wbGwoZGV2X3ByaXYsIGRpZ19wb3J0 LT5wb3J0LCBjcnRjLT5jb25maWcpOwo+Pj4gKwlwbGwgPSBpbnRlbF9jcnRjX3RvX3NoYXJlZF9k cGxsKGNydGMpOwo+Pj4gKwlpZiAoIXBsbCkgewo+Pj4gKwkJRFJNX0VSUk9SKCJDb3VsZCBub3Qg Z2V0IHNoYXJlZCBEUExMXG4iKTsKPj4+ICsJCWdvdG8gZXhpdDsKPj4+ICsJfQo+Pj4gKwo+Pj4g KwlkbyB7Cj4+PiArCQkvKiBGaW5kIHBvcnQgY2xvY2sgZnJvbSBsaW5rX2J3ICovCj4+PiArCQlj cnRjLT5jb25maWctPnBvcnRfY2xvY2sgPQo+Pj4gKwkJCQlkcm1fZHBfYndfY29kZV90b19saW5r X3JhdGUoaW50ZWxfZHAKPj4+IC0+bGlua19idyk7Cj4+PiArCj4+PiArCQlyZXQgPSBpbnRlbF9k ZGlfcGxsX3NlbGVjdChjcnRjLCBjcnRjLT5jb25maWcsIGVuY29kZXIsCj4+PiBmYWxzZSk7Cj4+ PiArCQlpZiAoIXJldCkgewo+Pj4gKwkJCURSTV9FUlJPUigiQ291bGQgbm90IHNlbGVjdCBQTExc biIpOwo+Pj4gKwkJCWdvdG8gZXhpdDsKPj4+ICsJCX0KPj4+ICsKPj4+ICsJCXBsbC0+Y29uZmln LmNydGNfbWFzayA9ICgxIDw8IGNydGMtPnBpcGUpOwo+PiBJcyBpdCBwb3NzaWJsZSB0aGF0IHRo aXMgcGxsIGlzIGJlaW5nIHVzZWQgYnkgYW5vdGhlciBhY3RpdmUgY3J0Yz8gSW4gdGhhdCBjYXNl Cj4+IHlvdSBzdGVhbCB0aGUgcGxsIGFuZCBjaGFuZ2UgdGhlIGNvbmZpZ3VyYXRpb24gYmVoaW5k IGl0cyBiYWNrLgo+IEkgYW0gbm90IHN1cmUgZWl0aGVyLiBXaGVuIHdlIHRlc3RlZCBvbiBCWFQs IHRoZXNlIHdlcmUgYWx3YXlzCj4gdXNlZCBieSBvbmUgY3J0YyBvbmx5LiBTbywgaXMgdGhpcyBh IHZhbGlkIGNhc2UgaW4gQlhUIG9yIGluIHNvbWUgb3RoZXIgRERJCj4gYmFzZWQgcGxhdGZvcm1z ID8KeWVzLCB3ZSBzaG91bGQgaGFuZGxlIHRoaXMuIHRoZSB0d28gcGxhdGZvcm1zIHRoaXMgaXMg dGVzdGVkIGluIGRpZCBub3QgCmhhdmUgUExMCnNoYXJpbmcgc28gaXQgd2FzIG5vdCBjb25zaWRl cmVkLgo+Pj4gKwkJcGxsLT5jb25maWcuaHdfc3RhdGUgPSBjcnRjLT5jb25maWctPmRwbGxfaHdf c3RhdGU7Cj4+PiArCj4+PiArCQlEUk1fREVCVUdfS01TKCJVc2luZyBzaGFyZWRfZHBsbDolZFxu IiwgY3J0Yy0+Y29uZmlnCj4+PiAtPnNoYXJlZF9kcGxsKTsKPj4+ICsKPj4+ICsJCS8qIEVuYWJs ZSBQTEwgZm9sbG93ZWQgYnkgcG9ydCAqLwo+Pj4gKwkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxs KGNydGMpOwo+Pj4gKwkJZW5jb2Rlci0+cHJlX2VuYWJsZShlbmNvZGVyKTsKPj4+ICsKPj4+ICsJ CS8qIENoZWNrIGlmIGxpbmsgdHJhaW5pbmcgcGFzc2VkOyBpZiBzbyB1cGRhdGUgbGFuZSBjb3Vu dCAqLwo+Pj4gKwkJaWYgKGludGVsX2RwLT50cmFpbl9zZXRfdmFsaWQpIHsKPj4+ICsJCQlpbnRl bF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VOVF0gJj0KPj4+ICsJCQkJCQl+RFBfTUFYX0xBTkVf Q09VTlRfTUFTSzsKPj4+ICsJCQlpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTEFORV9DT1VOVF0gfD0K Pj4+ICsJCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgJgo+Pj4gRFBfTUFYX0xBTkVfQ09VTlRfTUFT SzsKPj4+ICsKPj4+ICsJCQlmb3VuZCA9IHRydWU7Cj4+PiArCQl9Cj4+PiArCj4+PiArCQkvKiBE aXNhYmxlIHBvcnQgZm9sbG93ZWQgYnkgUExMIGZvciBuZXh0IHJldHJ5L2NsZWFuIHVwICovCj4+ PiArCQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4+PiArCQlpbnRlbF9kaXNhYmxl X3NoYXJlZF9kcGxsKGNydGMpOwo+Pj4gKwo+Pj4gKwkJaWYgKGZvdW5kKQo+Pj4gKwkJCWdvdG8g ZXhpdDsKPj4+ICsKPj4+ICsJCURSTV9ERUJVR19LTVMoInVwZnJvbnQgbGluayB0cmFpbmluZyBm YWlsZWQuIGxhbmVzOiVkCj4+PiBidzolZFxuIiwKPj4+ICsJCQkJaW50ZWxfZHAtPmxhbmVfY291 bnQsIGludGVsX2RwLT5saW5rX2J3KTsKPj4+ICsKPj4+ICsJCS8qIEdvIGRvd24gdG8gdGhlIG5l eHQgbGV2ZWwgYW5kIHJldHJ5IGxpbmsgdHJhaW5pbmcgKi8KPj4+ICsJCWlmIChpbnRlbF9kcC0+ bGFuZV9jb3VudCA9PSA0KSB7Cj4+PiArCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgPSAyOwo+Pj4g KwkJfSBlbHNlIGlmIChpbnRlbF9kcC0+bGFuZV9jb3VudCA9PSAyKSB7Cj4+PiArCQkJaW50ZWxf ZHAtPmxhbmVfY291bnQgPSAxOwo+Pj4gKwkJfSBlbHNlIGlmIChpbnRlbF9kcC0+bGlua19idyA9 PSBEUF9MSU5LX0JXXzVfNCkgewo+Pj4gKwkJCWludGVsX2RwLT5saW5rX2J3ID0gRFBfTElOS19C V18yXzc7Cj4+PiArCQkJaW50ZWxfZHAtPmxhbmVfY291bnQgPSA0Owo+Pj4gKwkJfSBlbHNlIGlm IChpbnRlbF9kcC0+bGlua19idyA9PSBEUF9MSU5LX0JXXzJfNykgewo+Pj4gKwkJCWludGVsX2Rw LT5saW5rX2J3ID0gRFBfTElOS19CV18xXzYyOwo+Pj4gKwkJCWludGVsX2RwLT5sYW5lX2NvdW50 ID0gNDsKPj4+ICsJCX0gZWxzZSB7Cj4+PiArCQkJLyogVHJpZWQgYWxsIGNvbWJpbmF0aW9ucywg c28gZXhpdCAqLwo+Pj4gKwkJCWJyZWFrOwo+Pj4gKwkJfQo+PiBJIHdvbmRlciB3aGF0IGhhcHBl bnMgdG8gdGhlIGxhbmUgc3RhdHVzIGRwY2QgcmVnaXN0ZXJzIHdoZW4gdGhlIGNhYmxlIG9ubHkK Pj4gc3VwcG9ydHMgYSByZWR1Y2VkIG51bWJlciBvZiBsYW5lcy4gVGhlIERQIHN0YW5kYXJkIChh dCBsZWFzdCB0aGUgMS4zIHZlcnNpb24pCj4+IHNheXMgdGhhdCBpZiBjbG9jayByZWNvdmVyeSBm YWlscyB3aXRoIFJCUiwgdGhlIHNvdXJjZSBkZXZpY2Ugc2hvdWxkIGNoZWNrIGlmCj4+IHRoZSBs b3dlciBudW1iZXIgbGFuZXMgaGF2ZSB0aGUgQ1JfRE9ORSBiaXQgc2V0LCBhbmQgaW4gdGhhdCBj YXNlIHJlZHVjZSB0aGUKPj4gbnVtYmVyIG9mIGxhbmVzLCBnbyBiYWNrIHRvIHRoZSBoaWdoZXN0 IHJhdGUgZGVzaXJlZCBhbmQgY29udGludWUgdGhlIGxpbmsKPj4gdHJhaW5pbmcuCj4gSSBiZWxp ZXZlIHlvdSBhcmUgdGFsa2luZyBhYm91dCBEUENEIDIwMmggYW5kIDIwM2ggaS5lIHdoaWNoIG9u ZSBvZiB0aGVtIGlzCj4gYWN0dWFsbHkgYmVpbmcgdXNlZC9yZXBvcnRlZCBjb3JyZWN0bHkuIEkg d2lsbCBjaGVjayBvbiB0aGlzIHdpdGggZmV3IGRpZmZlcmVudAo+IGNhYmxlcyBkdXJpbmcgbXkg bmV4dCByb3VuZCBvZiB0ZXN0aW5nLgpjYW4geW91IHBsZWFzZSBzaGFyZSB3aGVyZSBpcyBpdCBt ZW50aW9uZWQgaW4gdGhlIHNwZWMgdGhhdCBpZiBDUiBmYWlscwp3ZSBzaG91bGQgcmV0cnkgd2l0 aCBoaWdoZXIgcmF0ZSBhbmQgbG93ZXIgbGFuZXMgID8gaSBhbSBub3QgYXdhcmUgb2YgCnN1Y2gg YSByZXF1aXJlbWVudC4KClRoZSBleHBlY3RhdGlvbiBpcyB0aGF0IGlmIGNhYmxlIHN1cHBvcnRz IGxlc3NlciBubyBvZiBsYW5lcyB0aGFuIHRoZSAKbnVtYmVyIHN1cHBvcnRlZCBieSBwYW5lbApD UiBzaG91bGQgZmFpbCBmb3IgdGhlIGFkZGl0aW9uYWwgbGFuZXMuIHJlc3VsdGluZyBpbiB0aGUg bmV4dCBsaW5rIAp0cmFpbmluZyB3aXRoIGxvd2VyIGxhbmUgY291bnQKdG8gcGFzcy4gdGhhdCBp cyB0aGUgYmFzaWMgYXNzdW1wdGlvbiBvZiB0aGlzIHBhdGNoIDopCgpyZWdhcmRzLApTaXZha3Vt YXIKPj4+ICsKPj4+ICsJfSB3aGlsZSAoMSk7Cj4+IE1heWJlIG1ha2UgdGhpcyBpbnRvIGEgZm9y ICg7OykgbG9vcC4gVGhhdCB3YXkgb25lIGNhbiBzcG90IHRoZSAobGFjayBvZikgZW5kCj4+IGNv bmRpdGlvbiBlYXJsaWVyIHdoZW4gcmVhZGluZyB0b3AgdG8gYm90dG9tLgo+IE9rLCB3aWxsIHRy eSB0aGlzIGltcGxlbWVudGF0aW9uLi4KPgo+IFRoYW5rIHlvdSBmb3IgaGF2aW5nIGEgbG9vayBh dCB0aGlzIHBhdGNoIEFuZGVyLi4KPgo+IFRoYW5rcywKPiBEdXJnYQo+Cj4+Cj4+IEFuZGVyCj4+ Cj4+PiArCj4+PiArZXhpdDoKPj4+ICsJLyogUmVzdG9yZSBsb2NhbCBhc3NvY2lhdGlvbnMgbWFk ZSAqLwo+Pj4gKwlpZiAoIXZhbGlkX2NydGMpIHsKPj4+ICsJCWNvbm5lY3Rvci0+bmV3X2VuY29k ZXIgPSB0bXBfZW5jb2RlcjsKPj4+ICsJCWVuY29kZXItPm5ld19jcnRjID0gdG1wX2NydGM7Cj4+ PiArCQllbmNvZGVyLT5iYXNlLmNydGMgPSB0bXBfZHJtX2NydGM7Cj4+PiArCX0KPj4+ICsKPj4+ ICsJaWYgKGZvdW5kKQo+Pj4gKwkJRFJNX0RFQlVHX0tNUygidXBmcm9udCBsaW5rIHRyYWluaW5n IHBhc3NlZC4gbGFuZXM6JWQKPj4+IGJ3OiVkXG4iLAo+Pj4gKwkJCQlpbnRlbF9kcC0+bGFuZV9j b3VudCwgaW50ZWxfZHAtPmxpbmtfYncpOwo+Pj4gKwkvKiBSZXN0b3JlIGxhbmVfY291bnQgYW5k IGxpbmtfYncgdmFsdWVzICovCj4+PiArCWludGVsX2RwLT5sYW5lX2NvdW50ID0gdG1wX2xhbmVf Y291bnQ7Cj4+PiArCWludGVsX2RwLT5saW5rX2J3ID0gdG1wX2xpbmtfYnc7Cj4+PiArCj4+PiAr CXJldHVybiBmb3VuZDsKPj4+ICt9Cj4+PiArCj4+PiAgIHZvaWQgaW50ZWxfZGRpX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4+PiAgIHsKPj4+ICAgCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+PiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPj4+IGluZGV4IDE4YmNmYmUuLjgzNzZiNDcgMTAwNjQ0Cj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+PiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4+PiBAQCAtNDc4NSw2ICs0Nzg1LDM1IEBAIGludGVsX2Rw X3Bvd2VyX3B1dChzdHJ1Y3QgaW50ZWxfZHAgKmRwLAo+Pj4gICAJaW50ZWxfZGlzcGxheV9wb3dl cl9wdXQodG9faTkxNShlbmNvZGVyLT5iYXNlLmRldiksIHBvd2VyX2RvbWFpbik7Cj4+PiAgIH0K Pj4+Cj4+PiArc3RhdGljIGJvb2wgaW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4+PiArewo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0 ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPj4+ICsJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gaW50ZWxfZGlnX3BvcnQtPmJhc2UuYmFzZS5jcnRjOwo+Pj4gKwlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFz ZTsKPj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2VuY29kZXItPmJhc2UuZGV2 Owo+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IGNydGMgPyB0b19pbnRlbF9j cnRjKGNydGMpIDogTlVMTDsKPj4+ICsKPj4+ICsJLyoKPj4+ICsJICogT24gaG90cGx1ZyBjYXNl cywgd2UgY2FsbCBfdXBmcm9udF9saW5rX3RyYWluIGRpcmVjdGx5Lgo+Pj4gKwkgKiBJbiBjb25u ZWN0ZWQgYm9vdCBzY2VuYXJpb3MgKGJvb3Qgd2l0aCB7TUlQSS9lRFB9ICsgRFApLAo+Pj4gKwkg KiBCSU9TIHR5cGljYWxseSBicmluZ3MgdXAgRFAuIEhlbmNlLCB3ZSBkaXNhYmxlIHRoZSBjcnRj Cj4+PiArCSAqIHRvIGRvIF91cGZyb250X2xpbmtfdHJhaW5pbmcuIEl0IGdldHMgcmUtZW5hYmxl ZCBhcyBwYXJ0IG9mCj4+PiArCSAqIHN1YnNlcXVlbnQgbW9kZXNldC4KPj4+ICsJICovCj4+PiAr CWlmIChpbnRlbF9lbmNvZGVyLT5jb25uZWN0b3JzX2FjdGl2ZSAmJiBjcnRjICYmIGNydGMtPmVu YWJsZWQpIHsKPj4+ICsJCURSTV9ERUJVR19LTVMoIkRpc2FibGluZyBjcnRjICVjIGZvciB1cGZy b250IGxpbmsKPj4+IHRyYWluaW5nXG4iLAo+Pj4gKwkJCQlwaXBlX25hbWUoaW50ZWxfY3J0Yy0+ cGlwZSkpOwo+Pj4gKwkJaW50ZWxfY3J0Y19jb250cm9sKGNydGMsIGZhbHNlKTsKPj4+ICsJfQo+ Pj4gKwo+Pj4gKwlpZiAoSEFTX0RESShkZXYpKQo+Pj4gKwkJcmV0dXJuIGludGVsX2RkaV91cGZy b250X2xpbmtfdHJhaW4oZGV2LCBpbnRlbF9kcCwKPj4+IGludGVsX2NydGMpOwo+Pj4gKwo+Pj4g KwkvKiBOb3QgYSBzdXBwb3J0ZWQgcGxhdGZvcm0uIEFzc3VtZSB3ZSBkb24ndCBuZWVkIHVwZnJv bnRfdHJhaW4gKi8KPj4+ICsJcmV0dXJuIHRydWU7Cj4+PiArfQo+Pj4gKwo+Pj4gKwo+Pj4gICBz dGF0aWMgZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cwo+Pj4gICBpbnRlbF9kcF9kZXRlY3Qoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkKPj4+ICAgewo+Pj4gQEAg LTQ3OTQsNyArNDgyMyw3IEBAIGludGVsX2RwX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCBib29sCj4+PiBmb3JjZSkKPj4+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjb25uZWN0b3ItPmRldjsKPj4+ICAgCWVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMgc3RhdHVz Owo+Pj4gICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4+ PiAtCWJvb2wgcmV0Owo+Pj4gKwlib29sIHJldCwgZG9fdXBmcm9udF9saW5rX3RyYWluOwo+Pj4g ICAJdTggc2lua19pcnFfdmVjdG9yOwo+Pj4KPj4+ICAgCURSTV9ERUJVR19LTVMoIltDT05ORUNU T1I6JWQ6JXNdXG4iLAo+Pj4gQEAgLTQ4NTIsNiArNDg4MSwxNiBAQCBpbnRlbF9kcF9kZXRlY3Qo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbAo+Pj4gZm9yY2UpCj4+PiAgIAkJ CURSTV9ERUJVR19EUklWRVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxCj4+PiB1bmhhbmRsZWRc biIpOwo+Pj4gICAJfQo+Pj4KPj4+ICsJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwg aWYgaXQgaXMgYSBjb21wbGlhbmNlIHJlcXVlc3QgKi8KPj4+ICsJZG9fdXBmcm9udF9saW5rX3Ry YWluID0KPj4+ICsJCWludGVsX2VuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RJU1BMQVlQ T1JUICYmCj4+PiArCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0gRFBfVEVTVF9M SU5LX1RSQUlOSU5HOwo+Pj4gKwo+Pj4gKwlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKSB7Cj4+ PiArCQlyZXQgPSBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+Pj4gKwkJ aWYgKCFyZXQpCj4+PiArCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7 Cj4+PiArCX0KPj4+ICAgb3V0Ogo+Pj4gICAJaW50ZWxfZHBfcG93ZXJfcHV0KGludGVsX2RwLCBw b3dlcl9kb21haW4pOwo+Pj4gICAJcmV0dXJuIHN0YXR1czsKPj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+Pj4gaW5kZXggNWJjZGQzNy4uODJhZjRlNiAxMDA2NDQKPj4+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+Pj4gQEAgLTEwMDcsNiArMTAwNyw4IEBAIHZvaWQgaW50ZWxfZGRp X2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+ICAgCQkJIHN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4+PiAgIHZvaWQgaW50ZWxfZGRpX3Nl dF92Y19wYXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7Cj4+ PiAgIHVpbnQzMl90IGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Owo+Pj4gK2Jvb2wgaW50ZWxfZGRpX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+Pj4gKwkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgc3RydWN0IGludGVsX2Ny dGMgKmNydGMpOwo+Pj4KPj4+ICAgLyogaW50ZWxfZnJvbnRidWZmZXIuYyAqLwo+Pj4gICB2b2lk IGludGVsX2ZiX29ial9pbnZhbGlkYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==