From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Thulasimani, Sivakumar" Subject: Re: [PATCH 2/2] drm/i915: Add Backlight Control using DPCD for eDP connectors (v6) Date: Tue, 9 Feb 2016 18:59:05 +0530 Message-ID: <56B9E9A1.2090803@intel.com> References: <1454674733-7279-1-git-send-email-yetundex.adebisi@intel.com> <1454674733-7279-3-git-send-email-yetundex.adebisi@intel.com> <56B85854.8040709@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 250EA6E577 for ; Tue, 9 Feb 2016 05:29:08 -0800 (PST) In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Adebisi, YetundeX" , "intel-gfx@lists.freedesktop.org" Cc: "Nikula, Jani" List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyLzkvMjAxNiA2OjQxIFBNLCBBZGViaXNpLCBZZXR1bmRlWCB3cm90ZToKPgo+PiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+PiBGcm9tOiBUaHVsYXNpbWFuaSwgU2l2YWt1bWFyCj4+ IFNlbnQ6IE1vbmRheSwgRmVicnVhcnkgMDgsIDIwMTYgODo1NyBBTQo+PiBUbzogQWRlYmlzaSwg WWV0dW5kZVg7IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gQ2M6IE5pa3VsYSwg SmFuaQo+PiBTdWJqZWN0OiBSZTogW0ludGVsLWdmeF0gW1BBVENIIDIvMl0gZHJtL2k5MTU6IEFk ZCBCYWNrbGlnaHQgQ29udHJvbCB1c2luZwo+PiBEUENEIGZvciBlRFAgY29ubmVjdG9ycyAodjYp Cj4+Cj4+Cj4+Cj4+IE9uIDIvNS8yMDE2IDU6NDggUE0sIFlldHVuZGUgQWRlYmlzaSB3cm90ZToK Pj4+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlRFAgYmFja2xpZ2h0IGNvbnRyb2wgdXNp bmcgRFBDRCByZWdpc3RlcnMKPj4+IHRvIGJhY2tsaWdodCBob29rcyBpbiBpbnRlbF9wYW5lbC4K Pj4+Cj4+PiBJdCBjaGVja3MgZm9yIGJhY2tsaWdodCBjb250cm9sIG92ZXIgQVVYIGNoYW5uZWwg Y2FwYWJpbGl0eSBhbmQgc2V0cwo+Pj4gdXAgZnVuY3Rpb24gcG9pbnRlcnMgdG8gZ2V0IGFuZCBz ZXQgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNzIGxldmVsIGlmCj4+PiBzdXBwb3J0ZWQuCj4+Pgo+ Pj4gdjI6IE1vdmVkIGJhY2tsaWdodCBmdW5jdGlvbnMgZnJvbSBpbnRlbF9kcC5jIGludG8gYSBu ZXcgZmlsZQo+Pj4gaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jLiBBbHNvIG1vdmVkIHJlYWRpbmcg b2YgZURQIGRpc3BsYXkgY29udHJvbAo+Pj4gcmVnaXN0ZXJzIHRvIGludGVsX2RwX2dldF9kcGNk Cj4+Pgo+Pj4gdjM6IENvcnJlY3Qgc29tZSBmb3JtYXR0aW5nIG1pc3Rha2VzCj4+Pgo+Pj4gdjQ6 IFVwZGF0ZWQgdG8gdXNlIEFVWCBiYWNrbGlnaHQgY29udHJvbCBpZiBQV00gY29udHJvbCBpcyBu b3QgcG9zc2libGUKPj4+IAkoSmFuaSkKPj4+IHY1OiBNb3ZlZCBjYWxsIHRvIGluaXRpYWxpemUg YmFja2xpZ2h0IHJlZ2lzdGVycyB0bwo+Pj4gZHBfYXV4X3NldHVwX2JhY2tsaWdodAo+Pj4gdjY6 IENoZWNrIERQX0VEUF9CQUNLTElHSFRfUElOX0VOQUJMRV9DQVAgaXMgZGlzYWJsZWQgYmVmb3Jl Cj4+IHNldHRpbmcKPj4+IHVwIEFVWCBiYWNrbGlnaHQgY29udHJvbC4gVG8gZml4IEJMTV9QV01f RU5BQkxFIGlndCB0ZXN0IHdhcm5pbmdzIG9uCj4+PiBiZHdfdWx0cmEKPj4+Cj4+PiBUaGlzIHBh dGNoIGRlcGVuZHMgb24gaHR0cDovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvNjQy NTMvCj4+Pgo+Pj4gQ2M6IEJvYiBQYWF1d2UgPGJvYi5qLnBhYXV3ZUBpbnRlbC5jb20+Cj4+PiBD YzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPj4+IEFja2VkLWJ5OiBKZXNz ZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KPj4+IFNpZ25lZC1vZmYtYnk6IFll dHVuZGUgQWRlYmlzaSA8eWV0dW5kZXguYWRlYmlzaUBpbnRlbC5jb20+Cj4+PiAtLS0KPj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCj4+ PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgfCAgMTcg KystCj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMg fCAxNzAKPj4gKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4+ICAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAgNiArCj4+PiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jICAgICAgICAgICAgfCAgIDQgKwo+Pj4gICAgNSBmaWxl cyBjaGFuZ2VkLCAxOTIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKPj4+ICAgIGNyZWF0 ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0 LmMKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPj4+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgaW5kZXggMDg1MWRlMDcuLjQxMjUwY2Mg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPj4+IEBAIC03Nyw2ICs3Nyw3IEBAIGk5MTUt eSArPSBkdm9fY2g3MDE3Lm8gXAo+Pj4gICAgCSAgZHZvX3RmcDQxMC5vIFwKPj4+ICAgIAkgIGlu dGVsX2NydC5vIFwKPj4+ICAgIAkgIGludGVsX2RkaS5vIFwKPj4+ICsJICBpbnRlbF9kcF9hdXhf YmFja2xpZ2h0Lm8gXAo+Pj4gICAgCSAgaW50ZWxfZHBfbGlua190cmFpbmluZy5vIFwKPj4+ICAg IAkgIGludGVsX2RwX21zdC5vIFwKPj4+ICAgIAkgIGludGVsX2RwLm8gXAo+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPj4+IGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYyBpbmRleCBhMDczZjA0Li45Zjg2NzJlIDEwMDY0NAo+Pj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+Pj4gQEAgLTMxODMsNyArMzE4Myw3IEBAIHN0YXRpYyB2b2lkIGNo dl9kcF9wb3N0X3BsbF9kaXNhYmxlKHN0cnVjdAo+PiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ Pj4gICAgICogU2lua3MgYXJlICpzdXBwb3NlZCogdG8gY29tZSB1cCB3aXRoaW4gMW1zIGZyb20g YW4gb2ZmIHN0YXRlLCBidXQKPj4gd2UncmUgYWxzbwo+Pj4gICAgICogc3VwcG9zZWQgdG8gcmV0 cnkgMyB0aW1lcyBwZXIgdGhlIHNwZWMuCj4+PiAgICAgKi8KPj4+IC1zdGF0aWMgc3NpemVfdAo+ Pj4gK3NzaXplX3QKPj4+ICAgIGludGVsX2RwX2RwY2RfcmVhZF93YWtlKHN0cnVjdCBkcm1fZHBf YXV4ICphdXgsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4+PiAgICAJCQl2b2lkICpidWZmZXIsIHNp emVfdCBzaXplKQo+Pj4gICAgewo+Pj4gQEAgLTM4NTAsNyArMzg1MCw2IEBAIGludGVsX2RwX2dl dF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4+PiAgICAJc3RydWN0IGludGVsX2Rp Z2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4+PiAgICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRpZ19wb3J0LT5iYXNlLmJhc2UuZGV2Owo+Pj4gICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4+ PiAtCXVpbnQ4X3QgcmV2Owo+Pj4KPj4+ICAgIAlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uo JmludGVsX2RwLT5hdXgsIDB4MDAwLCBpbnRlbF9kcC0KPj4+IGRwY2QsCj4+PiAgICAJCQkJICAg IHNpemVvZihpbnRlbF9kcC0+ZHBjZCkpIDwgMCkgQEAgLTM4ODYsNgo+PiArMzg4NSwxNSBAQAo+ Pj4gaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPj4+ICAgIAkJ CURSTV9ERUJVR19LTVMoIlBTUjIgJXMgb24gc2luayIsCj4+PiAgICAJCQkJZGV2X3ByaXYtPnBz ci5wc3IyX3N1cHBvcnQgPyAic3VwcG9ydGVkIiA6Cj4+ICJub3Qgc3VwcG9ydGVkIik7Cj4+PiAg ICAJCX0KPj4+ICsKPj4+ICsJCS8qIFJlYWQgdGhlIGVEUCBEaXNwbGF5IGNvbnRyb2wgY2FwYWJp bGl0aWVzIHJlZ2lzdGVycyAqLwo+Pj4gKwkJbWVtc2V0KGludGVsX2RwLT5lZHBfZHBjZCwgMCwg c2l6ZW9mKGludGVsX2RwLQo+Pj4gZWRwX2RwY2QpKTsKPj4+ICsJCWlmICgoaW50ZWxfZHAtPmRw Y2RbRFBfRURQX0NPTkZJR1VSQVRJT05fQ0FQXSAmCj4+IERQX0RQQ0RfRElTUExBWV9DT05UUk9M X0NBUEFCTEUpICYmCj4+PiArCQkJCShpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAt PmF1eCwKPj4gRFBfRURQX0RQQ0RfUkVWLAo+Pj4gKwkJCQkJCWludGVsX2RwLT5lZHBfZHBjZCwK Pj4gc2l6ZW9mKGludGVsX2RwLT5lZHBfZHBjZCkpID09Cj4+PiArCj4+IAlzaXplb2YoaW50ZWxf ZHAtPmVkcF9kcGNkKSkpCj4+PiArCQkJRFJNX0RFQlVHX0tNUygiRURQIERQQ0QgOiAlKnBoXG4i LCAoaW50KQo+PiBzaXplb2YoaW50ZWxfZHAtPmVkcF9kcGNkKSwKPj4+ICsJCQkJCWludGVsX2Rw LT5lZHBfZHBjZCk7Cj4+PiAgICAJfQo+Pj4KPj4+ICAgIAlEUk1fREVCVUdfS01TKCJEaXNwbGF5 IFBvcnQgVFBTMyBzdXBwb3J0OiBzb3VyY2UgJXMsIHNpbmsKPj4gJXNcbiIsIEBACj4+PiAtMzg5 MywxMCArMzkwMSw3IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4+PiAgICAJCSAgICAgIHllc25vKGRybV9kcF90cHMzX3N1cHBvcnRlZChpbnRlbF9kcC0+ ZHBjZCkpKTsKPj4+Cj4+PiAgICAJLyogSW50ZXJtZWRpYXRlIGZyZXF1ZW5jeSBzdXBwb3J0ICov Cj4+PiAtCWlmIChpc19lZHAoaW50ZWxfZHApICYmCj4+PiAtCSAgICAoaW50ZWxfZHAtPmRwY2Rb RFBfRURQX0NPTkZJR1VSQVRJT05fQ0FQXSAmCj4+IAlEUF9EUENEX0RJU1BMQVlfQ09OVFJPTF9D QVBBQkxFKSAmJgo+Pj4gLQkgICAgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+ YXV4LCBEUF9FRFBfRFBDRF9SRVYsCj4+ICZyZXYsIDEpID09IDEpICYmCj4+PiAtCSAgICAocmV2 ID49IDB4MDMpKSB7IC8qIGVEcCB2MS40IG9yIGhpZ2hlciAqLwo+Pj4gKwlpZiAoaXNfZWRwKGlu dGVsX2RwKSAmJiAoaW50ZWxfZHAtPmVkcF9kcGNkWzBdID49IDB4MDMpKSB7IC8qIGVEcAo+Pj4g K3YxLjQgb3IgaGlnaGVyICovCj4+PiAgICAJCV9fbGUxNiBzaW5rX3JhdGVzW0RQX01BWF9TVVBQ T1JURURfUkFURVNdOwo+Pj4gICAgCQlpbnQgaTsKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jCj4+PiBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQKPj4+IGluZGV4IDAwMDAwMDAuLmE1MzYxZDYKPj4+IC0tLSAvZGV2L251bGwKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+Pj4gQEAgLTAs MCArMSwxNzAgQEAKPj4+ICsvKgo+Pj4gKyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBv cmF0aW9uCj4+PiArICoKPj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbgo+Pj4gK29idGFpbmluZyBhCj4+PiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQo+ Pj4gKyJTb2Z0d2FyZSIpLAo+Pj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0Cj4+PiArbGltaXRhdGlvbgo+Pj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LAo+Pj4gK3N1YmxpY2Vuc2UsCj4+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20KPj4+ICt0aGUKPj4+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgo+Pj4gKyAqCj4+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZwo+Pj4gK3RoZSBuZXh0Cj4+PiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zCj4+PiArb2YgdGhlCj4+PiArICogU29mdHdhcmUuCj4+PiArICoKPj4+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkKPj4g S0lORCwKPj4+ICtFWFBSRVNTIE9SCj4+PiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgo+Pj4gK01FUkNIQU5UQUJJTElUWSwKPj4+ICsg KiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAg SU4KPj4gTk8gRVZFTlQKPj4+ICtTSEFMTAo+Pj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+PiBEQU1BR0VTCj4+PiArT1IgT1RI RVIKPj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SCj4+IE9USEVSV0lTRSwKPj4+ICtBUklTSU5HCj4+PiArICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRQo+PiBPUgo+Pj4gK09U SEVSIERFQUxJTkdTCj4+PiArICogSU4gVEhFIFNPRlRXQVJFLgo+Pj4gKyAqCj4+PiArICovCj4+ PiArCj4+PiArI2luY2x1ZGUgImludGVsX2Rydi5oIgo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHNl dF9hdXhfYmFja2xpZ2h0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBib29sCj4+ PiArZW5hYmxlKSB7Cj4+PiArCXVpbnQ4X3QgcmVnX3ZhbCA9IDA7Cj4+PiArCj4+PiArCWlmIChp bnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPj4gRFBfRURQX0RJU1BMQVlf Q09OVFJPTF9SRUdJU1RFUiwKPj4+ICsJCQkmcmVnX3ZhbCwgc2l6ZW9mKHJlZ192YWwpKSA8IDAp IHsKPj4+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQQ0QgcmVnaXN0ZXIgMHgl eFxuIiwKPj4+ICsJCQkJRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUik7Cj4+PiArCQly ZXR1cm47Cj4+PiArCX0KPj4+ICsJaWYgKGVuYWJsZSkKPj4+ICsJCXJlZ192YWwgfD0gRFBfRURQ X0JBQ0tMSUdIVF9FTkFCTEU7Cj4+PiArCWVsc2UKPj4+ICsJCXJlZ192YWwgJj0gfihEUF9FRFBf QkFDS0xJR0hUX0VOQUJMRSk7Cj4+PiArCj4+PiArCWlmIChkcm1fZHBfZHBjZF93cml0ZWIoJmlu dGVsX2RwLT5hdXgsCj4+IERQX0VEUF9ESVNQTEFZX0NPTlRST0xfUkVHSVNURVIsCj4+PiArCQkJ cmVnX3ZhbCkgPCAwKSB7Cj4+PiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gJXMgYXV4IGJh Y2tsaWdodFxuIiwKPj4+ICsJCQkJZW5hYmxlID8gImVuYWJsZSIgOiAiZGlzYWJsZSIpOwo+Pj4g Kwl9Cj4+PiArfQo+Pj4gKwo+Pj4gKy8qCj4+PiArICogUmVhZCB0aGUgY3VycmVudCBiYWNrbGln aHQgdmFsdWUgZnJvbSBEUENEIHJlZ2lzdGVyKHMpIGJhc2VkCj4+PiArICogb24gaWYgOC1iaXQo TVNCKSBvciAxNi1iaXQoTVNCIGFuZCBMU0IpIHZhbHVlcyBhcmUgc3VwcG9ydGVkICAqLwo+Pj4g K3N0YXRpYyB1aW50MzJfdCBpbnRlbF9kcF9hdXhfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yCj4+PiArKmNvbm5lY3Rvcikgewo+Pj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItCj4+PiBiYXNlKTsKPj4+ ICsJdWludDhfdCByZWFkX3ZhbFsyXSA9IHsgMHgwIH07Cj4+PiArCXVpbnQxNl90IGxldmVsID0g MDsKPj4+ICsKPj4+ICsJaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4 LAo+PiBEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTVNCLAo+Pj4gKwkJCSZyZWFkX3ZhbCwg c2l6ZW9mKHJlYWRfdmFsKSkgPCAwKSB7Cj4+PiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8g cmVhZCBEUENEIHJlZ2lzdGVyIDB4JXhcbiIsCj4+PiArCQkJCURQX0VEUF9CQUNLTElHSFRfQlJJ R0hUTkVTU19NU0IpOwo+Pj4gKwkJcmV0dXJuIDA7Cj4+PiArCX0KPj4+ICsJbGV2ZWwgPSByZWFk X3ZhbFswXTsKPj4+ICsJaWYgKGludGVsX2RwLT5lZHBfZHBjZFsyXSAmCj4+IERQX0VEUF9CQUNL TElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQo+Pj4gKwkJbGV2ZWwgPSAocmVhZF92YWxbMF0g PDwgOCB8IHJlYWRfdmFsWzFdKTsKPj4+ICsKPj4+ICsJcmV0dXJuIGxldmVsOwo+Pj4gK30KPj4+ ICsKPj4+ICsvKgo+Pj4gKyAqIFNlbmRzIHRoZSBjdXJyZW50IGJhY2tsaWdodCBsZXZlbCBvdmVy IHRoZSBhdXggY2hhbm5lbCwgY2hlY2tpbmcKPj4+ICtpZiBpdHMgdXNpbmcKPj4+ICsgKiA4LWJp dCBvciAxNiBiaXQgdmFsdWUgKE1TQiBhbmQgTFNCKSAgKi8gc3RhdGljIHZvaWQKPj4+ICtpbnRl bF9kcF9hdXhfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3Is IHUzMgo+Pj4gK2xldmVsKSB7Cj4+PiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNf dG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5jb2Rlci0KPj4+IGJhc2UpOwo+Pj4gKwl1aW50OF90 IHZhbHNbMl0gPSB7IDB4MCB9Owo+Pj4gKwo+Pj4gKwl2YWxzWzBdID0gbGV2ZWw7Cj4+PiArCj4+ PiArCS8qIFdyaXRlIHRoZSBNU0IgYW5kL29yIExTQiAqLwo+Pj4gKwkgaWYgKGludGVsX2RwLT5l ZHBfZHBjZFsyXSAmCj4+IERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKSB7 Cj4+PiArCQl2YWxzWzBdID0gKGxldmVsICYgMHhGRjAwKSA+PiA4Owo+Pj4gKwkJdmFsc1sxXSA9 IChsZXZlbCAmIDB4RkYpOwo+Pj4gKwl9Cj4+PiArCWlmIChkcm1fZHBfZHBjZF93cml0ZSgmaW50 ZWxfZHAtPmF1eCwKPj4gRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiwKPj4+ICsJCQl2 YWxzLCBzaXplb2YodmFscykpIDwgMCkgewo+Pj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRv IHdyaXRlIGF1eCBiYWNrbGlnaHQgbGV2ZWxcbiIpOwo+Pj4gKwkJcmV0dXJuOwo+Pj4gKwl9Cj4+ PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0 KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPj4+ICsqY29ubmVjdG9yKSB7Cj4+PiArCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5jb2Rlci0K Pj4+IGJhc2UpOwo+Pj4gKwl1aW50OF90IGRwY2RfYnVmID0gMDsKPj4+ICsKPj4+ICsJc2V0X2F1 eF9iYWNrbGlnaHRfZW5hYmxlKGludGVsX2RwLCB0cnVlKTsKPj4+ICsKPj4+ICsJaWYgKChpbnRl bF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPj4+ICsJCQlEUF9FRFBfQkFDS0xJ R0hUX01PREVfU0VUX1JFR0lTVEVSLAo+PiAmZHBjZF9idWYsIDEpID09IDEpICYmCj4+PiArCQkJ KChkcGNkX2J1ZiAmCj4+IERQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9NT0RFX01BU0spID09Cj4+ PiArCj4+IAlEUF9FRFBfQkFDS0xJR0hUX0NPTlRST0xfTU9ERV9QUkVTRVQpKQo+Pj4gKwkJZHJt X2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LAo+PiBEUF9FRFBfQkFDS0xJR0hUX01PREVf U0VUX1JFR0lTVEVSLAo+Pj4gKwkJCQkoZHBjZF9idWYgfAo+PiBEUF9FRFBfQkFDS0xJR0hUX0NP TlRST0xfTU9ERV9EUENEKSk7Cj4+PiArfQo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIGludGVsX2Rw X2F1eF9kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yCj4+PiArKmNvbm5l Y3Rvcikgewo+Pj4gKwlzZXRfYXV4X2JhY2tsaWdodF9lbmFibGUoZW5jX3RvX2ludGVsX2RwKCZj b25uZWN0b3ItPmVuY29kZXItCj4+PiBiYXNlKSwKPj4+ICtmYWxzZSk7IH0KPj4+ICsKPj4+ICtz dGF0aWMgaW50IGludGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5l Y3Rvcgo+PiAqY29ubmVjdG9yLAo+Pj4gKwkJCWVudW0gcGlwZSBwaXBlKQo+Pj4gK3sKPj4+ICsJ c3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5l bmNvZGVyLQo+Pj4gYmFzZSk7Cj4+PiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29u bmVjdG9yLT5wYW5lbDsKPj4+ICsKPj4+ICsJaW50ZWxfZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQo Y29ubmVjdG9yKTsKPj4+ICsKPj4+ICsJaWYgKGludGVsX2RwLT5lZHBfZHBjZFsyXSAmCj4+IERQ X0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQo+Pj4gKwkJcGFuZWwtPmJhY2ts aWdodC5tYXggPSAweEZGRkY7Cj4+PiArCWVsc2UKPj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQubWF4 ID0gMHhGRjsKPj4+ICsKPj4+ICsJcGFuZWwtPmJhY2tsaWdodC5taW4gPSAwOwo+Pj4gKwlwYW5l bC0+YmFja2xpZ2h0LmxldmVsID0gaW50ZWxfZHBfYXV4X2dldF9iYWNrbGlnaHQoY29ubmVjdG9y KTsKPj4+ICsKPj4+ICsJcGFuZWwtPmJhY2tsaWdodC5lbmFibGVkID0gcGFuZWwtPmJhY2tsaWdo dC5sZXZlbCAhPSAwOwo+Pj4gKwo+Pj4gKwlyZXR1cm4gMDsKPj4+ICt9Cj4+PiArCj4+PiArc3Rh dGljIGJvb2wKPj4+ICtpbnRlbF9kcF9hdXhfZGlzcGxheV9jb250cm9sX2NhcGFibGUoc3RydWN0 IGludGVsX2Nvbm5lY3Rvcgo+Pj4gKypjb25uZWN0b3IpIHsKPj4+ICsJc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCA9Cj4+PiArZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJh c2UpOwo+Pj4gKwo+Pj4gKwkvKiBDaGVjayB0aGUgIGVEUCBEaXNwbGF5IGNvbnRyb2wgY2FwYWJp bGl0aWVzIHJlZ2lzdGVycyB0byBkZXRlcm1pbmUgaWYKPj4+ICsJICogdGhlIHBhbmVsIGNhbiBz dXBwb3J0IGJhY2tsaWdodCBjb250cm9sIG92ZXIgdGhlIGF1eCBjaGFubmVsCj4+PiArCSAqLwo+ Pj4gKwlpZiAoaW50ZWxfZHAtPmVkcF9kcGNkWzFdICYKPj4gRFBfRURQX1RDT05fQkFDS0xJR0hU X0FESlVTVE1FTlRfQ0FQICYmCj4+PiArCQkJKGludGVsX2RwLT5lZHBfZHBjZFsxXSAmCj4+IERQ X0VEUF9CQUNLTElHSFRfQVVYX0VOQUJMRV9DQVApICYmCj4+PiArCQkJISgoaW50ZWxfZHAtPmVk cF9kcGNkWzFdICYKPj4gRFBfRURQX0JBQ0tMSUdIVF9QSU5fRU5BQkxFX0NBUCkgfHwKPj4+ICsJ CQkJCShpbnRlbF9kcC0+ZWRwX2RwY2RbMl0gJgo+Pj4gK0RQX0VEUF9CQUNLTElHSFRfQlJJR0hU TkVTU19QV01fUElOX0NBUCkpKSB7Cj4+PiArCj4+PiArCQlEUk1fREVCVUdfS01TKCJBVVggQmFj a2xpZ2h0IENvbnRyb2wgU3VwcG9ydGVkIVxuIik7Cj4+PiArCQlyZXR1cm4gdHJ1ZTsKPj4+ICsJ fQo+Pj4gKwlyZXR1cm4gZmFsc2U7Cj4+PiArfQo+Pj4gKwo+Pj4gK2ludCBpbnRlbF9kcF9hdXhf aW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX2Nvbm5lY3Rvcgo+Pj4gKyppbnRlbF9j b25uZWN0b3IpIHsKPj4+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZpbnRlbF9jb25u ZWN0b3ItPnBhbmVsOwo+Pj4gKwo+Pj4gKwlpZiAoIWludGVsX2RwX2F1eF9kaXNwbGF5X2NvbnRy b2xfY2FwYWJsZShpbnRlbF9jb25uZWN0b3IpKQo+Pj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4+PiAr Cj4+PiArCXBhbmVsLT5iYWNrbGlnaHQuc2V0dXAgPSBpbnRlbF9kcF9hdXhfc2V0dXBfYmFja2xp Z2h0Owo+Pj4gKwlwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZSA9IGludGVsX2RwX2F1eF9lbmFibGVf YmFja2xpZ2h0Owo+Pj4gKwlwYW5lbC0+YmFja2xpZ2h0LmRpc2FibGUgPSBpbnRlbF9kcF9hdXhf ZGlzYWJsZV9iYWNrbGlnaHQ7Cj4+PiArCXBhbmVsLT5iYWNrbGlnaHQuc2V0ID0gaW50ZWxfZHBf YXV4X3NldF9iYWNrbGlnaHQ7Cj4+PiArCXBhbmVsLT5iYWNrbGlnaHQuZ2V0ID0gaW50ZWxfZHBf YXV4X2dldF9iYWNrbGlnaHQ7Cj4+PiArCj4+PiArCXJldHVybiAwOwo+Pj4gK30KPj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4gYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4gaW5kZXggOTNiYTE0YS4uZTE5ZWUyMiAxMDA2NDQK Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+Pj4gQEAgLTc2MSw2ICs3NjEsNyBAQCBzdHJ1 Y3QgaW50ZWxfZHAgewo+Pj4gICAgCXVpbnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07 Cj4+PiAgICAJdWludDhfdCBwc3JfZHBjZFtFRFBfUFNSX1JFQ0VJVkVSX0NBUF9TSVpFXTsKPj4+ ICAgIAl1aW50OF90IGRvd25zdHJlYW1fcG9ydHNbRFBfTUFYX0RPV05TVFJFQU1fUE9SVFNdOwo+ Pj4gKwl1aW50OF90IGVkcF9kcGNkW0VEUF9ESVNQTEFZX0NUTF9DQVBfU0laRV07Cj4+PiAgICAJ Lyogc2luayByYXRlcyBhcyByZXBvcnRlZCBieSBEUF9TVVBQT1JURURfTElOS19SQVRFUyAqLwo+ Pj4gICAgCXVpbnQ4X3QgbnVtX3NpbmtfcmF0ZXM7Cj4+PiAgICAJaW50IHNpbmtfcmF0ZXNbRFBf TUFYX1NVUFBPUlRFRF9SQVRFU107Cj4+PiBAQCAtMTI4Nyw2ICsxMjg4LDExIEBAIHZvaWQgaW50 ZWxfZHBfY29tcHV0ZV9yYXRlKHN0cnVjdCBpbnRlbF9kcAo+PiAqaW50ZWxfZHAsIGludCBwb3J0 X2Nsb2NrLAo+Pj4gICAgYm9vbCBpbnRlbF9kcF9zb3VyY2Vfc3VwcG9ydHNfaGJyMihzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKTsKPj4+ICAgIGJvb2wKPj4+ICAgIGludGVsX2RwX2dldF9saW5r X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90Cj4+PiBsaW5rX3N0YXR1 c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7Cj4+PiArc3NpemVfdCBpbnRlbF9kcF9kcGNkX3JlYWRf d2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQKPj4gb2Zmc2V0LAo+Pj4g KwkJdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7Cj4+PiArCj4+PiArLyogaW50ZWxfZHBfYXV4 X2JhY2tsaWdodC5jICovCj4+PiAraW50IGludGVsX2RwX2F1eF9pbml0X2JhY2tsaWdodF9mdW5j cyhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yCj4+PiArKmludGVsX2Nvbm5lY3Rvcik7Cj4+Pgo+Pj4g ICAgLyogaW50ZWxfZHBfbXN0LmMgKi8KPj4+ICAgIGludCBpbnRlbF9kcF9tc3RfZW5jb2Rlcl9p bml0KHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQKPj4+ICppbnRlbF9kaWdfcG9ydCwgaW50IGNv bm5faWQpOyBkaWZmIC0tZ2l0Cj4+PiBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+Pj4gaW5kZXggMjFl ZTY0Ny4uOTQxYzZmZSAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3BhbmVsLmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPj4+ IEBAIC0xNzIwLDYgKzE3MjAsMTAgQEAgaW50ZWxfcGFuZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Mo c3RydWN0Cj4+IGludGVsX3BhbmVsICpwYW5lbCkKPj4+ICAgIAkJY29udGFpbmVyX29mKHBhbmVs LCBzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yLCBwYW5lbCk7Cj4+PiAgICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShjb25uZWN0b3ItPmJhc2UuZGV2KTsKPj4+Cj4+ PiArCWlmIChjb25uZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5cGUgPT0KPj4gRFJNX01PREVfQ09O TkVDVE9SX2VEUCAmJgo+Pj4gKwkJCWludGVsX2RwX2F1eF9pbml0X2JhY2tsaWdodF9mdW5jcyhj b25uZWN0b3IpID09IDApCj4+PiArCQlyZXR1cm47Cj4+PiArCj4+IGNhbiB3ZSBtYWtlIHRoaXMg ZmVhdHVyZSB0byBiZSBlbmFibGVkIGV4cGxpY2l0bHkgcmF0aGVyIHRoYW4gaWYgdGhlIHBhbmVs Cj4+IHN1cHBvcnRzIGl0ID8gd2UgaGF2ZSBuZXZlciBjaGVja2VkIGZvciB0aGVzZSBkcGNkIHJl Z2lzdGVycyB0aWxsIG5vdyBhbmQgaXQgaXMKPj4gcXVpdGUgcG9zc2libGUgZm9yIGFueSBvbmUg cGFuZWwgdG8gcGFzcyB0aGlzIGV2ZW4gdGhvdWdoIHdlIGFyZSB1c2luZyBpdCB3aXRoCj4+IFBX TSBiYXNlZCBjb250cm9sIGF0IHByZXNlbnQuIGkuZSB3ZSBrZWVwIFBTUiBkaXNhYmxlZCBzdGls bCBzaW5jZSBpdCBpcyBub3QKPj4gd29ya2luZyBhbHdheXMsIHdoeSBzaG91bGQgd2UgZW5hYmxl IHRoaXMgYnkgZGVmYXVsdCA6KS4KPiBJIGNhbiBkbyB0aGF0IGlmIHRoZXJlIGlzIG5vIG9iamVj dGlvbi4gU29tZXRoaW5nIGxpa2UgZW5hYmxlX2RjcGRfYmFja2xpZ2h0IHBhcmFtZXRlcj8KeWVz LHRoYXQgc2hvdWxkIG1ha2UgdGhpcyBiZXR0ZXIuIGFueXRoaW5nIHRoYXQgY2FuIGF2b2lkIGEg cmVncmVzc2lvbiAKaXMgZ29vZCA6KS4KPj4gaSB1bmRlcnN0YW5kIGkgYW0gbGF0ZSB0byB0aGlz IHRocmVhZCwgYnV0IGdvb2QgdG8gY2hlY2sgbGF0ZSBhdC1sZWFzdC4KPj4gZGlkIHlvdSB0ZXN0 IHdpdGggRFBTVCBkaXNhYmxlZCBvciBkb2VzIHRoaXMgYWZmZWN0IHRoZSBwYW5lbCB1c2FiaWxp dHkgd2l0aAo+PiBkcHN0IGVuYWJsZWQgb3IgZGlzYWJsZWQgPwo+PiBTaXZha3VtYXIKPiBJIGhh dmUgbm90IHRlc3RlZCBpdCB3aXRoIERQU1QsIGhvdyBkbyBJIGVuYWJsZSBEUFNUPwpEUFNUIHNo b3VsZCBiZSBvbiBieSBkZWZhdWx0LiBpbiBjYXNlIHlvdSBoYXZlIG5vdCBvYnNlcnZlZCBhbnkK ZmxpY2tlcmluZyBvciBicmlnaHRuZXNzIGNoYW5nZXMgZHVyaW5nIHZhcmlvdXMgY29udGVudHMg dGhlbgppdCBzaG91bGQgYmUgZmluZS4KClNpdmFrdW1hcgo+Pj4gICAgCWlmIChJU19CUk9YVE9O KGRldl9wcml2KSkgewo+Pj4gICAgCQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gYnh0X3NldHVw X2JhY2tsaWdodDsKPj4+ICAgIAkJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBieHRfZW5hYmxl X2JhY2tsaWdodDsKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=