From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCHv6 5/5] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Thu, 26 May 2016 14:30:31 +0300 Message-ID: <20160526113031.GN4329@intel.com> References: <1463734742-13088-1-git-send-email-durgadoss.r@intel.com> <1463734742-13088-6-git-send-email-durgadoss.r@intel.com> <20160525153519.GK4329@intel.com> <4D68720C2E767A4AA6A8796D42C8EB5909464193@BGSMSX101.gar.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id ECA656EAB2 for ; Thu, 26 May 2016 11:30:56 +0000 (UTC) Content-Disposition: inline In-Reply-To: <4D68720C2E767A4AA6A8796D42C8EB5909464193@BGSMSX101.gar.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "R, Durgadoss" Cc: "Conselvan De Oliveira, Ander" , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXkgMjYsIDIwMTYgYXQgMTA6MDM6MjJBTSArMDAwMCwgUiwgRHVyZ2Fkb3NzIHdy b3RlOgo+IAo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IFZpbGxlIFN5 cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+ID4gU2VudDog V2VkbmVzZGF5LCBNYXkgMjUsIDIwMTYgOTowNSBQTQo+ID4gVG86IFIsIER1cmdhZG9zcyA8ZHVy Z2Fkb3NzLnJAaW50ZWwuY29tPgo+ID4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmc7IENvbnNlbHZhbiBEZSBPbGl2ZWlyYSwgQW5kZXIKPiA+IDxhbmRlci5jb25zZWx2YW4uZGUu b2xpdmVpcmFAaW50ZWwuY29tPgo+ID4gU3ViamVjdDogUmU6IFtJbnRlbC1nZnhdIFtQQVRDSHY2 IDUvNV0gZHJtL2k5MTUvZHA6IEVuYWJsZSBVcGZyb250IGxpbmsKPiA+IHRyYWluaW5nIGZvciB0 eXBlQyBEUCBzdXBwb3J0IG9uIEJYVAo+ID4gCj4gPiBPbiBGcmksIE1heSAyMCwgMjAxNiBhdCAw MjoyOTowMlBNICswNTMwLCBEdXJnYWRvc3MgUiB3cm90ZToKPiA+ID4gVG8gc3VwcG9ydCBVU0Ig dHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0aGUgZGlzcGxheSBkcml2ZXIgbmVlZHMgdG8KPiA+ ID4ga25vdyB0aGUgbnVtYmVyIG9mIGxhbmVzIHJlcXVpcmVkIGJ5IHRoZSBEUCBwYW5lbCBhcyB3 ZWxsIGFzIG51bWJlcgo+ID4gPiBvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQgYnkgdGhl IHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKPiA+ID4gdHlwZS1DIGNhYmxlIG1heSBsaW1p dCB0aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBvcnQKPiA+ID4gbW9yZSBsYW5l cy4gVG8gYWRkcmVzcyB0aGVzZSBzY2VuYXJpb3MsIHRoZSBkaXNwbGF5IGRyaXZlciB3aWxsCj4g PiA+IHN0YXJ0IGxpbmsgdHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxz LCB0aGUgZHJpdmVyCj4gPiA+IGZhbGxzIGJhY2sgdG8geDIgbGFuZXM7IGFuZCByZXBlYXRzIHRo aXMgcHJvY2VkdXJlIGZvciBhbGwKPiA+ID4gYmFuZHdpZHRoL2xhbmUgY29uZmlndXJhdGlvbnMu Cj4gPiA+Cj4gPiA+ICogU2luY2UgbGluayB0cmFpbmluZyBpcyBkb25lIGJlZm9yZSBtb2Rlc2V0 IG9ubHkgdGhlIHBvcnQKPiA+ID4gICAoYW5kIG5vdCBwaXBlL3BsYW5lcykgYW5kIGl0cyBhc3Nv Y2lhdGVkIFBMTHMgYXJlIGVuYWJsZWQuCj4gPiA+ICogT24gRFAgaG90cGx1ZzogRGlyZWN0bHkg c3RhcnQgbGluayB0cmFpbmluZyBvbiB0aGUgRFAgZW5jb2Rlci4KPiA+ID4gKiBPbiBDb25uZWN0 ZWQgYm9vdCBzY2VuYXJpb3M6IFdoZW4gYm9vdGVkIHdpdGggYW4gTEZQIGFuZCBhIERQLAo+ID4g PiAgIHNvbWV0aW1lcyBCSU9TIGJyaW5ncyB1cCBEUC4gSW4gdGhlc2UgY2FzZXMsIHdlIGRpc2Fi bGUgdGhlCj4gPiA+ICAgY3J0YyBhbmQgdGhlbiBkbyB1cGZyb250IGxpbmsgdHJhaW5pbmc7IGFu ZCBicmluZyBpdCBiYWNrIHVwLgo+ID4gPiAqIEFsbCBsb2NhbCBjaGFuZ2VzIG1hZGUgZm9yIHVw ZnJvbnQgbGluayB0cmFpbmluZyBhcmUgcmVzZXQKPiA+ID4gICB0byB0aGVpciBwcmV2aW91cyB2 YWx1ZXMgb25jZSBpdCBpcyBkb25lOyBzbyB0aGF0IHRoZQo+ID4gPiAgIHN1YnNlcXVlbnQgbW9k ZXNldCBpcyBub3QgYXdhcmUgb2YgdGhlc2UgY2hhbmdlcy4KPiA+ID4KPiA+ID4gQ2hhbmdlcyBz aW5jZSB2NToKPiA+ID4gKiBNb3ZlZCByZXRyeSBsb2dpYyBpbiB1cGZyb250IHRvIGludGVsX2Rw LmMgc28gdGhhdCBpdAo+ID4gPiAgIGNhbiBiZSB1c2VkIGZvciBhbGwgcGxhdGZvcm1zLgo+ID4g PiBDaGFuZ2VzIHNpbmNlIHY0Ogo+ID4gPiAqIFJlbW92ZWQgdXNhZ2Ugb2YgY3J0Y19zdGF0ZSBp biB1cGZyb250IGxpbmsgdHJhaW5pbmc7Cj4gPiA+ICAgSGVuY2Ugbm8gbmVlZCB0byBmaW5kIGZy ZWUgY3J0YyB0byBkbyB1cGZyb250IG5vdy4KPiA+ID4gKiBSZS1lbmFibGUgY3J0YyBpZiBpdCB3 YXMgZGlzYWJsZWQgZm9yIHVwZnJvbnQuCj4gPiA+ICogVXNlIHNlcGFyYXRlIHZhcmlhYmxlcyB0 byB0cmFjayBtYXggbGFuZSBjb3VudAo+ID4gPiAgIGFuZCBsaW5rIHJhdGUgZm91bmQgYnkgdXBm cm9udCwgd2l0aG91dCBtb2RpZnlpbmcKPiA+ID4gICB0aGUgb3JpZ2luYWwgRFBDRCByZWFkIGZy b20gcGFuZWwuCj4gPiA+IENoYW5nZXMgc2luY2UgdjM6Cj4gPiA+ICogRml4ZWQgYSByZXR1cm4g dmFsdWUgb24gQlhUIGNoZWNrCj4gPiA+ICogUmV3b3JrZWQgb24gdG9wIG9mIGJ4dF9kZGlfcGxs X3NlbGVjdCBzcGxpdCBmcm9tIEFuZGVyCj4gPiA+ICogUmVuYW1lZCBmcm9tIGRkaV91cGZyb250 IHRvIGJ4dF91cGZyb250IHNpbmNlIHRoZQo+ID4gPiAgIHVwZnJvbnQgbG9naWMgaW5jbHVkZXMg QlhUIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3Igbm93Lgo+ID4gPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ ID4gPiAqIFJlYmFzZWQgb24gdG9wIG9mIGxhdGVzdCBkcGxsX21nci5jIGNvZGUgYW5kCj4gPiA+ ICAgbGF0ZXN0IEhQRCByZWxhdGVkIGNsZWFuIHVwcy4KPiA+ID4gKiBDb3JyZWN0ZWQgcmV0dXJu IHZhbHVlcyBmcm9tIHVwZnJvbnQgKEFuZGVyKQo+ID4gPiAqIENvcnJlY3RlZCBhdG9taWMgbG9j a2luZyBmb3IgdXBmcm9udCBpbiBpbnRlbF9kcC5jIChWaWxsZSkKPiA+ID4gQ2hhbmdlcyBzaW5j ZSB2MToKPiA+ID4gKiAgYWxsIHBsbCByZWxhdGVkIGZ1bmN0aW9ucyBpbnNpZGUgZGRpLmMKPiA+ ID4KPiA+ID4gU2lnbmVkLW9mZi1ieTogRHVyZ2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNv bT4KPiA+ID4gLS0tCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8ICA0 NSArKysrKysrKysrCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICB8IDE3 OQo+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCj4gPiA+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCB8ICAgOCArKwo+ID4gPiAgMyBmaWxlcyBjaGFu Z2VkLCAyMjYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPiA+ID4KPiA+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+IGluZGV4IDdlNjMzMWEuLjhkMjI0YmYgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPiA+IEBAIC0yMzMwLDYgKzIzMzAs NTEgQEAgaW50ZWxfZGRpX2luaXRfaGRtaV9jb25uZWN0b3Ioc3RydWN0Cj4gPiBpbnRlbF9kaWdp dGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4gPiAgCXJldHVybiBjb25uZWN0b3I7Cj4gPiA+ ICB9Cj4gPiA+Cj4gPiA+ICtib29sIGludGVsX2J4dF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCwKPiA+ID4gKwkJCQlpbnQgY2xvY2ssIHVpbnQ4X3QgbGFuZV9j b3VudCkKPiA+ID4gK3sKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Ig PSBpbnRlbF9kcC0+YXR0YWNoZWRfY29ubmVjdG9yOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwo+ID4gPiArCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ID4gPiAr CXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9zaGFy ZWRfZHBsbF9jb25maWcgdG1wX3BsbF9jb25maWc7Cj4gPiA+ICsJc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gPiA+ICsJZW51 bSBpbnRlbF9kcGxsX2lkIGRwbGxfaWQgPSAoZW51bSBpbnRlbF9kcGxsX2lkKWRpZ19wb3J0LT5w b3J0Owo+ID4gPiArCj4gPiA+ICsJLyoKPiA+ID4gKwkgKiBGSVhNRTogV29ya3Mgb25seSBmb3Ig QlhULgo+ID4gPiArCSAqIFNlbGVjdCB0aGUgcmVxdWlyZWQgUExMLiBUaGlzIHdvcmtzIGZvciBw bGF0Zm9ybXMgd2hlcmUKPiA+ID4gKwkgKiB0aGVyZSBpcyBubyBzaGFyZWQgRFBMTC4KPiA+ID4g KwkgKi8KPiA+ID4gKwlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tkcGxsX2lkXTsKPiA+ ID4gKwlpZiAoV0FSTl9PTihwbGwtPmFjdGl2ZV9tYXNrKSkgewo+ID4gPiArCQlEUk1fRVJST1Io IlNoYXJlZCBEUExMIGFscmVhZHkgaW4gdXNlLgo+ID4gYWN0aXZlX21hc2s6JXhcbiIsIHBsbC0+ YWN0aXZlX21hc2spOwo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gPiArCj4g PiA+ICsJdG1wX3BsbF9jb25maWcgPSBwbGwtPmNvbmZpZzsKPiA+ID4gKwo+ID4gPiArCWlmICgh Ynh0X2RkaV9kcF9zZXRfZHBsbF9od19zdGF0ZShjbG9jaywgJnBsbC0+Y29uZmlnLmh3X3N0YXRl KSkgewo+ID4gPiArCQlEUk1fRVJST1IoIkNvdWxkIG5vdCBzZXR1cCBEUExMXG4iKTsKPiA+ID4g KwkJcGxsLT5jb25maWcgPSB0bXBfcGxsX2NvbmZpZzsKPiA+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCS8qIEVuYWJsZSBQTEwgZm9sbG93ZWQgYnkgcG9ydCAq Lwo+ID4gPiArCXBsbC0+ZnVuY3MuZW5hYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gPiArCWludGVs X2RkaV9wcmVfZW5hYmxlX2RwKGVuY29kZXIsIGNsb2NrLCBsYW5lX2NvdW50LCBwbGwpOwo+ID4g PiArCj4gPiA+ICsJRFJNX0RFQlVHX0tNUygiVXBmcm9udCBsaW5rIHRyYWluICVzOiBsaW5rX2Ns b2NrOiVkCj4gPiBsYW5lczolZFxuIiwKPiA+ID4gKwlpbnRlbF9kcC0+dHJhaW5fc2V0X3ZhbGlk ID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwgY2xvY2ssIGxhbmVfY291bnQpOwo+ID4gPiArCj4gPiA+ ICsJLyogRGlzYWJsZSBwb3J0IGZvbGxvd2VkIGJ5IFBMTCBmb3IgbmV4dCByZXRyeS9jbGVhbiB1 cCAqLwo+ID4gPiArCWludGVsX2RkaV9wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4gPiA+ICsJcGxs LT5mdW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gPiArCj4gPiA+ICsJcGxsLT5jb25m aWcgPSB0bXBfcGxsX2NvbmZpZzsKPiA+ID4gKwlyZXR1cm4gaW50ZWxfZHAtPnRyYWluX3NldF92 YWxpZDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiAgdm9pZCBpbnRlbF9kZGlfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBlbnVtIHBvcnQgcG9ydCkKPiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ID4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gPiA+IGluZGV4IDk1YmE1YWEuLjZlY2FhMzAgMTAwNjQ0 Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiBAQCAtMTQ3LDE4ICsxNDcsMjgg QEAgaW50ZWxfZHBfbWF4X2xpbmtfYncoc3RydWN0IGludGVsX2RwCj4gPiAqaW50ZWxfZHApCj4g PiA+ICAJCW1heF9saW5rX2J3ID0gRFBfTElOS19CV18xXzYyOwo+ID4gPiAgCQlicmVhazsKPiA+ ID4gIAl9Cj4gPiA+IC0JcmV0dXJuIG1heF9saW5rX2J3Owo+ID4gPiArCS8qCj4gPiA+ICsJICog TGltaXQgbWF4IGxpbmsgYncgdy5yLnQgdG8gdGhlIG1heCB2YWx1ZSBmb3VuZAo+ID4gPiArCSAq IHVzaW5nIFVwZnJvbnQgbGluayB0cmFpbmluZyBhbHNvLgo+ID4gPiArCSAqLwo+ID4gPiArCXJl dHVybiBtaW4obWF4X2xpbmtfYncsIGludGVsX2RwLT5tYXhfbGlua19id191cGZyb250KTsKPiA+ IAo+ID4gVGhpcyBkb24ndCBmZWVsIGxpa2UgdGhlIHJpZ2h0IHBsYWNlIGZvciB0aGlzLiBJJ3Zl IHRyaWVkIHRvIG1vdmUKPiA+IHVzIGF3YXkgZnJvbSB0aGUgbGlua19idyB1c2FnZSB0byB1c2lu ZyBwcm9wZXIgcmF0ZSBudW1iZXJzLgo+IAo+IEFncmVlZCwgV2hpbGUgZG9pbmcgdGhlc2UgY2hh bmdlcywgSSBhbHNvIGZlbHQgaXQgd291bGQgYmUgZ29vZCB0bwo+IHVzZSBhbnkgb25lIG9mIHRo ZW0gY29uc2lzdGVudGx5LiBTbywgd2lsbCBtYWtlIGl0IGFsbCAgdXNlIGxpbmtfcmF0ZS4KPiAK PiA+IAo+ID4gVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgaGFuZGxlZCBzb21ld2hlcmUgaW4gaW50 ZWxfZHBfY29tbW9uX3JhdGVzKCkKPiA+IG9yIHBlcmhhcHMganVzdCBpbiBpbnRlbF9kcF9tYXhf bGlua19yYXRlKCkuCj4gCj4gT2ssIG1vdmluZyBpdCB0byBpbnRlbF9kcF9jb21tb25fcmF0ZXMo KSBpbiB0aGUgbmV4dCB2ZXJzaW9uLgo+IAo+ID4gCj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICBzdGF0 aWMgdTggaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkK PiA+ID4gIHsKPiA+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9y dCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ID4gLQl1OCBzb3VyY2VfbWF4LCBzaW5r X21heDsKPiA+ID4gKwl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiA+ID4KPiA+ID4g IAlzb3VyY2VfbWF4ID0gaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lczsKPiA+ID4gIAlzaW5rX21h eCA9IGRybV9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7Cj4gPiA+Cj4gPiA+IC0J cmV0dXJuIG1pbihzb3VyY2VfbWF4LCBzaW5rX21heCk7Cj4gPiA+ICsJdGVtcCA9IG1pbihzb3Vy Y2VfbWF4LCBzaW5rX21heCk7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIExpbWl0IG1h eCBsYW5lcyB3LnIudCB0byB0aGUgbWF4IHZhbHVlIGZvdW5kCj4gPiA+ICsJICogdXNpbmcgVXBm cm9udCBsaW5rIHRyYWluaW5nIGFsc28uCj4gPiA+ICsJICovCj4gPiA+ICsJcmV0dXJuIG1pbih0 ZW1wLCBpbnRlbF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQpOwo+ID4gPiAgfQo+ID4gPgo+ID4gPiAg LyoKPiA+ID4gQEAgLTE1OTAsNiArMTYwMCwxNSBAQCB2b2lkIGludGVsX2RwX3NldF9saW5rX3Bh cmFtcyhzdHJ1Y3QgaW50ZWxfZHAKPiA+ICppbnRlbF9kcCwKPiA+ID4gIAlpbnRlbF9kcC0+bGFu ZV9jb3VudCA9IGxhbmVfY291bnQ7Cj4gPiA+ICB9Cj4gPiA+Cj4gPiA+ICtzdGF0aWMgdm9pZCBp bnRlbF9kcF9pbml0X3VwZnJvbnRfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g PiA+ICt7Cj4gPiA+ICsJaWYgKFdBUk5fT04oaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSkpCj4gPiA+ ICsJCXJldHVybjsKPiA+ID4gKwo+ID4gPiArCWludGVsX2RwLT5tYXhfbGlua19id191cGZyb250 ID0gaW50ZWxfZHAtCj4gPiA+ZHBjZFtEUF9NQVhfTElOS19SQVRFXTsKPiA+ID4gKwlpbnRlbF9k cC0+bWF4X2xhbmVzX3VwZnJvbnQgPSBkcm1fZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHAtCj4g PiA+ZHBjZCk7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyB2b2lkIGludGVsX2RwX3By ZXBhcmUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCj4gPiA+ICB7Cj4gPiA+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ID4gPiBAQCAtMzQyNCw2 ICszNDQzLDE2IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gPiA+ICAJCWludGVsX2RwLT5udW1fc2lua19yYXRlcyA9IGk7Cj4gPiA+ICAJfQo+ID4gPgo+ ID4gPiArCS8qCj4gPiA+ICsJICogVGhlIGxpbmtfYncgYW5kIGxhbmUgY291bnQgdmF1ZXMgYXJl IGluaXRpYWxpemVkIHRvIE1BWCBwb3NzaWJsZQo+ID4gPiArCSAqIHZhbHVlIGZvciBhbGwgZW5j b2RlciB0eXBlcyBpLmUgRFAsIGVEUCwgRFAtTVNULCBzbyB0aGF0IHRoZQo+ID4gPiArCSAqIGlu dGVsX2RwX21heF97bGlua19idy9sYW5lX2NvdW50fSBBUElzIGRvIG5vdCBoYXZlIHRvIHdvcnJ5 Cj4gPiA+ICsJICogYWJvdXQgZW5jb2RlciB0eXBlcy4gVGhleSBmdXJ0aGVyIGNhcCB0aGUgbWF4 IHcuci50IHRoZSB1cGZyb250Cj4gPiA+ICsJICogdmFsdWVzIGFsc28uCj4gPiA+ICsJICovCj4g PiA+ICsJaWYgKCFpbnRlbF9kcC0+dXBmcm9udF9kb25lKQo+ID4gPiArCQlpbnRlbF9kcF9pbml0 X3VwZnJvbnRfcGFyYW1zKGludGVsX2RwKTsKPiA+IAo+ID4gV2l0aCBhbGwgdGhlIG1vZGVzZXQg bG9ja3MgaW52b2x2ZWQgdGhlcmUsIEkgaGF2ZSBhIGJhZCBmZWVsaW5nIHRoaXMKPiA+IGVuZHMg dXAgZ2V0dGluZyBjYWxsZWQgZnJvbSB0aGUgaHBkIHB1bHNlIHdvcmsgYXQgdGhlIHdyb25nIHRp bWUKPiA+IHBlcmhhcHMgbGVhZGluZyB0byBhIGRlYWRsb2NrLgo+IAo+IFdpdGggc29tZSBjb2Rl IGNoYW5nZXMsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIHRoaXMgaW5pdF9wYXJhbXMuCj4gV2lsbCBy ZW1vdmUgdGhpcyBpbiBuZXh0IHZlcnNpb24uCgpJIHB1dCB0aGlzIGNvbW1lbnQgaW4gdGhlIHdy b25nIHBsYWNlLiBJIG1lYW4gdGhlIGNhbGwgdG8KaW50ZWxfZHBfbG9uZ19wdWxzZSgpIGZyb20g dGhlIGhwZF9wdWxzZS4gVGhhdCBsb29rcyBkYW5nZXJvdXMgdG8gbWUuCgo+IAo+ICsgQWxzbyBt YWtpbmcgdXBmcm9udF9saW5rX3RyYWluIGFzIGEgdmZ1bmMgaW5zaWRlIGludGVsX2RwLAo+IGFz IEFuZGVyIHBvaW50ZWQgb3V0Lgo+IAo+IFRoYW5rcywKPiBEdXJnYQo+IAo+ID4gCj4gPiA+ICsK PiA+ID4gIAlpbnRlbF9kcF9wcmludF9yYXRlcyhpbnRlbF9kcCk7Cj4gPiA+Cj4gPiA+ICAJaWYg KCEoaW50ZWxfZHAtPmRwY2RbRFBfRE9XTlNUUkVBTVBPUlRfUFJFU0VOVF0gJgo+ID4gPiBAQCAt NDE0MCw2ICs0MTY5LDEzMiBAQCBpbnRlbF9kcF91bnNldF9lZGlkKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCj4gPiA+ICAJaW50ZWxfZHAtPmhhc19hdWRpbyA9IGZhbHNlOwo+ID4gPiAgfQo+ ID4gPgo+ID4gPiArc3RhdGljIGludCBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiA+ID4gKwkJCQlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWly ZV9jdHggKmN0eCwKPiA+ID4gKwkJCQlib29sIGVuYWJsZSkKPiA+ID4gK3sKPiA+ID4gKwlpbnQg cmV0Owo+ID4gPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiA+ID4gKwlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gPiA+ICsJZW51bSBwaXBlIHBpcGUgPSBjcnRjLT5w aXBlOwo+ID4gPiArCj4gPiA+ICsJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7 Cj4gPiA+ICsJaWYgKCFzdGF0ZSkKPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gPiA+ICsKPiA+ ID4gKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7Cj4gPiA+ICsKPiA+ID4gKwljcnRjX3N0YXRl ID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+ID4gKwlpZiAo SVNfRVJSKGNydGNfc3RhdGUpKSB7Cj4gPiA+ICsJCXJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7 Cj4gPiA+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPiA+ICsJCXJldHVybiBy ZXQ7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJRFJNX0RFQlVHX0tNUygiJXNhYmxpbmcgY3J0 YyAlYyAlcyB1cGZyb250IGxpbmsgdHJhaW5cbiIsCj4gPiA+ICsJCQllbmFibGUgPyAiRW4iIDog IkRpcyIsCj4gPiA+ICsJCQlwaXBlX25hbWUocGlwZSksCj4gPiA+ICsJCQllbmFibGUgPyAiYWZ0 ZXIiIDogImJlZm9yZSIpOwo+ID4gPiArCj4gPiA+ICsJY3J0Y19zdGF0ZS0+YmFzZS5hY3RpdmUg PSBlbmFibGU7Cj4gPiA+ICsJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+ID4gPiAr CWlmIChyZXQpCj4gPiA+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gPiA+ICsK PiA+ID4gKwlyZXR1cm4gcmV0Owo+ID4gPiArfQo+ID4gPiArCj4gPiA+ICtzdGF0aWMgYm9vbCBf X2ludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ID4gPiArCQkJCWludCBjbG9jaywgdWludDhfdCBsYW5lX2NvdW50KQo+ID4gPiArewo+ID4gPiAr CXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3Bv cnQoaW50ZWxfZHApOwo+ID4gPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 Cj4gPiA+ICsJCQkJdG9faTkxNShpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNlLmRldik7Cj4gPiA+ ICsKPiA+ID4gKwlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpCj4gPiA+ICsJCXJldHVybiBpbnRl bF9ieHRfdXBmcm9udF9saW5rX3RyYWluKGludGVsX2RwLCBjbG9jaywKPiA+IGxhbmVfY291bnQp Owo+ID4gPiArCS8qIE90aGVyIHBsYXRmb3JtIGNhbGxzIGdvIGhlcmUgKi8KPiA+ID4gKwo+ID4g PiArCS8qIFJldHVybiB0cnVlIGZvciB1bnN1cHBvcnRlZCBwbGF0Zm9ybXMgKi8KPiA+ID4gKwly ZXR1cm4gdHJ1ZTsKPiA+ID4gK30KPiA+ID4gK3N0YXRpYyBib29sIGludGVsX2RwX3VwZnJvbnRf bGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPiArewo+ID4gPiArCXN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0ID0gZHBfdG9fZGlnX3BvcnQo aW50ZWxfZHApOwo+ID4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0g JmludGVsX2RpZ19wb3J0LT5iYXNlOwo+ID4gPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBp bnRlbF9lbmNvZGVyLT5iYXNlLmRldjsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Cj4gPiA+ICsJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAq Y29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7Cj4gPiA+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4IGN0eDsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKPiA+ ID4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOwo+ID4gPiArCWludCByZXQ7Cj4gPiA+ ICsJYm9vbCBkb25lID0gZmFsc2U7Cj4gPiA+ICsJdWludDhfdCBsYW5lX2NvdW50LCBtYXhfbGFu ZXMgPSBpbnRlbF9kcC0+bWF4X2xhbmVzX3VwZnJvbnQ7Cj4gPiA+ICsJaW50IGNvbW1vbl9yYXRl c1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXSA9IHt9Owo+ID4gPiArCWludCBjbG9jaywgY29tbW9u X2xlbjsKPiA+ID4gKwo+ID4gPiArCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMo aW50ZWxfZHAsIGNvbW1vbl9yYXRlcyk7Cj4gPiA+ICsJaWYgKFdBUk5fT04oY29tbW9uX2xlbiA8 PSAwKSkKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsKPiA+ID4gKwlpZiAoIUlTX0JST1hUT04o ZGV2KSkKPiA+ID4gKwkJcmV0dXJuIDA7Cj4gPiA+ICsKPiA+ID4gKwlkcm1fbW9kZXNldF9hY3F1 aXJlX2luaXQoJmN0eCwgMCk7Cj4gPiA+ICtyZXRyeToKPiA+ID4gKwlyZXQgPSBkcm1fbW9kZXNl dF9sb2NrKCZjb25maWctPmNvbm5lY3Rpb25fbXV0ZXgsICZjdHgpOwo+ID4gPiArCWlmIChyZXQp Cj4gPiA+ICsJCWdvdG8gZXhpdF9mYWlsOwo+ID4gPiArCj4gPiA+ICsJaWYgKGludGVsX2VuY29k ZXItPmJhc2UuY3J0Yykgewo+ID4gPiArCQljcnRjID0gaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRj Owo+ID4gPiArCj4gPiA+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAm Y3R4KTsKPiA+ID4gKwkJaWYgKHJldCkKPiA+ID4gKwkJCWdvdG8gZXhpdF9mYWlsOwo+ID4gPiAr Cj4gPiA+ICsJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPnByaW1hcnktPm11dGV4LCAm Y3R4KTsKPiA+ID4gKwkJaWYgKHJldCkKPiA+ID4gKwkJCWdvdG8gZXhpdF9mYWlsOwo+ID4gPiAr Cj4gPiA+ICsJCWludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4gPiArCQlyZXQg PSBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9jcnRjLCAmY3R4LCBmYWxzZSk7 Cj4gPiA+ICsJCWlmIChyZXQpCj4gPiA+ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiA+IAo+ID4gTWFn aWNhbGx5IGRpc2FibGluZyBzdHVmZiBkb2Vucyd0IHNlZW0gcmlnaHQuIE9UT0ggSSBkb24ndCBo YXZlIGEgZ29vZAo+ID4gaWRlYSBob3cgd2UnZCBkbyB0aGlzIGlmIHRoZSB1c2VyIHlhbmtzIHRo ZSBjYWJsZSBhbmQgcGx1Z3MgaXQgYmFjayBpbgo+ID4gYmVmb3JlIHVzZXJzcGFjZSBoYXMgaGFk IGEgY2hhbmNlIHRvIHNodXQgZG93biB0aGUgcGlwZShzKS4gUG9zdHBvbmUgdGhlCj4gPiBkZXRl Y3Rpb24gdW50aWwgaXQncyBhbGwgY2xlYXIsIG9yIHNvbWV0aGluZz8gQW55b25lIGhhdmUgZ29v ZCBpZGVhcyBmb3IKPiA+IHRoYXQ/Cj4gPiAKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwltdXRl eF9sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiA+ID4gKwo+ID4gPiArCWZvciAobGFuZV9j b3VudCA9IG1heF9sYW5lczsgbGFuZV9jb3VudCA+PSAxICYmICFkb25lOyBsYW5lX2NvdW50Cj4g PiA+Pj0gMSkgewo+ID4gPiArCQlmb3IgKGNsb2NrID0gY29tbW9uX2xlbiAtIDE7IGNsb2NrID49 IDAgJiYgIWRvbmU7IGNsb2NrLS0pIHsKPiA+ID4gKwkJCWRvbmUgPSBfX2ludGVsX2RwX3VwZnJv bnRfbGlua190cmFpbihpbnRlbF9kcCwKPiA+ID4gKwkJCQkJY29tbW9uX3JhdGVzW2Nsb2NrXSwg bGFuZV9jb3VudCk7Cj4gPiA+ICsJCQlpZiAoZG9uZSkgewo+ID4gPiArCQkJCWludGVsX2RwLT5t YXhfbGFuZXNfdXBmcm9udCA9IGxhbmVfY291bnQ7Cj4gPiA+ICsJCQkJaW50ZWxfZHAtPm1heF9s aW5rX2J3X3VwZnJvbnQgPQo+ID4gPiArCj4gPiAJZHJtX2RwX2xpbmtfcmF0ZV90b19id19jb2Rl KGNvbW1vbl9yYXRlc1tjbG9ja10pOwo+ID4gPiArCQkJCWJyZWFrOwo+ID4gPiArCQkJfQo+ID4g PiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ ZHBsbF9sb2NrKTsKPiA+ID4gKwo+ID4gPiArCWlmIChjcnRjKQo+ID4gPiArCQlyZXQgPSBpbnRl bF9kcF91cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9jcnRjLCAmY3R4LCB0cnVlKTsKPiA+ID4g Kwo+ID4gPiArZXhpdF9mYWlsOgo+ID4gPiArCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+ID4g KwkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiA+ID4gKwkJZ290byByZXRyeTsKPiA+ID4g Kwl9Cj4gPiA+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ID4gKwlkcm1fbW9k ZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiA+ICsJcmV0dXJuIGRvbmU7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gIHN0YXRpYyB2b2lkCj4gPiA+ICBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+ID4gIHsKPiA+ID4gQEAgLTQx NTAsNyArNDMwNSw3IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5lY3Rv cgo+ID4gKmludGVsX2Nvbm5lY3RvcikKPiA+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y29ubmVjdG9yLT5kZXY7Cj4gPiA+ICAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7 Cj4gPiA+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4g PiA+IC0JYm9vbCByZXQ7Cj4gPiA+ICsJYm9vbCByZXQsIGRvX3VwZnJvbnRfbGlua190cmFpbjsK PiA+ID4gIAl1OCBzaW5rX2lycV92ZWN0b3I7Cj4gPiA+Cj4gPiA+ICAJcG93ZXJfZG9tYWluID0K PiA+IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKGludGVsX2VuY29kZXIpOwo+ ID4gPiBAQCAtNDIzNSwxMCArNDM5MCwyMiBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IKPiA+ICppbnRlbF9jb25uZWN0b3IpCj4gPiA+ICAJCQlEUk1fREVCVUdf RFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljIGlycQo+ID4gdW5oYW5kbGVkXG4iKTsKPiA+ID4g IAl9Cj4gPiA+Cj4gPiA+ICsJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwgaWYgaXQg aXMgYSBjb21wbGlhbmNlIHJlcXVlc3QgKi8KPiA+ID4gKwlkb191cGZyb250X2xpbmtfdHJhaW4g PSAhaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSAmJgo+ID4gPiArCQlpbnRlbF9lbmNvZGVyLT50eXBl ID09IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCAmJgo+ID4gPiArCQlpbnRlbF9kcC0+Y29tcGxp YW5jZV90ZXN0X3R5cGUgIT0KPiA+IERQX1RFU1RfTElOS19UUkFJTklORzsKPiA+ID4gKwo+ID4g PiArCWlmIChkb191cGZyb250X2xpbmtfdHJhaW4pIHsKPiA+ID4gKwkJaW50ZWxfZHAtPnVwZnJv bnRfZG9uZSA9Cj4gPiBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4g PiArCQlpZiAoIWludGVsX2RwLT51cGZyb250X2RvbmUpCj4gPiA+ICsJCQlzdGF0dXMgPSBjb25u ZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3RlZDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gIG91dDoK PiA+ID4gLQlpZiAoKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYKPiA+ ID4gLQkgICAgKGludGVsX2RwLT5pc19tc3QgPT0gZmFsc2UpKQo+ID4gPiArCWlmIChzdGF0dXMg IT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQgJiYgIWludGVsX2RwLT5pc19tc3QpIHsKPiA+ ID4gIAkJaW50ZWxfZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gPiA+ICsJCWludGVsX2RwLT51 cGZyb250X2RvbmUgPSBmYWxzZTsKPiA+ID4gKwl9Cj4gPiA+Cj4gPiA+ICAJaW50ZWxfZGlzcGxh eV9wb3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwo+ID4gPiAgCXJldHVybjsK PiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4IGJjZjU3MGYuLjA2 MGVhOWIgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC04 MzIsNiArODMyLDEyIEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gPiA+ICAJZW51bSBoZG1pX2ZvcmNl X2F1ZGlvIGZvcmNlX2F1ZGlvOwo+ID4gPiAgCWJvb2wgbGltaXRlZF9jb2xvcl9yYW5nZTsKPiA+ ID4gIAlib29sIGNvbG9yX3JhbmdlX2F1dG87Cj4gPiA+ICsKPiA+ID4gKwkvKiBVcGZyb250IGxp bmsgdHJhaW4gcGFyYW1ldGVycyAqLwo+ID4gPiArCWludCBtYXhfbGlua19id191cGZyb250Owo+ ID4gPiArCXVpbnQ4X3QgbWF4X2xhbmVzX3VwZnJvbnQ7Cj4gPiA+ICsJYm9vbCB1cGZyb250X2Rv bmU7Cj4gPiA+ICsKPiA+ID4gIAl1aW50OF90IGRwY2RbRFBfUkVDRUlWRVJfQ0FQX1NJWkVdOwo+ ID4gPiAgCXVpbnQ4X3QgcHNyX2RwY2RbRURQX1BTUl9SRUNFSVZFUl9DQVBfU0laRV07Cj4gPiA+ ICAJdWludDhfdCBkb3duc3RyZWFtX3BvcnRzW0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKPiA+ ID4gQEAgLTExMTMsNiArMTExOSw4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3Qg aW50ZWxfZW5jb2Rlcgo+ID4gKmVuY29kZXIsCj4gPiA+ICAJCQkgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnKTsKPiA+ID4gIHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2Fk X2FsbG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7Cj4gPiA+ICB1aW50MzJf dCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ID4gK2Jv b2wgaW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LAo+ID4gPiArCQkJCWludCBjbG9jaywgdWludDhfdCBsYW5lX2NvdW50KTsKPiA+ID4KPiA+ID4g IC8qIGludGVsX2Zyb250YnVmZmVyLmMgKi8KPiA+ID4gIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFs aWRhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ID4gLS0KPiA+ID4gMS45 LjEKPiA+ID4KPiA+ID4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KPiA+ID4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+ID4gPiBJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCj4gPiA+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cj4gPiAKPiA+IC0tCj4gPiBWaWxsZSBTeXJqw6Rsw6QKPiA+ IEludGVsIE9UQwoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==