From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH 5/5] drm/i915: Implement Link Rate fallback on Link training failure Date: Wed, 16 Nov 2016 09:34:50 -0800 Message-ID: <20161116173450.GB8268@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: Content-Disposition: inline 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: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Cc: Daniel Vetter List-Id: dri-devel@lists.freedesktop.org SmFuaS9WaWxsZSBjb3VsZCB5b3UgcGxlYXNlIHJldmlldyB0aGlzIHBhdGNoPwpUaGlzIGhhcyBi ZWVuIEFDS2VkIGJ5IERSTSBhbmQgaXMgZ29vZCBmcm9tIERSTSBwb2ludCBmbyB2aWV3LgpCdXQg SSBuZWVkIHItYiBmcm9tIGVpdGhlciBvZiB5b3UgZm9yIHRoaXMgdG8gZ2V0IG1lcmdlZC4KClJl Z2FyZHMKTWFuYXNpCgpPbiBNb24sIE5vdiAxNCwgMjAxNiBhdCAwNzoxMzoyM1BNIC0wODAwLCBN YW5hc2kgTmF2YXJlIHdyb3RlOgo+IElmIGxpbmsgdHJhaW5pbmcgYXQgYSBsaW5rIHJhdGUgb3B0 aW1hbCBmb3IgYSBwYXJ0aWN1bGFyCj4gbW9kZSBmYWlscyBkdXJpbmcgbW9kZXNldCdzIGF0b21p YyBjb21taXQgcGhhc2UsIHRoZW4gd2UKPiBsZXQgdGhlIG1vZGVzZXQgY29tcGxldGUgYW5kIHRo ZW4gcmV0cnkuIFdlIHNhdmUgdGhlIGxpbmsgcmF0ZQo+IHZhbHVlIGF0IHdoaWNoIGxpbmsgdHJh aW5pbmcgZmFpbGVkLCB1cGRhdGUgdGhlIGxpbmsgc3RhdHVzIHByb3BlcnR5Cj4gdG8gIkJBRCIg YW5kIHVzZSBhIGxvd2VyIGxpbmsgcmF0ZSB0byBwcnVuZSB0aGUgbW9kZXMuIEl0IHdpbGwgcmVk bwo+IHRoZSBtb2Rlc2V0IG9uIHRoZSBjdXJyZW50IG1vZGUgYXQgbG93ZXIgbGluayByYXRlIG9y IGlmIHRoZSBjdXJyZW50Cj4gbW9kZSBnZXRzIHBydW5lZCBkdWUgdG8gbG93ZXIgbGluayBjb25z dHJhaW50cyB0aGVuLCBpdCB3aWxsIHNlbmQgYQo+IGhvdHBsdWcgdWV2ZW50IGZvciB1c2Vyc3Bh Y2UgdG8gaGFuZGxlIGl0Lgo+IAo+IFRoaXMgaXMgYWxzbyByZXF1aXJlZCB0byBwYXNzIERQIENU UyB0ZXN0cyA0LjMuMS4zLCA0LjMuMS40LAo+IDQuMy4xLjYuCj4gCj4gdjU6Cj4gKiBNb3ZlIHNl dCBsaW5rIHN0YXR1cyB0byBkcm0gY29yZSAoRGFuaWVsIFZldHRlciwgSmFuaSBOaWt1bGEpCj4g djQ6Cj4gKiBBZGQgZmFsbGJhY2sgc3VwcG9ydCBmb3Igbm9uIERESSBwbGF0Zm9ybXMgdG9vCj4g KiBTZXQgY29ubmVjdG9yLT5saW5rIHN0YXR1cyBpbnNpZGUgc2V0X2xpbmtfc3RhdHVzIGZ1bmN0 aW9uCj4gKEphbmkgTmlrdWxhKQo+IHYzOgo+ICogU2V0IGxpbmsgc3RhdHVzIHByb3BlcnR5IHRv IEJBZCB1bmNvbmRpdGlvbmFsbHkgKEphbmkgTmlrdWxhKQo+ICogRG9udCB1c2UgdHdvIHNlcGFy YXRlIHZhcmlhYmxlcyBsaW5rX3RyYWluX2ZhaWxlZCBhbmQgbGlua19zdGF0dXMKPiB0byBpbmRp Y2F0ZSBzYW1lIHRoaW5nIChKYW5pIE5pa3VsYSkKPiB2MjoKPiAqIFNxdWFzaGVkIGEgZmV3IHBh dGNoZXMgKEphbmkgTmlrdWxhKQo+IAo+IEFja2VkLWJ5OiBUb255IENoZW5nIDx0b255LmNoZW5n QGFtZC5jb20+Cj4gQWNrZWQtYnk6IEhhcnJ5IFdlbnRsYW5kIDxIYXJyeS53ZW50bGFuZEBhbWQu Y29tPgo+IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tPgo+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGludGVsLmNvbT4KPiBDYzogVmlsbGUgU3ly amFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWFu YXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwgIDIxICsrKysrLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgfCAxMDIgKysrKysrKysr KysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190 cmFpbmluZy5jIHwgIDEyICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAg ICAgICAgICAgICAgfCAgIDYgKy0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygr KSwgMTAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBpbmRleCAw YWQ0ZTE2Li41N2I3ZWU5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBAQCAtMTY4 NCw2ICsxNjg0LDggQEAgc3RhdGljIHZvaWQgaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0g ZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJZW51bSBwb3J0 IHBvcnQgPSBpbnRlbF9kZGlfZ2V0X2VuY29kZXJfcG9ydChlbmNvZGVyKTsKPiArCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25u ZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2Nvbm5l Y3Rvci0+YmFzZTsKPiAgCj4gIAlpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoaW50ZWxfZHAsIGxp bmtfcmF0ZSwgbGFuZV9jb3VudCwKPiAgCQkJCSBsaW5rX21zdCk7Cj4gQEAgLTE2OTQsNyArMTY5 NiwyNCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCWludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMoZW5jb2Rl cik7Cj4gIAlpbnRlbF9kZGlfaW5pdF9kcF9idWZfcmVnKGVuY29kZXIpOwo+ICAJaW50ZWxfZHBf c2lua19kcG1zKGludGVsX2RwLCBEUk1fTU9ERV9EUE1TX09OKTsKPiAtCWludGVsX2RwX3N0YXJ0 X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICsJaWYgKCFpbnRlbF9kcF9zdGFydF9saW5rX3RyYWlu KGludGVsX2RwKSkgewo+ICsJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgZmFpbGVkIGF0 IGxpbmsgcmF0ZSA9ICVkLCBsYW5lIGNvdW50ID0gJWQiLAo+ICsJCQkgICAgICBsaW5rX3JhdGUs IGxhbmVfY291bnQpOwo+ICsJCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tf dmFsdWVzKGludGVsX2RwLAo+ICsJCQkJCQkJICAgICBsaW5rX3JhdGUsCj4gKwkJCQkJCQkgICAg IGxhbmVfY291bnQpKQo+ICsJCQkvKiBTY2hlZHVsZSBhIEhvdHBsdWcgVWV2ZW50IHRvIHVzZXJz cGFjZSB0byBzdGFydCBtb2Rlc2V0ICovCj4gKwkJCXNjaGVkdWxlX3dvcmsoJmludGVsX2Nvbm5l Y3Rvci0+bW9kZXNldF9yZXRyeV93b3JrKTsKPiArCX0gZWxzZSB7Cj4gKwkJRFJNX0RFQlVHX0tN UygiTGluayBUcmFpbmluZyBQYXNzZWQgYXQgTGluayBSYXRlID0gJWQsIExhbmUgY291bnQgPSAl ZCIsCj4gKwkJCSAgICAgIGxpbmtfcmF0ZSwgbGFuZV9jb3VudCk7Cj4gKwkJaW50ZWxfZHAtPmZh bGxiYWNrX2xpbmtfcmF0ZV9pbmRleCA9IC0xOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19saW5r X3JhdGUgPSAwOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19sYW5lX2NvdW50ID0gMDsKPiArCQlk cm1fbW9kZV9jb25uZWN0b3Jfc2V0X2xpbmtfc3RhdHVzX3Byb3BlcnR5KGNvbm5lY3RvciwKPiAr CQkJCQkJCSAgICBEUk1fTU9ERV9MSU5LX1NUQVRVU19HT09EKTsKPiArCX0KPiArCj4gIAlpZiAo cG9ydCAhPSBQT1JUX0EgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQo+ICAJCWludGVsX2Rw X3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiBpbmRleCBlODdiNDUxLi5hZjJmOGIyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4g QEAgLTM1Myw4ICszNTMsMTQgQEAgaW50IGludGVsX2RwX2dldF9saW5rX3RyYWluX2ZhbGxiYWNr X3ZhbHVlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICAJCXRhcmdldF9jbG9jayA9IGZp eGVkX21vZGUtPmNsb2NrOwo+ICAJfQo+ICAKPiAtCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBf bWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gLQltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFu ZV9jb3VudChpbnRlbF9kcCk7Cj4gKwkvKiBQcnVuZSB0aGUgbW9kZXMgdXNpbmcgdGhlIGZhbGxi YWNrIGxpbmsgcmF0ZS9sYW5lIGNvdW50ICovCj4gKwlpZiAoY29ubmVjdG9yLT5saW5rX3N0YXR1 cyA9PSBEUk1fTU9ERV9MSU5LX1NUQVRVU19CQUQpIHsKPiArCQltYXhfbGlua19jbG9jayA9IGlu dGVsX2RwLT5mYWxsYmFja19saW5rX3JhdGU7Cj4gKwkJbWF4X2xhbmVzID0gaW50ZWxfZHAtPmZh bGxiYWNrX2xhbmVfY291bnQ7Cj4gKwl9IGVsc2Ugewo+ICsJCW1heF9saW5rX2Nsb2NrID0gaW50 ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gKwkJbWF4X2xhbmVzID0gaW50ZWxfZHBf bWF4X2xhbmVfY291bnQoaW50ZWxfZHApOwo+ICsJfQo+ICAKPiAgCW1heF9yYXRlID0gaW50ZWxf ZHBfbWF4X2RhdGFfcmF0ZShtYXhfbGlua19jbG9jaywgbWF4X2xhbmVzKTsKPiAgCW1vZGVfcmF0 ZSA9IGludGVsX2RwX2xpbmtfcmVxdWlyZWQodGFyZ2V0X2Nsb2NrLCAxOCk7Cj4gQEAgLTE1OTEs NiArMTU5Nyw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29tcHV0ZV9icHAoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKPiAgCWVudW0gcG9ydCBwb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxf ZHApLT5wb3J0Owo+ICAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9j cnRjKHBpcGVfY29uZmlnLT5iYXNlLmNydGMpOwo+ICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAq aW50ZWxfY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiArCXN0cnVj dCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICAJ aW50IGxhbmVfY291bnQsIGNsb2NrOwo+ICAJaW50IG1pbl9sYW5lX2NvdW50ID0gMTsKPiAgCWlu dCBtYXhfbGFuZV9jb3VudCA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPiBA QCAtMTYzOCw2ICsxNjQ1LDEyIEBAIHN0YXRpYyBpbnQgaW50ZWxfZHBfY29tcHV0ZV9icHAoc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCWlmIChhZGp1c3RlZF9tb2RlLT5mbGFncyAmIERS TV9NT0RFX0ZMQUdfREJMQ0xLKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gKwkvKiBGYWxsIGJh Y2sgdG8gbG93ZXIgbGluayByYXRlIGluIGNhc2Ugb2YgZmFpbHVyZSBpbiBwcmV2aW91cyBtb2Rl c2V0ICovCj4gKwlpZiAoY29ubmVjdG9yLT5saW5rX3N0YXR1cyA9PSBEUk1fTU9ERV9MSU5LX1NU QVRVU19CQUQpIHsKPiArCQltaW5fbGFuZV9jb3VudCA9IG1heF9sYW5lX2NvdW50ID0gaW50ZWxf ZHAtPmZhbGxiYWNrX2xhbmVfY291bnQ7Cj4gKwkJbWluX2Nsb2NrID0gbWF4X2Nsb2NrID0gaW50 ZWxfZHAtPmZhbGxiYWNrX2xpbmtfcmF0ZV9pbmRleDsKPiArCX0KPiArCj4gIAlEUk1fREVCVUdf S01TKCJEUCBsaW5rIGNvbXB1dGF0aW9uIHdpdGggbWF4IGxhbmUgY291bnQgJWkgIgo+ICAJCSAg ICAgICJtYXggYncgJWQgcGl4ZWwgY2xvY2sgJWlLSHpcbiIsCj4gIAkJICAgICAgbWF4X2xhbmVf Y291bnQsIGNvbW1vbl9yYXRlc1ttYXhfY2xvY2tdLAo+IEBAIC0yNzgxLDYgKzI3OTQsOCBAQCBz dGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIs Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gIAlzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAr CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IGludGVsX2RwLT5hdHRh Y2hlZF9jb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmlu dGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiAgCXVpbnQzMl90IGRwX3JlZyA9IEk5MTVfUkVBRChpbnRl bF9kcC0+b3V0cHV0X3JlZyk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gIAo+ IEBAIC0yODExLDcgKzI4MjYsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX2RwKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJfQo+ICAKPiAgCWludGVsX2RwX3NpbmtfZHBt cyhpbnRlbF9kcCwgRFJNX01PREVfRFBNU19PTik7Cj4gLQlpbnRlbF9kcF9zdGFydF9saW5rX3Ry YWluKGludGVsX2RwKTsKPiArCWlmICghaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9k cCkpIHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIGZhaWxlZCBhdCBsaW5rIHJh dGUgPSAlZCwgbGFuZSBjb3VudCA9ICVkIiwKPiArCQkJICAgICAgaW50ZWxfZHAtPmxpbmtfcmF0 ZSwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfdHJh aW5fZmFsbGJhY2tfdmFsdWVzKGludGVsX2RwLAo+ICsJCQkJCQkJICAgICBpbnRlbF9kcC0+bGlu a19yYXRlLAo+ICsJCQkJCQkJICAgICBpbnRlbF9kcC0+bGFuZV9jb3VudCkpCj4gKwkJCS8qIFNj aGVkdWxlIGEgSG90cGx1ZyBVZXZlbnQgdG8gdXNlcnNwYWNlIHRvIHN0YXJ0IG1vZGVzZXQgKi8K PiArCQkJc2NoZWR1bGVfd29yaygmaW50ZWxfY29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5X3dvcmsp Owo+ICsJfSBlbHNlIHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIFBhc3NlZCBh dCBMaW5rIFJhdGUgPSAlZCwgTGFuZSBjb3VudCA9ICVkIiwKPiArCQkJICAgICAgaW50ZWxfZHAt PmxpbmtfcmF0ZSwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJCWludGVsX2RwLT5mYWxsYmFj a19saW5rX3JhdGVfaW5kZXggPSAtMTsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRl ID0gMDsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9IDA7Cj4gKwkJZHJtX21v ZGVfY29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJCQkJ CQkgICAgRFJNX01PREVfTElOS19TVEFUVVNfR09PRCk7Cj4gKwl9Cj4gIAlpbnRlbF9kcF9zdG9w X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICAKPiAgCWlmIChwaXBlX2NvbmZpZy0+aGFzX2F1ZGlv KSB7Cj4gQEAgLTQwMTgsNiArNDA0OSw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2RwX2hhbmRsZV90 ZXN0X3JlcXVlc3Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgCXN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFzZTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5k ZXYpOwo+ICAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXIt PmJhc2UuY3J0Yyk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3Ig PSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3Ig KmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gIAo+ICAJLyogU3VwcHJlc3Mg dW5kZXJydW5zIGNhdXNlZCBieSByZS10cmFpbmluZyAqLwo+ICAJaW50ZWxfc2V0X2NwdV9maWZv X3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+IEBAIC00 MDI1LDcgKzQwNTgsMjMgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHBfaGFuZGxlX3Rlc3RfcmVxdWVz dChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCWludGVsX3NldF9wY2hfZmlmb191bmRl cnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsCj4gIAkJCQkJCSAgICAgIGludGVsX2NydGNfcGNoX3Ry YW5zY29kZXIoY3J0YyksIGZhbHNlKTsKPiAgCj4gLQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWlu KGludGVsX2RwKTsKPiArCWlmICghaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCkp IHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIGZhaWxlZCBhdCBsaW5rIHJhdGUg PSAlZCwgbGFuZSBjb3VudCA9ICVkIiwKPiArCQkJICAgICAgaW50ZWxfZHAtPmxpbmtfcmF0ZSwg aW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJCWlmICghaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5f ZmFsbGJhY2tfdmFsdWVzKGludGVsX2RwLAo+ICsJCQkJCQkJICAgICBpbnRlbF9kcC0+bGlua19y YXRlLAo+ICsJCQkJCQkJICAgICBpbnRlbF9kcC0+bGFuZV9jb3VudCkpCj4gKwkJCS8qIFNjaGVk dWxlIGEgSG90cGx1ZyBVZXZlbnQgdG8gdXNlcnNwYWNlIHRvIHN0YXJ0IG1vZGVzZXQgKi8KPiAr CQkJc2NoZWR1bGVfd29yaygmaW50ZWxfY29ubmVjdG9yLT5tb2Rlc2V0X3JldHJ5X3dvcmspOwo+ ICsJfSBlbHNlIHsKPiArCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIFBhc3NlZCBhdCBM aW5rIFJhdGUgPSAlZCwgTGFuZSBjb3VudCA9ICVkIiwKPiArCQkJICAgICAgaW50ZWxfZHAtPmxp bmtfcmF0ZSwgaW50ZWxfZHAtPmxhbmVfY291bnQpOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19s aW5rX3JhdGVfaW5kZXggPSAtMTsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlID0g MDsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9IDA7Cj4gKwkJZHJtX21vZGVf Y29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJCQkJCQkg ICAgRFJNX01PREVfTElOS19TVEFUVVNfR09PRCk7Cj4gKwl9Cj4gIAlpbnRlbF9kcF9zdG9wX2xp bmtfdHJhaW4oaW50ZWxfZHApOwo+ICAKPiAgCS8qIEtlZXAgdW5kZXJydW4gcmVwb3J0aW5nIGRp c2FibGVkIHVudGlsIHRoaW5ncyBhcmUgc3RhYmxlICovCj4gQEAgLTQ0MTksNiArNDQ2OCwxMSBA QCBzdGF0aWMgYm9vbCBpbnRlbF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X2FjdGl2 ZSA9IDA7Cj4gIAkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlID0gMDsKPiAgCQlpbnRl bF9kcC0+Y29tcGxpYW5jZV90ZXN0X2RhdGEgPSAwOwo+ICsJCWludGVsX2RwLT5mYWxsYmFja19s aW5rX3JhdGVfaW5kZXggPSAtMTsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGlua19yYXRlID0g MDsKPiArCQlpbnRlbF9kcC0+ZmFsbGJhY2tfbGFuZV9jb3VudCA9IDA7Cj4gKwkJZHJtX21vZGVf Y29ubmVjdG9yX3NldF9saW5rX3N0YXR1c19wcm9wZXJ0eShjb25uZWN0b3IsCj4gKwkJCQkJCQkg ICAgRFJNX01PREVfTElOS19TVEFUVVNfR09PRCk7Cj4gIAo+ICAJCWlmIChpbnRlbF9kcC0+aXNf bXN0KSB7Cj4gIAkJCURSTV9ERUJVR19LTVMoIk1TVCBkZXZpY2UgbWF5IGhhdmUgZGlzYXBwZWFy ZWQgJWQgdnMgJWRcbiIsCj4gQEAgLTQ1MTAsNiArNDU2NCwxMSBAQCBzdGF0aWMgYm9vbCBpbnRl bF9kaWdpdGFsX3BvcnRfY29ubmVjdGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdXG4iLAo+ICAJCSAgICAgIGNv bm5lY3Rvci0+YmFzZS5pZCwgY29ubmVjdG9yLT5uYW1lKTsKPiAgCj4gKwkvKiBJZiB0aGlzIGlz IGEgcmV0cnkgZHVlIHRvIGxpbmsgdHJpYW5pbmcgZmFpbHVyZSAqLwo+ICsJaWYgKHN0YXR1cyA9 PSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCAmJgo+ICsJICAgIGNvbm5lY3Rvci0+bGlua19z dGF0dXMgPT0gRFJNX01PREVfTElOS19TVEFUVVNfQkFEKQo+ICsJCXJldHVybiBzdGF0dXM7Cj4g Kwo+ICAJLyogSWYgZnVsbCBkZXRlY3QgaXMgbm90IHBlcmZvcm1lZCB5ZXQsIGRvIGEgZnVsbCBk ZXRlY3QgKi8KPiAgCWlmICghaW50ZWxfZHAtPmRldGVjdF9kb25lKQo+ICAJCXN0YXR1cyA9IGlu dGVsX2RwX2xvbmdfcHVsc2UoaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Cj4gQEAgLTU2 NzcsNiArNTczNiwzNyBAQCBzdGF0aWMgYm9vbCBpbnRlbF9lZHBfaW5pdF9jb25uZWN0b3Ioc3Ry dWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCXJldHVybiBmYWxzZTsKPiAgfQo+ICAKPiArc3Rh dGljIHZvaWQgaW50ZWxfZHBfbW9kZXNldF9yZXRyeV93b3JrX2ZuKHN0cnVjdCB3b3JrX3N0cnVj dCAqd29yaykKPiArewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9y Owo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICptb2RlOwo+ICsJYm9vbCB2ZXJib3NlX3BydW5lID0gdHJ1ZTsKPiArCj4gKwlp bnRlbF9jb25uZWN0b3IgPSBjb250YWluZXJfb2Yod29yaywgdHlwZW9mKCppbnRlbF9jb25uZWN0 b3IpLAo+ICsJCQkJICAgICAgIG1vZGVzZXRfcmV0cnlfd29yayk7Cj4gKwljb25uZWN0b3IgPSAm aW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsKPiArCS8qIEdyYWIgdGhlIGxvY2tzIGJlZm9yZSBj aGFuZ2luZyBjb25uZWN0b3IgcHJvcGVydHkqLwo+ICsJbXV0ZXhfbG9jaygmY29ubmVjdG9yLT5k ZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6 JXNdXG4iLCBjb25uZWN0b3ItPmJhc2UuaWQsCj4gKwkJICAgICAgY29ubmVjdG9yLT5uYW1lKTsK PiArCWxpc3RfZm9yX2VhY2hfZW50cnkobW9kZSwgJmNvbm5lY3Rvci0+bW9kZXMsIGhlYWQpIHsK PiArCQltb2RlLT5zdGF0dXMgPSBpbnRlbF9kcF9tb2RlX3ZhbGlkKGNvbm5lY3RvciwKPiArCQkJ CQkJICAgbW9kZSk7Cj4gKwl9Cj4gKwlkcm1fbW9kZV9wcnVuZV9pbnZhbGlkKGNvbm5lY3Rvci0+ ZGV2LCAmY29ubmVjdG9yLT5tb2RlcywKPiArCQkJICAgICAgIHZlcmJvc2VfcHJ1bmUpOwo+ICsJ LyogU2V0IGNvbm5lY3RvciBsaW5rIHN0YXR1cyB0byBCQUQgYW5kIHNlbmQgYSBVZXZlbnQgdG8g bm90aWZ5Cj4gKwkgKiB1c2Vyc3BhY2UgdG8gZG8gYSBtb2Rlc2V0Lgo+ICsJICovCj4gKwlkcm1f bW9kZV9jb25uZWN0b3Jfc2V0X2xpbmtfc3RhdHVzX3Byb3BlcnR5KGNvbm5lY3RvciwKPiArCQkJ CQkJICAgIERSTV9NT0RFX0xJTktfU1RBVFVTX0JBRCk7Cj4gKwltdXRleF91bmxvY2soJmNvbm5l Y3Rvci0+ZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwkvKiBTZW5kIEhvdHBsdWcgdWV2ZW50 IHNvIHVzZXJzcGFjZSBjYW4gcmVwcm9iZSAqLwo+ICsJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19l dmVudChjb25uZWN0b3ItPmRldik7Cj4gK30KPiArCj4gIGJvb2wKPiAgaW50ZWxfZHBfaW5pdF9j b25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAkJ CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiBAQCAtNTY4OSw2ICs1 Nzc5LDEwIEBAIHN0YXRpYyBib29sIGludGVsX2VkcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50 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+IGluZGV4IDU1 Y2ViNDQuLjg4OTE4ZjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0zMTIs NiArMzEyLDkgQEAgc3RydWN0IGludGVsX2Nvbm5lY3RvciB7Cj4gIAl2b2lkICpwb3J0OyAvKiBz dG9yZSB0aGlzIG9wYXF1ZSBhcyBpdHMgaWxsZWdhbCB0byBkZXJlZmVyZW5jZSBpdCAqLwo+ICAK PiAgCXN0cnVjdCBpbnRlbF9kcCAqbXN0X3BvcnQ7Cj4gKwo+ICsJLyogV29yayBzdHJ1Y3QgdG8g c2NoZWR1bGUgYSB1ZXZlbnQgb24gbGluayB0cmFpbiBmYWlsdXJlICovCj4gKwlzdHJ1Y3Qgd29y a19zdHJ1Y3QgbW9kZXNldF9yZXRyeV93b3JrOwo+ICB9Owo+ICAKPiAgc3RydWN0IGRwbGwgewo+ IEBAIC04OTAsNyArODkzLDYgQEAgc3RydWN0IGludGVsX2RwIHsKPiAgCWludCBmYWxsYmFja19s aW5rX3JhdGU7Cj4gIAl1aW50OF90IGZhbGxiYWNrX2xhbmVfY291bnQ7Cj4gIAlpbnQgZmFsbGJh Y2tfbGlua19yYXRlX2luZGV4Owo+IC0JYm9vbCBsaW5rX3RyYWluX2ZhaWxlZDsKPiAgCXVpbnQ4 X3Qgc2lua19jb3VudDsKPiAgCWJvb2wgbGlua19tc3Q7Cj4gIAlib29sIGhhc19hdWRpbzsKPiBA QCAtMTM4OSw3ICsxMzkxLDcgQEAgdm9pZCBpbnRlbF9kcF9zZXRfbGlua19wYXJhbXMoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQkJICAgICAgYm9vbCBsaW5rX21zdCk7Cj4gIGludCBp bnRlbF9kcF9nZXRfbGlua190cmFpbl9mYWxsYmFja192YWx1ZXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKPiAgCQkJCQkgICAgaW50IGxpbmtfcmF0ZSwgdWludDhfdCBsYW5lX2NvdW50KTsK PiAtdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApOwo+ICtib29sIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCk7Cj4gIHZvaWQgaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCBpbnQgbW9kZSk7Cj4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1 Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpOwo+IC0tIAo+IDEuOS4xCj4gCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=