From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 4/4] drm/i915: Implement Link Rate fallback on Link training failure Date: Tue, 1 Nov 2016 09:26:23 -0700 Message-ID: <20161101162623.GA21517@intel.com> References: <1477703245-27375-1-git-send-email-manasi.d.navare@intel.com> <1477703245-27375-5-git-send-email-manasi.d.navare@intel.com> <87shrbk2k5.fsf@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 713326E272 for ; Tue, 1 Nov 2016 16:24:39 +0000 (UTC) Content-Disposition: inline In-Reply-To: <87shrbk2k5.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 T24gVHVlLCBOb3YgMDEsIDIwMTYgYXQgMTA6NDk6MTRBTSArMDIwMCwgSmFuaSBOaWt1bGEgd3Jv dGU6Cj4gT24gU2F0LCAyOSBPY3QgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJl QGludGVsLmNvbT4gd3JvdGU6Cj4gPiBJZiBsaW5rIHRyYWluaW5nIGF0IGEgbGluayByYXRlIG9w dGltYWwgZm9yIGEgcGFydGljdWxhcgo+ID4gbW9kZSBmYWlscyBkdXJpbmcgbW9kZXNldCdzIGF0 b21pYyBjb21taXQgcGhhc2UsIHRoZW4gd2UKPiA+IGxldCB0aGUgbW9kZXNldCBjb21wbGV0ZSBh bmQgdGhlbiByZXRyeS4gV2Ugc2F2ZSB0aGUgbGluayByYXRlCj4gPiB2YWx1ZSBhdCB3aGljaCBs aW5rIHRyYWluaW5nIGZhaWxlZCwgdXBkYXRlIHRoZSBsaW5rIHN0YXR1cyBwcm9wZXJ0eQo+ID4g dG8gIkJBRCIgYW5kIHVzZSBhIGxvd2VyIGxpbmsgcmF0ZSB0byBwcnVuZSB0aGUgbW9kZXMuIEl0 IHdpbGwgcmVkbwo+ID4gdGhlIG1vZGVzZXQgb24gdGhlIGN1cnJlbnQgbW9kZSBhdCBsb3dlciBs aW5rIHJhdGUgb3IgaWYgdGhlIGN1cnJlbnQKPiA+IG1vZGUgZ2V0cyBwcnVuZWQgZHVlIHRvIGxv d2VyIGxpbmsgY29uc3RyYWludHMgdGhlbiwgaXQgd2lsbCBzZW5kIGEKPiA+IGhvdHBsdWcgdWV2 ZW50IGZvciB1c2Vyc3BhY2UgdG8gaGFuZGxlIGl0Lgo+ID4KPiA+IFRoaXMgaXMgYWxzbyByZXF1 aXJlZCB0byBwYXNzIERQIENUUyB0ZXN0cyA0LjMuMS4zLCA0LjMuMS40LAo+ID4gNC4zLjEuNi4K PiA+Cj4gPiB2MjoKPiA+ICogU3F1YXNoZWQgYSBmZXcgcGF0Y2hlcyAoSmFuaSBOaWt1bGEpCj4g Pgo+ID4gQ2M6IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBD YzogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gPiBDYzogVmlsbGUg U3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5 OiBNYW5hc2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gLS0tCj4gPiAg ZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgICAgIHwgIDQgKysKPiA+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICAgICAgICAgICAgfCAyMyArKysr KysrKy0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAg fCA3NCArKysrKysrKysrKysrKysrKysrKysrKysrLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfCAxMiArKystLQo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICA1ICstCj4gPiAgNSBmaWxlcyBjaGFu Z2VkLCAxMTAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gaW5kZXggNzVhZDAxZC4uYTNkZjNhNCAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYwo+ID4gQEAgLTUxOSw2ICs1MTksMTAgQEAg c3RhdGljIGludCBoYW5kbGVfY29uZmxpY3RpbmdfZW5jb2RlcnMoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlLAo+ID4gIAkJCQkJICAgICAgIGNvbm5lY3Rvcl9zdGF0ZSk7Cj4gPiAgCQlp ZiAocmV0KQo+ID4gIAkJCXJldHVybiByZXQ7Cj4gPiArCj4gPiArCQljcnRjX3N0YXRlID0gZHJt X2F0b21pY19nZXRfZXhpc3RpbmdfY3J0Y19zdGF0ZShzdGF0ZSwgY29ubmVjdG9yLT5zdGF0ZS0+ Y3J0Yyk7Cj4gPiArCQlpZiAoY29ubmVjdG9yLT5saW5rX3N0YXR1cyA9PSBEUk1fTU9ERV9MSU5L X1NUQVRVU19CQUQpCj4gPiArCQkJY3J0Y19zdGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1 ZTsKPiA+ICAJfQo+ID4gIAo+ID4gIAkvKgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ IGluZGV4IDkzOGFjNGQuLjMxOWVlY2EgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiA+IEBAIC0xNjg0LDYgKzE2ODQsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2Vu YWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICAJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwo+ID4gIAllbnVtIHBvcnQgcG9ydCA9IGludGVsX2RkaV9nZXRfZW5jb2Rlcl9wb3J0KGVu Y29kZXIpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBp bnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiA+ICAKPiA+ICAJaW50ZWxfZHBf c2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsCj4gPiAgCQkJ CSBsaW5rX21zdCk7Cj4gPiBAQCAtMTY5NCw3ICsxNjk2LDI2IEBAIHN0YXRpYyB2b2lkIGludGVs X2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gIAlp bnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIpOwo+ID4gIAlpbnRlbF9kZGlfaW5p dF9kcF9idWZfcmVnKGVuY29kZXIpOwo+ID4gIAlpbnRlbF9kcF9zaW5rX2RwbXMoaW50ZWxfZHAs IERSTV9NT0RFX0RQTVNfT04pOwo+ID4gLQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVs X2RwKTsKPiA+ICsJaWYgKCFpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKSkgewo+ ID4gKwkJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBmYWlsZWQgYXQgbGluayByYXRlID0g JWQsIGxhbmUgY291bnQgPSAlZCIsCj4gPiArCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50 KTsKPiA+ICsJCWludGVsX2RwLT5saW5rX3RyYWluX2ZhaWxlZCA9IHRydWU7Cj4gPiArCQlpbnRl bF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoaW50ZWxfZHAsIGxpbmtfcmF0ZSwK PiA+ICsJCQkJCQkJbGFuZV9jb3VudCk7Cj4gPiArCQkvKiBTY2hlZHVsZSBhIEhvdHBsdWcgVWV2 ZW50IHRvIHVzZXJzcGFjZSB0byBzdGFydCBtb2Rlc2V0ICovCj4gPiArCQlzY2hlZHVsZV93b3Jr KCZpbnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29yayk7Cj4gCj4gVGhpcyBpcyBub3Qg anVzdCBhYm91dCBEREkuIE5lZWQgdG8gZG8gdGhpcyBmb3IgdGhlIG90aGVyIGNhc2VzIHRvby4K PgoKWWVzLCBmaXJzdCBzZXJpZXMgd2lsbCBnIG91dCBmb3IgYWRkaW5nIHRoaXMgc3VwcG9ydCBm b3IgRERJLCB0aGVuIG1vcmUgcGF0Y2hlcwp0byBleHBhbmQgaXQgdG8gbm9uIERESSBwbGF0Zm9y bXMuCgogCj4gPiArCX0gZWxzZSB7Cj4gPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5n IFBhc3NlZCBhdCBMaW5rIFJhdGUgPSAlZCwgTGFuZSBjb3VudCA9ICVkIiwKPiA+ICsJCQkgICAg ICBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwo+ID4gKwkJaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFp bGVkID0gZmFsc2U7Cj4gPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlX2luZGV4ID0g LTE7Cj4gPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlID0gMDsKPiA+ICsJCWludGVs X2RwLT5mYWxsYmFja19sYW5lX2NvdW50ID0gMDsKPiA+ICsJCWNvbm5lY3Rvci0+bGlua19zdGF0 dXMgPSBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EOwo+ID4gKwkJaW50ZWxfZHBfc2V0X2xpbmtf c3RhdHVzX3Byb3BlcnR5KGNvbm5lY3RvciwKPiA+ICsJCQkJCQkgIERSTV9NT0RFX0xJTktfU1RB VFVTX0dPT0QpOwo+IAo+IExvb2tzIGxpa2UgeW91IG5ldmVyIGFjdHVhbGx5IHJlYWQgY29ubmVj dG9yLT5saW5rX3N0YXR1cy4uLiBXaHkgZG8geW91Cj4gbmVlZCBib3RoIGNvbm5lY3Rvci0+bGlu a19zdGF0dXMgYW5kIGludGVsX2RwLT5saW5rX3RyYWluX2ZhaWxlZD8gRG8geW91Cj4gdGhpbmsg eW91IGhhdmUgNCBzdGF0ZXM/IFdoYXQgYXJlIHRoZXk/IENhbid0IHRoaXMgYWxsIGJlIGluIHN5 bmMgd2l0aAo+IHRoZSBwcm9wZXJ0eT8KPiAKClRoaXMgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBt ZW1iZXIgb2YgZHJtX0Nvbm5lY3RvciBnZXRzIHJlYWQgaW4KZHJtX2F0b21pY19oZWxwZXJfY2hl Y2tfbW9kZXNldCgpIGluIHRoZSBkcml2ZXIgd2hlcmUgaXQgcmVhZHMgdGhpcwphbmQgc2V0cyBj cnRjX3N0YXRlLT5jb25uZWN0b3JfQ2hhbmdlZCB0byB0cnVlIGlmIHRoaXMgbGlua19zdGF0dXMK aGFzIGNoYW5nZWQuClRoaXMgaXMgcmVxdWlyZWQgc28gdGhhdCB0aGUgZHJpdmVyIGRvZXMgYSBj b21wbGV0ZSBtb2Rlc2V0LgpUaGlzIGNvbm5lY3Rvci0+bGlua19zdGF0dXMgd2FzIGluIHN5bmMg d2l0aCB0aGUgcHJvcGVydHkuIEJ1dCByZWFkaW5nIHRoZQpkcm1fb2JqZWN0IHByb3BlcnR5IGlu IGRybV9hdG9taWNfaGVscGVyX0NoZWNrX21vZGVzZXQgd2FzIGNhdXNpbmcgdGhlIHN5c3RlbSB0 bwpub3QgYm9vdC4KaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkIGFsc28ganVzdCBpbmRpY2F0 ZXMgaWYgdGhlIGxpbmsgZmFpbGVkLCBJIHdpbGwgaGF2ZSB0byBzZWUKaWYgaSBjYW4ganVzdCB1 c2UgY29ubmVjdG9yLT5saW5rX3N0YXR1cyBmb3IgdGhpcyBwdXJwb3NlLiAKCj4gPiArCX0KPiA+ ICsKPiA+ICAJaWYgKHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkK PiA+ICAJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gPiAgfQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBpbmRleCBmYjRmY2RkLi5kMWYwZTJjIDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gQEAgLTM1NCw4ICszNTQsMTQgQEAgdm9pZCBpbnRl bF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwKPiA+ICAJCXRhcmdldF9jbG9jayA9IGZpeGVkX21vZGUtPmNsb2NrOwo+ID4gIAl9Cj4g PiAgCj4gPiAtCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9k cCk7Cj4gPiAtCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsK PiA+ICsJLyogUHJ1bmUgdGhlIG1vZGVzIHVzaW5nIHRoZSBmYWxsYmFjayBsaW5rIHJhdGUvbGFu ZSBjb3VudCAqLwo+ID4gKwlpZiAoaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKSB7Cj4gPiAr CQltYXhfbGlua19jbG9jayA9IGludGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGU7Cj4gPiArCQlt YXhfbGFuZXMgPSBpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudDsKPiA+ICsJfSBlbHNlIHsK PiA+ICsJCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7 Cj4gPiArCQltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4g PiArCX0KPiA+ICAKPiA+ICAJbWF4X3JhdGUgPSBpbnRlbF9kcF9tYXhfZGF0YV9yYXRlKG1heF9s aW5rX2Nsb2NrLCBtYXhfbGFuZXMpOwo+ID4gIAltb2RlX3JhdGUgPSBpbnRlbF9kcF9saW5rX3Jl cXVpcmVkKHRhcmdldF9jbG9jaywgMTgpOwo+ID4gQEAgLTE2NDAsNiArMTY0NiwxMiBAQCBzdGF0 aWMgaW50IGludGVsX2RwX2NvbXB1dGVfYnBwKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g PiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZMQUdfREJMQ0xLKQo+ID4g IAkJcmV0dXJuIGZhbHNlOwo+ID4gIAo+ID4gKwkvKiBGYWxsIGJhY2sgdG8gbG93ZXIgbGluayBy YXRlIGluIGNhc2Ugb2YgZmFpbHVyZSBpbiBwcmV2aW91cyBtb2Rlc2V0ICovCj4gPiArCWlmIChp bnRlbF9kcC0+bGlua190cmFpbl9mYWlsZWQpIHsKPiA+ICsJCW1pbl9sYW5lX2NvdW50ID0gbWF4 X2xhbmVfY291bnQgPSBpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudDsKPiA+ICsJCW1pbl9j bG9jayA9IG1heF9jbG9jayA9IGludGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGVfaW5kZXg7Cj4g PiArCX0KPiA+ICsKPiAKPiBNeSBnZW5lcmFsIGZlZWxpbmcgaXMgdGhhdCB0aGVyZSdzIHN0YXJ0 aW5nIHRvIGJlIGEgYml0IHRvbyBtdWNoIHNwZWNpYWwKPiBjYXNpbmcgYXJvdW5kIHRoZSBmYWxs YmFjayB2YWx1ZXMuIEknbSBub3QgZGVjaWRlZCB3ZSBuZWVkIHRvIGZpeCB0aGlzCj4gcmlnaHQg YXdheSBpbiB0aGlzIHNlcmllcywgb3Igd2hldGhlciBpdCBjYW4gYmUgZm9sbG93LXVwIHdvcmsu Cj4gCj4gT25lIGlkZWEgaXMgdG8gY29tcHV0ZSB0aGUgY29tbW9uIHJhdGVzIGFuZCBsYW5lcyBv bmNlIHdoZW4gdGhleSdyZQo+IGZpcnN0IG5lZWRlZCwgYW5kIGFsbCBvZiB0aGUgaGVscGVycyB3 b3VsZCB1c2UgdGhhdCBpbmZvLiBUaGUgZmFsbGJhY2sKPiBjb2RlIHdvdWxkIGp1c3QgdHJpbSB0 aG9zZSwgYW5kIHRoZSBjb25kaXRpb25hbCBmYWxsYmFjayBzdHVmZiBjb3VsZCBiZQo+IHJlbW92 ZWQgZnJvbSBhbGwgb3ZlciB0aGUgcGxhY2UuCj4KClRoZXNlIGZhbGxiYWNrIHZhbHVlcyBnZXQg Y29tcHV0ZWQgaW4gYSBzZXBhcmF0ZSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBJIGhhdmUKYWRkZWQg aW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVzLiBJdCBpcyB0aGUgcHJldmlv dXMgcGF0Y2guIApJIHN0b3JlIHRoZSBmYWxsYmFjayB2YWx1ZXMgaW4gaW50ZWxfZHAgb25lIGF0 IGEgdGltZSBiZWNhdXNlIGZvciB0aGF0Cml0ZXJhdGlvbiBvZiBtb2Rlc2V0IHdlIG9ubHkgbmVl ZCB0byB0cnkgdGhlIGZhbGxiYWNrX2xpbmtfcmF0ZQphbmQgZmFsbGJhY2tfbGFuZV9jb3VudCBz byB3ZSBkb250IG5lZWQgYW4gYXJyYXkgaGVyZS4KQXJlIHlvdSBzdWdnZXN0aW5nIGp1c3QgY2hh bmdpbmcgdGhlIGNvbW1vbl9yYXRlcyBhcnJheSBpdHNlbGYgdG8gZ2V0IHRyaW1tZWQgdG8gdXNl IHRoZSB0cmltbWVkCmZhbGxiYWNrIHZhbHVlcyBhZnRlciBsaW5rIHRyYWluaW5nIGZhaWxzPyBD b3VsZCB5b3UgcGxlYXNlIGVsYWJvcmF0ZSB5b3VyIHRob3VnaHQ/CgoKIAo+ID4gIAlEUk1fREVC VUdfS01TKCJEUCBsaW5rIGNvbXB1dGF0aW9uIHdpdGggbWF4IGxhbmUgY291bnQgJWkgIgo+ID4g IAkJICAgICAgIm1heCBidyAlZCBwaXhlbCBjbG9jayAlaUtIelxuIiwKPiA+ICAJCSAgICAgIG1h eF9sYW5lX2NvdW50LCBjb21tb25fcmF0ZXNbbWF4X2Nsb2NrXSwKPiA+IEBAIC00NDIzLDYgKzQ0 MzUsMTMgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90 ZXN0X2FjdGl2ZSA9IDA7Cj4gPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgPSAw Owo+ID4gIAkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF9kYXRhID0gMDsKPiA+ICsJCWludGVs X2RwLT5saW5rX3RyYWluX2ZhaWxlZCA9IGZhbHNlOwo+ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNr X2xpbmtfcmF0ZV9pbmRleCA9IC0xOwo+ID4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0 ZSA9IDA7Cj4gPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9IDA7Cj4gPiArCQlj b25uZWN0b3ItPmxpbmtfc3RhdHVzID0gRFJNX01PREVfTElOS19TVEFUVVNfR09PRDsKPiA+ICsJ CWludGVsX2RwX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gPiArCQkJCQkJ ICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiA+ICAKPiA+ICAJCWlmIChpbnRlbF9kcC0+ aXNfbXN0KSB7Cj4gPiAgCQkJRFJNX0RFQlVHX0tNUygiTVNUIGRldmljZSBtYXkgaGF2ZSBkaXNh cHBlYXJlZCAlZCB2cyAlZFxuIiwKPiA+IEBAIC00NTE0LDggKzQ1MzMsMTIgQEAgc3RhdGljIGJv b2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4iLAo+ID4g IAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ID4gIAo+ID4g KwkvKiBJZiB0aGlzIGlzIGEgcmV0cnkgZHVlIHRvIGxpbmsgdHJpYW5pbmcgZmFpbHVyZSAqLwo+ ID4gKwlpZiAoc3RhdHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmIGludGVsX2Rw LT5saW5rX3RyYWluX2ZhaWxlZCkKPiA+ICsJCXJldHVybiBzdGF0dXM7Cj4gPiArCj4gPiAgCS8q IElmIGZ1bGwgZGV0ZWN0IGlzIG5vdCBwZXJmb3JtZWQgeWV0LCBkbyBhIGZ1bGwgZGV0ZWN0ICov Cj4gPiAtCWlmICghaW50ZWxfZHAtPmRldGVjdF9kb25lKQo+ID4gKwlpZiAoIWludGVsX2RwLT5k ZXRlY3RfZG9uZSAmJiAhaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKQo+ID4gIAkJc3RhdHVz ID0gaW50ZWxfZHBfbG9uZ19wdWxzZShpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiA+ ICAKPiA+ICAJaW50ZWxfZHAtPmRldGVjdF9kb25lID0gZmFsc2U7Cj4gPiBAQCAtNTY5Miw2ICs1 NzE1LDQ3IEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gIAlyZXR1cm4gZmFsc2U7Cj4gPiAgfQo+ID4gIAo+ID4gK3N0 YXRpYyB2b2lkIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCj4gPiArewo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25u ZWN0b3I7Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gPiArCXN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4gKwlib29sIHZlcmJvc2VfcHJ1bmUgPSB0cnVl Owo+ID4gKwlib29sIHJlcHJvYmUgPSBmYWxzZTsKPiA+ICsKPiA+ICsJaW50ZWxfY29ubmVjdG9y ID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfY29ubmVjdG9yKSwKPiA+ICsJCQkJ ICAgICAgIG1vZGVzZXRfcmV0cnlfd29yayk7Cj4gPiArCWNvbm5lY3RvciA9ICZpbnRlbF9jb25u ZWN0b3ItPmJhc2U7Cj4gPiArCj4gPiArCS8qIEdyYWIgdGhlIGxvY2tzIGJlZm9yZSBjaGFuZ2lu ZyBjb25uZWN0b3IgcHJvcGVydHkqLwo+ID4gKwltdXRleF9sb2NrKCZjb25uZWN0b3ItPmRldi0+ bW9kZV9jb25maWcubXV0ZXgpOwo+ID4gKwlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVz XVxuIiwgY29ubmVjdG9yLT5iYXNlLmlkLAo+ID4gKwkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsK PiA+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShtb2RlLCAmY29ubmVjdG9yLT5tb2RlcywgaGVhZCkg ewo+ID4gKwkJbW9kZS0+c3RhdHVzID0gaW50ZWxfZHBfbW9kZV92YWxpZChjb25uZWN0b3IsCj4g PiArCQkJCQkJICAgbW9kZSk7Cj4gPiArCQlpZiAobW9kZS0+c3RhdHVzICE9IE1PREVfT0spCj4g PiArCQkJcmVwcm9iZSA9IHRydWU7Cj4gPiArCX0KPiA+ICsJZHJtX21vZGVfcHJ1bmVfaW52YWxp ZChjb25uZWN0b3ItPmRldiwgJmNvbm5lY3Rvci0+bW9kZXMsCj4gPiArCQkJICAgICAgIHZlcmJv c2VfcHJ1bmUpOwo+ID4gKwo+ID4gKwkvKiBTZXQgY29ubmVjdG9yIGxpbmsgc3RhdHVzIHRvIEJB RCBvbmx5IGlmIG1vZGVzZXQgcmVxdWlyZWQKPiA+ICsJICogZm9yIHRoZSBjdXJyZW50IG1vZGUs IGlmIG1vZGUgbGlzdCBjaGFuZ2VkIHRoZW4ganVzdCBzZW5kIHVldmVudAo+ID4gKwkgKiBzbyB0 aGF0IGl0IGNhbiByZXByb2JlIHRoZSBjb25uZWN0b3JzIGFuZCB2YWxpZGF0ZSBtb2RlcyBhbmQg ZG8KPiA+ICsJICogYSBtb2Rlc2V0IG9uIGEgZGlmZmVyZW50IHZhbGlkIG1vZGUuCj4gPiArCSAq Lwo+ID4gKwlpZiAoIXJlcHJvYmUpIHsKPiA+ICsJCWNvbm5lY3Rvci0+bGlua19zdGF0dXMgPSBE Uk1fTU9ERV9MSU5LX1NUQVRVU19CQUQ7Cj4gPiArCQlpbnRlbF9kcF9zZXRfbGlua19zdGF0dXNf cHJvcGVydHkoY29ubmVjdG9yLAo+ID4gKwkJCQkJCSAgRFJNX01PREVfTElOS19TVEFUVVNfQkFE KTsKPiA+ICsJfQo+IAo+IAo+IEkgdGhpbmsgdGhlIGxpbmsgc3RhdHVzIHByb3BlcnR5IHNob3Vs ZCBiZSBzZXQgdG8gYmFkIHVuY29uZGl0aW9uYWxseQo+IGhlcmUuIElmIHRoZSBjdXJyZW50IGxp bmsgaXMgYmFkLCBpdCBpcyBiYWQgcmlnaHQgbm93IGluZGVwZW5kZW50IG9mCj4gbW9kZXMgZml0 dGluZyBpbnRvIHRoZSBmYWxsYmFjayBsaW5rIHBhcmFtZXRlcnMuCj4gCj4gV2hpY2ggbWFrZXMg bWUgdGhpbmssIHVubGVzcyBJJ20gbWlzc2luZyBzb21ldGhpbmcsIHRoYXQgeW91IG1pZ2h0IGJl Cj4gYWJsZSB0byBwcnVuZSB0aGUgaW52YWxpZCBtb2RlcyBhbmQgc2V0IHRoZSBwcm9wZXJ0eSBy aWdodCBhd2F5IHdoZW4KPiBsaW5rIHRyYWluaW5nIGZhaWxzLCBhbmQgb25seSB1c2UgdGhlIHdv cmsgdG8gZG8KPiBkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50Lgo+CgpUaGUgcHJvYmxlbSB3 aXRoIHNldHRpbmcgdGhlIGxpbmtfc3RhdHVzIHByb3BlcnR5IEJBRCBpcnJlc3BlY3RpdmUgb2Yg dGhlIAptb2RlIHBydW5pbmcgaXMgdGhhdCwgaWYgdGhlIG1vZGVzIGdldHMgcHJ1bmVkIGFuZCB3 ZSBzZXQgdGhlIGxpbmtfc3R0YXVzIHRvIEJBRApDaHJpcyBXaWxzb24ncyBkcml2ZXIgY2hlY2tz IHRoYXQgdGhlIGxpbmsgc3RhdHVzIGlzIEJBRCBhbmQgaGUgZmlyc3QgdHJpZXMgdG8gYXR0ZW1w dAp0aGUgbW9kZXNldCBhdCB0aGUgY3VycmVudCBtb2RlIHdpdGhvdXQgY2FsbGluZyBtb2RlX3Zh bGlkLCBhbmQgdGhhdCByZXN1bHRzIGluIGEgZmFpbHVyZQppbiBlbm9jZGVyLT5jb21wdXRlX2Nv bmZpZyBzaW5jZSBub3cgdGhlIG1vZGUgZG9lcyBub3QgZml0IGFuZCB0aGUgcGlwZSBjYW5ub3Qg YmUgCmNvbmZpZ3VyZWQuIFRoaXMgY3JlYXRlcyBhIGxvdCBvZiB3YXJuaW5ncy9lcnJvcnMva2Vy bmVsIGNyYXNoIGV2ZW50dWFsbHkuIApTbyB0aGUgYmVzdCB3YXkgaXMgdG8gc2V0IHRoZSBsaW5r IHN0YXR1cyBhcyBiYWQgb25seSB3aGVuIHdlIHdhbnQgdG8gZm9yY2UgdGhlIG1vZGVzZXQKYXQg dGhlIGN1cnJlbnQgbW9kZSwgaWYgdGhlIG1vZGVzIGdldCBwcnVuZWQgdGhlbiBpbiBhbnkgY2Fz ZSB1c2Vyc3BhY2Ugd2lsbCBkbyBhbm90aGVyIG1vZGVzZXQKYXQgdGhlIG5leHQgbG93ZXIgbW9k ZS4KCk1hbmFzaSAKPiA+ICsJbXV0ZXhfdW5sb2NrKCZjb25uZWN0b3ItPmRldi0+bW9kZV9jb25m aWcubXV0ZXgpOwo+ID4gKwo+ID4gKwkvKiBTZW5kIEhvdHBsdWcgdWV2ZW50IHNvIHVzZXJzcGFj ZSBjYW4gcmVwcm9iZSAqLwo+ID4gKwlkcm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGNvbm5l Y3Rvci0+ZGV2KTsKPiA+ICt9Cj4gPiArCj4gPiAgYm9vbAo+ID4gIGludGVsX2RwX2luaXRfY29u bmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ID4gIAkJ CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+IEBAIC01NzA0LDYg KzU3NjgsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAsCj4gPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQt PnBvcnQ7Cj4gPiAgCWludCB0eXBlOwo+ID4gIAo+ID4gKwkvKiBJbml0aWFsaXplIHRoZSB3b3Jr IGZvciBtb2Rlc2V0IGluIGNhc2Ugb2YgbGluayB0cmFpbiBmYWlsdXJlICovCj4gPiArCUlOSVRf V09SSygmaW50ZWxfY29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5X3dvcmssCj4gPiArCQkgIGludGVs X2RwX21vZGVzZXRfcmV0cnlfd29ya19mbik7Cj4gPiArCj4gPiAgCWlmIChXQVJOKGludGVsX2Rp Z19wb3J0LT5tYXhfbGFuZXMgPCAxLAo+ID4gIAkJICJOb3QgZW5vdWdoIGxhbmVzICglZCkgZm9y IERQIG9uIHBvcnQgJWNcbiIsCj4gPiAgCQkgaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcywgcG9y dF9uYW1lKHBvcnQpKSkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcF9saW5rX3RyYWluaW5nLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5r X3RyYWluaW5nLmMKPiA+IGluZGV4IDAwNDhiNTIuLjEwZjgxYWIgMTAwNjQ0Cj4gPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gQEAgLTMxMCw5 ICszMTAsMTUgQEAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiA+ICAJCQkJRFBfVFJBSU5JTkdfUEFUVEVSTl9ESVNBQkxFKTsKPiA+ICB9 Cj4gPiAgCj4gPiAtdm9pZAo+ID4gK2Jvb2wKPiA+ICBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWlu KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgewo+ID4gLQlpbnRlbF9kcF9saW5rX3Ry YWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsKPiA+IC0JaW50ZWxfZHBfbGlua190cmFp bmluZ19jaGFubmVsX2VxdWFsaXphdGlvbihpbnRlbF9kcCk7Cj4gPiArCWJvb2wgcmV0Owo+ID4g Kwo+ID4gKwlpZiAoaW50ZWxfZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9k cCkpIHsKPiA+ICsJCXJldCA9IGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6 YXRpb24oaW50ZWxfZHApOwo+ID4gKwkJaWYgKHJldCkKPiA+ICsJCQlyZXR1cm4gdHJ1ZTsKPiA+ ICsJfQo+ID4gKwlyZXR1cm4gZmFsc2U7Cj4gPiAgfQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+IGluZGV4IGJjMjViMmIuLmE1NGU5YjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiA+IEBAIC0zMTIsNiArMzEyLDkgQEAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7 Cj4gPiAgCXZvaWQgKnBvcnQ7IC8qIHN0b3JlIHRoaXMgb3BhcXVlIGFzIGl0cyBpbGxlZ2FsIHRv IGRlcmVmZXJlbmNlIGl0ICovCj4gPiAgCj4gPiAgCXN0cnVjdCBpbnRlbF9kcCAqbXN0X3BvcnQ7 Cj4gPiArCj4gPiArCS8qIFdvcmsgc3RydWN0IHRvIHNjaGVkdWxlIGEgdWV2ZW50IG9uIGxpbmsg dHJhaW4gZmFpbHVyZSAqLwo+ID4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3QgbW9kZXNldF9yZXRyeV93 b3JrOwo+ID4gIH07Cj4gPiAgCj4gPiAgc3RydWN0IGRwbGwgewo+ID4gQEAgLTE0MDIsNyArMTQw NSw3IEBAIHZvaWQgaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gPiAgCQkJICAgICAgYm9vbCBsaW5rX21zdCk7Cj4gPiAgdm9pZCBpbnRlbF9kcF9n ZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiA+ICAJCQkJCSAgICAgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBsYW5lX2NvdW50KTsKPiA+IC12 b2lkIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7 Cj4gPiArYm9vbCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApOwo+ID4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+ID4gIHZvaWQgaW50ZWxfZHBfc2lua19kcG1zKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+ICB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiAKPiAtLSAKPiBKYW5pIE5pa3VsYSwgSW50 ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==