From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan De Oliveira Subject: Re: [PATCHv4 3/3] drm/i915/dp: Enable Upfront link training for typeC DP support on BXT Date: Fri, 06 May 2016 16:09:24 +0300 Message-ID: <1462540164.9307.58.camel@gmail.com> References: <1460986305-7116-1-git-send-email-durgadoss.r@intel.com> <1460986305-7116-4-git-send-email-durgadoss.r@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pf0-x244.google.com (mail-pf0-x244.google.com [IPv6:2607:f8b0:400e:c00::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 448806E265 for ; Fri, 6 May 2016 13:09:27 +0000 (UTC) Received: by mail-pf0-x244.google.com with SMTP id p185so12225397pfb.3 for ; Fri, 06 May 2016 06:09:27 -0700 (PDT) In-Reply-To: <1460986305-7116-4-git-send-email-durgadoss.r@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Durgadoss R , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE2LTA0LTE4IGF0IDE5OjAxICswNTMwLCBEdXJnYWRvc3MgUiB3cm90ZToKPiBU byBzdXBwb3J0IFVTQiB0eXBlIEMgYWx0ZXJuYXRlIERQIG1vZGUsIHRoZSBkaXNwbGF5IGRyaXZl ciBuZWVkcyB0bwo+IGtub3cgdGhlIG51bWJlciBvZiBsYW5lcyByZXF1aXJlZCBieSB0aGUgRFAg cGFuZWwgYXMgd2VsbCBhcyBudW1iZXIKPiBvZiBsYW5lcyB0aGF0IGNhbiBiZSBzdXBwb3J0ZWQg YnkgdGhlIHR5cGUtQyBjYWJsZS4gU29tZXRpbWVzLCB0aGUKPiB0eXBlLUMgY2FibGUgbWF5IGxp bWl0IHRoZSBiYW5kd2lkdGggZXZlbiBpZiBQYW5lbCBjYW4gc3VwcG9ydAo+IG1vcmUgbGFuZXMu IFRvIGFkZHJlc3MgdGhlc2Ugc2NlbmFyaW9zLCB0aGUgZGlzcGxheSBkcml2ZXIgd2lsbAo+IHN0 YXJ0IGxpbmsgdHJhaW5pbmcgd2l0aCBtYXggbGFuZXMsIGFuZCBpZiB0aGF0IGZhaWxzLCB0aGUg ZHJpdmVyCj4gZmFsbHMgYmFjayB0byB4MiBsYW5lczsgYW5kIHJlcGVhdHMgdGhpcyBwcm9jZWR1 cmUgZm9yIGFsbAo+IGJhbmR3aWR0aC9sYW5lIGNvbmZpZ3VyYXRpb25zLgo+IAo+ICogU2luY2Ug bGluayB0cmFpbmluZyBpcyBkb25lIGJlZm9yZSBtb2Rlc2V0IG9ubHkgdGhlIHBvcnQKPiDCoCAo YW5kIG5vdCBwaXBlL3BsYW5lcykgYW5kIGl0cyBhc3NvY2lhdGVkIFBMTHMgYXJlIGVuYWJsZWQu Cj4gKiBPbiBEUCBob3RwbHVnOiBEaXJlY3RseSBzdGFydCBsaW5rIHRyYWluaW5nIG9uIHRoZSBj cnRjCj4gwqAgYXNzb2NpYXRlZCB3aXRoIHRoZSBEUCBlbmNvZGVyLgo+ICogT24gQ29ubmVjdGVk IGJvb3Qgc2NlbmFyaW9zOiBXaGVuIGJvb3RlZCB3aXRoIGFuIExGUCBhbmQgYSBEUCwKPiDCoCB0 eXBpY2FsbHksIEJJT1MgYnJpbmdzIHVwIERQLiBJbiB0aGVzZSBjYXNlcywgd2UgZGlzYWJsZSB0 aGUKPiDCoCBjcnRjIGFuZCB0aGVuIGRvIHVwZnJvbnQgbGluayB0cmFpbmluZzsgYW5kIGxldCB0 aGUgc3Vic2VxdWVudAo+IMKgIG1vZGVzZXQgcmUtZW5hYmxlIHRoZSBjcnRjLgo+ICogQWxsIGxv Y2FsIGNoYW5nZXMgbWFkZSBmb3IgdXBmcm9udCBsaW5rIHRyYWluaW5nIGFyZSByZXNldAo+IMKg IHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyBvbmNlIGl0IGlzIGRvbmU7IHNvIHRoYXQgdGhlCj4g wqAgc3Vic2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBvZiB0aGVzZSBjaGFuZ2VzLgo+IAo+ IENoYW5nZXMgc2luY2UgdjM6Cj4gKiBGaXhlZCBhIHJldHVybiB2YWx1ZSBvbiBCWFQgY2hlY2sK PiAqIFJld29ya2VkIG9uIHRvcCBvZiBieHRfZGRpX3BsbF9zZWxlY3Qgc3BsaXQgZnJvbSBBbmRl cgo+ICogUmVuYW1lZCBmcm9tIGRkaV91cGZyb250IHRvIGJ4dF91cGZyb250IHNpbmNlIHRoZQo+ IMKgIHVwZnJvbnQgbG9naWMgaW5jbHVkZXMgQlhUIHNwZWNpZmljIGZ1bmN0aW9ucyBmb3Igbm93 Lgo+IENoYW5nZXMgc2luY2UgdjI6Cj4gKiBSZWJhc2VkIG9uIHRvcCBvZiBsYXRlc3QgZHBsbF9t Z3IuYyBjb2RlIGFuZAo+IMKgIGxhdGVzdCBIUEQgcmVsYXRlZCBjbGVhbiB1cHMuCj4gKiBDb3Jy ZWN0ZWQgcmV0dXJuIHZhbHVlcyBmcm9tIHVwZnJvbnQgKEFuZGVyKQo+ICogQ29ycmVjdGVkIGF0 b21pYyBsb2NraW5nIGZvciB1cGZyb250IGluIGludGVsX2RwLmMgKFZpbGxlKQo+IENoYW5nZXMg c2luY2UgdjE6Cj4gKsKgwqBhbGwgcGxsIHJlbGF0ZWQgZnVuY3Rpb25zIGluc2lkZSBkZGkuYwo+ IAo+IFNpZ25lZC1vZmYtYnk6IER1cmdhZG9zcyBSIDxkdXJnYWRvc3MuckBpbnRlbC5jb20+Cj4g LS0tCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyB8wqDCoDczICsrKysrKysr KysrKysrKysKPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmPCoMKgfCAxODAKPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiDCoGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oIHzCoMKgwqA1ICsrCj4gwqAzIGZpbGVzIGNoYW5nZWQsIDI1NiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiBpbmRleCA5NjIzNGM1Li5mN2ZhM2RiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRp LmMKPiBAQCAtMjI2OCw2ICsyMjY4LDc5IEBAIGludGVsX2RkaV9pbml0X2hkbWlfY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQKPiAqaW50ZWxfZGlnX3BvcnQpCj4gwqAJcmV0dXJu IGNvbm5lY3RvcjsKPiDCoH0KPiDCoAo+ICtpbnQgaW50ZWxfYnh0X3VwZnJvbnRfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQkJc3RydWN0IGludGVsX2NydGMgKmNy dGMpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGludGVsX2Rw LT5hdHRhY2hlZF9jb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9 IGNvbm5lY3Rvci0+ZW5jb2RlcjsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IHRvX2k5MTUoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9k cGxsICpwbGw7Cj4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHRtcF9wbGxfY29u ZmlnOwo+ICsJc3RydWN0IGJ4dF9jbGtfZGl2IGNsa19kaXYgPSB7MH07Cj4gKwlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAr CWVudW0gaW50ZWxfZHBsbF9pZCBkcGxsX2lkID0gKGVudW0gaW50ZWxfZHBsbF9pZClkaWdfcG9y dC0+cG9ydDsKPiArCXVpbnQ4X3QgbGlua19idywgbGFuZV9jb3VudDsKPiArCj4gKwlpZiAoV0FS Tl9PTighY3J0YykpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJLyogSW5pdGlhbGl6ZSB3 aXRoIE1heCBMaW5rIHJhdGUgJiBsYW5lIGNvdW50IHN1cHBvcnRlZCBieSBwYW5lbCAqLwo+ICsJ bGlua19idyA9wqDCoGludGVsX2RwLT5kcGNkW0RQX01BWF9MSU5LX1JBVEVdOwo+ICsJbGFuZV9j b3VudCA9IGRybV9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7CgpXaGF0IGlmIHRo ZSBwYW5lbCBzdXBwb3J0cyBIQlIzPyBXZSBzaG91bGQgdXNlIHRoZSBtYXhpbXVtIGNvbW1vbiBy YXRlIGJldHdlZW4Kc291cmNlIGFuZCBzaW5rLiBBbmQgaXQgd291bGQgYmUgbmljZSBpZiB0aG9z ZSBkZXRhaWxzIHdoZXJlIGluIGludGVsX2RwLmMuCklkZWFsbHksIHRoZSBwbGF0Zm9ybSBzcGVj aWZpYyBwYXJ0IHdvdWxkIHRha2UgbGluayByYXRlIGFuZCBsYW5lIGNvdW50IGFzCmFyZ3VtZW50 cyBhbmQganVzdCBkbyB0aGUgcGxsL2VuY29kZXIgZW5hYmxpbmcvZGlzYWJsaW5nLgoKPiArCj4g KwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiArCS8qCj4gKwnCoCogRklYTUU6 IFdvcmtzIG9ubHkgZm9yIEJYVC4KPiArCcKgKiBTZWxlY3QgdGhlIHJlcXVpcmVkIFBMTC4gVGhp cyB3b3JrcyBmb3IgcGxhdGZvcm1zIHdoZXJlCj4gKwnCoCogdGhlcmUgaXMgbm8gc2hhcmVkIERQ TEwuCj4gKwnCoCovCj4gKwlwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tkcGxsX2lkXTsK PiArCWlmIChXQVJOX09OKHBsbC0+YWN0aXZlX21hc2spKSB7Cj4gKwkJRFJNX0VSUk9SKCJTaGFy ZWQgRFBMTCBhbHJlYWR5IGluIHVzZS4gYWN0aXZlX21hc2s6JXhcbiIsCj4gcGxsLT5hY3RpdmVf bWFzayk7Cj4gKwkJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiArCQlyZXR1 cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwl0bXBfcGxsX2NvbmZpZyA9IHBsbC0+Y29uZmlnOwo+ ICsKPiArCURSTV9ERUJVR19LTVMoIlVzaW5nIHBpcGUgJWMgd2l0aCBwbGwgJXNcbiIsCj4gKwkJ CXBpcGVfbmFtZShjcnRjLT5waXBlKSwgcGxsLT5uYW1lKTsKPiArCWRvIHsKPiArCQljcnRjLT5j b25maWctPnBvcnRfY2xvY2sgPQo+IGRybV9kcF9id19jb2RlX3RvX2xpbmtfcmF0ZShsaW5rX2J3 KTsKPiArCQljcnRjLT5jb25maWctPmxhbmVfY291bnQgPSBsYW5lX2NvdW50Owo+ICsKPiArCQli eHRfZGRpX2RwX3BsbF9kaXZpZGVycyhjcnRjLT5jb25maWctPnBvcnRfY2xvY2ssICZjbGtfZGl2 KTsKPiArCQlpZiAoIWJ4dF9kZGlfc2V0X2RwbGxfaHdfc3RhdGUoY3J0Yy0+Y29uZmlnLT5wb3J0 X2Nsb2NrLAo+ICsJCQkJCSZjbGtfZGl2LCAmcGxsLT5jb25maWcuaHdfc3RhdGUpKSB7Cj4gKwkJ CURSTV9FUlJPUigiQ291bGQgbm90IHNldHVwIERQTExcbiIpOwo+ICsJCQlnb3RvIGV4aXRfcGxs Owo+ICsJCX0KPiArCj4gKwkJLyogRW5hYmxlIFBMTCBmb2xsb3dlZCBieSBwb3J0ICovCj4gKwkJ cGxsLT5mdW5jcy5lbmFibGUoZGV2X3ByaXYsIHBsbCk7Cj4gKwkJZW5jb2Rlci0+cHJlX2VuYWJs ZShlbmNvZGVyKTsKPiArCj4gKwkJLyogQ2hlY2sgaWYgbGluayB0cmFpbmluZyBwYXNzZWQ7IGlm IHNvIHVwZGF0ZSBEUENEICovCj4gKwkJaWYgKGludGVsX2RwLT50cmFpbl9zZXRfdmFsaWQpCj4g KwkJCWludGVsX2RwX3VwZGF0ZV9kcGNkX3BhcmFtcyhpbnRlbF9kcCk7Cj4gKwo+ICsJCS8qIERp c2FibGUgcG9ydCBmb2xsb3dlZCBieSBQTEwgZm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KPiAr CQllbmNvZGVyLT5wb3N0X2Rpc2FibGUoZW5jb2Rlcik7Cj4gKwkJcGxsLT5mdW5jcy5kaXNhYmxl KGRldl9wcml2LCBwbGwpOwo+ICsKPiArCX0gd2hpbGUgKCFpbnRlbF9kcC0+dHJhaW5fc2V0X3Zh bGlkICYmCj4gKwkJaW50ZWxfZHBfZ2V0X2xpbmtfcmV0cnlfcGFyYW1zKGludGVsX2RwLCAmbGFu ZV9jb3VudCwKPiAmbGlua19idykpOwo+ICsKPiArCURSTV9ERUJVR19LTVMoIlVwZnJvbnQgbGlu ayB0cmFpbiAlczogbGFuZXM6JWQgYnc6JWRcbiIsCj4gKwlpbnRlbF9kcC0+dHJhaW5fc2V0X3Zh bGlkID8gIlBhc3NlZCIgOiAiRmFpbGVkIiwgbGFuZV9jb3VudCwKPiBsaW5rX2J3KTsKPiArCj4g K2V4aXRfcGxsOgo+ICsJcGxsLT5jb25maWcgPSB0bXBfcGxsX2NvbmZpZzsKPiArCW11dGV4X3Vu bG9jaygmZGV2X3ByaXYtPmRwbGxfbG9jayk7Cj4gKwo+ICsJcmV0dXJuIGludGVsX2RwLT50cmFp bl9zZXRfdmFsaWQgPyAwIDogLTE7Cj4gK30KPiArCj4gwqB2b2lkIGludGVsX2RkaV9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIGVudW0gcG9ydCBwb3J0KQo+IMKgewo+IMKgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcC5jCj4gaW5kZXggNjFlZTIyNi4uNTdkNzE1OSAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHAuYwo+IEBAIC0xNTk1LDYgKzE1OTUsNDEgQEAgdm9pZCBpbnRlbF9kcF9zZXRfbGlu a19wYXJhbXMoc3RydWN0IGludGVsX2RwCj4gKmludGVsX2RwLAo+IMKgCWludGVsX2RwLT5sYW5l X2NvdW50ID0gcGlwZV9jb25maWctPmxhbmVfY291bnQ7Cj4gwqB9Cj4gwqAKPiArdm9pZCBpbnRl bF9kcF91cGRhdGVfZHBjZF9wYXJhbXMoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ ICsJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdICY9IH5EUF9NQVhfTEFORV9DT1VO VF9NQVNLOwo+ICsJaW50ZWxfZHAtPmRwY2RbRFBfTUFYX0xBTkVfQ09VTlRdIHw9Cj4gKwkJCWlu dGVsX2RwLT5sYW5lX2NvdW50ICYgRFBfTUFYX0xBTkVfQ09VTlRfTUFTSzsKPiArCj4gKwlpbnRl bF9kcC0+ZHBjZFtEUF9NQVhfTElOS19SQVRFXSA9Cj4gKwkJCWRybV9kcF9saW5rX3JhdGVfdG9f YndfY29kZShpbnRlbF9kcC0+bGlua19yYXRlKTsKCkkgdGhpbmsgSSBtZW50aW9uZWQgdGhpcyBi ZWZvcmUuIEkgZG9uJ3QgdGhpbmsgd2Ugc2hvdWxkIHVwZGF0ZSB0aGUgZHBjZCBmaWVsZHMKZGly ZWN0bHkuIEluc3RlYWQsIHRoZXJlIHNob3VsZCBiZSBhIGZpZWxkIGZvciB0aGUgbWF4IHJhdGUg YW5kIGxhbmUgY291bnQKYWNoaWV2ZWQgdGhyb3VnaCB1cGZyb250IGxpbmsgdHJhaW5pbmcgaW4g c3RydWN0IGludGVsX2RwIGFuZAppbnRlbF9kcF9tYXhfbGlua19idygpIGFuZCBpbnRlbF9kcF9t YXhfbGFuZV9jb3VudCgpIHNob3VsZCB0YWtlIHRoYXQgaW50bwphY2NvdW50LgoKPiArfQo+ICsK PiArYm9vbCBpbnRlbF9kcF9nZXRfbGlua19yZXRyeV9wYXJhbXMoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCwKPiArCQkJdWludDhfdCAqbGFuZV9jb3VudCwgdWludDhfdCAqbGlua19idykKPiAr ewo+ICsJLyoKPiArCcKgKiBBcyBwZXIgRFAxLjMgU3BlYywgcmV0cnkgYWxsIGxpbmsgcmF0ZXMg Zm9yIGEgcGFydGljdWxhcgo+ICsJwqAqIGxhbmUgY291bnQgdmFsdWUsIGJlZm9yZSByZWR1Y2lu ZyBudW1iZXIgb2YgbGFuZXMuCj4gKwnCoCovCj4gKwlpZiAoKmxpbmtfYncgPT0gRFBfTElOS19C V181XzQpIHsKPiArCQkqbGlua19idyA9IERQX0xJTktfQldfMl83Owo+ICsJfSBlbHNlIGlmICgq bGlua19idyA9PSBEUF9MSU5LX0JXXzJfNykgewo+ICsJCSpsaW5rX2J3ID0gRFBfTElOS19CV18x XzYyOwo+ICsJfSBlbHNlIGlmICgqbGFuZV9jb3VudCA9PSA0KSB7Cj4gKwkJKmxhbmVfY291bnQg PSAyOwo+ICsJCSpsaW5rX2J3ID0gaW50ZWxfZHBfbWF4X2xpbmtfYncoaW50ZWxfZHApOwo+ICsJ fSBlbHNlIGlmICgqbGFuZV9jb3VudCA9PSAyKSB7Cj4gKwkJKmxhbmVfY291bnQgPSAxOwo+ICsJ CSpsaW5rX2J3ID0gaW50ZWxfZHBfbWF4X2xpbmtfYncoaW50ZWxfZHApOwo+ICsJfSBlbHNlIHsK PiArCQkvKiBUcmllZCBhbGwgY29tYmluYXRpb25zLCBzbyBleGl0ICovCj4gKwkJcmV0dXJuIGZh bHNlOwo+ICsJfQo+ICsKPiArCXJldHVybiB0cnVlOwo+ICt9Cj4gKwo+IMKgc3RhdGljIHZvaWQg aW50ZWxfZHBfcHJlcGFyZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiDCoHsKPiDC oAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gQEAgLTQ1NDgs NiArNDU4MywxMzUgQEAgaW50ZWxfZHBfdW5zZXRfZWRpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+IMKgCWludGVsX2RwLT5oYXNfYXVkaW8gPSBmYWxzZTsKPiDCoH0KPiDCoAo+ICtzdGF0 aWMgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2RwX3VwZnJvbnRfZ2V0X2NydGNfc3Rh dGUoCj4gKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJCXN0cnVjdCBkcm1fbW9k ZXNldF9hY3F1aXJlX2N0eCAqY3R4KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gKwlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCj4gKwlzdGF0ZSA9IGRybV9h dG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiArCWlmICghc3RhdGUpCj4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVOT01FTSk7Cj4gKwo+ICsJc3RhdGUtPmFjcXVpcmVfY3R4ID0gY3R4Owo+ICsKPiArCWNy dGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOwo+ICsJ aWYgKElTX0VSUihjcnRjX3N0YXRlKSkgewo+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0 ZSk7Cj4gKwkJc3RhdGUgPSBOVUxMOwo+ICsJfQoKQWxsIHRoaXMgZnVuY3Rpb24gZG9lcyBpcyBj YWxswqBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoKS4gU2luY2UgdGhlIGNhbGxlcgphbHNv IGhhdmUgdG8gZGVhbCB3aXRoIGVycm9yIGhhbmRsaW5nLCBJIGRvbid0IHNlZSB3aGF0IGl0IGFk ZHMgb24gdG9wIG9mIHRoYXQuClRoZSBjb2RlIGlzIGFjdHVhbGx5IHNpbXBsZXIgaWYgbWVyZ2Vk IHdpdGggdGhlIGZ1bmN0aW9uIGJlbG93LgoKPiArCj4gKwlyZXR1cm4gY3J0Y19zdGF0ZTsKPiAr fQo+ICsKPiArc3RhdGljIGludCBpbnRlbF9kcF91cGZyb250X2NvbW1pdChzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywKPiArCQkJCXN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQoK VGhpcyBmdW5jdGlvbiBjb3VsZCB1c2UgYSBiZXR0ZXIgbmFtZS4gU29tZXRoaW5nIHRoYXQgc3Vn Z2VzdHMgdGhlIGNydGMgaXMgYmVpbmcKZGlzYWJsZWQuIE1heWJlIGRpc2FibGVfY3J0Y19mb3Jf dXBmcm9udCgpID8gSXQgZG9lbnMndCByZWFsbHkgZGVwZW5kcyBvbgphbnl0aGluZyBEUCBzcGVj aWZpYywgc28gbWF5YmUgaXQgd291bGQgbWFrZSBzZW5zZSB0byBtb3ZlIGl0IHRvIGludGVsX2Rp c3BsYXkuYwpvciBpbnRlbF9hdG9taWMuYy4gVGhlbiB3ZSBjb3VsZCBjYWxsIGl0IGludGVsX2Ny dGNfYXRvbWljX2Rpc2FibGVfbG9ja2VkKCkuIFRoZQoibG9ja2VkIiBwYXJ0IHNpbmNlIHRoaXMg YXNzdW1lcyB0aGUgY3R4IGFscmVhZHkgaGF2ZSBjcnRjLT5tdXRleCBsb2NrZWQgc28gdGhhdAp0 aGVyZSdzIG5vIHJpc2sgb2YgLUVERUFETEsuIEFsdGhvdWdoIGl0IGNhbiBqdXN0IHBhc3MgdGhl IC1FREVBRExLIGVycm9yIHRvIHRoZQpjYWxsZXIsIHNvIGp1c3QgaW50ZWxfY3J0Y19hdG9taWNf ZGlzYWJsZSgpID/CoAoKCgo+ICt7Cj4gKwlpbnQgcmV0Owo+ICsJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGU7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwo+ ICsJY3J0Y19zdGF0ZSA9IGludGVsX2RwX3VwZnJvbnRfZ2V0X2NydGNfc3RhdGUoY3J0YywgY3R4 KTsKPiArCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4gKwkJcmV0dXJuIFBUUl9FUlIoY3J0Y19z dGF0ZSk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiRGlzYWJsaW5nIGNydGMgJWMgZm9yIHVwZnJv bnQgbGluayB0cmFpblxuIiwKPiBwaXBlX25hbWUocGlwZSkpOwo+ICsKPiArCWNydGNfc3RhdGUt PmJhc2UuYWN0aXZlID0gZmFsc2U7Cj4gKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChjcnRjX3N0 YXRlLT5iYXNlLnN0YXRlKTsKPiArCWlmIChyZXQpIHsKPiArCQlkcm1fYXRvbWljX3N0YXRlX2Zy ZWUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7Cj4gKwkJY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSA9 IE5VTEw7CgpUaGUgZnVuY3Rpb24gZHJtX2F0b21pY19zdGF0ZV9mcmVlKCkgZnJlZXMgdGhlIGNy dGNfc3RhdGUsIHNvIHRoaXMgaXMgYSB1c2UKYWZ0ZXIgZnJlZS4KCj4gKwl9Cj4gKwlyZXR1cm4g cmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwID0gaW50ZWxfYXR0YWNoZWRfZHAoY29ubmVjdG9yKTsKCllvdSBjb3VsZCBqdXN0 IHBhc3MgaW50ZWxfZHAgZGlyZWN0bHkuIFRoZSBvbmx5IHVzZSBvZiBjb25uZWN0b3IgaXMgd2hl bgpjb25uZWN0b3ItPnN0YXRlLT5jcnRjIGlzIGluc3BlY3RlZC4gQnV0IHRoYXQgc2hvdWxkIGhh dmUgdGhlIHNhbWUgdmFsdWUgYXMKaW50ZWxfZHAtPmJhc2UuYmFzZS5jcnRjCgo+ICsJc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCk7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9ICZpbnRlbF9k aWdfcG9ydC0+YmFzZTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9lbmNvZGVy LT5iYXNlLmRldjsKPiArCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1v ZGVfY29uZmlnOwo+ICsJc3RydWN0IGRybV9tb2Rlc2V0X2FjcXVpcmVfY3R4IGN0eDsKPiArCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLCAqdG1wX2NydGNfY29uZmlnOwo+ICsJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMg PSBOVUxMOwo+ICsJYm9vbCBjcnRjX2VuYWJsZWQgPSBmYWxzZTsKPiArCWludCByZXQsIHN0YXR1 cyA9IDA7Cj4gKwo+ICsJaWYgKCFJU19CUk9YVE9OKGRldikpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9pbml0KCZjdHgsIDApOwo+ICtyZXRyeToKPiArCXJldCA9 IGRybV9tb2Rlc2V0X2xvY2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgJmN0eCk7Cj4gKwlp ZiAocmV0KQo+ICsJCWdvdG8gZXhpdF9mYWlsOwo+ICsKPiArCWlmIChjb25uZWN0b3ItPnN0YXRl LT5jcnRjKSB7Cj4gKwkJY3J0YyA9IGNvbm5lY3Rvci0+c3RhdGUtPmNydGM7Cj4gKwo+ICsJCXJl dCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsKPiArCQlpZiAocmV0KQo+ ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiArCj4gKwkJY3J0Y19lbmFibGVkID0gdHJ1ZTsKPiArCX0g ZWxzZSB7Cj4gKwkJY3J0YyA9IGludGVsX2dldF91bnVzZWRfY3J0YygmaW50ZWxfZW5jb2Rlci0+ YmFzZSwgJmN0eCk7Cj4gKwkJaWYgKElTX0VSUl9PUl9OVUxMKGNydGMpKSB7Cj4gKwkJCXJldCA9 IFBUUl9FUlJfT1JfWkVSTyhjcnRjKTsKPiArCQkJRFJNX0RFQlVHX0tNUygiTm8gY3J0YyBhdmFp bGFibGUgZm9yIHVwZnJvbnQgbGluawo+IHRyYWluOiVkXG4iLCByZXQpOwo+ICsJCQlnb3RvIGV4 aXRfZmFpbDsKPiArCQl9Cj4gKwkJaW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjID0gY3J0YzsKPiAr CX0KCklNTywgdGhlIGZvbGxvd2luZyB3b3VsZCBiZSBhIGJpdCBtb3JlIHJlYWRhYmxlLgoKCWlm IChpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGMpCgkJY3J0YyA9IGludGVsX2VuY29kZXItPmJhc2Uu Y3J0YzsKCWVsc2UKCQljcnRjID3CoGludGVsX2dldF91bnVzZWRfY3J0YygmaW50ZWxfZW5jb2Rl ci0+YmFzZSwgJmN0eCk7CgoJaWYgKElTX0VSUihjcnRjKSkgewoJCS4uLgoJfQoKCXJldCA9IGRy bV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsKCWlmIChyZXQpCgkJZ290byBleGl0 X2ZhaWw7CgoJY3J0Y19lbmFibGVkID0gY3J0Yy0+Y29uZmlnLT5hY3RpdmU7Cgo+ICsKPiArCWlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICsJRFJNX0RFQlVHX0tNUygiVXNpbmcg cGlwZSAlYyBmb3IgdXBmcm9udCBsaW5rIHRyYWluaW5nXG4iLAo+ICsJCQkJCXBpcGVfbmFtZShp bnRlbF9jcnRjLT5waXBlKSk7Cj4gKwo+ICsJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+ cHJpbWFyeS0+bXV0ZXgsICZjdHgpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGV4aXRfZmFpbDsK PiArCj4gKwlpZiAoY3J0Y19lbmFibGVkKSB7Cj4gKwkJcmV0ID0gaW50ZWxfZHBfdXBmcm9udF9j b21taXQoaW50ZWxfY3J0YywgJmN0eCk7Cj4gKwkJaWYgKHJldCkKPiArCQkJZ290byBleGl0X2Zh aWw7Cj4gKwl9Cj4gKwo+ICsJY3J0Y19zdGF0ZSA9IGludGVsX2RwX3VwZnJvbnRfZ2V0X2NydGNf c3RhdGUoaW50ZWxfY3J0YywgJmN0eCk7Cj4gKwlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7Cj4g KwkJcmV0ID0gUFRSX0VSUihjcnRjX3N0YXRlKTsKPiArCQlnb3RvIGV4aXRfZmFpbDsKPiArCX0K PiArCj4gKwkvKiBTYXZlIHRoZSBleGlzdGluZyBjb25maWcgKi8KPiArCXRtcF9jcnRjX2NvbmZp ZyA9IGludGVsX2NydGMtPmNvbmZpZzsKCllvdSBuZWVkIHRvIHNhdmUgdGhpcyBlYXJsaWVyLiBP dGhlcndpc2UgaWYgaW50ZWxfZHBfdXBmcm9udF9jb21taXQoKSBpcyBjYWxsZWQsCnRoZSBzdGF0 ZSB3aWxsIGJlIHJlc3RvcmVkIHdpdGggYWN0aXZlID09IGZhbHNlIHdoZW4gaXQgc2hvdWxkIGFj dHVhbGx5IGJlIHRydWUuCkJ1dCB0aGF0IHdvdWxkIGNhdXNlIGludGVsX2NydGMtPmNvbmZpZyB0 byBiZSBmcmVlZCwgc28geW91IG5lZWQgdG8KdXNlwqBpbnRlbF9jcnRjX2R1cGxpY2F0ZV9zdGF0 ZSgpLgoKPiArCWludGVsX2NydGMtPmNvbmZpZyA9IGNydGNfc3RhdGU7Cj4gKwo+ICsJaWYgKElT X0JST1hUT04oZGV2KSkKPiArCQlzdGF0dXMgPSBpbnRlbF9ieHRfdXBmcm9udF9saW5rX3RyYWlu KGludGVsX2RwLCBpbnRlbF9jcnRjKTsKPiArCQkvKiBPdGhlciBwbGF0Zm9ybXMgdXBmcm9udCBs aW5rIHRyYWluIGNhbGwgZ29lcyBoZXJlLi4qLwo+ICsKPiArCS8qIFJlc3RvcmUgdGhlIHNhdmVk IGNvbmZpZyAqLwo+ICsJaW50ZWxfY3J0Yy0+Y29uZmlnID0gdG1wX2NydGNfY29uZmlnOwo+ICsJ aW50ZWxfZW5jb2Rlci0+YmFzZS5jcnRjID0gY3J0Y19lbmFibGVkID8gY3J0YyA6IE5VTEw7Cj4g Kwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoY3J0Y19zdGF0ZS0+YmFzZS5zdGF0ZSk7CgpUaGlzIGRv ZXNuJ3QgYWN0dWFsbHkgcmUtZW5hYmxlcyB0aGUgY3J0YyBpZiBpZiB3YXMgZGlzYWJsZWQgaW4K aW50ZWxfZHBfdXBmcm9udF9jb21taXQoKS4gVGhpcyB3aWxsIHJlcXVpcmUgYW5vdGhlciBhdG9t aWMgb3BlcmF0aW9uLgpNYXliZSB0aGF0IGludGVsX2NydGNfYXRvbWljX2Rpc2FibGUoKSBzaG91 bGQganVzdCB0YWtlIGEgYm9vbCBzcGVjaWZ5aW5nIGlmIGl0CnNob3VsZCBvbiBvZiBvZmYuCgoK PiArCj4gK2V4aXRfZmFpbDoKPiArCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiArCQlkcm1fbW9k ZXNldF9iYWNrb2ZmKCZjdHgpOwo+ICsJCWdvdG8gcmV0cnk7Cj4gKwl9Cj4gKwlkcm1fbW9kZXNl dF9kcm9wX2xvY2tzKCZjdHgpOwo+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ ICsJcmV0dXJuIHN0YXR1czsKPiArfQo+ICsKPiDCoHN0YXRpYyB2b2lkCj4gwqBpbnRlbF9kcF9s b25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiDCoHsK PiBAQCAtNDU1OCw3ICs0NzIyLDcgQEAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yCj4gKmludGVsX2Nvbm5lY3RvcikKPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5kZXY7Cj4gwqAJZW51bSBkcm1fY29ubmVjdG9yX3N0YXR1cyBzdGF0dXM7 Cj4gwqAJZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBwb3dlcl9kb21haW47Cj4gLQli b29sIHJldDsKPiArCWJvb2wgcmV0LCBkb191cGZyb250X2xpbmtfdHJhaW47Cj4gwqAJdTggc2lu a19pcnFfdmVjdG9yOwo+IMKgCj4gwqAJcG93ZXJfZG9tYWluID0gaW50ZWxfZGlzcGxheV9wb3J0 X2F1eF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7Cj4gQEAgLTQ2MDQsNyArNDc2OCwxMSBA QCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiAqaW50ZWxfY29u bmVjdG9yKQo+IMKgCQlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rp b25fbXV0ZXgsIE5VTEwpOwo+IMKgCQlpbnRlbF9kcF9jaGVja19saW5rX3N0YXR1cyhpbnRlbF9k cCk7Cj4gwqAJCWRybV9tb2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9u X211dGV4KTsKPiAtCQlnb3RvIG91dDsKPiArCQkvKgo+ICsJCcKgKiBJZiB3ZSBhcmUgaGVyZSwg d2UgaGF2ZSAocmUpcmVhZCBEUENEIGFib3ZlIGFuZCBoZW5jZQo+ICsJCcKgKiBuZWVkIHRvIGRv IHVwZnJvbnQgbGluayB0cmFpbiBhZ2Fpbi4KPiArCQnCoCovCj4gKwkJZ290byB1cGZyb250OwoK V2UgY2FuIGF2b2lkIHRoaXMgYnkgbm90IG92ZXJ3cml0aW5nIGludGVsX2RwLT5kcGNkIGFzIEkg bWVudGlvbmVkIGFib3ZlLgoKCkFuZGVyCgo+IMKgCX0KPiDCoAo+IMKgCS8qCj4gQEAgLTQ2MzQs NiArNDgwMiwxNCBAQCBpbnRlbF9kcF9sb25nX3B1bHNlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IK PiAqaW50ZWxfY29ubmVjdG9yKQo+IMKgCQkJRFJNX0RFQlVHX0RSSVZFUigiQ1Agb3Igc2luayBz cGVjaWZpYyBpcnEKPiB1bmhhbmRsZWRcbiIpOwo+IMKgCX0KPiDCoAo+ICt1cGZyb250Ogo+ICsJ LyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwgaWYgaXQgaXMgYSBjb21wbGlhbmNlIHJl cXVlc3QgKi8KPiArCWRvX3VwZnJvbnRfbGlua190cmFpbiA9Cj4gKwkJaW50ZWxfZW5jb2Rlci0+ dHlwZSA9PSBJTlRFTF9PVVRQVVRfRElTUExBWVBPUlQgJiYKPiArCQlpbnRlbF9kcC0+Y29tcGxp YW5jZV90ZXN0X3R5cGUgIT0gRFBfVEVTVF9MSU5LX1RSQUlOSU5HOwo+ICsKPiArCWlmIChkb191 cGZyb250X2xpbmtfdHJhaW4gJiYgaW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKGNvbm5lY3Rv cikpCj4gKwkJc3RhdHVzID0gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7Cj4gwqBvdXQ6 Cj4gwqAJaWYgKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgewo+IMKgCQlp bnRlbF9kcF91bnNldF9lZGlkKGludGVsX2RwKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gaW5kZXggMjdiNWRjZC4uYmY5ODQ3MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o Cj4gQEAgLTEwODIsNiArMTA4Miw4IEBAIHZvaWQgaW50ZWxfZGRpX2Nsb2NrX2dldChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiDCoAkJCcKgc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnKTsKPiDCoHZvaWQgaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywgYm9vbCBzdGF0ZSk7Cj4gwqB1aW50MzJfdCBkZGlfc2lnbmFs X2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiAraW50IGludGVsX2J4dF91cGZy b250X2xpbmtfdHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiArCQkJCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjKTsKPiDCoAo+IMKgLyogaW50ZWxfZnJvbnRidWZmZXIuYyAqLwo+IMKg dm9pZCBpbnRlbF9mYl9vYmpfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+IEBAIC0xMjg0LDYgKzEyODYsOSBAQCBib29sIGludGVsX2RwX2luaXRfY29ubmVjdG9y KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQKPiAqaW50ZWxfZGlnX3BvcnQsCj4gwqAJCQnCoMKg wqDCoMKgc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKTsKPiDCoHZvaWQg aW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4gwqAJ CQnCoMKgwqDCoMKgwqBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp Owo+ICt2b2lkIGludGVsX2RwX3VwZGF0ZV9kcGNkX3BhcmFtcyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPiArYm9vbCBpbnRlbF9kcF9nZXRfbGlua19yZXRyeV9wYXJhbXMoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwKPiArCQkJCXVpbnQ4X3QgKmxhbmVfY291bnQsIHVpbnQ4X3QgKmxp bmtfYncpOwo+IMKgdm9pZCBpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+IMKgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCk7Cj4gwqB2b2lkIGludGVsX2RwX3NpbmtfZHBtcyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLCBpbnQgbW9kZSk7Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=