From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v3 4/4] drm/i915: Implement Link Rate fallback on Link training failure Date: Wed, 9 Nov 2016 14:05:44 -0800 Message-ID: <20161109220543.GA20832@intel.com> References: <1477703245-27375-5-git-send-email-manasi.d.navare@intel.com> <1478120139-10763-1-git-send-email-manasi.d.navare@intel.com> <87mvh8g5yy.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9DD4B6E0D2 for ; Wed, 9 Nov 2016 22:04:03 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87mvh8g5yy.fsf@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBOb3YgMDksIDIwMTYgYXQgMDM6MDQ6MDVQTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gV2VkLCAwMiBOb3YgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4gd3JvdGU6Cj4gPiBJZiBsaW5rIHRyYWluaW5nIGF0IGEgbGluayByYXRlIG9w dGltYWwgZm9yIGEgcGFydGljdWxhcgo+ID4gbW9kZSBmYWlscyBkdXJpbmcgbW9kZXNldCdzIGF0 b21pYyBjb21taXQgcGhhc2UsIHRoZW4gd2UKPiA+IGxldCB0aGUgbW9kZXNldCBjb21wbGV0ZSBh bmQgdGhlbiByZXRyeS4gV2Ugc2F2ZSB0aGUgbGluayByYXRlCj4gPiB2YWx1ZSBhdCB3aGljaCBs aW5rIHRyYWluaW5nIGZhaWxlZCwgdXBkYXRlIHRoZSBsaW5rIHN0YXR1cyBwcm9wZXJ0eQo+ID4g dG8gIkJBRCIgYW5kIHVzZSBhIGxvd2VyIGxpbmsgcmF0ZSB0byBwcnVuZSB0aGUgbW9kZXMuIEl0 IHdpbGwgcmVkbwo+ID4gdGhlIG1vZGVzZXQgb24gdGhlIGN1cnJlbnQgbW9kZSBhdCBsb3dlciBs aW5rIHJhdGUgb3IgaWYgdGhlIGN1cnJlbnQKPiA+IG1vZGUgZ2V0cyBwcnVuZWQgZHVlIHRvIGxv d2VyIGxpbmsgY29uc3RyYWludHMgdGhlbiwgaXQgd2lsbCBzZW5kIGEKPiA+IGhvdHBsdWcgdWV2 ZW50IGZvciB1c2Vyc3BhY2UgdG8gaGFuZGxlIGl0Lgo+ID4KPiA+IFRoaXMgaXMgYWxzbyByZXF1 aXJlZCB0byBwYXNzIERQIENUUyB0ZXN0cyA0LjMuMS4zLCA0LjMuMS40LAo+ID4gNC4zLjEuNi4K PiA+Cj4gPiB2MzoKPiA+ICogU2V0IGxpbmsgc3RhdHVzIHByb3BlcnR5IHRvIEJBZCB1bmNvbmRp dGlvbmFsbHkgKEphbmkgTmlrdWxhKQo+ID4gKiBEb250IHVzZSB0d28gc2VwYXJhdGUgdmFyaWFi bGVzIGxpbmtfdHJhaW5fZmFpbGVkIGFuZCBsaW5rX3N0YXR1cwo+ID4gdG8gaW5kaWNhdGUgc2Ft ZSB0aGluZyAoSmFuaSBOaWt1bGEpCj4gPiB2MjoKPiA+ICogU3F1YXNoZWQgYSBmZXcgcGF0Y2hl cyAoSmFuaSBOaWt1bGEpCj4gPgo+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51 eC5pbnRlbC5jb20+Cj4gPiBDYzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5j b20+Cj4gPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+ Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwu Y29tPgo+ID4gLS0tCj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAg ICAgICAgIHwgIDcgKysrCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAg ICAgICAgICAgIHwgMjIgKysrKysrKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYyAgICAgICAgICAgICAgIHwgNzAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIHwgMTIgKysrLS0K PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgICAgfCAgNiAr Ky0KPiA+ICA1IGZpbGVzIGNoYW5nZWQsIDEwNSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMo LSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVy LmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gaW5kZXggNzVhZDAx ZC4uOTRiMGIzYSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hl bHBlci5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4g QEAgLTUxOSw2ICs1MTksMTMgQEAgc3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2Rl cnMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+ID4gIAkJCQkJICAgICAgIGNvbm5l Y3Rvcl9zdGF0ZSk7Cj4gPiAgCQlpZiAocmV0KQo+ID4gIAkJCXJldHVybiByZXQ7Cj4gPiArCj4g PiArCQlpZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yykgewo+ID4gKwkJCWNydGNfc3RhdGUgPSBk cm1fYXRvbWljX2dldF9leGlzdGluZ19jcnRjX3N0YXRlKHN0YXRlLAo+ID4gKwkJCQkJCQkJCWNv bm5lY3Rvci0+c3RhdGUtPmNydGMpOwo+ID4gKwkJCWlmIChjb25uZWN0b3ItPmxpbmtfc3RhdHVz ID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkKPiA+ICsJCQkJY3J0Y19zdGF0ZS0+Y29ubmVj dG9yc19jaGFuZ2VkID0gdHJ1ZTsKPiA+ICsJCX0KPiA+ICAJfQo+IAo+IENvdWxkIHRoaXMgYmUg YSBzZXBhcmF0ZSBwYXRjaD8gQW55d2F5IG5lZWRzIHRvIGJlIHBvc3RlZCBvbiBkcmktZGV2ZWwu Cj4KClllcyBJIGFncmVlLCBJIHdpbGwgbW92ZSB0aGlzIGludG8gYSBzZXBhcmF0ZSBwYXRjaCBy aWdodCBhZnRlciB0aGUgcGF0Y2gKd2hlcmUgSSBkZWNsYXJlIHRoZSBjb25uZWN0b3IgbGluayBz dGF0dXMuCiAKPiA+ICAKPiA+ICAJLyoKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBp bmRleCA5MzhhYzRkLi5hNTlmOGQyIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j Cj4gPiBAQCAtMTY4NCw2ICsxNjg0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFi bGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiAgCXN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOwo+ID4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2 KTsKPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNv ZGVyKTsKPiA+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gaW50 ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gPiAgCj4gPiAgCWludGVsX2RwX3Nl dF9saW5rX3BhcmFtcyhpbnRlbF9kcCwgbGlua19yYXRlLCBsYW5lX2NvdW50LAo+ID4gIAkJCQkg bGlua19tc3QpOwo+ID4gQEAgLTE2OTQsNyArMTY5NiwyNSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k ZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJaW50 ZWxfcHJlcGFyZV9kcF9kZGlfYnVmZmVycyhlbmNvZGVyKTsKPiA+ICAJaW50ZWxfZGRpX2luaXRf ZHBfYnVmX3JlZyhlbmNvZGVyKTsKPiA+ICAJaW50ZWxfZHBfc2lua19kcG1zKGludGVsX2RwLCBE Uk1fTU9ERV9EUE1TX09OKTsKPiA+IC0JaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9k cCk7Cj4gPiArCWlmICghaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCkpIHsKPiA+ ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgZmFpbGVkIGF0IGxpbmsgcmF0ZSA9ICVk LCBsYW5lIGNvdW50ID0gJWQiLAo+ID4gKwkJCSAgICAgIGxpbmtfcmF0ZSwgbGFuZV9jb3VudCk7 Cj4gPiArCQljb25uZWN0b3ItPmxpbmtfc3RhdHVzID0gRFJNX01PREVfTElOS19TVEFUVVNfQkFE Owo+IAo+IFdoeSBkb2VzIHRoaXMgbm90IHVzZSBpbnRlbF9kcF9zZXRfbGlua19zdGF0dXNfcHJv cGVydHkoKT8KPiAKCkkgd2lsbCBtb3ZlIHRoaXMgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBzZXR0 aW5nIGluc2lkZSB0aGUgc2V0X2xpbmtfc3RhdHVzIGZ1bmN0aW9uLgoKCj4gPiArCQlpbnRlbF9k cF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoaW50ZWxfZHAsIGxpbmtfcmF0ZSwKPiA+ ICsJCQkJCQkJbGFuZV9jb3VudCk7Cj4gPiArCQkvKiBTY2hlZHVsZSBhIEhvdHBsdWcgVWV2ZW50 IHRvIHVzZXJzcGFjZSB0byBzdGFydCBtb2Rlc2V0ICovCj4gPiArCQlzY2hlZHVsZV93b3JrKCZp bnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yayk7Cj4gPiArCX0gZWxzZSB7Cj4gPiAr CQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIFBhc3NlZCBhdCBMaW5rIFJhdGUgPSAlZCwg TGFuZSBjb3VudCA9ICVkIiwKPiA+ICsJCQkgICAgICBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwo+ ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZV9pbmRleCA9IC0xOwo+ID4gKwkJaW50 ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZSA9IDA7Cj4gPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tf bGFuZV9jb3VudCA9IDA7Cj4gPiArCQljb25uZWN0b3ItPmxpbmtfc3RhdHVzID0gRFJNX01PREVf TElOS19TVEFUVVNfR09PRDsKPiA+ICsJCWludGVsX2RwX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0 eShjb25uZWN0b3IsCj4gPiArCQkJCQkJICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiA+ ICsJfQo+ID4gKwo+ID4gIAlpZiAocG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5KQo+ID4gIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+ICB9 Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+IGluZGV4IGZiNGZjZGQuLjY1OWIxN2YgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBAQCAtMzEwLDkgKzMxMCw2IEBAIHZv aWQgaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVzKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gPiAgCWludCBjb21tb25fbGVuOwo+ID4gIAlpbnQgbGlua19yYXRlX2lu ZGV4ID0gLTE7Cj4gPiAgCj4gPiAtCWlmICghaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKQo+ ID4gLQkJcmV0dXJuOwo+ID4gLQo+IAo+IFlvdSBhZGQgdGhpcyBpbiBhbiBlYXJsaWVyIHBhdGNo IGFuZCBub3cgcmVtb3ZlIGl0Pwo+CgpJIHJlbW92ZWQgaXQgdG8gYWRkcmVzcyB0aGUgY29tbWVu dCBhYm91dCBub3QgdXNpbmcgbGlua190cmFpbl9mYWlsZWQgYW5kCmxpbmtfc3RhdHVzIHRvIGlu ZGljYXRlIHRoZSBzYW1lIHRoaW5nLiBCdXQgdGhpcyB3aWxsIGJlIGNsZWFuZWQgdXAgd2hlbiBJ IHN1Ym1pdAphIGNsZWFuIHBhdGNoIHNlcmllcyBzbyB0aGF0IGl0IGRvZXMgbm90IGFwcGVhciBh cyBhZGRlZCBpbiBwcmV2aW91cyBwYXRjaCBhbmQgCnJlbW92ZWQgaGVyZS4KCiAKPiA+ICAJY29t bW9uX2xlbiA9IGludGVsX2RwX2NvbW1vbl9yYXRlcyhpbnRlbF9kcCwgY29tbW9uX3JhdGVzKTsK PiA+ICAJbGlua19yYXRlX2luZGV4ID0gaW50ZWxfZHBfbGlua19yYXRlX2luZGV4KGludGVsX2Rw LAo+ID4gIAkJCQkJCSAgIGNvbW1vbl9yYXRlcywKPiA+IEBAIC0zMjcsNyArMzI0LDYgQEAgdm9p ZCBpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiA+ICAJCWludGVsX2RwLT5mYWxsYmFja19sYW5lX2NvdW50ID0gbGFuZV9j b3VudCA+PiAxOwo+ID4gIAl9IGVsc2Ugewo+ID4gIAkJRFJNX0VSUk9SKCJMaW5rIFRyYWluaW5n IFVuc3VjY2Vzc2Z1bFxuIik7Cj4gPiAtCQlpbnRlbF9kcC0+bGlua190cmFpbl9mYWlsZWQgPSBm YWxzZTsKPiA+ICAJfQo+ID4gIH0KPiA+ICAKPiA+IEBAIC0zNTQsOCArMzUwLDE0IEBAIHZvaWQg aW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gPiAgCQl0YXJnZXRfY2xvY2sgPSBmaXhlZF9tb2RlLT5jbG9jazsKPiA+ICAJ fQo+ID4gIAo+ID4gLQltYXhfbGlua19jbG9jayA9IGludGVsX2RwX21heF9saW5rX3JhdGUoaW50 ZWxfZHApOwo+ID4gLQltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9k cCk7Cj4gPiArCS8qIFBydW5lIHRoZSBtb2RlcyB1c2luZyB0aGUgZmFsbGJhY2sgbGluayByYXRl L2xhbmUgY291bnQgKi8KPiA+ICsJaWYgKGNvbm5lY3Rvci0+bGlua19zdGF0dXMgPT0gRFJNX01P REVfTElOS19TVEFUVVNfQkFEKSB7Cj4gPiArCQltYXhfbGlua19jbG9jayA9IGludGVsX2RwLT5m YWxsYmFja19saW5rX3JhdGU7Cj4gPiArCQltYXhfbGFuZXMgPSBpbnRlbF9kcC0+ZmFsbGJhY2tf bGFuZV9jb3VudDsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCW1heF9saW5rX2Nsb2NrID0gaW50ZWxf ZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gPiArCQltYXhfbGFuZXMgPSBpbnRlbF9kcF9t YXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gPiArCX0KPiA+ICAKPiA+ICAJbWF4X3JhdGUgPSBp bnRlbF9kcF9tYXhfZGF0YV9yYXRlKG1heF9saW5rX2Nsb2NrLCBtYXhfbGFuZXMpOwo+ID4gIAlt b2RlX3JhdGUgPSBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKHRhcmdldF9jbG9jaywgMTgpOwo+ID4g QEAgLTE1OTMsNiArMTU5NSw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29tcHV0ZV9icHAoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdf cG9ydChpbnRlbF9kcCktPnBvcnQ7Cj4gPiAgCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhwaXBlX2NvbmZpZy0+YmFzZS5jcnRjKTsKPiA+ICAJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5l Y3RvcjsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25u ZWN0b3ItPmJhc2U7Cj4gPiAgCWludCBsYW5lX2NvdW50LCBjbG9jazsKPiA+ICAJaW50IG1pbl9s YW5lX2NvdW50ID0gMTsKPiA+ICAJaW50IG1heF9sYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2xh bmVfY291bnQoaW50ZWxfZHApOwo+ID4gQEAgLTE2NDAsNiArMTY0MywxMiBAQCBzdGF0aWMgaW50 IGludGVsX2RwX2NvbXB1dGVfYnBwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCWlm IChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMQ0xLKQo+ID4gIAkJcmV0 dXJuIGZhbHNlOwo+ID4gIAo+ID4gKwkvKiBGYWxsIGJhY2sgdG8gbG93ZXIgbGluayByYXRlIGlu IGNhc2Ugb2YgZmFpbHVyZSBpbiBwcmV2aW91cyBtb2Rlc2V0ICovCj4gPiArCWlmIChjb25uZWN0 b3ItPmxpbmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkgewo+ID4gKwkJbWlu X2xhbmVfY291bnQgPSBtYXhfbGFuZV9jb3VudCA9IGludGVsX2RwLT5mYWxsYmFja19sYW5lX2Nv dW50Owo+ID4gKwkJbWluX2Nsb2NrID0gbWF4X2Nsb2NrID0gaW50ZWxfZHAtPmZhbGxiYWNrX2xp bmtfcmF0ZV9pbmRleDsKPiA+ICsJfQo+ID4gKwo+ID4gIAlEUk1fREVCVUdfS01TKCJEUCBsaW5r IGNvbXB1dGF0aW9uIHdpdGggbWF4IGxhbmUgY291bnQgJWkgIgo+ID4gIAkJICAgICAgIm1heCBi dyAlZCBwaXhlbCBjbG9jayAlaUtIelxuIiwKPiA+ICAJCSAgICAgIG1heF9sYW5lX2NvdW50LCBj b21tb25fcmF0ZXNbbWF4X2Nsb2NrXSwKPiA+IEBAIC00NDIzLDYgKzQ0MzIsMTIgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2FjdGl2ZSA9IDA7 Cj4gPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgPSAwOwo+ID4gIAkJaW50ZWxf ZHAtPmNvbXBsaWFuY2VfdGVzdF9kYXRhID0gMDsKPiA+ICsJCWludGVsX2RwLT5mYWxsYmFja19s aW5rX3JhdGVfaW5kZXggPSAtMTsKPiA+ICsJCWludGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGUg PSAwOwo+ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291bnQgPSAwOwo+ID4gKwkJY29u bmVjdG9yLT5saW5rX3N0YXR1cyA9IERSTV9NT0RFX0xJTktfU1RBVFVTX0dPT0Q7Cj4gPiArCQlp bnRlbF9kcF9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVjdG9yLAo+ID4gKwkJCQkJCSAg RFJNX01PREVfTElOS19TVEFUVVNfR09PRCk7Cj4gCj4gU2VlbXMgbGlrZSBpdCB3b3VsZCBiZSBh IGdvb2QgaWRlYSB0byBoYXZlIHRoaXMKPiBpbnRlbF9kcF9zZXRfbGlua19zdGF0dXNfcHJvcGVy dHkoKSBoZWxwZXIgc2V0IGNvbm5lY3Rvci0+bGlua19zdGF0dXMKPiB0b28uCj4KCll1cCwgd2ls bCBkbyB0aGlzIGNoYW5nZS4gCgpSZWdhcmRzCk1hbmFzaSAKPiA+ICAKPiA+ICAJCWlmIChpbnRl bF9kcC0+aXNfbXN0KSB7Cj4gPiAgCQkJRFJNX0RFQlVHX0tNUygiTVNUIGRldmljZSBtYXkgaGF2 ZSBkaXNhcHBlYXJlZCAlZCB2cyAlZFxuIiwKPiA+IEBAIC00NTE0LDYgKzQ1MjksMTEgQEAgc3Rh dGljIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4i LAo+ID4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ID4g IAo+ID4gKwkvKiBJZiB0aGlzIGlzIGEgcmV0cnkgZHVlIHRvIGxpbmsgdHJpYW5pbmcgZmFpbHVy ZSAqLwo+ID4gKwlpZiAoc3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmCj4g PiArCSAgICBjb25uZWN0b3ItPmxpbmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JB RCkKPiA+ICsJCXJldHVybiBzdGF0dXM7Cj4gPiArCj4gPiAgCS8qIElmIGZ1bGwgZGV0ZWN0IGlz IG5vdCBwZXJmb3JtZWQgeWV0LCBkbyBhIGZ1bGwgZGV0ZWN0ICovCj4gPiAgCWlmICghaW50ZWxf ZHAtPmRldGVjdF9kb25lKQo+ID4gIAkJc3RhdHVzID0gaW50ZWxfZHBfbG9uZ19wdWxzZShpbnRl bF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiA+IEBAIC01NjkyLDYgKzU3MTIsNDAgQEAgc3Rh dGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsCj4gPiAgCXJldHVybiBmYWxzZTsKPiA+ICB9Cj4gPiAgCj4gPiArc3RhdGljIHZvaWQgaW50 ZWxfZHBfbW9kZXNldF9yZXRyeV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPiA+ ICt7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiA+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGU7Cj4gPiArCWJvb2wgdmVyYm9zZV9wcnVuZSA9IHRydWU7Cj4gPiArCj4gPiAr CWludGVsX2Nvbm5lY3RvciA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKmludGVsX2Nvbm5l Y3RvciksCj4gPiArCQkJCSAgICAgICBtb2Rlc2V0X3JldHJ5X3dvcmspOwo+ID4gKwljb25uZWN0 b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ID4gKwo+ID4gKwkvKiBHcmFiIHRoZSBsb2Nr cyBiZWZvcmUgY2hhbmdpbmcgY29ubmVjdG9yIHByb3BlcnR5Ki8KPiA+ICsJbXV0ZXhfbG9jaygm Y29ubmVjdG9yLT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiA+ICsJRFJNX0RFQlVHX0tNUygi W0NPTk5FQ1RPUjolZDolc11cbiIsIGNvbm5lY3Rvci0+YmFzZS5pZCwKPiA+ICsJCSAgICAgIGNv bm5lY3Rvci0+bmFtZSk7Cj4gPiArCWxpc3RfZm9yX2VhY2hfZW50cnkobW9kZSwgJmNvbm5lY3Rv ci0+bW9kZXMsIGhlYWQpIHsKPiA+ICsJCW1vZGUtPnN0YXR1cyA9IGludGVsX2RwX21vZGVfdmFs aWQoY29ubmVjdG9yLAo+ID4gKwkJCQkJCSAgIG1vZGUpOwo+ID4gKwl9Cj4gPiArCWRybV9tb2Rl X3BydW5lX2ludmFsaWQoY29ubmVjdG9yLT5kZXYsICZjb25uZWN0b3ItPm1vZGVzLAo+ID4gKwkJ CSAgICAgICB2ZXJib3NlX3BydW5lKTsKPiA+ICsKPiA+ICsJLyogU2V0IGNvbm5lY3RvciBsaW5r IHN0YXR1cyB0byBCQUQgYW5kIHNlbmQgYSBVZXZlbnQgdG8gbm90aWZ5Cj4gPiArCSAqIHVzZXJz cGFjZSB0byBkbyBhIG1vZGVzZXQuCj4gPiArCSAqLwo+ID4gKwljb25uZWN0b3ItPmxpbmtfc3Rh dHVzID0gRFJNX01PREVfTElOS19TVEFUVVNfQkFEOwo+ID4gKwlpbnRlbF9kcF9zZXRfbGlua19z dGF0dXNfcHJvcGVydHkoY29ubmVjdG9yLAo+ID4gKwkJCQkJICBEUk1fTU9ERV9MSU5LX1NUQVRV U19CQUQpOwo+ID4gKwltdXRleF91bmxvY2soJmNvbm5lY3Rvci0+ZGV2LT5tb2RlX2NvbmZpZy5t dXRleCk7Cj4gPiArCj4gPiArCS8qIFNlbmQgSG90cGx1ZyB1ZXZlbnQgc28gdXNlcnNwYWNlIGNh biByZXByb2JlICovCj4gPiArCWRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoY29ubmVjdG9y LT5kZXYpOwo+ID4gK30KPiA+ICsKPiA+ICBib29sCj4gPiAgaW50ZWxfZHBfaW5pdF9jb25uZWN0 b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gPiAgCQkJc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ID4gQEAgLTU3MDQsNiArNTc1 OCwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKPiA+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9y dDsKPiA+ICAJaW50IHR5cGU7Cj4gPiAgCj4gPiArCS8qIEluaXRpYWxpemUgdGhlIHdvcmsgZm9y IG1vZGVzZXQgaW4gY2FzZSBvZiBsaW5rIHRyYWluIGZhaWx1cmUgKi8KPiA+ICsJSU5JVF9XT1JL KCZpbnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yaywKPiA+ICsJCSAgaW50ZWxfZHBf bW9kZXNldF9yZXRyeV93b3JrX2ZuKTsKPiA+ICsKPiA+ICAJaWYgKFdBUk4oaW50ZWxfZGlnX3Bv cnQtPm1heF9sYW5lcyA8IDEsCj4gPiAgCQkgIk5vdCBlbm91Z2ggbGFuZXMgKCVkKSBmb3IgRFAg b24gcG9ydCAlY1xuIiwKPiA+ICAJCSBpbnRlbF9kaWdfcG9ydC0+bWF4X2xhbmVzLCBwb3J0X25h bWUocG9ydCkpKQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw X2xpbmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJh aW5pbmcuYwo+ID4gaW5kZXggMDA0OGI1Mi4uMTBmODFhYiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gPiBAQCAtMzEwLDkgKzMx MCwxNSBAQCB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ID4gIAkJCQlEUF9UUkFJTklOR19QQVRURVJOX0RJU0FCTEUpOwo+ID4gIH0KPiA+ ICAKPiA+IC12b2lkCj4gPiArYm9vbAo+ID4gIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICB7Cj4gPiAtCWludGVsX2RwX2xpbmtfdHJhaW5p bmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxfZHApOwo+ID4gLQlpbnRlbF9kcF9saW5rX3RyYWluaW5n X2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPiA+ICsJYm9vbCByZXQ7Cj4gPiArCj4g PiArCWlmIChpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKSkg ewo+ID4gKwkJcmV0ID0gaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXphdGlv bihpbnRlbF9kcCk7Cj4gPiArCQlpZiAocmV0KQo+ID4gKwkJCXJldHVybiB0cnVlOwo+ID4gKwl9 Cj4gPiArCXJldHVybiBmYWxzZTsKPiA+ICB9Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ ID4gaW5kZXggYmMyNWIyYi4uYzAzNzhhOSAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaAo+ID4gQEAgLTMxMiw2ICszMTIsOSBAQCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yIHsKPiA+ ICAJdm9pZCAqcG9ydDsgLyogc3RvcmUgdGhpcyBvcGFxdWUgYXMgaXRzIGlsbGVnYWwgdG8gZGVy ZWZlcmVuY2UgaXQgKi8KPiA+ICAKPiA+ICAJc3RydWN0IGludGVsX2RwICptc3RfcG9ydDsKPiA+ ICsKPiA+ICsJLyogV29yayBzdHJ1Y3QgdG8gc2NoZWR1bGUgYSB1ZXZlbnQgb24gbGluayB0cmFp biBmYWlsdXJlICovCj4gPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBtb2Rlc2V0X3JldHJ5X3dvcms7 Cj4gPiAgfTsKPiA+ICAKPiA+ICBzdHJ1Y3QgZHBsbCB7Cj4gPiBAQCAtOTAwLDcgKzkwMyw2IEBA IHN0cnVjdCBpbnRlbF9kcCB7Cj4gPiAgCWludCBmYWxsYmFja19saW5rX3JhdGU7Cj4gPiAgCXVp bnQ4X3QgZmFsbGJhY2tfbGFuZV9jb3VudDsKPiA+ICAJaW50IGZhbGxiYWNrX2xpbmtfcmF0ZV9p bmRleDsKPiA+IC0JYm9vbCBsaW5rX3RyYWluX2ZhaWxlZDsKPiA+ICAJdWludDhfdCBzaW5rX2Nv dW50Owo+ID4gIAlib29sIGxpbmtfbXN0Owo+ID4gIAlib29sIGhhc19hdWRpbzsKPiA+IEBAIC0x NDAyLDcgKzE0MDQsNyBAQCB2b2lkIGludGVsX2RwX3NldF9saW5rX3BhcmFtcyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gIAkJCSAgICAgIGJvb2wgbGlua19tc3QpOwo+ID4gIHZvaWQg aW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gPiAgCQkJCQkgICAgIGludCBsaW5rX3JhdGUsIHVpbnQ4X3QgbGFuZV9jb3Vu dCk7Cj4gPiAtdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApOwo+ID4gK2Jvb2wgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKTsKPiA+ICB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbW9kZSk7Cj4gPiAgdm9pZCBpbnRlbF9kcF9lbmNv ZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gCj4gLS0gCj4gSmFuaSBO aWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=