From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 5/5] drm/i915: Implement Link Rate fallback on Link training failure Date: Thu, 17 Nov 2016 14:49:02 +0200 Message-ID: <87h976z2yp.fsf@intel.com> References: <1479179603-28476-1-git-send-email-manasi.d.navare@intel.com> <1479179603-28476-6-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: In-Reply-To: <1479179603-28476-6-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, dri-devel@lists.freedesktop.org Cc: Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCAxNSBOb3YgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gSWYgbGluayB0cmFpbmluZyBhdCBhIGxpbmsgcmF0ZSBvcHRpbWFsIGZv ciBhIHBhcnRpY3VsYXIKPiBtb2RlIGZhaWxzIGR1cmluZyBtb2Rlc2V0J3MgYXRvbWljIGNvbW1p dCBwaGFzZSwgdGhlbiB3ZQo+IGxldCB0aGUgbW9kZXNldCBjb21wbGV0ZSBhbmQgdGhlbiByZXRy eS4gV2Ugc2F2ZSB0aGUgbGluayByYXRlCj4gdmFsdWUgYXQgd2hpY2ggbGluayB0cmFpbmluZyBm YWlsZWQsIHVwZGF0ZSB0aGUgbGluayBzdGF0dXMgcHJvcGVydHkKPiB0byAiQkFEIiBhbmQgdXNl IGEgbG93ZXIgbGluayByYXRlIHRvIHBydW5lIHRoZSBtb2Rlcy4gSXQgd2lsbCByZWRvCj4gdGhl IG1vZGVzZXQgb24gdGhlIGN1cnJlbnQgbW9kZSBhdCBsb3dlciBsaW5rIHJhdGUgb3IgaWYgdGhl IGN1cnJlbnQKPiBtb2RlIGdldHMgcHJ1bmVkIGR1ZSB0byBsb3dlciBsaW5rIGNvbnN0cmFpbnRz IHRoZW4sIGl0IHdpbGwgc2VuZCBhCj4gaG90cGx1ZyB1ZXZlbnQgZm9yIHVzZXJzcGFjZSB0byBo YW5kbGUgaXQuCj4KPiBUaGlzIGlzIGFsc28gcmVxdWlyZWQgdG8gcGFzcyBEUCBDVFMgdGVzdHMg NC4zLjEuMywgNC4zLjEuNCwKPiA0LjMuMS42Lgo+Cj4gdjU6Cj4gKiBNb3ZlIHNldCBsaW5rIHN0 YXR1cyB0byBkcm0gY29yZSAoRGFuaWVsIFZldHRlciwgSmFuaSBOaWt1bGEpCj4gdjQ6Cj4gKiBB ZGQgZmFsbGJhY2sgc3VwcG9ydCBmb3Igbm9uIERESSBwbGF0Zm9ybXMgdG9vCj4gKiBTZXQgY29u bmVjdG9yLT5saW5rIHN0YXR1cyBpbnNpZGUgc2V0X2xpbmtfc3RhdHVzIGZ1bmN0aW9uCj4gKEph bmkgTmlrdWxhKQo+IHYzOgo+ICogU2V0IGxpbmsgc3RhdHVzIHByb3BlcnR5IHRvIEJBZCB1bmNv bmRpdGlvbmFsbHkgKEphbmkgTmlrdWxhKQo+ICogRG9udCB1c2UgdHdvIHNlcGFyYXRlIHZhcmlh YmxlcyBsaW5rX3RyYWluX2ZhaWxlZCBhbmQgbGlua19zdGF0dXMKPiB0byBpbmRpY2F0ZSBzYW1l IHRoaW5nIChKYW5pIE5pa3VsYSkKPiB2MjoKPiAqIFNxdWFzaGVkIGEgZmV3IHBhdGNoZXMgKEph bmkgTmlrdWxhKQo+Cj4gQWNrZWQtYnk6IFRvbnkgQ2hlbmcgPHRvbnkuY2hlbmdAYW1kLmNvbT4K PiBBY2tlZC1ieTogSGFycnkgV2VudGxhbmQgPEhhcnJ5LndlbnRsYW5kQGFtZC5jb20+Cj4gQ2M6 IEphbmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IERhbmllbCBW ZXR0ZXIgPGRhbmllbC52ZXR0ZXJAaW50ZWwuY29tPgo+IENjOiBWaWxsZSBTeXJqYWxhIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJl IDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYyAgICAgICAgICAgICAgfCAgMjEgKysrKystCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8IDEwMiArKysrKysrKysrKysrKysrKysr KysrKysrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMg fCAgMTIgKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAg ICB8ICAgNiArLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDEzMSBpbnNlcnRpb25zKCspLCAxMCBkZWxl dGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5kZXggMGFkNGUxNi4uNTdi N2VlOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAgLTE2ODQsNiArMTY4NCw4 IEBAIHN0YXRpYyB2b2lkIGludGVsX2RkaV9wcmVfZW5hYmxlX2RwKHN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyLAo+ICAJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRl bF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSB0b19pOTE1KGVuY29kZXItPmJhc2UuZGV2KTsKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50 ZWxfZGRpX2dldF9lbmNvZGVyX3BvcnQoZW5jb2Rlcik7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICppbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ICsJ c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7 Cj4gIAo+ICAJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLCBsaW5rX3JhdGUsIGxh bmVfY291bnQsCj4gIAkJCQkgbGlua19tc3QpOwo+IEBAIC0xNjk0LDcgKzE2OTYsMjQgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIsCj4gIAlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKGVuY29kZXIpOwo+ICAJaW50 ZWxfZGRpX2luaXRfZHBfYnVmX3JlZyhlbmNvZGVyKTsKPiAgCWludGVsX2RwX3NpbmtfZHBtcyhp bnRlbF9kcCwgRFJNX01PREVfRFBNU19PTik7Cj4gLQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWlu KGludGVsX2RwKTsKPiArCWlmICghaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCkp IHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIGZhaWxlZCBhdCBsaW5rIHJhdGUg PSAlZCwgbGFuZSBjb3VudCA9ICVkIiwKPiArCQkJICAgICAgbGlua19yYXRlLCBsYW5lX2NvdW50 KTsKPiArCQlpZiAoIWludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhpbnRl bF9kcCwKPiArCQkJCQkJCSAgICAgbGlua19yYXRlLAo+ICsJCQkJCQkJICAgICBsYW5lX2NvdW50 KSkKPiArCQkJLyogU2NoZWR1bGUgYSBIb3RwbHVnIFVldmVudCB0byB1c2Vyc3BhY2UgdG8gc3Rh cnQgbW9kZXNldCAqLwo+ICsJCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9jb25uZWN0b3ItPm1vZGVz ZXRfcmV0cnlfd29yayk7Cj4gKwl9IGVsc2Ugewo+ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJh aW5pbmcgUGFzc2VkIGF0IExpbmsgUmF0ZSA9ICVkLCBMYW5lIGNvdW50ID0gJWQiLAo+ICsJCQkg ICAgICBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19saW5r X3JhdGVfaW5kZXggPSAtMTsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlID0gMDsK PiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9IDA7Cj4gKwkJZHJtX21vZGVfY29u bmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJCQkJCQkgICAg RFJNX01PREVfTElOS19TVEFUVVNfR09PRCk7Cj4gKwl9CgpDb2RlIGJsb2NrIHdpdGggaW50ZWxf ZHBfc3RhcnRfbGlua190cmFpbigpIGZhaWx1cmUgaGFuZGxpbmcuIE9rYXkuCgo+ICsKPiAgCWlm IChwb3J0ICE9IFBPUlRfQSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCj4gIAkJaW50ZWxf ZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2RwKTsKPiAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+IGluZGV4IGU4N2I0NTEuLmFmMmY4YjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiBAQCAtMzUzLDggKzM1MywxNCBAQCBpbnQgaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJh Y2tfdmFsdWVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAkJdGFyZ2V0X2Nsb2NrID0g Zml4ZWRfbW9kZS0+Y2xvY2s7Cj4gIAl9Cj4gIAo+IC0JbWF4X2xpbmtfY2xvY2sgPSBpbnRlbF9k cF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsKPiAtCW1heF9sYW5lcyA9IGludGVsX2RwX21heF9s YW5lX2NvdW50KGludGVsX2RwKTsKPiArCS8qIFBydW5lIHRoZSBtb2RlcyB1c2luZyB0aGUgZmFs bGJhY2sgbGluayByYXRlL2xhbmUgY291bnQgKi8KPiArCWlmIChjb25uZWN0b3ItPmxpbmtfc3Rh dHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkgewo+ICsJCW1heF9saW5rX2Nsb2NrID0g aW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZTsKPiArCQltYXhfbGFuZXMgPSBpbnRlbF9kcC0+ ZmFsbGJhY2tfbGFuZV9jb3VudDsKPiArCX0gZWxzZSB7Cj4gKwkJbWF4X2xpbmtfY2xvY2sgPSBp bnRlbF9kcF9tYXhfbGlua19yYXRlKGludGVsX2RwKTsKPiArCQltYXhfbGFuZXMgPSBpbnRlbF9k cF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4gKwl9Cj4gIAo+ICAJbWF4X3JhdGUgPSBpbnRl bF9kcF9tYXhfZGF0YV9yYXRlKG1heF9saW5rX2Nsb2NrLCBtYXhfbGFuZXMpOwo+ICAJbW9kZV9y YXRlID0gaW50ZWxfZHBfbGlua19yZXF1aXJlZCh0YXJnZXRfY2xvY2ssIDE4KTsKPiBAQCAtMTU5 MSw2ICsxNTk3LDcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ICAJZW51bSBwb3J0IHBvcnQgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCktPnBvcnQ7Cj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMocGlwZV9jb25maWctPmJhc2UuY3J0Yyk7Cj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4g IAlpbnQgbGFuZV9jb3VudCwgY2xvY2s7Cj4gIAlpbnQgbWluX2xhbmVfY291bnQgPSAxOwo+ICAJ aW50IG1heF9sYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHApOwo+ IEBAIC0xNjM4LDYgKzE2NDUsMTIgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21wdXRlX2JwcChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJaWYgKGFkanVzdGVkX21vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19EQkxDTEspCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiArCS8qIEZhbGwg YmFjayB0byBsb3dlciBsaW5rIHJhdGUgaW4gY2FzZSBvZiBmYWlsdXJlIGluIHByZXZpb3VzIG1v ZGVzZXQgKi8KPiArCWlmIChjb25uZWN0b3ItPmxpbmtfc3RhdHVzID09IERSTV9NT0RFX0xJTktf U1RBVFVTX0JBRCkgewo+ICsJCW1pbl9sYW5lX2NvdW50ID0gbWF4X2xhbmVfY291bnQgPSBpbnRl bF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudDsKPiArCQltaW5fY2xvY2sgPSBtYXhfY2xvY2sgPSBp bnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlX2luZGV4Owo+ICsJfQo+ICsKPiAgCURSTV9ERUJV R19LTVMoIkRQIGxpbmsgY29tcHV0YXRpb24gd2l0aCBtYXggbGFuZSBjb3VudCAlaSAiCj4gIAkJ ICAgICAgIm1heCBidyAlZCBwaXhlbCBjbG9jayAlaUtIelxuIiwKPiAgCQkgICAgICBtYXhfbGFu ZV9jb3VudCwgY29tbW9uX3JhdGVzW21heF9jbG9ja10sCj4gQEAgLTI3ODEsNiArMjc5NCw4IEBA IHN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiAgCXN0cnVj dCBpbnRlbF9jcnRjICpjcnRjID0gdG9faW50ZWxfY3J0YyhlbmNvZGVyLT5iYXNlLmNydGMpOwo+ ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0 dGFjaGVkX2Nvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAm aW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICAJdWludDMyX3QgZHBfcmVnID0gSTkxNV9SRUFEKGlu dGVsX2RwLT5vdXRwdXRfcmVnKTsKPiAgCWVudW0gcGlwZSBwaXBlID0gY3J0Yy0+cGlwZTsKPiAg Cj4gQEAgLTI4MTEsNyArMjgyNiwyMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAl9Cj4gIAo+ICAJaW50ZWxfZHBfc2lua19k cG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKPiAtCWludGVsX2RwX3N0YXJ0X2xpbmtf dHJhaW4oaW50ZWxfZHApOwo+ICsJaWYgKCFpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVs X2RwKSkgewo+ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgZmFpbGVkIGF0IGxpbmsg cmF0ZSA9ICVkLCBsYW5lIGNvdW50ID0gJWQiLAo+ICsJCQkgICAgICBpbnRlbF9kcC0+bGlua19y YXRlLCBpbnRlbF9kcC0+bGFuZV9jb3VudCk7Cj4gKwkJaWYgKCFpbnRlbF9kcF9nZXRfbGlua190 cmFpbl9mYWxsYmFja192YWx1ZXMoaW50ZWxfZHAsCj4gKwkJCQkJCQkgICAgIGludGVsX2RwLT5s aW5rX3JhdGUsCj4gKwkJCQkJCQkgICAgIGludGVsX2RwLT5sYW5lX2NvdW50KSkKPiArCQkJLyog U2NoZWR1bGUgYSBIb3RwbHVnIFVldmVudCB0byB1c2Vyc3BhY2UgdG8gc3RhcnQgbW9kZXNldCAq Lwo+ICsJCQlzY2hlZHVsZV93b3JrKCZpbnRlbF9jb25uZWN0b3ItPm1vZGVzZXRfcmV0cnlfd29y ayk7Cj4gKwl9IGVsc2Ugewo+ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgUGFzc2Vk IGF0IExpbmsgUmF0ZSA9ICVkLCBMYW5lIGNvdW50ID0gJWQiLAo+ICsJCQkgICAgICBpbnRlbF9k cC0+bGlua19yYXRlLCBpbnRlbF9kcC0+bGFuZV9jb3VudCk7Cj4gKwkJaW50ZWxfZHAtPmZhbGxi YWNrX2xpbmtfcmF0ZV9pbmRleCA9IC0xOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19saW5rX3Jh dGUgPSAwOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19sYW5lX2NvdW50ID0gMDsKPiArCQlkcm1f bW9kZV9jb25uZWN0b3Jfc2V0X2xpbmtfc3RhdHVzX3Byb3BlcnR5KGNvbm5lY3RvciwKPiArCQkJ CQkJCSAgICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiArCX0KClNlY29uZCBpZGVudGlj YWwgY29weSBvZiBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKCkgZmFpbHVyZSBoYW5kbGluZy4K Cj4gIAlpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICAKPiAgCWlmIChwaXBl X2NvbmZpZy0+aGFzX2F1ZGlvKSB7Cj4gQEAgLTQwMTgsNiArNDA0OSw4IEBAIHN0YXRpYyB2b2lk IGludGVsX2RwX2hhbmRsZV90ZXN0X3JlcXVlc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiAgCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVs X2RwKS0+YmFzZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ICsJc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4g IAo+ICAJLyogU3VwcHJlc3MgdW5kZXJydW5zIGNhdXNlZCBieSByZS10cmFpbmluZyAqLwo+ICAJ aW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgY3J0Yy0+cGlw ZSwgZmFsc2UpOwo+IEBAIC00MDI1LDcgKzQwNTgsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBf aGFuZGxlX3Rlc3RfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCWludGVs X3NldF9wY2hfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsCj4gIAkJCQkJCSAgICAg IGludGVsX2NydGNfcGNoX3RyYW5zY29kZXIoY3J0YyksIGZhbHNlKTsKPiAgCj4gLQlpbnRlbF9k cF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiArCWlmICghaW50ZWxfZHBfc3RhcnRfbGlu a190cmFpbihpbnRlbF9kcCkpIHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIGZh aWxlZCBhdCBsaW5rIHJhdGUgPSAlZCwgbGFuZSBjb3VudCA9ICVkIiwKPiArCQkJICAgICAgaW50 ZWxfZHAtPmxpbmtfcmF0ZSwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJCWlmICghaW50ZWxf ZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVzKGludGVsX2RwLAo+ICsJCQkJCQkJICAg ICBpbnRlbF9kcC0+bGlua19yYXRlLAo+ICsJCQkJCQkJICAgICBpbnRlbF9kcC0+bGFuZV9jb3Vu dCkpCj4gKwkJCS8qIFNjaGVkdWxlIGEgSG90cGx1ZyBVZXZlbnQgdG8gdXNlcnNwYWNlIHRvIHN0 YXJ0IG1vZGVzZXQgKi8KPiArCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfY29ubmVjdG9yLT5tb2Rl c2V0X3JldHJ5X3dvcmspOwo+ICsJfSBlbHNlIHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRy YWluaW5nIFBhc3NlZCBhdCBMaW5rIFJhdGUgPSAlZCwgTGFuZSBjb3VudCA9ICVkIiwKPiArCQkJ ICAgICAgaW50ZWxfZHAtPmxpbmtfcmF0ZSwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJCWlu dGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGVfaW5kZXggPSAtMTsKPiArCQlpbnRlbF9kcC0+ZmFs bGJhY2tfbGlua19yYXRlID0gMDsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9 IDA7Cj4gKwkJZHJtX21vZGVfY29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25u ZWN0b3IsCj4gKwkJCQkJCQkgICAgRFJNX01PREVfTElOS19TVEFUVVNfR09PRCk7Cj4gKwl9CgpU aGlyZCBpZGVudGljYWwgY29weSBvZiBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKCkgZmFpbHVy ZQpoYW5kbGluZy4gUGxlYXNlIGFic3RyYWN0LgoKV2h5IGRvbid0IGFsbCBpbnRlbF9kcF9zdGFy dF9saW5rX3RyYWluKCkgY2FsbHMgbmVlZCB0aGlzPyBDb3VsZCB0aGUKYWJvdmUgY29kZSBiZSAq d2l0aGluKiBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKCk/Cgo+ICAJaW50ZWxfZHBfc3RvcF9s aW5rX3RyYWluKGludGVsX2RwKTsKPiAgCj4gIAkvKiBLZWVwIHVuZGVycnVuIHJlcG9ydGluZyBk aXNhYmxlZCB1bnRpbCB0aGluZ3MgYXJlIHN0YWJsZSAqLwo+IEBAIC00NDE5LDYgKzQ0NjgsMTEg QEAgc3RhdGljIGJvb2wgaW50ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF9hY3Rp dmUgPSAwOwo+ICAJCWludGVsX2RwLT5jb21wbGlhbmNlX3Rlc3RfdHlwZSA9IDA7Cj4gIAkJaW50 ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF9kYXRhID0gMDsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tf bGlua19yYXRlX2luZGV4ID0gLTE7Cj4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZSA9 IDA7Cj4gKwkJaW50ZWxfZHAtPmZhbGxiYWNrX2xhbmVfY291bnQgPSAwOwo+ICsJCWRybV9tb2Rl X2Nvbm5lY3Rvcl9zZXRfbGlua19zdGF0dXNfcHJvcGVydHkoY29ubmVjdG9yLAo+ICsJCQkJCQkJ ICAgIERSTV9NT0RFX0xJTktfU1RBVFVTX0dPT0QpOwo+ICAKPiAgCQlpZiAoaW50ZWxfZHAtPmlz X21zdCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJNU1QgZGV2aWNlIG1heSBoYXZlIGRpc2FwcGVh cmVkICVkIHZzICVkXG4iLAo+IEBAIC00NTEwLDYgKzQ1NjQsMTEgQEAgc3RhdGljIGJvb2wgaW50 ZWxfZGlnaXRhbF9wb3J0X2Nvbm5lY3RlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXVxuIiwKPiAgCQkgICAgICBj b25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rvci0+bmFtZSk7Cj4gIAo+ICsJLyogSWYgdGhpcyBp cyBhIHJldHJ5IGR1ZSB0byBsaW5rIHRyaWFuaW5nIGZhaWx1cmUgKi8KPiArCWlmIChzdGF0dXMg PT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgJiYKPiArCSAgICBjb25uZWN0b3ItPmxpbmtf c3RhdHVzID09IERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCkKPiArCQlyZXR1cm4gc3RhdHVzOwo+ ICsKPiAgCS8qIElmIGZ1bGwgZGV0ZWN0IGlzIG5vdCBwZXJmb3JtZWQgeWV0LCBkbyBhIGZ1bGwg ZGV0ZWN0ICovCj4gIAlpZiAoIWludGVsX2RwLT5kZXRlY3RfZG9uZSkKPiAgCQlzdGF0dXMgPSBp bnRlbF9kcF9sb25nX3B1bHNlKGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3IpOwo+IEBAIC01 Njc3LDYgKzU3MzYsMzcgQEAgc3RhdGljIGJvb2wgaW50ZWxfZWRwX2luaXRfY29ubmVjdG9yKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gK3N0 YXRpYyB2b2lkIGludGVsX2RwX21vZGVzZXRfcmV0cnlfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1 Y3QgKndvcmspCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3Rv cjsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Rp c3BsYXlfbW9kZSAqbW9kZTsKPiArCWJvb2wgdmVyYm9zZV9wcnVuZSA9IHRydWU7Cj4gKwo+ICsJ aW50ZWxfY29ubmVjdG9yID0gY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqaW50ZWxfY29ubmVj dG9yKSwKPiArCQkJCSAgICAgICBtb2Rlc2V0X3JldHJ5X3dvcmspOwo+ICsJY29ubmVjdG9yID0g JmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiArCj4gKwkvKiBHcmFiIHRoZSBsb2NrcyBiZWZvcmUg Y2hhbmdpbmcgY29ubmVjdG9yIHByb3BlcnR5Ki8KPiArCW11dGV4X2xvY2soJmNvbm5lY3Rvci0+ ZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVk OiVzXVxuIiwgY29ubmVjdG9yLT5iYXNlLmlkLAo+ICsJCSAgICAgIGNvbm5lY3Rvci0+bmFtZSk7 Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KG1vZGUsICZjb25uZWN0b3ItPm1vZGVzLCBoZWFkKSB7 Cj4gKwkJbW9kZS0+c3RhdHVzID0gaW50ZWxfZHBfbW9kZV92YWxpZChjb25uZWN0b3IsCj4gKwkJ CQkJCSAgIG1vZGUpOwo+ICsJfQo+ICsJZHJtX21vZGVfcHJ1bmVfaW52YWxpZChjb25uZWN0b3It PmRldiwgJmNvbm5lY3Rvci0+bW9kZXMsCj4gKwkJCSAgICAgICB2ZXJib3NlX3BydW5lKTsKPiAr CS8qIFNldCBjb25uZWN0b3IgbGluayBzdGF0dXMgdG8gQkFEIGFuZCBzZW5kIGEgVWV2ZW50IHRv IG5vdGlmeQo+ICsJICogdXNlcnNwYWNlIHRvIGRvIGEgbW9kZXNldC4KPiArCSAqLwo+ICsJZHJt X21vZGVfY29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJ CQkJCSAgICBEUk1fTU9ERV9MSU5LX1NUQVRVU19CQUQpOwo+ICsJbXV0ZXhfdW5sb2NrKCZjb25u ZWN0b3ItPmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+ICsJLyogU2VuZCBIb3RwbHVnIHVldmVu dCBzbyB1c2Vyc3BhY2UgY2FuIHJlcHJvYmUgKi8KPiArCWRybV9rbXNfaGVscGVyX2hvdHBsdWdf ZXZlbnQoY29ubmVjdG9yLT5kZXYpOwo+ICt9Cj4gKwo+ICBib29sCj4gIGludGVsX2RwX2luaXRf Y29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAJ CQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4gQEAgLTU2ODksNiAr NTc3OSwxMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiAgCWVudW0gcG9ydCBwb3J0ID0gaW50ZWxfZGlnX3BvcnQtPnBv cnQ7Cj4gIAlpbnQgdHlwZTsKPiAgCj4gKwkvKiBJbml0aWFsaXplIHRoZSB3b3JrIGZvciBtb2Rl c2V0IGluIGNhc2Ugb2YgbGluayB0cmFpbiBmYWlsdXJlICovCj4gKwlJTklUX1dPUksoJmludGVs X2Nvbm5lY3Rvci0+bW9kZXNldF9yZXRyeV93b3JrLAo+ICsJCSAgaW50ZWxfZHBfbW9kZXNldF9y ZXRyeV93b3JrX2ZuKTsKPiArCj4gIAlpZiAoV0FSTihpbnRlbF9kaWdfcG9ydC0+bWF4X2xhbmVz IDwgMSwKPiAgCQkgIk5vdCBlbm91Z2ggbGFuZXMgKCVkKSBmb3IgRFAgb24gcG9ydCAlY1xuIiwK PiAgCQkgaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lcywgcG9ydF9uYW1lKHBvcnQpKSkKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gaW5kZXggMDA0 OGI1Mi4uMTBmODFhYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9saW5rX3RyYWluaW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9s aW5rX3RyYWluaW5nLmMKPiBAQCAtMzEwLDkgKzMxMCwxNSBAQCB2b2lkIGludGVsX2RwX3N0b3Bf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCQkJRFBfVFJBSU5JTkdf UEFUVEVSTl9ESVNBQkxFKTsKPiAgfQo+ICAKPiAtdm9pZAo+ICtib29sCj4gIGludGVsX2RwX3N0 YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+IC0JaW50ZWxf ZHBfbGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCk7Cj4gLQlpbnRlbF9kcF9s aW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKGludGVsX2RwKTsKPiArCWJvb2wgcmV0 Owo+ICsKPiArCWlmIChpbnRlbF9kcF9saW5rX3RyYWluaW5nX2Nsb2NrX3JlY292ZXJ5KGludGVs X2RwKSkgewo+ICsJCXJldCA9IGludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6 YXRpb24oaW50ZWxfZHApOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiB0cnVlOwo+ICsJfQo+ ICsJcmV0dXJuIGZhbHNlOwoKVXN1YWxseSBoYXBweSBkYXkgc2NlbmFyaW8gZ29lcyBhdCB0aGUg dG9wIGluZGVudGF0aW9uIGxldmVsLCBhbmQgZXJyb3JzCmFyZSBoYW5kbGVkIGluIHRoZSBuZXN0 ZWQgY2FzZXMgd2l0aCBlYXJseSByZXR1cm5zLiBDb21wYXJlIHdpdGg6CgppbnRlbF9kcF9zdGFy dF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCnsKCWlmICghaW50ZWxfZHBf bGlua190cmFpbmluZ19jbG9ja19yZWNvdmVyeShpbnRlbF9kcCkpCiAgICAgICAgCXJldHVybiBm YWxzZTsKCglpZiAoIWludGVsX2RwX2xpbmtfdHJhaW5pbmdfY2hhbm5lbF9lcXVhbGl6YXRpb24o aW50ZWxfZHApKQoJCXJldHVybiBmYWxzZTsKCglyZXR1cm4gdHJ1ZTsKfQoKPiAgfQo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNTVjZWI0NC4uODg5MThmNCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gQEAgLTMxMiw2ICszMTIsOSBAQCBzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yIHsKPiAgCXZvaWQgKnBvcnQ7IC8qIHN0b3JlIHRoaXMgb3BhcXVlIGFzIGl0cyBpbGxl Z2FsIHRvIGRlcmVmZXJlbmNlIGl0ICovCj4gIAo+ICAJc3RydWN0IGludGVsX2RwICptc3RfcG9y dDsKPiArCj4gKwkvKiBXb3JrIHN0cnVjdCB0byBzY2hlZHVsZSBhIHVldmVudCBvbiBsaW5rIHRy YWluIGZhaWx1cmUgKi8KPiArCXN0cnVjdCB3b3JrX3N0cnVjdCBtb2Rlc2V0X3JldHJ5X3dvcms7 Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgZHBsbCB7Cj4gQEAgLTg5MCw3ICs4OTMsNiBAQCBzdHJ1Y3Qg aW50ZWxfZHAgewo+ICAJaW50IGZhbGxiYWNrX2xpbmtfcmF0ZTsKPiAgCXVpbnQ4X3QgZmFsbGJh Y2tfbGFuZV9jb3VudDsKPiAgCWludCBmYWxsYmFja19saW5rX3JhdGVfaW5kZXg7Cj4gLQlib29s IGxpbmtfdHJhaW5fZmFpbGVkOwo+ICAJdWludDhfdCBzaW5rX2NvdW50Owo+ICAJYm9vbCBsaW5r X21zdDsKPiAgCWJvb2wgaGFzX2F1ZGlvOwo+IEBAIC0xMzg5LDcgKzEzOTEsNyBAQCB2b2lkIGlu dGVsX2RwX3NldF9saW5rX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkg ICAgICBib29sIGxpbmtfbXN0KTsKPiAgaW50IGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxi YWNrX3ZhbHVlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCQkJCSAgICBpbnQgbGlu a19yYXRlLCB1aW50OF90IGxhbmVfY291bnQpOwo+IC12b2lkIGludGVsX2RwX3N0YXJ0X2xpbmtf dHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gK2Jvb2wgaW50ZWxfZHBfc3RhcnRf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAgdm9pZCBpbnRlbF9kcF9z dG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gIHZvaWQgaW50ZWxf ZHBfc2lua19kcG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiAgdm9p ZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cgot LSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=