From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v5 1/5] drm/i915: Fallback to lower link rate and lane count during link training Date: Thu, 15 Sep 2016 12:56:28 -0700 Message-ID: <20160915195628.GC15527@intel.com> References: <1473815299-26961-1-git-send-email-manasi.d.navare@intel.com> <1473815299-26961-2-git-send-email-manasi.d.navare@intel.com> <1473840913.20751.20.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 558726E926 for ; Thu, 15 Sep 2016 19:56:13 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1473840913.20751.20.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 T24gV2VkLCBTZXAgMTQsIDIwMTYgYXQgMTE6MTU6MTNBTSArMDMwMCwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4gT24gVHVlLCAyMDE2LTA5LTEzIGF0IDE4OjA4IC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdy b3RlOgo+ID4gQWNjb3JkaW5nIHRvIHRoZSBEaXNwbGF5UG9ydCBTcGVjLCBpbiBjYXNlIG9mIENs b2NrIFJlY292ZXJ5IGZhaWx1cmUKPiA+IHRoZSBsaW5rIHRyYWluaW5nIHNlcXVlbmNlIHNob3Vs ZCBmYWxsIGJhY2sgdG8gdGhlIGxvd2VyIGxpbmsgcmF0ZQo+ID4gZm9sbG93ZWQgYnkgbG93ZXIg bGFuZSBjb3VudCB1bnRpbCBDUiBzdWNjZWVkcy4KPiA+IE9uIENSIHN1Y2Nlc3MsIHRoZSBzZXF1 ZW5jZSBwcm9jZWVkcyB3aXRoIENoYW5uZWwgRVEuCj4gPiBJbiBjYXNlIG9mIENoYW5uZWwgRVEg ZmFpbHVyZXMsIGl0IHNob3VsZCBmYWxsYmFjayB0bwo+ID4gbG93ZXIgbGluayByYXRlIGFuZCBs YW5lIGNvdW50IGFuZCBzdGFydCB0aGUgQ1IgcGhhc2UgYWdhaW4uCj4gPiAKPiA+IHY1Ogo+ID4g KiBSZXNldCB0aGUgbGluayByYXRlIGluZGV4IHRvIHRoZSBtYXggbGluayByYXRlIGluZGV4Cj4g PiBiZWZvcmUgbG93ZXJpbmcgdGhlIGxhbmUgY291bnQgKEphbmkgTmlrdWxhKQo+ID4gKiBVc2Ug dGhlIHBhcmFkaWdtIGZvciBsb29wIGluIGludGVsX2RwX2xpbmtfcmF0ZV9pbmRleAo+ID4gdjQ6 Cj4gPiAqIEZpeGVkIHRoZSBsaW5rIHJhdGUgZmFsbGJhY2sgbG9vcCAoTWFuYXNpIE5hdmFyZSkK PiA+IHYzOgo+ID4gKiBGaXhlZCBzb21lIHJlYmFzZSBpc3N1ZXMgKE1pa2EgS2Fob2xhKQo+ID4g djI6Cj4gPiAqIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0byByZXR1cm4gaW5kZXggb2YgcmVxdWVz dGVkIGxpbmsgcmF0ZQo+ID4gaW50byBjb21tb25fcmF0ZXMgYXJyYXkKPiA+ICogQ2hhbmdlZCB0 aGUgbGluayByYXRlIGZhbGxiYWNrIGxvb3AgdG8gbWFrZSB1c2UKPiA+IG9mIGNvbW1vbl9yYXRl cyBhcnJheSAoTWlrYSBLYWhvbGEpCj4gPiAqIENoYW5nZWQgSU5URUxfSU5GTyB0byBJTlRFTF9H RU4gKERhdmlkIFdlaW5laGFsbCkKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFy ZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gwqBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB8IDExMgo+ID4g KysrKysrKysrKysrKysrKysrKysrKystLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHzCoMKgMTUgKysrKwo+ID4gwqBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfMKgwqAxMiArKy0K PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfMKgwqDCoDYgKy0KPiA+IMKgNCBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9u cygrKSwgMTQgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku Ywo+ID4gaW5kZXggODA2NWE1Zi4uNGQzYTkzMSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYwo+ID4gQEAgLTE2MzcsMTkgKzE2MzcsMTggQEAgdm9pZCBpbnRlbF9kZGlfY2xrX3Nl bGVjdChzdHJ1Y3QKPiA+IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiDCoAl9Cj4gPiDCoH0K PiA+IMKgCj4gPiAtc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGlu dGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFi bGVfZWRwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gwqAJCQkJwqDCoMKgwqBp bnQgbGlua19yYXRlLCB1aW50MzJfdAo+ID4gbGFuZV9jb3VudCwKPiA+IC0JCQkJwqDCoMKgwqBz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiA+IC0JCQkJwqDCoMKgwqBib29sIGxpbmtf bXN0KQo+ID4gKwkJCQnCoMKgwqDCoHN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsKQo+ID4g wqB7Cj4gPiDCoAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZl bmNvZGVyLT5iYXNlKTsKPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUoZW5jb2Rlci0KPiA+ID5iYXNlLmRldik7Cj4gPiDCoAllbnVtIHBvcnQgcG9ydCA9 IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVuY29kZXIpOwo+ID4gwqAKPiA+IMKgCWludGVs X2RwX3NldF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgbGlua19yYXRlLCBsYW5lX2NvdW50LAo+ID4g LQkJCQnCoGxpbmtfbXN0KTsKPiA+IC0JaWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVU X0VEUCkKPiA+IC0JCWludGVsX2VkcF9wYW5lbF9vbihpbnRlbF9kcCk7Cj4gPiArCQkJCcKgZmFs c2UpOwo+ID4gKwo+ID4gKwlpbnRlbF9lZHBfcGFuZWxfb24oaW50ZWxfZHApOwo+ID4gwqAKPiA+ IMKgCWludGVsX2RkaV9jbGtfc2VsZWN0KGVuY29kZXIsIHBsbCk7Cj4gPiDCoAlpbnRlbF9wcmVw YXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIpOwo+ID4gQEAgLTE2NjAsNiArMTY1OSwyOCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QKPiA+IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiDCoAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsK PiA+IMKgfQo+ID4gwqAKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkJwqDCoMKgwqBpbnQgbGlua19y YXRlLCB1aW50MzJfdAo+ID4gbGFuZV9jb3VudCwKPiA+ICsJCQkJwqDCoMKgwqBzdHJ1Y3QgaW50 ZWxfc2hhcmVkX2RwbGwgKnBsbCwKPiA+ICsJCQkJwqDCoMKgwqBib29sIGxpbmtfbXN0KQo+ID4g K3sKPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5j b2Rlci0+YmFzZSk7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRv X2k5MTUoZW5jb2Rlci0KPiA+ID5iYXNlLmRldik7Cj4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbF9jb25maWcgdG1wX3BsbF9jb25maWc7Cj4gPiArCj4gPiArCS8qIERpc2FibGUgdGhlIFBM TCBhbmQgb2J0YWluIHRoZSBQTEwgZm9yIExpbmsgVHJhaW5pbmcKPiA+ICsJwqAqIHRoYXQgc3Rh cnRzIHdpdGggaGlnaGVzdCBsaW5rIHJhdGUgYW5kIGxhbmUgY291bnQuCj4gPiArCcKgKi8KPiA+ ICsJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZpZzsKPiA+ICsJcGxsLT5mdW5jcy5kaXNhYmxl KGRldl9wcml2LCBwbGwpOwo+ID4gKwlwbGwtPmNvbmZpZy5jcnRjX21hc2sgPSAwOwo+ID4gKwo+ ID4gKwkvKiBJZiBMaW5rIFRyYWluaW5nIGZhaWxzLCBzZW5kIGEgdWV2ZW50IHRvIGdlbmVyYXRl IGEKPiA+IGhvdHBsdWcgKi8KPiA+ICsJaWYgKCFpbnRlbF9kZGlfbGlua190cmFpbihpbnRlbF9k cCwgbGlua19yYXRlLCBsYW5lX2NvdW50LAo+ID4gbGlua19tc3QpKQo+ID4gKwkJZHJtX2ttc19o ZWxwZXJfaG90cGx1Z19ldmVudChlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiArCXBsbC0+Y29uZmln ID0gdG1wX3BsbF9jb25maWc7Cj4gPiArfQo+ID4gKwo+ID4gwqBzdGF0aWMgdm9pZCBpbnRlbF9k ZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gwqAJ CQkJwqDCoMKgwqDCoMKgYm9vbCBoYXNfaGRtaV9zaW5rLAo+ID4gwqAJCQkJwqDCoMKgwqDCoMKg c3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ICphZGp1c3RlZF9tb2RlLAo+ID4gQEAgLTE2OTMs MjAgKzE3MTQsMjYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGUoc3RydWN0Cj4g PiBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gwqAJc3RydWN0IGludGVsX2NydGMg KmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOwo+ID4gwqAJaW50IHR5cGUgPSBp bnRlbF9lbmNvZGVyLT50eXBlOwo+ID4gwqAKPiA+IC0JaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVU X0RQIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ID4gKwlpZiAodHlwZSA9PSBJTlRF TF9PVVRQVVRfRURQKQo+ID4gKwkJaW50ZWxfZGRpX3ByZV9lbmFibGVfZWRwKGludGVsX2VuY29k ZXIsCj4gPiArCQkJCQljcnRjLT5jb25maWctPnBvcnRfY2xvY2ssCj4gPiArCQkJCQljcnRjLT5j b25maWctPmxhbmVfY291bnQsCj4gPiArCQkJCQljcnRjLT5jb25maWctPnNoYXJlZF9kcGxsKTsK PiA+ICsKPiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RQKQo+ID4gwqAJCWludGVsX2Rk aV9wcmVfZW5hYmxlX2RwKGludGVsX2VuY29kZXIsCj4gPiDCoAkJCQkJY3J0Yy0+Y29uZmlnLT5w b3J0X2Nsb2NrLAo+ID4gwqAJCQkJCWNydGMtPmNvbmZpZy0+bGFuZV9jb3VudCwKPiA+IMKgCQkJ CQljcnRjLT5jb25maWctPnNoYXJlZF9kcGxsLAo+ID4gwqAJCQkJCWludGVsX2NydGNfaGFzX3R5 cGUoY3J0Yy0KPiA+ID5jb25maWcsCj4gPiDCoAkJCQkJCQnCoMKgwqDCoElOVEVMX09VCj4gPiBU UFVUX0RQX01TVCkpOwo+ID4gLQl9Cj4gPiAtCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1J KSB7Cj4gPiArCj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKQo+ID4gwqAJCWlu dGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoaW50ZWxfZW5jb2RlciwKPiA+IMKgCQkJCQnCoMKgY3J0 Yy0+Y29uZmlnLQo+ID4gPmhhc19oZG1pX3NpbmssCj4gPiDCoAkJCQkJwqDCoCZjcnRjLT5jb25m aWctCj4gPiA+YmFzZS5hZGp1c3RlZF9tb2RlLAo+ID4gwqAJCQkJCcKgwqBjcnRjLT5jb25maWct Cj4gPiA+c2hhcmVkX2RwbGwpOwo+ID4gLQl9Cj4gPiArCj4gPiDCoH0KPiA+IMKgCj4gPiDCoHN0 YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ ICppbnRlbF9lbmNvZGVyLAo+ID4gQEAgLTI0MzUsNiArMjQ2Miw3MSBAQCBpbnRlbF9kZGlfZ2V0 X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAKPiA+ICppbnRlbF9kcCwgaW50IGNsb2NrKQo+ID4g wqAJcmV0dXJuIHBsbDsKPiA+IMKgfQo+ID4gwqAKPiA+ICtib29sCj4gPiAraW50ZWxfZGRpX2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1heF9saW5rX3JhdGUsCj4g PiArCQnCoMKgwqDCoMKgdWludDhfdCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCkKPiA+ ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLQo+ ID4gPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIgPSBjb25uZWN0b3ItPmVuY29kZXI7Cj4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0KPiA+ID5iYXNlLmRldik7Cj4gPiArCXN0cnVjdCBp bnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29u ZmlnIHRtcF9wbGxfY29uZmlnOwo+ID4gKwlpbnQgbGlua19yYXRlLCBtYXhfbGlua19yYXRlX2lu ZGV4LCBsaW5rX3JhdGVfaW5kZXg7Cj4gPiArCXVpbnQ4X3QgbGFuZV9jb3VudDsKPiA+ICsJaW50 IGNvbW1vbl9yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXSA9IHt9Owo+ID4gKwlib29sIHJl dCA9IGZhbHNlOwo+ID4gKwo+ID4gKwltYXhfbGlua19yYXRlX2luZGV4ID0gaW50ZWxfZHBfbGlu a19yYXRlX2luZGV4KGludGVsX2RwLAo+ID4gY29tbW9uX3JhdGVzLAo+ID4gKwkJCQkJCcKgwqDC oG1heF9saW5rX3JhdGUpOwo+ID4gKwlpZiAobWF4X2xpbmtfcmF0ZV9pbmRleCA8IDApIHsKPiA+ ICsJCURSTV9FUlJPUigiSW52YWxpZCBMaW5rIFJhdGVcbiIpOwo+ID4gKwkJcmV0dXJuIGZhbHNl Owo+ID4gKwl9Cj4gPiArCWZvciAobGFuZV9jb3VudCA9IG1heF9sYW5lX2NvdW50OyBsYW5lX2Nv dW50ID4gMDsgbGFuZV9jb3VudAo+ID4gPj49IDEpIHsKPiA+ICsJCWZvciAobGlua19yYXRlX2lu ZGV4ID0gbWF4X2xpbmtfcmF0ZV9pbmRleDsKPiA+ICsJCcKgwqDCoMKgwqBsaW5rX3JhdGVfaW5k ZXggPj0gMDsgbGlua19yYXRlX2luZGV4LS0pIHsKPiA+ICsJCQlsaW5rX3JhdGUgPSBjb21tb25f cmF0ZXNbbGlua19yYXRlX2luZGV4XTsKPiA+ICsJCQlwbGwgPSBpbnRlbF9kZGlfZ2V0X2xpbmtf ZHBsbChpbnRlbF9kcCwKPiA+IGxpbmtfcmF0ZSk7Cj4gPiArCQkJaWYgKHBsbCA9PSBOVUxMKSB7 Cj4gPiArCQkJCURSTV9FUlJPUigiQ291bGQgbm90IGZpbmQgRFBMTCBmb3IKPiA+IGxpbmsgIgo+ ID4gKwkJCQkJwqDCoCJ0cmFpbmluZy5cbiIpOwo+IGNoZWNrcGF0Y2gucGwgZ2l2ZXMgYSB3YXJu aW5nOgo+IAo+IFdBUk5JTkc6IHF1b3RlZCBzdHJpbmcgc3BsaXQgYWNyb3NzIGxpbmVzCj4gIzIz MzogRklMRTogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmM6MjQ5MjoKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBE Uk1fRVJST1IoIkNvdWxkIG5vdCBmaW5kIERQTEwgZm9yIGxpbmsKPiAiCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAidHJhaW5pbmcuXG4iKTsKPiAKPiBJIHRoaW5rIHdlIGNvdWxkIHB1dCB0 aGlzIGVycm9yIG1lc3NhZ2UgaW50byBhIHNpbmdsZSBsaW5lLiBJbiB0aGlzCj4gY2FzZSwgdGhl IHRvb2wgd2FybnMgeW91IG9uIGV4Y2VlZGluZyB0aGUgODAgY2hhcmFjdGVyIGxpbWl0IGJ1dCB3 ZQo+IGJyZWFrIHRoYXQgcnVsZSBoZXJlIGFuZCB0aGVyZSBpbiBvdXIgZHJpdmVyIGFueXdheS4K ClllcywgSSBoYWQgYSBjaGF0IHdpdGggUm9kcmlnaSBhbmQgSmFuaSByZWdhcmRpbmcgdGhlIHNh bWUgdGhpbmcgZWFybGllci4KQmVjYXVzZSBldmVuIGlmIEkga2VlcCBpdCBvbmUgbGluZSwgdGhl IGNoZWNrcGF0Y2ggZ2l2ZXMgYSB3YXJuaW5nIG9mIGxpbmUKYmVpbmcgb3ZlciA4MCBjaGFycy4g V2hpY2ggb25lIHRoZXNlIHdhcm5pbmdzIGNhbiBiZSBzYWZlbHkgaWdub3JlZCBhbmQgd2hhdAp3 b3VsZCBiZSB0aGUgZ2VuZXJhbCBjb252ZW50aW9uIC0ga2VlcGluZyBpdCBsb25nZXIgdGhhbiA4 MCBjaGFycyBvciAKaGF2aW5nIHNwbGl0IHF1b3RlZCBzdHJpbmcuCgpNYW5hc2kKCj4gCj4gPiAr CQkJCXJldHVybiBmYWxzZTsKPiA+ICsJCQl9Cj4gPiArCQkJdG1wX3BsbF9jb25maWcgPSBwbGwt PmNvbmZpZzsKPiA+ICsJCQlwbGwtPmZ1bmNzLmVuYWJsZShkZXZfcHJpdiwgcGxsKTsKPiA+ICsK PiA+ICsJCQlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsCj4gPiBsaW5rX3JhdGUs Cj4gPiArCQkJCQkJwqBsYW5lX2NvdW50LAo+ID4gbGlua19tc3QpOwo+ID4gKwo+ID4gKwkJCWlu dGVsX2RkaV9jbGtfc2VsZWN0KGVuY29kZXIsIHBsbCk7Cj4gPiArCQkJaW50ZWxfcHJlcGFyZV9k cF9kZGlfYnVmZmVycyhlbmNvZGVyKTsKPiA+ICsJCQlpbnRlbF9kZGlfaW5pdF9kcF9idWZfcmVn KGVuY29kZXIpOwo+ID4gKwkJCWludGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwKPiA+IERSTV9N T0RFX0RQTVNfT04pOwo+ID4gKwkJCXJldCA9IGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50 ZWxfZHApOwo+ID4gKwkJCWlmIChyZXQpCj4gPiArCQkJCWJyZWFrOwo+ID4gKwo+ID4gKwkJCS8q IERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQKPiA+ICsJCQnCoCpyZXRyeS9j bGVhbiB1cAo+ID4gKwkJCcKgKi8KPiA+ICsJCQlpbnRlbF9kZGlfcG9zdF9kaXNhYmxlKGVuY29k ZXIsIE5VTEwsIE5VTEwpOwo+ID4gKwkJCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxs KTsKPiA+ICsJCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ID4gKwkJfQo+ID4gKwkJ aWYgKHJldCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgc3VjY2Vzc2Z1 bCBhdAo+ID4gbGluayByYXRlOiAiCj4gPiArCQkJCcKgwqDCoMKgwqDCoCIlZCBsYW5lOiVkXG4i LCBsaW5rX3JhdGUsCj4gPiBsYW5lX2NvdW50KTsKPiBTYW1lIHRoaW5nIGhlcmUuIE1heWJlCj4g Cj4gRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBzdWNjZXNzZnVsIGF0IGxpbmsgcmF0ZTog JWQgbGFuZTolZFxuIiwgCQo+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIGxpbmtfcmF0ZSwgbGFuZV9j b3VudCk7Cj4gCj4gPiAKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwlpbnRlbF9kcF9zdG9wX2xpbmtf dHJhaW4oaW50ZWxfZHApOwo+ID4gKwo+ID4gKwlpZiAoIWxhbmVfY291bnQpCj4gPiArCQlEUk1f RVJST1IoIkxpbmsgVHJhaW5pbmcgRmFpbGVkXG4iKTsKPiA+ICsKPiA+ICsJcmV0dXJuIHJldDsK PiA+ICt9Cj4gPiArCj4gPiDCoHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPiDCoHsKPiA+IMKgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiA+IGluZGV4IDc1YWM2MmYuLmJiOWRmMWUgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jCj4gPiBAQCAtMTQ0Myw2ICsxNDQzLDIxIEBAIGludGVsX2RwX21heF9saW5rX3JhdGUo c3RydWN0IGludGVsX2RwCj4gPiAqaW50ZWxfZHApCj4gPiDCoAlyZXR1cm4gcmF0ZXNbbGVuIC0g MV07Cj4gPiDCoH0KPiA+IMKgCj4gPiAraW50IGludGVsX2RwX2xpbmtfcmF0ZV9pbmRleChzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQKPiA+ICpjb21tb25fcmF0ZXMsCj4gPiArCQkJwqDC oMKgwqDCoGludCBsaW5rX3JhdGUpCj4gPiArewo+ID4gKwlpbnQgY29tbW9uX2xlbjsKPiA+ICsJ aW50IGluZGV4Owo+ID4gKwo+ID4gKwljb21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVz KGludGVsX2RwLCBjb21tb25fcmF0ZXMpOwo+ID4gKwlmb3IgKGluZGV4ID0gMDsgaW5kZXggPCBj b21tb25fbGVuOyBpbmRleCsrKSB7Cj4gPiArCQlpZiAobGlua19yYXRlID09IGNvbW1vbl9yYXRl c1tjb21tb25fbGVuIC0gaW5kZXggLQo+ID4gMV0pCj4gPiArCQkJcmV0dXJuIGNvbW1vbl9sZW4g LSBpbmRleCAtIDE7Cj4gPiArCX0KPiA+ICsKPiA+ICsJcmV0dXJuIC0xOwo+ID4gK30KPiA+ICsK PiA+IMKgaW50IGludGVsX2RwX3JhdGVfc2VsZWN0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAs IGludCByYXRlKQo+ID4gwqB7Cj4gPiDCoAlyZXR1cm4gcmF0ZV90b19pbmRleChyYXRlLCBpbnRl bF9kcC0+c2lua19yYXRlcyk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gaW5kZXggYzQzOGIwMi4uZjFlMDhmMCAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gPiBA QCAtMzEzLDkgKzMxMywxNSBAQCB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3Qg aW50ZWxfZHAKPiA+ICppbnRlbF9kcCkKPiA+IMKgCQkJCURQX1RSQUlOSU5HX1BBVFRFUk5fRElT QUJMRSk7Cj4gPiDCoH0KPiA+IMKgCj4gPiAtdm9pZAo+ID4gK2Jvb2wKPiA+IMKgaW50ZWxfZHBf c3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gwqB7Cj4gPiAt CWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApOwo+ID4gLQlp bnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPiA+ ICsJYm9vbCByZXQ7Cj4gPiArCj4gPiArCWlmIChpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2Nr X3JlY292ZXJ5KGludGVsX2RwKSkgewo+ID4gKwkJcmV0ID0KPiA+IGludGVsX2RwX2xpbmtfdHJh aW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApOwo+ID4gKwkJaWYgKHJldCkKPiA+ ICsJCQlyZXR1cm4gdHJ1ZTsKPiA+ICsJfQo+ID4gKwlyZXR1cm4gZmFsc2U7Cj4gPiDCoH0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggYWJlN2E0ZC4uNjljODA1MSAx MDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTExNjAsNiArMTE2MCw4 IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gKmVu Y29kZXIsCj4gPiDCoAkJCcKgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsK PiA+IMKgdm9pZCBpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRj ICpjcnRjLCBib29sCj4gPiBzdGF0ZSk7Cj4gPiDCoHVpbnQzMl90IGRkaV9zaWduYWxfbGV2ZWxz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gK2Jvb2wgaW50ZWxfZGRpX2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50Cj4gPiBtYXhfbGlua19yYXRlLAo+ID4g KwkJCcKgwqB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxpbmtfbXN0KTsKPiA+IMKgc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICppbnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChzdHJ1Y3QgaW50 ZWxfZHAKPiA+ICppbnRlbF9kcCwKPiA+IMKgCQkJCQkJwqDCoGludCBjbG9jayk7Cj4gPiDCoHVu c2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiA+IEBAIC0xMzgxLDcgKzEzODMsNyBAQCBib29sIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0 cnVjdAo+ID4gaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwKPiA+IMKgdm9pZCBp bnRlbF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+IMKg CQkJwqDCoMKgwqDCoMKgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBsYW5lX2NvdW50LAo+ID4gwqAJ CQnCoMKgwqDCoMKgwqBib29sIGxpbmtfbXN0KTsKPiA+IC12b2lkIGludGVsX2RwX3N0YXJ0X2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gPiArYm9vbCBpbnRlbF9kcF9z dGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gwqB2b2lkIGlu dGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+IMKg dm9pZCBpbnRlbF9kcF9zaW5rX2RwbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1v ZGUpOwo+ID4gwqB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyKTsKPiA+IEBAIC0xNDAzLDYgKzE0MDUsOCBAQCB2b2lkIGludGVsX2RwX2FkZF9w cm9wZXJ0aWVzKHN0cnVjdCBpbnRlbF9kcAo+ID4gKmludGVsX2RwLCBzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY28KPiA+IMKgdm9pZCBpbnRlbF9kcF9tc3Rfc3VzcGVuZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KTsKPiA+IMKgdm9pZCBpbnRlbF9kcF9tc3RfcmVzdW1lKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpOwo+ID4gwqBpbnQgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKTsKPiA+ICtpbnQgaW50ZWxfZHBfbGlua19yYXRlX2luZGV4KHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGludAo+ID4gKmNvbW1vbl9yYXRlcywKPiA+ICsJCQnCoMKgwqDCoMKg aW50IGxpbmtfcmF0ZSk7Cj4gPiDCoGludCBpbnRlbF9kcF9yYXRlX3NlbGVjdChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLCBpbnQgcmF0ZSk7Cj4gPiDCoHZvaWQgaW50ZWxfZHBfaG90X3BsdWco c3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpOwo+ID4gwqB2b2lkIGludGVsX3Bv d2VyX3NlcXVlbmNlcl9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ IC0tIAo+IE1pa2EgS2Fob2xhIC0gSW50ZWwgT1RDCj4gCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=