From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Wed, 31 Jan 2018 15:27:10 +0200 Message-ID: <20180131132710.GK5453@intel.com> References: <20180117192149.17760-1-ville.syrjala@linux.intel.com> <20180117192149.17760-3-ville.syrjala@linux.intel.com> <1517354219.4938.24.camel@redhat.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 22DA86E22D for ; Wed, 31 Jan 2018 13:27:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: <1517354219.4938.24.camel@redhat.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Lyude Paul Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKYW4gMzAsIDIwMTggYXQgMDY6MTY6NTlQTSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBPbiBXZWQsIDIwMTgtMDEtMTcgYXQgMjE6MjEgKzAyMDAsIFZpbGxlIFN5cmphbGEgd3Jv dGU6Cj4gPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+ID4gCj4gPiBEb2luZyBsaW5rIHJldHJhaW5pbmcgZnJvbSB0aGUgc2hvcnQgcHVsc2Ug aGFuZGxlciBpcyBwcm9ibGVtYXRpYyBzaW5jZQo+ID4gdGhhdCBtaWdodCBpbnRyb2R1Y2UgZGVh ZGxvY2tzIHdpdGggTVNUIHNpZGViYW5kIHByb2Nlc3NpbmcuIEN1cnJlbnRseQo+ID4gd2UgZG9u J3QgcmV0cmFpbiBNU1QgbGlua3MgZnJvbSB0aGlzIGNvZGUsIGJ1dCB3ZSB3YW50IHRvIGNoYW5n ZSB0aGF0Lgo+ID4gU28gYmV0dGVyIHRvIG1vdmUgdGhlIGVudGlyZSB0aGluZyB0byB0aGUgaG90 cGx1ZyB3b3JrLiBXZSBjYW4gdXRpbGl6ZQo+ID4gdGhlIG5ldyBlbmNvZGVyLT5ob3RwbHVnKCkg aG9vayBmb3IgdGhpcy4KPiA+IAo+ID4gVGhlIG9ubHkgdGhpbmcgd2UgbGVhdmUgaW4gdGhlIHNo b3J0IHB1bHNlIGhhbmRsZXIgaXMgdGhlIGxpbmsgc3RhdHVzCj4gPiBjaGVjay4gVGhhdCBvbmUg c3RpbGwgZGVwZW5kcyBvbiB0aGUgbGluayBwYXJhbWV0ZXJzIHN0b3JlZCB1bmRlcgo+ID4gaW50 ZWxfZHAsIHNvIG5vIGxvY2tpbmcgYXJvdW5kIHRoYXQgYnV0IHJhY2VzIHNob3VsZCBiZSBtb3N0 bHkgaGFybWxlc3MKPiA+IGFzIHRoZSBhY3R1YWwgcmV0cmFpbmluZyBjb2RlIHdpbGwgcmVjaGVj ayB0aGUgbGluayBzdGF0ZSBpZiB3ZQo+ID4gZW5kIHVwIHRoZXJlIGJ5IG1pc3Rha2UuCj4gPiAK PiA+IHYyOiBSZWJhc2UgZHVlIHRvIC0+cG9zdF9ob3RwbHVnKCkgbm93IGJlaW5nIGp1c3QgLT5o b3RwbHVnKCkKPiA+ICAgICBDaGVjayB0aGUgY29ubmVjdG9yIHR5cGUgdG8gZmlndXJlIG91dCBp ZiB3ZSBzaG91bGQgZG8KPiA+ICAgICB0aGUgSERNSSB0aGluZyBvciB0aGUgRFAgdGhpbmsgZm9y IERESQo+ID4gCj4gPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNv bT4KPiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50 ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jIHwgIDEwICstCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgfCAx OTYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gPiAtLS0KPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAgMiArCj4gPiAgMyBmaWxlcyBjaGFuZ2Vk LCAxMjAgaW5zZXJ0aW9ucygrKSwgODggZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYwo+ID4gaW5kZXggMjU3OTNiZGM2OTJmLi41ZjNkNThmMWFlNmUgMTAw NjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+IEBAIC0yODgwLDcgKzI4ODAsMTAg QEAgc3RhdGljIGJvb2wgaW50ZWxfZGRpX2hvdHBsdWcoc3RydWN0IGludGVsX2VuY29kZXIKPiA+ ICplbmNvZGVyLAo+ID4gIAlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiAg Cj4gPiAgCWZvciAoOzspIHsKPiA+IC0JCXJldCA9IGludGVsX2hkbWlfcmVzZXRfbGluayhlbmNv ZGVyLCAmY3R4KTsKPiA+ICsJCWlmIChjb25uZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5cGUgPT0K PiA+IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSkKPiA+ICsJCQlyZXQgPSBpbnRlbF9oZG1pX3Jl c2V0X2xpbmsoZW5jb2RlciwgJmN0eCk7Cj4gPiArCQllbHNlCj4gPiArCQkJcmV0ID0gaW50ZWxf ZHBfcmV0cmFpbl9saW5rKGVuY29kZXIsICZjdHgpOwo+ID4gIAo+ID4gIAkJaWYgKHJldCA9PSAt RURFQURMSykgewo+ID4gIAkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiBAQCAtMzAw NywxMCArMzAxMCw3IEBAIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gZW51bSBwb3J0IHBvcnQpCj4gPiAgCWRybV9lbmNvZGVyX2luaXQo JmRldl9wcml2LT5kcm0sIGVuY29kZXIsICZpbnRlbF9kZGlfZnVuY3MsCj4gPiAgCQkJIERSTV9N T0RFX0VOQ09ERVJfVE1EUywgIkRESSAlYyIsIHBvcnRfbmFtZShwb3J0KSk7Cj4gPiAgCj4gPiAt CWlmIChpbml0X2hkbWkpCj4gPiAtCQlpbnRlbF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxfZGRp X2hvdHBsdWc7Cj4gPiAtCWVsc2UKPiA+IC0JCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRl bF9lbmNvZGVyX2hvdHBsdWc7Cj4gPiArCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBpbnRlbF9k ZGlfaG90cGx1ZzsKPiA+ICAJaW50ZWxfZW5jb2Rlci0+Y29tcHV0ZV9vdXRwdXRfdHlwZSA9IGlu dGVsX2RkaV9jb21wdXRlX291dHB1dF90eXBlOwo+ID4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRl X2NvbmZpZyA9IGludGVsX2RkaV9jb21wdXRlX2NvbmZpZzsKPiA+ICAJaW50ZWxfZW5jb2Rlci0+ ZW5hYmxlID0gaW50ZWxfZW5hYmxlX2RkaTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4g aW5kZXggNmJiZjE0NDEwYzJhLi4xNTIwMTZlMDlhMTEgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gPiBAQCAtNDI3NSwxMiArNDI3NSw4MyBAQCBpbnRlbF9kcF9jaGVja19tc3Rf c3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgCXJldHVybiAtRUlOVkFMOwo+ ID4gIH0KPiA+ICAKPiA+IC1zdGF0aWMgdm9pZAo+ID4gLWludGVsX2RwX3JldHJhaW5fbGluayhz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gK3N0YXRpYyBib29sCj4gPiAraW50ZWxfZHBf bmVlZHNfbGlua19yZXRyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiArewo+ID4g Kwl1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKPiA+ICsKPiA+ICsJaWYgKCFp bnRlbF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+ID4gKwkJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsKPiA+ICsJCXJldHVybiBm YWxzZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkvKgo+ID4gKwkgKiBWYWxpZGF0ZSB0aGUgY2FjaGVk IHZhbHVlcyBvZiBpbnRlbF9kcC0+bGlua19yYXRlIGFuZAo+ID4gKwkgKiBpbnRlbF9kcC0+bGFu ZV9jb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRyYWluLgo+ID4gKwkgKi8KPiA+ICsJaWYg KCFpbnRlbF9kcF9saW5rX3BhcmFtc192YWxpZChpbnRlbF9kcCwgaW50ZWxfZHAtPmxpbmtfcmF0 ZSwKPiA+ICsJCQkJCWludGVsX2RwLT5sYW5lX2NvdW50KSkKPiA+ICsJCXJldHVybiBmYWxzZTsK PiA+ICsKPiA+ICsJLyogUmV0cmFpbiBpZiBDaGFubmVsIEVRIG9yIENSIG5vdCBvayAqLwo+ID4g KwlyZXR1cm4gIWRybV9kcF9jaGFubmVsX2VxX29rKGxpbmtfc3RhdHVzLCBpbnRlbF9kcC0+bGFu ZV9jb3VudCk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qCj4gPiArICogSWYgZGlzcGxheSBpcyBub3cg Y29ubmVjdGVkIGNoZWNrIGxpbmtzIHN0YXR1cywKPiA+ICsgKiB0aGVyZSBoYXMgYmVlbiBrbm93 biBpc3N1ZXMgb2YgbGluayBsb3NzIHRyaWdnZXJpbmcKPiA+ICsgKiBsb25nIHB1bHNlLgo+ID4g KyAqCj4gPiArICogU29tZSBzaW5rcyAoZWcuIEFTVVMgUEIyODdRKSBzZWVtIHRvIHBlcmZvcm0g c29tZQo+ID4gKyAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBTbyB3ZSBj YW4gYXBwYXJlbnRseQo+ID4gKyAqIGVuZCB1cCB3aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5nIGEg bW9kZXNldCwgYW5kIHRoZW4KPiA+ICsgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0ZXIuIEFuZCBv bmNlIHRoYXQgaGFwcGVucyB3ZSBtdXN0Cj4gPiArICogcmV0cmFpbiB0aGUgbGluayB0byBnZXQg YSBwaWN0dXJlLiBUaGF0J3MgaW4gY2FzZSBubwo+ID4gKyAqIHVzZXJzcGFjZSBjb21wb25lbnQg cmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiA+ICsgKi8KPiA+ICtpbnQgaW50ZWxf ZHBfcmV0cmFpbl9saW5rKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gKwkJCSAg c3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4ICpjdHgpCj4gPiAgewo+ID4gLQlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktPmJhc2U7 Cj4gPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rl ci0+YmFzZS5kZXYpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2Ny dGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9 IGVuY190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPiArCXN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ID4gKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4g PiArCWludCByZXQ7Cj4gPiArCj4gPiArCS8qIEZJWE1FIGhhbmRsZSB0aGUgTVNUIGNvbm5lY3Rv cnMgYXMgd2VsbCAqLwo+ID4gKwo+ID4gKwlpZiAoIWNvbm5lY3RvciB8fCBjb25uZWN0b3ItPmJh c2Uuc3RhdHVzICE9Cj4gPiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiA+ICsJCXJldHVy biAwOwo+ID4gKwo+ID4gKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZkZXZfcHJpdi0+ZHJtLm1v ZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsCj4gPiBjdHgpOwo+ID4gKwlpZiAocmV0KQo+ID4g KwkJcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsJY29ubl9zdGF0ZSA9IGNvbm5lY3Rvci0+YmFzZS5z dGF0ZTsKPiA+ICsKPiA+ICsJY3J0YyA9IHRvX2ludGVsX2NydGMoY29ubl9zdGF0ZS0+Y3J0Yyk7 Cj4gPiArCWlmICghY3J0YykKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwlyZXQgPSBkcm1f bW9kZXNldF9sb2NrKCZjcnRjLT5iYXNlLm11dGV4LCBjdHgpOwo+ID4gKwlpZiAocmV0KQo+ID4g KwkJcmV0dXJuIHJldDsKPiA+ICsKPiA+ICsJY3J0Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3Rh dGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gPiArCj4gPiArCVdBUk5fT04oIWludGVsX2NydGNfaGFz X2RwX2VuY29kZXIoY3J0Y19zdGF0ZSkpOwo+ID4gKwo+ID4gKwlpZiAoIWNydGNfc3RhdGUtPmJh c2UuYWN0aXZlKQo+ID4gKwkJcmV0dXJuIDA7Cj4gPiArCj4gPiArCWlmIChjb25uX3N0YXRlLT5j b21taXQgJiYKPiA+ICsJICAgICF0cnlfd2FpdF9mb3JfY29tcGxldGlvbigmY29ubl9zdGF0ZS0+ Y29tbWl0LT5od19kb25lKSkKPiA+ICsJCXJldHVybiAwOwo+ID4gKwo+ID4gKwlpZiAoIWludGVs X2RwX25lZWRzX2xpbmtfcmV0cmFpbihpbnRlbF9kcCkpCj4gPiArCQlyZXR1cm4gMDsKPiBOQUss IHRoaXMgZGVmaW5pdGVseSB3b24ndCB3b3JrIGZvciBpbXBsZW1lbnRpbmcgTVNUIHJldHJhaW5p bmcuIFRoZXJlJ3Mgc29tZQo+IHByZXR0eSBodWdlIGRpZmZlcmVuY2VzIHdpdGggaG93IHJldHJh aW5pbmcgbmVlZHMgdG8gYmUgaGFuZGxlZCBvbiBTU1QgdnMuIE1TVC4KPiBBbiBleGFtcGxlIHdp dGggc29tZSBub3JtYWwgU1NUIHNpbmsgdnMuIHdoYXQgaGFwcGVucyBvbiBteSBjYWxkaWdpdCBU UzMKPiAKPiBTU1Q6Cj4gICAgIDEuIGNvbW1pdCBtb2Rlc2V0LCBldmVyeXRoaW5nIGlzIE9LCj4g ICAgIDIuIHNvbWV0aGluZyBoYXBwZW5zLCBzaW5rIHNlbmRzIHNob3J0cHVsc2UgYW5kIGNoYW5n ZXMgbGluayBzdGF0dXMgcmVnaXN0ZXJzCj4gICAgIGluIGRwY2QKPiAgICAgMy4gU291cmNlIHJl Y2VpdmVzIHNob3J0IHB1bHNlLCB0cmllcyByZXRyYWluaW5nIGZpdmUgdGltZXMKPiAgICAgNC4g aWYgdGhpcyBzdWNjZWVkczoKPiAgICAgICAgIDUuIHdlJ3JlIGRvbmUgaGVyZQo+ICAgICA2LiBp ZiB0aGlzIGZhaWxzOgo+ICAgICAgICAgNy4gbWFyayBsaW5rIHN0YXR1cyBhcyBiYWQKPiAgICAg ICAgIDguIGdldCBmYWxsYmFjayBwYXJhbWV0ZXJzCj4gICAgICAgICA5LiBob3RwbHVnIGV2ZW50 Cj4gCj4gTVNUIChpOTE1IGRvZXNuJ3QgZG8gdGhpcyB5ZXQsIGJ1dCB0aGlzIGlzIGdlbmVyYWxs eSBob3cgaXQgbmVlZHMgdG8gYmUKPiBoYW5kbGVkKToKPiAgICAgMS4gY29tbWl0IG1vZGVzZXQs IGV2ZXJ5dGhpbmcgaXMgT0sKPiAgICAgMi4gc29tZXRoaW5nIGhhcHBlbnMgKGluIG15IGNhc2Us IHRoZSBNU1QgaHViIGRpc2NvdmVycyBpdCBoYWQgdGhlIHdyb25nIG1heAo+ICAgICBsaW5rIHJh dGUvbGFuZSBjb3VudCksIHNpbmsgc2VuZHMgRVNJIGluZGljYXRpbmcgY2hhbm5lbCBFUSBoYXMg ZmFpbGVkCj4gICAgIDMuIHJldHJhaW5pbmcgY29tbWVuY2VzIHdpdGggZml2ZSByZXRyaWVzLgo+ ICAgICA0LiBpZiB0aGlzIHN1Y2NlZWRzOgo+ICAgICAgICA1LiBjb250aW51ZQo+ICAgICA2LiBp ZiB0aGlzIGZhaWxzIChJIGFjdHVhbGx5IGhhdmVuJ3Qgc2VlbiB0aGlzIG9uY2UgeWV0KQo+ICAg ICAgICAgNy4gbWFyayBsaW5rIHN0YXR1cyBhcyBiYWQgb24gYWxsIGRvd25zdHJlYW0gY29ubmVj dG9ycwo+ICAgICAgICAgOC4gZ2V0IGZhbGxiYWNrIHBhcmFtZXRlcnMKPiAgICAgICAgIDkuIGhv dHBsdWcgZXZlbnQKPiAgICAgMTAuIHRoZSByZXRyYWluIGRpZG4ndCBhY3R1YWxseSB3b3JrIChk ZXNwaXRlIHdoYXQgdGhlIFNTVCBsaW5rIHN0YXR1cwo+ICAgICByZWdpc3RlcnMgdG9sZCB1cyku IGdvIGJhY2sgdG8gc3RlcCAzIGZpdmUgbW9yZSB0aW1lcwo+ICAgICAxMS4gaWYgdGhpcyBmYWls czoKPiAgICAgICAgIDEyLiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJhZCBvbiBhbGwgZG93bnN0cmVh bSBjb25uZWN0b3JzCj4gICAgICAgICAxMy4gZ2V0IGZhbGxiYWNrIHBhcmFtZXRlcnMKPiAgICAg ICAgIDE0LiBob3RwbHVnIGV2ZW50Cj4gCj4gc2ltcGx5IHB1dDogd2UgcmVhbGx5IHNob3VsZCBr ZWVwIHRoZSAiZG8gd2UgbmVlZCB0byByZXRyYWluPyIgbG9naWMgb3V0IG9mIHRoZQo+IGFjdHVh bCByZXRyYWluaW5nIGhlbHBlcnMgc28gdGhhdCBTU1QvTVNUIGNvZGVwYXRocyBjYW4gZG8gdGhl aXIgb3duIGNoZWNrcyB0bwo+IGZpZ3VyZSB0aGlzIG91dC4KCk5vLCB3ZSBuZWVkIGl0IHNpbmNl IHdlIHdhbnQgdG8gY2hlY2sgaXQgKmFmdGVyKiBhbnkgbW9kZXNldCBoYXMKZmluaXNoZWQuIFdp dGggTVNUIEkgdGhpbmsgd2hhdCB3ZSdsbCB3YW50IHRvIGRvIGlzIGZpbmQgYWxsIHRoZSBwaXBl cwphZmZlY3RlZCBieSB0aGUgbGluayBmYWlsdXJlLCBsb2NrIHRoZW0sIGFuZCB3YWl0IHVudGls IHRoZXkncmUgZG9uZQp3aXRoIHRoZWlyIG1vZGVzZXRzLCB0aGVuIHdlIGNoZWNrIHRoZSBsaW5r IHN0YXRlLiBJZiBpdCdzIGJhZCB3ZQpwcm9jZWVkIHRvIHJldHJhaW4gdGhlIGxpbmsuCgpTbyBi YXNpY2FsbHkganVzdCB3YWxraW5nIG92ZXIgdGhlIE1TVCBlbmNvZGVycyBpbiBhZGRpdGlvbiB0 byB0aGUKU1NUIGVuY29kZXIsIGFuZCByZXBlYXRpbmcgbW9zdCBvZiB0aGUgc3RlcHMgaW4gdGhp cyBjb2RlIGZvciBlYWNoLgpIZW5jZSB0aGUgdGhlIE1TVCBGSVhNRSBJIGxlZnQgaW4gdGhlcmUg OykKCj4gCj4gPiAgCj4gPiAgCS8qIFN1cHByZXNzIHVuZGVycnVucyBjYXVzZWQgYnkgcmUtdHJh aW5pbmcgKi8KPiA+ICAJaW50ZWxfc2V0X2NwdV9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZf cHJpdiwgY3J0Yy0+cGlwZSwgZmFsc2UpOwo+ID4gQEAgLTQyOTgsNTEgKzQzNjksNDkgQEAgaW50 ZWxfZHBfcmV0cmFpbl9saW5rKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiAgCWlmIChj cnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikKPiA+ICAJCWludGVsX3NldF9wY2hfZmlmb191 bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsCj4gPiAgCQkJCQkJICAgICAgaW50ZWxfY3J0Y19w Y2hfdHJhbnNjb2QKPiA+IGVyKGNydGMpLCB0cnVlKTsKPiA+ICsKPiA+ICsJcmV0dXJuIDA7Cj4g PiAgfQo+ID4gIAo+ID4gLXN0YXRpYyB2b2lkCj4gPiAtaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0 dXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICsvKgo+ID4gKyAqIElmIGRpc3BsYXkg aXMgbm93IGNvbm5lY3RlZCBjaGVjayBsaW5rcyBzdGF0dXMsCj4gPiArICogdGhlcmUgaGFzIGJl ZW4ga25vd24gaXNzdWVzIG9mIGxpbmsgbG9zcyB0cmlnZ2VyaW5nCj4gPiArICogbG9uZyBwdWxz ZS4KPiA+ICsgKgo+ID4gKyAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBw ZXJmb3JtIHNvbWUKPiA+ICsgKiB3ZWlyZCBIUEQgcGluZyBwb25nIGR1cmluZyBtb2Rlc2V0cy4g U28gd2UgY2FuIGFwcGFyZW50bHkKPiA+ICsgKiBlbmQgdXAgd2l0aCBIUEQgZ29pbmcgbG93IGR1 cmluZyBhIG1vZGVzZXQsIGFuZCB0aGVuCj4gPiArICogZ29pbmcgYmFjayB1cCBzb29uIGFmdGVy LiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ID4gKyAqIHJldHJhaW4gdGhlIGxpbmsg dG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2Ugbm8KPiA+ICsgKiB1c2Vyc3BhY2UgY29t cG9uZW50IHJlYWN0ZWQgdG8gaW50ZXJtaXR0ZW50IEhQRCBkaXAuCj4gPiArICovCj4gPiArc3Rh dGljIGJvb2wgaW50ZWxfZHBfaG90cGx1ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiA+ICsJCQkgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICB7Cj4g PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9Cj4gPiB0b19pOTE1KGludGVs X2RwX3RvX2RldihpbnRlbF9kcCkpOwo+ID4gLQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxf ZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktCj4gPiA+YmFzZTsKPiA+IC0Jc3Ry dWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3RhdGUgPQo+ID4gLQkJaW50ZWxfZHAtPmF0 dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZS5zdGF0ZTsKPiA+IC0JdTggbGlua19zdGF0dXNbRFBfTElO S19TVEFUVVNfU0laRV07Cj4gPiAtCj4gPiAtCVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tl ZCgmZGV2X3ByaXYtCj4gPiA+ZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpKTsKPiA+ IC0KPiA+IC0JaWYgKCFpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3Rh dHVzKSkgewo+ID4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsK PiA+IC0JCXJldHVybjsKPiA+IC0JfQo+ID4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9j dHggY3R4Owo+ID4gKwlib29sIGNoYW5nZWQ7Cj4gPiArCWludCByZXQ7Cj4gPiAgCj4gPiAtCWlm ICghY29ubl9zdGF0ZS0+Y3J0YykKPiA+IC0JCXJldHVybjsKPiA+ICsJY2hhbmdlZCA9IGludGVs X2VuY29kZXJfaG90cGx1ZyhlbmNvZGVyLCBjb25uZWN0b3IpOwo+ID4gIAo+ID4gLQlXQVJOX09O KCFkcm1fbW9kZXNldF9pc19sb2NrZWQoJmNvbm5fc3RhdGUtPmNydGMtPm11dGV4KSk7Cj4gPiAr CWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ICAKPiA+IC0JaWYgKCFjb25u X3N0YXRlLT5jcnRjLT5zdGF0ZS0+YWN0aXZlKQo+ID4gLQkJcmV0dXJuOwo+ID4gKwlmb3IgKDs7 KSB7Cj4gPiArCQlyZXQgPSBpbnRlbF9kcF9yZXRyYWluX2xpbmsoZW5jb2RlciwgJmN0eCk7Cj4g PiAgCj4gPiAtCWlmIChjb25uX3N0YXRlLT5jb21taXQgJiYKPiA+IC0JICAgICF0cnlfd2FpdF9m b3JfY29tcGxldGlvbigmY29ubl9zdGF0ZS0+Y29tbWl0LT5od19kb25lKSkKPiA+IC0JCXJldHVy bjsKPiA+ICsJCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+ICsJCQlkcm1fbW9kZXNldF9iYWNr b2ZmKCZjdHgpOwo+ID4gKwkJCWNvbnRpbnVlOwo+ID4gKwkJfQo+ID4gIAo+ID4gLQkvKgo+ID4g LQkgKiBWYWxpZGF0ZSB0aGUgY2FjaGVkIHZhbHVlcyBvZiBpbnRlbF9kcC0+bGlua19yYXRlIGFu ZAo+ID4gLQkgKiBpbnRlbF9kcC0+bGFuZV9jb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRy YWluLgo+ID4gLQkgKi8KPiA+IC0JaWYgKCFpbnRlbF9kcF9saW5rX3BhcmFtc192YWxpZChpbnRl bF9kcCwgaW50ZWxfZHAtPmxpbmtfcmF0ZSwKPiA+IC0JCQkJCWludGVsX2RwLT5sYW5lX2NvdW50 KSkKPiA+IC0JCXJldHVybjsKPiA+ICsJCWJyZWFrOwo+ID4gKwl9Cj4gPiAgCj4gPiAtCS8qIFJl dHJhaW4gaWYgQ2hhbm5lbCBFUSBvciBDUiBub3Qgb2sgKi8KPiA+IC0JaWYgKCFkcm1fZHBfY2hh bm5lbF9lcV9vayhsaW5rX3N0YXR1cywgaW50ZWxfZHAtPmxhbmVfY291bnQpKSB7Cj4gPiAtCQlE Uk1fREVCVUdfS01TKCIlczogY2hhbm5lbCBFUSBub3Qgb2ssIHJldHJhaW5pbmdcbiIsCj4gPiAt CQkJICAgICAgaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1lKTsKPiA+ICsJZHJtX21vZGVzZXRfZHJv cF9sb2NrcygmY3R4KTsKPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4g KwlXQVJOKHJldCwgIkFjcXVpcmluZyBtb2Rlc2V0IGxvY2tzIGZhaWxlZCB3aXRoICVpXG4iLCBy ZXQpOwo+ID4gIAo+ID4gLQkJaW50ZWxfZHBfcmV0cmFpbl9saW5rKGludGVsX2RwKTsKPiA+IC0J fQo+ID4gKwlyZXR1cm4gY2hhbmdlZDsKPiA+ICB9Cj4gPiAgCj4gPiAgLyoKPiA+IEBAIC00NDAw LDcgKzQ0NjksOSBAQCBpbnRlbF9kcF9zaG9ydF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ID4gIAkJCURSTV9ERUJVR19EUklWRVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxCj4g PiB1bmhhbmRsZWRcbiIpOwo+ID4gIAl9Cj4gPiAgCj4gPiAtCWludGVsX2RwX2NoZWNrX2xpbmtf c3RhdHVzKGludGVsX2RwKTsKPiA+ICsJLyogZGVmZXIgdG8gdGhlIGhvdHBsdWcgd29yayBmb3Ig bGluayByZXRyYWluaW5nIGlmIG5lZWRlZCAqLwo+ID4gKwlpZiAoaW50ZWxfZHBfbmVlZHNfbGlu a19yZXRyYWluKGludGVsX2RwKSkKPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ICAKPiA+ICAJaWYg KGludGVsX2RwLT5jb21wbGlhbmNlLnRlc3RfdHlwZSA9PSBEUF9URVNUX0xJTktfVFJBSU5JTkcp IHsKPiA+ICAJCURSTV9ERUJVR19LTVMoIkxpbmsgVHJhaW5pbmcgQ29tcGxpYW5jZSBUZXN0IHJl cXVlc3RlZFxuIik7Cj4gPiBAQCAtNDc4NSwyMCArNDg1Niw2IEBAIGludGVsX2RwX2xvbmdfcHVs c2Uoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ID4gIAkJICovCj4gPiAgCQlz dGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiA+ICAJCWdvdG8gb3V0Owo+ ID4gLQl9IGVsc2Ugewo+ID4gLQkJLyoKPiA+IC0JCSAqIElmIGRpc3BsYXkgaXMgbm93IGNvbm5l Y3RlZCBjaGVjayBsaW5rcyBzdGF0dXMsCj4gPiAtCQkgKiB0aGVyZSBoYXMgYmVlbiBrbm93biBp c3N1ZXMgb2YgbGluayBsb3NzIHRyaWdnZXJyaW5nCj4gPiAtCQkgKiBsb25nIHB1bHNlLgo+ID4g LQkJICoKPiA+IC0JCSAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBwZXJm b3JtIHNvbWUKPiA+IC0JCSAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBT byB3ZSBjYW4gYXBwYXJlbnRseQo+ID4gLQkJICogZW5kIHVwIHdpdGggSFBEIGdvaW5nIGxvdyBk dXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ID4gLQkJICogZ29pbmcgYmFjayB1cCBzb29uIGFm dGVyLiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ID4gLQkJICogcmV0cmFpbiB0aGUg bGluayB0byBnZXQgYSBwaWN0dXJlLiBUaGF0J3MgaW4gY2FzZSBubwo+ID4gLQkJICogdXNlcnNw YWNlIGNvbXBvbmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ID4gLQkJICov Cj4gPiAtCQlpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9kcCk7Cj4gPiAgCX0KPiA+ ICAKPiA+ICAJLyoKPiA+IEBAIC01MzQwLDM3ICs1Mzk3LDEwIEBAIGludGVsX2RwX2hwZF9wdWxz ZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiAqaW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9u Z19ocGQpCj4gPiAgCX0KPiA+ICAKPiA+ICAJaWYgKCFpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gPiAt CQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ID4gLQkJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9kcC0KPiA+ID5hdHRhY2hlZF9jb25uZWN0b3It PmJhc2U7Cj4gPiAtCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiAtCQlpbnQgaXJldDsKPiA+ IC0JCWJvb2wgaGFuZGxlZCA9IGZhbHNlOwo+ID4gLQo+ID4gLQkJZHJtX21vZGVzZXRfYWNxdWly ZV9pbml0KCZjdHgsIDApOwo+ID4gLXJldHJ5Ogo+ID4gLQkJaXJldCA9IGRybV9tb2Rlc2V0X2xv Y2soJmRldl9wcml2LQo+ID4gPmRybS5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCAmY3R4 KTsKPiA+IC0JCWlmIChpcmV0KQo+ID4gLQkJCWdvdG8gZXJyOwo+ID4gLQo+ID4gLQkJY3J0YyA9 IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gPiAtCQlpZiAoY3J0Yykgewo+ID4gLQkJCWlyZXQg PSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgJmN0eCk7Cj4gPiAtCQkJaWYgKGlyZXQp Cj4gPiAtCQkJCWdvdG8gZXJyOwo+ID4gLQkJfQo+ID4gKwkJYm9vbCBoYW5kbGVkOwo+ID4gIAo+ ID4gIAkJaGFuZGxlZCA9IGludGVsX2RwX3Nob3J0X3B1bHNlKGludGVsX2RwKTsKPiA+ICAKPiA+ IC1lcnI6Cj4gPiAtCQlpZiAoaXJldCA9PSAtRURFQURMSykgewo+ID4gLQkJCWRybV9tb2Rlc2V0 X2JhY2tvZmYoJmN0eCk7Cj4gPiAtCQkJZ290byByZXRyeTsKPiA+IC0JCX0KPiA+IC0KPiA+IC0J CWRybV9tb2Rlc2V0X2Ryb3BfbG9ja3MoJmN0eCk7Cj4gPiAtCQlkcm1fbW9kZXNldF9hY3F1aXJl X2ZpbmkoJmN0eCk7Cj4gPiAtCQlXQVJOKGlyZXQsICJBY3F1aXJpbmcgbW9kZXNldCBsb2NrcyBm YWlsZWQgd2l0aCAlaVxuIiwgaXJldCk7Cj4gPiAtCj4gPiAgCQkvKiBTaG9ydCBwdWxzZSBjYW4g c2lnbmlmeSBsb3NzIG9mIGhkY3AgYXV0aGVudGljYXRpb24gKi8KPiA+ICAJCWludGVsX2hkY3Bf Y2hlY2tfbGluayhpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiA+ICAKPiA+IEBAIC02 NDAwLDcgKzY0MzAsNyBAQCBib29sIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ID4gIAkJCSAgICAgIkRQICVjIiwgcG9ydF9uYW1lKHBvcnQpKSkKPiA+ ICAJCWdvdG8gZXJyX2VuY29kZXJfaW5pdDsKPiA+ICAKPiA+IC0JaW50ZWxfZW5jb2Rlci0+aG90 cGx1ZyA9IGludGVsX2VuY29kZXJfaG90cGx1ZzsKPiA+ICsJaW50ZWxfZW5jb2Rlci0+aG90cGx1 ZyA9IGludGVsX2RwX2hvdHBsdWc7Cj4gPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVfY29uZmln ID0gaW50ZWxfZHBfY29tcHV0ZV9jb25maWc7Cj4gPiAgCWludGVsX2VuY29kZXItPmdldF9od19z dGF0ZSA9IGludGVsX2RwX2dldF9od19zdGF0ZTsKPiA+ICAJaW50ZWxfZW5jb2Rlci0+Z2V0X2Nv bmZpZyA9IGludGVsX2RwX2dldF9jb25maWc7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2 LmgKPiA+IGluZGV4IDVlYTFkYzNmNjNiZi4uZGRmMjhhNDQyY2Q3IDEwMDY0NAo+ID4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oCj4gPiBAQCAtMTYxMSw2ICsxNjExLDggQEAgaW50IGludGVsX2Rw X2dldF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhzdHJ1Y3QKPiA+IGludGVsX2RwICppbnRl bF9kcCwKPiA+ICAJCQkJCSAgICBpbnQgbGlua19yYXRlLCB1aW50OF90Cj4gPiBsYW5lX2NvdW50 KTsKPiA+ICB2b2lkIGludGVsX2RwX3N0YXJ0X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCk7Cj4gPiAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7Cj4gPiAraW50IGludGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ICsJCQkgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJl X2N0eCAqY3R4KTsKPiA+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCBpbnQgbW9kZSk7Cj4gPiAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0 cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rlcik7Cj4gPiAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3N1 c3BlbmQoc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIpOwoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==