From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH v2 14/14] drm/i915/dp/mst: Add support for upfront link training for DP MST Date: Thu, 08 Sep 2016 14:50:35 +0300 Message-ID: <1473335435.9143.0.camel@intel.com> References: <1472767699-31211-15-git-send-email-manasi.d.navare@intel.com> <1473207238-3490-5-git-send-email-manasi.d.navare@intel.com> <1473245611.28727.25.camel@intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80D746E012 for ; Thu, 8 Sep 2016 11:50:37 +0000 (UTC) In-Reply-To: <1473245611.28727.25.camel@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 UmV2aWV3ZWQtYnk6IE1pa2EgS2Fob2xhIDxtaWthLmthaG9sYUBpbnRlbC5jb20+CgpPbiBXZWQs IDIwMTYtMDktMDcgYXQgMTM6NTMgKzAzMDAsIE1pa2EgS2Fob2xhIHdyb3RlOgo+IE9uIFR1ZSwg MjAxNi0wOS0wNiBhdCAxNzoxMyAtMDcwMCwgTWFuYXNpIE5hdmFyZSB3cm90ZToKPiA+IAo+ID4g RnJvbTogSmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgo+ID4gCj4gPiBBZGQg dXBmcm9udCBsaW5rIHRyYWluaW5nIHRvIGludGVsX2RwX21zdF9tb2RlX3ZhbGlkKCkgc28gdGhh dCB3ZQo+ID4ga25vdwo+ID4gdG9wb2xvZ3kgY29uc3RyYWludHMgYmVmb3JlIHdlIHZhbGlkYXRl IHRoZSBsZWdhbGl0eSBvZiBtb2RlcyB0byBiZQo+ID4gY2hlY2tlZC4KPiA+IENhbGwgdGhlIGZ1 bmN0aW9uIHRoYXQgbG9vcHMgdGhyb3VnaCB0aGUgbGluayByYXRlcyBhbmQgbGFuZSBjb3VudHMK PiA+IHN0YXJ0aW5nIGZyb20gaGlnaGVzdCBzdXBwb3J0ZWQgbGluayByYXRlIGFuZCBsYW5lIGNv dW50IGZvcgo+ID4gdHJhaW5pbmcKPiA+IHRoZSBsaW5rIGluIGNvbXBsaWFuY2Ugd2l0aCBEUCBz cGVjCj4gPiAKPiA+IHYyOgo+ID4gKiBSZWJhc2VkIG9uIG5ldyByZXZpc2lvbiBvZiBsaW5rIHRy YWluaW5nIHBhdGNoIChNYW5hc2kgTmF2YXJlKQo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBNYW5h c2kgTmF2YXJlIDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTog SmltIEJyaWRlIDxqaW0uYnJpZGVAbGludXguaW50ZWwuY29tPgo+ID4gLS0tCj4gPiDCoGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmPCoMKgwqDCoMKgfMKgwqA5ICsrLS0tCj4gPiDCoGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jIHwgNzQKPiA+ICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0KPiA+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmjCoMKgwqDCoHzCoMKgMyArKwo+ID4gwqAzIGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlv bnMoKyksIDI1IGRlbGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gPiBpbmRleCA3Nzk0MTgwLi4wYzc2NzRmIDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHAuYwo+ID4gQEAgLTEzMSw3ICsxMzEsNyBAQCBzdGF0aWMgdm9pZCB2bHZfc3RlYWxfcG93ZXJf c2VxdWVuY2VyKHN0cnVjdAo+ID4gZHJtX2RldmljZSAqZGV2LAo+ID4gwqAJCQkJwqDCoMKgwqDC oMKgZW51bSBwaXBlIHBpcGUpOwo+ID4gwqBzdGF0aWMgdm9pZCBpbnRlbF9kcF91bnNldF9lZGlk KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gwqAKPiA+IC1zdGF0aWMgaW50Cj4gPiAr aW50Cj4gPiDCoGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcMKgwqAqaW50ZWxf ZHApCj4gPiDCoHsKPiA+IMKgCWludCBtYXhfbGlua19idyA9IGludGVsX2RwLT5kcGNkW0RQX01B WF9MSU5LX1JBVEVdOwo+ID4gQEAgLTE1MCw3ICsxNTAsNyBAQCBpbnRlbF9kcF9tYXhfbGlua19i dyhzdHJ1Y3QKPiA+IGludGVsX2RwwqDCoCppbnRlbF9kcCkKPiA+IMKgCXJldHVybiBtYXhfbGlu a19idzsKPiA+IMKgfQo+ID4gwqAKPiA+IC1zdGF0aWMgdTggaW50ZWxfZHBfbWF4X2xhbmVfY291 bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+ICt1OCBpbnRlbF9kcF9tYXhfbGFuZV9j b3VudChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ID4gwqB7Cj4gPiDCoAlzdHJ1Y3QgaW50 ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCA9Cj4gPiBkcF90b19kaWdfcG9ydChpbnRl bF9kcCk7Cj4gPiDCoAl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiA+IEBAIC0zMTIs OCArMzEyLDcgQEAgc3RhdGljIGludCBpbnRlcnNlY3RfcmF0ZXMoY29uc3QgaW50Cj4gPiAqc291 cmNlX3JhdGVzLCBpbnQgc291cmNlX2xlbiwKPiA+IMKgCXJldHVybiBrOwo+ID4gwqB9Cj4gPiDC oAo+ID4gLXN0YXRpYyBpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsCj4gPiAtCQkJCcKgaW50ICpjb21tb25fcmF0ZXMpCj4gPiAraW50IGludGVsX2Rw X2NvbW1vbl9yYXRlcyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQKPiA+ICpjb21tb25f cmF0ZXMpCj4gPiDCoHsKPiA+IMKgCWNvbnN0IGludCAqc291cmNlX3JhdGVzLCAqc2lua19yYXRl czsKPiA+IMKgCWludCBzb3VyY2VfbGVuLCBzaW5rX2xlbjsKPiA+IEBAIC0zMzYsNyArMzM1LDcg QEAgc3RhdGljIGludCBpbnRlbF9kcF9jb21tb25fcmF0ZXMoc3RydWN0Cj4gPiBpbnRlbF9kcAo+ ID4gKmludGVsX2RwLAo+ID4gwqAJCQnCoMKgwqDCoMKgwqDCoGNvbW1vbl9yYXRlcyk7Cj4gPiDC oH0KPiA+IMKgCj4gPiAtc3RhdGljIGJvb2wgaW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiArYm9vbCBpbnRlbF9kcF91cGZyb250X2xpbmtf dHJhaW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiA+IMKgewo+ID4gwqAJc3RydWN0IGlu dGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQo+ID4gZHBfdG9fZGlnX3BvcnQoaW50 ZWxfZHApOwo+ID4gwqAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmaW50 ZWxfZGlnX3BvcnQtCj4gPiA+YmFzZTsKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcF9tc3QuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9t c3QuYwo+ID4gaW5kZXggNTRhOWQ3Ni4uOThkNDVhNCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcF9tc3QuYwo+ID4gQEAgLTQxLDIxICs0MSwzMCBAQCBzdGF0aWMgYm9vbCBpbnRl bF9kcF9tc3RfY29tcHV0ZV9jb25maWcoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNvZGVy LAo+ID4gwqAJaW50IGJwcDsKPiA+IMKgCWludCBsYW5lX2NvdW50LCBzbG90czsKPiA+IMKgCWNv bnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9tb2RlID0KPiA+ICZwaXBlX2Nv bmZpZy0KPiA+ID4gCj4gPiA+IGJhc2UuYWRqdXN0ZWRfbW9kZTsKPiA+IC0JaW50IG1zdF9wYm47 Cj4gPiArCWludCBtc3RfcGJuLCBjb21tb25fbGVuOwo+ID4gKwlpbnQgY29tbW9uX3JhdGVzW0RQ X01BWF9TVVBQT1JURURfUkFURVNdID0ge307Cj4gPiDCoAo+ID4gwqAJcGlwZV9jb25maWctPmRw X2VuY29kZXJfaXNfbXN0ID0gdHJ1ZTsKPiA+IMKgCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29k ZXIgPSBmYWxzZTsKPiA+IC0JYnBwID0gMjQ7Cj4gPiArCj4gPiDCoAkvKgo+ID4gLQnCoCogZm9y IE1TVCB3ZSBhbHdheXMgY29uZmlndXJlIG1heCBsaW5rIGJ3IC0gdGhlIHNwZWMKPiA+IGRvZXNu J3QKPiA+IC0JwqAqIHNlZW0gdG8gc3VnZ2VzdCB3ZSBzaG91bGQgZG8gb3RoZXJ3aXNlLgo+ID4g KwnCoCogRm9yIE1TVCB3ZSBhbHdheXMgY29uZmlndXJlIGZvciB0aGUgbWF4aW11bSB0cmFpbmFi bGUKPiA+IGxpbmsgYncgLQo+ID4gKwnCoCogdGhlIHNwZWMgZG9lc24ndCBzZWVtIHRvIHN1Z2dl c3Qgd2Ugc2hvdWxkIGRvCj4gPiBvdGhlcndpc2UuwqDCoFRoZQo+ID4gKwnCoCogY2FsbHMgdG8g aW50ZWxfZHBfbWF4X2xhbmVfY291bnQoKSBhbmQKPiA+IGludGVsX2RwX2NvbW1vbl9yYXRlcygp Cj4gPiArCcKgKiBib3RoIHRha2Ugc3VjY2Vzc2Z1bCB1cGZyb250IGxpbmsgdHJhaW5pbmcgaW50 bwo+ID4gYWNjb3VudCwKPiA+IGFuZAo+ID4gKwnCoCogcmV0dXJuIHRoZSBEaXNwbGF5UG9ydCBt YXggc3VwcG9ydGVkIHZhbHVlcyBpbiB0aGUKPiA+IGV2ZW50Cj4gPiB0aGF0Cj4gPiArCcKgKiB1 cGZyb250IGxpbmsgdHJhaW5pbmcgd2FzIG5vdCBkb25lLgo+ID4gwqAJwqAqLwo+ID4gLQlsYW5l X2NvdW50ID0gZHJtX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwLT5kcGNkKTsKPiA+ICsJbGFu ZV9jb3VudCA9IGludGVsX2RwX21heF9sYW5lX2NvdW50KGludGVsX2RwKTsKPiA+IMKgCj4gPiDC oAlwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCA9IGxhbmVfY291bnQ7Cj4gPiDCoAo+ID4gLQlwaXBl X2NvbmZpZy0+cGlwZV9icHAgPSAyNDsKPiA+IC0JcGlwZV9jb25maWctPnBvcnRfY2xvY2sgPQo+ ID4gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7Cj4gPiArCXBpcGVfY29uZmlnLT5w aXBlX2JwcCA9IGJwcCA9IDI0Owo+ID4gKwljb21tb25fbGVuID0gaW50ZWxfZHBfY29tbW9uX3Jh dGVzKGludGVsX2RwLAo+ID4gY29tbW9uX3JhdGVzKTsKPiA+ICsJcGlwZV9jb25maWctPnBvcnRf Y2xvY2sgPSBjb21tb25fcmF0ZXNbY29tbW9uX2xlbiAtIDFdOwo+ID4gKwo+ID4gKwlEUk1fREVC VUdfS01TKCJEUCBNU1QgbGluayBjb25maWd1cmVkIGZvciAlZCBsYW5lcyBACj4gPiAlZC5cbiIs Cj4gPiArCQnCoMKgwqDCoMKgwqBwaXBlX2NvbmZpZy0+bGFuZV9jb3VudCwgcGlwZV9jb25maWct Cj4gPiA+IAo+ID4gPiBwb3J0X2Nsb2NrKTsKPiA+IMKgCj4gPiDCoAlzdGF0ZSA9IHBpcGVfY29u ZmlnLT5iYXNlLnN0YXRlOwo+ID4gwqAKPiA+IEBAIC0xMzcsNiArMTQ2LDggQEAgc3RhdGljIHZv aWQgaW50ZWxfbXN0X3ByZV9lbmFibGVfZHAoc3RydWN0Cj4gPiBpbnRlbF9lbmNvZGVyICplbmNv ZGVyLAo+ID4gwqAJZW51bSBwb3J0IHBvcnQgPSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+IMKg CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9Cj4gPiDCoAkJdG9faW50ZWxfY29u bmVjdG9yKGNvbm5fc3RhdGUtPmNvbm5lY3Rvcik7Cj4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRf ZHBsbCAqcGxsID0gcGlwZV9jb25maWctPnNoYXJlZF9kcGxsOwo+ID4gKwlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGxfY29uZmlnIHRtcF9wbGxfY29uZmlnOwo+ID4gwqAJaW50IHJldDsKPiA+IMKg CXVpbnQzMl90IHRlbXA7Cj4gPiDCoAlpbnQgc2xvdHM7Cj4gPiBAQCAtMTUwLDIxICsxNjEsMjMg QEAgc3RhdGljIHZvaWQgaW50ZWxfbXN0X3ByZV9lbmFibGVfZHAoc3RydWN0Cj4gPiBpbnRlbF9l bmNvZGVyICplbmNvZGVyLAo+ID4gwqAJRFJNX0RFQlVHX0tNUygiJWRcbiIsIGludGVsX2RwLT5h Y3RpdmVfbXN0X2xpbmtzKTsKPiA+IMKgCj4gPiDCoAlpZiAoaW50ZWxfZHAtPmFjdGl2ZV9tc3Rf bGlua3MgPT0gMCkgewo+ID4gLQkJaW50ZWxfZGRpX2Nsa19zZWxlY3QoJmludGVsX2RpZ19wb3J0 LT5iYXNlLAo+ID4gLQkJCQnCoMKgwqDCoMKgcGlwZV9jb25maWctPnNoYXJlZF9kcGxsKTsKPiA+ IC0KPiA+IC0JCWludGVsX3ByZXBhcmVfZHBfZGRpX2J1ZmZlcnMoJmludGVsX2RpZ19wb3J0LQo+ ID4gPmJhc2UpOwo+ID4gLQkJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1zKGludGVsX2RwLAo+ID4g LQkJCQkJwqBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+IC0JCQkJCcKgcGlwZV9jb25maWct PmxhbmVfY291bnQsCj4gPiAtCQkJCQnCoHRydWUpOwo+ID4gLQo+ID4gLQkJaW50ZWxfZGRpX2lu aXRfZHBfYnVmX3JlZygmaW50ZWxfZGlnX3BvcnQtPmJhc2UpOwo+ID4gwqAKPiA+IC0JCWludGVs X2RwX3NpbmtfZHBtcyhpbnRlbF9kcCwgRFJNX01PREVfRFBNU19PTik7Cj4gPiArCQkvKiBEaXNh YmxlIHRoZSBQTEwgc2luY2Ugd2UgbmVlZCB0byBhY3F1aXJlIHRoZQo+ID4gUExMCj4gPiArCQnC oCogYmFzZWQgb24gdGhlIGxpbmsgcmF0ZSBpbiB0aGUgbGluayB0cmFpbmluZwo+ID4gc2VxdWVu Y2UKPiA+ICsJCcKgKi8KPiA+ICsJCXRtcF9wbGxfY29uZmlnID0gcGxsLT5jb25maWc7Cj4gPiAr CQlwbGwtPmZ1bmNzLmRpc2FibGUoZGV2X3ByaXYsIHBsbCk7Cj4gPiArCQlwbGwtPmNvbmZpZy5j cnRjX21hc2sgPSAwOwo+ID4gKwo+ID4gKwkJLyogSWYgTGluayBUcmFpbmluZyBmYWlscywgc2Vu ZCBhIHVldmVudCB0bwo+ID4gZ2VuZXJhdGUKPiA+IGEKPiA+ICsJCcKgKmhvdHBsdWcKPiA+ICsJ CcKgKi8KPiA+ICsJCWlmICghKGludGVsX2RkaV9saW5rX3RyYWluKGludGVsX2RwLCBwaXBlX2Nv bmZpZy0KPiA+ID4gCj4gPiA+IHBvcnRfY2xvY2ssCj4gPiArCQkJCQnCoMKgwqBwaXBlX2NvbmZp Zy0KPiA+ID5sYW5lX2NvdW50LAo+ID4gdHJ1ZSwKPiA+ICsJCQkJCcKgwqDCoGZhbHNlKSkpCj4g PiArCQkJZHJtX2ttc19oZWxwZXJfaG90cGx1Z19ldmVudChlbmNvZGVyLQo+ID4gPiAKPiA+ID4g YmFzZS5kZXYpOwo+ID4gKwkJcGxsLT5jb25maWcgPSB0bXBfcGxsX2NvbmZpZzsKPiA+IMKgCj4g PiAtCQlpbnRlbF9kcF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+IC0JCWludGVsX2Rw X3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7Cj4gPiDCoAl9Cj4gPiDCoAo+ID4gwqAJcmV0ID0g ZHJtX2RwX21zdF9hbGxvY2F0ZV92Y3BpKCZpbnRlbF9kcC0+bXN0X21nciwKPiA+IEBAIC0zMzYs NiArMzQ5LDI3IEBAIGludGVsX2RwX21zdF9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fY29ubmVjdG9y Cj4gPiAqY29ubmVjdG9yLAo+ID4gwqAJCQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkK PiA+IMKgewo+ID4gwqAJaW50IG1heF9kb3RjbGsgPSB0b19pOTE1KGNvbm5lY3Rvci0+ZGV2KS0+ bWF4X2RvdGNsa19mcmVxOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25u ZWN0b3IgPQo+ID4gdG9faW50ZWxfY29ubmVjdG9yKGNvbm5lY3Rvcik7Cj4gPiArCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBpbnRlbF9jb25uZWN0b3ItPm1zdF9wb3J0Owo+ID4gKwo+ID4g KwlpZiAoaW50ZWxfZHAtPnVwZnJvbnRfbGlua190cmFpbiAmJiAhaW50ZWxfZHAtCj4gPiA+dXBm cm9udF9kb25lKcKgCj4gPiB7Cj4gPiArCQlib29sIGRvX3VwZnJvbnRfbGlua190cmFpbjsKPiA+ ICsKPiA+ICsJCWRvX3VwZnJvbnRfbGlua190cmFpbiA9IGludGVsX2RwLQo+ID4gPiAKPiA+ID4g Y29tcGxpYW5jZV90ZXN0X3R5cGUgIT0KPiA+ICsJCQlEUF9URVNUX0xJTktfVFJBSU5JTkc7Cj4g PiArCQlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKSB7Cj4gPiArCQkJaW50ZWxfZHAtPnVwZnJv bnRfZG9uZSA9Cj4gPiArCQkJCWludGVsX2RwX3VwZnJvbnRfbGlua190cmFpbihpbnRlbF8KPiA+ IGRwCj4gPiApOwo+ID4gKwkJCWlmIChpbnRlbF9kcC0+dXBmcm9udF9kb25lKSB7Cj4gPiArCQkJ CURSTV9ERUJVR19LTVMoIk1TVCB1cGZyb250IHRyYWluZWQKPiA+IGF0ICIKPiA+ICsJCQkJCcKg wqDCoMKgwqDCoCIlZCBsYW5lcyBAICVkLiIsCj4gPiArCQkJCQnCoMKgwqDCoMKgwqBpbnRlbF9k cC0KPiA+ID4gCj4gPiA+IG1heF9sYW5lc191cGZyb250LAo+ID4gKwkJCQkJwqDCoMKgwqDCoMKg aW50ZWxfZHAtCj4gPiA+IAo+ID4gPiBtYXhfbGlua19yYXRlX3VwZnJvbnQpOwo+ID4gKwkJCX0g ZWxzZQo+ID4gKwkJCQlEUk1fREVCVUdfS01TKCJNU1QgdXBmcm9udCBsaW5rCj4gPiB0cmFpbmlu ZyAiCj4gPiArCQkJCQnCoMKgwqDCoMKgwqAiZmFpbGVkLiIpOwo+IExpbmsgdHJhaW5pbmcgaGFz IGZhaWxlZCBhbmQgd2UgaGF2ZSBhIGJsYW5rIHNjcmVlbi4gU2hvdWxkIHdlIHRocm93Cj4gYW4K PiBlcnJvciBoZXJlPyBNYXliZQo+IAo+IAlyZXR1cm4gTU9ERV9FUlJPUjsKPiAKPiA+IAo+ID4g KwkJfQo+ID4gKwl9Cj4gPiDCoAo+ID4gwqAJLyogVE9ETyAtIHZhbGlkYXRlIG1vZGUgYWdhaW5z dCBhdmFpbGFibGUgUEJOIGZvciBsaW5rICovCj4gPiDCoAlpZiAobW9kZS0+Y2xvY2sgPCAxMDAw MCkKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4g Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXggYTJiYmY2OC4uMzRh ZjNlOCAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gQEAgLTE0MTYsNiAr MTQxNiw3IEBAIHZvaWQgaW50ZWxfZWRwX3BhbmVsX29mZihzdHJ1Y3QgaW50ZWxfZHAKPiA+ICpp bnRlbF9kcCk7Cj4gPiDCoHZvaWQgaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwgc3RydWN0Cj4gPiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ID4g wqB2b2lkIGludGVsX2RwX21zdF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ID4g wqB2b2lkIGludGVsX2RwX21zdF9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7Cj4gPiAr dTggaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4g PiDCoGludCBpbnRlbF9kcF9tYXhfbGlua19yYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Owo+ID4gwqBpbnQgaW50ZWxfZHBfbGlua19yYXRlX2luZGV4KHN0cnVjdCBpbnRlbF9kcCAqaW50 ZWxfZHAsIGludAo+ID4gKmNvbW1vbl9yYXRlcywKPiA+IMKgCQkJwqDCoMKgwqDCoGludCBsaW5r X3JhdGUpOwo+ID4gQEAgLTE0NDgsNiArMTQ0OSw4IEBAIGludGVsX2RwX3ByZV9lbXBoYXNpc19t YXgoc3RydWN0IGludGVsX2RwCj4gPiAqaW50ZWxfZHAsIHVpbnQ4X3Qgdm9sdGFnZV9zd2luZyk7 Cj4gPiDCoHZvaWQgaW50ZWxfZHBfY29tcHV0ZV9yYXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsIGludAo+ID4gcG9ydF9jbG9jaywKPiA+IMKgCQkJwqDCoMKgdWludDhfdCAqbGlua19idywg dWludDhfdAo+ID4gKnJhdGVfc2VsZWN0KTsKPiA+IMKgYm9vbCBpbnRlbF9kcF9zb3VyY2Vfc3Vw cG9ydHNfaGJyMihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ICtpbnQgaW50ZWxfZHBf Y29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGludAo+ID4gKmNvbW1vbl9y YXRlcyk7Cj4gPiArYm9vbCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJhaW4oc3RydWN0IGludGVs X2RwICppbnRlbF9kcCk7Cj4gPiDCoGJvb2wKPiA+IMKgaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVz KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3QKPiA+IGxpbmtfc3RhdHVzW0RQX0xJ TktfU1RBVFVTX1NJWkVdKTsKPiA+IMKgCi0tIApNaWthIEthaG9sYSAtIEludGVsIE9UQwoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==