From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2 4/4] drm/i915: Implement Link Rate fallback on Link training failure Date: Tue, 01 Nov 2016 10:49:14 +0200 Message-ID: <87shrbk2k5.fsf@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id BE14D6E3D1 for ; Tue, 1 Nov 2016 08:49:22 +0000 (UTC) In-Reply-To: <1477703245-27375-5-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org T24gU2F0LCAyOSBPY3QgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gSWYgbGluayB0cmFpbmluZyBhdCBhIGxpbmsgcmF0ZSBvcHRpbWFsIGZv ciBhIHBhcnRpY3VsYXIKPiBtb2RlIGZhaWxzIGR1cmluZyBtb2Rlc2V0J3MgYXRvbWljIGNvbW1p dCBwaGFzZSwgdGhlbiB3ZQo+IGxldCB0aGUgbW9kZXNldCBjb21wbGV0ZSBhbmQgdGhlbiByZXRy eS4gV2Ugc2F2ZSB0aGUgbGluayByYXRlCj4gdmFsdWUgYXQgd2hpY2ggbGluayB0cmFpbmluZyBm YWlsZWQsIHVwZGF0ZSB0aGUgbGluayBzdGF0dXMgcHJvcGVydHkKPiB0byAiQkFEIiBhbmQgdXNl IGEgbG93ZXIgbGluayByYXRlIHRvIHBydW5lIHRoZSBtb2Rlcy4gSXQgd2lsbCByZWRvCj4gdGhl IG1vZGVzZXQgb24gdGhlIGN1cnJlbnQgbW9kZSBhdCBsb3dlciBsaW5rIHJhdGUgb3IgaWYgdGhl IGN1cnJlbnQKPiBtb2RlIGdldHMgcHJ1bmVkIGR1ZSB0byBsb3dlciBsaW5rIGNvbnN0cmFpbnRz IHRoZW4sIGl0IHdpbGwgc2VuZCBhCj4gaG90cGx1ZyB1ZXZlbnQgZm9yIHVzZXJzcGFjZSB0byBo YW5kbGUgaXQuCj4KPiBUaGlzIGlzIGFsc28gcmVxdWlyZWQgdG8gcGFzcyBEUCBDVFMgdGVzdHMg NC4zLjEuMywgNC4zLjEuNCwKPiA0LjMuMS42Lgo+Cj4gdjI6Cj4gKiBTcXVhc2hlZCBhIGZldyBw YXRjaGVzIChKYW5pIE5pa3VsYSkKPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGlu dXguaW50ZWwuY29tPgo+IENjOiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNv bT4KPiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4g U2lnbmVkLW9mZi1ieTogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4K PiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMgICAgICAgICAgIHwg IDQgKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwg MjMgKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAg ICAgICB8IDc0ICsrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgfCAxMiArKystLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAgICAgfCAgNSArLQo+ICA1IGZpbGVzIGNoYW5n ZWQsIDExMCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9h dG9taWNfaGVscGVyLmMKPiBpbmRleCA3NWFkMDFkLi5hM2RmM2E0IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2RybV9hdG9taWNfaGVscGVyLmMKPiBAQCAtNTE5LDYgKzUxOSwxMCBAQCBzdGF0aWMgaW50IGhh bmRsZV9jb25mbGljdGluZ19lbmNvZGVycyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4gIAkJCQkJICAgICAgIGNvbm5lY3Rvcl9zdGF0ZSk7Cj4gIAkJaWYgKHJldCkKPiAgCQkJcmV0 dXJuIHJldDsKPiArCj4gKwkJY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2V4aXN0aW5nX2Ny dGNfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvci0+c3RhdGUtPmNydGMpOwo+ICsJCWlmIChjb25uZWN0 b3ItPmxpbmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkKPiArCQkJY3J0Y19z dGF0ZS0+Y29ubmVjdG9yc19jaGFuZ2VkID0gdHJ1ZTsKPiAgCX0KPiAgCj4gIAkvKgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggOTM4YWM0ZC4uMzE5ZWVjYSAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTE2ODQsNiArMTY4NCw4IEBAIHN0YXRpYyB2b2lkIGlu dGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJ c3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFz ZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVuY29k ZXItPmJhc2UuZGV2KTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGRpX2dldF9lbmNvZGVy X3BvcnQoZW5jb2Rlcik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0 b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gIAo+ICAJaW50ZWxfZHBf c2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLCBsaW5rX3JhdGUsIGxhbmVfY291bnQsCj4gIAkJCQkg bGlua19tc3QpOwo+IEBAIC0xNjk0LDcgKzE2OTYsMjYgQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRp X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlpbnRlbF9w cmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIpOwo+ICAJaW50ZWxfZGRpX2luaXRfZHBfYnVm X3JlZyhlbmNvZGVyKTsKPiAgCWludGVsX2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwgRFJNX01PREVf RFBNU19PTik7Cj4gLQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiArCWlm ICghaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCkpIHsKPiArCQlEUk1fREVCVUdf S01TKCJMaW5rIFRyYWluaW5nIGZhaWxlZCBhdCBsaW5rIHJhdGUgPSAlZCwgbGFuZSBjb3VudCA9 ICVkIiwKPiArCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50KTsKPiArCQlpbnRlbF9kcC0+ bGlua190cmFpbl9mYWlsZWQgPSB0cnVlOwo+ICsJCWludGVsX2RwX2dldF9saW5rX3RyYWluX2Zh bGxiYWNrX3ZhbHVlcyhpbnRlbF9kcCwgbGlua19yYXRlLAo+ICsJCQkJCQkJbGFuZV9jb3VudCk7 Cj4gKwkJLyogU2NoZWR1bGUgYSBIb3RwbHVnIFVldmVudCB0byB1c2Vyc3BhY2UgdG8gc3RhcnQg bW9kZXNldCAqLwo+ICsJCXNjaGVkdWxlX3dvcmsoJmludGVsX2Nvbm5lY3Rvci0+bW9kZXNldF9y ZXRyeV93b3JrKTsKClRoaXMgaXMgbm90IGp1c3QgYWJvdXQgRERJLiBOZWVkIHRvIGRvIHRoaXMg Zm9yIHRoZSBvdGhlciBjYXNlcyB0b28uCgo+ICsJfSBlbHNlIHsKPiArCQlEUk1fREVCVUdfS01T KCJMaW5rIFRyYWluaW5nIFBhc3NlZCBhdCBMaW5rIFJhdGUgPSAlZCwgTGFuZSBjb3VudCA9ICVk IiwKPiArCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50KTsKPiArCQlpbnRlbF9kcC0+bGlu a190cmFpbl9mYWlsZWQgPSBmYWxzZTsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRl X2luZGV4ID0gLTE7Cj4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZSA9IDA7Cj4gKwkJ aW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291bnQgPSAwOwo+ICsJCWNvbm5lY3Rvci0+bGlua19z dGF0dXMgPSBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EOwo+ICsJCWludGVsX2RwX3NldF9saW5r X3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJCQkJCSAgRFJNX01PREVfTElOS19TVEFU VVNfR09PRCk7CgpMb29rcyBsaWtlIHlvdSBuZXZlciBhY3R1YWxseSByZWFkIGNvbm5lY3Rvci0+ bGlua19zdGF0dXMuLi4gV2h5IGRvIHlvdQpuZWVkIGJvdGggY29ubmVjdG9yLT5saW5rX3N0YXR1 cyBhbmQgaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkPyBEbyB5b3UKdGhpbmsgeW91IGhhdmUg NCBzdGF0ZXM/IFdoYXQgYXJlIHRoZXk/IENhbid0IHRoaXMgYWxsIGJlIGluIHN5bmMgd2l0aAp0 aGUgcHJvcGVydHk/Cgo+ICsJfQo+ICsKPiAgCWlmIChwb3J0ICE9IFBPUlRfQSB8fCBJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkpCj4gIAkJaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2Rw KTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IGZiNGZjZGQuLmQxZjBlMmMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtMzU0LDggKzM1NCwxNCBAQCB2b2lk IGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLAo+ICAJCXRhcmdldF9jbG9jayA9IGZpeGVkX21vZGUtPmNsb2NrOwo+ICAJfQo+ ICAKPiAtCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7 Cj4gLQltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gKwkv KiBQcnVuZSB0aGUgbW9kZXMgdXNpbmcgdGhlIGZhbGxiYWNrIGxpbmsgcmF0ZS9sYW5lIGNvdW50 ICovCj4gKwlpZiAoaW50ZWxfZHAtPmxpbmtfdHJhaW5fZmFpbGVkKSB7Cj4gKwkJbWF4X2xpbmtf Y2xvY2sgPSBpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlOwo+ICsJCW1heF9sYW5lcyA9IGlu dGVsX2RwLT5mYWxsYmFja19sYW5lX2NvdW50Owo+ICsJfSBlbHNlIHsKPiArCQltYXhfbGlua19j bG9jayA9IGludGVsX2RwX21heF9saW5rX3JhdGUoaW50ZWxfZHApOwo+ICsJCW1heF9sYW5lcyA9 IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPiArCX0KPiAgCj4gIAltYXhfcmF0 ZSA9IGludGVsX2RwX21heF9kYXRhX3JhdGUobWF4X2xpbmtfY2xvY2ssIG1heF9sYW5lcyk7Cj4g IAltb2RlX3JhdGUgPSBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKHRhcmdldF9jbG9jaywgMTgpOwo+ IEBAIC0xNjQwLDYgKzE2NDYsMTIgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19EQkxDTEspCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiArCS8qIEZhbGwg YmFjayB0byBsb3dlciBsaW5rIHJhdGUgaW4gY2FzZSBvZiBmYWlsdXJlIGluIHByZXZpb3VzIG1v ZGVzZXQgKi8KPiArCWlmIChpbnRlbF9kcC0+bGlua190cmFpbl9mYWlsZWQpIHsKPiArCQltaW5f bGFuZV9jb3VudCA9IG1heF9sYW5lX2NvdW50ID0gaW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291 bnQ7Cj4gKwkJbWluX2Nsb2NrID0gbWF4X2Nsb2NrID0gaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtf cmF0ZV9pbmRleDsKPiArCX0KPiArCgpNeSBnZW5lcmFsIGZlZWxpbmcgaXMgdGhhdCB0aGVyZSdz IHN0YXJ0aW5nIHRvIGJlIGEgYml0IHRvbyBtdWNoIHNwZWNpYWwKY2FzaW5nIGFyb3VuZCB0aGUg ZmFsbGJhY2sgdmFsdWVzLiBJJ20gbm90IGRlY2lkZWQgd2UgbmVlZCB0byBmaXggdGhpcwpyaWdo dCBhd2F5IGluIHRoaXMgc2VyaWVzLCBvciB3aGV0aGVyIGl0IGNhbiBiZSBmb2xsb3ctdXAgd29y ay4KCk9uZSBpZGVhIGlzIHRvIGNvbXB1dGUgdGhlIGNvbW1vbiByYXRlcyBhbmQgbGFuZXMgb25j ZSB3aGVuIHRoZXkncmUKZmlyc3QgbmVlZGVkLCBhbmQgYWxsIG9mIHRoZSBoZWxwZXJzIHdvdWxk IHVzZSB0aGF0IGluZm8uIFRoZSBmYWxsYmFjawpjb2RlIHdvdWxkIGp1c3QgdHJpbSB0aG9zZSwg YW5kIHRoZSBjb25kaXRpb25hbCBmYWxsYmFjayBzdHVmZiBjb3VsZCBiZQpyZW1vdmVkIGZyb20g YWxsIG92ZXIgdGhlIHBsYWNlLgoKPiAgCURSTV9ERUJVR19LTVMoIkRQIGxpbmsgY29tcHV0YXRp b24gd2l0aCBtYXggbGFuZSBjb3VudCAlaSAiCj4gIAkJICAgICAgIm1heCBidyAlZCBwaXhlbCBj bG9jayAlaUtIelxuIiwKPiAgCQkgICAgICBtYXhfbGFuZV9jb3VudCwgY29tbW9uX3JhdGVzW21h eF9jbG9ja10sCj4gQEAgLTQ0MjMsNiArNDQzNSwxMyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kaWdp dGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAg CQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2FjdGl2ZSA9IDA7Cj4gIAkJaW50ZWxfZHAtPmNv bXBsaWFuY2VfdGVzdF90eXBlID0gMDsKPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2Rh dGEgPSAwOwo+ICsJCWludGVsX2RwLT5saW5rX3RyYWluX2ZhaWxlZCA9IGZhbHNlOwo+ICsJCWlu dGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGVfaW5kZXggPSAtMTsKPiArCQlpbnRlbF9kcC0+ZmFs bGJhY2tfbGlua19yYXRlID0gMDsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9 IDA7Cj4gKwkJY29ubmVjdG9yLT5saW5rX3N0YXR1cyA9IERSTV9NT0RFX0xJTktfU1RBVFVTX0dP T0Q7Cj4gKwkJaW50ZWxfZHBfc2V0X2xpbmtfc3RhdHVzX3Byb3BlcnR5KGNvbm5lY3RvciwKPiAr CQkJCQkJICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiAgCj4gIAkJaWYgKGludGVsX2Rw LT5pc19tc3QpIHsKPiAgCQkJRFJNX0RFQlVHX0tNUygiTVNUIGRldmljZSBtYXkgaGF2ZSBkaXNh cHBlYXJlZCAlZCB2cyAlZFxuIiwKPiBAQCAtNDUxNCw4ICs0NTMzLDEyIEBAIHN0YXRpYyBib29s IGludGVsX2RpZ2l0YWxfcG9ydF9jb25uZWN0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc11cbiIsCj4gIAkJICAg ICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUpOwo+ICAKPiArCS8qIElmIHRo aXMgaXMgYSByZXRyeSBkdWUgdG8gbGluayB0cmlhbmluZyBmYWlsdXJlICovCj4gKwlpZiAoc3Rh dHVzID09IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkICYmIGludGVsX2RwLT5saW5rX3RyYWlu X2ZhaWxlZCkKPiArCQlyZXR1cm4gc3RhdHVzOwo+ICsKPiAgCS8qIElmIGZ1bGwgZGV0ZWN0IGlz IG5vdCBwZXJmb3JtZWQgeWV0LCBkbyBhIGZ1bGwgZGV0ZWN0ICovCj4gLQlpZiAoIWludGVsX2Rw LT5kZXRlY3RfZG9uZSkKPiArCWlmICghaW50ZWxfZHAtPmRldGVjdF9kb25lICYmICFpbnRlbF9k cC0+bGlua190cmFpbl9mYWlsZWQpCj4gIAkJc3RhdHVzID0gaW50ZWxfZHBfbG9uZ19wdWxzZShp bnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiAgCj4gIAlpbnRlbF9kcC0+ZGV0ZWN0X2Rv bmUgPSBmYWxzZTsKPiBAQCAtNTY5Miw2ICs1NzE1LDQ3IEBAIHN0YXRpYyBib29sIGludGVsX2Vk cF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJcmV0dXJuIGZh bHNlOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpbnRlbF9kcF9tb2Rlc2V0X3JldHJ5X3dvcmtf Zm4oc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICppbnRlbF9jb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y Owo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7Cj4gKwlib29sIHZlcmJvc2VfcHJ1 bmUgPSB0cnVlOwo+ICsJYm9vbCByZXByb2JlID0gZmFsc2U7Cj4gKwo+ICsJaW50ZWxfY29ubmVj dG9yID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfY29ubmVjdG9yKSwKPiArCQkJ CSAgICAgICBtb2Rlc2V0X3JldHJ5X3dvcmspOwo+ICsJY29ubmVjdG9yID0gJmludGVsX2Nvbm5l Y3Rvci0+YmFzZTsKPiArCj4gKwkvKiBHcmFiIHRoZSBsb2NrcyBiZWZvcmUgY2hhbmdpbmcgY29u bmVjdG9yIHByb3BlcnR5Ki8KPiArCW11dGV4X2xvY2soJmNvbm5lY3Rvci0+ZGV2LT5tb2RlX2Nv bmZpZy5tdXRleCk7Cj4gKwlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxuIiwgY29u bmVjdG9yLT5iYXNlLmlkLAo+ICsJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7Cj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3ItPm1vZGVzLCBoZWFkKSB7Cj4gKwkJbW9kZS0+ c3RhdHVzID0gaW50ZWxfZHBfbW9kZV92YWxpZChjb25uZWN0b3IsCj4gKwkJCQkJCSAgIG1vZGUp Owo+ICsJCWlmIChtb2RlLT5zdGF0dXMgIT0gTU9ERV9PSykKPiArCQkJcmVwcm9iZSA9IHRydWU7 Cj4gKwl9Cj4gKwlkcm1fbW9kZV9wcnVuZV9pbnZhbGlkKGNvbm5lY3Rvci0+ZGV2LCAmY29ubmVj dG9yLT5tb2RlcywKPiArCQkJICAgICAgIHZlcmJvc2VfcHJ1bmUpOwo+ICsKPiArCS8qIFNldCBj b25uZWN0b3IgbGluayBzdGF0dXMgdG8gQkFEIG9ubHkgaWYgbW9kZXNldCByZXF1aXJlZAo+ICsJ ICogZm9yIHRoZSBjdXJyZW50IG1vZGUsIGlmIG1vZGUgbGlzdCBjaGFuZ2VkIHRoZW4ganVzdCBz ZW5kIHVldmVudAo+ICsJICogc28gdGhhdCBpdCBjYW4gcmVwcm9iZSB0aGUgY29ubmVjdG9ycyBh bmQgdmFsaWRhdGUgbW9kZXMgYW5kIGRvCj4gKwkgKiBhIG1vZGVzZXQgb24gYSBkaWZmZXJlbnQg dmFsaWQgbW9kZS4KPiArCSAqLwo+ICsJaWYgKCFyZXByb2JlKSB7Cj4gKwkJY29ubmVjdG9yLT5s aW5rX3N0YXR1cyA9IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRDsKPiArCQlpbnRlbF9kcF9zZXRf bGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVjdG9yLAo+ICsJCQkJCQkgIERSTV9NT0RFX0xJTktf U1RBVFVTX0JBRCk7Cj4gKwl9CgoKSSB0aGluayB0aGUgbGluayBzdGF0dXMgcHJvcGVydHkgc2hv dWxkIGJlIHNldCB0byBiYWQgdW5jb25kaXRpb25hbGx5CmhlcmUuIElmIHRoZSBjdXJyZW50IGxp bmsgaXMgYmFkLCBpdCBpcyBiYWQgcmlnaHQgbm93IGluZGVwZW5kZW50IG9mCm1vZGVzIGZpdHRp bmcgaW50byB0aGUgZmFsbGJhY2sgbGluayBwYXJhbWV0ZXJzLgoKV2hpY2ggbWFrZXMgbWUgdGhp bmssIHVubGVzcyBJJ20gbWlzc2luZyBzb21ldGhpbmcsIHRoYXQgeW91IG1pZ2h0IGJlCmFibGUg dG8gcHJ1bmUgdGhlIGludmFsaWQgbW9kZXMgYW5kIHNldCB0aGUgcHJvcGVydHkgcmlnaHQgYXdh eSB3aGVuCmxpbmsgdHJhaW5pbmcgZmFpbHMsIGFuZCBvbmx5IHVzZSB0aGUgd29yayB0byBkbwpk cm1fa21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50LgoKPiArCW11dGV4X3VubG9jaygmY29ubmVjdG9y LT5kZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCj4gKwkvKiBTZW5kIEhvdHBsdWcgdWV2ZW50 IHNvIHVzZXJzcGFjZSBjYW4gcmVwcm9iZSAqLwo+ICsJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChjb25uZWN0b3ItPmRldik7Cj4gK30KPiArCj4gIGJvb2wKPiAgaW50ZWxfZHBfaW5pdF9j b25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAkJ CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiBAQCAtNTcwNCw2ICs1 NzY4LDEwIEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ICAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9y dDsKPiAgCWludCB0eXBlOwo+ICAKPiArCS8qIEluaXRpYWxpemUgdGhlIHdvcmsgZm9yIG1vZGVz ZXQgaW4gY2FzZSBvZiBsaW5rIHRyYWluIGZhaWx1cmUgKi8KPiArCUlOSVRfV09SSygmaW50ZWxf Y29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5X3dvcmssCj4gKwkJICBpbnRlbF9kcF9tb2Rlc2V0X3Jl dHJ5X3dvcmtfZm4pOwo+ICsKPiAgCWlmIChXQVJOKGludGVsX2RpZ19wb3J0LT5tYXhfbGFuZXMg PCAxLAo+ICAJCSAiTm90IGVub3VnaCBsYW5lcyAoJWQpIGZvciBEUCBvbiBwb3J0ICVjXG4iLAo+ ICAJCSBpbnRlbF9kaWdfcG9ydC0+bWF4X2xhbmVzLCBwb3J0X25hbWUocG9ydCkpKQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiBpbmRleCAwMDQ4 YjUyLi4xMGY4MWFiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw X2xpbmtfdHJhaW5pbmcuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xp bmtfdHJhaW5pbmcuYwo+IEBAIC0zMTAsOSArMzEwLDE1IEBAIHZvaWQgaW50ZWxfZHBfc3RvcF9s aW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAkJCQlEUF9UUkFJTklOR19Q QVRURVJOX0RJU0FCTEUpOwo+ICB9Cj4gIAo+IC12b2lkCj4gK2Jvb2wKPiAgaW50ZWxfZHBfc3Rh cnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gLQlpbnRlbF9k cF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVsX2RwKTsKPiAtCWludGVsX2RwX2xp bmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24oaW50ZWxfZHApOwo+ICsJYm9vbCByZXQ7 Cj4gKwo+ICsJaWYgKGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2xvY2tfcmVjb3ZlcnkoaW50ZWxf ZHApKSB7Cj4gKwkJcmV0ID0gaW50ZWxfZHBfbGlua190cmFpbmluZ19jaGFubmVsX2VxdWFsaXph dGlvbihpbnRlbF9kcCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4g KwlyZXR1cm4gZmFsc2U7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGJj MjViMmIuLmE1NGU5YjcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0zMTIs NiArMzEyLDkgQEAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gIAl2b2lkICpwb3J0OyAvKiBz dG9yZSB0aGlzIG9wYXF1ZSBhcyBpdHMgaWxsZWdhbCB0byBkZXJlZmVyZW5jZSBpdCAqLwo+ICAK PiAgCXN0cnVjdCBpbnRlbF9kcCAqbXN0X3BvcnQ7Cj4gKwo+ICsJLyogV29yayBzdHJ1Y3QgdG8g c2NoZWR1bGUgYSB1ZXZlbnQgb24gbGluayB0cmFpbiBmYWlsdXJlICovCj4gKwlzdHJ1Y3Qgd29y a19zdHJ1Y3QgbW9kZXNldF9yZXRyeV93b3JrOwo+ICB9Owo+ICAKPiAgc3RydWN0IGRwbGwgewo+ IEBAIC0xNDAyLDcgKzE0MDUsNyBAQCB2b2lkIGludGVsX2RwX3NldF9saW5rX3BhcmFtcyhzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkgICAgICBib29sIGxpbmtfbXN0KTsKPiAgdm9p ZCBpbnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCwKPiAgCQkJCQkgICAgIGludCBsaW5rX3JhdGUsIHVpbnQ4X3QgbGFuZV9jb3Vu dCk7Cj4gLXZvaWQgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPiArYm9vbCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+ICB2b2lkIGludGVsX2RwX3N0b3BfbGlua190cmFpbihzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKTsKPiAgdm9pZCBpbnRlbF9kcF9zaW5rX2RwbXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgaW50IG1vZGUpOwo+ICB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQo c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyKTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3Bl biBTb3VyY2UgVGVjaG5vbG9neSBDZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==