From mboxrd@z Thu Jan 1 00:00:00 1970 From: Manasi Navare Subject: Re: [PATCH v3 5/5] drm/i915/dp/mst: Add support for upfront link training for DP MST Date: Mon, 19 Sep 2016 10:22:55 -0700 Message-ID: <20160919172254.GA8791@intel.com> References: <1473815299-26961-1-git-send-email-manasi.d.navare@intel.com> <1473815299-26961-6-git-send-email-manasi.d.navare@intel.com> <1473962616.32398.5.camel@dk-H97M-D3H> <20160915192551.GB15527@intel.com> <20160919170329.GA2172@shiv> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 46F926E544 for ; Mon, 19 Sep 2016 17:22:32 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20160919170329.GA2172@shiv> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jim Bride Cc: "intel-gfx@lists.freedesktop.org" , "Pandiyan, Dhinakaran" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBTZXAgMTksIDIwMTYgYXQgMTA6MDM6MjlBTSAtMDcwMCwgSmltIEJyaWRlIHdyb3Rl Ogo+IE9uIFRodSwgU2VwIDE1LCAyMDE2IGF0IDEyOjI1OjUxUE0gLTA3MDAsIE1hbmFzaSBOYXZh cmUgd3JvdGU6Cj4gPiBPbiBUaHUsIFNlcCAxNSwgMjAxNiBhdCAxMDo0ODoxN0FNIC0wNzAwLCBQ YW5kaXlhbiwgRGhpbmFrYXJhbiB3cm90ZToKPiA+ID4gT24gVHVlLCAyMDE2LTA5LTEzIGF0IDE4 OjA4IC0wNzAwLCBNYW5hc2kgTmF2YXJlIHdyb3RlOgo+ID4gPiA+IEZyb206IEppbSBCcmlkZSA8 amltLmJyaWRlQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiAKPiA+ID4gPiBBZGQgdXBmcm9udCBs aW5rIHRyYWluaW5nIHRvIGludGVsX2RwX21zdF9tb2RlX3ZhbGlkKCkgc28gdGhhdCB3ZSBrbm93 Cj4gPiA+ID4gdG9wb2xvZ3kgY29uc3RyYWludHMgYmVmb3JlIHdlIHZhbGlkYXRlIHRoZSBsZWdh bGl0eSBvZiBtb2RlcyB0byBiZQo+ID4gPiA+IGNoZWNrZWQuCj4gPiA+ID4gCj4gPiA+IAo+ID4g PiBUaGUgcGF0Y2ggc2VlbXMgdG8gZG8gYSBsb3QgbW9yZSB0aGluZ3MgdGhhbiBqdXN0IHdoYXQg aXMgZGVzY3JpYmVkCj4gPiA+IGhlcmUuIEkgZ3Vlc3MsIGl0IHdvdWxkIGJlIGJldHRlciB0byBz cGxpdCB0aGlzIGludG8gbXVsdGlwbGUgcGF0Y2hlcyBvcgo+ID4gPiBhdCBsZWFzdCBwcm92aWRl IGFkZXF1YXRlIGRlc2NyaXB0aW9uIGhlcmUuCj4gPiA+IAo+ID4gCj4gPiBJIHRoaW5rIHRoZSBv bmx5IG90aGVyIHRoaW5nIGl0cyBkb2luZyBpcyBtYWtpbmcgc29tZSBmdW5jdGlvbnMKPiA+IG5v biBzdGF0aWMgc28gdGhleSBjYW4gYmUgdXNlZCBmb3IgTVNUIHVwZnJvbnQgZW5hYmxpbmcuCj4g PiBCdXQgSSB0aGluayB0aGF0IGNhbiBiZSBpbiB0aGUgc2FtZSBwYXRjaCBzaW5jZSBpdCBpcyBk b25lIGluIG9yZGVyCj4gPiB0byBlbmFibGUgdXBmcm9udCBmb3IgTVNULgo+ID4gSmltLCBhbnkg dGhvdWdodHM/Cj4gCj4gVGhpcyBpcyBleGFjdGx5IHRoZSBjYXNlLgo+IAo+IEppbQoKSSBoYXZl IGFscmVhZHkgcmVzdWJtaXR0ZWQgYSBuZXdlciB2ZXJzaW9uIG9mIHRoZSBwYXRjaCB3aXRoIHRo ZSBkZXNjcmlwdGlvbgptb3JlIGNvaGVyZW50IHRvIHdoYXQgdGhlIHBhdGNoIGlzIGRvaW5nLgoK TWFuYXNpCj4gCj4gPiAKPiA+ID4gPiB2MzoKPiA+ID4gPiAqIFJlc2V0IHRoZSB1cGZyb250IHZh bHVlcyBidXQgZG9udCB1bnNldCB0aGUgRURJRCBmb3IgTVNULiAoTWFuYXNpKQo+ID4gPiA+IHYy Ogo+ID4gPiA+ICogUmViYXNlZCBvbiBuZXcgcmV2aXNpb24gb2YgbGluayB0cmFpbmluZyBwYXRj aC4gKE1hbmFzaSkKPiA+ID4gPiAKPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBNYW5hc2kgTmF2YXJl IDxtYW5hc2kuZC5uYXZhcmVAaW50ZWwuY29tPgo+ID4gPiA+IFNpZ25lZC1vZmYtYnk6IEppbSBC cmlkZSA8amltLmJyaWRlQGxpbnV4LmludGVsLmNvbT4KPiA+ID4gPiAtLS0KPiA+ID4gPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgfCAxNSArKysrLS0tLQo+ID4gPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyB8IDc0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0KPiA+ID4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmggICAgfCAgMyArKwo+ID4gPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMo KyksIDI4IGRlbGV0aW9ucygtKQo+ID4gPiA+IAo+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAu Ywo+ID4gPiA+IGluZGV4IDkwNDJkMjguLjYzNTgzMGUgMTAwNjQ0Cj4gPiA+ID4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiA+ID4gPiBAQCAtMTMxLDcgKzEzMSw3IEBAIHN0YXRpYyB2b2lk IHZsdl9zdGVhbF9wb3dlcl9zZXF1ZW5jZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiA+ID4g PiAgCQkJCSAgICAgIGVudW0gcGlwZSBwaXBlKTsKPiA+ID4gPiAgc3RhdGljIHZvaWQgaW50ZWxf ZHBfdW5zZXRfZWRpZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiA+ID4gPiAgCj4gPiA+ ID4gLXN0YXRpYyBpbnQKPiA+ID4gPiAraW50Cj4gPiA+ID4gIGludGVsX2RwX21heF9saW5rX2J3 KHN0cnVjdCBpbnRlbF9kcCAgKmludGVsX2RwKQo+ID4gPiA+ICB7Cj4gPiA+ID4gIAlpbnQgbWF4 X2xpbmtfYncgPSBpbnRlbF9kcC0+ZHBjZFtEUF9NQVhfTElOS19SQVRFXTsKPiA+ID4gPiBAQCAt MTUwLDcgKzE1MCw3IEBAIGludGVsX2RwX21heF9saW5rX2J3KHN0cnVjdCBpbnRlbF9kcCAgKmlu dGVsX2RwKQo+ID4gPiA+ICAJcmV0dXJuIG1heF9saW5rX2J3Owo+ID4gPiA+ICB9Cj4gPiA+ID4g IAo+ID4gPiA+IC1zdGF0aWMgdTggaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCkKPiA+ID4gPiArdTggaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiA+ID4gPiAgewo+ID4gPiA+ICAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4g PiA+ID4gIAl1OCB0ZW1wLCBzb3VyY2VfbWF4LCBzaW5rX21heDsKPiA+ID4gPiBAQCAtMjk2LDgg KzI5Niw3IEBAIHN0YXRpYyBpbnQgaW50ZXJzZWN0X3JhdGVzKGNvbnN0IGludCAqc291cmNlX3Jh dGVzLCBpbnQgc291cmNlX2xlbiwKPiA+ID4gPiAgCXJldHVybiBrOwo+ID4gPiA+ICB9Cj4gPiA+ ID4gIAo+ID4gPiA+IC1zdGF0aWMgaW50IGludGVsX2RwX2NvbW1vbl9yYXRlcyhzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ID4gPiA+IC0JCQkJIGludCAqY29tbW9uX3JhdGVzKQo+ID4gPiA+ ICtpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGlu dCAqY29tbW9uX3JhdGVzKQo+ID4gPiA+ICB7Cj4gPiA+ID4gIAljb25zdCBpbnQgKnNvdXJjZV9y YXRlcywgKnNpbmtfcmF0ZXM7Cj4gPiA+ID4gIAlpbnQgc291cmNlX2xlbiwgc2lua19sZW47Cj4g PiA+ID4gQEAgLTMyMSw3ICszMjAsNyBAQCBzdGF0aWMgaW50IGludGVsX2RwX2NvbW1vbl9yYXRl cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ID4gPiA+ICAJCQkgICAgICAgY29tbW9uX3Jh dGVzKTsKPiA+ID4gPiAgfQo+ID4gPiA+ICAKPiA+ID4gPiAtc3RhdGljIGJvb2wgaW50ZWxfZHBf dXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gPiA+ID4gK2Jv b2wgaW50ZWxfZHBfdXBmcm9udF9saW5rX3RyYWluKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gPiA+ID4gIHsKPiA+ID4gPiAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2Rp Z19wb3J0ID0gZHBfdG9fZGlnX3BvcnQoaW50ZWxfZHApOwo+ID4gPiA+ICAJc3RydWN0IGludGVs X2VuY29kZXIgKmludGVsX2VuY29kZXIgPSAmaW50ZWxfZGlnX3BvcnQtPmJhc2U7Cj4gPiA+ID4g QEAgLTQ1NDUsMTIgKzQ1NDQsMTIgQEAgaW50ZWxfZHBfbG9uZ19wdWxzZShzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+ ICBvdXQ6Cj4gPiA+ID4gLQlpZiAoKHN0YXR1cyAhPSBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3Rl ZCkgJiYKPiA+ID4gPiAtCSAgICAoaW50ZWxfZHAtPmlzX21zdCA9PSBmYWxzZSkpIHsKPiA+ID4g PiAtCQlpbnRlbF9kcF91bnNldF9lZGlkKGludGVsX2RwKTsKPiA+ID4gPiArCWlmIChzdGF0dXMg IT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpIHsKPiA+ID4gPiAgCQlpbnRlbF9kcC0+dXBm cm9udF9kb25lID0gZmFsc2U7Cj4gPiA+ID4gIAkJaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250 ID0gMDsKPiA+ID4gPiAgCQlpbnRlbF9kcC0+bWF4X2xpbmtfcmF0ZV91cGZyb250ID0gMDsKPiA+ ID4gPiArCQlpZiAoaW50ZWxfZHAtPmlzX21zdCA9PSBmYWxzZSkKPiA+ID4gPiArCQkJaW50ZWxf ZHBfdW5zZXRfZWRpZChpbnRlbF9kcCk7Cj4gPiA+ID4gIAl9Cj4gPiA+ID4gIAo+ID4gPiA+ICAJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQodG9faTkxNShkZXYpLCBwb3dlcl9kb21haW4pOwo+ID4g PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9tc3QuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5jCj4gPiA+ID4gaW5kZXggNTRhOWQ3Ni4u OThkNDVhNCAxMDA2NDQKPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cF9tc3QuYwo+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX21zdC5j Cj4gPiA+ID4gQEAgLTQxLDIxICs0MSwzMCBAQCBzdGF0aWMgYm9vbCBpbnRlbF9kcF9tc3RfY29t cHV0ZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gPiA+ID4gIAlpbnQg YnBwOwo+ID4gPiA+ICAJaW50IGxhbmVfY291bnQsIHNsb3RzOwo+ID4gPiA+ICAJY29uc3Qgc3Ry dWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKPiA+ID4gPiAtCWludCBtc3RfcGJuOwo+ID4gPiA+ICsJaW50IG1zdF9w Ym4sIGNvbW1vbl9sZW47Cj4gPiA+ID4gKwlpbnQgY29tbW9uX3JhdGVzW0RQX01BWF9TVVBQT1JU RURfUkFURVNdID0ge307Cj4gPiA+ID4gIAo+ID4gPiA+ICAJcGlwZV9jb25maWctPmRwX2VuY29k ZXJfaXNfbXN0ID0gdHJ1ZTsKPiA+ID4gPiAgCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIg PSBmYWxzZTsKPiA+ID4gPiAtCWJwcCA9IDI0Owo+ID4gPiA+ICsKPiA+ID4gPiAgCS8qCj4gPiA+ ID4gLQkgKiBmb3IgTVNUIHdlIGFsd2F5cyBjb25maWd1cmUgbWF4IGxpbmsgYncgLSB0aGUgc3Bl YyBkb2Vzbid0Cj4gPiA+ID4gLQkgKiBzZWVtIHRvIHN1Z2dlc3Qgd2Ugc2hvdWxkIGRvIG90aGVy d2lzZS4KPiA+ID4gPiArCSAqIEZvciBNU1Qgd2UgYWx3YXlzIGNvbmZpZ3VyZSBmb3IgdGhlIG1h eGltdW0gdHJhaW5hYmxlIGxpbmsgYncgLQo+ID4gPiA+ICsJICogdGhlIHNwZWMgZG9lc24ndCBz ZWVtIHRvIHN1Z2dlc3Qgd2Ugc2hvdWxkIGRvIG90aGVyd2lzZS4gIFRoZQo+ID4gPiA+ICsJICog Y2FsbHMgdG8gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoKSBhbmQgaW50ZWxfZHBfY29tbW9uX3Jh dGVzKCkKPiA+ID4gPiArCSAqIGJvdGggdGFrZSBzdWNjZXNzZnVsIHVwZnJvbnQgbGluayB0cmFp bmluZyBpbnRvIGFjY291bnQsIGFuZAo+ID4gPiA+ICsJICogcmV0dXJuIHRoZSBEaXNwbGF5UG9y dCBtYXggc3VwcG9ydGVkIHZhbHVlcyBpbiB0aGUgZXZlbnQgdGhhdAo+ID4gPiA+ICsJICogdXBm cm9udCBsaW5rIHRyYWluaW5nIHdhcyBub3QgZG9uZS4KPiA+ID4gPiAgCSAqLwo+ID4gPiA+IC0J bGFuZV9jb3VudCA9IGRybV9kcF9tYXhfbGFuZV9jb3VudChpbnRlbF9kcC0+ZHBjZCk7Cj4gPiA+ ID4gKwlsYW5lX2NvdW50ID0gaW50ZWxfZHBfbWF4X2xhbmVfY291bnQoaW50ZWxfZHApOwo+ID4g PiA+ICAKPiA+ID4gPiAgCXBpcGVfY29uZmlnLT5sYW5lX2NvdW50ID0gbGFuZV9jb3VudDsKPiA+ ID4gPiAgCj4gPiA+ID4gLQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSAyNDsKPiA+ID4gPiAtCXBp cGVfY29uZmlnLT5wb3J0X2Nsb2NrID0gaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShpbnRlbF9kcCk7 Cj4gPiA+ID4gKwlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPSBicHAgPSAyNDsKPiA+ID4gPiArCWNv bW1vbl9sZW4gPSBpbnRlbF9kcF9jb21tb25fcmF0ZXMoaW50ZWxfZHAsIGNvbW1vbl9yYXRlcyk7 Cj4gPiA+ID4gKwlwaXBlX2NvbmZpZy0+cG9ydF9jbG9jayA9IGNvbW1vbl9yYXRlc1tjb21tb25f bGVuIC0gMV07Cj4gPiA+ID4gKwo+ID4gPiA+ICsJRFJNX0RFQlVHX0tNUygiRFAgTVNUIGxpbmsg Y29uZmlndXJlZCBmb3IgJWQgbGFuZXMgQCAlZC5cbiIsCj4gPiA+ID4gKwkJICAgICAgcGlwZV9j b25maWctPmxhbmVfY291bnQsIHBpcGVfY29uZmlnLT5wb3J0X2Nsb2NrKTsKPiA+ID4gPiAgCj4g PiA+ID4gIAlzdGF0ZSA9IHBpcGVfY29uZmlnLT5iYXNlLnN0YXRlOwo+ID4gPiA+ICAKPiA+ID4g PiBAQCAtMTM3LDYgKzE0Niw4IEBAIHN0YXRpYyB2b2lkIGludGVsX21zdF9wcmVfZW5hYmxlX2Rw KHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ID4gPiA+ICAJZW51bSBwb3J0IHBvcnQg PSBpbnRlbF9kaWdfcG9ydC0+cG9ydDsKPiA+ID4gPiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvciA9Cj4gPiA+ID4gIAkJdG9faW50ZWxfY29ubmVjdG9yKGNvbm5fc3RhdGUtPmNv bm5lY3Rvcik7Cj4gPiA+ID4gKwlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCA9IHBpcGVf Y29uZmlnLT5zaGFyZWRfZHBsbDsKPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbF9j b25maWcgdG1wX3BsbF9jb25maWc7Cj4gPiA+ID4gIAlpbnQgcmV0Owo+ID4gPiA+ICAJdWludDMy X3QgdGVtcDsKPiA+ID4gPiAgCWludCBzbG90czsKPiA+ID4gPiBAQCAtMTUwLDIxICsxNjEsMjMg QEAgc3RhdGljIHZvaWQgaW50ZWxfbXN0X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29k ZXIgKmVuY29kZXIsCj4gPiA+ID4gIAlEUk1fREVCVUdfS01TKCIlZFxuIiwgaW50ZWxfZHAtPmFj dGl2ZV9tc3RfbGlua3MpOwo+ID4gPiA+ICAKPiA+ID4gPiAgCWlmIChpbnRlbF9kcC0+YWN0aXZl X21zdF9saW5rcyA9PSAwKSB7Cj4gPiA+ID4gLQkJaW50ZWxfZGRpX2Nsa19zZWxlY3QoJmludGVs X2RpZ19wb3J0LT5iYXNlLAo+ID4gPiA+IC0JCQkJICAgICBwaXBlX2NvbmZpZy0+c2hhcmVkX2Rw bGwpOwo+ID4gPiA+IC0KPiA+ID4gPiAtCQlpbnRlbF9wcmVwYXJlX2RwX2RkaV9idWZmZXJzKCZp bnRlbF9kaWdfcG9ydC0+YmFzZSk7Cj4gPiA+ID4gLQkJaW50ZWxfZHBfc2V0X2xpbmtfcGFyYW1z KGludGVsX2RwLAo+ID4gPiA+IC0JCQkJCSBwaXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ID4g PiAtCQkJCQkgcGlwZV9jb25maWctPmxhbmVfY291bnQsCj4gPiA+ID4gLQkJCQkJIHRydWUpOwo+ ID4gPiA+IC0KPiA+ID4gPiAtCQlpbnRlbF9kZGlfaW5pdF9kcF9idWZfcmVnKCZpbnRlbF9kaWdf cG9ydC0+YmFzZSk7Cj4gPiA+ID4gIAo+ID4gPiA+IC0JCWludGVsX2RwX3NpbmtfZHBtcyhpbnRl bF9kcCwgRFJNX01PREVfRFBNU19PTik7Cj4gPiA+ID4gKwkJLyogRGlzYWJsZSB0aGUgUExMIHNp bmNlIHdlIG5lZWQgdG8gYWNxdWlyZSB0aGUgUExMCj4gPiA+ID4gKwkJICogYmFzZWQgb24gdGhl IGxpbmsgcmF0ZSBpbiB0aGUgbGluayB0cmFpbmluZyBzZXF1ZW5jZQo+ID4gPiA+ICsJCSAqLwo+ ID4gPiA+ICsJCXRtcF9wbGxfY29uZmlnID0gcGxsLT5jb25maWc7Cj4gPiA+ID4gKwkJcGxsLT5m dW5jcy5kaXNhYmxlKGRldl9wcml2LCBwbGwpOwo+ID4gPiA+ICsJCXBsbC0+Y29uZmlnLmNydGNf bWFzayA9IDA7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJCS8qIElmIExpbmsgVHJhaW5pbmcgZmFpbHMs IHNlbmQgYSB1ZXZlbnQgdG8gZ2VuZXJhdGUgYQo+ID4gPiA+ICsJCSAqaG90cGx1Zwo+ID4gPiA+ ICsJCSAqLwo+ID4gPiA+ICsJCWlmICghKGludGVsX2RkaV9saW5rX3RyYWluKGludGVsX2RwLCBw aXBlX2NvbmZpZy0+cG9ydF9jbG9jaywKPiA+ID4gPiArCQkJCQkgICBwaXBlX2NvbmZpZy0+bGFu ZV9jb3VudCwgdHJ1ZSwKPiA+ID4gPiArCQkJCQkgICBmYWxzZSkpKQo+ID4gPiA+ICsJCQlkcm1f a21zX2hlbHBlcl9ob3RwbHVnX2V2ZW50KGVuY29kZXItPmJhc2UuZGV2KTsKPiA+ID4gPiArCQlw bGwtPmNvbmZpZyA9IHRtcF9wbGxfY29uZmlnOwo+ID4gPiA+ICAKPiA+ID4gPiAtCQlpbnRlbF9k cF9zdGFydF9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+ID4gPiAtCQlpbnRlbF9kcF9zdG9wX2xp bmtfdHJhaW4oaW50ZWxfZHApOwo+ID4gPiA+ICAJfQo+ID4gPiA+ICAKPiA+ID4gPiAgCXJldCA9 IGRybV9kcF9tc3RfYWxsb2NhdGVfdmNwaSgmaW50ZWxfZHAtPm1zdF9tZ3IsCj4gPiA+ID4gQEAg LTMzNiw2ICszNDksMjcgQEAgaW50ZWxfZHBfbXN0X21vZGVfdmFsaWQoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiA+ID4gPiAgCQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUpCj4gPiA+ID4gIHsKPiA+ID4gPiAgCWludCBtYXhfZG90Y2xrID0gdG9faTkxNShjb25uZWN0 b3ItPmRldiktPm1heF9kb3RjbGtfZnJlcTsKPiA+ID4gPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpOwo+ID4g PiA+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGludGVsX2Nvbm5lY3Rvci0+bXN0X3Bv cnQ7Cj4gPiA+ID4gKwo+ID4gPiA+ICsJaWYgKGludGVsX2RwLT51cGZyb250X2xpbmtfdHJhaW4g JiYgIWludGVsX2RwLT51cGZyb250X2RvbmUpIHsKPiA+ID4gPiArCQlib29sIGRvX3VwZnJvbnRf bGlua190cmFpbjsKPiA+ID4gPiArCj4gPiA+ID4gKwkJZG9fdXBmcm9udF9saW5rX3RyYWluID0g aW50ZWxfZHAtPmNvbXBsaWFuY2VfdGVzdF90eXBlICE9Cj4gPiA+ID4gKwkJCURQX1RFU1RfTElO S19UUkFJTklORzsKPiA+ID4gPiArCQlpZiAoZG9fdXBmcm9udF9saW5rX3RyYWluKSB7Cj4gPiA+ ID4gKwkJCWludGVsX2RwLT51cGZyb250X2RvbmUgPQo+ID4gPiA+ICsJCQkJaW50ZWxfZHBfdXBm cm9udF9saW5rX3RyYWluKGludGVsX2RwKTsKPiA+ID4gPiArCQkJaWYgKGludGVsX2RwLT51cGZy b250X2RvbmUpIHsKPiA+ID4gPiArCQkJCURSTV9ERUJVR19LTVMoIk1TVCB1cGZyb250IHRyYWlu ZWQgYXQgIgo+ID4gPiA+ICsJCQkJCSAgICAgICIlZCBsYW5lcyBAICVkLiIsCj4gPiA+ID4gKwkJ CQkJICAgICAgaW50ZWxfZHAtPm1heF9sYW5lc191cGZyb250LAo+ID4gPiA+ICsJCQkJCSAgICAg IGludGVsX2RwLT5tYXhfbGlua19yYXRlX3VwZnJvbnQpOwo+ID4gPiA+ICsJCQl9IGVsc2UKPiA+ ID4gPiArCQkJCURSTV9ERUJVR19LTVMoIk1TVCB1cGZyb250IGxpbmsgdHJhaW5pbmcgIgo+ID4g PiA+ICsJCQkJCSAgICAgICJmYWlsZWQuIik7Cj4gPiA+ID4gKwkJfQo+ID4gPiA+ICsJfQo+ID4g PiA+ICAKPiA+ID4gPiAgCS8qIFRPRE8gLSB2YWxpZGF0ZSBtb2RlIGFnYWluc3QgYXZhaWxhYmxl IFBCTiBmb3IgbGluayAqLwo+ID4gPiA+ICAJaWYgKG1vZGUtPmNsb2NrIDwgMTAwMDApCj4gPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiBpbmRleCBmYzJmMWJjLi5iNGJjMDAy IDEwMDY0NAo+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g PiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gPiBAQCAt MTQxNiw2ICsxNDE2LDcgQEAgdm9pZCBpbnRlbF9lZHBfcGFuZWxfb2ZmKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApOwo+ID4gPiA+ICB2b2lkIGludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpOwo+ ID4gPiA+ICB2b2lkIGludGVsX2RwX21zdF9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Owo+ID4gPiA+ICB2b2lkIGludGVsX2RwX21zdF9yZXN1bWUoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7Cj4gPiA+ID4gK3U4IGludGVsX2RwX21heF9sYW5lX2NvdW50KHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApOwo+ID4gPiA+ICBpbnQgaW50ZWxfZHBfbWF4X2xpbmtfcmF0ZShzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwKTsKPiA+ID4gPiAgaW50IGludGVsX2RwX2xpbmtfcmF0ZV9pbmRleChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgKmNvbW1vbl9yYXRlcywKPiA+ID4gPiAgCQkJ ICAgICBpbnQgbGlua19yYXRlKTsKPiA+ID4gPiBAQCAtMTQ0Niw2ICsxNDQ3LDggQEAgaW50ZWxf ZHBfcHJlX2VtcGhhc2lzX21heChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IHZv bHRhZ2Vfc3dpbmcpOwo+ID4gPiA+ICB2b2lkIGludGVsX2RwX2NvbXB1dGVfcmF0ZShzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcG9ydF9jbG9jaywKPiA+ID4gPiAgCQkJICAgdWludDhf dCAqbGlua19idywgdWludDhfdCAqcmF0ZV9zZWxlY3QpOwo+ID4gPiA+ICBib29sIGludGVsX2Rw X3NvdXJjZV9zdXBwb3J0c19oYnIyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ID4gPiA+ ICtpbnQgaW50ZWxfZHBfY29tbW9uX3JhdGVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIGlu dCAqY29tbW9uX3JhdGVzKTsKPiA+ID4gPiArYm9vbCBpbnRlbF9kcF91cGZyb250X2xpbmtfdHJh aW4oc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gPiA+ID4gIGJvb2wKPiA+ID4gPiAgaW50 ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3Qg bGlua19zdGF0dXNbRFBfTElOS19TVEFUVVNfU0laRV0pOwo+ID4gPiA+ICAKPiA+ID4gCj4gPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ID4gSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdAo+ID4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+ID4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==