From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH 3/3] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Fri, 22 Dec 2017 14:07:56 -0800 Message-ID: <20171222220756.GB29006@intel.com> References: <20171222182857.3946-1-ville.syrjala@linux.intel.com> <20171222182857.3946-3-ville.syrjala@linux.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 39E2B6E799 for ; Fri, 22 Dec 2017 22:04:27 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20171222182857.3946-3-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBEZWMgMjIsIDIwMTcgYXQgMDg6Mjg6NTdQTSArMDIwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IERvaW5nIGxpbmsgcmVhdHJpbmluZyBmcm9tIHRoZSBzaG9ydCBwdWxzZSBoYW5k bGVyIGlzIHByb2JsZW1hdGljIHNpbmNlCj4gdGhhdCBtaWdodCBpbnRyb2R1Y2UgZGVhZGxvY2tz IHdpdGggTVNUIHNpZGViYW5kIHByb2Nlc3NpbmcuIEN1cnJlbnRseQo+IHdlIGRvbid0IHJldHJh aW4gTVNUIGxpbmtzIGZyb20gdGhpcyBjb2RlLCBidXQgd2Ugd2FudCB0byBjaGFuZ2UgdGhhdC4K PiBTbyBiZXR0ZXIgdG8gbW92ZSB0aGUgZW50aXJlIHRoaW5nIHRvIHRoZSBob3RwbHVnIHdvcmsu IFdlIGNhbiB1dGlsaXplCj4gdGhlIG5ldyBlbmNvZGVyLT5wb3N0X2hvdHBsdWcoKSBob29rIGZv ciB0aGlzLgo+IAo+IFRoZSBvbmx5IHRoaW5nIHdlIGxlYXZlIGluIHRoZSBzaG9ydCBwdWxzZSBo YW5kbGVyIGlzIHRoZSBsaW5rIHN0YXR1cwo+IGNoZWNrLiBUaGF0IG9uZSBzdGlsbCBkZXBlbmRz IG9uIHRoZSBsaW5rIHBhcmFtZXRlcnMgc3RvcmVkIHVuZGVyCj4gaW50ZWxfZHAsIHNvIG5vIGxv Y2tpbmcgYXJvdW5kIHRoYXQgYnV0IHJhY2VzIHNob3VsZCBiZSBtb3N0bHkgaGFybWxlc3MKPiBh cyB0aGUgYWN0dWFsIHJldHJhaW5pbmcgY29kZSB3aWxsIHJlY2hlY2sgdGhlIGxpbmsgc3RhdGUg aWYgd2UKPiBlbmQgdXAgdGhlcmUgYnkgbWlzdGFrZS4KPiAKPiBDYzogTWFuYXNpIE5hdmFyZSA8 bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJq w6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8ICAgNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jICB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggfCAgIDIgKwo+ICAzIGZpbGVzIGNo YW5nZWQsIDEyNSBpbnNlcnRpb25zKCspLCA5NyBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYwo+IGluZGV4IDEyZGE3MDI0ZjAxYS4uN2U5OTY0Nzk0ZWZlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiBAQCAtMjc3OCw3ICsyNzc4LDkgQEAgc3RhdGljIHZv aWQgaW50ZWxfZGRpX3Bvc3RfaG90cGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikK PiAgCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiAgCj4gIAlmb3IgKDs7KSB7 Cj4gLQkJcmV0ID0gaW50ZWxfZGRpX2hkbWlfcmVzZXRfc2NyYW1ibGluZyhlbmNvZGVyLCAmY3R4 KTsKPiArCQlyZXQgPSBpbnRlbF9kcF9yZXRyYWluX2xpbmsoZW5jb2RlciwgJmN0eCk7Cj4gKwkJ aWYgKCFyZXQpCj4gKwkJCXJldCA9IGludGVsX2RkaV9oZG1pX3Jlc2V0X3NjcmFtYmxpbmcoZW5j b2RlciwgJmN0eCk7Cj4gIAo+ICAJCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiAgCQkJZHJtX21v ZGVzZXRfYmFja29mZigmY3R4KTsKPiBAQCAtMjkwMyw4ICsyOTA1LDcgQEAgdm9pZCBpbnRlbF9k ZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcG9ydCBwb3J0 KQo+ICAJZHJtX2VuY29kZXJfaW5pdCgmZGV2X3ByaXYtPmRybSwgZW5jb2RlciwgJmludGVsX2Rk aV9mdW5jcywKPiAgCQkJIERSTV9NT0RFX0VOQ09ERVJfVE1EUywgIkRESSAlYyIsIHBvcnRfbmFt ZShwb3J0KSk7Cj4gIAo+IC0JaWYgKGluaXRfaGRtaSkKPiAtCQlpbnRlbF9lbmNvZGVyLT5wb3N0 X2hvdHBsdWcgPSBpbnRlbF9kZGlfcG9zdF9ob3RwbHVnOwo+ICsJaW50ZWxfZW5jb2Rlci0+cG9z dF9ob3RwbHVnID0gaW50ZWxfZGRpX3Bvc3RfaG90cGx1ZzsKClNhbWUgZ29lcyBoZXJlIGZvciB0 aGUgbmFtZSwgbWF5IGJlIGNhbGwgaXQgaW50ZWxfZGRpX2hvdHBsdWdfcG9zdF9kZXRlY3QoKT8K Cj4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX291dHB1dF90eXBlID0gaW50ZWxfZGRpX2NvbXB1 dGVfb3V0cHV0X3R5cGU7Cj4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVs X2RkaV9jb21wdXRlX2NvbmZpZzsKPiAgCWludGVsX2VuY29kZXItPmVuYWJsZSA9IGludGVsX2Vu YWJsZV9kZGk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggMzVjNTI5OWZlYWI2Li43 MjIzNGM1ZGMxNWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBAQCAtNDI1MSw3NCAr NDI1MSwxMzcgQEAgaW50ZWxfZHBfY2hlY2tfbXN0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkCj4gLWlu dGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICtzdGF0aWMg Ym9vbAo+ICtpbnRlbF9kcF9uZWVkc19saW5rX3JldHJhaW4oc3RydWN0IGludGVsX2RwICppbnRl bF9kcCkKPiAgewo+IC0Jc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSAmZHBfdG9fZGln X3BvcnQoaW50ZWxfZHApLT5iYXNlOwo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiAtCj4gLQkvKiBTdXBw cmVzcyB1bmRlcnJ1bnMgY2F1c2VkIGJ5IHJlLXRyYWluaW5nICovCj4gLQlpbnRlbF9zZXRfY3B1 X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBjcnRjLT5waXBlLCBmYWxzZSk7Cj4g LQlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gLQkJaW50ZWxfc2V0X3BjaF9m aWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwKPiAtCQkJCQkJICAgICAgaW50ZWxfY3J0 Y19wY2hfdHJhbnNjb2RlcihjcnRjKSwgZmFsc2UpOwo+IC0KPiAtCWludGVsX2RwX3N0YXJ0X2xp bmtfdHJhaW4oaW50ZWxfZHApOwo+IC0JaW50ZWxfZHBfc3RvcF9saW5rX3RyYWluKGludGVsX2Rw KTsKPiAtCj4gLQkvKiBLZWVwIHVuZGVycnVuIHJlcG9ydGluZyBkaXNhYmxlZCB1bnRpbCB0aGlu Z3MgYXJlIHN0YWJsZSAqLwo+IC0JaW50ZWxfd2FpdF9mb3JfdmJsYW5rKGRldl9wcml2LCBjcnRj LT5waXBlKTsKPiAtCj4gLQlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRl dl9wcml2LCBjcnRjLT5waXBlLCB0cnVlKTsKPiAtCWlmIChjcnRjLT5jb25maWctPmhhc19wY2hf ZW5jb2RlcikKPiAtCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9w cml2LAo+IC0JCQkJCQkgICAgICBpbnRlbF9jcnRjX3BjaF90cmFuc2NvZGVyKGNydGMpLCB0cnVl KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQKPiAtaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMo c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApKTsKPiAtCXN0 cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVs X2RwKS0+YmFzZTsKPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlID0K PiAtCQlpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+ICAJdTggbGlu a19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07Cj4gIAo+IC0JV0FSTl9PTighZHJtX21vZGVz ZXRfaXNfbG9ja2VkKCZkZXZfcHJpdi0+ZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgp KTsKPiAtCj4gIAlpZiAoIWludGVsX2RwX2dldF9saW5rX3N0YXR1cyhpbnRlbF9kcCwgbGlua19z dGF0dXMpKSB7Cj4gIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsK PiAtCQlyZXR1cm47Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAtCWlmICghY29ubl9z dGF0ZS0+Y3J0YykKPiAtCQlyZXR1cm47Cj4gLQo+IC0JV0FSTl9PTighZHJtX21vZGVzZXRfaXNf bG9ja2VkKCZjb25uX3N0YXRlLT5jcnRjLT5tdXRleCkpOwo+IC0KPiAtCWlmICghY29ubl9zdGF0 ZS0+Y3J0Yy0+c3RhdGUtPmFjdGl2ZSkKPiAtCQlyZXR1cm47Cj4gLQo+IC0JaWYgKGNvbm5fc3Rh dGUtPmNvbW1pdCAmJgo+IC0JICAgICF0cnlfd2FpdF9mb3JfY29tcGxldGlvbigmY29ubl9zdGF0 ZS0+Y29tbWl0LT5od19kb25lKSkKPiAtCQlyZXR1cm47Cj4gLQo+ICAJLyoKPiAgCSAqIFZhbGlk YXRlIHRoZSBjYWNoZWQgdmFsdWVzIG9mIGludGVsX2RwLT5saW5rX3JhdGUgYW5kCj4gIAkgKiBp bnRlbF9kcC0+bGFuZV9jb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRyYWluLgo+ICAJICov Cj4gIAlpZiAoIWludGVsX2RwX2xpbmtfcGFyYW1zX3ZhbGlkKGludGVsX2RwLCBpbnRlbF9kcC0+ bGlua19yYXRlLAo+ICAJCQkJCWludGVsX2RwLT5sYW5lX2NvdW50KSkKPiAtCQlyZXR1cm47Cj4g KwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCS8qIFJldHJhaW4gaWYgQ2hhbm5lbCBFUSBvciBDUiBu b3Qgb2sgKi8KPiAtCWlmICghZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsIGludGVs X2RwLT5sYW5lX2NvdW50KSkgewo+IC0JCURSTV9ERUJVR19LTVMoIiVzOiBjaGFubmVsIEVRIG5v dCBvaywgcmV0cmFpbmluZ1xuIiwKPiAtCQkJICAgICAgaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1l KTsKPiArCXJldHVybiAhZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsIGludGVsX2Rw LT5sYW5lX2NvdW50KTsKPiArfQo+ICAKPiAtCQlpbnRlbF9kcF9yZXRyYWluX2xpbmsoaW50ZWxf ZHApOwo+ICsvKgo+ICsgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQgY2hlY2sgbGlua3Mg c3RhdHVzLAo+ICsgKiB0aGVyZSBoYXMgYmVlbiBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRy aWdnZXJpbmcKPiArICogbG9uZyBwdWxzZS4KPiArICoKPiArICogU29tZSBzaW5rcyAoZWcuIEFT VVMgUEIyODdRKSBzZWVtIHRvIHBlcmZvcm0gc29tZQo+ICsgKiB3ZWlyZCBIUEQgcGluZyBwb25n IGR1cmluZyBtb2Rlc2V0cy4gU28gd2UgY2FuIGFwcGFyZW50bHkKPiArICogZW5kIHVwIHdpdGgg SFBEIGdvaW5nIGxvdyBkdXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ICsgKiBnb2luZyBiYWNr IHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQgaGFwcGVucyB3ZSBtdXN0Cj4gKyAqIHJldHJh aW4gdGhlIGxpbmsgdG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2Ugbm8KPiArICogdXNl cnNwYWNlIGNvbXBvbmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ICsgKi8K PiAraW50IGludGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiArCQkJICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKPiArewo+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShlbmNvZGVyLT5iYXNl LmRldik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZl bmNvZGVyLT5iYXNlKTsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGlu dGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0 ZSAqY29ubl9zdGF0ZTsKPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCS8qIEZJWE1F IGhhbmRsZSB0aGUgTVNUIGNvbm5lY3RvcnMgYXMgd2VsbCAqLwo+ICsKPiArCWlmICghY29ubmVj dG9yIHx8IGNvbm5lY3Rvci0+YmFzZS5zdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmZGV2X3By aXYtPmRybS5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBjdHgpOwo+ICsJaWYgKHJldCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWNvbm5fc3RhdGUgPSBjb25uZWN0b3ItPmJhc2Uuc3Rh dGU7Cj4gKwo+ICsJY3J0YyA9IHRvX2ludGVsX2NydGMoY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gKwlp ZiAoIWNydGMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygm Y3J0Yy0+YmFzZS5tdXRleCwgY3R4KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAr Cj4gKwljcnRjX3N0YXRlID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsK PiArCj4gKwlXQVJOX09OKCFpbnRlbF9jcnRjX2hhc19kcF9lbmNvZGVyKGNydGNfc3RhdGUpKTsK PiArCj4gKwlpZiAoIWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ICsJCXJldHVybiAwOwo+ICsK PiArCWlmIChjb25uX3N0YXRlLT5jb21taXQgJiYKPiArCSAgICAhdHJ5X3dhaXRfZm9yX2NvbXBs ZXRpb24oJmNvbm5fc3RhdGUtPmNvbW1pdC0+aHdfZG9uZSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJaWYgKCFpbnRlbF9kcF9uZWVkc19saW5rX3JldHJhaW4oaW50ZWxfZHApKQo+ICsJCXJldHVy biAwOwo+ICsKPiArCS8qIFN1cHByZXNzIHVuZGVycnVucyBjYXVzZWQgYnkgcmUtdHJhaW5pbmcg Ki8KPiArCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIGNy dGMtPnBpcGUsIGZhbHNlKTsKPiArCWlmIChjcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikK PiArCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LAo+ICsJ CQkJCQkgICAgICBpbnRlbF9jcnRjX3BjaF90cmFuc2NvZGVyKGNydGMpLCBmYWxzZSk7Cj4gKwo+ ICsJaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gKwlpbnRlbF9kcF9zdG9w X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICsKPiArCS8qIEtlZXAgdW5kZXJydW4gcmVwb3J0aW5n IGRpc2FibGVkIHVudGlsIHRoaW5ncyBhcmUgc3RhYmxlICovCj4gKwlpbnRlbF93YWl0X2Zvcl92 YmxhbmsoZGV2X3ByaXYsIGNydGMtPnBpcGUpOwo+ICsKPiArCWludGVsX3NldF9jcHVfZmlmb191 bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIGNydGMtPnBpcGUsIHRydWUpOwo+ICsJaWYgKGNy dGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQo+ICsJCWludGVsX3NldF9wY2hfZmlmb191bmRl cnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsCj4gKwkJCQkJCSAgICAgIGludGVsX2NydGNfcGNoX3Ry YW5zY29kZXIoY3J0YyksIHRydWUpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQgY2hlY2sgbGlua3Mgc3RhdHVzLAo+ICsg KiB0aGVyZSBoYXMgYmVlbiBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRyaWdnZXJpbmcKPiAr ICogbG9uZyBwdWxzZS4KPiArICoKPiArICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIyODdRKSBz ZWVtIHRvIHBlcmZvcm0gc29tZQo+ICsgKiB3ZWlyZCBIUEQgcGluZyBwb25nIGR1cmluZyBtb2Rl c2V0cy4gU28gd2UgY2FuIGFwcGFyZW50bHkKPiArICogZW5kIHVwIHdpdGggSFBEIGdvaW5nIGxv dyBkdXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ICsgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0 ZXIuIEFuZCBvbmNlIHRoYXQgaGFwcGVucyB3ZSBtdXN0Cj4gKyAqIHJldHJhaW4gdGhlIGxpbmsg dG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2Ugbm8KPiArICogdXNlcnNwYWNlIGNvbXBv bmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ICsgKi8KPiArc3RhdGljIHZv aWQgaW50ZWxfZHBfcG9zdF9ob3RwbHVnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ICsJaW50IHJldDsK PiArCj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gKwo+ICsJZm9yICg7 Oykgewo+ICsJCXJldCA9IGludGVsX2RwX3JldHJhaW5fbGluayhlbmNvZGVyLCAmY3R4KTsKPiAr Cj4gKwkJaWYgKHJldCA9PSAtRURFQURMSykgewo+ICsJCQlkcm1fbW9kZXNldF9iYWNrb2ZmKCZj dHgpOwo+ICsJCQljb250aW51ZTsKPiArCQl9Cj4gKwo+ICsJCWJyZWFrOwo+ICAJfQo+ICsKPiAr CWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2Zp bmkoJmN0eCk7Cj4gKwlXQVJOKHJldCwgIkFjcXVpcmluZyBtb2Rlc2V0IGxvY2tzIGZhaWxlZCB3 aXRoICVpXG4iLCByZXQpOwo+ICB9Cj4gIAoKSSBsaWtlIHRoYXQgbm93IGludGVsX2RwX2xvbmdf cHVsc2UoKSBhbmQgaW50ZWxfZHBfc2hvcnRfcHVsc2UoKSBkb250IG5lZWQgdG8gY2FsbApsaW5r IHJldHJhaW5pbmcgc2VwYXJhdGVseS4gVGhpcyBwb3N0X2hvdHBsdWcgd2lsbCB0YWtlIGNhcmUg b2YgcmV0cmFpbmluZyBhZnRlciBsb25nIGFuZCBzaG9ydApwdWxzZS4KCkFja2VkLWJ5OiBNYW5h c2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgoKTWFuYXNpCgo+ICAvKgo+IEBA IC00Mzc2LDcgKzQ0MzksOSBAQCBpbnRlbF9kcF9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+ICAJCQlEUk1fREVCVUdfRFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljIGly cSB1bmhhbmRsZWRcbiIpOwo+ICAJfQo+ICAKPiAtCWludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVz KGludGVsX2RwKTsKPiArCS8qIGRlZmVyIHRvIHRoZSBob3RwbHVnIHdvcmsgZm9yIGxpbmsgcmV0 cmFpbmluZyBpZiBuZWVkZWQgKi8KPiArCWlmIChpbnRlbF9kcF9uZWVkc19saW5rX3JldHJhaW4o aW50ZWxfZHApKQo+ICsJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlpZiAoaW50ZWxfZHAtPmNvbXBs aWFuY2UudGVzdF90eXBlID09IERQX1RFU1RfTElOS19UUkFJTklORykgewo+ICAJCURSTV9ERUJV R19LTVMoIkxpbmsgVHJhaW5pbmcgQ29tcGxpYW5jZSBUZXN0IHJlcXVlc3RlZFxuIik7Cj4gQEAg LTQ3NjEsMjAgKzQ4MjYsNiBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiAgCQkgKi8KPiAgCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVz X2Rpc2Nvbm5lY3RlZDsKPiAgCQlnb3RvIG91dDsKPiAtCX0gZWxzZSB7Cj4gLQkJLyoKPiAtCQkg KiBJZiBkaXNwbGF5IGlzIG5vdyBjb25uZWN0ZWQgY2hlY2sgbGlua3Mgc3RhdHVzLAo+IC0JCSAq IHRoZXJlIGhhcyBiZWVuIGtub3duIGlzc3VlcyBvZiBsaW5rIGxvc3MgdHJpZ2dlcnJpbmcKPiAt CQkgKiBsb25nIHB1bHNlLgo+IC0JCSAqCj4gLQkJICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIy ODdRKSBzZWVtIHRvIHBlcmZvcm0gc29tZQo+IC0JCSAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVy aW5nIG1vZGVzZXRzLiBTbyB3ZSBjYW4gYXBwYXJlbnRseQo+IC0JCSAqIGVuZCB1cCB3aXRoIEhQ RCBnb2luZyBsb3cgZHVyaW5nIGEgbW9kZXNldCwgYW5kIHRoZW4KPiAtCQkgKiBnb2luZyBiYWNr IHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQgaGFwcGVucyB3ZSBtdXN0Cj4gLQkJICogcmV0 cmFpbiB0aGUgbGluayB0byBnZXQgYSBwaWN0dXJlLiBUaGF0J3MgaW4gY2FzZSBubwo+IC0JCSAq IHVzZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiAt CQkgKi8KPiAtCQlpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Cj4gIAl9Cj4g IAo+ICAJLyoKPiBAQCAtNTExOSwzNyArNTE3MCwxMCBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3Ry dWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9uZ19ocGQpCj4g IAl9Cj4gIAo+ICAJaWYgKCFpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gLQkJc3RydWN0IGRybV9tb2Rl c2V0X2FjcXVpcmVfY3R4IGN0eDsKPiAtCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gJmludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3ItPmJhc2U7Cj4gLQkJc3RydWN0IGRybV9j cnRjICpjcnRjOwo+IC0JCWludCBpcmV0Owo+IC0JCWJvb2wgaGFuZGxlZCA9IGZhbHNlOwo+IC0K PiAtCQlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gLXJldHJ5Ogo+IC0JCWly ZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXZfcHJpdi0+ZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rp b25fbXV0ZXgsICZjdHgpOwo+IC0JCWlmIChpcmV0KQo+IC0JCQlnb3RvIGVycjsKPiAtCj4gLQkJ Y3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gLQkJaWYgKGNydGMpIHsKPiAtCQkJaXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsKPiAtCQkJaWYgKGlyZXQp Cj4gLQkJCQlnb3RvIGVycjsKPiAtCQl9Cj4gKwkJYm9vbCBoYW5kbGVkOwo+ICAKPiAgCQloYW5k bGVkID0gaW50ZWxfZHBfc2hvcnRfcHVsc2UoaW50ZWxfZHApOwo+ICAKPiAtZXJyOgo+IC0JCWlm IChpcmV0ID09IC1FREVBRExLKSB7Cj4gLQkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4g LQkJCWdvdG8gcmV0cnk7Cj4gLQkJfQo+IC0KPiAtCQlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZj dHgpOwo+IC0JCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgmY3R4KTsKPiAtCQlXQVJOKGlyZXQs ICJBY3F1aXJpbmcgbW9kZXNldCBsb2NrcyBmYWlsZWQgd2l0aCAlaVxuIiwgaXJldCk7Cj4gLQo+ ICAJCWlmICghaGFuZGxlZCkgewo+ICAJCQlpbnRlbF9kcC0+ZGV0ZWN0X2RvbmUgPSBmYWxzZTsK PiAgCQkJZ290byBwdXRfcG93ZXI7Cj4gQEAgLTYxNzAsNiArNjE5NCw3IEBAIGJvb2wgaW50ZWxf ZHBfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgICAgIkRQ ICVjIiwgcG9ydF9uYW1lKHBvcnQpKSkKPiAgCQlnb3RvIGVycl9lbmNvZGVyX2luaXQ7Cj4gIAo+ ICsJaW50ZWxfZW5jb2Rlci0+cG9zdF9ob3RwbHVnID0gaW50ZWxfZHBfcG9zdF9ob3RwbHVnOwo+ ICAJaW50ZWxfZW5jb2Rlci0+Y29tcHV0ZV9jb25maWcgPSBpbnRlbF9kcF9jb21wdXRlX2NvbmZp ZzsKPiAgCWludGVsX2VuY29kZXItPmdldF9od19zdGF0ZSA9IGludGVsX2RwX2dldF9od19zdGF0 ZTsKPiAgCWludGVsX2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9kcF9nZXRfY29uZmlnOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gaW5kZXggNGE3ZTYwM2NjYzM4Li5mOTVhYzU2Nzg0 ZTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC0xNTMwLDYgKzE1MzAsOCBA QCBpbnQgaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJhY2tfdmFsdWVzKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsCj4gIAkJCQkJICAgIGludCBsaW5rX3JhdGUsIHVpbnQ4X3QgbGFuZV9j b3VudCk7Cj4gIHZvaWQgaW50ZWxfZHBfc3RhcnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKTsKPiAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7Cj4gK2ludCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCSAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4 ICpjdHgpOwo+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCBpbnQgbW9kZSk7Cj4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9yZXNldChzdHJ1Y3QgZHJt X2VuY29kZXIgKmVuY29kZXIpOwo+ICB2b2lkIGludGVsX2RwX2VuY29kZXJfc3VzcGVuZChzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rlcik7Cj4gLS0gCj4gMi4xMy42Cj4gCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=