From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v2 3/5] drm/i915: Move SST DP link retraining into the ->post_hotplug() hook Date: Tue, 27 Feb 2018 23:17:31 -0800 Message-ID: <20180228071731.GB2386@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> <20180131132710.GK5453@intel.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 4F9C06E893 for ; Wed, 28 Feb 2018 07:21:09 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20180131132710.GK5453@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 =?iso-8859-1?Q?Syrj=E4l=E4?= Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VmlsbGUsICB0aGFua3MgZm9yIHRoZSBwYXRjaCBhbmQKU29ycnkgZm9yIG5vdCBiZWluZyBhYmxl IHRvIHJldmlldyB0aGlzIGVhcmxpZXIuClBsZWFzZSBmaW5kIHNvbWUgY29tbWVudHMgYmVsb3c6 CgpPbiBXZWQsIEphbiAzMSwgMjAxOCBhdCAwMzoyNzoxMFBNICswMjAwLCBWaWxsZSBTeXJqw6Rs w6Qgd3JvdGU6Cj4gT24gVHVlLCBKYW4gMzAsIDIwMTggYXQgMDY6MTY6NTlQTSAtMDUwMCwgTHl1 ZGUgUGF1bCB3cm90ZToKPiA+IE9uIFdlZCwgMjAxOC0wMS0xNyBhdCAyMToyMSArMDIwMCwgVmls bGUgU3lyamFsYSB3cm90ZToKPiA+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJq YWxhQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gCj4gPiA+IERvaW5nIGxpbmsgcmV0cmFpbmluZyBm cm9tIHRoZSBzaG9ydCBwdWxzZSBoYW5kbGVyIGlzIHByb2JsZW1hdGljIHNpbmNlCj4gPiA+IHRo YXQgbWlnaHQgaW50cm9kdWNlIGRlYWRsb2NrcyB3aXRoIE1TVCBzaWRlYmFuZCBwcm9jZXNzaW5n LiBDdXJyZW50bHkKPiA+ID4gd2UgZG9uJ3QgcmV0cmFpbiBNU1QgbGlua3MgZnJvbSB0aGlzIGNv ZGUsIGJ1dCB3ZSB3YW50IHRvIGNoYW5nZSB0aGF0Lgo+ID4gPiBTbyBiZXR0ZXIgdG8gbW92ZSB0 aGUgZW50aXJlIHRoaW5nIHRvIHRoZSBob3RwbHVnIHdvcmsuIFdlIGNhbiB1dGlsaXplCj4gPiA+ IHRoZSBuZXcgZW5jb2Rlci0+aG90cGx1ZygpIGhvb2sgZm9yIHRoaXMuCj4gPiA+IAo+ID4gPiBU aGUgb25seSB0aGluZyB3ZSBsZWF2ZSBpbiB0aGUgc2hvcnQgcHVsc2UgaGFuZGxlciBpcyB0aGUg bGluayBzdGF0dXMKPiA+ID4gY2hlY2suIFRoYXQgb25lIHN0aWxsIGRlcGVuZHMgb24gdGhlIGxp bmsgcGFyYW1ldGVycyBzdG9yZWQgdW5kZXIKPiA+ID4gaW50ZWxfZHAsIHNvIG5vIGxvY2tpbmcg YXJvdW5kIHRoYXQgYnV0IHJhY2VzIHNob3VsZCBiZSBtb3N0bHkgaGFybWxlc3MKPiA+ID4gYXMg dGhlIGFjdHVhbCByZXRyYWluaW5nIGNvZGUgd2lsbCByZWNoZWNrIHRoZSBsaW5rIHN0YXRlIGlm IHdlCj4gPiA+IGVuZCB1cCB0aGVyZSBieSBtaXN0YWtlLgo+ID4gPiAKPiA+ID4gdjI6IFJlYmFz ZSBkdWUgdG8gLT5wb3N0X2hvdHBsdWcoKSBub3cgYmVpbmcganVzdCAtPmhvdHBsdWcoKQo+ID4g PiAgICAgQ2hlY2sgdGhlIGNvbm5lY3RvciB0eXBlIHRvIGZpZ3VyZSBvdXQgaWYgd2Ugc2hvdWxk IGRvCj4gPiA+ICAgICB0aGUgSERNSSB0aGluZyBvciB0aGUgRFAgdGhpbmsgZm9yIERESQo+ID4g PiAKPiA+ID4gQ2M6IE1hbmFzaSBOYXZhcmUgPG1hbmFzaS5kLm5hdmFyZUBpbnRlbC5jb20+Cj4g PiA+IENjOiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwu Y29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFA bGludXguaW50ZWwuY29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jIHwgIDEwICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j ICB8IDE5NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KPiA+ID4gLS0tCj4g PiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAgMiArCj4gPiA+ICAzIGZp bGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCA4OCBkZWxldGlvbnMoLSkKPiA+ID4gCj4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ID4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+IGluZGV4IDI1NzkzYmRjNjky Zi4uNWYzZDU4ZjFhZTZlIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+ID4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ ID4gPiBAQCAtMjg4MCw3ICsyODgwLDEwIEBAIHN0YXRpYyBib29sIGludGVsX2RkaV9ob3RwbHVn KHN0cnVjdCBpbnRlbF9lbmNvZGVyCj4gPiA+ICplbmNvZGVyLAo+ID4gPiAgCWRybV9tb2Rlc2V0 X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ID4gIAo+ID4gPiAgCWZvciAoOzspIHsKPiA+ID4g LQkJcmV0ID0gaW50ZWxfaGRtaV9yZXNldF9saW5rKGVuY29kZXIsICZjdHgpOwo+ID4gPiArCQlp ZiAoY29ubmVjdG9yLT5iYXNlLmNvbm5lY3Rvcl90eXBlID09Cj4gPiA+IERSTV9NT0RFX0NPTk5F Q1RPUl9IRE1JQSkKPiA+ID4gKwkJCXJldCA9IGludGVsX2hkbWlfcmVzZXRfbGluayhlbmNvZGVy LCAmY3R4KTsKPiA+ID4gKwkJZWxzZQo+ID4gPiArCQkJcmV0ID0gaW50ZWxfZHBfcmV0cmFpbl9s aW5rKGVuY29kZXIsICZjdHgpOwo+ID4gPiAgCj4gPiA+ICAJCWlmIChyZXQgPT0gLUVERUFETEsp IHsKPiA+ID4gIAkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+IEBAIC0zMDA3LDEw ICszMDEwLDcgQEAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsCj4gPiA+IGVudW0gcG9ydCBwb3J0KQo+ID4gPiAgCWRybV9lbmNvZGVyX2luaXQo JmRldl9wcml2LT5kcm0sIGVuY29kZXIsICZpbnRlbF9kZGlfZnVuY3MsCj4gPiA+ICAJCQkgRFJN X01PREVfRU5DT0RFUl9UTURTLCAiRERJICVjIiwgcG9ydF9uYW1lKHBvcnQpKTsKPiA+ID4gIAo+ ID4gPiAtCWlmIChpbml0X2hkbWkpCj4gPiA+IC0JCWludGVsX2VuY29kZXItPmhvdHBsdWcgPSBp bnRlbF9kZGlfaG90cGx1ZzsKPiA+ID4gLQllbHNlCj4gPiA+IC0JCWludGVsX2VuY29kZXItPmhv dHBsdWcgPSBpbnRlbF9lbmNvZGVyX2hvdHBsdWc7Cj4gPiA+ICsJaW50ZWxfZW5jb2Rlci0+aG90 cGx1ZyA9IGludGVsX2RkaV9ob3RwbHVnOwo+ID4gPiAgCWludGVsX2VuY29kZXItPmNvbXB1dGVf b3V0cHV0X3R5cGUgPSBpbnRlbF9kZGlfY29tcHV0ZV9vdXRwdXRfdHlwZTsKPiA+ID4gIAlpbnRl bF9lbmNvZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVsX2RkaV9jb21wdXRlX2NvbmZpZzsKPiA+ ID4gIAlpbnRlbF9lbmNvZGVyLT5lbmFibGUgPSBpbnRlbF9lbmFibGVfZGRpOwo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gaW5kZXggNmJiZjE0NDEwYzJhLi4xNTIwMTZlMDlhMTEg MTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiBAQCAtNDI3NSwxMiAr NDI3NSw4MyBAQCBpbnRlbF9kcF9jaGVja19tc3Rfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHApCj4gPiA+ICAJcmV0dXJuIC1FSU5WQUw7Cj4gPiA+ICB9Cj4gPiA+ICAKPiA+ID4gLXN0 YXRpYyB2b2lkCj4gPiA+IC1pbnRlbF9kcF9yZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiA+ID4gK3N0YXRpYyBib29sCj4gPiA+ICtpbnRlbF9kcF9uZWVkc19saW5rX3Jl dHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gK3sKPiA+ID4gKwl1OCBsaW5r X3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKPiA+ID4gKwo+ID4gPiArCWlmICghaW50ZWxf ZHBfZ2V0X2xpbmtfc3RhdHVzKGludGVsX2RwLCBsaW5rX3N0YXR1cykpIHsKPiA+ID4gKwkJRFJN X0VSUk9SKCJGYWlsZWQgdG8gZ2V0IGxpbmsgc3RhdHVzXG4iKTsKPiA+ID4gKwkJcmV0dXJuIGZh bHNlOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCS8qCj4gPiA+ICsJICogVmFsaWRhdGUgdGhl IGNhY2hlZCB2YWx1ZXMgb2YgaW50ZWxfZHAtPmxpbmtfcmF0ZSBhbmQKPiA+ID4gKwkgKiBpbnRl bF9kcC0+bGFuZV9jb3VudCBiZWZvcmUgYXR0ZW1wdGluZyB0byByZXRyYWluLgo+ID4gPiArCSAq Lwo+ID4gPiArCWlmICghaW50ZWxfZHBfbGlua19wYXJhbXNfdmFsaWQoaW50ZWxfZHAsIGludGVs X2RwLT5saW5rX3JhdGUsCj4gPiA+ICsJCQkJCWludGVsX2RwLT5sYW5lX2NvdW50KSkKPiA+ID4g KwkJcmV0dXJuIGZhbHNlOwo+ID4gPiArCj4gPiA+ICsJLyogUmV0cmFpbiBpZiBDaGFubmVsIEVR IG9yIENSIG5vdCBvayAqLwo+ID4gPiArCXJldHVybiAhZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlu a19zdGF0dXMsIGludGVsX2RwLT5sYW5lX2NvdW50KTsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAr LyoKPiA+ID4gKyAqIElmIGRpc3BsYXkgaXMgbm93IGNvbm5lY3RlZCBjaGVjayBsaW5rcyBzdGF0 dXMsCj4gPiA+ICsgKiB0aGVyZSBoYXMgYmVlbiBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRy aWdnZXJpbmcKPiA+ID4gKyAqIGxvbmcgcHVsc2UuCj4gPiA+ICsgKgo+ID4gPiArICogU29tZSBz aW5rcyAoZWcuIEFTVVMgUEIyODdRKSBzZWVtIHRvIHBlcmZvcm0gc29tZQo+ID4gPiArICogd2Vp cmQgSFBEIHBpbmcgcG9uZyBkdXJpbmcgbW9kZXNldHMuIFNvIHdlIGNhbiBhcHBhcmVudGx5Cj4g PiA+ICsgKiBlbmQgdXAgd2l0aCBIUEQgZ29pbmcgbG93IGR1cmluZyBhIG1vZGVzZXQsIGFuZCB0 aGVuCj4gPiA+ICsgKiBnb2luZyBiYWNrIHVwIHNvb24gYWZ0ZXIuIEFuZCBvbmNlIHRoYXQgaGFw cGVucyB3ZSBtdXN0Cj4gPiA+ICsgKiByZXRyYWluIHRoZSBsaW5rIHRvIGdldCBhIHBpY3R1cmUu IFRoYXQncyBpbiBjYXNlIG5vCj4gPiA+ICsgKiB1c2Vyc3BhY2UgY29tcG9uZW50IHJlYWN0ZWQg dG8gaW50ZXJtaXR0ZW50IEhQRCBkaXAuCj4gPiA+ICsgKi8KPiA+ID4gK2ludCBpbnRlbF9kcF9y ZXRyYWluX2xpbmsoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ICsJCQkgIHN0 cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQo+ID4gPiAgewo+ID4gPiAtCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gJmRwX3RvX2RpZ19wb3J0KGludGVsX2RwKS0+YmFz ZTsKPiA+ID4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGVu Y29kZXItPmJhc2UuZGV2KTsKPiA+ID4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2lu dGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiA+ID4gKwlzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9y Owo+ID4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlOwo+ID4gPiAr CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ID4gPiArCXN0cnVjdCBpbnRl bF9jcnRjICpjcnRjOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICsKPiA+ID4gKwkvKiBGSVhNRSBo YW5kbGUgdGhlIE1TVCBjb25uZWN0b3JzIGFzIHdlbGwgKi8KPiA+ID4gKwo+ID4gPiArCWlmICgh Y29ubmVjdG9yIHx8IGNvbm5lY3Rvci0+YmFzZS5zdGF0dXMgIT0KPiA+ID4gY29ubmVjdG9yX3N0 YXR1c19jb25uZWN0ZWQpCj4gPiA+ICsJCXJldHVybiAwOwo+ID4gPiArCj4gPiA+ICsJcmV0ID0g ZHJtX21vZGVzZXRfbG9jaygmZGV2X3ByaXYtPmRybS5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4LAo+ID4gPiBjdHgpOwo+ID4gPiArCWlmIChyZXQpCj4gPiA+ICsJCXJldHVybiByZXQ7Cj4g PiA+ICsKPiA+ID4gKwljb25uX3N0YXRlID0gY29ubmVjdG9yLT5iYXNlLnN0YXRlOwo+ID4gPiAr Cj4gPiA+ICsJY3J0YyA9IHRvX2ludGVsX2NydGMoY29ubl9zdGF0ZS0+Y3J0Yyk7Cj4gPiA+ICsJ aWYgKCFjcnRjKQo+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gKwo+ID4gPiArCXJldCA9IGRybV9t b2Rlc2V0X2xvY2soJmNydGMtPmJhc2UubXV0ZXgsIGN0eCk7Cj4gPiA+ICsJaWYgKHJldCkKPiA+ ID4gKwkJcmV0dXJuIHJldDsKPiA+ID4gKwo+ID4gPiArCWNydGNfc3RhdGUgPSB0b19pbnRlbF9j cnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOwo+ID4gPiArCj4gPiA+ICsJV0FSTl9PTighaW50 ZWxfY3J0Y19oYXNfZHBfZW5jb2RlcihjcnRjX3N0YXRlKSk7Cj4gPiA+ICsKPiA+ID4gKwlpZiAo IWNydGNfc3RhdGUtPmJhc2UuYWN0aXZlKQo+ID4gPiArCQlyZXR1cm4gMDsKPiA+ID4gKwo+ID4g PiArCWlmIChjb25uX3N0YXRlLT5jb21taXQgJiYKPiA+ID4gKwkgICAgIXRyeV93YWl0X2Zvcl9j b21wbGV0aW9uKCZjb25uX3N0YXRlLT5jb21taXQtPmh3X2RvbmUpKQo+ID4gPiArCQlyZXR1cm4g MDsKPiA+ID4gKwo+ID4gPiArCWlmICghaW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKGludGVs X2RwKSkKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiBOQUssIHRoaXMgZGVmaW5pdGVseSB3b24ndCB3 b3JrIGZvciBpbXBsZW1lbnRpbmcgTVNUIHJldHJhaW5pbmcuIFRoZXJlJ3Mgc29tZQo+ID4gcHJl dHR5IGh1Z2UgZGlmZmVyZW5jZXMgd2l0aCBob3cgcmV0cmFpbmluZyBuZWVkcyB0byBiZSBoYW5k bGVkIG9uIFNTVCB2cy4gTVNULgo+ID4gQW4gZXhhbXBsZSB3aXRoIHNvbWUgbm9ybWFsIFNTVCBz aW5rIHZzLiB3aGF0IGhhcHBlbnMgb24gbXkgY2FsZGlnaXQgVFMzCj4gPiAKPiA+IFNTVDoKPiA+ ICAgICAxLiBjb21taXQgbW9kZXNldCwgZXZlcnl0aGluZyBpcyBPSwo+ID4gICAgIDIuIHNvbWV0 aGluZyBoYXBwZW5zLCBzaW5rIHNlbmRzIHNob3J0cHVsc2UgYW5kIGNoYW5nZXMgbGluayBzdGF0 dXMgcmVnaXN0ZXJzCj4gPiAgICAgaW4gZHBjZAo+ID4gICAgIDMuIFNvdXJjZSByZWNlaXZlcyBz aG9ydCBwdWxzZSwgdHJpZXMgcmV0cmFpbmluZyBmaXZlIHRpbWVzCj4gPiAgICAgNC4gaWYgdGhp cyBzdWNjZWVkczoKPiA+ICAgICAgICAgNS4gd2UncmUgZG9uZSBoZXJlCj4gPiAgICAgNi4gaWYg dGhpcyBmYWlsczoKPiA+ICAgICAgICAgNy4gbWFyayBsaW5rIHN0YXR1cyBhcyBiYWQKPiA+ICAg ICAgICAgOC4gZ2V0IGZhbGxiYWNrIHBhcmFtZXRlcnMKPiA+ICAgICAgICAgOS4gaG90cGx1ZyBl dmVudAo+ID4gCj4gPiBNU1QgKGk5MTUgZG9lc24ndCBkbyB0aGlzIHlldCwgYnV0IHRoaXMgaXMg Z2VuZXJhbGx5IGhvdyBpdCBuZWVkcyB0byBiZQo+ID4gaGFuZGxlZCk6Cj4gPiAgICAgMS4gY29t bWl0IG1vZGVzZXQsIGV2ZXJ5dGhpbmcgaXMgT0sKPiA+ICAgICAyLiBzb21ldGhpbmcgaGFwcGVu cyAoaW4gbXkgY2FzZSwgdGhlIE1TVCBodWIgZGlzY292ZXJzIGl0IGhhZCB0aGUgd3JvbmcgbWF4 Cj4gPiAgICAgbGluayByYXRlL2xhbmUgY291bnQpLCBzaW5rIHNlbmRzIEVTSSBpbmRpY2F0aW5n IGNoYW5uZWwgRVEgaGFzIGZhaWxlZAo+ID4gICAgIDMuIHJldHJhaW5pbmcgY29tbWVuY2VzIHdp dGggZml2ZSByZXRyaWVzLgo+ID4gICAgIDQuIGlmIHRoaXMgc3VjY2VlZHM6Cj4gPiAgICAgICAg NS4gY29udGludWUKPiA+ICAgICA2LiBpZiB0aGlzIGZhaWxzIChJIGFjdHVhbGx5IGhhdmVuJ3Qg c2VlbiB0aGlzIG9uY2UgeWV0KQo+ID4gICAgICAgICA3LiBtYXJrIGxpbmsgc3RhdHVzIGFzIGJh ZCBvbiBhbGwgZG93bnN0cmVhbSBjb25uZWN0b3JzCj4gPiAgICAgICAgIDguIGdldCBmYWxsYmFj ayBwYXJhbWV0ZXJzCj4gPiAgICAgICAgIDkuIGhvdHBsdWcgZXZlbnQKPiA+ICAgICAxMC4gdGhl IHJldHJhaW4gZGlkbid0IGFjdHVhbGx5IHdvcmsgKGRlc3BpdGUgd2hhdCB0aGUgU1NUIGxpbmsg c3RhdHVzCj4gPiAgICAgcmVnaXN0ZXJzIHRvbGQgdXMpLiBnbyBiYWNrIHRvIHN0ZXAgMyBmaXZl IG1vcmUgdGltZXMKPiA+ICAgICAxMS4gaWYgdGhpcyBmYWlsczoKPiA+ICAgICAgICAgMTIuIG1h cmsgbGluayBzdGF0dXMgYXMgYmFkIG9uIGFsbCBkb3duc3RyZWFtIGNvbm5lY3RvcnMKPiA+ICAg ICAgICAgMTMuIGdldCBmYWxsYmFjayBwYXJhbWV0ZXJzCj4gPiAgICAgICAgIDE0LiBob3RwbHVn IGV2ZW50Cj4gPiAKPiA+IHNpbXBseSBwdXQ6IHdlIHJlYWxseSBzaG91bGQga2VlcCB0aGUgImRv IHdlIG5lZWQgdG8gcmV0cmFpbj8iIGxvZ2ljIG91dCBvZiB0aGUKPiA+IGFjdHVhbCByZXRyYWlu aW5nIGhlbHBlcnMgc28gdGhhdCBTU1QvTVNUIGNvZGVwYXRocyBjYW4gZG8gdGhlaXIgb3duIGNo ZWNrcyB0bwo+ID4gZmlndXJlIHRoaXMgb3V0Lgo+IAo+IE5vLCB3ZSBuZWVkIGl0IHNpbmNlIHdl IHdhbnQgdG8gY2hlY2sgaXQgKmFmdGVyKiBhbnkgbW9kZXNldCBoYXMKPiBmaW5pc2hlZC4gV2l0 aCBNU1QgSSB0aGluayB3aGF0IHdlJ2xsIHdhbnQgdG8gZG8gaXMgZmluZCBhbGwgdGhlIHBpcGVz Cj4gYWZmZWN0ZWQgYnkgdGhlIGxpbmsgZmFpbHVyZSwgbG9jayB0aGVtLCBhbmQgd2FpdCB1bnRp bCB0aGV5J3JlIGRvbmUKPiB3aXRoIHRoZWlyIG1vZGVzZXRzLCB0aGVuIHdlIGNoZWNrIHRoZSBs aW5rIHN0YXRlLiBJZiBpdCdzIGJhZCB3ZQo+IHByb2NlZWQgdG8gcmV0cmFpbiB0aGUgbGluay4K PiAKPiBTbyBiYXNpY2FsbHkganVzdCB3YWxraW5nIG92ZXIgdGhlIE1TVCBlbmNvZGVycyBpbiBh ZGRpdGlvbiB0byB0aGUKPiBTU1QgZW5jb2RlciwgYW5kIHJlcGVhdGluZyBtb3N0IG9mIHRoZSBz dGVwcyBpbiB0aGlzIGNvZGUgZm9yIGVhY2guCj4gSGVuY2UgdGhlIHRoZSBNU1QgRklYTUUgSSBs ZWZ0IGluIHRoZXJlIDspCj4gCgpMeXVkZSwKCkkgYWdyZWUgd2l0aCBWaWxsZSBoZXJlLCBjYW4g d2UgYWRkIHRoZSBNU1QgcmV0cmFpbiByZXF1aXJlZCBjaGVjayBmcm9tCndpdGhpbiB0aGUgaW50 ZWxfZHBfcmV0cmFpbl9saW5rKCk/IFNvIGZvciBub3cgdGhlIEZJWE1FIHNob3VsZCBiZSBsZWZ0 IHRoZXJlCmFuZCBNU1QgcmV0cmFpbmluZyBjaGVjayBjYW4gYmUgYWRkZWQgZnJvbSB5b3VyIHBh dGNoZXMuCgpNYW5hc2kKCj4gPiAKPiA+ID4gIAo+ID4gPiAgCS8qIFN1cHByZXNzIHVuZGVycnVu cyBjYXVzZWQgYnkgcmUtdHJhaW5pbmcgKi8KPiA+ID4gIAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5k ZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBjcnRjLT5waXBlLCBmYWxzZSk7Cj4gPiA+IEBAIC00 Mjk4LDUxICs0MzY5LDQ5IEBAIGludGVsX2RwX3JldHJhaW5fbGluayhzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwKQo+ID4gPiAgCWlmIChjcnRjLT5jb25maWctPmhhc19wY2hfZW5jb2RlcikKPiA+ ID4gIAkJaW50ZWxfc2V0X3BjaF9maWZvX3VuZGVycnVuX3JlcG9ydGluZyhkZXZfcHJpdiwKPiA+ ID4gIAkJCQkJCSAgICAgIGludGVsX2NydGNfcGNoX3RyYW5zY29kCj4gPiA+IGVyKGNydGMpLCB0 cnVlKTsKPiA+ID4gKwo+ID4gPiArCXJldHVybiAwOwo+ID4gPiAgfQo+ID4gPiAgCj4gPiA+IC1z dGF0aWMgdm9pZAo+ID4gPiAtaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiA+ID4gKy8qCj4gPiA+ICsgKiBJZiBkaXNwbGF5IGlzIG5vdyBjb25u ZWN0ZWQgY2hlY2sgbGlua3Mgc3RhdHVzLAo+ID4gPiArICogdGhlcmUgaGFzIGJlZW4ga25vd24g aXNzdWVzIG9mIGxpbmsgbG9zcyB0cmlnZ2VyaW5nCj4gPiA+ICsgKiBsb25nIHB1bHNlLgo+ID4g PiArICoKPiA+ID4gKyAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3USkgc2VlbSB0byBwZXJm b3JtIHNvbWUKPiA+ID4gKyAqIHdlaXJkIEhQRCBwaW5nIHBvbmcgZHVyaW5nIG1vZGVzZXRzLiBT byB3ZSBjYW4gYXBwYXJlbnRseQo+ID4gPiArICogZW5kIHVwIHdpdGggSFBEIGdvaW5nIGxvdyBk dXJpbmcgYSBtb2Rlc2V0LCBhbmQgdGhlbgo+ID4gPiArICogZ29pbmcgYmFjayB1cCBzb29uIGFm dGVyLiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ID4gPiArICogcmV0cmFpbiB0aGUg bGluayB0byBnZXQgYSBwaWN0dXJlLiBUaGF0J3MgaW4gY2FzZSBubwo+ID4gPiArICogdXNlcnNw YWNlIGNvbXBvbmVudCByZWFjdGVkIHRvIGludGVybWl0dGVudCBIUEQgZGlwLgo+ID4gPiArICov Cj4gPiA+ICtzdGF0aWMgYm9vbCBpbnRlbF9kcF9ob3RwbHVnKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4gPiArCQkJICAgICBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpCj4gPiA+ICB7Cj4gPiA+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0K PiA+ID4gdG9faTkxNShpbnRlbF9kcF90b19kZXYoaW50ZWxfZHApKTsKPiA+ID4gLQlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZkcF90b19kaWdfcG9ydChpbnRlbF9kcCkt Cj4gPiA+ID5iYXNlOwo+ID4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0 YXRlID0KPiA+ID4gLQkJaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZS5zdGF0ZTsK PiA+ID4gLQl1OCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKPiA+ID4gLQo+ID4g PiAtCVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmZGV2X3ByaXYtCj4gPiA+ID5kcm0u bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCkpOwo+ID4gPiAtCj4gPiA+IC0JaWYgKCFpbnRl bF9kcF9nZXRfbGlua19zdGF0dXMoaW50ZWxfZHAsIGxpbmtfc3RhdHVzKSkgewo+ID4gPiAtCQlE Uk1fRVJST1IoIkZhaWxlZCB0byBnZXQgbGluayBzdGF0dXNcbiIpOwo+ID4gPiAtCQlyZXR1cm47 Cj4gPiA+IC0JfQo+ID4gPiArCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4g PiA+ICsJYm9vbCBjaGFuZ2VkOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ICAKPiA+ID4gLQlpZiAo IWNvbm5fc3RhdGUtPmNydGMpCj4gPiA+IC0JCXJldHVybjsKPiA+ID4gKwljaGFuZ2VkID0gaW50 ZWxfZW5jb2Rlcl9ob3RwbHVnKGVuY29kZXIsIGNvbm5lY3Rvcik7Cj4gPiA+ICAKPiA+ID4gLQlX QVJOX09OKCFkcm1fbW9kZXNldF9pc19sb2NrZWQoJmNvbm5fc3RhdGUtPmNydGMtPm11dGV4KSk7 Cj4gPiA+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ID4gPiAgCj4gPiA+ IC0JaWYgKCFjb25uX3N0YXRlLT5jcnRjLT5zdGF0ZS0+YWN0aXZlKQo+ID4gPiAtCQlyZXR1cm47 Cj4gPiA+ICsJZm9yICg7OykgewoKSGVyZSBpZiB0aGlzIGlzIGdldHRpbmcgZXhlY3V0ZWQgZHVl IHRvIGhwZCBwaW5nIHBvbmcgZHVyaW5nIHRoZSBtb2Rlc2V0CmFuZCB0aGF0IG1vZGVzZXQgaXMg YWxyZWFkeSBoYXBwZW5pbmcgYXQgYSBsaW5rIGZhbGxiYWNrIHBhcmFtZXRlciB0aGVuCndoaWxl IHdlIGNhbGwgcmV0cmFpbiBsaW5rLCB3ZSBzaG91bGQgYWxzbyB2YWxpZGF0ZSB0aGUgbGluayBw YXJhbWV0ZXJzCnNvIHRoYXQgaXQgZG9lc250IHRyeSB0byByZXRyYWluIHdpdGggc3RhbGUgdmFs dWVzLgoKSSB0aGluayB3ZSBuZWVkIHRvIGNhbGwgaW50ZWxfZHBfbGlua19wYXJhbXNfdmFsaWQo KSBiZWZvcmUgcmV0cmFpbi4KCj4gPiA+ICsJCXJldCA9IGludGVsX2RwX3JldHJhaW5fbGluayhl bmNvZGVyLCAmY3R4KTsKPiA+ID4gIAo+ID4gPiAtCWlmIChjb25uX3N0YXRlLT5jb21taXQgJiYK PiA+ID4gLQkgICAgIXRyeV93YWl0X2Zvcl9jb21wbGV0aW9uKCZjb25uX3N0YXRlLT5jb21taXQt Pmh3X2RvbmUpKQo+ID4gPiAtCQlyZXR1cm47Cj4gPiA+ICsJCWlmIChyZXQgPT0gLUVERUFETEsp IHsKPiA+ID4gKwkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7Cj4gPiA+ICsJCQljb250aW51 ZTsKPiA+ID4gKwkJfQo+ID4gPiAgCj4gPiA+IC0JLyoKPiA+ID4gLQkgKiBWYWxpZGF0ZSB0aGUg Y2FjaGVkIHZhbHVlcyBvZiBpbnRlbF9kcC0+bGlua19yYXRlIGFuZAo+ID4gPiAtCSAqIGludGVs X2RwLT5sYW5lX2NvdW50IGJlZm9yZSBhdHRlbXB0aW5nIHRvIHJldHJhaW4uCj4gPiA+IC0JICov Cj4gPiA+IC0JaWYgKCFpbnRlbF9kcF9saW5rX3BhcmFtc192YWxpZChpbnRlbF9kcCwgaW50ZWxf ZHAtPmxpbmtfcmF0ZSwKPiA+ID4gLQkJCQkJaW50ZWxfZHAtPmxhbmVfY291bnQpKQo+ID4gPiAt CQlyZXR1cm47Cj4gPiA+ICsJCWJyZWFrOwo+ID4gPiArCX0KPiA+ID4gIAo+ID4gPiAtCS8qIFJl dHJhaW4gaWYgQ2hhbm5lbCBFUSBvciBDUiBub3Qgb2sgKi8KPiA+ID4gLQlpZiAoIWRybV9kcF9j aGFubmVsX2VxX29rKGxpbmtfc3RhdHVzLCBpbnRlbF9kcC0+bGFuZV9jb3VudCkpIHsKPiA+ID4g LQkJRFJNX0RFQlVHX0tNUygiJXM6IGNoYW5uZWwgRVEgbm90IG9rLCByZXRyYWluaW5nXG4iLAo+ ID4gPiAtCQkJICAgICAgaW50ZWxfZW5jb2Rlci0+YmFzZS5uYW1lKTsKPiA+ID4gKwlkcm1fbW9k ZXNldF9kcm9wX2xvY2tzKCZjdHgpOwo+ID4gPiArCWRybV9tb2Rlc2V0X2FjcXVpcmVfZmluaSgm Y3R4KTsKPiA+ID4gKwlXQVJOKHJldCwgIkFjcXVpcmluZyBtb2Rlc2V0IGxvY2tzIGZhaWxlZCB3 aXRoICVpXG4iLCByZXQpOwo+ID4gPiAgCj4gPiA+IC0JCWludGVsX2RwX3JldHJhaW5fbGluayhp bnRlbF9kcCk7Cj4gPiA+IC0JfQo+ID4gPiArCXJldHVybiBjaGFuZ2VkOwo+ID4gPiAgfQo+ID4g PiAgCj4gPiA+ICAvKgo+ID4gPiBAQCAtNDQwMCw3ICs0NDY5LDkgQEAgaW50ZWxfZHBfc2hvcnRf cHVsc2Uoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIAkJCURSTV9ERUJVR19EUklW RVIoIkNQIG9yIHNpbmsgc3BlY2lmaWMgaXJxCj4gPiA+IHVuaGFuZGxlZFxuIik7Cj4gPiA+ICAJ fQo+ID4gPiAgCj4gPiA+IC0JaW50ZWxfZHBfY2hlY2tfbGlua19zdGF0dXMoaW50ZWxfZHApOwo+ ID4gPiArCS8qIGRlZmVyIHRvIHRoZSBob3RwbHVnIHdvcmsgZm9yIGxpbmsgcmV0cmFpbmluZyBp ZiBuZWVkZWQgKi8KPiA+ID4gKwlpZiAoaW50ZWxfZHBfbmVlZHNfbGlua19yZXRyYWluKGludGVs X2RwKSkKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gPiAgCj4gPiA+ICAJaWYgKGludGVsX2Rw LT5jb21wbGlhbmNlLnRlc3RfdHlwZSA9PSBEUF9URVNUX0xJTktfVFJBSU5JTkcpIHsKPiA+ID4g IAkJRFJNX0RFQlVHX0tNUygiTGluayBUcmFpbmluZyBDb21wbGlhbmNlIFRlc3QgcmVxdWVzdGVk XG4iKTsKPiA+ID4gQEAgLTQ3ODUsMjAgKzQ4NTYsNiBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ID4gIAkJICovCj4gPiA+ICAJCXN0 YXR1cyA9IGNvbm5lY3Rvcl9zdGF0dXNfZGlzY29ubmVjdGVkOwo+ID4gPiAgCQlnb3RvIG91dDsK PiA+ID4gLQl9IGVsc2Ugewo+ID4gPiAtCQkvKgo+ID4gPiAtCQkgKiBJZiBkaXNwbGF5IGlzIG5v dyBjb25uZWN0ZWQgY2hlY2sgbGlua3Mgc3RhdHVzLAo+ID4gPiAtCQkgKiB0aGVyZSBoYXMgYmVl biBrbm93biBpc3N1ZXMgb2YgbGluayBsb3NzIHRyaWdnZXJyaW5nCj4gPiA+IC0JCSAqIGxvbmcg cHVsc2UuCj4gPiA+IC0JCSAqCj4gPiA+IC0JCSAqIFNvbWUgc2lua3MgKGVnLiBBU1VTIFBCMjg3 USkgc2VlbSB0byBwZXJmb3JtIHNvbWUKPiA+ID4gLQkJICogd2VpcmQgSFBEIHBpbmcgcG9uZyBk dXJpbmcgbW9kZXNldHMuIFNvIHdlIGNhbiBhcHBhcmVudGx5Cj4gPiA+IC0JCSAqIGVuZCB1cCB3 aXRoIEhQRCBnb2luZyBsb3cgZHVyaW5nIGEgbW9kZXNldCwgYW5kIHRoZW4KPiA+ID4gLQkJICog Z29pbmcgYmFjayB1cCBzb29uIGFmdGVyLiBBbmQgb25jZSB0aGF0IGhhcHBlbnMgd2UgbXVzdAo+ ID4gPiAtCQkgKiByZXRyYWluIHRoZSBsaW5rIHRvIGdldCBhIHBpY3R1cmUuIFRoYXQncyBpbiBj YXNlIG5vCj4gPiA+IC0JCSAqIHVzZXJzcGFjZSBjb21wb25lbnQgcmVhY3RlZCB0byBpbnRlcm1p dHRlbnQgSFBEIGRpcC4KPiA+ID4gLQkJICovCj4gPiA+IC0JCWludGVsX2RwX2NoZWNrX2xpbmtf c3RhdHVzKGludGVsX2RwKTsKPiA+ID4gIAl9Cj4gPiA+ICAKPiA+ID4gIAkvKgo+ID4gPiBAQCAt NTM0MCwzNyArNTM5NywxMCBAQCBpbnRlbF9kcF9ocGRfcHVsc2Uoc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydAo+ID4gPiAqaW50ZWxfZGlnX3BvcnQsIGJvb2wgbG9uZ19ocGQpCj4gPiA+ICAJfQo+ ID4gPiAgCj4gPiA+ICAJaWYgKCFpbnRlbF9kcC0+aXNfbXN0KSB7Cj4gPiA+IC0JCXN0cnVjdCBk cm1fbW9kZXNldF9hY3F1aXJlX2N0eCBjdHg7Cj4gPiA+IC0JCXN0cnVjdCBkcm1fY29ubmVjdG9y ICpjb25uZWN0b3IgPSAmaW50ZWxfZHAtCj4gPiA+ID5hdHRhY2hlZF9jb25uZWN0b3ItPmJhc2U7 Cj4gPiA+IC0JCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiA+ID4gLQkJaW50IGlyZXQ7Cj4gPiA+ IC0JCWJvb2wgaGFuZGxlZCA9IGZhbHNlOwo+ID4gPiAtCj4gPiA+IC0JCWRybV9tb2Rlc2V0X2Fj cXVpcmVfaW5pdCgmY3R4LCAwKTsKPiA+ID4gLXJldHJ5Ogo+ID4gPiAtCQlpcmV0ID0gZHJtX21v ZGVzZXRfbG9jaygmZGV2X3ByaXYtCj4gPiA+ID5kcm0ubW9kZV9jb25maWcuY29ubmVjdGlvbl9t dXRleCwgJmN0eCk7Cj4gPiA+IC0JCWlmIChpcmV0KQo+ID4gPiAtCQkJZ290byBlcnI7Cj4gPiA+ IC0KPiA+ID4gLQkJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gPiA+IC0JCWlmIChj cnRjKSB7Cj4gPiA+IC0JCQlpcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+bXV0ZXgsICZj dHgpOwo+ID4gPiAtCQkJaWYgKGlyZXQpCj4gPiA+IC0JCQkJZ290byBlcnI7Cj4gPiA+IC0JCX0K PiA+ID4gKwkJYm9vbCBoYW5kbGVkOwo+ID4gPiAgCj4gPiA+ICAJCWhhbmRsZWQgPSBpbnRlbF9k cF9zaG9ydF9wdWxzZShpbnRlbF9kcCk7Cj4gPiA+ICAKPiA+ID4gLWVycjoKPiA+ID4gLQkJaWYg KGlyZXQgPT0gLUVERUFETEspIHsKPiA+ID4gLQkJCWRybV9tb2Rlc2V0X2JhY2tvZmYoJmN0eCk7 Cj4gPiA+IC0JCQlnb3RvIHJldHJ5Owo+ID4gPiAtCQl9Cj4gPiA+IC0KPiA+ID4gLQkJZHJtX21v ZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ID4gLQkJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5p KCZjdHgpOwo+ID4gPiAtCQlXQVJOKGlyZXQsICJBY3F1aXJpbmcgbW9kZXNldCBsb2NrcyBmYWls ZWQgd2l0aCAlaVxuIiwgaXJldCk7Cj4gPiA+IC0KPiA+ID4gIAkJLyogU2hvcnQgcHVsc2UgY2Fu IHNpZ25pZnkgbG9zcyBvZiBoZGNwIGF1dGhlbnRpY2F0aW9uICovCj4gPiA+ICAJCWludGVsX2hk Y3BfY2hlY2tfbGluayhpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiA+ID4gIAo+ID4g PiBAQCAtNjQwMCw3ICs2NDMwLDcgQEAgYm9vbCBpbnRlbF9kcF9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gIAkJCSAgICAgIkRQICVjIiwgcG9ydF9uYW1lKHBv cnQpKSkKPiA+ID4gIAkJZ290byBlcnJfZW5jb2Rlcl9pbml0Owo+ID4gPiAgCj4gPiA+IC0JaW50 ZWxfZW5jb2Rlci0+aG90cGx1ZyA9IGludGVsX2VuY29kZXJfaG90cGx1ZzsKPiA+ID4gKwlpbnRl bF9lbmNvZGVyLT5ob3RwbHVnID0gaW50ZWxfZHBfaG90cGx1ZzsKPiA+ID4gIAlpbnRlbF9lbmNv ZGVyLT5jb21wdXRlX2NvbmZpZyA9IGludGVsX2RwX2NvbXB1dGVfY29uZmlnOwo+ID4gPiAgCWlu dGVsX2VuY29kZXItPmdldF9od19zdGF0ZSA9IGludGVsX2RwX2dldF9od19zdGF0ZTsKPiA+ID4g IAlpbnRlbF9lbmNvZGVyLT5nZXRfY29uZmlnID0gaW50ZWxfZHBfZ2V0X2NvbmZpZzsKPiA+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gaW5kZXggNWVhMWRjM2Y2M2JmLi5k ZGYyOGE0NDJjZDcgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ IEBAIC0xNjExLDYgKzE2MTEsOCBAQCBpbnQgaW50ZWxfZHBfZ2V0X2xpbmtfdHJhaW5fZmFsbGJh Y2tfdmFsdWVzKHN0cnVjdAo+ID4gPiBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gPiA+ICAJCQkJCSAg ICBpbnQgbGlua19yYXRlLCB1aW50OF90Cj4gPiA+IGxhbmVfY291bnQpOwo+ID4gPiAgdm9pZCBp bnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4g PiAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9k cCk7Cj4gPiA+ICtpbnQgaW50ZWxfZHBfcmV0cmFpbl9saW5rKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ID4gPiArCQkJICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0 eCk7Cj4gPiA+ICB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCBpbnQgbW9kZSk7Cj4gPiA+ICB2b2lkIGludGVsX2RwX2VuY29kZXJfcmVzZXQoc3RydWN0 IGRybV9lbmNvZGVyICplbmNvZGVyKTsKPiA+ID4gIHZvaWQgaW50ZWxfZHBfZW5jb2Rlcl9zdXNw ZW5kKHN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKTsKPiAKPiAtLSAKPiBWaWxs ZSBTeXJqw6Rsw6QKPiBJbnRlbCBPVEMKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==