From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCHv7 5/5] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Wed, 27 Jul 2016 12:58:12 +0300 Message-ID: <20160727095812.GL4329@intel.com> References: <1468406744-6779-1-git-send-email-durgadoss.r@intel.com> <1468406744-6779-6-git-send-email-durgadoss.r@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 70C036E160 for ; Wed, 27 Jul 2016 09:58:16 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1468406744-6779-6-git-send-email-durgadoss.r@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Durgadoss R Cc: ander.conselvan.de.oliveira@intel.com, intel-gfx@lists.freedesktop.org, jim.bride@intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMTMsIDIwMTYgYXQgMDQ6MTU6NDRQTSArMDUzMCwgRHVyZ2Fkb3NzIFIgd3Jv dGU6Cj4gVG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0aGUgZGlzcGxh eSBkcml2ZXIgbmVlZHMgdG8KPiBrbm93IHRoZSBudW1iZXIgb2YgbGFuZXMgcmVxdWlyZWQgYnkg dGhlIERQIHBhbmVsIGFzIHdlbGwgYXMgbnVtYmVyCj4gb2YgbGFuZXMgdGhhdCBjYW4gYmUgc3Vw cG9ydGVkIGJ5IHRoZSB0eXBlLUMgY2FibGUuIFNvbWV0aW1lcywgdGhlCj4gdHlwZS1DIGNhYmxl IG1heSBsaW1pdCB0aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBvcnQKPiBtb3Jl IGxhbmVzLiBUbyBhZGRyZXNzIHRoZXNlIHNjZW5hcmlvcywgdGhlIGRpc3BsYXkgZHJpdmVyIHdp bGwKPiBzdGFydCBsaW5rIHRyYWluaW5nIHdpdGggbWF4IGxhbmVzLCBhbmQgaWYgdGhhdCBmYWls cywgdGhlIGRyaXZlcgo+IGZhbGxzIGJhY2sgdG8geDIgbGFuZXM7IGFuZCByZXBlYXRzIHRoaXMg cHJvY2VkdXJlIGZvciBhbGwKPiBiYW5kd2lkdGgvbGFuZSBjb25maWd1cmF0aW9ucy4KPiAKPiAq IFNpbmNlIGxpbmsgdHJhaW5pbmcgaXMgZG9uZSBiZWZvcmUgbW9kZXNldCBvbmx5IHRoZSBwb3J0 Cj4gICAoYW5kIG5vdCBwaXBlL3BsYW5lcykgYW5kIGl0cyBhc3NvY2lhdGVkIFBMTHMgYXJlIGVu YWJsZWQuCj4gKiBPbiBEUCBob3RwbHVnOiBEaXJlY3RseSBzdGFydCBsaW5rIHRyYWluaW5nIG9u IHRoZSBEUCBlbmNvZGVyLgo+ICogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJv b3RlZCB3aXRoIGFuIExGUCBhbmQgYSBEUCwKPiAgIHNvbWV0aW1lcyBCSU9TIGJyaW5ncyB1cCBE UC4gSW4gdGhlc2UgY2FzZXMsIHdlIGRpc2FibGUgdGhlCj4gICBjcnRjIGFuZCB0aGVuIGRvIHVw ZnJvbnQgbGluayB0cmFpbmluZzsgYW5kIGJyaW5nIGl0IGJhY2sgdXAuCj4gKiBBbGwgbG9jYWwg Y2hhbmdlcyBtYWRlIGZvciB1cGZyb250IGxpbmsgdHJhaW5pbmcgYXJlIHJlc2V0Cj4gICB0byB0 aGVpciBwcmV2aW91cyB2YWx1ZXMgb25jZSBpdCBpcyBkb25lOyBzbyB0aGF0IHRoZQo+ICAgc3Vi c2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBvZiB0aGVzZSBjaGFuZ2VzLgo+IAo+IENoYW5n ZXMgc2luY2UgdjY6Cj4gKiBGaXggc29tZSBpbml0aWFsaXphdGlvbiBidWdzIG9uIGxpbmtfcmF0 ZSAoSmltIEJyaWRlKQo+ICogVXNlIGxpbmtfcmF0ZSAoYW5kIG5vdCBsaW5rX2J3KSBmb3IgdXBm cm9udCAoVmlsbGUpCj4gKiBNYWtlIGludGVsX2RwX3VwZnJvbnQqKCkgYXMgYSB2ZnVuYyAoQW5k ZXIpCj4gKiBUaGUgdHJhaW5fc2V0X3ZhbGlkIHZhcmlhYmxlIGluIGludGVsX2RwIHdhcyByZW1v dmVkIGR1ZSB0bwo+ICAgaXNzdWVzIGluIGZhc3QgbGluayB0cmFpbmluZy4gU28sIHRvIGluZGlj YXRlIHRoZSBsaW5rIHRyYWluCj4gICBzdGF0dXMsIG1vdmUgdGhlIGNoYW5uZWxfZXEgaW5zaWRl IGludGVsX2RwLgo+IENoYW5nZXMgc2luY2UgdjU6Cj4gKiBNb3ZlZCByZXRyeSBsb2dpYyBpbiB1 cGZyb250IHRvIGludGVsX2RwLmMgc28gdGhhdCBpdAo+ICAgY2FuIGJlIHVzZWQgZm9yIGFsbCBw bGF0Zm9ybXMuCj4gQ2hhbmdlcyBzaW5jZSB2NDoKPiAqIFJlbW92ZWQgdXNhZ2Ugb2YgY3J0Y19z dGF0ZSBpbiB1cGZyb250IGxpbmsgdHJhaW5pbmc7Cj4gICBIZW5jZSBubyBuZWVkIHRvIGZpbmQg ZnJlZSBjcnRjIHRvIGRvIHVwZnJvbnQgbm93Lgo+ICogUmUtZW5hYmxlIGNydGMgaWYgaXQgd2Fz IGRpc2FibGVkIGZvciB1cGZyb250Lgo+ICogVXNlIHNlcGFyYXRlIHZhcmlhYmxlcyB0byB0cmFj ayBtYXggbGFuZSBjb3VudAo+ICAgYW5kIGxpbmsgcmF0ZSBmb3VuZCBieSB1cGZyb250LCB3aXRo b3V0IG1vZGlmeWluZwo+ICAgdGhlIG9yaWdpbmFsIERQQ0QgcmVhZCBmcm9tIHBhbmVsLgo+IENo YW5nZXMgc2luY2UgdjM6Cj4gKiBGaXhlZCBhIHJldHVybiB2YWx1ZSBvbiBCWFQgY2hlY2sKPiAq IFJld29ya2VkIG9uIHRvcCBvZiBieHRfZGRpX3BsbF9zZWxlY3Qgc3BsaXQgZnJvbSBBbmRlcgo+ ICogUmVuYW1lZCBmcm9tIGRkaV91cGZyb250IHRvIGJ4dF91cGZyb250IHNpbmNlIHRoZQo+ICAg dXBmcm9udCBsb2dpYyBpbmNsdWRlcyBCWFQgc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBub3cuCj4g Q2hhbmdlcyBzaW5jZSB2MjoKPiAqIFJlYmFzZWQgb24gdG9wIG9mIGxhdGVzdCBkcGxsX21nci5j IGNvZGUgYW5kCj4gICBsYXRlc3QgSFBEIHJlbGF0ZWQgY2xlYW4gdXBzLgo+ICogQ29ycmVjdGVk IHJldHVybiB2YWx1ZXMgZnJvbSB1cGZyb250IChBbmRlcikKPiAqIENvcnJlY3RlZCBhdG9taWMg bG9ja2luZyBmb3IgdXBmcm9udCBpbiBpbnRlbF9kcC5jIChWaWxsZSkKPiBDaGFuZ2VzIHNpbmNl IHYxOgo+ICogIGFsbCBwbGwgcmVsYXRlZCBmdW5jdGlvbnMgaW5zaWRlIGRkaS5jCj4gCj4gU2ln bmVkLW9mZi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwgIDQ1ICsrKysr KysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8IDE1 NSArKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9saW5rX3RyYWluaW5nLmMgfCAgIDcgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmggICAgICAgICAgICAgIHwgIDE1ICsrKwo+ICA0IGZpbGVzIGNoYW5nZWQsIDIxMyBp bnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gaW5kZXggYWIxNzQ1YS4uM2JhZDAxYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gQEAgLTIzNTYsNiArMjM1Niw1MSBAQCBpbnRlbF9kZGlfaW5pdF9oZG1pX2Nvbm5lY3Rvcihz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCkKPiAgCXJldHVybiBjb25u ZWN0b3I7Cj4gIH0KPiAgCj4gK2Jvb2wgaW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFpbihzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJaW50IGNsb2NrLCB1aW50OF90IGxhbmVfY291 bnQpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2Rw LT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9 IGNvbm5lY3Rvci0+ZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9k cGxsICpwbGw7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHRtcF9wbGxfY29u ZmlnOwo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdf cG9ydChpbnRlbF9kcCk7Cj4gKwllbnVtIGludGVsX2RwbGxfaWQgZHBsbF9pZCA9IChlbnVtIGlu dGVsX2RwbGxfaWQpZGlnX3BvcnQtPnBvcnQ7Cj4gKwo+ICsJLyoKPiArCSAqIEZJWE1FOiBXb3Jr cyBvbmx5IGZvciBCWFQuCj4gKwkgKiBTZWxlY3QgdGhlIHJlcXVpcmVkIFBMTC4gVGhpcyB3b3Jr cyBmb3IgcGxhdGZvcm1zIHdoZXJlCj4gKwkgKiB0aGVyZSBpcyBubyBzaGFyZWQgRFBMTC4KPiAr CSAqLwo+ICsJcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNbZHBsbF9pZF07Cj4gKwlpZiAo V0FSTl9PTihwbGwtPmFjdGl2ZV9tYXNrKSkgewo+ICsJCURSTV9FUlJPUigiU2hhcmVkIERQTEwg YWxyZWFkeSBpbiB1c2UuIGFjdGl2ZV9tYXNrOiV4XG4iLCBwbGwtPmFjdGl2ZV9tYXNrKTsKPiAr CQlyZXR1cm4gZmFsc2U7Cj4gKwl9Cj4gKwo+ICsJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZp ZzsKPiArCj4gKwlpZiAoIWJ4dF9kZGlfZHBfc2V0X2RwbGxfaHdfc3RhdGUoY2xvY2ssICZwbGwt PmNvbmZpZy5od19zdGF0ZSkpIHsKPiArCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBzZXR1cCBEUExM XG4iKTsKPiArCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ICsJCXJldHVybiBmYWxz ZTsKPiArCX0KPiArCj4gKwkvKiBFbmFibGUgUExMIGZvbGxvd2VkIGJ5IHBvcnQgKi8KPiArCXBs bC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+ICsJaW50ZWxfZGRpX3ByZV9lbmFibGVf ZHAoZW5jb2RlciwgY2xvY2ssIGxhbmVfY291bnQsIHBsbCk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tN UygiVXBmcm9udCBsaW5rIHRyYWluICVzOiBsaW5rX2Nsb2NrOiVkIGxhbmVzOiVkXG4iLAo+ICsJ aW50ZWxfZHAtPmNoYW5uZWxfZXFfc3RhdHVzID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwgY2xvY2ss IGxhbmVfY291bnQpOwo+ICsKPiArCS8qIERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9y IG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KPiArCWludGVsX2RkaV9wb3N0X2Rpc2FibGUoZW5jb2Rl cik7Cj4gKwlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4gKwo+ICsJcGxsLT5j b25maWcgPSB0bXBfcGxsX2NvbmZpZzsKPiArCXJldHVybiBpbnRlbF9kcC0+Y2hhbm5lbF9lcV9z dGF0dXM7Cj4gK30KPiArCj4gIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwb3J0IHBvcnQpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA4 MTc4OTdjLi4zOTRlNjJkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTE1Mywx MiArMTUzLDIxIEBAIGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAgKmludGVs X2RwKQo+ICBzdGF0aWMgdTggaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgewo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gLQl1OCBzb3VyY2VfbWF4LCBzaW5r X21heDsKPiArCXU4IHRlbXAsIHNvdXJjZV9tYXgsIHNpbmtfbWF4Owo+ICAKPiAgCXNvdXJjZV9t YXggPSBpbnRlbF9kaWdfcG9ydC0+bWF4X2xhbmVzOwo+ICAJc2lua19tYXggPSBkcm1fZHBfbWF4 X2xhbmVfY291bnQoaW50ZWxfZHAtPmRwY2QpOwo+ICAKPiAtCXJldHVybiBtaW4oc291cmNlX21h eCwgc2lua19tYXgpOwo+ICsJdGVtcCA9IG1pbihzb3VyY2VfbWF4LCBzaW5rX21heCk7Cj4gKwo+ ICsJLyoKPiArCSAqIExpbWl0IG1heCBsYW5lcyB3LnIudCB0byB0aGUgbWF4IHZhbHVlIGZvdW5k Cj4gKwkgKiB1c2luZyBVcGZyb250IGxpbmsgdHJhaW5pbmcgYWxzby4KPiArCSAqLwo+ICsJaWYg KGludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCkKPiArCQlyZXR1cm4gbWluKHRlbXAsIGludGVs X2RwLT5tYXhfbGFuZXNfdXBmcm9udCk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIHRlbXA7Cj4gIH0K PiAgCj4gIC8qCj4gQEAgLTEzODAsNiArMTM4OSwxNSBAQCBzdGF0aWMgaW50IGludGVsX2RwX2Nv bW1vbl9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJaW50IHNvdXJjZV9sZW4s IHNpbmtfbGVuOwo+ICAKPiAgCXNpbmtfbGVuID0gaW50ZWxfZHBfc2lua19yYXRlcyhpbnRlbF9k cCwgJnNpbmtfcmF0ZXMpOwo+ICsKPiArCS8qIENhcCBzaW5rIHJhdGVzIHcuci50IHVwZnJvbnQg dmFsdWVzICovCj4gKwlpZiAoaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkgewo+ICsJ CWludCBsZW4gPSBzaW5rX2xlbiAtIDE7Cj4gKwkJd2hpbGUgKGxlbiA+IDAgJiYgc2lua19yYXRl c1tsZW5dID4gaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCkKPiArCQkJbGVuLS07Cj4g KwkJc2lua19sZW4gPSBsZW4gKyAxOwo+ICsJfQo+ICsKPiAgCXNvdXJjZV9sZW4gPSBpbnRlbF9k cF9zb3VyY2VfcmF0ZXMoaW50ZWxfZHAsICZzb3VyY2VfcmF0ZXMpOwo+ICAKPiAgCXJldHVybiBp bnRlcnNlY3RfcmF0ZXMoc291cmNlX3JhdGVzLCBzb3VyY2VfbGVuLAo+IEBAIC00MjA4LDYgKzQy MjYsMTE0IEBAIGludGVsX2RwX3Vuc2V0X2VkaWQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCWludGVsX2RwLT5oYXNfYXVkaW8gPSBmYWxzZTsKPiAgfQo+ICAKPiArc3RhdGljIGludCBp bnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAr CQkJCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4LAo+ICsJCQkJYm9vbCBlbmFi bGUpCj4gK3sKPiArCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7 Cj4gKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKPiArCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+ cGlwZTsKPiArCj4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiArCWlm ICghc3RhdGUpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJc3RhdGUtPmFjcXVpcmVfY3R4 ID0gY3R4Owo+ICsKPiArCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUo c3RhdGUsIGNydGMpOwo+ICsJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ICsJCXJldCA9IFBU Ul9FUlIoY3J0Y19zdGF0ZSk7Cj4gKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAr CQlyZXR1cm4gcmV0Owo+ICsJfQo+ICsKPiArCURSTV9ERUJVR19LTVMoIiVzYWJsaW5nIGNydGMg JWMgJXMgdXBmcm9udCBsaW5rIHRyYWluXG4iLAo+ICsJCQllbmFibGUgPyAiRW4iIDogIkRpcyIs Cj4gKwkJCXBpcGVfbmFtZShwaXBlKSwKPiArCQkJZW5hYmxlID8gImFmdGVyIiA6ICJiZWZvcmUi KTsKPiArCj4gKwljcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSA9IGVuYWJsZTsKPiArCXJldCA9IGRy bV9hdG9taWNfY29tbWl0KHN0YXRlKTsKPiArCWlmIChyZXQpCj4gKwkJZHJtX2F0b21pY19zdGF0 ZV9mcmVlKHN0YXRlKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9v bCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiArewo+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90 b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciA9ICZpbnRlbF9kaWdfcG9ydC0+YmFzZTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9lbmNvZGVyLT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiArCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZp ZyA9ICZkZXYtPm1vZGVfY29uZmlnOwo+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4 IGN0eDsKPiArCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjOwo+ICsJc3RydWN0IGRybV9j cnRjICpjcnRjID0gTlVMTDsKPiArCWludCByZXQ7Cj4gKwlib29sIGRvbmUgPSBmYWxzZTsKPiAr CXVpbnQ4X3QgbGFuZV9jb3VudCwgbWF4X2xhbmVzID0gNDsKPiArCWludCBjb21tb25fcmF0ZXNb RFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKPiArCWludCBjbG9jaywgY29tbW9uX2xlbjsK PiArCj4gKwljb21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCBjb21t b25fcmF0ZXMpOwo+ICsJaWYgKFdBUk5fT04oY29tbW9uX2xlbiA8PSAwKSkKPiArCQlyZXR1cm4g dHJ1ZTsKPiArCj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gK3JldHJ5 Ogo+ICsJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY29uZmlnLT5jb25uZWN0aW9uX211dGV4LCAm Y3R4KTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBleGl0X2ZhaWw7Cj4gKwo+ICsJaWYgKGludGVs X2VuY29kZXItPmJhc2UuY3J0Yykgewo+ICsJCWNydGMgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmNy dGM7Cj4gKwo+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsK PiArCQlpZiAocmV0KQo+ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiArCj4gKwkJcmV0ID0gZHJtX21v ZGVzZXRfbG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsICZjdHgpOwo+ICsJCWlmIChyZXQpCj4g KwkJCWdvdG8gZXhpdF9mYWlsOwo+ICsKPiArCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0Yyhj cnRjKTsKPiArCQlyZXQgPSBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9jcnRj LCAmY3R4LCBmYWxzZSk7CgpTdGlsbCBzZWVtcyB3cm9uZyB0byBqdXN0IGRpc2FibGUgdGhpbmdz IGhlcmUuIEFuZCBpZiB3ZSBjYW4ndCBkaXNhYmxlCnRoaW5ncywgdGhlbiB3aGF0IGNhbiB3ZSBk bz8KCkkgYmVsaWV2ZSB0aGVyZSBhcmUgcGVvcGxlIHdvcmtpbmcgb24gYSBwcm9wZXIgVVNCIHR5 cGUtQyBmcmFtZXdvcmssCmFuZCBvbmNlIHRoYXQgbWF0ZXJpYWxpemVzLCBJJ20gaG9waW5nIGl0 IGNvdWxkIGp1c3Qgc2lnbmFsIHVzIHdoZW5ldmVyCnRoZSBjYWJsZSBtb2RlIGdldHMgY2hhbmdl ZC4gSSBhc3N1bWUgdGhlIGJpZ2dlc3QgbWVzcyBmb3IgdXMgd291bGQKYmUgaG93IHRvIGRldGVj dCB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhIHR5cGUtQyBwb3J0LCBzbyB0aGF0IHdlJ2QKa25v dyB3aGVuIHRvIHJlZ2lzdGVyIGZvciB0aGVzZSBub3RpZmljYXRpb25zLgoKQW55d2F5LCBvbmNl IHRoZXJlJ3MgYSBwcm9wZXIgZnJhbWV3b3JrIGZvciB0aGlzIHN0dWZmLCBJIGRvbid0IHRoaW5r CndlJ2QgbmVlZCBhbnkgdXBmcm9udCBsaW5rIHRyYWluaW5nIHNueW1vcmUuIEkgZ3Vlc3Mgd2Ug Y291bGQgdXNlIGl0CmFzIGEgdGVtcG9yYXJ5IHRoaW5nLCBhbmQgZ2FyYmFnZSBjb2xsZWN0IGl0 IGlmL3doZW4gdGhlIHByb3BlciBVU0IKc3R1ZmYgaGFwcGVucz8KCj4gKwkJaWYgKHJldCkKPiAr CQkJZ290byBleGl0X2ZhaWw7Cj4gKwl9Cj4gKwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRw bGxfbG9jayk7Cj4gKwo+ICsJZm9yIChsYW5lX2NvdW50ID0gbWF4X2xhbmVzOyBsYW5lX2NvdW50 ID49IDEgJiYgIWRvbmU7IGxhbmVfY291bnQgPj49IDEpIHsKPiArCQlmb3IgKGNsb2NrID0gY29t bW9uX2xlbiAtIDE7IGNsb2NrID49IDAgJiYgIWRvbmU7IGNsb2NrLS0pIHsKPiArCQkJZG9uZSA9 IGludGVsX2RwLT51cGZyb250X2xpbmtfdHJhaW4oaW50ZWxfZHAsCj4gKwkJCQkJY29tbW9uX3Jh dGVzW2Nsb2NrXSwgbGFuZV9jb3VudCk7Cj4gKwkJCWlmIChkb25lKSB7Cj4gKwkJCQlpbnRlbF9k cC0+bWF4X2xhbmVzX3VwZnJvbnQgPSBsYW5lX2NvdW50Owo+ICsJCQkJaW50ZWxfZHAtPm1heF9s aW5rX3JhdGVfdXBmcm9udCA9IGNvbW1vbl9yYXRlc1tjbG9ja107Cj4gKwkJCQlicmVhazsKPiAr CQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGxsX2xv Y2spOwo+ICsKPiArCWlmIChjcnRjKQo+ICsJCXJldCA9IGludGVsX2RwX3VwZnJvbnRfY3J0Y19k aXNhYmxlKGludGVsX2NydGMsICZjdHgsIHRydWUpOwo+ICsKPiArZXhpdF9mYWlsOgo+ICsJaWYg KHJldCA9PSAtRURFQURMSykgewo+ICsJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gKwkJ Z290byByZXRyeTsKPiArCX0KPiArCWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gKwlk cm1fbW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gKwlyZXR1cm4gZG9uZTsKPiArfQo+ICsK PiAgc3RhdGljIHZvaWQKPiAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICppbnRlbF9jb25uZWN0b3IpCj4gIHsKPiBAQCAtNDIxOCw3ICs0MzQ0LDcgQEAgaW50ZWxf ZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gIAllbnVtIGRybV9j b25uZWN0b3Jfc3RhdHVzIHN0YXR1czsKPiAgCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21h aW4gcG93ZXJfZG9tYWluOwo+IC0JYm9vbCByZXQ7Cj4gKwlib29sIHJldCwgZG9fdXBmcm9udF9s aW5rX3RyYWluOwo+ICAJdTggc2lua19pcnFfdmVjdG9yOwo+ICAKPiAgCXBvd2VyX2RvbWFpbiA9 IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKGludGVsX2VuY29kZXIpOwo+IEBA IC00MzAzLDEwICs0NDI5LDIzIEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICAJCQlEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBz aW5rIHNwZWNpZmljIGlycSB1bmhhbmRsZWRcbiIpOwo+ICAJfQo+ICAKPiArCS8qIERvIG5vdCBk byB1cGZyb250IGxpbmsgdHJhaW4sIGlmIGl0IGlzIGEgY29tcGxpYW5jZSByZXF1ZXN0ICovCj4g Kwlkb191cGZyb250X2xpbmtfdHJhaW4gPSBpbnRlbF9kcC0+dXBmcm9udF9saW5rX3RyYWluICYm Cj4gKwkJCQkhaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSAmJgo+ICsJCQkJaW50ZWxfZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFAgJiYKPiArCQkJCWludGVsX2RwLT5jb21wbGlhbmNlX3Rl c3RfdHlwZSAhPSBEUF9URVNUX0xJTktfVFJBSU5JTkc7Cj4gKwo+ICsJaWYgKGRvX3VwZnJvbnRf bGlua190cmFpbikgewo+ICsJCWludGVsX2RwLT51cGZyb250X2RvbmUgPSBpbnRlbF9kcF91cGZy b250X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICsJCWlmICghaW50ZWxfZHAtPnVwZnJvbnRfZG9u ZSkKPiArCQkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gKwl9Cj4g Kwo+ICBvdXQ6Cj4gLQlpZiAoKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkg JiYKPiAtCSAgICAoaW50ZWxfZHAtPmlzX21zdCA9PSBmYWxzZSkpCj4gKwlpZiAoc3RhdHVzICE9 IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmICFpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gIAkJ aW50ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gKwkJaW50ZWxfZHAtPnVwZnJvbnRfZG9u ZSA9IGZhbHNlOwo+ICsJfQo+ICAKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHRvX2k5MTUo ZGV2KSwgcG93ZXJfZG9tYWluKTsKPiAgCXJldHVybjsKPiBAQCAtNTU2Miw2ICs1NzAxLDEyIEBA IGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVs X2RpZ19wb3J0LAo+ICAJaWYgKHR5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkKPiAgCQlp bnRlbF9lbmNvZGVyLT50eXBlID0gSU5URUxfT1VUUFVUX0VEUDsKPiAgCj4gKwkvKiBJbml0aWFs aXplIHVwZnJvbnQgbGluayB0cmFpbmluZyB2ZnVuYyBmb3IgRFAgKi8KPiArCWlmIChpbnRlbF9l bmNvZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9FRFApIHsKPiArCQlpZiAoSVNfQlJPWFRPTihk ZXYpKQo+ICsJCQlpbnRlbF9kcC0+dXBmcm9udF9saW5rX3RyYWluID0gaW50ZWxfYnh0X3VwZnJv bnRfbGlua190cmFpbjsKPiArCX0KPiArCj4gIAkvKiBlRFAgb25seSBvbiBwb3J0IEIgYW5kL29y IEMgb24gdmx2L2NodiAqLwo+ICAJaWYgKFdBUk5fT04oKElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJ U19DSEVSUllWSUVXKGRldikpICYmCj4gIAkJICAgIGlzX2VkcChpbnRlbF9kcCkgJiYgcG9ydCAh PSBQT1JUX0IgJiYgcG9ydCAhPSBQT1JUX0MpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiBpbmRleCA2MGZiMzljLi5lNTg0NDJhIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+IEBAIC0y MzIsNyArMjMyLDYgQEAgc3RhdGljIHUzMiBpbnRlbF9kcF90cmFpbmluZ19wYXR0ZXJuKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIHN0YXRpYyB2b2lkCj4gIGludGVsX2RwX2xpbmtfdHJh aW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAg ewo+IC0JYm9vbCBjaGFubmVsX2VxID0gZmFsc2U7Cj4gIAlpbnQgdHJpZXMsIGNyX3RyaWVzOwo+ ICAJdTMyIHRyYWluaW5nX3BhdHRlcm47Cj4gIAo+IEBAIC0yNDgsNyArMjQ3LDcgQEAgaW50ZWxf ZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ICAKPiAgCXRyaWVzID0gMDsKPiAgCWNyX3RyaWVzID0gMDsKPiAtCWNoYW5uZWxf ZXEgPSBmYWxzZTsKPiArCWludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1cyA9IGZhbHNlOwo+ICAJ Zm9yICg7Oykgewo+ICAJCXVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07 Cj4gIAo+IEBAIC0yNzYsNyArMjc1LDcgQEAgaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVs X2VxdWFsaXphdGlvbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAKPiAgCQlpZiAoZHJt X2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsCj4gIAkJCQkJIGludGVsX2RwLT5sYW5lX2Nv dW50KSkgewo+IC0JCQljaGFubmVsX2VxID0gdHJ1ZTsKPiArCQkJaW50ZWxfZHAtPmNoYW5uZWxf ZXFfc3RhdHVzID0gdHJ1ZTsKPiAgCQkJYnJlYWs7Cj4gIAkJfQo+ICAKPiBAQCAtMzAyLDcgKzMw MSw3IEBAIGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiAgCj4gIAlpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWlu KGludGVsX2RwKTsKPiAgCj4gLQlpZiAoY2hhbm5lbF9lcSkKPiArCWlmIChpbnRlbF9kcC0+Y2hh bm5lbF9lcV9zdGF0dXMpCj4gIAkJRFJNX0RFQlVHX0tNUygiQ2hhbm5lbCBFUSBkb25lLiBEUCBU cmFpbmluZyBzdWNjZXNzZnVsXG4iKTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+IGluZGV4IDE2ZjcwZDQuLjg4MzA2ZmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+IEBAIC04NTEsNiArODUxLDE1IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAllbnVtIGhkbWlf Zm9yY2VfYXVkaW8gZm9yY2VfYXVkaW87Cj4gIAlib29sIGxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4g IAlib29sIGNvbG9yX3JhbmdlX2F1dG87Cj4gKwo+ICsJLyogV2hldGhlciBDaGFubmVsIEVxdWFs aXphdGlvbiB3YXMgYWNoaWV2ZWQgZHVyaW5nIExpbmsgdHJhaW5pbmcgKi8KPiArCWJvb2wgY2hh bm5lbF9lcV9zdGF0dXM7Cj4gKwo+ICsJLyogVXBmcm9udCBsaW5rIHRyYWluIHBhcmFtZXRlcnMg Ki8KPiArCWludCBtYXhfbGlua19yYXRlX3VwZnJvbnQ7Cj4gKwl1aW50OF90IG1heF9sYW5lc191 cGZyb250Owo+ICsJYm9vbCB1cGZyb250X2RvbmU7Cj4gKwo+ICAJdWludDhfdCBkcGNkW0RQX1JF Q0VJVkVSX0NBUF9TSVpFXTsKPiAgCXVpbnQ4X3QgcHNyX2RwY2RbRURQX1BTUl9SRUNFSVZFUl9D QVBfU0laRV07Cj4gIAl1aW50OF90IGRvd25zdHJlYW1fcG9ydHNbRFBfTUFYX0RPV05TVFJFQU1f UE9SVFNdOwo+IEBAIC05MDgsNiArOTE3LDEwIEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAkvKiBU aGlzIGlzIGNhbGxlZCBiZWZvcmUgYSBsaW5rIHRyYWluaW5nIGlzIHN0YXJ0ZXJkICovCj4gIAl2 b2lkICgqcHJlcGFyZV9saW5rX3JldHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ ICAKPiArCS8qIEZvciBVcGZyb250IGxpbmsgdHJhaW5pbmcgKi8KPiArCWJvb2wgKCp1cGZyb250 X2xpbmtfdHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBjbG9jaywKPiArCQkJ CXVpbnQ4X3QgbGFuZV9jb3VudCk7Cj4gKwo+ICAJLyogRGlzcGxheXBvcnQgY29tcGxpYW5jZSB0 ZXN0aW5nICovCj4gIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwo+ICAJdW5z aWduZWQgbG9uZyBjb21wbGlhbmNlX3Rlc3RfZGF0YTsKPiBAQCAtMTEyNyw2ICsxMTQwLDggQEAg dm9pZCBpbnRlbF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ ICAJCQkgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiAgdm9pZCBpbnRl bF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29sIHN0 YXRlKTsKPiAgdWludDMyX3QgZGRpX3NpZ25hbF9sZXZlbHMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCk7Cj4gK2Jvb2wgaW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwLAo+ICsJCQkJaW50IGNsb2NrLCB1aW50OF90IGxhbmVfY291bnQpOwo+ICAK PiAgLyogaW50ZWxfZnJvbnRidWZmZXIuYyAqLwo+ICB2b2lkIGludGVsX2ZiX29ial9pbnZhbGlk YXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLS0gCj4gMS45LjEKCi0tIApW aWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=