From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lyude Paul Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Wed, 28 Feb 2018 14:07:34 -0500 Message-ID: <1519844854.26611.4.camel@redhat.com> References: <20180117192149.17760-1-ville.syrjala@linux.intel.com> <20180117192149.17760-3-ville.syrjala@linux.intel.com> <1517354219.4938.24.camel@redhat.com> <20180131132710.GK5453@intel.com> <20180228071731.GB2386@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-qt0-f178.google.com (mail-qt0-f178.google.com [209.85.216.178]) by gabe.freedesktop.org (Postfix) with ESMTPS id ECD0789020 for ; Wed, 28 Feb 2018 19:07:36 +0000 (UTC) Received: by mail-qt0-f178.google.com with SMTP id y6so4378200qtm.7 for ; Wed, 28 Feb 2018 11:07:36 -0800 (PST) In-Reply-To: <20180228071731.GB2386@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 , Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIFR1ZSwgMjAxOC0wMi0yNyBhdCAyMzoxNyAtMDgwMCwgTWFuYXNpIE5hdmFyZSB3cm90ZToK PiBWaWxsZSwgIHRoYW5rcyBmb3IgdGhlIHBhdGNoIGFuZAo+IFNvcnJ5IGZvciBub3QgYmVpbmcg YWJsZSB0byByZXZpZXcgdGhpcyBlYXJsaWVyLgo+IFBsZWFzZSBmaW5kIHNvbWUgY29tbWVudHMg YmVsb3c6Cj4gCj4gT24gV2VkLCBKYW4gMzEsIDIwMTggYXQgMDM6Mjc6MTBQTSArMDIwMCwgVmls bGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gT24gVHVlLCBKYW4gMzAsIDIwMTggYXQgMDY6MTY6NTlQ TSAtMDUwMCwgTHl1ZGUgUGF1bCB3cm90ZToKPiA+ID4gT24gV2VkLCAyMDE4LTAxLTE3IGF0IDIx OjIxICswMjAwLCBWaWxsZSBTeXJqYWxhIHdyb3RlOgo+ID4gPiA+IEZyb206IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPiA+ID4gCj4gPiA+ID4gRG9p bmcgbGluayByZXRyYWluaW5nIGZyb20gdGhlIHNob3J0IHB1bHNlIGhhbmRsZXIgaXMgcHJvYmxl bWF0aWMKPiA+ID4gPiBzaW5jZQo+ID4gPiA+IHRoYXQgbWlnaHQgaW50cm9kdWNlIGRlYWRsb2Nr cyB3aXRoIE1TVCBzaWRlYmFuZCBwcm9jZXNzaW5nLiBDdXJyZW50bHkKPiA+ID4gPiB3ZSBkb24n dCByZXRyYWluIE1TVCBsaW5rcyBmcm9tIHRoaXMgY29kZSwgYnV0IHdlIHdhbnQgdG8gY2hhbmdl IHRoYXQuCj4gPiA+ID4gU28gYmV0dGVyIHRvIG1vdmUgdGhlIGVudGlyZSB0aGluZyB0byB0aGUg aG90cGx1ZyB3b3JrLiBXZSBjYW4gdXRpbGl6ZQo+ID4gPiA+IHRoZSBuZXcgZW5jb2Rlci0+aG90 cGx1ZygpIGhvb2sgZm9yIHRoaXMuCj4gPiA+ID4gCj4gPiA+ID4gVGhlIG9ubHkgdGhpbmcgd2Ug bGVhdmUgaW4gdGhlIHNob3J0IHB1bHNlIGhhbmRsZXIgaXMgdGhlIGxpbmsgc3RhdHVzCj4gPiA+ ID4gY2hlY2suIFRoYXQgb25lIHN0aWxsIGRlcGVuZHMgb24gdGhlIGxpbmsgcGFyYW1ldGVycyBz dG9yZWQgdW5kZXIKPiA+ID4gPiBpbnRlbF9kcCwgc28gbm8gbG9ja2luZyBhcm91bmQgdGhhdCBi dXQgcmFjZXMgc2hvdWxkIGJlIG1vc3RseQo+ID4gPiA+IGhhcm1sZXNzCj4gPiA+ID4gYXMgdGhl IGFjdHVhbCByZXRyYWluaW5nIGNvZGUgd2lsbCByZWNoZWNrIHRoZSBsaW5rIHN0YXRlIGlmIHdl Cj4gPiA+ID4gZW5kIHVwIHRoZXJlIGJ5IG1pc3Rha2UuCj4gPiA+ID4gCj4gPiA+ID4gdjI6IFJl YmFzZSBkdWUgdG8gLT5wb3N0X2hvdHBsdWcoKSBub3cgYmVpbmcganVzdCAtPmhvdHBsdWcoKQo+ ID4gPiA+ICAgICBDaGVjayB0aGUgY29ubmVjdG9yIHR5cGUgdG8gZmlndXJlIG91dCBpZiB3ZSBz aG91bGQgZG8KPiA+ID4gPiAgICAgdGhlIEhETUkgdGhpbmcgb3IgdGhlIERQIHRoaW5rIGZvciBE REkKPiA+ID4gPiAKPiA+ID4gPiBDYzogTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGlu dGVsLmNvbT4KPiA+ID4gPiBDYzogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0 QGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+ID4gPiA+IC0tLQo+ID4gPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8ICAxMCArLQo+ID4gPiA+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8IDE5NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0t Cj4gPiA+ID4gLS0tLS0tLS0KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggfCAgIDIgKwo+ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNl cnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkKPiA+ID4gPiAKPiA+ID4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ID4gaW5kZXggMjU3OTNiZGM2OTJmLi41ZjNkNThmMWFl NmUgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMK PiA+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiA+IEBA IC0yODgwLDcgKzI4ODAsMTAgQEAgc3RhdGljIGJvb2wgaW50ZWxfZGRpX2hvdHBsdWcoc3RydWN0 Cj4gPiA+ID4gaW50ZWxfZW5jb2Rlcgo+ID4gPiA+ICplbmNvZGVyLAo+ID4gPiA+ICAJZHJtX21v ZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ID4gPiA+ICAKPiA+ID4gPiAgCWZvciAoOzsp IHsKPiA+ID4gPiAtCQlyZXQgPSBpbnRlbF9oZG1pX3Jlc2V0X2xpbmsoZW5jb2RlciwgJmN0eCk7 Cj4gPiA+ID4gKwkJaWYgKGNvbm5lY3Rvci0+YmFzZS5jb25uZWN0b3JfdHlwZSA9PQo+ID4gPiA+ IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSkKPiA+ID4gPiArCQkJcmV0ID0gaW50ZWxfaGRtaV9y ZXNldF9saW5rKGVuY29kZXIsICZjdHgpOwo+ID4gPiA+ICsJCWVsc2UKPiA+ID4gPiArCQkJcmV0 ID0gaW50ZWxfZHBfcmV0cmFpbl9saW5rKGVuY29kZXIsICZjdHgpOwo+ID4gPiA+ICAKPiA+ID4g PiAgCQlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gPiA+ID4gIAkJCWRybV9tb2Rlc2V0X2JhY2tv ZmYoJmN0eCk7Cj4gPiA+ID4gQEAgLTMwMDcsMTAgKzMwMTAsNyBAQCB2b2lkIGludGVsX2RkaV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlCj4gPiA+ID4gKmRldl9wcml2LAo+ID4gPiA+IGVu dW0gcG9ydCBwb3J0KQo+ID4gPiA+ICAJZHJtX2VuY29kZXJfaW5pdCgmZGV2X3ByaXYtPmRybSwg ZW5jb2RlciwgJmludGVsX2RkaV9mdW5jcywKPiA+ID4gPiAgCQkJIERSTV9NT0RFX0VOQ09ERVJf VE1EUywgIkRESSAlYyIsCj4gPiA+ID4gcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gPiAgCj4gPiA+ ID4gLQlpZiAoaW5pdF9oZG1pKQo+ID4gPiA+IC0JCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBp bnRlbF9kZGlfaG90cGx1ZzsKPiA+ID4gPiAtCWVsc2UKPiA+ID4gPiAtCQlpbnRlbF9lbmNvZGVy LT5ob3RwbHVnID0gaW50ZWxfZW5jb2Rlcl9ob3RwbHVnOwo+ID4gPiA+ICsJaW50ZWxfZW5jb2Rl ci0+aG90cGx1ZyA9IGludGVsX2RkaV9ob3RwbHVnOwo+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+ Y29tcHV0ZV9vdXRwdXRfdHlwZSA9Cj4gPiA+ID4gaW50ZWxfZGRpX2NvbXB1dGVfb3V0cHV0X3R5 cGU7Cj4gPiA+ID4gIAlpbnRlbF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVsX2RkaV9j b21wdXRlX2NvbmZpZzsKPiA+ID4gPiAgCWludGVsX2VuY29kZXItPmVuYWJsZSA9IGludGVsX2Vu YWJsZV9kZGk7Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RwLmMKPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gPiBp bmRleCA2YmJmMTQ0MTBjMmEuLjE1MjAxNmUwOWExMSAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+IEBAIC00Mjc1LDEyICs0Mjc1LDgzIEBAIGludGVsX2Rw X2NoZWNrX21zdF9zdGF0dXMoc3RydWN0IGludGVsX2RwCj4gPiA+ID4gKmludGVsX2RwKQo+ID4g PiA+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4gPiA+ID4gLXN0YXRp YyB2b2lkCj4gPiA+ID4gLWludGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKQo+ID4gPiA+ICtzdGF0aWMgYm9vbAo+ID4gPiA+ICtpbnRlbF9kcF9uZWVkc19saW5r X3JldHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gPiArewo+ID4gPiA+ICsJ dTggbGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJ aWYgKCFpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+ ID4gPiA+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIGdldCBsaW5rIHN0YXR1c1xuIik7Cj4gPiA+ ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ICsJfQo+ID4gPiA+ICsKPiA+ID4gPiArCS8qCj4g PiA+ID4gKwkgKiBWYWxpZGF0ZSB0aGUgY2FjaGVkIHZhbHVlcyBvZiBpbnRlbF9kcC0+bGlua19y YXRlIGFuZAo+ID4gPiA+ICsJICogaW50ZWxfZHAtPmxhbmVfY291bnQgYmVmb3JlIGF0dGVtcHRp bmcgdG8gcmV0cmFpbi4KPiA+ID4gPiArCSAqLwo+ID4gPiA+ICsJaWYgKCFpbnRlbF9kcF9saW5r X3BhcmFtc192YWxpZChpbnRlbF9kcCwgaW50ZWxfZHAtCj4gPiA+ID4gPmxpbmtfcmF0ZSwKPiA+ ID4gPiArCQkJCQlpbnRlbF9kcC0+bGFuZV9jb3VudCkpCj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNl Owo+ID4gPiA+ICsKPiA+ID4gPiArCS8qIFJldHJhaW4gaWYgQ2hhbm5lbCBFUSBvciBDUiBub3Qg b2sgKi8KPiA+ID4gPiArCXJldHVybiAhZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMs IGludGVsX2RwLQo+ID4gPiA+ID5sYW5lX2NvdW50KTsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ ID4gPiArLyoKPiA+ID4gPiArICogSWYgZGlzcGxheSBpcyBub3cgY29ubmVjdGVkIGNoZWNrIGxp bmtzIHN0YXR1cywKPiA+ID4gPiArICogdGhlcmUgaGFzIGJlZW4ga25vd24gaXNzdWVzIG9mIGxp bmsgbG9zcyB0cmlnZ2VyaW5nCj4gPiA+ID4gKyAqIGxvbmcgcHVsc2UuCj4gPiA+ID4gKyAqCj4g PiA+ID4gKyAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBwZXJmb3JtIHNv bWUKPiA+ID4gPiArICogd2VpcmQgSFBEIHBpbmcgcG9uZyBkdXJpbmcgbW9kZXNldHMuIFNvIHdl IGNhbiBhcHBhcmVudGx5Cj4gPiA+ID4gKyAqIGVuZCB1cCB3aXRoIEhQRCBnb2luZyBsb3cgZHVy aW5nIGEgbW9kZXNldCwgYW5kIHRoZW4KPiA+ID4gPiArICogZ29pbmcgYmFjayB1cCBzb29uIGFm dGVyLiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ID4gPiA+ICsgKiByZXRyYWluIHRo ZSBsaW5rIHRvIGdldCBhIHBpY3R1cmUuIFRoYXQncyBpbiBjYXNlIG5vCj4gPiA+ID4gKyAqIHVz ZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0byBpbnRlcm1pdHRlbnQgSFBEIGRpcC4KPiA+ID4g PiArICovCj4gPiA+ID4gK2ludCBpbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gPiA+ID4gKwkJCSAgc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVf Y3R4ICpjdHgpCj4gPiA+ID4gIHsKPiA+ID4gPiAtCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0KPiA+ID4gPiA+YmFzZTsKPiA+ID4gPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0KPiA+ ID4gPiA+YmFzZS5kZXYpOwo+ID4gPiA+IC0Jc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19p bnRlbF9jcnRjKGVuY29kZXItPmJhc2UuY3J0Yyk7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiA+ID4gPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLQo+ID4gPiA+ID5hdHRh Y2hlZF9jb25uZWN0b3I7Cj4gPiA+ID4gKwlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29u bl9zdGF0ZTsKPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ ID4gPiA+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGM7Cj4gPiA+ID4gKwlpbnQgcmV0Owo+ID4g PiA+ICsKPiA+ID4gPiArCS8qIEZJWE1FIGhhbmRsZSB0aGUgTVNUIGNvbm5lY3RvcnMgYXMgd2Vs bCAqLwo+ID4gPiA+ICsKPiA+ID4gPiArCWlmICghY29ubmVjdG9yIHx8IGNvbm5lY3Rvci0+YmFz ZS5zdGF0dXMgIT0KPiA+ID4gPiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkKPiA+ID4gPiAr CQlyZXR1cm4gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZk ZXZfcHJpdi0KPiA+ID4gPiA+ZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsCj4gPiA+ ID4gY3R4KTsKPiA+ID4gPiArCWlmIChyZXQpCj4gPiA+ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4g PiArCj4gPiA+ID4gKwljb25uX3N0YXRlID0gY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+ID4gPiA+ ICsKPiA+ID4gPiArCWNydGMgPSB0b19pbnRlbF9jcnRjKGNvbm5fc3RhdGUtPmNydGMpOwo+ID4g PiA+ICsJaWYgKCFjcnRjKQo+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ICsKPiA+ID4gPiAr CXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPmJhc2UubXV0ZXgsIGN0eCk7Cj4gPiA+ID4g KwlpZiAocmV0KQo+ID4gPiA+ICsJCXJldHVybiByZXQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJY3J0 Y19zdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFzZS5zdGF0ZSk7Cj4gPiA+ID4g Kwo+ID4gPiA+ICsJV0FSTl9PTighaW50ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRl KSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKCFjcnRjX3N0YXRlLT5iYXNlLmFjdGl2ZSkKPiA+ ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gPiArCj4gPiA+ID4gKwlpZiAoY29ubl9zdGF0ZS0+Y29t bWl0ICYmCj4gPiA+ID4gKwkgICAgIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZjb25uX3N0YXRl LT5jb21taXQtPmh3X2RvbmUpKQo+ID4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiA+ICsKPiA+ID4g PiArCWlmICghaW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKGludGVsX2RwKSkKPiA+ID4gPiAr CQlyZXR1cm4gMDsKPiA+ID4gCj4gPiA+IE5BSywgdGhpcyBkZWZpbml0ZWx5IHdvbid0IHdvcmsg Zm9yIGltcGxlbWVudGluZyBNU1QgcmV0cmFpbmluZy4gVGhlcmUncwo+ID4gPiBzb21lCj4gPiA+ IHByZXR0eSBodWdlIGRpZmZlcmVuY2VzIHdpdGggaG93IHJldHJhaW5pbmcgbmVlZHMgdG8gYmUg aGFuZGxlZCBvbiBTU1QKPiA+ID4gdnMuIE1TVC4KPiA+ID4gQW4gZXhhbXBsZSB3aXRoIHNvbWUg bm9ybWFsIFNTVCBzaW5rIHZzLiB3aGF0IGhhcHBlbnMgb24gbXkgY2FsZGlnaXQgVFMzCj4gPiA+ IAo+ID4gPiBTU1Q6Cj4gPiA+ICAgICAxLiBjb21taXQgbW9kZXNldCwgZXZlcnl0aGluZyBpcyBP Swo+ID4gPiAgICAgMi4gc29tZXRoaW5nIGhhcHBlbnMsIHNpbmsgc2VuZHMgc2hvcnRwdWxzZSBh bmQgY2hhbmdlcyBsaW5rIHN0YXR1cwo+ID4gPiByZWdpc3RlcnMKPiA+ID4gICAgIGluIGRwY2QK PiA+ID4gICAgIDMuIFNvdXJjZSByZWNlaXZlcyBzaG9ydCBwdWxzZSwgdHJpZXMgcmV0cmFpbmlu ZyBmaXZlIHRpbWVzCj4gPiA+ICAgICA0LiBpZiB0aGlzIHN1Y2NlZWRzOgo+ID4gPiAgICAgICAg IDUuIHdlJ3JlIGRvbmUgaGVyZQo+ID4gPiAgICAgNi4gaWYgdGhpcyBmYWlsczoKPiA+ID4gICAg ICAgICA3LiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJhZAo+ID4gPiAgICAgICAgIDguIGdldCBmYWxs YmFjayBwYXJhbWV0ZXJzCj4gPiA+ICAgICAgICAgOS4gaG90cGx1ZyBldmVudAo+ID4gPiAKPiA+ ID4gTVNUIChpOTE1IGRvZXNuJ3QgZG8gdGhpcyB5ZXQsIGJ1dCB0aGlzIGlzIGdlbmVyYWxseSBo b3cgaXQgbmVlZHMgdG8gYmUKPiA+ID4gaGFuZGxlZCk6Cj4gPiA+ICAgICAxLiBjb21taXQgbW9k ZXNldCwgZXZlcnl0aGluZyBpcyBPSwo+ID4gPiAgICAgMi4gc29tZXRoaW5nIGhhcHBlbnMgKGlu IG15IGNhc2UsIHRoZSBNU1QgaHViIGRpc2NvdmVycyBpdCBoYWQgdGhlCj4gPiA+IHdyb25nIG1h eAo+ID4gPiAgICAgbGluayByYXRlL2xhbmUgY291bnQpLCBzaW5rIHNlbmRzIEVTSSBpbmRpY2F0 aW5nIGNoYW5uZWwgRVEgaGFzCj4gPiA+IGZhaWxlZAo+ID4gPiAgICAgMy4gcmV0cmFpbmluZyBj b21tZW5jZXMgd2l0aCBmaXZlIHJldHJpZXMuCj4gPiA+ICAgICA0LiBpZiB0aGlzIHN1Y2NlZWRz Ogo+ID4gPiAgICAgICAgNS4gY29udGludWUKPiA+ID4gICAgIDYuIGlmIHRoaXMgZmFpbHMgKEkg YWN0dWFsbHkgaGF2ZW4ndCBzZWVuIHRoaXMgb25jZSB5ZXQpCj4gPiA+ICAgICAgICAgNy4gbWFy ayBsaW5rIHN0YXR1cyBhcyBiYWQgb24gYWxsIGRvd25zdHJlYW0gY29ubmVjdG9ycwo+ID4gPiAg ICAgICAgIDguIGdldCBmYWxsYmFjayBwYXJhbWV0ZXJzCj4gPiA+ICAgICAgICAgOS4gaG90cGx1 ZyBldmVudAo+ID4gPiAgICAgMTAuIHRoZSByZXRyYWluIGRpZG4ndCBhY3R1YWxseSB3b3JrIChk ZXNwaXRlIHdoYXQgdGhlIFNTVCBsaW5rCj4gPiA+IHN0YXR1cwo+ID4gPiAgICAgcmVnaXN0ZXJz IHRvbGQgdXMpLiBnbyBiYWNrIHRvIHN0ZXAgMyBmaXZlIG1vcmUgdGltZXMKPiA+ID4gICAgIDEx LiBpZiB0aGlzIGZhaWxzOgo+ID4gPiAgICAgICAgIDEyLiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJh ZCBvbiBhbGwgZG93bnN0cmVhbSBjb25uZWN0b3JzCj4gPiA+ICAgICAgICAgMTMuIGdldCBmYWxs YmFjayBwYXJhbWV0ZXJzCj4gPiA+ICAgICAgICAgMTQuIGhvdHBsdWcgZXZlbnQKPiA+ID4gCj4g PiA+IHNpbXBseSBwdXQ6IHdlIHJlYWxseSBzaG91bGQga2VlcCB0aGUgImRvIHdlIG5lZWQgdG8g cmV0cmFpbj8iIGxvZ2ljIG91dAo+ID4gPiBvZiB0aGUKPiA+ID4gYWN0dWFsIHJldHJhaW5pbmcg aGVscGVycyBzbyB0aGF0IFNTVC9NU1QgY29kZXBhdGhzIGNhbiBkbyB0aGVpciBvd24KPiA+ID4g Y2hlY2tzIHRvCj4gPiA+IGZpZ3VyZSB0aGlzIG91dC4KPiA+IAo+ID4gTm8sIHdlIG5lZWQgaXQg c2luY2Ugd2Ugd2FudCB0byBjaGVjayBpdCAqYWZ0ZXIqIGFueSBtb2Rlc2V0IGhhcwo+ID4gZmlu aXNoZWQuIFdpdGggTVNUIEkgdGhpbmsgd2hhdCB3ZSdsbCB3YW50IHRvIGRvIGlzIGZpbmQgYWxs IHRoZSBwaXBlcwo+ID4gYWZmZWN0ZWQgYnkgdGhlIGxpbmsgZmFpbHVyZSwgbG9jayB0aGVtLCBh bmQgd2FpdCB1bnRpbCB0aGV5J3JlIGRvbmUKPiA+IHdpdGggdGhlaXIgbW9kZXNldHMsIHRoZW4g d2UgY2hlY2sgdGhlIGxpbmsgc3RhdGUuIElmIGl0J3MgYmFkIHdlCj4gPiBwcm9jZWVkIHRvIHJl dHJhaW4gdGhlIGxpbmsuCj4gPiAKPiA+IFNvIGJhc2ljYWxseSBqdXN0IHdhbGtpbmcgb3ZlciB0 aGUgTVNUIGVuY29kZXJzIGluIGFkZGl0aW9uIHRvIHRoZQo+ID4gU1NUIGVuY29kZXIsIGFuZCBy ZXBlYXRpbmcgbW9zdCBvZiB0aGUgc3RlcHMgaW4gdGhpcyBjb2RlIGZvciBlYWNoLgo+ID4gSGVu Y2UgdGhlIHRoZSBNU1QgRklYTUUgSSBsZWZ0IGluIHRoZXJlIDspCj4gPiAKPiAKPiBMeXVkZSwK PiAKPiBJIGFncmVlIHdpdGggVmlsbGUgaGVyZSwgY2FuIHdlIGFkZCB0aGUgTVNUIHJldHJhaW4g cmVxdWlyZWQgY2hlY2sgZnJvbQo+IHdpdGhpbiB0aGUgaW50ZWxfZHBfcmV0cmFpbl9saW5rKCk/ IFNvIGZvciBub3cgdGhlIEZJWE1FIHNob3VsZCBiZSBsZWZ0Cj4gdGhlcmUKPiBhbmQgTVNUIHJl dHJhaW5pbmcgY2hlY2sgY2FuIGJlIGFkZGVkIGZyb20geW91ciBwYXRjaGVzLgo+IAo+IE1hbmFz aQoKWWVwISBTb3JyeSBJIHByb2JhYmx5IHNob3VsZCBoYXZlIHJlaXRlcmF0ZWQgdGhpcyBwYXJ0 IG92ZXIgZW1haWwgc2luY2UgSSBvbmx5Cm1lbnRpb25lZCBpdCB0byB2aWxsZSBkaXJlY3RseTog dGhpcyBwYXJ0IHNob3VsZCBkZWZpbml0ZWx5IHdvcmsgZmluZSwgYW5kCmludGVsX2RwX3JldHJh aW5fbGluaygpIGlzIGFjdHVhbGx5IHdoZXJlIHdlIGhhbmRsZSBNU1QgcmV0cmFpbmluZyBpbiB0 aGUKbGF0ZXN0IHZlcnNpb24gb2YgdGhlIHJldHJhaW5pbmcgc2VyaWVzOgoKamZ5aSwgeW91IGNh biBmaW5kIHRoYXQgaGVyZToKaHR0cHM6Ly9naXRodWIuY29tL0x5dWRlL2xpbnV4L3RyZWUvd2lw L2k5MTUtbXN0LWZhbGxiYWNrLWE0Ckl0J3MgYWxtb3N0IHJlYWR5IGZvciB0aGUgTUwsIGp1c3Qg d2FudCB0byBnZXQgdGhlIG90aGVyIHBhdGNoZXMgdGhpcyBpcyBnb2luZwp0byByZWx5IG9uIGlu IGZpcnN0IGFuZCBmaXggc29tZSBzbWFsbCBjb25jZXJucyBJJ3ZlIGdvdCBhYm91dCB0aGF0IHNl cmllcycKY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBoYW5kbGluZyBtb2Rlc2V0cyBhZnRlciBh IGZhaWxlZCByZXRyYWluIHNlcXVlbmNlCj4gCj4gPiA+IAo+ID4gPiA+ICAKPiA+ID4gPiAgCS8q IFN1cHByZXNzIHVuZGVycnVucyBjYXVzZWQgYnkgcmUtdHJhaW5pbmcgKi8KPiA+ID4gPiAgCWlu dGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRpbmcoZGV2X3ByaXYsIGNydGMtPnBpcGUs Cj4gPiA+ID4gZmFsc2UpOwo+ID4gPiA+IEBAIC00Mjk4LDUxICs0MzY5LDQ5IEBAIGludGVsX2Rw X3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZHAKPiA+ID4gPiAqaW50ZWxfZHApCj4gPiA+ID4g IAlpZiAoY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCj4gPiA+ID4gIAkJaW50ZWxfc2V0 X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwKPiA+ID4gPiAgCQkJCQkJICAg ICAgaW50ZWxfY3J0Y19wY2hfCj4gPiA+ID4gdHJhbnNjb2QKPiA+ID4gPiBlcihjcnRjKSwgdHJ1 ZSk7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJcmV0dXJuIDA7Cj4gPiA+ID4gIH0KPiA+ID4gPiAgCj4g PiA+ID4gLXN0YXRpYyB2b2lkCj4gPiA+ID4gLWludGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ID4gKy8qCj4gPiA+ID4gKyAqIElmIGRpc3Bs YXkgaXMgbm93IGNvbm5lY3RlZCBjaGVjayBsaW5rcyBzdGF0dXMsCj4gPiA+ID4gKyAqIHRoZXJl IGhhcyBiZWVuIGtub3duIGlzc3VlcyBvZiBsaW5rIGxvc3MgdHJpZ2dlcmluZwo+ID4gPiA+ICsg KiBsb25nIHB1bHNlLgo+ID4gPiA+ICsgKgo+ID4gPiA+ICsgKiBTb21lIHNpbmtzIChlZy4gQVNV UyBQQjI4N1EpIHNlZW0gdG8gcGVyZm9ybSBzb21lCj4gPiA+ID4gKyAqIHdlaXJkIEhQRCBwaW5n IHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBTbyB3ZSBjYW4gYXBwYXJlbnRseQo+ID4gPiA+ICsgKiBl bmQgdXAgd2l0aCBIUEQgZ29pbmcgbG93IGR1cmluZyBhIG1vZGVzZXQsIGFuZCB0aGVuCj4gPiA+ ID4gKyAqIGdvaW5nIGJhY2sgdXAgc29vbiBhZnRlci4gQW5kIG9uY2UgdGhhdCBoYXBwZW5zIHdl IG11c3QKPiA+ID4gPiArICogcmV0cmFpbiB0aGUgbGluayB0byBnZXQgYSBwaWN0dXJlLiBUaGF0 J3MgaW4gY2FzZSBubwo+ID4gPiA+ICsgKiB1c2Vyc3BhY2UgY29tcG9uZW50IHJlYWN0ZWQgdG8g aW50ZXJtaXR0ZW50IEhQRCBkaXAuCj4gPiA+ID4gKyAqLwo+ID4gPiA+ICtzdGF0aWMgYm9vbCBp bnRlbF9kcF9ob3RwbHVnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiA+ICsJ CQkgICAgIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gPiAgewo+ID4g PiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KPiA+ID4gPiB0b19pOTE1 KGludGVsX2RwX3RvX2RldihpbnRlbF9kcCkpOwo+ID4gPiA+IC0Jc3RydWN0IGludGVsX2VuY29k ZXIgKmludGVsX2VuY29kZXIgPQo+ID4gPiA+ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCktCj4g PiA+ID4gPiBiYXNlOwo+ID4gPiA+IAo+ID4gPiA+IC0Jc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3RhdGUgPQo+ID4gPiA+IC0JCWludGVsX2RwLT5hdHRhY2hlZF9jb25uZWN0b3It PmJhc2Uuc3RhdGU7Cj4gPiA+ID4gLQl1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpF XTsKPiA+ID4gPiAtCj4gPiA+ID4gLQlXQVJOX09OKCFkcm1fbW9kZXNldF9pc19sb2NrZWQoJmRl dl9wcml2LQo+ID4gPiA+ID4gZHJtLm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpKTsKPiA+ ID4gPiAKPiA+ID4gPiAtCj4gPiA+ID4gLQlpZiAoIWludGVsX2RwX2dldF9saW5rX3N0YXR1cyhp bnRlbF9kcCwgbGlua19zdGF0dXMpKSB7Cj4gPiA+ID4gLQkJRFJNX0VSUk9SKCJGYWlsZWQgdG8g Z2V0IGxpbmsgc3RhdHVzXG4iKTsKPiA+ID4gPiAtCQlyZXR1cm47Cj4gPiA+ID4gLQl9Cj4gPiA+ ID4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ID4gPiA+ICsJYm9vbCBj aGFuZ2VkOwo+ID4gPiA+ICsJaW50IHJldDsKPiA+ID4gPiAgCj4gPiA+ID4gLQlpZiAoIWNvbm5f c3RhdGUtPmNydGMpCj4gPiA+ID4gLQkJcmV0dXJuOwo+ID4gPiA+ICsJY2hhbmdlZCA9IGludGVs X2VuY29kZXJfaG90cGx1ZyhlbmNvZGVyLCBjb25uZWN0b3IpOwo+ID4gPiA+ICAKPiA+ID4gPiAt CVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmY29ubl9zdGF0ZS0+Y3J0Yy0+bXV0ZXgp KTsKPiA+ID4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ID4gPiAg Cj4gPiA+ID4gLQlpZiAoIWNvbm5fc3RhdGUtPmNydGMtPnN0YXRlLT5hY3RpdmUpCj4gPiA+ID4g LQkJcmV0dXJuOwo+ID4gPiA+ICsJZm9yICg7Oykgewo+IAo+IEhlcmUgaWYgdGhpcyBpcyBnZXR0 aW5nIGV4ZWN1dGVkIGR1ZSB0byBocGQgcGluZyBwb25nIGR1cmluZyB0aGUgbW9kZXNldAo+IGFu ZCB0aGF0IG1vZGVzZXQgaXMgYWxyZWFkeSBoYXBwZW5pbmcgYXQgYSBsaW5rIGZhbGxiYWNrIHBh cmFtZXRlciB0aGVuCj4gd2hpbGUgd2UgY2FsbCByZXRyYWluIGxpbmssIHdlIHNob3VsZCBhbHNv IHZhbGlkYXRlIHRoZSBsaW5rIHBhcmFtZXRlcnMKPiBzbyB0aGF0IGl0IGRvZXNudCB0cnkgdG8g cmV0cmFpbiB3aXRoIHN0YWxlIHZhbHVlcy4KPiAKPiBJIHRoaW5rIHdlIG5lZWQgdG8gY2FsbCBp bnRlbF9kcF9saW5rX3BhcmFtc192YWxpZCgpIGJlZm9yZSByZXRyYWluLgo+IAo+ID4gPiA+ICsJ CXJldCA9IGludGVsX2RwX3JldHJhaW5fbGluayhlbmNvZGVyLCAmY3R4KTsKPiA+ID4gPiAgCj4g PiA+ID4gLQlpZiAoY29ubl9zdGF0ZS0+Y29tbWl0ICYmCj4gPiA+ID4gLQkgICAgIXRyeV93YWl0 X2Zvcl9jb21wbGV0aW9uKCZjb25uX3N0YXRlLT5jb21taXQtPmh3X2RvbmUpKQo+ID4gPiA+IC0J CXJldHVybjsKPiA+ID4gPiArCQlpZiAocmV0ID09IC1FREVBRExLKSB7Cj4gPiA+ID4gKwkJCWRy bV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+ID4gKwkJCWNvbnRpbnVlOwo+ID4gPiA+ICsJ CX0KPiA+ID4gPiAgCj4gPiA+ID4gLQkvKgo+ID4gPiA+IC0JICogVmFsaWRhdGUgdGhlIGNhY2hl ZCB2YWx1ZXMgb2YgaW50ZWxfZHAtPmxpbmtfcmF0ZSBhbmQKPiA+ID4gPiAtCSAqIGludGVsX2Rw LT5sYW5lX2NvdW50IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJldHJhaW4uCj4gPiA+ID4gLQkgKi8K PiA+ID4gPiAtCWlmICghaW50ZWxfZHBfbGlua19wYXJhbXNfdmFsaWQoaW50ZWxfZHAsIGludGVs X2RwLQo+ID4gPiA+ID5saW5rX3JhdGUsCj4gPiA+ID4gLQkJCQkJaW50ZWxfZHAtPmxhbmVfY291 bnQpKQo+ID4gPiA+IC0JCXJldHVybjsKPiA+ID4gPiArCQlicmVhazsKPiA+ID4gPiArCX0KPiA+ ID4gPiAgCj4gPiA+ID4gLQkvKiBSZXRyYWluIGlmIENoYW5uZWwgRVEgb3IgQ1Igbm90IG9rICov Cj4gPiA+ID4gLQlpZiAoIWRybV9kcF9jaGFubmVsX2VxX29rKGxpbmtfc3RhdHVzLCBpbnRlbF9k cC0+bGFuZV9jb3VudCkpIAo+ID4gPiA+IHsKPiA+ID4gPiAtCQlEUk1fREVCVUdfS01TKCIlczog Y2hhbm5lbCBFUSBub3Qgb2ssIHJldHJhaW5pbmdcbiIsCj4gPiA+ID4gLQkJCSAgICAgIGludGVs X2VuY29kZXItPmJhc2UubmFtZSk7Cj4gPiA+ID4gKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tzKCZj dHgpOwo+ID4gPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ID4gPiA+ICsJ V0FSTihyZXQsICJBY3F1aXJpbmcgbW9kZXNldCBsb2NrcyBmYWlsZWQgd2l0aCAlaVxuIiwgcmV0 KTsKPiA+ID4gPiAgCj4gPiA+ID4gLQkJaW50ZWxfZHBfcmV0cmFpbl9saW5rKGludGVsX2RwKTsK PiA+ID4gPiAtCX0KPiA+ID4gPiArCXJldHVybiBjaGFuZ2VkOwo+ID4gPiA+ICB9Cj4gPiA+ID4g IAo+ID4gPiA+ICAvKgo+ID4gPiA+IEBAIC00NDAwLDcgKzQ0NjksOSBAQCBpbnRlbF9kcF9zaG9y dF9wdWxzZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiA+ICAJCQlEUk1fREVCVUdf RFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljIGlycQo+ID4gPiA+IHVuaGFuZGxlZFxuIik7Cj4g PiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+IC0JaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMo aW50ZWxfZHApOwo+ID4gPiA+ICsJLyogZGVmZXIgdG8gdGhlIGhvdHBsdWcgd29yayBmb3IgbGlu ayByZXRyYWluaW5nIGlmIG5lZWRlZCAqLwo+ID4gPiA+ICsJaWYgKGludGVsX2RwX25lZWRzX2xp bmtfcmV0cmFpbihpbnRlbF9kcCkpCj4gPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiA+ICAK PiA+ID4gPiAgCWlmIChpbnRlbF9kcC0+Y29tcGxpYW5jZS50ZXN0X3R5cGUgPT0gRFBfVEVTVF9M SU5LX1RSQUlOSU5HKQo+ID4gPiA+IHsKPiA+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJMaW5rIFRy YWluaW5nIENvbXBsaWFuY2UgVGVzdAo+ID4gPiA+IHJlcXVlc3RlZFxuIik7Cj4gPiA+ID4gQEAg LTQ3ODUsMjAgKzQ4NTYsNiBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IKPiA+ID4gPiAqY29ubmVjdG9yKQo+ID4gPiA+ICAJCSAqLwo+ID4gPiA+ICAJCXN0YXR1 cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4gPiA+ICAJCWdvdG8gb3V0Owo+ ID4gPiA+IC0JfSBlbHNlIHsKPiA+ID4gPiAtCQkvKgo+ID4gPiA+IC0JCSAqIElmIGRpc3BsYXkg aXMgbm93IGNvbm5lY3RlZCBjaGVjayBsaW5rcyBzdGF0dXMsCj4gPiA+ID4gLQkJICogdGhlcmUg aGFzIGJlZW4ga25vd24gaXNzdWVzIG9mIGxpbmsgbG9zcwo+ID4gPiA+IHRyaWdnZXJyaW5nCj4g PiA+ID4gLQkJICogbG9uZyBwdWxzZS4KPiA+ID4gPiAtCQkgKgo+ID4gPiA+IC0JCSAqIFNvbWUg c2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBwZXJmb3JtIHNvbWUKPiA+ID4gPiAtCQkg KiB3ZWlyZCBIUEQgcGluZyBwb25nIGR1cmluZyBtb2Rlc2V0cy4gU28gd2UgY2FuCj4gPiA+ID4g YXBwYXJlbnRseQo+ID4gPiA+IC0JCSAqIGVuZCB1cCB3aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5n IGEgbW9kZXNldCwgYW5kCj4gPiA+ID4gdGhlbgo+ID4gPiA+IC0JCSAqIGdvaW5nIGJhY2sgdXAg c29vbiBhZnRlci4gQW5kIG9uY2UgdGhhdCBoYXBwZW5zIHdlCj4gPiA+ID4gbXVzdAo+ID4gPiA+ IC0JCSAqIHJldHJhaW4gdGhlIGxpbmsgdG8gZ2V0IGEgcGljdHVyZS4gVGhhdCdzIGluIGNhc2UK PiA+ID4gPiBubwo+ID4gPiA+IC0JCSAqIHVzZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0byBp bnRlcm1pdHRlbnQgSFBECj4gPiA+ID4gZGlwLgo+ID4gPiA+IC0JCSAqLwo+ID4gPiA+IC0JCWlu dGVsX2RwX2NoZWNrX2xpbmtfc3RhdHVzKGludGVsX2RwKTsKPiA+ID4gPiAgCX0KPiA+ID4gPiAg Cj4gPiA+ID4gIAkvKgo+ID4gPiA+IEBAIC01MzQwLDM3ICs1Mzk3LDEwIEBAIGludGVsX2RwX2hw ZF9wdWxzZShzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0Cj4gPiA+ID4gKmludGVsX2RpZ19wb3J0 LCBib29sIGxvbmdfaHBkKQo+ID4gPiA+ICAJfQo+ID4gPiA+ICAKPiA+ID4gPiAgCWlmICghaW50 ZWxfZHAtPmlzX21zdCkgewo+ID4gPiA+IC0JCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0 eCBjdHg7Cj4gPiA+ID4gLQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRl bF9kcC0KPiA+ID4gPiA+IGF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsKPiA+ID4gPiAKPiA+ID4g PiAtCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiA+ID4gLQkJaW50IGlyZXQ7Cj4gPiA+ID4g LQkJYm9vbCBoYW5kbGVkID0gZmFsc2U7Cj4gPiA+ID4gLQo+ID4gPiA+IC0JCWRybV9tb2Rlc2V0 X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ID4gPiAtcmV0cnk6Cj4gPiA+ID4gLQkJaXJldCA9 IGRybV9tb2Rlc2V0X2xvY2soJmRldl9wcml2LQo+ID4gPiA+ID4gZHJtLm1vZGVfY29uZmlnLmNv bm5lY3Rpb25fbXV0ZXgsICZjdHgpOwo+ID4gPiA+IAo+ID4gPiA+IC0JCWlmIChpcmV0KQo+ID4g PiA+IC0JCQlnb3RvIGVycjsKPiA+ID4gPiAtCj4gPiA+ID4gLQkJY3J0YyA9IGNvbm5lY3Rvci0+ c3RhdGUtPmNydGM7Cj4gPiA+ID4gLQkJaWYgKGNydGMpIHsKPiA+ID4gPiAtCQkJaXJldCA9IGRy bV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsKPiA+ID4gPiAtCQkJaWYgKGlyZXQp Cj4gPiA+ID4gLQkJCQlnb3RvIGVycjsKPiA+ID4gPiAtCQl9Cj4gPiA+ID4gKwkJYm9vbCBoYW5k bGVkOwo+ID4gPiA+ICAKPiA+ID4gPiAgCQloYW5kbGVkID0gaW50ZWxfZHBfc2hvcnRfcHVsc2Uo aW50ZWxfZHApOwo+ID4gPiA+ICAKPiA+ID4gPiAtZXJyOgo+ID4gPiA+IC0JCWlmIChpcmV0ID09 IC1FREVBRExLKSB7Cj4gPiA+ID4gLQkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+ ID4gLQkJCWdvdG8gcmV0cnk7Cj4gPiA+ID4gLQkJfQo+ID4gPiA+IC0KPiA+ID4gPiAtCQlkcm1f bW9kZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ID4gPiA+IC0JCWRybV9tb2Rlc2V0X2FjcXVpcmVf ZmluaSgmY3R4KTsKPiA+ID4gPiAtCQlXQVJOKGlyZXQsICJBY3F1aXJpbmcgbW9kZXNldCBsb2Nr cyBmYWlsZWQgd2l0aAo+ID4gPiA+ICVpXG4iLCBpcmV0KTsKPiA+ID4gPiAtCj4gPiA+ID4gIAkJ LyogU2hvcnQgcHVsc2UgY2FuIHNpZ25pZnkgbG9zcyBvZiBoZGNwCj4gPiA+ID4gYXV0aGVudGlj YXRpb24gKi8KPiA+ID4gPiAgCQlpbnRlbF9oZGNwX2NoZWNrX2xpbmsoaW50ZWxfZHAtPmF0dGFj aGVkX2Nvbm5lY3Rvcik7Cj4gPiA+ID4gIAo+ID4gPiA+IEBAIC02NDAwLDcgKzY0MzAsNyBAQCBi b29sIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUKPiA+ID4gPiAqZGV2X3By aXYsCj4gPiA+ID4gIAkJCSAgICAgIkRQICVjIiwgcG9ydF9uYW1lKHBvcnQpKSkKPiA+ID4gPiAg CQlnb3RvIGVycl9lbmNvZGVyX2luaXQ7Cj4gPiA+ID4gIAo+ID4gPiA+IC0JaW50ZWxfZW5jb2Rl ci0+aG90cGx1ZyA9IGludGVsX2VuY29kZXJfaG90cGx1ZzsKPiA+ID4gPiArCWludGVsX2VuY29k ZXItPmhvdHBsdWcgPSBpbnRlbF9kcF9ob3RwbHVnOwo+ID4gPiA+ICAJaW50ZWxfZW5jb2Rlci0+ Y29tcHV0ZV9jb25maWcgPSBpbnRlbF9kcF9jb21wdXRlX2NvbmZpZzsKPiA+ID4gPiAgCWludGVs X2VuY29kZXItPmdldF9od19zdGF0ZSA9IGludGVsX2RwX2dldF9od19zdGF0ZTsKPiA+ID4gPiAg CWludGVsX2VuY29kZXItPmdldF9jb25maWcgPSBpbnRlbF9kcF9nZXRfY29uZmlnOwo+ID4gPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gPiA+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiBpbmRleCA1ZWExZGMzZjYz YmYuLmRkZjI4YTQ0MmNkNyAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gPiA+ID4gQEAgLTE2MTEsNiArMTYxMSw4IEBAIGludAo+ID4gPiA+IGludGVsX2RwX2dl dF9saW5rX3RyYWluX2ZhbGxiYWNrX3ZhbHVlcyhzdHJ1Y3QKPiA+ID4gPiBpbnRlbF9kcCAqaW50 ZWxfZHAsCj4gPiA+ID4gIAkJCQkJICAgIGludCBsaW5rX3JhdGUsIHVpbnQ4X3QKPiA+ID4gPiBs YW5lX2NvdW50KTsKPiA+ID4gPiAgdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiA+ICB2b2lkIGludGVsX2RwX3N0b3BfbGlua190 cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ID4gPiAraW50IGludGVsX2RwX3Jl dHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiA+ID4gPiArCQkJICBz dHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCk7Cj4gPiA+ID4gIHZvaWQgaW50ZWxf ZHBfc2lua19kcG1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBtb2RlKTsKPiA+ID4g PiAgdm9pZCBpbnRlbF9kcF9lbmNvZGVyX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl cik7Cj4gPiA+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNwZW5kKHN0cnVjdCBpbnRlbF9l bmNvZGVyICppbnRlbF9lbmNvZGVyKTsKPiA+IAo+ID4gLS0gCj4gPiBWaWxsZSBTeXJqw6Rsw6QK PiA+IEludGVsIE9UQwo+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IEludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Ci0tIApDaGVlcnMsCglMeXVkZSBQYXVsCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=