From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH 11/14] drm/i915: Fallback to lower link rate and lane count during link training Date: Tue, 6 Sep 2016 11:01:53 -0700 Message-ID: <20160906180153.GC3622@intel.com> References: <1472767699-31211-1-git-send-email-manasi.d.navare@intel.com> <1472767699-31211-12-git-send-email-manasi.d.navare@intel.com> <1472821220.25011.40.camel@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id C00416E2DE for ; Tue, 6 Sep 2016 18:01:55 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1472821220.25011.40.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 T24gRnJpLCBTZXAgMDIsIDIwMTYgYXQgMDQ6MDA6MjBQTSArMDMwMCwgTWlrYSBLYWhvbGEgd3Jv dGU6Cj4gT24gVGh1LCAyMDE2LTA5LTAxIGF0IDE1OjA4IC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdy b3RlOgo+ID4gQWNjb3JkaW5nIHRvIHRoZSBEaXNwbGF5UG9ydCBTcGVjLCBpbiBjYXNlIG9mIENs b2NrIFJlY292ZXJ5IGZhaWx1cmUKPiA+IHRoZSBsaW5rIHRyYWluaW5nIHNlcXVlbmNlIHNob3Vs ZCBmYWxsIGJhY2sgdG8gdGhlIGxvd2VyIGxpbmsgcmF0ZQo+ID4gZm9sbG93ZWQgYnkgbG93ZXIg bGFuZSBjb3VudCB1bnRpbCBDUiBzdWNjZWVkcy4KPiA+IE9uIENSIHN1Y2Nlc3MsIHRoZSBzZXF1 ZW5jZSBwcm9jZWVkcyB3aXRoIENoYW5uZWwgRVEuCj4gPiBJbiBjYXNlIG9mIENoYW5uZWwgRVEg ZmFpbHVyZXMsIGl0IHNob3VsZCBmYWxsYmFjayB0bwo+ID4gbG93ZXIgbGluayByYXRlIGFuZCBs YW5lIGNvdW50IGFuZCBzdGFydCB0aGUgQ1IgcGhhc2UgYWdhaW4uCj4gPiAKPiA+IFNpZ25lZC1v ZmYtYnk6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4gPiAtLS0K PiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmPCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgfCAxMDkKPiA+ICsrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyB8wqDCoDEyICsrLQo+ID4g wqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB8wqDCoMKgNCArLQo+ID4gwqAzIGZpbGVzIGNoYW5nZWQsIDExMCBpbnNlcnRpb25zKCsp LCAxNSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RkaS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4g PiBpbmRleCA2N2E2YTBiLi43OGQ2Njg3IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gPiBAQCAtMTYzNCwyOSArMTYzNCw1MCBAQCB2b2lkIGludGVsX2RkaV9jbGtfc2VsZWN0 KHN0cnVjdAo+ID4gaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+IMKgCX0KPiA+IMKgfQo+ID4g wqAKPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiA+ICtzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9l ZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiDCoAkJCQnCoMKgwqDCoGludCBs aW5rX3JhdGUsIHVpbnQzMl90Cj4gPiBsYW5lX2NvdW50LAo+ID4gLQkJCQnCoMKgwqDCoHN0cnVj dCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsLAo+ID4gLQkJCQnCoMKgwqDCoGJvb2wgbGlua19tc3Qp Cj4gPiArCQkJCcKgwqDCoMKgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwpCj4gPiDCoHsK PiA+IMKgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29k ZXItPmJhc2UpOwo+ID4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShlbmNvZGVyLQo+ID4gPmJhc2UuZGV2KTsKPiA+IMKgCWVudW0gcG9ydCBwb3J0ID0gaW50 ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5jb2Rlcik7Cj4gPiDCoAo+ID4gwqAJaW50ZWxfZHBf c2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsCj4gPiAtCQkJ CcKgbGlua19tc3QpOwo+ID4gLQlpZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQ KQo+ID4gLQkJaW50ZWxfZWRwX3BhbmVsX29uKGludGVsX2RwKTsKPiA+ICsJCQkJwqBmYWxzZSk7 Cj4gPiArCj4gPiArCWludGVsX2VkcF9wYW5lbF9vbihpbnRlbF9kcCk7Cj4gPiDCoAo+ID4gwqAJ aW50ZWxfZGRpX2Nsa19zZWxlY3QoZW5jb2RlciwgcGxsKTsKPiA+IMKgCWludGVsX3ByZXBhcmVf ZHBfZGRpX2J1ZmZlcnMoZW5jb2Rlcik7Cj4gPiDCoAlpbnRlbF9kZGlfaW5pdF9kcF9idWZfcmVn KGVuY29kZXIpOwo+ID4gwqAJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9E UE1TX09OKTsKPiA+IMKgCWludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4g LQlpZiAocG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ID4gKwlp ZiAocG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQo+ID4g wqAJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gPiDCoH0KPiA+IMKgCj4g PiArc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiArCQkJCcKgwqDCoMKgaW50IGxpbmtfcmF0ZSwgdWludDMyX3QKPiA+ IGxhbmVfY291bnQsCj4gPiArCQkJCcKgwqDCoMKgc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGwsCj4gPiArCQkJCcKgwqDCoMKgYm9vbCBsaW5rX21zdCkKPiA+ICt7Cj4gPiArCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ID4g KwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItCj4g PiA+YmFzZS5kZXYpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHRtcF9w bGxfY29uZmlnOwo+ID4gKwo+ID4gKwkvKiBEaXNhYmxlIHRoZSBQTEwgYW5kIG9idGFpbiB0aGUg UExMIGZvciBMaW5rIFRyYWluaW5nCj4gPiArCcKgKiB0aGF0IHN0YXJ0cyB3aXRoIGhpZ2hlc3Qg bGluayByYXRlIGFuZCBsYW5lIGNvdW50Lgo+ID4gKwnCoCovCj4gPiArCXRtcF9wbGxfY29uZmln ID0gcGxsLT5jb25maWc7Cj4gPiArCXBsbC0+ZnVuY3MuZGlzYWJsZShkZXZfcHJpdiwgcGxsKTsK PiA+ICsJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPiA+ICsKPiA+ICsJLyogSWYgTGluayBU cmFpbmluZyBmYWlscywgc2VuZCBhIHVldmVudCB0byBnZW5lcmF0ZSBhCj4gPiBob3RwbHVnICov Cj4gPiArCWlmICghKGludGVsX2RkaV9saW5rX3RyYWluKGludGVsX2RwLCBsaW5rX3JhdGUsIGxh bmVfY291bnQsCj4gPiBsaW5rX21zdCkpKQo+ID4gKwkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChlbmNvZGVyLT5iYXNlLmRldik7Cj4gQXQgZmlyc3QgZ2xhbmNlLCB0aGlzIHNlZW1zIHRo YXQgaG90cGx1ZyBldmVudHMgYXJlIGdlbmVyYXRlZCBldmVyeQo+IHRpbWUgd2hlbiBsaW5rIHRy YWluaW5nIGZhaWxzLiBJcyB0aGVyZSBhIHdheSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mCj4gbGlu ayB0cmFpbmluZyB0cmllcyBzbyB0aGF0IHdlIGRvbid0IGVuZCB1cCBnZW5lcmF0aW5nIGhvdHBs dWcgZXZlbnRzCj4gb3ZlciBhbmQgb3ZlciBhZ2Fpbj8KClRoaXMgdWV2ZW50IHdpbGwgYmUgc2Vu dCBvbmx5IGFmdGVyIHJldHJ5aW5nIGFsbCB0aGUgdm9sYXRnZSBzd2luZ3MvcHJlIGVtcGhhc2lz CmFuZCB0cnlpbmcgYXQgYWxsIGFsbCBwb3NzaWJsZSBsYW5lIGNvdW50cyBhbmQgbGluayByYXRl cy4gQWxzbyBzaW5jZSB3ZSBhcmUgCmRvaW5nIHVwZnJvbnQgbGluayB0cmFpbmluZywgbGluayB0 cmFpbmluZyBmYWlsaW5nIGF0IHRoaXMgcG9pbnQgYW5kIGdlbmVyYXRpbmcgYSAKaG90cGx1ZyBl dmVudCBpcyB2ZXJ5IHJhcmUuCkkgY291bGQgcG9zc2libHkgYWRkIGEgRVJST1IgbWVzc2FnZSB0 byBpbmRpY2F0ZSB0aGF0IGxpbmsgdHJhaW5pbmcgaGFzIGZhaWxlZAphZnRlciBhbGwgcmV0cmll cyBiZWZvcmUgaXQgZ2VuZXJhdGVzIGEgaG90cGx1ZyBldmVudC4KCk1hbmFzaQoKCj4gCj4gPiAr CXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7Cj4gPiArfQo+ID4gKwo+ID4gwqBzdGF0aWMg dm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9oZG1pKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gwqAJCQkJwqDCoMKgwqDCoMKgYm9vbCBoYXNfaGRtaV9zaW5rLAo+ID4gwqAJCQkJ wqDCoMKgwqDCoMKgc3RydWN0IGRybV9kaXNwbGF5X21vZGUKPiA+ICphZGp1c3RlZF9tb2RlLAo+ ID4gQEAgLTE2OTAsMjAgKzE3MTEsMjYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFi bGUoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyLAo+ID4gwqAJc3RydWN0 IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXItPmNydGMpOwo+ID4gwqAJ aW50IHR5cGUgPSBpbnRlbF9lbmNvZGVyLT50eXBlOwo+ID4gwqAKPiA+IC0JaWYgKHR5cGUgPT0g SU5URUxfT1VUUFVUX0RQIHx8IHR5cGUgPT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ID4gKwlpZiAo dHlwZSA9PSBJTlRFTF9PVVRQVVRfRURQKQo+ID4gKwkJaW50ZWxfZGRpX3ByZV9lbmFibGVfZWRw KGludGVsX2VuY29kZXIsCj4gPiArCQkJCQljcnRjLT5jb25maWctPnBvcnRfY2xvY2ssCj4gPiAr CQkJCQljcnRjLT5jb25maWctPmxhbmVfY291bnQsCj4gPiArCQkJCQljcnRjLT5jb25maWctPnNo YXJlZF9kcGxsKTsKPiA+ICsKPiA+ICsJaWYgKHR5cGUgPT0gSU5URUxfT1VUUFVUX0RQKQo+ID4g wqAJCWludGVsX2RkaV9wcmVfZW5hYmxlX2RwKGludGVsX2VuY29kZXIsCj4gPiDCoAkJCQkJY3J0 Yy0+Y29uZmlnLT5wb3J0X2Nsb2NrLAo+ID4gwqAJCQkJCWNydGMtPmNvbmZpZy0+bGFuZV9jb3Vu dCwKPiA+IMKgCQkJCQljcnRjLT5jb25maWctPnNoYXJlZF9kcGxsLAo+ID4gwqAJCQkJCWludGVs X2NydGNfaGFzX3R5cGUoY3J0Yy0KPiA+ID5jb25maWcsCj4gPiDCoAkJCQkJCQnCoMKgwqDCoElO VEVMX09VCj4gPiBUUFVUX0RQX01TVCkpOwo+ID4gLQl9Cj4gPiAtCWlmICh0eXBlID09IElOVEVM X09VVFBVVF9IRE1JKSB7Cj4gPiArCj4gPiArCWlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1J KQo+ID4gwqAJCWludGVsX2RkaV9wcmVfZW5hYmxlX2hkbWkoaW50ZWxfZW5jb2RlciwKPiA+IMKg CQkJCQnCoMKgY3J0Yy0+Y29uZmlnLQo+ID4gPmhhc19oZG1pX3NpbmssCj4gPiDCoAkJCQkJwqDC oCZjcnRjLT5jb25maWctCj4gPiA+YmFzZS5hZGp1c3RlZF9tb2RlLAo+ID4gwqAJCQkJCcKgwqBj cnRjLT5jb25maWctCj4gPiA+c2hhcmVkX2RwbGwpOwo+ID4gLQl9Cj4gPiArCj4gPiDCoH0KPiA+ IMKgCj4gPiDCoHN0YXRpYyB2b2lkIGludGVsX2RkaV9wb3N0X2Rpc2FibGUoc3RydWN0IGludGVs X2VuY29kZXIKPiA+ICppbnRlbF9lbmNvZGVyLAo+ID4gQEAgLTI0MzEsNiArMjQ1OCw2NiBAQCBp bnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAKPiA+ICppbnRlbF9kcCwgaW50 IGNsb2NrKQo+ID4gwqAJcmV0dXJuIHBsbDsKPiA+IMKgfQo+ID4gwqAKPiA+ICtib29sCj4gPiAr aW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IG1heF9s aW5rX3JhdGUsCj4gPiArCQnCoMKgwqDCoHVpbnQ4X3QgbWF4X2xhbmVfY291bnQsIGJvb2wgbGlu a19tc3QpCj4gPiArewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBp bnRlbF9kcC0KPiA+ID5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gPiArCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwo+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItCj4gPiA+YmFzZS5kZXYpOwo+ID4g KwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbDsKPiA+ICsJc3RydWN0IGludGVsX3NoYXJl ZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2NvbmZpZzsKPiA+ICsJaW50IGxpbmtfcmF0ZTsKPiA+ICsJ dWludDhfdCBsYW5lX2NvdW50Owo+ID4gKwlib29sIGxpbmtfcmF0ZV9ub3RfZm91bmQgPSB0cnVl Owo+ID4gKwlib29sIHJldCA9IGZhbHNlOwo+ID4gKwo+ID4gKwlmb3IgKGxhbmVfY291bnQgPSBt YXhfbGFuZV9jb3VudDsgbGFuZV9jb3VudCA+IDA7IGxhbmVfY291bnQKPiA+ID4+PSAxKSB7Cj4g PiArCj4gPiArCQlsaW5rX3JhdGUgPSBtYXhfbGlua19yYXRlOwo+ID4gKwkJd2hpbGUgKGxpbmtf cmF0ZV9ub3RfZm91bmQpIHsKPiBBdCBmaXJzdCBnbGFuY2UsIEkgcmVhZCB0aGlzIGFzIHdlIGhh dmVuJ3QgZm91bmQgdGhlIGxpbmsgcmF0ZSB5ZXQgYW5kCj4gc3RhcnQgZnJvbSAwLiBUaGlzIGlz IG5vdCB0aGUgY2FzZSBoZXJlIGFzIHdlIGhhdmUgZm91bmQgdGhlIGxpbmsgcmF0ZQo+IHdoaWNo IGlzIHRoZSBtYXhpbXVtIGxpbmsgcmF0ZSBhdmFpbGFibGUuIEFzIHdlIGl0ZXJhdGUgbGluayBy YXRlcyBmcm9tCj4gbWF4IHRvIG1pbiBzaG91bGQgd2Ugc3dpdGNoIHRoZSBsb2dpYyBoZXJlIHRv bz8gSSBtZWFuIHNvbWV0aGluZyBsaWtlCj4gdGhpcwo+IAo+IGJvb2wgbGlua19yYXRlX25vdF9m b3VuZCA9IGZhbHNlOwo+IC4uLgo+IHdoaWxlICghbGlua19yYXRlX25vdF9mb3VuZCkgewo+IAku Li4KPiB9Cj4gCj4gVGhlIG90aGVyIHdheSBvZiBkb2luZyB0aGlzIGlzIG5vdCB0byB1c2UgdGhl IGJvb2xlYW4KPiBsaW5rX3JhdGVfbm90X2ZvdW5kIHBhcmFtZXRlciBhdCBhbGwgYnV0IHV0aWxp emUgdGhlIGxpbmtfcmF0ZQo+IHBhcmFtZXRlciBvbmx5IGFuZCBpdGVyYXRlIGluIGEgbG9vcCBh cyBsb25nIGFzIHRoZSBsaW5rX3JhdGUgZXhjZWVkcwo+IHplcm8gdmFsdWUuIEFueXdheSwgdGhp cyB3YXMganVzdCBhIHRob3VnaHQgYW5kIGlzIG1vcmUgcmVsYXRlZCBvbgo+IHBlcnNvbmFsIHBy ZWZlcmVuY2UgdGhhbiB0aGUgZnVuY3Rpb25hbGl0eS4gwqAKClRoYW5rcyBmb3IgdGhlIHJldmll dyBjb21tZW50LiBJIHdpbGwgcmV3b3JrIHRoaXMgbG9naWMgdG8gdXNlIHRoZSAKbGluayByYXRl cy9jb21tb24gcmF0ZXMgYXJyYXkgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSBsaW5rIHJhdGVzCmZy b20gbWF4IHRvIG1pbi4KCk1hbmFzaQoKCj4gCj4gPiArCQkJcGxsID0gaW50ZWxfZGRpX2dldF9s aW5rX2RwbGwoaW50ZWxfZHAsCj4gPiBsaW5rX3JhdGUpOwo+ID4gKwkJCWlmIChwbGwgPT0gTlVM TCkgewo+ID4gKwkJCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBmaW5kIERQTEwgZm9yCj4gPiBsaW5r ICIKPiA+ICsJCQkJCcKgwqAidHJhaW5pbmcuXG4iKTsKPiA+ICsJCQkJcmV0dXJuIGZhbHNlOwo+ ID4gKwkJCX0KPiA+ICsJCQl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+ID4gKwkJCXBs bC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gKwo+ID4gKwkJCWludGVsX2RwX3Nl dF9saW5rX3BhcmFtcyhpbnRlbF9kcCwKPiA+IGxpbmtfcmF0ZSwKPiA+ICsJCQkJCQnCoGxhbmVf Y291bnQsCj4gPiBsaW5rX21zdCk7Cj4gPiArCj4gPiArCQkJaW50ZWxfZGRpX2Nsa19zZWxlY3Qo ZW5jb2RlciwgcGxsKTsKPiA+ICsJCQlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29k ZXIpOwo+IEl0IHNob3VsZCBiZSBzYWZlIHRvIG1vdmUgdGhpcyBkZGkgYnVmZmVyIGluaXRpYWxp emF0aW9uIG91dHNpZGUgdGhlCj4gbG9vcC4KPiAKPiA+ICsJCQlpbnRlbF9kZGlfaW5pdF9kcF9i dWZfcmVnKGVuY29kZXIpOwo+ID4gKwkJCWludGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwKPiA+ IERSTV9NT0RFX0RQTVNfT04pOwo+ID4gKwkJCXJldCA9IGludGVsX2RwX3N0YXJ0X2xpbmtfdHJh aW4oaW50ZWxfZHApOwo+ID4gKwkJCWlmIChyZXQpCj4gPiArCQkJCWJyZWFrOwo+ID4gKwo+ID4g KwkJCS8qIERpc2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQKPiA+IHJldHJ5L2Ns ZWFuIHVwICovCj4gPiArCQkJaW50ZWxfZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyLCBOVUxMLCBO VUxMKTsKPiA+ICsJCQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4gPiArCQkJ aWYgKGxpbmtfcmF0ZSA9PSA1NDAwMDApCj4gPiArCQkJCWxpbmtfcmF0ZSA9IDI3MDAwMDsKPiA+ ICsJCQllbHNlIGlmIChsaW5rX3JhdGUgPT0gMjcwMDAwKQo+ID4gKwkJCQlsaW5rX3JhdGUgPSAx NjIwMDA7Cj4gPiArCQkJZWxzZQo+ID4gKwkJCQlsaW5rX3JhdGVfbm90X2ZvdW5kID0gZmFsc2U7 Cj4gPiArCQl9Cj4gPiArCQlpZiAocmV0KSB7Cj4gPiArCQkJRFJNX0RFQlVHX0tNUygiTGluayBU cmFpbmluZyBzdWNjZXNzZnVsXG4iKTsKPiA+ICsJCQlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4o aW50ZWxfZHApOwo+ID4gKwkJCWJyZWFrOwo+ID4gKwkJfQo+ID4gKwl9Cj4gPiArCWlmICghbGFu ZV9jb3VudCkKPiA+ICsJCURSTV9FUlJPUigiTGluayBUcmFpbmluZyBGYWlsZWRcbiIpOwo+IElu IGNhc2Ugb2YgZmFpbHVyZSwgSSB0aGluayB3ZSBzaG91bGQgc3RpbGwgc3RvcCB0aGUgbGluayB0 cmFpbmluZyBhbmQKPiBjYWxsICdpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oKScKPiAKPiA+ICsK PiA+ICsJcmV0dXJuIHJldDsKPiA+ICt9Cj4gPiArCj4gPiDCoHZvaWQgaW50ZWxfZGRpX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgZW51bSBwb3J0IHBvcnQpCj4gPiDCoHsKPiA+IMKgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gPiBpbmRl eCAwN2YwMTU5Li4wZGY0OWU4IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+IEBAIC0zMDksOSArMzA5LDE1IEBAIHZvaWQgaW50 ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcAo+ID4gKmludGVsX2RwKQo+ID4g wqAJCQkJRFBfVFJBSU5JTkdfUEFUVEVSTl9ESVNBQkxFKTsKPiA+IMKgfQo+ID4gwqAKPiA+IC12 b2lkCj4gPiArYm9vbAo+ID4gwqBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gPiDCoHsKPiA+IC0JaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9j a19yZWNvdmVyeShpbnRlbF9kcCk7Cj4gPiAtCWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5l bF9lcXVhbGl6YXRpb24oaW50ZWxfZHApOwo+ID4gKwlib29sIHJldDsKPiA+ICsKPiA+ICsJaWYg KGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApKSB7Cj4gPiAr CQlyZXQgPQo+ID4gaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihp bnRlbF9kcCk7Cj4gPiArCQlpZiAocmV0KQo+ID4gKwkJCXJldHVybiB0cnVlOwo+ID4gKwl9Cj4g PiArCXJldHVybiBmYWxzZTsKPiB5ZXAsIHRoaXMgaXMgd2hhdCBJIGhhZCBpbiBtaW5kIHdoZW4g SSByZXZpZXdlZCB0aGUgcHJldmlvdXMgcGF0Y2guCj4gCj4gPiDCoH0KPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggZTViYzk3Ni4uMzQyYTJkNSAxMDA2NDQKPiA+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTExNjAsNiArMTE2MCw4IEBAIHZvaWQgaW50 ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfZW5jb2Rlcgo+ID4gKmVuY29kZXIsCj4gPiDC oAkJCcKgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiA+IMKgdm9pZCBp bnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2Moc3RydWN0IGRybV9jcnRjICpjcnRjLCBib29s Cj4gPiBzdGF0ZSk7Cj4gPiDCoHVpbnQzMl90IGRkaV9zaWduYWxfbGV2ZWxzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApOwo+ID4gK2Jvb2wgaW50ZWxfZGRpX2xpbmtfdHJhaW4oc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwgaW50Cj4gPiBtYXhfbGlua19yYXRlLAo+ID4gKwkJCcKgdWludDhf dCBtYXhfbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCk7Cj4gPiDCoHN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbCAqaW50ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwCj4gPiAqaW50 ZWxfZHAsCj4gPiDCoAkJCQkJCcKgwqBpbnQgY2xvY2spOwo+ID4gwqB1bnNpZ25lZCBpbnQgaW50 ZWxfZmJfYWxpZ25faGVpZ2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gPiBAQCAtMTM4MSw3 ICsxMzgzLDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QKPiA+IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiDCoHZvaWQgaW50ZWxfZHBfc2V0X2xp bmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiDCoAkJCcKgwqDCoMKgwqDC oGludCBsaW5rX3JhdGUsIHVpbnQ4X3QgbGFuZV9jb3VudCwKPiA+IMKgCQkJwqDCoMKgwqDCoMKg Ym9vbCBsaW5rX21zdCk7Cj4gPiAtdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gK2Jvb2wgaW50ZWxfZHBfc3RhcnRfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+IMKgdm9pZCBpbnRlbF9kcF9zdG9wX2xp bmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gPiDCoHZvaWQgaW50ZWxfZHBf c2lua19kcG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+IMKgdm9p ZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4g LS0gCj4gTWlrYSBLYWhvbGEgLSBJbnRlbCBPVEMKPiAKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==