From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Bride Subject: Re: [PATCH v2 11/14] drm/i915: Fallback to lower link rate and lane count during link training Date: Wed, 7 Sep 2016 09:47:21 -0700 Message-ID: <20160907164721.GB29025@shiv> References: <1472767699-31211-12-git-send-email-manasi.d.navare@intel.com> <1473207238-3490-3-git-send-email-manasi.d.navare@intel.com> <1473241669.28727.22.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTPS id 708B56E925 for ; Wed, 7 Sep 2016 16:48:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1473241669.28727.22.camel@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Mika Kahola Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBTZXAgMDcsIDIwMTYgYXQgMTI6NDc6NDlQTSArMDMwMCwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4gT24gVHVlLCAyMDE2LTA5LTA2IGF0IDE3OjEzIC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdy b3RlOgo+ID4gQWNjb3JkaW5nIHRvIHRoZSBEaXNwbGF5UG9ydCBTcGVjLCBpbiBjYXNlIG9mIENs b2NrIFJlY292ZXJ5IGZhaWx1cmUKPiA+IHRoZSBsaW5rIHRyYWluaW5nIHNlcXVlbmNlIHNob3Vs ZCBmYWxsIGJhY2sgdG8gdGhlIGxvd2VyIGxpbmsgcmF0ZQo+ID4gZm9sbG93ZWQgYnkgbG93ZXIg bGFuZSBjb3VudCB1bnRpbCBDUiBzdWNjZWVkcy4KPiA+IE9uIENSIHN1Y2Nlc3MsIHRoZSBzZXF1 ZW5jZSBwcm9jZWVkcyB3aXRoIENoYW5uZWwgRVEuCj4gPiBJbiBjYXNlIG9mIENoYW5uZWwgRVEg ZmFpbHVyZXMsIGl0IHNob3VsZCBmYWxsYmFjayB0bwo+ID4gbG93ZXIgbGluayByYXRlIGFuZCBs YW5lIGNvdW50IGFuZCBzdGFydCB0aGUgQ1IgcGhhc2UgYWdhaW4uCj4gPiAKPiA+IHYyOgo+ID4g KiBBZGQgYSBoZWxwZXIgZnVuY3Rpb24gdG8gcmV0dXJuIGluZGV4IG9mIHJlcXVlc3RlZCBsaW5r IHJhdGUKPiA+IGludG8gY29tbW9uX3JhdGVzIGFycmF5Cj4gPiAqIENoYW5nZWQgdGhlIGxpbmsg cmF0ZSBmYWxsYmFjayBsb29wIHRvIG1ha2UgdXNlCj4gPiBvZiBjb21tb25fcmF0ZXMgYXJyYXkg KE1pa2EgS2Fob2xhKQo+ID4gKiBDaGFuZ2VkIElOVEVMX0lORk8gdG8gSU5URUxfR0VOIChEYXZp ZCBXZWluZWhhbGwpCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFz aS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPiAtLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfCAxMjUKPiA+ICsrKysrKysr KysrKysrKysrKysrKysrLS0tCj4gPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8wqDCoDE1ICsrKysKPiA+IMKgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIHzCoMKgMTIgKystCj4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHzCoMKgwqA3ICstCj4gPiDCoDQgZmlsZXMgY2hhbmdlZCwgMTQ1IGluc2VydGlvbnMoKyksIDE0 IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGRpLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IGlu ZGV4IDY3YTZhMGIuLmUzOGJmNGIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiA+IEBAIC0xNjM0LDE5ICsxNjM0LDE4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsa19zZWxlY3Qoc3Ry dWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gwqAJfQo+ID4gwqB9Cj4gPiDCoAo+ ID4gLXN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ID4gK3N0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2VkcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+IMKgCQkJCcKgwqDCoMKgaW50IGxpbmtf cmF0ZSwgdWludDMyX3QKPiA+IGxhbmVfY291bnQsCj4gPiAtCQkJCcKgwqDCoMKgc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICpwbGwsCj4gPiAtCQkJCcKgwqDCoMKgYm9vbCBsaW5rX21zdCkKPiA+ ICsJCQkJwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCkKPiA+IMKgewo+ID4g wqAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+ YmFzZSk7Cj4gPiDCoAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGVuY29kZXItCj4gPiA+YmFzZS5kZXYpOwo+ID4gwqAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9k ZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVyKTsKPiA+IMKgCj4gPiDCoAlpbnRlbF9kcF9zZXRf bGlua19wYXJhbXMoaW50ZWxfZHAsIGxpbmtfcmF0ZSwgbGFuZV9jb3VudCwKPiA+IC0JCQkJwqBs aW5rX21zdCk7Cj4gPiAtCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9FRFApCj4g PiAtCQlpbnRlbF9lZHBfcGFuZWxfb24oaW50ZWxfZHApOwo+ID4gKwkJCQnCoGZhbHNlKTsKPiA+ ICsKPiA+ICsJaW50ZWxfZWRwX3BhbmVsX29uKGludGVsX2RwKTsKPiA+IMKgCj4gPiDCoAlpbnRl bF9kZGlfY2xrX3NlbGVjdChlbmNvZGVyLCBwbGwpOwo+ID4gwqAJaW50ZWxfcHJlcGFyZV9kcF9k ZGlfYnVmZmVycyhlbmNvZGVyKTsKPiA+IEBAIC0xNjU3LDYgKzE2NTYsMjkgQEAgc3RhdGljIHZv aWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gwqAJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gPiDCoH0K PiA+IMKgCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiArCQkJCcKgwqDCoMKgaW50IGxpbmtfcmF0ZSwgdWlu dDMyX3QKPiA+IGxhbmVfY291bnQsCj4gPiArCQkJCcKgwqDCoMKgc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsICpwbGwsCj4gPiArCQkJCcKgwqDCoMKgYm9vbCBsaW5rX21zdCkKPiA+ICt7Cj4gPiAr CXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJh c2UpOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItCj4gPiA+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29u ZmlnIHRtcF9wbGxfY29uZmlnOwo+ID4gKwo+ID4gKwkvKiBEaXNhYmxlIHRoZSBQTEwgYW5kIG9i dGFpbiB0aGUgUExMIGZvciBMaW5rIFRyYWluaW5nCj4gPiArCcKgKiB0aGF0IHN0YXJ0cyB3aXRo IGhpZ2hlc3QgbGluayByYXRlIGFuZCBsYW5lIGNvdW50Lgo+ID4gKwnCoCovCj4gPiArCXRtcF9w bGxfY29uZmlnID0gcGxsLT5jb25maWc7Cj4gPiArCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJp diwgcGxsKTsKPiA+ICsJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPiA+ICsKPiA+ICsJLyog SWYgTGluayBUcmFpbmluZyBmYWlscywgc2VuZCBhIHVldmVudCB0byBnZW5lcmF0ZSBhCj4gPiBo b3RwbHVnICovCj4gPiArCWlmICghKGludGVsX2RkaV9saW5rX3RyYWluKGludGVsX2RwLCBsaW5r X3JhdGUsIGxhbmVfY291bnQsCj4gPiBsaW5rX21zdCwKPiA+ICsJCQkJwqDCoMKgZmFsc2UpKSkK PiA+ICsJCWRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ ID4gKwlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ID4gK30KPiA+ICsKPiA+IMKgc3Rh dGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfaGRtaShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiA+IMKgCQkJCcKgwqDCoMKgwqDCoGJvb2wgaGFzX2hkbWlfc2luaywKPiA+IMKg CQkJCcKgwqDCoMKgwqDCoHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlCj4gPiAqYWRqdXN0ZWRfbW9k ZSwKPiA+IEBAIC0xNjkwLDIwICsxNzEyLDI2IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVf ZW5hYmxlKHN0cnVjdAo+ID4gaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKPiA+IMKgCXN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5jcnRjKTsKPiA+ IMKgCWludCB0eXBlID0gaW50ZWxfZW5jb2Rlci0+dHlwZTsKPiA+IMKgCj4gPiAtCWlmICh0eXBl ID09IElOVEVMX09VVFBVVF9EUCB8fCB0eXBlID09IElOVEVMX09VVFBVVF9FRFApIHsKPiA+ICsJ aWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkKPiA+ICsJCWludGVsX2RkaV9wcmVfZW5hYmxl X2VkcChpbnRlbF9lbmNvZGVyLAo+ID4gKwkJCQkJY3J0Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrLAo+ ID4gKwkJCQkJY3J0Yy0+Y29uZmlnLT5sYW5lX2NvdW50LAo+ID4gKwkJCQkJY3J0Yy0+Y29uZmln LT5zaGFyZWRfZHBsbCk7Cj4gPiArCj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9EUCkK PiA+IMKgCQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChpbnRlbF9lbmNvZGVyLAo+ID4gwqAJCQkJ CWNydGMtPmNvbmZpZy0+cG9ydF9jbG9jaywKPiA+IMKgCQkJCQljcnRjLT5jb25maWctPmxhbmVf Y291bnQsCj4gPiDCoAkJCQkJY3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbCwKPiA+IMKgCQkJCQlp bnRlbF9jcnRjX2hhc190eXBlKGNydGMtCj4gPiA+Y29uZmlnLAo+ID4gwqAJCQkJCQkJwqDCoMKg wqBJTlRFTF9PVQo+ID4gVFBVVF9EUF9NU1QpKTsKPiA+IC0JfQo+ID4gLQlpZiAodHlwZSA9PSBJ TlRFTF9PVVRQVVRfSERNSSkgewo+ID4gKwo+ID4gKwlpZiAodHlwZSA9PSBJTlRFTF9PVVRQVVRf SERNSSkKPiA+IMKgCQlpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKGludGVsX2VuY29kZXIsCj4g PiDCoAkJCQkJwqDCoGNydGMtPmNvbmZpZy0KPiA+ID5oYXNfaGRtaV9zaW5rLAo+ID4gwqAJCQkJ CcKgwqAmY3J0Yy0+Y29uZmlnLQo+ID4gPmJhc2UuYWRqdXN0ZWRfbW9kZSwKPiA+IMKgCQkJCQnC oMKgY3J0Yy0+Y29uZmlnLQo+ID4gPnNoYXJlZF9kcGxsKTsKPiA+IC0JfQo+ID4gKwo+ID4gwqB9 Cj4gPiDCoAo+ID4gwqBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKHN0cnVjdCBp bnRlbF9lbmNvZGVyCj4gPiAqaW50ZWxfZW5jb2RlciwKPiA+IEBAIC0yNDMxLDYgKzI0NTksODMg QEAgaW50ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwCj4gPiAqaW50ZWxfZHAs IGludCBjbG9jaykKPiA+IMKgCXJldHVybiBwbGw7Cj4gPiDCoH0KPiA+IMKgCj4gPiArYm9vbAo+ ID4gK2ludGVsX2RkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBt YXhfbGlua19yYXRlLAo+ID4gKwkJwqDCoMKgwqDCoHVpbnQ4X3QgbWF4X2xhbmVfY291bnQsIGJv b2wgbGlua19tc3QsIGJvb2wKPiA+IGlzX3VwZnJvbnQpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaW50 ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0KPiA+ID5hdHRhY2hlZF9jb25uZWN0 b3I7Cj4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNv ZGVyOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItCj4gPiA+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBs bDsKPiA+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsK PiA+ICsJaW50IGxpbmtfcmF0ZSwgbGlua19yYXRlX2luZGV4Owo+ID4gKwl1aW50OF90IGxhbmVf Y291bnQ7Cj4gPiArCWludCBjb21tb25fcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10gPSB7 fTsKPiA+ICsJYm9vbCByZXQgPSBmYWxzZTsKPiA+ICsKPiA+ICsJbGlua19yYXRlX2luZGV4ID0g aW50ZWxfZHBfbGlua19yYXRlX2luZGV4KGludGVsX2RwLAo+ID4gY29tbW9uX3JhdGVzLAo+ID4g KwkJCQkJCcKgwqDCoG1heF9saW5rX3JhdGUpOwo+ID4gKwlpZiAobGlua19yYXRlX2luZGV4IDwg MCkgewo+ID4gKwkJRFJNX0VSUk9SKCJJbnZhbGlkIExpbmsgUmF0ZVxuIik7Cj4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gPiArCX0KPiA+ICsJZm9yIChsYW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQ7 IGxhbmVfY291bnQgPiAwOyBsYW5lX2NvdW50Cj4gPiA+Pj0gMSkgewo+ID4gKwkJZm9yIChsaW5r X3JhdGUgPSBjb21tb25fcmF0ZXNbbGlua19yYXRlX2luZGV4XTsKPiA+ICsJCcKgwqDCoMKgwqBs aW5rX3JhdGVfaW5kZXggPj0gMDsgbGlua19yYXRlX2luZGV4IC0tKSB7Cj4gPiArCQkJcGxsID0g aW50ZWxfZGRpX2dldF9saW5rX2RwbGwoaW50ZWxfZHAsCj4gPiBsaW5rX3JhdGUpOwo+ID4gKwkJ CWlmIChwbGwgPT0gTlVMTCkgewo+ID4gKwkJCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBmaW5kIERQ TEwgZm9yCj4gPiBsaW5rICIKPiA+ICsJCQkJCcKgwqAidHJhaW5pbmcuXG4iKTsKPiA+ICsJCQkJ cmV0dXJuIGZhbHNlOwo+ID4gKwkJCX0KPiA+ICsJCQl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29u ZmlnOwo+ID4gKwkJCXBsbC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gKwo+ID4g KwkJCWludGVsX2RwX3NldF9saW5rX3BhcmFtcyhpbnRlbF9kcCwKPiA+IGxpbmtfcmF0ZSwKPiA+ ICsJCQkJCQnCoGxhbmVfY291bnQsCj4gPiBsaW5rX21zdCk7Cj4gPiArCj4gPiArCQkJaW50ZWxf ZGRpX2Nsa19zZWxlY3QoZW5jb2RlciwgcGxsKTsKPiA+ICsJCQlpbnRlbF9wcmVwYXJlX2RwX2Rk aV9idWZmZXJzKGVuY29kZXIpOwo+ID4gKwkJCWludGVsX2RkaV9pbml0X2RwX2J1Zl9yZWcoZW5j b2Rlcik7Cj4gPiArCQkJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLAo+ID4gRFJNX01PREVf RFBNU19PTik7Cj4gPiArCQkJcmV0ID0gaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9k cCk7Cj4gPiArCQkJaWYgKHJldCkKPiA+ICsJCQkJYnJlYWs7Cj4gPiArCj4gPiArCQkJLyogRGlz YWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBmb3IgbmV4dAo+ID4gcmV0cnkvY2xlYW4gdXAgKi8K PiA+ICsJCQlpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKGVuY29kZXIsIE5VTEwsIE5VTEwpOwo+ID4g KwkJCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsKPiA+ICsJCQlwbGwtPmNvbmZp ZyA9IHRtcF9wbGxfY29uZmlnOwo+ID4gKwkJfQo+ID4gKwkJaWYgKHJldCkgewo+ID4gKwkJCURS TV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgc3VjY2Vzc2Z1bCBhdAo+ID4gbGluayByYXRlOiAi Cj4gPiArCQkJCcKgwqDCoMKgwqDCoCIlZCBsYW5lOiVkXG4iLCBsaW5rX3JhdGUsCj4gPiBsYW5l X2NvdW50KTsKPiA+ICsJCQlicmVhazsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwlpbnRlbF9kcF9z dG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4gKwo+ID4gKwlpZiAoaXNfdXBmcm9udCkgewo+ ID4gKwkJRFJNX0RFQlVHX0tNUygiVXBmcm9udCBsaW5rIHRyYWluICVzOiBsaW5rX2Nsb2NrOiVk Cj4gPiBsYW5lczolZFxuIiwKPiA+ICsJCQnCoMKgwqDCoMKgwqByZXQgPyAiUGFzc2VkIiA6ICJG YWlsZWQiLAo+ID4gKwkJCcKgwqDCoMKgwqDCoGxpbmtfcmF0ZSwgbGFuZV9jb3VudCk7Cj4gPiAr CQkvKiBEaXNhYmxlIHBvcnQgZm9sbG93ZWQgYnkgUExMIGZvciBuZXh0IHJldHJ5L2NsZWFuCj4g PiB1cCAqLwo+ID4gKwkJaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyLCBOVUxMLCBOVUxM KTsKPiA+ICsJCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsKPiA+ICsJCXBsbC0+ Y29uZmlnID0gdG1wX3BsbF9jb25maWc7Cj4gSW4gYSBjYXNlIHdoZXJlIGxpbmsgdHJhaW5pbmcg d2FzIHN1Y2Nlc3NmdWwsIEkgZ3Vlc3Mgd2UgY291bGQgbGVhdmUKPiB0aGUgcG9ydCBvbi4gSXMg dGhlcmUgYSByZWFzb24gd2h5IHdlIHNob3VsZCBkbyBvdGhlcndpc2U/CgpZZXMuICBUaGUgd2hv bGUgaWRlYSB3aXRoIHVwZnJvbnQgaXMgdG8gaGF2ZSBpdCBiZSBzdGF0ZSBuZXV0cmFsCndpdGgg cmVzcGVjdCB0byB0aGUgSFcsIHNvIHdlIHRyeSB0byB1bmRvIGFueSBjb25maWd1cmF0aW9uCmNo YW5nZXMgdGhhdCB3ZSBtYWtlIGFzIGEgcGFydCBvZiB1cGZyb250IG90aGVyIHRoYW4gc3Rvd2lu Zwphd2F5IHRoZSBsYW5lIGNvdW50IGFuZCBsaW5rIGJhbmR3aWR0aCB0aGF0IHdlIHRyYWluZWQg YXQuCgpKaW0KCgo+IAo+ID4gKwkJaWYgKHJldCkgewo+ID4gKwkJCS8qIFNhdmUgdGhlIHVwZnJv bnQgdmFsdWVzICovCj4gPiArCQkJaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250ID0gbGFuZV9j b3VudDsKPiA+ICsJCQlpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250ID0gbGlua19yYXRl Owo+IE15IGNvbXBpbGVyIHdhc24ndCByZWFsbHkgYSBiaWcgZmFuIG9mIHRoZXNlIG5ldyBtZW1i ZXJzIGluIGEgaW50ZWxfZHAKPiBzdHJ1Y3Qgc28gSSB0aGVzZSBuZWVkcyB0byBiZSBkZWZpbmVk IGluIGludGVsX2Rydi5oCj4gCj4gZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmM6IElu IGZ1bmN0aW9uIOKAmGludGVsX2RkaV9saW5rX3RyYWlu4oCZOgo+IGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jOjI1Mjg6MTI6IGVycm9yOiDigJhzdHJ1Y3QgaW50ZWxfZHDigJkgaGFz Cj4gbm8gbWVtYmVyIG5hbWVkIOKAmG1heF9sYW5lc191cGZyb2504oCZCj4gwqDCoMKgwqBpbnRl bF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQgPSBsYW5lX2NvdW50Owo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoF4KPiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYzoyNTI5OjEyOiBlcnJv cjog4oCYc3RydWN0IGludGVsX2Rw4oCZIGhhcwo+IG5vIG1lbWJlciBuYW1lZCDigJhtYXhfbGlu a19yYXRlX3VwZnJvbnTigJkKPiAKPiDCoMKgwqDCoGludGVsX2RwLT5tYXhfbGlua19yYXRlX3Vw ZnJvbnQgPSBsaW5rX3JhdGU7Cj4gPiArCQl9Cj4gPiArCX0KPiA+ICsKPiA+ICsJaWYgKCFsYW5l X2NvdW50KQo+ID4gKwkJRFJNX0VSUk9SKCJMaW5rIFRyYWluaW5nIEZhaWxlZFxuIik7Cj4gPiAr Cj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gwqB2b2lkIGludGVsX2RkaV9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+ID4gwqB7Cj4gPiDCoAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCBkZmRiZTY1Li4zOTFlMzg0IDEwMDY0NAo+ ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTE0NDMsNiArMTQ0MywyMSBAQCBpbnRl bF9kcF9tYXhfbGlua19yYXRlKHN0cnVjdCBpbnRlbF9kcAo+ID4gKmludGVsX2RwKQo+ID4gwqAJ cmV0dXJuIHJhdGVzW2xlbiAtIDFdOwo+ID4gwqB9Cj4gPiDCoAo+ID4gK2ludCBpbnRlbF9kcF9s aW5rX3JhdGVfaW5kZXgoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50Cj4gPiAqY29tbW9u X3JhdGVzLAo+ID4gKwkJCcKgwqDCoMKgwqBpbnQgbGlua19yYXRlKQo+ID4gK3sKPiA+ICsJaW50 IGNvbW1vbl9sZW47Cj4gPiArCWludCBpbmRleDsKPiA+ICsKPiA+ICsJY29tbW9uX2xlbiA9IGlu dGVsX2RwX2NvbW1vbl9yYXRlcyhpbnRlbF9kcCwgY29tbW9uX3JhdGVzKTsKPiA+ICsJZm9yIChp bmRleCA9IGNvbW1vbl9sZW4gLSAxOyBpbmRleCA+PSAwOyBpbmRleC0tKSB7Cj4gPiArCQlpZiAo bGlua19yYXRlID09IGNvbW1vbl9yYXRlc1tpbmRleF0pCj4gPiArCQkJcmV0dXJuIGluZGV4Owo+ ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiAtMTsKPiA+ICt9Cj4gPiArCj4gPiDCoGludCBpbnRl bF9kcF9yYXRlX3NlbGVjdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcmF0ZSkKPiA+ IMKgewo+ID4gwqAJcmV0dXJuIHJhdGVfdG9faW5kZXgocmF0ZSwgaW50ZWxfZHAtPnNpbmtfcmF0 ZXMpOwo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtf dHJhaW5pbmcuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWlu aW5nLmMKPiA+IGluZGV4IDBmYjg0NWQuLjcwNWRiZDEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gQEAgLTMwOSw5ICszMDks MTUgQEAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwCj4gPiAq aW50ZWxfZHApCj4gPiDCoAkJCQlEUF9UUkFJTklOR19QQVRURVJOX0RJU0FCTEUpOwo+ID4gwqB9 Cj4gPiDCoAo+ID4gLXZvaWQKPiA+ICtib29sCj4gPiDCoGludGVsX2RwX3N0YXJ0X2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+IMKgewo+ID4gLQlpbnRlbF9kcF9saW5r X3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsKPiA+IC0JaW50ZWxfZHBfbGlua190 cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9kcCk7Cj4gPiArCWJvb2wgcmV0Owo+ ID4gKwo+ID4gKwlpZiAoaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRl bF9kcCkpIHsKPiA+ICsJCXJldCA9Cj4gPiBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxf ZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPiA+ICsJCWlmIChyZXQpCj4gPiArCQkJcmV0dXJuIHRy dWU7Cj4gPiArCX0KPiA+ICsJcmV0dXJuIGZhbHNlOwo+ID4gwqB9Cj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiA+IGluZGV4IGU1YmM5NzYuLjkwZTdiMTUgMTAwNjQ0Cj4gPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IEBAIC0xMTYwLDYgKzExNjAsOSBAQCB2b2lkIGludGVs X2RkaV9jbG9ja19nZXQoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ICplbmNvZGVyLAo+ID4gwqAJ CQnCoHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyk7Cj4gPiDCoHZvaWQgaW50 ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbAo+ ID4gc3RhdGUpOwo+ID4gwqB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxf ZHAgKmludGVsX2RwKTsKPiA+ICtib29sIGludGVsX2RkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGludAo+ID4gbWF4X2xpbmtfcmF0ZSwKPiA+ICsJCQnCoMKgdWludDhf dCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCwKPiA+ICsJCQnCoMKgYm9vbCBpc191cGZy b250KTsKPiA+IMKgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfZ2V0X2xpbmtf ZHBsbChzdHJ1Y3QgaW50ZWxfZHAKPiA+ICppbnRlbF9kcCwKPiA+IMKgCQkJCQkJwqDCoGludCBj bG9jayk7Cj4gPiDCoHVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPiA+IEBAIC0xMzgxLDcgKzEzODQsNyBAQCBib29sIGludGVsX2RwX2lu aXRfY29ubmVjdG9yKHN0cnVjdAo+ID4gaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCwKPiA+IMKgdm9pZCBpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKPiA+IMKgCQkJwqDCoMKgwqDCoMKgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBsYW5l X2NvdW50LAo+ID4gwqAJCQnCoMKgwqDCoMKgwqBib29sIGxpbmtfbXN0KTsKPiA+IC12b2lkIGlu dGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gPiAr Ym9vbCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Owo+ID4gwqB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPiA+IMKgdm9pZCBpbnRlbF9kcF9zaW5rX2RwbXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwgaW50IG1vZGUpOwo+ID4gwqB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3Ry dWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+IEBAIC0xNDAzLDYgKzE0MDYsOCBAQCB2b2lk IGludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcAo+ID4gKmludGVsX2RwLCBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY28KPiA+IMKgdm9pZCBpbnRlbF9kcF9tc3Rfc3VzcGVuZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiA+IMKgdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1lKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4gwqBpbnQgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ICtpbnQgaW50ZWxfZHBfbGlua19yYXRlX2lu ZGV4KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludAo+ID4gKmNvbW1vbl9yYXRlcywKPiA+ ICsJCQnCoMKgwqDCoMKgaW50IGxpbmtfcmF0ZSk7Cj4gPiDCoGludCBpbnRlbF9kcF9yYXRlX3Nl bGVjdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcmF0ZSk7Cj4gPiDCoHZvaWQgaW50 ZWxfZHBfaG90X3BsdWcoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpOwo+ID4g wqB2b2lkIGludGVsX3Bvd2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwo+IC0tIAo+IE1pa2EgS2Fob2xhIC0gSW50ZWwgT1RDCj4gCj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFp bGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxp c3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=