From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v18 5/6] drm/i915/dp: Enable Upfront link training on DDI platforms Date: Thu, 29 Sep 2016 15:15:17 +0300 Message-ID: <87wphulx62.fsf@intel.com> References: <1473984244-4349-6-git-send-email-manasi.d.navare@intel.com> <1474409056-6412-1-git-send-email-manasi.d.navare@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 ESMTPS id 230C46E06C for ; Thu, 29 Sep 2016 12:15:26 +0000 (UTC) In-Reply-To: <1474409056-6412-1-git-send-email-manasi.d.navare@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Manasi Navare , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAyMSBTZXAgMjAxNiwgTWFuYXNpIE5hdmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVs LmNvbT4gd3JvdGU6Cj4gVG8gc3VwcG9ydCBVU0IgdHlwZSBDIGFsdGVybmF0ZSBEUCBtb2RlLCB0 aGUgZGlzcGxheSBkcml2ZXIgbmVlZHMgdG8KPiBrbm93IHRoZSBudW1iZXIgb2YgbGFuZXMgcmVx dWlyZWQgYnkgdGhlIERQIHBhbmVsIGFzIHdlbGwgYXMgbnVtYmVyCj4gb2YgbGFuZXMgdGhhdCBj YW4gYmUgc3VwcG9ydGVkIGJ5IHRoZSB0eXBlLUMgY2FibGUuIFNvbWV0aW1lcywgdGhlCj4gdHlw ZS1DIGNhYmxlIG1heSBsaW1pdCB0aGUgYmFuZHdpZHRoIGV2ZW4gaWYgUGFuZWwgY2FuIHN1cHBv cnQKPiBtb3JlIGxhbmVzLiBUbyBhZGRyZXNzIHRoZXNlIHNjZW5hcmlvcyB3ZSBuZWVkIHRvIHRy YWluIHRoZSBsaW5rIGJlZm9yZQo+IG1vZGVzZXQuIFRoaXMgdXBmcm9udCBsaW5rIHRyYWluaW5n IGNhY2hlcyB0aGUgdmFsdWVzIG9mIG1heCBsaW5rIHJhdGUKPiBhbmQgbWF4IGxhbmUgY291bnQg dGhhdCBnZXQgdXNlZCBsYXRlciBkdXJpbmcgbW9kZXNldC4gVXBmcm9udCBsaW5rCj4gdHJhaW5p bmcgZG9lcyBub3QgY2hhbmdlIGFueSBIVyBzdGF0ZSwgdGhlIGxpbmsgaXMgZGlzYWJsZWQgYW5k IFBMTAo+IHZhbHVlcyBhcmUgcmVzZXQgdG8gcHJldmlvdXMgdmFsdWVzIGFmdGVyIHVwZnJvbnQg bGluayB0YXJpbmluZyBzbwo+IHRoYXQgc3Vic2VxdWVudCBtb2Rlc2V0IGlzIG5vdCBhd2FyZSBv ZiB0aGVzZSBjaGFuZ2VzLgoKU29tZSBvZiB0aGUgY29uY2VybnMgYW5kIHF1ZXN0aW9ucyBJJ3Zl IGdhdGhlcmVkIGFib3V0IHRoZSB1cGZyb250IGxpbmsKdHJhaW5pbmc6CgoqIFdoYXQgaWYgdGhl IHVzZXJzcGFjZSBoYXNuJ3QgZGlzYWJsZWQgdGhlIGNydGMgYnkgdGhlIHRpbWUgd2UgZ2V0IHRo ZQogIGhvdHBsdWc/IFVwZnJvbnQgbGluayB0cmFpbmluZyBqdXN0IGdvZXMgYWhlYWQgYW5kIG1l c3NlcyB3aXRoIHRoYXQKICBzdGF0ZS4KCiogT25lIG9mIHRoZSBwb3RlbnRpYWwgYmVuZWZpdHMg b2YgdXBmcm9udCBsaW5rIHRyYWluaW5nIGlzIHRoYXQgaXQKICBjb3VsZCBtYWtlIHRoZSBob3Rw bHVnIGZhc3RlciBieSBkb2luZyB0aGUgbGluayB0cmFpbmluZyBiZWZvcmUgdGhlCiAgdXNlcnNw YWNlIGV2ZW4gYXNrcyBmb3IgYSBtb2Rlc2V0LiBIb3dldmVyLCBJSVVDLCB0aGUgcGF0Y2ggbm93 IGRvZXMKICB0aGUgdXBmcm9udCBsaW5rIHRyYWluaW5nLCBkaXNhYmxlcyB0aGUgbGluaywgYW5k IHRoZW4gZG9lcyBsaW5rCiAgdHJhaW5pbmcgYWdhaW4gYXQgbW9kZXNldC4gSXMgdGhhdCByaWdo dD8gU28gaXQgY2FuIGFjdHVhbGx5IG1ha2UgdGhlCiAgbGluayB0cmFpbmluZyBzbG93ZXI/IChP biB0aGUgcGx1cyBzaWRlLCB0aGlzIGF2b2lkcyB0aGUgcHJvYmxlbSBvZgogIGxlYXZpbmcgdGhl IGxpbmsgdXAgYW5kIHJ1bm5pbmcgaWYgdGhlcmUgaXNuJ3QgYSB1c2Vyc3BhY2UgcmVzcG9uZGlu ZwogIHRvIGhvdHBsdWcgb3IgdXNlcnNwYWNlIG5ldmVyIGFza3MgZm9yIGEgbW9kZXNldC4pCgoq IEFub3RoZXIgYmVuZWZpdCBvZiB1cGZyb250IGxpbmsgdHJhaW5pbmcgaXMgdGhhdCB3ZSBjYW4g cHJ1bmUgdGhlCiAgbW9kZXMgYWNjb3JkaW5nIHRvIHdoYXQgdGhlIGxpbmsgY2FuIGFjdHVhbGx5 IGRvLCBiZWZvcmUKICBtb2Rlc2V0LiBIb3dldmVyLCB0aGlzIHN0aWxsIGRvZXNuJ3QgaGVscCB0 aGUgY2FzZSBvZiBsaW5rIGRlZ3JhZGluZwogIGR1cmluZyBvcGVyYXRpb24uIChJIGFtIG5vdCBz dXJlIGhvdyBtdWNoIHdlIHJlYWxseSBjYXJlIGFib3V0IHRoaXMsCiAgYnV0IGl0IHdvdWxkIHNl ZW0gdGhhdCB0aGUgYXBwcm9hY2ggZGVzY3JpYmVkIGluIG15IG90aGVyIG1haWwgbWlnaHQKICBz b2x2ZSBpdC4pCgoqIFVwZnJvbnQgbGluayB0cmFpbmluZyBpcyBvbmx5IGVuYWJsZWQgZm9yIERE SSBwbGF0Zm9ybXMsIGR1cGxpY2F0aW5nCiAgcGFydHMgb2YgbGluayB0cmFpbmluZyBhbmQgYXBw YXJlbnRseSBwYXJ0cyBvZiBtb2Rlc2V0IGZvciBEREksIGFuZAogIGRpdmVyZ2luZyB0aGUgbGlu ayB0cmFpbmluZyBjb2RlIGZvciBEREkgYW5kIG5vbi1EREkgcGxhdGZvcm1zLiBXaXRoCiAgdGhl IGN1cnJlbnQgYXBwcm9hY2gsIHRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBydW4gRFAgY29t cGxpYW5jZQogIHRlc3RzIGZvciBub24tRERJIHBsYXRmb3Jtcy4KCiogSG93IGRvZXMgdXBmcm9u dCBsaW5rIHRyYWluaW5nIGludGVyYWN0IHdpdGggYXRvbWljIGFuZCBmYXN0Ym9vdD8gL21lCiAg Y2x1ZWxlc3MuCgoqIFRoZXJlIGp1c3QgaXMgYSBzdWJqZWN0aXZlbHkgc2NhcnkgZmVlbGluZyB0 byB0aGUgY2hhbmdlLiBUaGUgRFAgbGluawogIHRyYWluaW5nIGNvZGUgaGFzIGJlZW4gcmlkZGxl ZCB3aXRoIHJlZ3Jlc3Npb25zIGluIHRoZSBwYXN0LCBhbmQgZXZlbgogIHRoZSBzbWFsbGVzdCBh bmQgaW5ub2NlbnQgc2VlbWluZyBjaGFuZ2VzIGhhdmUgY2F1c2VkIHRoZW0uIFRoaXMgaXMgYQog IGhhcmQgdGhpbmcgdG8ganVzdGlmeSwgY2FsbCBpdCBhIGd1dCBmZWVsaW5nIGlmIHlvdSB3aWxs LCBidXQgaGlzdG9yeQogIGhhcyB0YXVnaHQgbWUgbm90IHRvIGRpc21pc3MgdGhvc2UgaW5zdGlu Y3RzIHdpdGggYSBzaHJ1Zy4KCkFsbCBpbiBhbGwsIEknZCBsaWtlIHRvIGRlY291cGxlIGN1cnJl bnQgRFAgY29tcGxpYW5jZSBlZmZvcnRzIGZyb20KdXBmcm9udCBsaW5rIHRyYWluaW5nLgoKVmls bGUsIGZlZWwgZnJlZSB0byBjbGFyaWZ5IG9yIGFkZCB0byB0aGUgbGlzdC4KCgpCUiwKSmFuaS4K Cgo+Cj4gVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBwcmlvciB3b3JrIGRvbmUgYnkKPiBSLER1cmdh ZG9zcyA8ZHVyZ2Fkb3NzLnJAaW50ZWwuY29tPgo+Cj4gQ2hhbmdlcyBzaW5jZSB2MTc6Cj4gKiBS ZWJhc2VkIG9uIHRoZSBsYXRlc3QgbmlnaHRseQo+IENoYW5nZXMgc2luY2UgdjE2Ogo+ICogVXNl IEhBU19EREkgbWFjcm8gZm9yIGVuYWJsaW5nIHRoaXMgZmVhdHVyZSAoUm9kcmlnbyBWaXZpKQo+ ICogRml4IHNvbWUgdW5uZWNlc3NhcnkgcmVtb3ZhbHMvY2hhbmdlcyBkdWUgdG8gcmViYXNlIChS b2RyaWdvIFZpdmkpCj4KPiBDaGFuZ2VzIHNpbmNlIHYxNToKPiAqIFNwbGl0IHRoaXMgcGF0Y2gg aW50byB0d28gcGF0Y2hlcyAtIG9uZSB3aXRoIGZ1bmN0aW9uYWwKPiBjaGFuZ2VzIHRvIGVuYWJs ZSB1cGZyb250IGFuZCBvdGhlciB3aXRoIG1vdmluZyB0aGUgZXhpc3RpbmcKPiBmdW5jdGlvbnMg YXJvdW5kIHNvIHRoYXQgdGhleSBjYW4gYmUgdXNlZCBmb3IgdXBmcm9udCAoSmFuaSBOaWt1bGEp Cj4gKiBDbGVhbmVkIHVwIHRoZSBjb21taXQgbWVzc2FnZQo+Cj4gU2lnbmVkLW9mZi1ieTogRHVy Z2Fkb3NzIFIgPGR1cmdhZG9zcy5yQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBKaW0gQnJp ZGUgPGppbS5icmlkZUBsaW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogTWFuYXNpIE5h dmFyZSA8bWFuYXNpLmQubmF2YXJlQGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGRpLmMgICAgICAgICAgICAgIHwgIDIxICsrLQo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgfCAxOTAgKysrKysrKysrKysrKysrKysr KysrKysrKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5j IHwgICAxIC0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgICAg IHwgIDE0ICstCj4gIDQgZmlsZXMgY2hhbmdlZCwgMjE4IGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IGluZGV4IDA5MzAzOGMuLjhlNTI1 MDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+IEBAIC0xNjc2LDcgKzE2NzYsOCBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJlX2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiAgCXBsbC0+Y29uZmlnLmNydGNfbWFzayA9IDA7Cj4gIAo+ICAJLyogSWYg TGluayBUcmFpbmluZyBmYWlscywgc2VuZCBhIHVldmVudCB0byBnZW5lcmF0ZSBhIGhvdHBsdWcg Ki8KPiAtCWlmICghaW50ZWxfZGRpX2xpbmtfdHJhaW4oaW50ZWxfZHAsIGxpbmtfcmF0ZSwgbGFu ZV9jb3VudCwgbGlua19tc3QpKQo+ICsJaWYgKCFpbnRlbF9kZGlfbGlua190cmFpbihpbnRlbF9k cCwgbGlua19yYXRlLCBsYW5lX2NvdW50LCBsaW5rX21zdCwKPiArCQkJCSAgZmFsc2UpKQo+ICAJ CWRybV9rbXNfaGVscGVyX2hvdHBsdWdfZXZlbnQoZW5jb2Rlci0+YmFzZS5kZXYpOwo+ICAJcGxs LT5jb25maWcgPSB0bXBfcGxsX2NvbmZpZzsKPiAgfQo+IEBAIC0yNDY0LDcgKzI0NjUsNyBAQCBp bnRlbF9kZGlfZ2V0X2xpbmtfZHBsbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgY2xv Y2spCj4gIAo+ICBib29sCj4gIGludGVsX2RkaV9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsIGludCBtYXhfbGlua19yYXRlLAo+IC0JCSAgICAgdWludDhfdCBtYXhfbGFuZV9j b3VudCwgYm9vbCBsaW5rX21zdCkKPiArCQkgICAgIHVpbnQ4X3QgbWF4X2xhbmVfY291bnQsIGJv b2wgbGlua19tc3QsIGJvb2wgaXNfdXBmcm9udCkKPiAgewo+ICAJc3RydWN0IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yID0gaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiAgCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gY29ubmVjdG9yLT5lbmNvZGVyOwo+IEBAIC0yNTEz LDYgKzI1MTQsNyBAQCBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKPiAgCQkJcGxsLT5mdW5jcy5kaXNhYmxlKGRldl9wcml2 LCBwbGwpOwo+ICAJCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ICAJCX0KPiArCj4g IAkJaWYgKHJldCkgewo+ICAJCQlEUk1fREVCVUdfS01TKCJMaW5rIFRyYWluaW5nIHN1Y2Nlc3Nm dWwgYXQgbGluayByYXRlOiAlZCBsYW5lOiAlZFxuIiwKPiAgCQkJCSAgICAgIGxpbmtfcmF0ZSwg bGFuZV9jb3VudCk7Cj4gQEAgLTI1MjIsNiArMjUyNCwyMSBAQCBpbnRlbF9kZGlfbGlua190cmFp bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKPiAgCj4gIAlp bnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICAKPiArCWlmIChpc191cGZyb250 KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiVXBmcm9udCBsaW5rIHRyYWluICVzOiBsaW5rX2Nsb2Nr OiVkIGxhbmVzOiVkXG4iLAo+ICsJCQkgICAgICByZXQgPyAiUGFzc2VkIiA6ICJGYWlsZWQiLAo+ ICsJCQkgICAgICBsaW5rX3JhdGUsIGxhbmVfY291bnQpOwo+ICsJCS8qIERpc2FibGUgcG9ydCBm b2xsb3dlZCBieSBQTEwgZm9yIG5leHQgcmV0cnkvY2xlYW4gdXAgKi8KPiArCQlpbnRlbF9kZGlf cG9zdF9kaXNhYmxlKGVuY29kZXIsIE5VTEwsIE5VTEwpOwo+ICsJCXBsbC0+ZnVuY3MuZGlzYWJs ZShkZXZfcHJpdiwgcGxsKTsKPiArCQlwbGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ICsJ CWlmIChyZXQpIHsKPiArCQkJLyogU2F2ZSB0aGUgdXBmcm9udCB2YWx1ZXMgKi8KPiArCQkJaW50 ZWxfZHAtPm1heF9sYW5lc191cGZyb250ID0gbGFuZV9jb3VudDsKPiArCQkJaW50ZWxfZHAtPm1h eF9saW5rX3JhdGVfdXBmcm9udCA9IGxpbmtfcmF0ZTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICAJaWYg KCFsYW5lX2NvdW50KQo+ICAJCURSTV9FUlJPUigiTGluayBUcmFpbmluZyBGYWlsZWRcbiIpOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCA4ZDlhOGFiLi5hMDU4ZDVkIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTE1MywxMiArMTUzLDIxIEBAIGludGVsX2Rw X21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAgKmludGVsX2RwKQo+ICBzdGF0aWMgdTggaW50 ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9y dChpbnRlbF9kcCk7Cj4gLQl1OCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiArCXU4IHRlbXAsIHNv dXJjZV9tYXgsIHNpbmtfbWF4Owo+ICAKPiAgCXNvdXJjZV9tYXggPSBpbnRlbF9kaWdfcG9ydC0+ bWF4X2xhbmVzOwo+ICAJc2lua19tYXggPSBkcm1fZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHAt PmRwY2QpOwo+ICAKPiAtCXJldHVybiBtaW4oc291cmNlX21heCwgc2lua19tYXgpOwo+ICsJdGVt cCA9IG1pbihzb3VyY2VfbWF4LCBzaW5rX21heCk7Cj4gKwo+ICsJLyoKPiArCSAqIExpbWl0IG1h eCBsYW5lcyB3LnIudCB0byB0aGUgbWF4IHZhbHVlIGZvdW5kCj4gKwkgKiB1c2luZyBVcGZyb250 IGxpbmsgdHJhaW5pbmcgYWxzby4KPiArCSAqLwo+ICsJaWYgKGludGVsX2RwLT5tYXhfbGFuZXNf dXBmcm9udCkKPiArCQlyZXR1cm4gbWluKHRlbXAsIGludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9u dCk7Cj4gKwllbHNlCj4gKwkJcmV0dXJuIHRlbXA7Cj4gIH0KPiAgCj4gIC8qCj4gQEAgLTE5MCw2 ICsxOTksNDIgQEAgaW50ZWxfZHBfbWF4X2RhdGFfcmF0ZShpbnQgbWF4X2xpbmtfY2xvY2ssIGlu dCBtYXhfbGFuZXMpCj4gIAlyZXR1cm4gKG1heF9saW5rX2Nsb2NrICogbWF4X2xhbmVzICogOCkg LyAxMDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBpbnRlbF9kcF91cGZyb250X2NydGNfZGlzYWJs ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiArCQkJCQkgc3RydWN0IGRybV9tb2Rlc2V0X2Fj cXVpcmVfY3R4ICpjdHgsCj4gKwkJCQkJIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKwlpbnQgcmV0Owo+ ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ICsJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKmNydGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFz ZS5kZXY7Cj4gKwllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4gKwo+ICsJc3RhdGUgPSBk cm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7Cj4gKwlpZiAoIXN0YXRlKQo+ICsJCXJldHVybiAt RU5PTUVNOwo+ICsKPiArCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKPiArCj4gKwljcnRjX3N0 YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCWlmIChJ U19FUlIoY3J0Y19zdGF0ZSkpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICsJ CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwkJcmV0dXJuIHJldDsKPiArCX0KPiAr Cj4gKwlEUk1fREVCVUdfS01TKCIlc2FibGluZyBjcnRjICVjICVzIHVwZnJvbnQgbGluayB0cmFp blxuIiwKPiArCQkJZW5hYmxlID8gIkVuIiA6ICJEaXMiLAo+ICsJCQlwaXBlX25hbWUocGlwZSks Cj4gKwkJCWVuYWJsZSA/ICJhZnRlciIgOiAiYmVmb3JlIik7Cj4gKwo+ICsJY3J0Y19zdGF0ZS0+ YmFzZS5hY3RpdmUgPSBlbmFibGU7Cj4gKwlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7 Cj4gKwlpZiAocmV0KQo+ICsJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7Cj4gKwo+ICsJ cmV0dXJuIHJldDsKPiArfQo+ICsKPiAgc3RhdGljIGludAo+ICBpbnRlbF9kcF9kb3duc3RyZWFt X21heF9kb3RjbG9jayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gQEAgLTI4MSw2 ICszMjYsMTcgQEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21tb25fcmF0ZXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKPiAgCWludCBzb3VyY2VfbGVuLCBzaW5rX2xlbjsKPiAgCj4gIAlzaW5r X2xlbiA9IGludGVsX2RwX3NpbmtfcmF0ZXMoaW50ZWxfZHAsICZzaW5rX3JhdGVzKTsKPiArCj4g KwkvKiBDYXAgc2luayByYXRlcyB3LnIudCB1cGZyb250IHZhbHVlcyAqLwo+ICsJaWYgKGludGVs X2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpIHsKPiArCQlpbnQgbGVuID0gc2lua19sZW4gLSAx Owo+ICsKPiArCQl3aGlsZSAobGVuID4gMCAmJiBzaW5rX3JhdGVzW2xlbl0gPgo+ICsJCSAgICAg ICBpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250KQo+ICsJCQlsZW4tLTsKPiArCQlzaW5r X2xlbiA9IGxlbiArIDE7Cj4gKwl9Cj4gKwo+ICAJc291cmNlX2xlbiA9IGludGVsX2RwX3NvdXJj ZV9yYXRlcyhpbnRlbF9kcCwgJnNvdXJjZV9yYXRlcyk7Cj4gIAo+ICAJcmV0dXJuIGludGVyc2Vj dF9yYXRlcyhzb3VyY2VfcmF0ZXMsIHNvdXJjZV9sZW4sCj4gQEAgLTI4OCw2ICszNDQsOTIgQEAg c3RhdGljIGludCBpbnRlbF9kcF9jb21tb25fcmF0ZXMoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPiAgCQkJICAgICAgIGNvbW1vbl9yYXRlcyk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIGlu dGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICt7 Cj4gKwlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9IGRwX3RvX2Rp Z19wb3J0KGludGVsX2RwKTsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVy ID0gJmludGVsX2RpZ19wb3J0LT5iYXNlOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2VuY29kZXItPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gdG9faTkxNShkZXYpOwo+ICsJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAqY29uZmlnID0g JmRldi0+bW9kZV9jb25maWc7Cj4gKwlzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4 Owo+ICsJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBOVUxMOwo+ICsJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGw7Cj4gKwlzdHJ1 Y3QgaW50ZWxfc2hhcmVkX2RwbGxfY29uZmlnIHRtcF9wbGxfY29uZmlnOwo+ICsJYm9vbCBkaXNh YmxlX2RwbGwgPSBmYWxzZTsKPiArCWludCByZXQ7Cj4gKwlib29sIGRvbmUgPSBmYWxzZSwgaGFz X21zdCA9IGZhbHNlOwo+ICsJdWludDhfdCBtYXhfbGFuZXM7Cj4gKwlpbnQgY29tbW9uX3JhdGVz W0RQX01BWF9TVVBQT1JURURfUkFURVNdID0ge307Cj4gKwlpbnQgY29tbW9uX2xlbjsKPiArCWVu dW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ICsKPiArCXBvd2Vy X2RvbWFpbiA9IGludGVsX2Rpc3BsYXlfcG9ydF9wb3dlcl9kb21haW4oaW50ZWxfZW5jb2Rlcik7 Cj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgcG93ZXJfZG9tYWluKTsKPiAr Cj4gKwljb21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCBjb21tb25f cmF0ZXMpOwo+ICsJbWF4X2xhbmVzID0gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHAp Owo+ICsJaWYgKFdBUk5fT04oY29tbW9uX2xlbiA8PSAwKSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiAr Cj4gKwlkcm1fbW9kZXNldF9hY3F1aXJlX2luaXQoJmN0eCwgMCk7Cj4gK3JldHJ5Ogo+ICsJcmV0 ID0gZHJtX21vZGVzZXRfbG9jaygmY29uZmlnLT5jb25uZWN0aW9uX211dGV4LCAmY3R4KTsKPiAr CWlmIChyZXQpCj4gKwkJZ290byBleGl0X2ZhaWw7Cj4gKwo+ICsJaWYgKGludGVsX2VuY29kZXIt PmJhc2UuY3J0Yykgewo+ICsJCWNydGMgPSBpbnRlbF9lbmNvZGVyLT5iYXNlLmNydGM7Cj4gKwo+ ICsJCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCAmY3R4KTsKPiArCQlpZiAo cmV0KQo+ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiArCj4gKwkJcmV0ID0gZHJtX21vZGVzZXRfbG9j aygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsICZjdHgpOwo+ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8g ZXhpdF9mYWlsOwo+ICsKPiArCQlpbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAr CQlwbGwgPSBpbnRlbF9jcnRjLT5jb25maWctPnNoYXJlZF9kcGxsOwo+ICsJCWRpc2FibGVfZHBs bCA9IHRydWU7Cj4gKwkJaGFzX21zdCA9IGludGVsX2NydGNfaGFzX3R5cGUoaW50ZWxfY3J0Yy0+ Y29uZmlnLAo+ICsJCQkJCSAgICAgIElOVEVMX09VVFBVVF9EUF9NU1QpOwo+ICsJCXJldCA9IGlu dGVsX2RwX3VwZnJvbnRfY3J0Y19kaXNhYmxlKGludGVsX2NydGMsICZjdHgsIGZhbHNlKTsKPiAr CQlpZiAocmV0KQo+ICsJCQlnb3RvIGV4aXRfZmFpbDsKPiArCX0KPiArCj4gKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+ZHBsbF9sb2NrKTsKPiArCWlmIChkaXNhYmxlX2RwbGwpIHsKPiArCQkvKiBD bGVhciB0aGUgUExMIGNvbmZpZyBzdGF0ZSAqLwo+ICsJCXRtcF9wbGxfY29uZmlnID0gcGxsLT5j b25maWc7Cj4gKwkJcGxsLT5jb25maWcuY3J0Y19tYXNrID0gMDsKPiArCX0KPiArCj4gKwlkb25l ID0gaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbihpbnRlbF9kcCwKPiArCQkJCQkgICAgY29t bW9uX3JhdGVzW2NvbW1vbl9sZW4tMV0sCj4gKwkJCQkJICAgIG1heF9sYW5lcywKPiArCQkJCQkg ICAgaGFzX21zdCwKPiArCQkJCQkgICAgdHJ1ZSk7Cj4gKwlpZiAoZGlzYWJsZV9kcGxsKQo+ICsJ CXBsbC0+Y29uZmlnID0gdG1wX3BsbF9jb25maWc7Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+ZHBsbF9sb2NrKTsKPiArCj4gKwlpZiAoY3J0YykKPiArCQlyZXQgPSBpbnRlbF9kcF91 cGZyb250X2NydGNfZGlzYWJsZShpbnRlbF9jcnRjLCAmY3R4LCB0cnVlKTsKPiArCj4gK2V4aXRf ZmFpbDoKPiArCWlmIChyZXQgPT0gLUVERUFETEspIHsKPiArCQlkcm1fbW9kZXNldF9iYWNrb2Zm KCZjdHgpOwo+ICsJCWdvdG8gcmV0cnk7Cj4gKwl9Cj4gKwlkcm1fbW9kZXNldF9kcm9wX2xvY2tz KCZjdHgpOwo+ICsJZHJtX21vZGVzZXRfYWNxdWlyZV9maW5pKCZjdHgpOwo+ICsJaW50ZWxfZGlz cGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIHBvd2VyX2RvbWFpbik7Cj4gKwlyZXR1cm4gZG9uZTsK PiArfQo+ICsKPiAgc3RhdGljIGVudW0gZHJtX21vZGVfc3RhdHVzCj4gIGludGVsX2RwX21vZGVf dmFsaWQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkgICAgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKm1vZGUpCj4gQEAgLTMxMSw2ICs0NTMsMTkgQEAgaW50ZWxfZHBfbW9k ZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICAJCXRhcmdldF9jbG9j ayA9IGZpeGVkX21vZGUtPmNsb2NrOwo+ICAJfQo+ICAKPiArCWlmIChpbnRlbF9kcC0+dXBmcm9u dF9saW5rX3RyYWluICYmICFpbnRlbF9kcC0+dXBmcm9udF9kb25lKSB7Cj4gKwkJYm9vbCBkb191 cGZyb250X2xpbmtfdHJhaW47Cj4gKwkJLyogRG8gbm90IGRvIHVwZnJvbnQgbGluayB0cmFpbiwg aWYgaXQgaXMgYSBjb21wbGlhbmNlCj4gKwkJICogcmVxdWVzdAo+ICsJCSAqLwo+ICsJCWRvX3Vw ZnJvbnRfbGlua190cmFpbiA9ICFpbnRlbF9kcC0+dXBmcm9udF9kb25lICYmCj4gKwkJCShpbnRl bF9kcC0+Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0KPiArCQkJIERQX1RFU1RfTElOS19UUkFJTklO Ryk7Cj4gKwo+ICsJCWlmIChkb191cGZyb250X2xpbmtfdHJhaW4pCj4gKwkJCWludGVsX2RwLT51 cGZyb250X2RvbmUgPSBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oaW50ZWxfZHApOwo+ICsJ fQo+ICsKPiAgCW1heF9saW5rX2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9k cCk7Cj4gIAltYXhfbGFuZXMgPSBpbnRlbF9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcCk7Cj4g IAo+IEBAIC0xNDk5LDYgKzE2NTQsOSBAQCBpbnRlbF9kcF9tYXhfbGlua19yYXRlKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpbnQgcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU10g PSB7fTsKPiAgCWludCBsZW47Cj4gIAo+ICsJaWYgKGludGVsX2RwLT5tYXhfbGlua19yYXRlX3Vw ZnJvbnQpCj4gKwkJcmV0dXJuIGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQ7Cj4gKwo+ ICAJbGVuID0gaW50ZWxfZHBfY29tbW9uX3JhdGVzKGludGVsX2RwLCByYXRlcyk7Cj4gIAlpZiAo V0FSTl9PTihsZW4gPD0gMCkpCj4gIAkJcmV0dXJuIDE2MjAwMDsKPiBAQCAtMTY0NCw2ICsxODAy LDIxIEBAIGludGVsX2RwX2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ICAJZm9yICg7IGJwcCA+PSA2KjM7IGJwcCAtPSAyKjMpIHsKPiAgCQltb2RlX3JhdGUg PSBpbnRlbF9kcF9saW5rX3JlcXVpcmVkKGFkanVzdGVkX21vZGUtPmNydGNfY2xvY2ssCj4gIAkJ CQkJCSAgIGJwcCk7Cj4gKwo+ICsJCWlmICghaXNfZWRwKGludGVsX2RwKSAmJiBpbnRlbF9kcC0+ dXBmcm9udF9kb25lKSB7Cj4gKwkJCWNsb2NrID0gbWF4X2Nsb2NrOwo+ICsJCQlsYW5lX2NvdW50 ID0gaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250Owo+ICsJCQlsaW5rX2Nsb2NrID0gaW50ZWxf ZHAtPm1heF9saW5rX3JhdGVfdXBmcm9udDsKPiArCQkJbGlua19hdmFpbCA9IGludGVsX2RwX21h eF9kYXRhX3JhdGUobGlua19jbG9jaywKPiArCQkJCQkJCSAgICBsYW5lX2NvdW50KTsKPiArCQkJ bW9kZV9yYXRlID0gaW50ZWxfZHBfbGlua19yZXF1aXJlZChhZGp1c3RlZF9tb2RlLT5jcnRjX2Ns b2NrLAo+ICsJCQkJCQkJICAgYnBwKTsKPiArCQkJaWYgKG1vZGVfcmF0ZSA8PSBsaW5rX2F2YWls KQo+ICsJCQkJZ290byBmb3VuZDsKPiArCQkJZWxzZQo+ICsJCQkJY29udGludWU7Cj4gKwkJfQo+ ICsKPiAgCQljbG9jayA9IG1heF9jbG9jazsKPiAgCQlsYW5lX2NvdW50ID0gbWF4X2xhbmVfY291 bnQ7Cj4gIAkJbGlua19jbG9jayA9IGNvbW1vbl9yYXRlc1tjbG9ja107Cj4gQEAgLTE2NzIsNyAr MTg0NSw2IEBAIGZvdW5kOgo+ICAJfQo+ICAKPiAgCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0g bGFuZV9jb3VudDsKPiAtCj4gIAlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBicHA7Cj4gIAlwaXBl X2NvbmZpZy0+cG9ydF9jbG9jayA9IGNvbW1vbl9yYXRlc1tjbG9ja107Cj4gIAo+IEBAIC00NDUz LDggKzQ2MjUsMTIgQEAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICppbnRlbF9jb25uZWN0b3IpCj4gIAo+ICBvdXQ6Cj4gIAlpZiAoKHN0YXR1cyAhPSBjb25uZWN0 b3Jfc3RhdHVzX2Nvbm5lY3RlZCkgJiYKPiAtCSAgICAoaW50ZWxfZHAtPmlzX21zdCA9PSBmYWxz ZSkpCj4gKwkgICAgKGludGVsX2RwLT5pc19tc3QgPT0gZmFsc2UpKSB7Cj4gIAkJaW50ZWxfZHBf dW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gKwkJaW50ZWxfZHAtPnVwZnJvbnRfZG9uZSA9IGZhbHNl Owo+ICsJCWludGVsX2RwLT5tYXhfbGFuZXNfdXBmcm9udCA9IDA7Cj4gKwkJaW50ZWxfZHAtPm1h eF9saW5rX3JhdGVfdXBmcm9udCA9IDA7Cj4gKwl9Cj4gIAo+ICAJaW50ZWxfZGlzcGxheV9wb3dl cl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwo+ICAJcmV0dXJuOwo+IEBAIC01Njk4 LDYgKzU4NzQsMTIgQEAgaW50ZWxfZHBfaW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0 YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsCj4gIAlpZiAodHlwZSA9PSBEUk1fTU9ERV9DT05ORUNU T1JfZURQKQo+ICAJCWludGVsX2VuY29kZXItPnR5cGUgPSBJTlRFTF9PVVRQVVRfRURQOwo+ICAK PiArCS8qIEluaXRpYWxpemUgdXBmcm9udCBsaW5rIHRyYWluaW5nIHZmdW5jIGZvciBEUCAqLwo+ ICsJaWYgKGludGVsX2VuY29kZXItPnR5cGUgIT0gSU5URUxfT1VUUFVUX0VEUCkgewo+ICsJCWlm IChIQVNfRERJKGRldl9wcml2KSkKPiArCQkJaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiA9 IGludGVsX2RkaV9saW5rX3RyYWluOwo+ICsJfQo+ICsKPiAgCS8qIGVEUCBvbmx5IG9uIHBvcnQg QiBhbmQvb3IgQyBvbiB2bHYvY2h2ICovCj4gIAlpZiAoV0FSTl9PTigoSVNfVkFMTEVZVklFVyhk ZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgJiYKPiAgCQkgICAgaXNfZWRwKGludGVsX2RwKSAm JiBwb3J0ICE9IFBPUlRfQiAmJiBwb3J0ICE9IFBPUlRfQykpCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwX2xpbmtfdHJhaW5pbmcuYwo+IGluZGV4IDZlYjVlYjYuLjc4MmE5MTkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmlu Zy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfbGlua190cmFpbmluZy5j Cj4gQEAgLTMwNCw3ICszMDQsNiBAQCBpbnRlbF9kcF9saW5rX3RyYWluaW5nX2NoYW5uZWxfZXF1 YWxpemF0aW9uKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlpbnRlbF9kcF9zZXRfaWRs ZV9saW5rX3RyYWluKGludGVsX2RwKTsKPiAgCj4gIAlyZXR1cm4gaW50ZWxfZHAtPmNoYW5uZWxf ZXFfc3RhdHVzOwo+IC0KPiAgfQo+ICAKPiAgdm9pZCBpbnRlbF9kcF9zdG9wX2xpbmtfdHJhaW4o c3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGlu ZGV4IDBhZWIzMTcuLmZkZmMwYjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBA IC04ODcsNiArODg3LDEyIEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAllbnVtIGhkbWlfZm9yY2Vf YXVkaW8gZm9yY2VfYXVkaW87Cj4gIAlib29sIGxpbWl0ZWRfY29sb3JfcmFuZ2U7Cj4gIAlib29s IGNvbG9yX3JhbmdlX2F1dG87Cj4gKwo+ICsJLyogVXBmcm9udCBsaW5rIHRyYWluIHBhcmFtZXRl cnMgKi8KPiArCWludCBtYXhfbGlua19yYXRlX3VwZnJvbnQ7Cj4gKwl1aW50OF90IG1heF9sYW5l c191cGZyb250Owo+ICsJYm9vbCB1cGZyb250X2RvbmU7Cj4gKwo+ICAJdWludDhfdCBkcGNkW0RQ X1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiAgCXVpbnQ4X3QgcHNyX2RwY2RbRURQX1BTUl9SRUNFSVZF Ul9DQVBfU0laRV07Cj4gIAl1aW50OF90IGRvd25zdHJlYW1fcG9ydHNbRFBfTUFYX0RPV05TVFJF QU1fUE9SVFNdOwo+IEBAIC05NDQsNiArOTUwLDExIEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAkv KiBUaGlzIGlzIGNhbGxlZCBiZWZvcmUgYSBsaW5rIHRyYWluaW5nIGlzIHN0YXJ0ZXJkICovCj4g IAl2b2lkICgqcHJlcGFyZV9saW5rX3JldHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Owo+ICAKPiArCS8qIEZvciBVcGZyb250IGxpbmsgdHJhaW5pbmcgKi8KPiArCWJvb2wgKCp1cGZy b250X2xpbmtfdHJhaW4pKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludCBjbG9jaywKPiAr CQkJCSAgIHVpbnQ4X3QgbGFuZV9jb3VudCwgYm9vbCBsaW5rX21zdCwKPiArCQkJCSAgIGJvb2wg aXNfdXBmcm9udCk7Cj4gKwo+ICAJLyogRGlzcGxheXBvcnQgY29tcGxpYW5jZSB0ZXN0aW5nICov Cj4gIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwo+ICAJdW5zaWduZWQgbG9u ZyBjb21wbGlhbmNlX3Rlc3RfZGF0YTsKPiBAQCAtMTE2Niw3ICsxMTc3LDggQEAgdm9pZCBpbnRl bF9kZGlfY2xvY2tfZ2V0KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICB2b2lkIGlu dGVsX2RkaV9zZXRfdmNfcGF5bG9hZF9hbGxvYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGJvb2wg c3RhdGUpOwo+ICB1aW50MzJfdCBkZGlfc2lnbmFsX2xldmVscyhzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwKTsKPiAgYm9vbCBpbnRlbF9kZGlfbGlua190cmFpbihzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCBpbnQgbWF4X2xpbmtfcmF0ZSwKPiAtCQkJICB1aW50OF90IG1heF9sYW5lX2NvdW50 LCBib29sIGxpbmtfbXN0KTsKPiArCQkJICB1aW50OF90IG1heF9sYW5lX2NvdW50LCBib29sIGxp bmtfbXN0LAo+ICsJCQkgIGJvb2wgaXNfdXBmcm9udCk7Cj4gIHN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqaW50ZWxfZGRpX2dldF9saW5rX2RwbGwoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiAgCQkJCQkJICBpbnQgY2xvY2spOwo+ICB1bnNpZ25lZCBpbnQgaW50ZWxfZmJfYWxpZ25faGVp Z2h0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4g U291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=