From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jim Bride Subject: Re: [PATCHv7 5/5] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Wed, 27 Jul 2016 10:51:44 -0700 Message-ID: <20160727175144.GA8869@shiv> References: <1468406744-6779-1-git-send-email-durgadoss.r@intel.com> <1468406744-6779-6-git-send-email-durgadoss.r@intel.com> <20160727095812.GL4329@intel.com> <4D68720C2E767A4AA6A8796D42C8EB590A8145EE@BGSMSX101.gar.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id BFB8A89FCE for ; Wed, 27 Jul 2016 17:52:18 +0000 (UTC) Content-Disposition: inline In-Reply-To: <4D68720C2E767A4AA6A8796D42C8EB590A8145EE@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" , "Bride, Jim" List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBKdWwgMjcsIDIwMTYgYXQgMTE6MjA6MThBTSArMDAwMCwgUiwgRHVyZ2Fkb3NzIHdy b3RlOgo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IFZpbGxlIFN5cmrD pGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tXQo+ID4gU2VudDogV2Vk bmVzZGF5LCBKdWx5IDI3LCAyMDE2IDM6MjggUE0KPiA+IFRvOiBSLCBEdXJnYWRvc3MgPGR1cmdh ZG9zcy5yQGludGVsLmNvbT4KPiA+IENjOiBpbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn OyBDb25zZWx2YW4gRGUgT2xpdmVpcmEsIEFuZGVyCj4gPiA8YW5kZXIuY29uc2VsdmFuLmRlLm9s aXZlaXJhQGludGVsLmNvbT47IEJyaWRlLCBKaW0gPGppbS5icmlkZUBpbnRlbC5jb20+Owo+ID4g TmF2YXJlLCBNYW5hc2kgRCA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiA+IFN1YmplY3Q6 IFJlOiBbUEFUQ0h2NyA1LzVdIGRybS9pOTE1L2RwOiBFbmFibGUgVXBmcm9udCBsaW5rIHRyYWlu aW5nIGZvcgo+ID4gdHlwZUMgRFAgc3VwcG9ydCBvbiBCWFQKPiA+IAo+ID4gT24gV2VkLCBKdWwg MTMsIDIwMTYgYXQgMDQ6MTU6NDRQTSArMDUzMCwgRHVyZ2Fkb3NzIFIgd3JvdGU6Cj4gPiA+IFRv IHN1cHBvcnQgVVNCIHR5cGUgQyBhbHRlcm5hdGUgRFAgbW9kZSwgdGhlIGRpc3BsYXkgZHJpdmVy IG5lZWRzIHRvCj4gPiA+IGtub3cgdGhlIG51bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUg RFAgcGFuZWwgYXMgd2VsbCBhcyBudW1iZXIKPiA+ID4gb2YgbGFuZXMgdGhhdCBjYW4gYmUgc3Vw cG9ydGVkIGJ5IHRoZSB0eXBlLUMgY2FibGUuIFNvbWV0aW1lcywgdGhlCj4gPiA+IHR5cGUtQyBj YWJsZSBtYXkgbGltaXQgdGhlIGJhbmR3aWR0aCBldmVuIGlmIFBhbmVsIGNhbiBzdXBwb3J0Cj4g PiA+IG1vcmUgbGFuZXMuIFRvIGFkZHJlc3MgdGhlc2Ugc2NlbmFyaW9zLCB0aGUgZGlzcGxheSBk cml2ZXIgd2lsbAo+ID4gPiBzdGFydCBsaW5rIHRyYWluaW5nIHdpdGggbWF4IGxhbmVzLCBhbmQg aWYgdGhhdCBmYWlscywgdGhlIGRyaXZlcgo+ID4gPiBmYWxscyBiYWNrIHRvIHgyIGxhbmVzOyBh bmQgcmVwZWF0cyB0aGlzIHByb2NlZHVyZSBmb3IgYWxsCj4gPiA+IGJhbmR3aWR0aC9sYW5lIGNv bmZpZ3VyYXRpb25zLgo+ID4gPgo+ID4gPiAqIFNpbmNlIGxpbmsgdHJhaW5pbmcgaXMgZG9uZSBi ZWZvcmUgbW9kZXNldCBvbmx5IHRoZSBwb3J0Cj4gPiA+ICAgKGFuZCBub3QgcGlwZS9wbGFuZXMp IGFuZCBpdHMgYXNzb2NpYXRlZCBQTExzIGFyZSBlbmFibGVkLgo+ID4gPiAqIE9uIERQIGhvdHBs dWc6IERpcmVjdGx5IHN0YXJ0IGxpbmsgdHJhaW5pbmcgb24gdGhlIERQIGVuY29kZXIuCj4gPiA+ ICogT24gQ29ubmVjdGVkIGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3aXRoIGFuIExGUCBh bmQgYSBEUCwKPiA+ID4gICBzb21ldGltZXMgQklPUyBicmluZ3MgdXAgRFAuIEluIHRoZXNlIGNh c2VzLCB3ZSBkaXNhYmxlIHRoZQo+ID4gPiAgIGNydGMgYW5kIHRoZW4gZG8gdXBmcm9udCBsaW5r IHRyYWluaW5nOyBhbmQgYnJpbmcgaXQgYmFjayB1cC4KPiA+ID4gKiBBbGwgbG9jYWwgY2hhbmdl cyBtYWRlIGZvciB1cGZyb250IGxpbmsgdHJhaW5pbmcgYXJlIHJlc2V0Cj4gPiA+ICAgdG8gdGhl aXIgcHJldmlvdXMgdmFsdWVzIG9uY2UgaXQgaXMgZG9uZTsgc28gdGhhdCB0aGUKPiA+ID4gICBz dWJzZXF1ZW50IG1vZGVzZXQgaXMgbm90IGF3YXJlIG9mIHRoZXNlIGNoYW5nZXMuCj4gPiA+Cj4g PiA+IENoYW5nZXMgc2luY2UgdjY6Cj4gPiA+ICogRml4IHNvbWUgaW5pdGlhbGl6YXRpb24gYnVn cyBvbiBsaW5rX3JhdGUgKEppbSBCcmlkZSkKPiA+ID4gKiBVc2UgbGlua19yYXRlIChhbmQgbm90 IGxpbmtfYncpIGZvciB1cGZyb250IChWaWxsZSkKPiA+ID4gKiBNYWtlIGludGVsX2RwX3VwZnJv bnQqKCkgYXMgYSB2ZnVuYyAoQW5kZXIpCj4gPiA+ICogVGhlIHRyYWluX3NldF92YWxpZCB2YXJp YWJsZSBpbiBpbnRlbF9kcCB3YXMgcmVtb3ZlZCBkdWUgdG8KPiA+ID4gICBpc3N1ZXMgaW4gZmFz dCBsaW5rIHRyYWluaW5nLiBTbywgdG8gaW5kaWNhdGUgdGhlIGxpbmsgdHJhaW4KPiA+ID4gICBz dGF0dXMsIG1vdmUgdGhlIGNoYW5uZWxfZXEgaW5zaWRlIGludGVsX2RwLgo+ID4gPiBDaGFuZ2Vz IHNpbmNlIHY1Ogo+ID4gPiAqIE1vdmVkIHJldHJ5IGxvZ2ljIGluIHVwZnJvbnQgdG8gaW50ZWxf ZHAuYyBzbyB0aGF0IGl0Cj4gPiA+ICAgY2FuIGJlIHVzZWQgZm9yIGFsbCBwbGF0Zm9ybXMuCj4g PiA+IENoYW5nZXMgc2luY2UgdjQ6Cj4gPiA+ICogUmVtb3ZlZCB1c2FnZSBvZiBjcnRjX3N0YXRl IGluIHVwZnJvbnQgbGluayB0cmFpbmluZzsKPiA+ID4gICBIZW5jZSBubyBuZWVkIHRvIGZpbmQg ZnJlZSBjcnRjIHRvIGRvIHVwZnJvbnQgbm93Lgo+ID4gPiAqIFJlLWVuYWJsZSBjcnRjIGlmIGl0 IHdhcyBkaXNhYmxlZCBmb3IgdXBmcm9udC4KPiA+ID4gKiBVc2Ugc2VwYXJhdGUgdmFyaWFibGVz IHRvIHRyYWNrIG1heCBsYW5lIGNvdW50Cj4gPiA+ICAgYW5kIGxpbmsgcmF0ZSBmb3VuZCBieSB1 cGZyb250LCB3aXRob3V0IG1vZGlmeWluZwo+ID4gPiAgIHRoZSBvcmlnaW5hbCBEUENEIHJlYWQg ZnJvbSBwYW5lbC4KPiA+ID4gQ2hhbmdlcyBzaW5jZSB2MzoKPiA+ID4gKiBGaXhlZCBhIHJldHVy biB2YWx1ZSBvbiBCWFQgY2hlY2sKPiA+ID4gKiBSZXdvcmtlZCBvbiB0b3Agb2YgYnh0X2RkaV9w bGxfc2VsZWN0IHNwbGl0IGZyb20gQW5kZXIKPiA+ID4gKiBSZW5hbWVkIGZyb20gZGRpX3VwZnJv bnQgdG8gYnh0X3VwZnJvbnQgc2luY2UgdGhlCj4gPiA+ICAgdXBmcm9udCBsb2dpYyBpbmNsdWRl cyBCWFQgc3BlY2lmaWMgZnVuY3Rpb25zIGZvciBub3cuCj4gPiA+IENoYW5nZXMgc2luY2UgdjI6 Cj4gPiA+ICogUmViYXNlZCBvbiB0b3Agb2YgbGF0ZXN0IGRwbGxfbWdyLmMgY29kZSBhbmQKPiA+ ID4gICBsYXRlc3QgSFBEIHJlbGF0ZWQgY2xlYW4gdXBzLgo+ID4gPiAqIENvcnJlY3RlZCByZXR1 cm4gdmFsdWVzIGZyb20gdXBmcm9udCAoQW5kZXIpCj4gPiA+ICogQ29ycmVjdGVkIGF0b21pYyBs b2NraW5nIGZvciB1cGZyb250IGluIGludGVsX2RwLmMgKFZpbGxlKQo+ID4gPiBDaGFuZ2VzIHNp bmNlIHYxOgo+ID4gPiAqICBhbGwgcGxsIHJlbGF0ZWQgZnVuY3Rpb25zIGluc2lkZSBkZGkuYwo+ ID4gPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBEdXJnYWRvc3MgUiA8ZHVyZ2Fkb3NzLnJAaW50ZWwu Y29tPgo+ID4gPiAtLS0KPiA+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAg ICAgICAgICAgICB8ICA0NSArKysrKysrKwo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyAgICAgICAgICAgICAgIHwgMTU1Cj4gPiArKysrKysrKysrKysrKysrKysrKysrKysr LQo+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5jIHwg ICA3ICstCj4gPiA+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICAg ICAgfCAgMTUgKysrCj4gPiA+ICA0IGZpbGVzIGNoYW5nZWQsIDIxMyBpbnNlcnRpb25zKCspLCA5 IGRlbGV0aW9ucygtKQo+ID4gPgo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ ID4gaW5kZXggYWIxNzQ1YS4uM2JhZDAxYiAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGRpLmMKPiA+ID4gQEAgLTIzNTYsNiArMjM1Niw1MSBAQCBpbnRlbF9kZGlfaW5pdF9oZG1p X2Nvbm5lY3RvcihzdHJ1Y3QKPiA+IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQp Cj4gPiA+ICAJcmV0dXJuIGNvbm5lY3RvcjsKPiA+ID4gIH0KPiA+ID4KPiA+ID4gK2Jvb2wgaW50 ZWxfYnh0X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4g PiArCQkJCWludCBjbG9jaywgdWludDhfdCBsYW5lX2NvdW50KQo+ID4gPiArewo+ID4gPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2RwLT5hdHRhY2hlZF9jb25u ZWN0b3I7Cj4gPiA+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBjb25uZWN0b3It PmVuY29kZXI7Cj4gPiA+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9f aTkxNShlbmNvZGVyLT5iYXNlLmRldik7Cj4gPiA+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxs ICpwbGw7Cj4gPiA+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsX2NvbmZpZyB0bXBfcGxsX2Nv bmZpZzsKPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3Rv X2RpZ19wb3J0KGludGVsX2RwKTsKPiA+ID4gKwllbnVtIGludGVsX2RwbGxfaWQgZHBsbF9pZCA9 IChlbnVtIGludGVsX2RwbGxfaWQpZGlnX3BvcnQtPnBvcnQ7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ ID4gPiArCSAqIEZJWE1FOiBXb3JrcyBvbmx5IGZvciBCWFQuCj4gPiA+ICsJICogU2VsZWN0IHRo ZSByZXF1aXJlZCBQTEwuIFRoaXMgd29ya3MgZm9yIHBsYXRmb3JtcyB3aGVyZQo+ID4gPiArCSAq IHRoZXJlIGlzIG5vIHNoYXJlZCBEUExMLgo+ID4gPiArCSAqLwo+ID4gPiArCXBsbCA9ICZkZXZf cHJpdi0+c2hhcmVkX2RwbGxzW2RwbGxfaWRdOwo+ID4gPiArCWlmIChXQVJOX09OKHBsbC0+YWN0 aXZlX21hc2spKSB7Cj4gPiA+ICsJCURSTV9FUlJPUigiU2hhcmVkIERQTEwgYWxyZWFkeSBpbiB1 c2UuCj4gPiBhY3RpdmVfbWFzazoleFxuIiwgcGxsLT5hY3RpdmVfbWFzayk7Cj4gPiA+ICsJCXJl dHVybiBmYWxzZTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwl0bXBfcGxsX2NvbmZpZyA9IHBs bC0+Y29uZmlnOwo+ID4gPiArCj4gPiA+ICsJaWYgKCFieHRfZGRpX2RwX3NldF9kcGxsX2h3X3N0 YXRlKGNsb2NrLCAmcGxsLT5jb25maWcuaHdfc3RhdGUpKSB7Cj4gPiA+ICsJCURSTV9FUlJPUigi Q291bGQgbm90IHNldHVwIERQTExcbiIpOwo+ID4gPiArCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxf Y29uZmlnOwo+ID4gPiArCQlyZXR1cm4gZmFsc2U7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJ LyogRW5hYmxlIFBMTCBmb2xsb3dlZCBieSBwb3J0ICovCj4gPiA+ICsJcGxsLT5mdW5jcy5lbmFi bGUoZGV2X3ByaXYsIHBsbCk7Cj4gPiA+ICsJaW50ZWxfZGRpX3ByZV9lbmFibGVfZHAoZW5jb2Rl ciwgY2xvY2ssIGxhbmVfY291bnQsIHBsbCk7Cj4gPiA+ICsKPiA+ID4gKwlEUk1fREVCVUdfS01T KCJVcGZyb250IGxpbmsgdHJhaW4gJXM6IGxpbmtfY2xvY2s6JWQKPiA+IGxhbmVzOiVkXG4iLAo+ ID4gPiArCWludGVsX2RwLT5jaGFubmVsX2VxX3N0YXR1cyA/ICJQYXNzZWQiIDogIkZhaWxlZCIs IGNsb2NrLAo+ID4gbGFuZV9jb3VudCk7Cj4gPiA+ICsKPiA+ID4gKwkvKiBEaXNhYmxlIHBvcnQg Zm9sbG93ZWQgYnkgUExMIGZvciBuZXh0IHJldHJ5L2NsZWFuIHVwICovCj4gPiA+ICsJaW50ZWxf ZGRpX3Bvc3RfZGlzYWJsZShlbmNvZGVyKTsKPiA+ID4gKwlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2 X3ByaXYsIHBsbCk7Cj4gPiA+ICsKPiA+ID4gKwlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmln Owo+ID4gPiArCXJldHVybiBpbnRlbF9kcC0+Y2hhbm5lbF9lcV9zdGF0dXM7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gIHZvaWQgaW50ZWxfZGRpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg ZW51bSBwb3J0IHBvcnQpCj4gPiA+ICB7Cj4gPiA+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gPiA+IGluZGV4IDgxNzg5N2MuLjM5NGU2MmQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+ID4gPiBAQCAtMTUzLDEyICsxNTMsMjEgQEAgaW50ZWxfZHBfbWF4X2xpbmtf Yncoc3RydWN0IGludGVsX2RwCj4gPiAqaW50ZWxfZHApCj4gPiA+ICBzdGF0aWMgdTggaW50ZWxf ZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gIHsKPiA+ ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2Rp Z19wb3J0KGludGVsX2RwKTsKPiA+ID4gLQl1OCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiA+ID4g Kwl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiA+ID4KPiA+ID4gIAlzb3VyY2VfbWF4 ID0gaW50ZWxfZGlnX3BvcnQtPm1heF9sYW5lczsKPiA+ID4gIAlzaW5rX21heCA9IGRybV9kcF9t YXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7Cj4gPiA+Cj4gPiA+IC0JcmV0dXJuIG1pbihz b3VyY2VfbWF4LCBzaW5rX21heCk7Cj4gPiA+ICsJdGVtcCA9IG1pbihzb3VyY2VfbWF4LCBzaW5r X21heCk7Cj4gPiA+ICsKPiA+ID4gKwkvKgo+ID4gPiArCSAqIExpbWl0IG1heCBsYW5lcyB3LnIu dCB0byB0aGUgbWF4IHZhbHVlIGZvdW5kCj4gPiA+ICsJICogdXNpbmcgVXBmcm9udCBsaW5rIHRy YWluaW5nIGFsc28uCj4gPiA+ICsJICovCj4gPiA+ICsJaWYgKGludGVsX2RwLT5tYXhfbGFuZXNf dXBmcm9udCkKPiA+ID4gKwkJcmV0dXJuIG1pbih0ZW1wLCBpbnRlbF9kcC0+bWF4X2xhbmVzX3Vw ZnJvbnQpOwo+ID4gPiArCWVsc2UKPiA+ID4gKwkJcmV0dXJuIHRlbXA7Cj4gPiA+ICB9Cj4gPiA+ Cj4gPiA+ICAvKgo+ID4gPiBAQCAtMTM4MCw2ICsxMzg5LDE1IEBAIHN0YXRpYyBpbnQgaW50ZWxf ZHBfY29tbW9uX3JhdGVzKHN0cnVjdAo+ID4gaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiAgCWlu dCBzb3VyY2VfbGVuLCBzaW5rX2xlbjsKPiA+ID4KPiA+ID4gIAlzaW5rX2xlbiA9IGludGVsX2Rw X3NpbmtfcmF0ZXMoaW50ZWxfZHAsICZzaW5rX3JhdGVzKTsKPiA+ID4gKwo+ID4gPiArCS8qIENh cCBzaW5rIHJhdGVzIHcuci50IHVwZnJvbnQgdmFsdWVzICovCj4gPiA+ICsJaWYgKGludGVsX2Rw LT5tYXhfbGlua19yYXRlX3VwZnJvbnQpIHsKPiA+ID4gKwkJaW50IGxlbiA9IHNpbmtfbGVuIC0g MTsKPiA+ID4gKwkJd2hpbGUgKGxlbiA+IDAgJiYgc2lua19yYXRlc1tsZW5dID4gaW50ZWxfZHAt Cj4gPiA+bWF4X2xpbmtfcmF0ZV91cGZyb250KQo+ID4gPiArCQkJbGVuLS07Cj4gPiA+ICsJCXNp bmtfbGVuID0gbGVuICsgMTsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gIAlzb3VyY2VfbGVuID0g aW50ZWxfZHBfc291cmNlX3JhdGVzKGludGVsX2RwLCAmc291cmNlX3JhdGVzKTsKPiA+ID4KPiA+ ID4gIAlyZXR1cm4gaW50ZXJzZWN0X3JhdGVzKHNvdXJjZV9yYXRlcywgc291cmNlX2xlbiwKPiA+ ID4gQEAgLTQyMDgsNiArNDIyNiwxMTQgQEAgaW50ZWxfZHBfdW5zZXRfZWRpZChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKQo+ID4gPiAgCWludGVsX2RwLT5oYXNfYXVkaW8gPSBmYWxzZTsKPiA+ ID4gIH0KPiA+ID4KPiA+ID4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfdXBmcm9udF9jcnRjX2Rpc2Fi bGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gPiA+ICsJCQkJc3RydWN0IGRybV9tb2Rlc2V0 X2FjcXVpcmVfY3R4ICpjdHgsCj4gPiA+ICsJCQkJYm9vbCBlbmFibGUpCj4gPiA+ICt7Cj4gPiA+ ICsJaW50IHJldDsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gPiA+ ICsJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7Cj4gPiA+ICsJc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ID4gPiArCWVudW0gcGlwZSBwaXBlID0g Y3J0Yy0+cGlwZTsKPiA+ID4gKwo+ID4gPiArCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxv YyhkZXYpOwo+ID4gPiArCWlmICghc3RhdGUpCj4gPiA+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4g PiArCj4gPiA+ICsJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ID4gPiArCj4gPiA+ICsJY3J0 Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gPiA+ ICsJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ID4gPiArCQlyZXQgPSBQVFJfRVJSKGNydGNf c3RhdGUpOwo+ID4gPiArCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ID4gPiArCQly ZXR1cm4gcmV0Owo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCURSTV9ERUJVR19LTVMoIiVzYWJs aW5nIGNydGMgJWMgJXMgdXBmcm9udCBsaW5rIHRyYWluXG4iLAo+ID4gPiArCQkJZW5hYmxlID8g IkVuIiA6ICJEaXMiLAo+ID4gPiArCQkJcGlwZV9uYW1lKHBpcGUpLAo+ID4gPiArCQkJZW5hYmxl ID8gImFmdGVyIiA6ICJiZWZvcmUiKTsKPiA+ID4gKwo+ID4gPiArCWNydGNfc3RhdGUtPmJhc2Uu YWN0aXZlID0gZW5hYmxlOwo+ID4gPiArCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRlKTsK PiA+ID4gKwlpZiAocmV0KQo+ID4gPiArCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3RhdGUpOwo+ ID4gPiArCj4gPiA+ICsJcmV0dXJuIHJldDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArc3RhdGlj IGJvb2wgaW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gPiA+ICt7Cj4gPiA+ICsJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gPiA+ICsJc3RydWN0IGludGVsX2Vu Y29kZXIgKmludGVsX2VuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiA+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGludGVsX2VuY29kZXItPmJhc2UuZGV2Owo+ID4gPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKPiA+ID4gKwlz dHJ1Y3QgZHJtX21vZGVfY29uZmlnICpjb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsKPiA+ID4g KwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+ID4gPiArCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjOwo+ID4gPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5VTEw7 Cj4gPiA+ICsJaW50IHJldDsKPiA+ID4gKwlib29sIGRvbmUgPSBmYWxzZTsKPiA+ID4gKwl1aW50 OF90IGxhbmVfY291bnQsIG1heF9sYW5lcyA9IDQ7Cj4gPiA+ICsJaW50IGNvbW1vbl9yYXRlc1tE UF9NQVhfU1VQUE9SVEVEX1JBVEVTXSA9IHt9Owo+ID4gPiArCWludCBjbG9jaywgY29tbW9uX2xl bjsKPiA+ID4gKwo+ID4gPiArCWNvbW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMoaW50 ZWxfZHAsIGNvbW1vbl9yYXRlcyk7Cj4gPiA+ICsJaWYgKFdBUk5fT04oY29tbW9uX2xlbiA8PSAw KSkKPiA+ID4gKwkJcmV0dXJuIHRydWU7Cj4gPiA+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 Cj4gPiAKPiA+IFN0aWxsIHNlZW1zIHdyb25nIHRvIGp1c3QgZGlzYWJsZSB0aGluZ3MgaGVyZS4g QW5kIGlmIHdlIGNhbid0IGRpc2FibGUKPiA+IHRoaW5ncywgdGhlbiB3aGF0IGNhbiB3ZSBkbz8K PiA+IAo+ID4gSSBiZWxpZXZlIHRoZXJlIGFyZSBwZW9wbGUgd29ya2luZyBvbiBhIHByb3BlciBV U0IgdHlwZS1DIGZyYW1ld29yaywKPiA+IGFuZCBvbmNlIHRoYXQgbWF0ZXJpYWxpemVzLCBJJ20g aG9waW5nIGl0IGNvdWxkIGp1c3Qgc2lnbmFsIHVzIHdoZW5ldmVyCj4gPiB0aGUgY2FibGUgbW9k ZSBnZXRzIGNoYW5nZWQuIEkgYXNzdW1lIHRoZSBiaWdnZXN0IG1lc3MgZm9yIHVzIHdvdWxkCj4g PiBiZSBob3cgdG8gZGV0ZWN0IHRoYXQgd2UncmUgZGVhbGluZyB3aXRoIGEgdHlwZS1DIHBvcnQs IHNvIHRoYXQgd2UnZAo+ID4ga25vdyB3aGVuIHRvIHJlZ2lzdGVyIGZvciB0aGVzZSBub3RpZmlj YXRpb25zLgo+ID4gCj4gPiBBbnl3YXksIG9uY2UgdGhlcmUncyBhIHByb3BlciBmcmFtZXdvcmsg Zm9yIHRoaXMgc3R1ZmYsIEkgZG9uJ3QgdGhpbmsKPiA+IHdlJ2QgbmVlZCBhbnkgdXBmcm9udCBs aW5rIHRyYWluaW5nIHNueW1vcmUuIEkgZ3Vlc3Mgd2UgY291bGQgdXNlIGl0Cj4gPiBhcyBhIHRl bXBvcmFyeSB0aGluZywgYW5kIGdhcmJhZ2UgY29sbGVjdCBpdCBpZi93aGVuIHRoZSBwcm9wZXIg VVNCCj4gPiBzdHVmZiBoYXBwZW5zPwo+IAo+IFN1cmUsIEkgYW0gZmluZSB3aXRoIHRoaXMgYXMg YSB0ZW1wb3Jhcnkgc3R1ZmYuLgoKSG9uZXN0bHksIEkgdGhpbmsgd2Ugc2hvdWxkIGtlZXAgdGhl IHVwZnJvbnQgbGluayB0cmFpbmluZyBzdXBwb3J0IGluCnBsYWNlIGZvciB0aGUgbG9uZyB0ZXJt LiAgVGhlcmUgYXJlIGFkdmFudGFnZXMgdG8ga25vd2luZyB0aGUgbWF4aW11bQpsYW5lIGNvdW50 IGFuZCBsaW5rIHJhdGUgdGhhdCB3ZSBjb3VsZCBzdWNjZXNzZnVsbHkgdHJhaW4gZWFybHkgKHZz Lgphc3N1bWluZyB0aGUgbWF4IHRoYXQgRFAgc3VwcG9ydHM7IHdlJ3ZlIHNlZW4gY2FibGVzIGFu ZCBkb25nbGVzIHRoYXQKbGltaXQgbGFuZSBjb3VudCBvciBsaW5rIHJhdGUgdG8gYSBsZXZlbCBs b3dlciB0aGFuIHdoYXQgdGhlIERQIHNwZWMKY2FsbHMgb3V0LikgIFdlIGNhbiBkbyBhIGJldHRl ciBqb2Igb2YgbWFraW5nIHN1cmUgdGhhdCB3ZSB3aWxsIGhhdmUKZW5vdWdoIGxpbmsgYmFuZHdp ZHRoIHRvIHN1cHBvcnQgYSBnaXZlbiBtb2RlIGJ5IGtub3dpbmcgdGhlIGhpZ2hlc3QKbGluayBj b25maWd1cmF0aW9uIHRoYXQgd2UgY2FuIHN1Y2Nlc3NmdWxseSB0cmFpbiBhdC4gIEl0IGFsc28g Z2l2ZXMKdXMgYSBtb3JlIHNhbmUgZGVmYXVsdCBmb3IgdGhlIERQIE1TVCBjYXNlLCByYXRoZXIg dGhhbiBhc3N1bWluZyB0aGUKbWF4aW11bSBsYW5lIGNvdW50IGFuZCBsaW5rIHJhdGUgKHdoaWNo LCBhZ2FpbiwgbWF5IG5vdCBiZSB0cmFpbmFibGUKaW4gYWxsIGNhc2VzLikKCkppbQoKPiAKPiBU aGFua3MsCj4gRHVyZ2EKPiAKPiA+IAo+ID4gPiArCQlpZiAocmV0KQo+ID4gPiArCQkJZ290byBl eGl0X2ZhaWw7Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmRwbGxfbG9jayk7Cj4gPiA+ICsKPiA+ID4gKwlmb3IgKGxhbmVfY291bnQgPSBtYXhfbGFuZXM7 IGxhbmVfY291bnQgPj0gMSAmJiAhZG9uZTsgbGFuZV9jb3VudAo+ID4gPj49IDEpIHsKPiA+ID4g KwkJZm9yIChjbG9jayA9IGNvbW1vbl9sZW4gLSAxOyBjbG9jayA+PSAwICYmICFkb25lOyBjbG9j ay0tKSB7Cj4gPiA+ICsJCQlkb25lID0gaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbihpbnRl bF9kcCwKPiA+ID4gKwkJCQkJY29tbW9uX3JhdGVzW2Nsb2NrXSwgbGFuZV9jb3VudCk7Cj4gPiA+ ICsJCQlpZiAoZG9uZSkgewo+ID4gPiArCQkJCWludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCA9 IGxhbmVfY291bnQ7Cj4gPiA+ICsJCQkJaW50ZWxfZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udCA9 Cj4gPiBjb21tb25fcmF0ZXNbY2xvY2tdOwo+ID4gPiArCQkJCWJyZWFrOwo+ID4gPiArCQkJfQo+ ID4gPiArCQl9Cj4gPiA+ICsJfQo+ID4gPiArCj4gPiA+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHBsbF9sb2NrKTsKPiA+ID4gKwo+ID4gPiArCWlmIChjcnRjKQo+ID4gPiArCQlyZXQgPSBp bnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9jcnRjLCAmY3R4LCB0cnVlKTsKPiA+ ID4gKwo+ID4gPiArZXhpdF9mYWlsOgo+ID4gPiArCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiA+ ID4gKwkJZHJtX21vZGVzZXRfYmFja29mZigmY3R4KTsKPiA+ID4gKwkJZ290byByZXRyeTsKPiA+ ID4gKwl9Cj4gPiA+ICsJZHJtX21vZGVzZXRfZHJvcF9sb2NrcygmY3R4KTsKPiA+ID4gKwlkcm1f bW9kZXNldF9hY3F1aXJlX2ZpbmkoJmN0eCk7Cj4gPiA+ICsJcmV0dXJuIGRvbmU7Cj4gPiA+ICt9 Cj4gPiA+ICsKPiA+ID4gIHN0YXRpYyB2b2lkCj4gPiA+ICBpbnRlbF9kcF9sb25nX3B1bHNlKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+ID4gIHsKPiA+ID4gQEAg LTQyMTgsNyArNDM0NCw3IEBAIGludGVsX2RwX2xvbmdfcHVsc2Uoc3RydWN0IGludGVsX2Nvbm5l Y3Rvcgo+ID4gKmludGVsX2Nvbm5lY3RvcikKPiA+ID4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5kZXY7Cj4gPiA+ICAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0 dXM7Cj4gPiA+ICAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47 Cj4gPiA+IC0JYm9vbCByZXQ7Cj4gPiA+ICsJYm9vbCByZXQsIGRvX3VwZnJvbnRfbGlua190cmFp bjsKPiA+ID4gIAl1OCBzaW5rX2lycV92ZWN0b3I7Cj4gPiA+Cj4gPiA+ICAJcG93ZXJfZG9tYWlu ID0KPiA+IGludGVsX2Rpc3BsYXlfcG9ydF9hdXhfcG93ZXJfZG9tYWluKGludGVsX2VuY29kZXIp Owo+ID4gPiBAQCAtNDMwMywxMCArNDQyOSwyMyBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IKPiA+ICppbnRlbF9jb25uZWN0b3IpCj4gPiA+ICAJCQlEUk1fREVC VUdfRFJJVkVSKCJDUCBvciBzaW5rIHNwZWNpZmljIGlycQo+ID4gdW5oYW5kbGVkXG4iKTsKPiA+ ID4gIAl9Cj4gPiA+Cj4gPiA+ICsJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwgaWYg aXQgaXMgYSBjb21wbGlhbmNlIHJlcXVlc3QgKi8KPiA+ID4gKwlkb191cGZyb250X2xpbmtfdHJh aW4gPSBpbnRlbF9kcC0+dXBmcm9udF9saW5rX3RyYWluICYmCj4gPiA+ICsJCQkJIWludGVsX2Rw LT51cGZyb250X2RvbmUgJiYKPiA+ID4gKwkJCQlpbnRlbF9lbmNvZGVyLT50eXBlID09IElOVEVM X09VVFBVVF9EUAo+ID4gJiYKPiA+ID4gKwkJCQlpbnRlbF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5 cGUgIT0KPiA+IERQX1RFU1RfTElOS19UUkFJTklORzsKPiA+ID4gKwo+ID4gPiArCWlmIChkb191 cGZyb250X2xpbmtfdHJhaW4pIHsKPiA+ID4gKwkJaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSA9Cj4g PiBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ID4gPiArCQlpZiAoIWlu dGVsX2RwLT51cGZyb250X2RvbmUpCj4gPiA+ICsJCQlzdGF0dXMgPSBjb25uZWN0b3Jfc3RhdHVz X2Rpc2Nvbm5lY3RlZDsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gIG91dDoKPiA+ID4gLQlpZiAo KHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYKPiA+ID4gLQkgICAgKGlu dGVsX2RwLT5pc19tc3QgPT0gZmFsc2UpKQo+ID4gPiArCWlmIChzdGF0dXMgIT0gY29ubmVjdG9y X3N0YXR1c19jb25uZWN0ZWQgJiYgIWludGVsX2RwLT5pc19tc3QpIHsKPiA+ID4gIAkJaW50ZWxf ZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gPiA+ICsJCWludGVsX2RwLT51cGZyb250X2RvbmUg PSBmYWxzZTsKPiA+ID4gKwl9Cj4gPiA+Cj4gPiA+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo dG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwo+ID4gPiAgCXJldHVybjsKPiA+ID4gQEAgLTU1 NjIsNiArNTcwMSwxMiBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0Cj4gPiAqaW50ZWxfZGlnX3BvcnQsCj4gPiA+ICAJaWYgKHR5cGUgPT0gRFJNX01P REVfQ09OTkVDVE9SX2VEUCkKPiA+ID4gIAkJaW50ZWxfZW5jb2Rlci0+dHlwZSA9IElOVEVMX09V VFBVVF9FRFA7Cj4gPiA+Cj4gPiA+ICsJLyogSW5pdGlhbGl6ZSB1cGZyb250IGxpbmsgdHJhaW5p bmcgdmZ1bmMgZm9yIERQICovCj4gPiA+ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5U RUxfT1VUUFVUX0VEUCkgewo+ID4gPiArCQlpZiAoSVNfQlJPWFRPTihkZXYpKQo+ID4gPiArCQkJ aW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiA9Cj4gPiBpbnRlbF9ieHRfdXBmcm9udF9saW5r X3RyYWluOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiAgCS8qIGVEUCBvbmx5IG9uIHBvcnQgQiBh bmQvb3IgQyBvbiB2bHYvY2h2ICovCj4gPiA+ICAJaWYgKFdBUk5fT04oKElTX1ZBTExFWVZJRVco ZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikpICYmCj4gPiA+ICAJCSAgICBpc19lZHAoaW50ZWxf ZHApICYmIHBvcnQgIT0gUE9SVF9CICYmIHBvcnQgIT0gUE9SVF9DKSkKPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9saW5rX3RyYWluaW5nLmMKPiA+ID4gaW5kZXgg NjBmYjM5Yy4uZTU4NDQyYSAxMDA2NDQKPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfbGlua190cmFpbmluZy5jCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+ID4gPiBAQCAtMjMyLDcgKzIzMiw2IEBAIHN0YXRp YyB1MzIgaW50ZWxfZHBfdHJhaW5pbmdfcGF0dGVybihzdHJ1Y3QgaW50ZWxfZHAKPiA+ICppbnRl bF9kcCkKPiA+ID4gIHN0YXRpYyB2b2lkCj4gPiA+ICBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2No YW5uZWxfZXF1YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ICB7Cj4g PiA+IC0JYm9vbCBjaGFubmVsX2VxID0gZmFsc2U7Cj4gPiA+ICAJaW50IHRyaWVzLCBjcl90cmll czsKPiA+ID4gIAl1MzIgdHJhaW5pbmdfcGF0dGVybjsKPiA+ID4KPiA+ID4gQEAgLTI0OCw3ICsy NDcsNyBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxpemF0aW9uKHN0cnVj dAo+ID4gaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPgo+ID4gPiAgCXRyaWVzID0gMDsKPiA+ID4g IAljcl90cmllcyA9IDA7Cj4gPiA+IC0JY2hhbm5lbF9lcSA9IGZhbHNlOwo+ID4gPiArCWludGVs X2RwLT5jaGFubmVsX2VxX3N0YXR1cyA9IGZhbHNlOwo+ID4gPiAgCWZvciAoOzspIHsKPiA+ID4g IAkJdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXTsKPiA+ID4KPiA+ID4g QEAgLTI3Niw3ICsyNzUsNyBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1YWxp emF0aW9uKHN0cnVjdAo+ID4gaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gPgo+ID4gPiAgCQlpZiAo ZHJtX2RwX2NoYW5uZWxfZXFfb2sobGlua19zdGF0dXMsCj4gPiA+ICAJCQkJCSBpbnRlbF9kcC0+ bGFuZV9jb3VudCkpIHsKPiA+ID4gLQkJCWNoYW5uZWxfZXEgPSB0cnVlOwo+ID4gPiArCQkJaW50 ZWxfZHAtPmNoYW5uZWxfZXFfc3RhdHVzID0gdHJ1ZTsKPiA+ID4gIAkJCWJyZWFrOwo+ID4gPiAg CQl9Cj4gPiA+Cj4gPiA+IEBAIC0zMDIsNyArMzAxLDcgQEAgaW50ZWxfZHBfbGlua190cmFpbmlu Z19jaGFubmVsX2VxdWFsaXphdGlvbihzdHJ1Y3QKPiA+IGludGVsX2RwICppbnRlbF9kcCkKPiA+ ID4KPiA+ID4gIAlpbnRlbF9kcF9zZXRfaWRsZV9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+ID4K PiA+ID4gLQlpZiAoY2hhbm5lbF9lcSkKPiA+ID4gKwlpZiAoaW50ZWxfZHAtPmNoYW5uZWxfZXFf c3RhdHVzKQo+ID4gPiAgCQlEUk1fREVCVUdfS01TKCJDaGFubmVsIEVRIGRvbmUuIERQIFRyYWlu aW5nCj4gPiBzdWNjZXNzZnVsXG4iKTsKPiA+ID4gIH0KPiA+ID4KPiA+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCj4gPiA+IGluZGV4IDE2ZjcwZDQuLjg4MzA2ZmMgMTAwNjQ0Cj4gPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPiA+IEBAIC04NTEsNiArODUxLDE1IEBAIHN0 cnVjdCBpbnRlbF9kcCB7Cj4gPiA+ICAJZW51bSBoZG1pX2ZvcmNlX2F1ZGlvIGZvcmNlX2F1ZGlv Owo+ID4gPiAgCWJvb2wgbGltaXRlZF9jb2xvcl9yYW5nZTsKPiA+ID4gIAlib29sIGNvbG9yX3Jh bmdlX2F1dG87Cj4gPiA+ICsKPiA+ID4gKwkvKiBXaGV0aGVyIENoYW5uZWwgRXF1YWxpemF0aW9u IHdhcyBhY2hpZXZlZCBkdXJpbmcgTGluayB0cmFpbmluZyAqLwo+ID4gPiArCWJvb2wgY2hhbm5l bF9lcV9zdGF0dXM7Cj4gPiA+ICsKPiA+ID4gKwkvKiBVcGZyb250IGxpbmsgdHJhaW4gcGFyYW1l dGVycyAqLwo+ID4gPiArCWludCBtYXhfbGlua19yYXRlX3VwZnJvbnQ7Cj4gPiA+ICsJdWludDhf dCBtYXhfbGFuZXNfdXBmcm9udDsKPiA+ID4gKwlib29sIHVwZnJvbnRfZG9uZTsKPiA+ID4gKwo+ ID4gPiAgCXVpbnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07Cj4gPiA+ICAJdWludDhf dCBwc3JfZHBjZFtFRFBfUFNSX1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiA+ID4gIAl1aW50OF90IGRv d25zdHJlYW1fcG9ydHNbRFBfTUFYX0RPV05TVFJFQU1fUE9SVFNdOwo+ID4gPiBAQCAtOTA4LDYg KzkxNywxMCBAQCBzdHJ1Y3QgaW50ZWxfZHAgewo+ID4gPiAgCS8qIFRoaXMgaXMgY2FsbGVkIGJl Zm9yZSBhIGxpbmsgdHJhaW5pbmcgaXMgc3RhcnRlcmQgKi8KPiA+ID4gIAl2b2lkICgqcHJlcGFy ZV9saW5rX3JldHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPgo+ID4gPiAr CS8qIEZvciBVcGZyb250IGxpbmsgdHJhaW5pbmcgKi8KPiA+ID4gKwlib29sICgqdXBmcm9udF9s aW5rX3RyYWluKShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgY2xvY2ssCj4gPiA+ICsJ CQkJdWludDhfdCBsYW5lX2NvdW50KTsKPiA+ID4gKwo+ID4gPiAgCS8qIERpc3BsYXlwb3J0IGNv bXBsaWFuY2UgdGVzdGluZyAqLwo+ID4gPiAgCXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0 X3R5cGU7Cj4gPiA+ICAJdW5zaWduZWQgbG9uZyBjb21wbGlhbmNlX3Rlc3RfZGF0YTsKPiA+ID4g QEAgLTExMjcsNiArMTE0MCw4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3QgaW50 ZWxfZW5jb2Rlcgo+ID4gKmVuY29kZXIsCj4gPiA+ICAJCQkgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnKTsKPiA+ID4gIHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2Fs bG9jKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7Cj4gPiA+ICB1aW50MzJfdCBk ZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ID4gK2Jvb2wg aW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ ID4gPiArCQkJCWludCBjbG9jaywgdWludDhfdCBsYW5lX2NvdW50KTsKPiA+ID4KPiA+ID4gIC8q IGludGVsX2Zyb250YnVmZmVyLmMgKi8KPiA+ID4gIHZvaWQgaW50ZWxfZmJfb2JqX2ludmFsaWRh dGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiA+ID4gLS0KPiA+ID4gMS45LjEK PiA+IAo+ID4gLS0KPiA+IFZpbGxlIFN5cmrDpGzDpAo+ID4gSW50ZWwgT1RDCj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGlu ZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=