From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH v4 11/14] drm/i915: Fallback to lower link rate and lane count during link training Date: Thu, 08 Sep 2016 12:32:16 +0300 Message-ID: <1473327136.28727.30.camel@intel.com> References: <1473272883-28520-3-git-send-email-manasi.d.navare@intel.com> <1473294615-27061-1-git-send-email-manasi.d.navare@intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 283AC6EDCB for ; Thu, 8 Sep 2016 09:32:18 +0000 (UTC) In-Reply-To: <1473294615-27061-1-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org UmV2aWV3ZWQtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+CgpPbiBXZWQs IDIwMTYtMDktMDcgYXQgMTc6MzAgLTA3MDAsIE1hbmFzaSBOYXZhcmUgd3JvdGU6Cj4gQWNjb3Jk aW5nIHRvIHRoZSBEaXNwbGF5UG9ydCBTcGVjLCBpbiBjYXNlIG9mIENsb2NrIFJlY292ZXJ5IGZh aWx1cmUKPiB0aGUgbGluayB0cmFpbmluZyBzZXF1ZW5jZSBzaG91bGQgZmFsbCBiYWNrIHRvIHRo ZSBsb3dlciBsaW5rIHJhdGUKPiBmb2xsb3dlZCBieSBsb3dlciBsYW5lIGNvdW50IHVudGlsIENS IHN1Y2NlZWRzLgo+IE9uIENSIHN1Y2Nlc3MsIHRoZSBzZXF1ZW5jZSBwcm9jZWVkcyB3aXRoIENo YW5uZWwgRVEuCj4gSW4gY2FzZSBvZiBDaGFubmVsIEVRIGZhaWx1cmVzLCBpdCBzaG91bGQgZmFs bGJhY2sgdG8KPiBsb3dlciBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQgYW5kIHN0YXJ0IHRoZSBD UiBwaGFzZSBhZ2Fpbi4KPiAKPiB2NDoKPiAqIEZpeGVkIHRoZSBsaW5rIHJhdGUgZmFsbGJhY2sg bG9vcCAoTWFuYXNpIE5hdmFyZSkKPiB2MzoKPiAqIEZpeGVkIHNvbWUgcmViYXNlIGlzc3VlcyAo TWlrYSBLYWhvbGEpCj4gdjI6Cj4gKiBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGlu ZGV4IG9mIHJlcXVlc3RlZCBsaW5rIHJhdGUKPiBpbnRvIGNvbW1vbl9yYXRlcyBhcnJheQo+ICog Q2hhbmdlZCB0aGUgbGluayByYXRlIGZhbGxiYWNrIGxvb3AgdG8gbWFrZSB1c2UKPiBvZiBjb21t b25fcmF0ZXMgYXJyYXkgKE1pa2EgS2Fob2xhKQo+ICogQ2hhbmdlZCBJTlRFTF9JTkZPIHRvIElO VEVMX0dFTiAoRGF2aWQgV2VpbmVoYWxsKQo+IAo+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZh cmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDEwOQo+ICsrKysr KysrKysrKysrKysrKysrKysrLS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfMKgwqAxNSArKysrCj4gwqBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfMKgwqAxMiArKy0KPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzC oMKgwqA2ICstCj4gwqA0IGZpbGVzIGNoYW5nZWQsIDEyOCBpbnNlcnRpb25zKCspLCAxNCBkZWxl dGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggMjVlNzk3My4u MTI3OGRhYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTE2MzQsMTkgKzE2 MzQsMTggQEAgdm9pZCBpbnRlbF9kZGlfY2xrX3NlbGVjdChzdHJ1Y3QKPiBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+IMKgCX0KPiDCoH0KPiDCoAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJl X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArc3RhdGljIHZvaWQg aW50ZWxfZGRpX3ByZV9lbmFibGVfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ IMKgCQkJCcKgwqDCoMKgaW50IGxpbmtfcmF0ZSwgdWludDMyX3QKPiBsYW5lX2NvdW50LAo+IC0J CQkJwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiAtCQkJCcKgwqDCoMKg Ym9vbCBsaW5rX21zdCkKPiArCQkJCcKgwqDCoMKgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGwpCj4gwqB7Cj4gwqAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9k cCgmZW5jb2Rlci0+YmFzZSk7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShlbmNvZGVyLQo+ID5iYXNlLmRldik7Cj4gwqAJZW51bSBwb3J0IHBvcnQgPSBp bnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVyKTsKPiDCoAo+IMKgCWludGVsX2RwX3Nl dF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgbGlua19yYXRlLCBsYW5lX2NvdW50LAo+IC0JCQkJwqBs aW5rX21zdCk7Cj4gLQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKQo+IC0J CWludGVsX2VkcF9wYW5lbF9vbihpbnRlbF9kcCk7Cj4gKwkJCQnCoGZhbHNlKTsKPiArCj4gKwlp bnRlbF9lZHBfcGFuZWxfb24oaW50ZWxfZHApOwo+IMKgCj4gwqAJaW50ZWxfZGRpX2Nsa19zZWxl Y3QoZW5jb2RlciwgcGxsKTsKPiDCoAlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29k ZXIpOwo+IEBAIC0xNjU3LDYgKzE2NTYsMjggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9l bmFibGVfZHAoc3RydWN0Cj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiDCoAkJaW50ZWxfZHBf c3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgdm9pZCBpbnRl bF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiArCQkJ CcKgwqDCoMKgaW50IGxpbmtfcmF0ZSwgdWludDMyX3QKPiBsYW5lX2NvdW50LAo+ICsJCQkJwqDC oMKgwqBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiArCQkJCcKgwqDCoMKgYm9vbCBs aW5rX21zdCkKPiArewo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItCj4gPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbF9jb25maWcgdG1wX3BsbF9jb25maWc7Cj4gKwo+ICsJLyogRGlzYWJsZSB0aGUgUExM IGFuZCBvYnRhaW4gdGhlIFBMTCBmb3IgTGluayBUcmFpbmluZwo+ICsJwqAqIHRoYXQgc3RhcnRz IHdpdGggaGlnaGVzdCBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQuCj4gKwnCoCovCj4gKwl0bXBf cGxsX2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+ICsJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2 LCBwbGwpOwo+ICsJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPiArCj4gKwkvKiBJZiBMaW5r IFRyYWluaW5nIGZhaWxzLCBzZW5kIGEgdWV2ZW50IHRvIGdlbmVyYXRlIGEKPiBob3RwbHVnICov Cj4gKwlpZiAoIShpbnRlbF9kZGlfbGlua190cmFpbihpbnRlbF9kcCwgbGlua19yYXRlLCBsYW5l X2NvdW50LAo+IGxpbmtfbXN0KSkpCj4gKwkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChl bmNvZGVyLT5iYXNlLmRldik7Cj4gKwlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ICt9 Cj4gKwo+IMKgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiDCoAkJCQnCoMKgwqDCoMKgwqBib29sIGhhc19oZG1pX3Np bmssCj4gwqAJCQkJwqDCoMKgwqDCoMKgc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiAqYWRqdXN0 ZWRfbW9kZSwKPiBAQCAtMTY5MCwyMCArMTcxMSwyNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlf cHJlX2VuYWJsZShzdHJ1Y3QKPiBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+IMKgCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiDC oAlpbnQgdHlwZSA9IGludGVsX2VuY29kZXItPnR5cGU7Cj4gwqAKPiAtCWlmICh0eXBlID09IElO VEVMX09VVFBVVF9EUCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiArCWlmICh0eXBl ID09IElOVEVMX09VVFBVVF9FRFApCj4gKwkJaW50ZWxfZGRpX3ByZV9lbmFibGVfZWRwKGludGVs X2VuY29kZXIsCj4gKwkJCQkJY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrLAo+ICsJCQkJCWNydGMt PmNvbmZpZy0+bGFuZV9jb3VudCwKPiArCQkJCQljcnRjLT5jb25maWctPnNoYXJlZF9kcGxsKTsK PiArCj4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRfRFApCj4gwqAJCWludGVsX2RkaV9wcmVf ZW5hYmxlX2RwKGludGVsX2VuY29kZXIsCj4gwqAJCQkJCWNydGMtPmNvbmZpZy0+cG9ydF9jbG9j aywKPiDCoAkJCQkJY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50LAo+IMKgCQkJCQljcnRjLT5jb25m aWctPnNoYXJlZF9kcGxsLAo+IMKgCQkJCQlpbnRlbF9jcnRjX2hhc190eXBlKGNydGMtCj4gPmNv bmZpZywKPiDCoAkJCQkJCQnCoMKgwqDCoElOVEVMX09VCj4gVFBVVF9EUF9NU1QpKTsKPiAtCX0K PiAtCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7Cj4gKwo+ICsJaWYgKHR5cGUgPT0g SU5URUxfT1VUUFVUX0hETUkpCj4gwqAJCWludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoaW50ZWxf ZW5jb2RlciwKPiDCoAkJCQkJwqDCoGNydGMtPmNvbmZpZy0KPiA+aGFzX2hkbWlfc2luaywKPiDC oAkJCQkJwqDCoCZjcnRjLT5jb25maWctCj4gPmJhc2UuYWRqdXN0ZWRfbW9kZSwKPiDCoAkJCQkJ wqDCoGNydGMtPmNvbmZpZy0KPiA+c2hhcmVkX2RwbGwpOwo+IC0JfQo+ICsKPiDCoH0KPiDCoAo+ IMKgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl cgo+ICppbnRlbF9lbmNvZGVyLAo+IEBAIC0yNDMyLDYgKzI0NTksNjggQEAgaW50ZWxfZGRpX2dl dF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwCj4gKmludGVsX2RwLCBpbnQgY2xvY2spCj4gwqAJ cmV0dXJuIHBsbDsKPiDCoH0KPiDCoAo+ICtib29sCj4gK2ludGVsX2RkaV9saW5rX3RyYWluKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtYXhfbGlua19yYXRlLAo+ICsJCcKgwqDCoMKg wqB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0KQo+ICt7Cj4gKwlzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0KPiA+YXR0YWNoZWRfY29ubmVj dG9yOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3ItPmVuY29k ZXI7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItCj4gPmJhc2UuZGV2KTsKPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ICsJ c3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsKPiArCWludCBs aW5rX3JhdGUsIGxpbmtfcmF0ZV9pbmRleDsKPiArCXVpbnQ4X3QgbGFuZV9jb3VudDsKPiArCWlu dCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7fTsKPiArCWJvb2wgcmV0 ID0gZmFsc2U7Cj4gKwo+ICsJbGlua19yYXRlX2luZGV4ID0gaW50ZWxfZHBfbGlua19yYXRlX2lu ZGV4KGludGVsX2RwLAo+IGNvbW1vbl9yYXRlcywKPiArCQkJCQkJwqDCoMKgbWF4X2xpbmtfcmF0 ZSk7Cj4gKwlpZiAobGlua19yYXRlX2luZGV4IDwgMCkgewo+ICsJCURSTV9FUlJPUigiSW52YWxp ZCBMaW5rIFJhdGVcbiIpOwo+ICsJCXJldHVybiBmYWxzZTsKPiArCX0KPiArCWZvciAobGFuZV9j b3VudCA9IG1heF9sYW5lX2NvdW50OyBsYW5lX2NvdW50ID4gMDsgbGFuZV9jb3VudAo+ID4+PSAx KSB7Cj4gKwkJZm9yICg7IGxpbmtfcmF0ZV9pbmRleCA+PSAwOyBsaW5rX3JhdGVfaW5kZXggLS0p IHsKPiArCQkJbGlua19yYXRlID0gY29tbW9uX3JhdGVzW2xpbmtfcmF0ZV9pbmRleF07Cj4gKwkJ CXBsbCA9IGludGVsX2RkaV9nZXRfbGlua19kcGxsKGludGVsX2RwLAo+IGxpbmtfcmF0ZSk7Cj4g KwkJCWlmIChwbGwgPT0gTlVMTCkgewo+ICsJCQkJRFJNX0VSUk9SKCJDb3VsZCBub3QgZmluZCBE UExMIGZvcgo+IGxpbmsgIgo+ICsJCQkJCcKgwqAidHJhaW5pbmcuXG4iKTsKPiArCQkJCXJldHVy biBmYWxzZTsKPiArCQkJfQo+ICsJCQl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+ICsJ CQlwbGwtPmZ1bmNzLmVuYWJsZShkZXZfcHJpdiwgcGxsKTsKPiArCj4gKwkJCWludGVsX2RwX3Nl dF9saW5rX3BhcmFtcyhpbnRlbF9kcCwKPiBsaW5rX3JhdGUsCj4gKwkJCQkJCcKgbGFuZV9jb3Vu dCwKPiBsaW5rX21zdCk7Cj4gKwo+ICsJCQlpbnRlbF9kZGlfY2xrX3NlbGVjdChlbmNvZGVyLCBw bGwpOwo+ICsJCQlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIpOwo+ICsJCQlp bnRlbF9kZGlfaW5pdF9kcF9idWZfcmVnKGVuY29kZXIpOwo+ICsJCQlpbnRlbF9kcF9zaW5rX2Rw bXMoaW50ZWxfZHAsCj4gRFJNX01PREVfRFBNU19PTik7Cj4gKwkJCXJldCA9IGludGVsX2RwX3N0 YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJYnJlYWs7Cj4g Kwo+ICsJCQkvKiBEaXNhYmxlIHBvcnQgZm9sbG93ZWQgYnkgUExMIGZvciBuZXh0Cj4gcmV0cnkv Y2xlYW4gdXAgKi8KPiArCQkJaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyLCBOVUxMLCBO VUxMKTsKPiArCQkJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ICsJCQlwbGwt PmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ICsJCX0KPiArCQlpZiAocmV0KSB7Cj4gKwkJCURS TV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgc3VjY2Vzc2Z1bCBhdAo+IGxpbmsgcmF0ZTogIgo+ ICsJCQkJwqDCoMKgwqDCoMKgIiVkIGxhbmU6JWRcbiIsIGxpbmtfcmF0ZSwKPiBsYW5lX2NvdW50 KTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJfQo+ICsJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWlu KGludGVsX2RwKTsKPiArCj4gKwlpZiAoIWxhbmVfY291bnQpCj4gKwkJRFJNX0VSUk9SKCJMaW5r IFRyYWluaW5nIEZhaWxlZFxuIik7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiDCoHZv aWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQp Cj4gwqB7Cj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShk ZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNzVhYzYyZi4uMTM3ODExNiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0xNDQzLDYgKzE0NDMsMjEgQEAgaW50 ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAKPiAqaW50ZWxfZHApCj4gwqAJcmV0 dXJuIHJhdGVzW2xlbiAtIDFdOwo+IMKgfQo+IMKgCj4gK2ludCBpbnRlbF9kcF9saW5rX3JhdGVf aW5kZXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50Cj4gKmNvbW1vbl9yYXRlcywKPiAr CQkJwqDCoMKgwqDCoGludCBsaW5rX3JhdGUpCj4gK3sKPiArCWludCBjb21tb25fbGVuOwo+ICsJ aW50IGluZGV4Owo+ICsKPiArCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMoaW50 ZWxfZHAsIGNvbW1vbl9yYXRlcyk7Cj4gKwlmb3IgKGluZGV4ID0gY29tbW9uX2xlbiAtIDE7IGlu ZGV4ID49IDA7IGluZGV4LS0pIHsKPiArCQlpZiAobGlua19yYXRlID09IGNvbW1vbl9yYXRlc1tp bmRleF0pCj4gKwkJCXJldHVybiBpbmRleDsKPiArCX0KPiArCj4gKwlyZXR1cm4gLTE7Cj4gK30K PiArCj4gwqBpbnQgaW50ZWxfZHBfcmF0ZV9zZWxlY3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgaW50IHJhdGUpCj4gwqB7Cj4gwqAJcmV0dXJuIHJhdGVfdG9faW5kZXgocmF0ZSwgaW50ZWxf ZHAtPnNpbmtfcmF0ZXMpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9saW5rX3RyYWluaW5nLmMKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xp bmtfdHJhaW5pbmcuYwo+IGluZGV4IGM0MzhiMDIuLmYxZTA4ZjAgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gQEAgLTMxMyw5ICszMTMs MTUgQEAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwCj4gKmlu dGVsX2RwKQo+IMKgCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElTQUJMRSk7Cj4gwqB9Cj4gwqAK PiAtdm9pZAo+ICtib29sCj4gwqBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gwqB7Cj4gLQlpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3Jl Y292ZXJ5KGludGVsX2RwKTsKPiAtCWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVh bGl6YXRpb24oaW50ZWxfZHApOwo+ICsJYm9vbCByZXQ7Cj4gKwo+ICsJaWYgKGludGVsX2RwX2xp bmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApKSB7Cj4gKwkJcmV0ID0KPiBpbnRl bF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPiArCQlp ZiAocmV0KQo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCXJldHVybiBmYWxzZTsKPiDCoH0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggY2E1MWUxYS4uNWI5N2E3ZDQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xMTYwLDYgKzExNjAsOCBAQCB2b2lk IGludGVsX2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIKPiAqZW5jb2RlciwKPiDC oAkJCcKgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiDCoHZvaWQgaW50 ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbAo+ IHN0YXRlKTsKPiDCoHVpbnQzMl90IGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApOwo+ICtib29sIGludGVsX2RkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsIGludAo+IG1heF9saW5rX3JhdGUsCj4gKwkJCcKgwqB1aW50OF90IG1heF9sYW5l X2NvdW50LCBib29sIGxpbmtfbXN0KTsKPiDCoHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqaW50 ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwCj4gKmludGVsX2RwLAo+IMKgCQkJ CQkJwqDCoGludCBjbG9jayk7Cj4gwqB1bnNpZ25lZCBpbnQgaW50ZWxfZmJfYWxpZ25faGVpZ2h0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gQEAgLTEzODEsNyArMTM4Myw3IEBAIGJvb2wgaW50 ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0Cj4gaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9k aWdfcG9ydCwKPiDCoHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gwqAJCQnCoMKgwqDCoMKgwqBpbnQgbGlua19yYXRlLCB1aW50OF90IGxh bmVfY291bnQsCj4gwqAJCQnCoMKgwqDCoMKgwqBib29sIGxpbmtfbXN0KTsKPiAtdm9pZCBpbnRl bF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ICtib29s IGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4g wqB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKPiDCoHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs IGludCBtb2RlKTsKPiDCoHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1Y3QgZHJtX2Vu Y29kZXIgKmVuY29kZXIpOwo+IEBAIC0xNDAzLDYgKzE0MDUsOCBAQCB2b2lkIGludGVsX2RwX2Fk ZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcAo+ICppbnRlbF9kcCwgc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvCj4gwqB2b2lkIGludGVsX2RwX21zdF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+IMKgdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwo+IMKgaW50IGludGVsX2RwX21heF9saW5rX3JhdGUoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCk7Cj4gK2ludCBpbnRlbF9kcF9saW5rX3JhdGVfaW5kZXgoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgaW50Cj4gKmNvbW1vbl9yYXRlcywKPiArCQkJwqDCoMKgwqDCoGludCBsaW5rX3Jh dGUpOwo+IMKgaW50IGludGVsX2RwX3JhdGVfc2VsZWN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsIGludCByYXRlKTsKPiDCoHZvaWQgaW50ZWxfZHBfaG90X3BsdWcoc3RydWN0IGludGVsX2Vu Y29kZXIgKmludGVsX2VuY29kZXIpOwo+IMKgdm9pZCBpbnRlbF9wb3dlcl9zZXF1ZW5jZXJfcmVz ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKLS0gCk1pa2EgS2Fob2xhIC0g SW50ZWwgT1RDCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK