From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Sharma, Shashank" Subject: Re: [PATCH 1/5] drm: Helper for LSPCON in drm_dp_dual_mode Date: Tue, 31 May 2016 18:12:48 +0530 Message-ID: <574D86C8.1020005@intel.com> References: <1464686746-5099-1-git-send-email-shashank.sharma@intel.com> <1464686746-5099-2-git-send-email-shashank.sharma@intel.com> <20160531095253.GQ4329@intel.com> <574D6CD8.3030607@intel.com> <20160531121055.GS4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" 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 905826E562 for ; Tue, 31 May 2016 12:42:51 +0000 (UTC) In-Reply-To: <20160531121055.GS4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: =?windows-1252?Q?Ville_Syrj=E4l=E4?= Cc: daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org, paulo.r.zanoni@intel.com List-Id: intel-gfx@lists.freedesktop.org UmVnYXJkcwpTaGFzaGFuawoKT24gNS8zMS8yMDE2IDU6NDAgUE0sIFZpbGxlIFN5cmrDpGzDpCB3 cm90ZToKPiBPbiBUdWUsIE1heSAzMSwgMjAxNiBhdCAwNDoyMjowOFBNICswNTMwLCBTaGFybWEs IFNoYXNoYW5rIHdyb3RlOgo+PiBUaGFua3MgZm9yIHRoZSByZXZpZXcsIFZpbGxlLgo+PiBNeSBj b21tZW50cywgaW5saW5lLgo+Pgo+PiBSZWdhcmRzCj4+IFNoYXNoYW5rCj4+IE9uIDUvMzEvMjAx NiAzOjIyIFBNLCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4+PiBPbiBUdWUsIE1heSAzMSwgMjAx NiBhdCAwMjo1NTo0MlBNICswNTMwLCBTaGFzaGFuayBTaGFybWEgd3JvdGU6Cj4+Pj4gU2lnbmVk LW9mZi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+Pj4+ IC0tLQo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5jIHwg ODUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIGluY2x1ZGUvZHJtL2Ry bV9kcF9kdWFsX21vZGVfaGVscGVyLmggICAgIHwgMjkgKysrKysrKysrKysKPj4+PiAgICAyIGZp bGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspCj4+Pj4KPj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9kcF9kdWFsX21vZGVfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIuYwo+Pj4+IGluZGV4IGE3YjJhNzUuLjExY2FiMjUgMTAw NjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9kcF9kdWFsX21vZGVfaGVscGVyLmMK Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIuYwo+Pj4+ IEBAIC0xNDgsNiArMTQ4LDEyIEBAIHN0YXRpYyBib29sIGlzX3R5cGUyX2FkYXB0b3IodWludDhf dCBhZGFwdG9yX2lkKQo+Pj4+ICAgIAkJCSAgICAgIERQX0RVQUxfTU9ERV9SRVZfVFlQRTIpOwo+ Pj4+ICAgIH0KPj4+Pgo+Pj4+ICtib29sIGlzX2xzcGNvbl9hZGFwdG9yKGNvbnN0IGNoYXIgaGRt aV9pZFtEUF9EVUFMX01PREVfSERNSV9JRF9MRU5dLAo+Pj4+ICsJY29uc3QgdWludDhfdCBhZGFw dG9yX2lkKQo+Pj4+ICt7Cj4+Pj4gKwlyZXR1cm4gaXNfaGRtaV9hZGFwdG9yKGhkbWlfaWQpICYm IChhZGFwdG9yX2lkID09IDB4YTgpOwo+Pj4KPj4+Cj4+PiBJJ2QgcHJvYmFibHkgbWFrZSB0aGlz IHNvbWV0aGluZyBsaWtlCj4+Pgo+Pj4gI2RlZmluZSBEUF9EVUFMX01PREVfUkVTRVJWRURfTFNQ Q09OIDB4MDgKPj4+Cj4+PiAgICAgICAgICAgcmV0dXJuIGFkYXB0b3JfaWQgPT0gKERQX0RVQUxf TU9ERV9UWVBFX1RZUEUyIHwKPj4+IAkgICAgICAgICAgICAgICAgICAgICAgRFBfRFVBTF9NT0RF X1JFU0VSVkVEX0xTUENPTiB8Cj4+PiAJICAgICAgICAgICAgICAgICAgICAgIERQX0RVQUxfTU9E RV9SRVZfVFlQRTIpOwo+Pj4KPj4gVGhhbmtzLCB0aGlzIGlzIGEgZ29vZCBzdWdnZXN0aW9uLCBJ IHdpbGwgZG8gc28uCj4+Pgo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICAgIC8qKgo+Pj4+ICAgICAqIGRy bV9kcF9kdWFsX21vZGVfZGV0ZWN0IC0gSWRlbnRpZnkgdGhlIERQIGR1YWwgbW9kZSBhZGFwdG9y Cj4+Pj4gICAgICogQGFkYXB0ZXI6IEkyQyBhZGFwdGVyIGZvciB0aGUgRERDIGJ1cwo+Pj4+IEBA IC0yMDMsNiArMjA5LDggQEAgZW51bSBkcm1fZHBfZHVhbF9tb2RlX3R5cGUgZHJtX2RwX2R1YWxf bW9kZV9kZXRlY3Qoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyKQo+Pj4+ICAgIAlyZXQgPSBk cm1fZHBfZHVhbF9tb2RlX3JlYWQoYWRhcHRlciwgRFBfRFVBTF9NT0RFX0FEQVBUT1JfSUQsCj4+ Pj4gICAgCQkJCSAgICAmYWRhcHRvcl9pZCwgc2l6ZW9mKGFkYXB0b3JfaWQpKTsKPj4+PiAgICAJ aWYgKHJldCA9PSAwKSB7Cj4+Pj4gKwkJaWYgKGlzX2xzcGNvbl9hZGFwdG9yKGhkbWlfaWQsIGFk YXB0b3JfaWQpKQo+Pj4+ICsJCQlyZXR1cm4gRFJNX0RQX0RVQUxfTU9ERV9MU1BDT047Cj4+Pj4g ICAgCQlpZiAoaXNfdHlwZTJfYWRhcHRvcihhZGFwdG9yX2lkKSkgewo+Pj4+ICAgIAkJCWlmIChp c19oZG1pX2FkYXB0b3IoaGRtaV9pZCkpCj4+Pj4gICAgCQkJCXJldHVybiBEUk1fRFBfRFVBTF9N T0RFX1RZUEUyX0hETUk7Cj4+Pj4gQEAgLTM2NCwzICszNzIsODAgQEAgY29uc3QgY2hhciAqZHJt X2RwX2dldF9kdWFsX21vZGVfdHlwZV9uYW1lKGVudW0gZHJtX2RwX2R1YWxfbW9kZV90eXBlIHR5 cGUpCj4+Pj4gICAgCX0KPj4+PiAgICB9Cj4+Pj4gICAgRVhQT1JUX1NZTUJPTChkcm1fZHBfZ2V0 X2R1YWxfbW9kZV90eXBlX25hbWUpOwo+Pj4+ICsKPj4+PiArLyoqCj4+Pj4gKyAqIGRybV9sc3Bj b25fZ2V0X2N1cnJlbnRfbW9kZTogR2V0IExTUENPTidzIGN1cnJlbnQgbW9kZSBvZiBvcGVyYXRp b24gYnkKPj4+PiArICogYnkgcmVhZGluZyBvZmZzZXQgKDB4ODAsIDB4NDEpCj4+Pj4gKyAqIEBp MmNfYWRhcHRlcjogSTJDLW92ZXItYXV4IGFkYXB0ZXIKPj4+PiArICoKPj4+PiArICogUmV0dXJu czoKPj4+PiArICogRW51bSByZXByZXNlbnRpbmcgY3VycmVudCBtb2RlIG9mIG9wZXJhdGlvbgo+ Pj4+ICsgKi8KPj4+PiArZW51bSBkcm1fbHNwY29uX21vZGUKPj4+PiArZHJtX2xzcGNvbl9nZXRf Y3VycmVudF9tb2RlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlcikKPj4+Cj4+PiBUbyBtYXRj aCB3aXRoIGRybV9kcF9kdWFsX21vZGVfZ2V0X3RtZHNfb3V0cHV0KCkgdGhpcyBtYXkgd2FudCB0 bwo+Pj4gcmV0dXJuIHRoZSBlcnJvciBzdGF0dXMsIGFuZCByZXR1cm4gdGhlIGFjdHVhbCBtb2Rl IHZpYSBhIGZ1bmN0aW9uCj4+PiBhcmd1bWVudC4KPj4+Cj4+IHN1cmUsIGNhbiBiZSBkb25lLgo+ Pj4gQXMgZm9yIHRoZSBuYW1lIGRybV9kcF9kdWFsX21vZGVfZ2V0X2xzcGNvbl9tb2RlKCkgYW5k Cj4+PiBkcm1fZHBfZHVhbF9tb2RlX3NldF9sc3Bjb25fbW9kZSgpIHBlcmhhcHM/Cj4+PiBPciBk cm1fbHNwY29uX2dldF9tb2RlKCkvZHJtX2xzcGNvbl9zZXRfbW9kZSgpIHBlcmhhcHMgaWYgd2Ug d2FudCB0bwo+Pj4ga2VlcCB0aGluZ3Mgc2hvcnRlcj8KPj4+Cj4+IFllcCwgaW5pdGlhbGx5IEkg bWFkZSB0aGUgc2FtZSBuYW1lcyBhcyB5b3Ugc3VnZ2VzdGVkLCBidXQKPj4gZHJtX2RwX2R1YWxf bW9kZV9nZXRfbHNwY29uX21vZGUgZGludCBzb3VuZCBnb29kIHRvIG1lIDopLgo+PiBkcm1fbHNw Y29uX2dldC9zZXRfbW9kZSBzb3VuZHMgZ29vZC4KPj4+PiArewo+Pj4+ICsJdTggZGF0YTsKPj4+ PiArCWludCBlcnIgPSAwOwo+Pj4KPj4+IEkgdXNlZCAncmV0JyBpbiB0aGUgcmVzdCBvZiB0aGUg Y29kZS4gVGhpcyBpcyBhIGJpdCBpbmNvbnNpc3RlbnQuCj4+IGdvdCBpdC4KPj4+Cj4+Pj4gKwo+ Pj4+ICsJLyogUmVhZCBTdGF0dXM6IGkyYyBvdmVyIGF1eCAqLwo+Pj4+ICsJZXJyID0gZHJtX2Rw X2R1YWxfbW9kZV9yZWFkKGFkYXB0ZXIsIERQX0RVQUxfTU9ERV9MU1BDT05fQ1VSUkVOVF9NT0RF LAo+Pj4+ICsJCQkodm9pZCAqKSZkYXRhLCBzaXplb2YoZGF0YSkpOwo+Pj4KPj4+IFBvaW50bGVz cyBjYXN0Lgo+Pj4KPj4gZ29vZCBjYXRjaCwgdGhpcyBpcyB1bm5lY2Vzc2FyeS4KPj4+PiArCWlm IChlcnIgPCAwKSB7Cj4+Pgo+Pj4gaWYgKHJldCkgaXMgd2hhdCBJJ3ZlIHVzZWQgZWxzZXdoZXJl Lgo+PiBnb3QgaXQuCj4+Pgo+Pj4+ICsJCURSTV9FUlJPUigiTFNQQ09OIHJlYWQoMHg4MCwgMHg0 MSkgZmFpbGVkXG4iKTsKPj4+Cj4+PiBJJ20gbm90IHN1cmUgd2Ugd2FudCBhbmQgRVJST1IgZnJv bSBhIGhlbHBlci4gSSB1c2VkIERSTV9ERUJVR19LTVMgZm9yCj4+PiB0aGUgb3RoZXIgZXJyb3Ig cGF0aHMuCj4+Pgo+PiBJTUhPLCBUaGlzIGlzIGEgZmFpbHVyZSB3aGljaCBuZWVkcyBub3RpY2Us IGFzIGl0IGNhbiBwb2ludCBvdXQgdG8gYSBIVwo+PiBsZXZlbCBwcm9ibGVtLCBvciBhIHByb2Js ZW0gaW4gTFNQQ09OIEZXLCBzbyBJIHdpbGwgcHJlZmVyIHRvIGtlZXAgaXQgYXMKPj4gZXJyb3Iu Cj4KPiBGYWlyIGVub3VnaC4KPgo+Pj4+ICsJCXJldHVybiBEUk1fTFNQQ09OX01PREVfSU5WQUxJ RDsKPj4+PiArCX0KPj4+PiArCj4+Pj4gKwlyZXR1cm4gZGF0YSAmIERQX0RVQUxfTU9ERV9MU1BD T05fTU9ERV9NQVNLID8KPj4+PiArCQlEUk1fTFNQQ09OX01PREVfUENPTiA6IERSTV9MU1BDT05f TU9ERV9MUzsKPj4+PiArfQo+Pj4+ICtFWFBPUlRfU1lNQk9MKGRybV9sc3Bjb25fZ2V0X2N1cnJl bnRfbW9kZSk7Cj4+Pj4gKwo+Pj4+ICsvKioKPj4+PiArICogZHJtX2xzcGNvbl9jaGFuZ2VfbW9k ZTogQ2hhbmdlIExTUENPTidzIG1vZGUgb2Ygb3BlcmF0aW9uIGJ5Cj4+Pj4gKyAqIGJ5IHdyaXRp bmcgb2Zmc2V0ICgweDgwLCAweDQwKQo+Pj4+ICsgKiBAaTJjX2FkYXB0ZXI6IEkyQy1vdmVyLWF1 eCBhZGFwdGVyCj4+Pj4gKyAqIEByZXFkX21vZGU6IHJlcXVpcmVkIG1vZGUgb2Ygb3BlcmF0aW9u Cj4+Pj4gKyAqCj4+Pj4gKyAqIFJldHVybnM6Cj4+Pj4gKyAqIDAgb24gc3VjY2VzcywgLWVycm9y IG9uIGZhaWx1cmUvdGltZW91dAo+Pj4+ICsgKi8KPj4+PiAraW50IGRybV9sc3Bjb25fY2hhbmdl X21vZGUoc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLAo+Pj4+ICsJZW51bSBkcm1fbHNwY29u X21vZGUgcmVxZF9tb2RlKQo+Pj4+ICt7Cj4+Pj4gKwl1OCBkYXRhOwo+Pj4+ICsJaW50IGVycjsK Pj4+PiArCWludCB0aW1lX291dCA9IDIwMDsKPj4+PiArCj4+Pj4gKwlpZiAocmVxZF9tb2RlID09 IERSTV9MU1BDT05fTU9ERV9MUykKPj4+PiArCQlkYXRhID0gfkRQX0RVQUxfTU9ERV9MU1BDT05f TU9ERV9NQVNLOwo+Pj4KPj4+IElzIHRoYXQgcmVhbGx5IGNvcnJlY3Q/Cj4+Pgo+PiBPb3BzLCBp dCB3YXMgYSBibHVuZGVyLCBidXQgZm9ydHVuYXRlbHkgdGhhdCByZWdpc3RlciBvbmx5IGJvdGhl cnMgYWJvdXQKPj4gYml0IDAsIGFuZCB0aGF0J3Mgd2h5IGl0IHdvcmtlZCwgSSB3aWxsIGZpeCB0 aGlzLgo+Pj4+ICsJZWxzZQo+Pj4+ICsJCWRhdGEgPSBEUF9EVUFMX01PREVfTFNQQ09OX01PREVf TUFTSzsKPj4+PiArCj4+Pj4gKwkvKiBDaGFuZ2UgbW9kZSAqLwo+Pj4+ICsJZXJyID0gZHJtX2Rw X2R1YWxfbW9kZV93cml0ZShhZGFwdGVyLCBEUF9EVUFMX01PREVfTFNQQ09OX01PREVfQ0hBTkdF LAo+Pj4+ICsJCQkmZGF0YSwgc2l6ZW9mKGRhdGEpKTsKPj4+PiArCWlmIChlcnIgPCAwKSB7Cj4+ Pj4gKwkJRFJNX0VSUk9SKCJMU1BDT04gbW9kZSBjaGFuZ2UgZmFpbGVkXG4iKTsKPj4+PiArCQly ZXR1cm4gZXJyOwo+Pj4+ICsJfQo+Pj4+ICsKPj4+PiArCS8qCj4+Pj4gKwkqIENvbmZpcm0gbW9k ZSBjaGFuZ2UgYnkgcmVhZGluZyB0aGUgc3RhdHVzIGJpdC4KPj4+PiArCSogU29tZXRpbWVzLCBp dCB0YWtlcyBhIHdoaWxlIHRvIGNoYW5nZSB0aGUgbW9kZSwKPj4+PiArCSogc28gd2FpdCBhbmQg cmV0cnkgdW50aWwgdGltZSBvdXQgb3IgZG9uZS4KPj4+PiArCSovCj4+Pgo+Pj4gaW5kZW50IGZh aWwKPj4gT0suCj4+Pgo+Pj4+ICsJd2hpbGUgKHRpbWVfb3V0KSB7Cj4+Pj4gKwkJaWYgKHJlcWRf bW9kZSAhPSBkcm1fbHNwY29uX2dldF9jdXJyZW50X21vZGUoYWRhcHRlcikpIHsKPj4+PiArCQkJ bWRlbGF5KDEwKTsKPj4+Cj4+PiBtZGVsYXkoKSBpcyBiYWQuCj4+IERvIHlvdSB0aGluayBJIHNo b3VsZCByZXBsYWNlIHdpdGggc29tZSBvZiB0aGUgbm9uLWJ1c3kgd2FpdCAobGlrZQo+PiBtc2xl ZXAgb3Igc28gPykKPgo+IEhvdyBsb25nIHdvdWxkIHdlIHR5cGljYWxseSBoYXZlIHRvIHdhaXQg Zm9yIHRoZSBtb2RlIHRvIGNoYW5nZT8KPgpJbiBhIG5vcm1hbCBzY2VuYXJpbywgaXQgdGFrZXMg bWF4IDEtMiBpdGVyYXRpb25zIChtYXggMjBtcykgYnV0Cm9uIEFuZHJvaWQgdHJlZXMsIFdlIGhh ZCBpbml0aWFsbHkgb2JzZXJ2ZWQgaXQgdGFraW5nIGFzIG11Y2ggYXMgMzAwbXMsIAooYnV0IHRo YXRzIG9uY2UgaW4gYSBibHVlIG1vb24pLiBNQ0EgaGFzIG1hZGUgc29tZSBjaGFuZ2VzIGluIHRo ZSBsYXRlc3QgCkxTUENPTiBGVywgdG8gbWFrZSBpdCBiZXR0ZXIuIEJ1dCAyMDBtcyBpcyBqdXN0 IHRvIGJlIGluIHRoZSBzYWZlciBzaWRlLgo+Pj4KPj4+PiArCQkJdGltZV9vdXQgLT0gMTA7Cj4+ Pj4gKwkJfSBlbHNlIHsKPj4+PiArCQkJRFJNX0RFQlVHX0tNUygiTFNQQ09OIG1vZGUgY2hhbmdl ZCB0byAlc1xuIiwKPj4+PiArCQkJcmVxZF9tb2RlID09IERSTV9MU1BDT05fTU9ERV9MUyA/ICJM UyIgOiAiUENPTiIpOwo+Pj4+ICsJCQlyZXR1cm4gMDsKPj4+PiArCQl9Cj4+Pj4gKwl9Cj4+Pj4g Kwo+Pj4+ICsJRFJNX0VSUk9SKCJMU1BDT04gbW9kZSBjaGFuZ2UgdGltZWQgb3V0XG4iKTsKPj4+ PiArCXJldHVybiAtRUZBVUxUOwo+Pj4KPj4+IEVGQVVMVCBkb2Vucyd0IHNlZW0gbGlrZSBhIHNl bnNpYmxlIGVycm9yIHZhbHVlIGhlcmUuIEVUSU1FRE9VVCBJCj4+PiBzdXBwb3NlIHNlZW1zIGxp a2Ugd2hhdCB3ZSBzaG91bGQgcmV0dXJuLgo+PiBTdXJlLgo+Pj4KPj4+PiArfQo+Pj4+ICtFWFBP UlRfU1lNQk9MKGRybV9sc3Bjb25fY2hhbmdlX21vZGUpOwo+Pj4+IGRpZmYgLS1naXQgYS9pbmNs dWRlL2RybS9kcm1fZHBfZHVhbF9tb2RlX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2R1 YWxfbW9kZV9oZWxwZXIuaAo+Pj4+IGluZGV4IGU4YTlkZmQuLmYzMzVkZjUgMTAwNjQ0Cj4+Pj4g LS0tIGEvaW5jbHVkZS9kcm0vZHJtX2RwX2R1YWxfbW9kZV9oZWxwZXIuaAo+Pj4+ICsrKyBiL2lu Y2x1ZGUvZHJtL2RybV9kcF9kdWFsX21vZGVfaGVscGVyLmgKPj4+PiBAQCAtMjQsNiArMjQsNyBA QAo+Pj4+ICAgICNkZWZpbmUgRFJNX0RQX0RVQUxfTU9ERV9IRUxQRVJfSAo+Pj4+Cj4+Pj4gICAg I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VkaWQuaD4K Pj4+Pgo+Pj4+ICAgIC8qCj4+Pj4gICAgICogT3B0aW9uYWwgZm9yIHR5cGUgMSBEVkkgYWRhcHRv cnMKPj4+PiBAQCAtNTQsNiArNTUsOSBAQAo+Pj4+ICAgICNkZWZpbmUgRFBfRFVBTF9NT0RFX0hE TUlfUElOX0NUUkwgMHgyMQo+Pj4+ICAgICNkZWZpbmUgIERQX0RVQUxfTU9ERV9DRUNfRU5BQkxF IDB4MDEKPj4+PiAgICAjZGVmaW5lIERQX0RVQUxfTU9ERV9JMkNfU1BFRURfQ1RSTCAweDIyCj4+ Pgo+Pj4gTWF5YmUgbGVhdmUgYW4gZW1wdHkgbGluZSBoZXJlIHRvIHNlcGFyYXRlIHRoZSBzdGFu ZGFyZCByZWdzIGZyb20gdGhlCj4+PiB2ZW5kb3Igc3BlY2lmaWMgb25lcy4gSG1tLiBBY3R1YWxs eSB0aGUgdmVuZG9yIHJlZ2lzdGVyIHNwYWNlIGlzCj4+PiAweDMwLTB4M2YsIHdoZXJlYXMgMHg0 MCsgaXMgcmVzZXJ2ZWQuIEJ1dCBhbnl3YXkgZW1wdHkgbGluZSB3b3VsZAo+Pj4gc2VlbSB3YXJy YW50ZWQuCj4+Pgo+PiBHb3QgaXQuCj4+Pj4gKyNkZWZpbmUgRFBfRFVBTF9NT0RFX0xTUENPTl9N T0RFX0NIQU5HRQkJMHg0MAo+Pj4+ICsjZGVmaW5lIERQX0RVQUxfTU9ERV9MU1BDT05fQ1VSUkVO VF9NT0RFCQkweDQxCj4+Pj4gKyNkZWZpbmUgRFBfRFVBTF9NT0RFX0xTUENPTl9NT0RFX01BU0sJ CQkweDEKPj4+Cj4+PiBQbGVhc2UgaW5kZW50IHRoZSBiaXQgZGVmbml0aW9uIGJ5IG9uZSBzcGFj ZSB0byBtYWtlIGl0IHN0YW5kIG91dCBmcm9tCj4+PiB0aGUgcmVnIGRlZmluZXMgYSBsaXR0bGUu Cj4+Pgo+PiBPaywgdGhlIGZpcnN0IHR3byBhcmUgcmVnaXN0ZXJzIG9ubHksIEkgZ3Vlc3MgdGhp cyBpcyBmb3IKPj4gRFBfRFVBTF9NT0RFX0xTUENPTl9NT0RFX01BU0suIEkgd2lsbCBhbGlnbiBp dC4KPj4+PiAgICBzdHJ1Y3QgaTJjX2FkYXB0ZXI7Cj4+Pj4KPj4+PiBAQCAtNjMsNiArNjcsMjAg QEAgc3NpemVfdCBkcm1fZHBfZHVhbF9tb2RlX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRh cHRlciwKPj4+PiAgICAJCQkgICAgICAgdTggb2Zmc2V0LCBjb25zdCB2b2lkICpidWZmZXIsIHNp emVfdCBzaXplKTsKPj4+Pgo+Pj4+ICAgIC8qKgo+Pj4+ICsqIGVudW0gZHJtX2xzcGNvbl9tb2Rl Cj4+Pj4gKyogQGxzcGNvbl9tb2RlX2ludmFsaWQ6IE5vIGlkZWEgd2hhdCdzIGdvaW5nIG9uCj4+ Pj4gKyogQGxzcGNvbl9tb2RlX2xzOiBMZXZlbCBzaGlmdGVyIG1vZGUgb2YgTFNQQ09OCj4+Pj4g KyoJd2hpY2ggZHJpdmVzIERQKysgdG8gSERNSSAxLjQgY29udmVyc2lvbi4KPj4+PiArKiBAbHNw Y29uX21vZGVfcGNvbjogUHJvdG9jb2wgY29udmVydGVyIG1vZGUgb2YgTFNQQ09OCj4+Pj4gKyoJ d2hpY2ggZHJpdmVzIERQKysgdG8gSERNSSAyLjAgYWN0aXZlIGNvbnZlcnNpb24uCj4+Pj4gKyov Cj4+Pj4gK2VudW0gZHJtX2xzcGNvbl9tb2RlIHsKPj4+PiArCURSTV9MU1BDT05fTU9ERV9JTlZB TElELAo+Pj4+ICsJRFJNX0xTUENPTl9NT0RFX0xTLAo+Pj4+ICsJRFJNX0xTUENPTl9NT0RFX1BD T04sCj4+Pj4gK307Cj4+Pgo+Pj4gSWYgd2UgY2hhbmdlIHRoZSBfZ2V0X21vZGUoKSB0aGluZyB0 byByZXR1cm4gdGhlIGVycm9yIHN0YXR1cyBzZXBhcmF0ZWx5Cj4+PiBmcm9tIHRoZSBtb2RlLCB3 ZSB3b24ndCBuZWVkIHRoZSBJTlZBTElEIHZhbHVlLgo+Pj4KPj4gQWdyZWUuCj4+Pj4gKwo+Pj4+ ICsvKioKPj4+PiAgICAgKiBlbnVtIGRybV9kcF9kdWFsX21vZGVfdHlwZSAtIFR5cGUgb2YgdGhl IERQIGR1YWwgbW9kZSBhZGFwdG9yCj4+Pj4gICAgICogQERSTV9EUF9EVUFMX01PREVfTk9ORTog Tm8gRFAgZHVhbCBtb2RlIGFkYXB0b3IKPj4+PiAgICAgKiBARFJNX0RQX0RVQUxfTU9ERV9VTktO T1dOOiBDb3VsZCBiZSBlaXRoZXIgbm9uZSBvciB0eXBlIDEgRFZJIGFkYXB0b3IKPj4+PiBAQCAt NzAsNiArODgsNyBAQCBzc2l6ZV90IGRybV9kcF9kdWFsX21vZGVfd3JpdGUoc3RydWN0IGkyY19h ZGFwdGVyICphZGFwdGVyLAo+Pj4+ICAgICAqIEBEUk1fRFBfRFVBTF9NT0RFX1RZUEUxX0hETUk6 IFR5cGUgMSBIRE1JIGFkYXB0b3IKPj4+PiAgICAgKiBARFJNX0RQX0RVQUxfTU9ERV9UWVBFMl9E Vkk6IFR5cGUgMiBEVkkgYWRhcHRvcgo+Pj4+ICAgICAqIEBEUk1fRFBfRFVBTF9NT0RFX1RZUEUy X0hETUk6IFR5cGUgMiBIRE1JIGFkYXB0b3IKPj4+PiArICogQERSTV9EUF9EVUFMX01PREVfVFlQ RTJfTFNQQ09OOiBMZXZlbCBzaGlmdGVyIC9wcm90b2NvbCBjb252ZXJ0ZXIKPj4+PiAgICAgKi8K Pj4+PiAgICBlbnVtIGRybV9kcF9kdWFsX21vZGVfdHlwZSB7Cj4+Pj4gICAgCURSTV9EUF9EVUFM X01PREVfTk9ORSwKPj4+PiBAQCAtNzgsNiArOTcsNyBAQCBlbnVtIGRybV9kcF9kdWFsX21vZGVf dHlwZSB7Cj4+Pj4gICAgCURSTV9EUF9EVUFMX01PREVfVFlQRTFfSERNSSwKPj4+PiAgICAJRFJN X0RQX0RVQUxfTU9ERV9UWVBFMl9EVkksCj4+Pj4gICAgCURSTV9EUF9EVUFMX01PREVfVFlQRTJf SERNSSwKPj4+PiArCURSTV9EUF9EVUFMX01PREVfTFNQQ09OLAo+Pj4+ICAgIH07Cj4+Pj4KPj4+ PiAgICBlbnVtIGRybV9kcF9kdWFsX21vZGVfdHlwZSBkcm1fZHBfZHVhbF9tb2RlX2RldGVjdChz dHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+Pj4+IEBAIC04OSw0ICsxMDksMTMgQEAgaW50 IGRybV9kcF9kdWFsX21vZGVfc2V0X3RtZHNfb3V0cHV0KGVudW0gZHJtX2RwX2R1YWxfbW9kZV90 eXBlIHR5cGUsCj4+Pj4gICAgCQkJCSAgICAgc3RydWN0IGkyY19hZGFwdGVyICphZGFwdGVyLCBi b29sIGVuYWJsZSk7Cj4+Pj4gICAgY29uc3QgY2hhciAqZHJtX2RwX2dldF9kdWFsX21vZGVfdHlw ZV9uYW1lKGVudW0gZHJtX2RwX2R1YWxfbW9kZV90eXBlIHR5cGUpOwo+Pj4+Cj4+Pj4gK2ludCBk cm1fZHBfZHVhbF9tb2RlX2lvYV9yZWFkKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTgg KmJ1ZmZlciwKPj4+PiArCQl1OCBvZmZzZXQsIHU4IG5vX29mX2J5dGVzKTsKPj4+PiAraW50IGRy bV9kcF9kdWFsX21vZGVfaW9hX3dyaXRlKHN0cnVjdCBpMmNfYWRhcHRlciAqYWRhcHRlciwgdTgg KmJ1ZmZlciwKPj4+PiArCQl1OCBvZmZzZXQsIHU4IG5vX29mX2J5dGVzKTsKPj4+PiAraW50IGRy bV9kcF9kdWFsX21vZGVfZ2V0X2VkaWQodm9pZCAqZGF0YSwKPj4+PiArCXU4ICpidWYsIHVuc2ln bmVkIGludCBibG9jaywgc2l6ZV90IGxlbik7Cj4+Pj4gK2VudW0gZHJtX2xzcGNvbl9tb2RlIGRy bV9sc3Bjb25fZ2V0X2N1cnJlbnRfbW9kZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0ZXIpOwo+ Pj4+ICtpbnQgZHJtX2xzcGNvbl9jaGFuZ2VfbW9kZShzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmFkYXB0 ZXIsCj4+Pj4gKwkJZW51bSBkcm1fbHNwY29uX21vZGUgcmVxZF9tb2RlKTsKPj4+PiAgICAjZW5k aWYKPj4+PiAtLQo+Pj4+IDEuOS4xCj4+Pgo+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=