From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 2/3] drm/i915: Add Backlight Control using DPCD for eDP connectors (v8) Date: Thu, 31 Mar 2016 10:22:53 +0300 Message-ID: <87bn5vnmb6.fsf@intel.com> References: <1459348041-28165-1-git-send-email-yetundex.adebisi@intel.com> <1459348041-28165-3-git-send-email-yetundex.adebisi@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 ESMTP id 2280E6E9B3 for ; Thu, 31 Mar 2016 07:23:21 +0000 (UTC) In-Reply-To: <1459348041-28165-3-git-send-email-yetundex.adebisi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: Yetunde Adebisi , isg-gms@eclists.intel.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAzMCBNYXIgMjAxNiwgWWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGlu dGVsLmNvbT4gd3JvdGU6Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVEUCBiYWNrbGln aHQgY29udHJvbCB1c2luZyBEUENEIHJlZ2lzdGVycyB0bwo+IGJhY2tsaWdodCBob29rcyBpbiBp bnRlbF9wYW5lbC4KPgo+IEl0IGNoZWNrcyBmb3IgYmFja2xpZ2h0IGNvbnRyb2wgb3ZlciBBVVgg Y2hhbm5lbCBjYXBhYmlsaXR5IGFuZCBzZXRzIHVwCj4gZnVuY3Rpb24gcG9pbnRlcnMgdG8gZ2V0 IGFuZCBzZXQgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNzIGxldmVsIGlmCj4gc3VwcG9ydGVkLgo+ Cj4gdjI6IE1vdmVkIGJhY2tsaWdodCBmdW5jdGlvbnMgZnJvbSBpbnRlbF9kcC5jIGludG8gYSBu ZXcgZmlsZQo+IGludGVsX2RwX2F1eF9iYWNrbGlnaHQuYy4gQWxzbyBtb3ZlZCByZWFkaW5nIG9m IGVEUCBkaXNwbGF5IGNvbnRyb2wKPiByZWdpc3RlcnMgdG8gaW50ZWxfZHBfZ2V0X2RwY2QKPgo+ IHYzOiBDb3JyZWN0IHNvbWUgZm9ybWF0dGluZyBtaXN0YWtlcwo+Cj4gdjQ6IFVwZGF0ZWQgdG8g dXNlIEFVWCBiYWNrbGlnaHQgY29udHJvbCBpZiBQV00gY29udHJvbCBpcyBub3QgcG9zc2libGUK PiAJKEphbmkpCj4gdjU6IE1vdmVkIGNhbGwgdG8gaW5pdGlhbGl6ZSBiYWNrbGlnaHQgcmVnaXN0 ZXJzIHRvIGRwX2F1eF9zZXR1cF9iYWNrbGlnaHQKPiB2NjogQ2hlY2sgRFBfRURQX0JBQ0tMSUdI VF9QSU5fRU5BQkxFX0NBUCBpcyBkaXNhYmxlZCBiZWZvcmUgc2V0dGluZyB1cCBBVVgKPiBiYWNr bGlnaHQgY29udHJvbC4gVG8gZml4IEJMTV9QV01fRU5BQkxFIGlndCB0ZXN0IHdhcm5pbmdzIG9u IGJkd191bHRyYQo+IHY3OiBBZGQgZW5hYmxlX2RwY2RfYmFja2xpZ2h0IG1vZHVsZSBwYXJhbWV0 ZXIuCj4gdjg6IFJlYmFzZSBvbnRvIGxhdGVzdCBkcm0taW50ZWwtbmlnaHRseSBicmFuY2gKPgo+ IFRoaXMgcGF0Y2ggZGVwZW5kcyBvbiBodHRwOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9w YXRjaC82NDI1My8KPgo+IENjOiBCb2IgUGFhdXdlIDxib2Iuai5wYWF1d2VAaW50ZWwuY29tPgo+ IENjOiBKYW5pIE5pa3VsYSA8amFuaS5uaWt1bGFAaW50ZWwuY29tPgo+IEFja2VkLWJ5OiBKZXNz ZSBCYXJuZXMgPGpiYXJuZXNAdmlydHVvdXNnZWVrLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBZZXR1 bmRlIEFkZWJpc2kgPHlldHVuZGV4LmFkZWJpc2lAaW50ZWwuY29tPgoKUGxlYXNlIGFjY2VwdCBt eSBhcG9sb2dpZXMgZm9yIHRha2luZyBzbyBsb25nIHRvIGdldCBiYWNrIHRvCnRoaXMuIE92ZXJh bGwgbG9va3MgZmluZSwgYSBjb3VwbGUgb2YgIm1lY2hhbmljIiBjaGFuZ2VzIHJlcXVpcmVkIChz ZWUKY29tbWVudHMgaW5saW5lIGJlbG93KS4KCkFzIGZvbGxvdy11cCBsYXRlciBvbiB3ZSBzaG91 bGQgbG9vayBhdCB1c2luZyB2YnQgYXMgaW4gWzFdIHRvIHJlcGxhY2UKdGhlIG1vZHVsZSBwYXJh bWV0ZXIuIFRoaXMgc21lbGxzIGxpa2UgdGhlICJwYW5lbCBkcml2ZXIKaW50ZXJmYWNlIi4gTWF5 YmUuCgpCUiwKSmFuaS4KClsxXSBodHRwOi8vbWlkLmdtYW5lLm9yZy8xNDU5MzQ2NjIzLTMwNzUy LTMtZ2l0LXNlbmQtZW1haWwtamFuaS5uaWt1bGFAaW50ZWwuY29tCgoKPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuYyAgICAgICAgICAgIHwgICA0ICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaCAgICAgICAgICAgIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyAgICAgICAgICAgICAgIHwgIDE3ICsrLQo+ICBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMgfCAxNzAgKysrKysrKysr KysrKysrKysrKysrKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAg ICAgICAgICAgIHwgICA2ICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAg ICAgICAgICAgIHwgICA1ICsKPiAgNyBmaWxlcyBjaGFuZ2VkLCAxOTggaW5zZXJ0aW9ucygrKSwg NiBkZWxldGlvbnMoLSkKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA3 ZmZiNTFiLi4xMWNjM2U2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNzksNiArNzks NyBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPiAgCSAgZHZvX3RmcDQxMC5vIFwKPiAgCSAg aW50ZWxfY3J0Lm8gXAo+ICAJICBpbnRlbF9kZGkubyBcCj4gKwkgIGludGVsX2RwX2F1eF9iYWNr bGlnaHQubyBcCj4gIAkgIGludGVsX2RwX2xpbmtfdHJhaW5pbmcubyBcCj4gIAkgIGludGVsX2Rw X21zdC5vIFwKPiAgCSAgaW50ZWxfZHAubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGFyYW1zLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BhcmFtcy5j Cj4gaW5kZXggMTc3OWYwMi4uMzgzYzA3NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BhcmFtcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJh bXMuYwo+IEBAIC01OCw2ICs1OCw3IEBAIHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9t b3N0bHkgPSB7Cj4gIAkuZ3VjX2xvZ19sZXZlbCA9IC0xLAo+ICAJLmVuYWJsZV9kcF9tc3QgPSB0 cnVlLAo+ICAJLmluamVjdF9sb2FkX2ZhaWx1cmUgPSAwLAo+ICsJLmVuYWJsZV9kcGNkX2JhY2ts aWdodCA9IGZhbHNlLAo+ICB9Owo+ICAKPiAgbW9kdWxlX3BhcmFtX25hbWVkKG1vZGVzZXQsIGk5 MTUubW9kZXNldCwgaW50LCAwNDAwKTsKPiBAQCAtMjEwLDMgKzIxMSw2IEBAIE1PRFVMRV9QQVJN X0RFU0MoZW5hYmxlX2RwX21zdCwKPiAgbW9kdWxlX3BhcmFtX25hbWVkX3Vuc2FmZShpbmplY3Rf bG9hZF9mYWlsdXJlLCBpOTE1LmluamVjdF9sb2FkX2ZhaWx1cmUsIHVpbnQsIDA0MDApOwo+ICBN T0RVTEVfUEFSTV9ERVNDKGluamVjdF9sb2FkX2ZhaWx1cmUsCj4gIAkiRm9yY2UgYW4gZXJyb3Ig YWZ0ZXIgYSBudW1iZXIgb2YgZmFpbHVyZSBjaGVjayBwb2ludHMgKDA6ZGlzYWJsZWQgKGRlZmF1 bHQpLCBOOmZvcmNlIGZhaWx1cmUgYXQgdGhlIE50aCBmYWlsdXJlIGNoZWNrIHBvaW50KSIpOwo+ ICttb2R1bGVfcGFyYW1fbmFtZWQoZW5hYmxlX2RwY2RfYmFja2xpZ2h0LCBpOTE1LmVuYWJsZV9k cGNkX2JhY2tsaWdodCwgYm9vbCwgMDYwMCk7Cj4gK01PRFVMRV9QQVJNX0RFU0MoZW5hYmxlX2Rw Y2RfYmFja2xpZ2h0LAo+ICsJIkVuYWJsZSBzdXBwb3J0IGZvciBEUENEIGJhY2tsaWdodCBjb250 cm9sIChkZWZhdWx0OmZhbHNlKSIpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BhcmFtcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wYXJhbXMuaAo+IGlu ZGV4IDAyYmMyNzguLjY1ZTczZGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9wYXJhbXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGFyYW1zLmgK PiBAQCAtNjEsNiArNjEsNyBAQCBzdHJ1Y3QgaTkxNV9wYXJhbXMgewo+ICAJYm9vbCB2ZXJib3Nl X3N0YXRlX2NoZWNrczsKPiAgCWJvb2wgbnVjbGVhcl9wYWdlZmxpcDsKPiAgCWJvb2wgZW5hYmxl X2RwX21zdDsKPiArCWJvb2wgZW5hYmxlX2RwY2RfYmFja2xpZ2h0Owo+ICB9Owo+ICAKPiAgZXh0 ZXJuIHN0cnVjdCBpOTE1X3BhcmFtcyBpOTE1IF9fcmVhZF9tb3N0bHk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jCj4gaW5kZXggM2JkZDhiYS4uOWU5ZTdmMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYwo+IEBAIC0zMTA5LDcgKzMxMDksNyBAQCBzdGF0aWMgdm9pZCBjaHZfZHBfcG9zdF9w bGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgICogU2lua3MgYXJl ICpzdXBwb3NlZCogdG8gY29tZSB1cCB3aXRoaW4gMW1zIGZyb20gYW4gb2ZmIHN0YXRlLCBidXQg d2UncmUgYWxzbwo+ICAgKiBzdXBwb3NlZCB0byByZXRyeSAzIHRpbWVzIHBlciB0aGUgc3BlYy4K PiAgICovCj4gLXN0YXRpYyBzc2l6ZV90Cj4gK3NzaXplX3QKPiAgaW50ZWxfZHBfZHBjZF9yZWFk X3dha2Uoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgdW5zaWduZWQgaW50IG9mZnNldCwKPiAgCQkJ dm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKCkknbSBnb2luZyB0byBoYXZlIHRvIGFzayB5b3Ug c2VuZCBhbm90aGVyIHZlcnNpb24gZHJvcHBpbmcgYWxsIHRoZQpjaGFuZ2VzIHRvIF93YWtlLCBh bmQgc3dpdGNoaW5nIHRvIHVzZSB0aGUgcGxhaW4gZHJtX2RwX2RwY2RfcmVhZCgpCmluc3RlYWQg b2YgaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoKSBhbGwgYXJvdW5kLiBPdGhlcndpc2UsIHdlJ2xs CmNvbmZsaWN0IGJhZGx5IHdpdGggWzJdIGdldHRpbmcgbWVyZ2VkLgoKWzJdIGh0dHA6Ly9taWQu Z21hbmUub3JnLzE0NTkxNzU2MDYtMTM4NzUtMS1naXQtc2VuZC1lbWFpbC1jcGF1bEByZWRoYXQu Y29tCgo+ICB7Cj4gQEAgLTM3NzYsNyArMzc3Niw2IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdf cG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBkaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1aW50OF90IHJldjsKPiAgCj4gIAlp ZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIDB4MDAwLCBpbnRlbF9k cC0+ZHBjZCwKPiAgCQkJCSAgICBzaXplb2YoaW50ZWxfZHAtPmRwY2QpKSA8IDApCj4gQEAgLTM4 MTIsNiArMzgxMSwxNSBAQCBpbnRlbF9kcF9nZXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKQo+ICAJCQlEUk1fREVCVUdfS01TKCJQU1IyICVzIG9uIHNpbmsiLAo+ICAJCQkJZGV2X3By aXYtPnBzci5wc3IyX3N1cHBvcnQgPyAic3VwcG9ydGVkIiA6ICJub3Qgc3VwcG9ydGVkIik7Cj4g IAkJfQo+ICsKPiArCQkvKiBSZWFkIHRoZSBlRFAgRGlzcGxheSBjb250cm9sIGNhcGFiaWxpdGll cyByZWdpc3RlcnMgKi8KPiArCQltZW1zZXQoaW50ZWxfZHAtPmVkcF9kcGNkLCAwLCBzaXplb2Yo aW50ZWxfZHAtPmVkcF9kcGNkKSk7Cj4gKwkJaWYgKChpbnRlbF9kcC0+ZHBjZFtEUF9FRFBfQ09O RklHVVJBVElPTl9DQVBdICYgRFBfRFBDRF9ESVNQTEFZX0NPTlRST0xfQ0FQQUJMRSkgJiYKPiAr CQkJCShpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0RQQ0Rf UkVWLAo+ICsJCQkJCQlpbnRlbF9kcC0+ZWRwX2RwY2QsIHNpemVvZihpbnRlbF9kcC0+ZWRwX2Rw Y2QpKSA9PQo+ICsJCQkJCQkJCXNpemVvZihpbnRlbF9kcC0+ZWRwX2RwY2QpKSkKPiArCQkJRFJN X0RFQlVHX0tNUygiRURQIERQQ0QgOiAlKnBoXG4iLCAoaW50KSBzaXplb2YoaW50ZWxfZHAtPmVk cF9kcGNkKSwKPiArCQkJCQlpbnRlbF9kcC0+ZWRwX2RwY2QpOwo+ICAJfQo+ICAKPiAgCURSTV9E RUJVR19LTVMoIkRpc3BsYXkgUG9ydCBUUFMzIHN1cHBvcnQ6IHNvdXJjZSAlcywgc2luayAlc1xu IiwKPiBAQCAtMzgxOSwxMCArMzgyNyw3IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHApCj4gIAkJICAgICAgeWVzbm8oZHJtX2RwX3RwczNfc3VwcG9ydGVkKGlu dGVsX2RwLT5kcGNkKSkpOwo+ICAKPiAgCS8qIEludGVybWVkaWF0ZSBmcmVxdWVuY3kgc3VwcG9y dCAqLwo+IC0JaWYgKGlzX2VkcChpbnRlbF9kcCkgJiYKPiAtCSAgICAoaW50ZWxfZHAtPmRwY2Rb RFBfRURQX0NPTkZJR1VSQVRJT05fQ0FQXSAmCURQX0RQQ0RfRElTUExBWV9DT05UUk9MX0NBUEFC TEUpICYmCj4gLQkgICAgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBE UF9FRFBfRFBDRF9SRVYsICZyZXYsIDEpID09IDEpICYmCj4gLQkgICAgKHJldiA+PSAweDAzKSkg eyAvKiBlRHAgdjEuNCBvciBoaWdoZXIgKi8KPiArCWlmIChpc19lZHAoaW50ZWxfZHApICYmIChp bnRlbF9kcC0+ZWRwX2RwY2RbMF0gPj0gMHgwMykpIHsgLyogZURwIHYxLjQgb3IgaGlnaGVyICov CgpQbGVhc2UgdHVybiB0aGVzZSB0d28gaHVua3MgYWJvdmUgcGx1cyB0aGUgYWRkaXRpb24gb2YK aW50ZWxfZHAtPmVkcF9kcGNkIGludG8gYSBzdGFuZGFsb25lIHByZXAgcGF0Y2guIFBsZWFzZSBr ZWVwIHVzaW5nIF93YWtlCnZlcnNpb24gaGVyZSAod2UnbGwgcmVzb2x2ZSB0aGlzIGNvbmZsaWN0 KS4KCj4gIAkJX19sZTE2IHNpbmtfcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU107Cj4gIAkJ aW50IGk7Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9h dXhfYmFja2xpZ2h0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xp Z2h0LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmE1MzYxZDYKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2Jh Y2tsaWdodC5jCj4gQEAgLTAsMCArMSwxNzAgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIw MTUgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoK PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiAr ICovCj4gKwo+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKwo+ICtzdGF0aWMgdm9pZCBzZXRf YXV4X2JhY2tsaWdodF9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBlbmFi bGUpCj4gK3sKPiArCXVpbnQ4X3QgcmVnX3ZhbCA9IDA7Cj4gKwo+ICsJaWYgKGludGVsX2RwX2Rw Y2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lT VEVSLAo+ICsJCQkmcmVnX3ZhbCwgc2l6ZW9mKHJlZ192YWwpKSA8IDApIHsKPiArCQlEUk1fREVC VUdfS01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJlZ2lzdGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9F RFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwlpZiAo ZW5hYmxlKQo+ICsJCXJlZ192YWwgfD0gRFBfRURQX0JBQ0tMSUdIVF9FTkFCTEU7Cj4gKwllbHNl Cj4gKwkJcmVnX3ZhbCAmPSB+KERQX0VEUF9CQUNLTElHSFRfRU5BQkxFKTsKPiArCj4gKwlpZiAo ZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfRElTUExBWV9DT05UUk9M X1JFR0lTVEVSLAo+ICsJCQlyZWdfdmFsKSA8IDApIHsKPiArCQlEUk1fREVCVUdfS01TKCJGYWls ZWQgdG8gJXMgYXV4IGJhY2tsaWdodFxuIiwKPiArCQkJCWVuYWJsZSA/ICJlbmFibGUiIDogImRp c2FibGUiKTsKPiArCX0KPiArfQo+ICsKPiArLyoKPiArICogUmVhZCB0aGUgY3VycmVudCBiYWNr bGlnaHQgdmFsdWUgZnJvbSBEUENEIHJlZ2lzdGVyKHMpIGJhc2VkCj4gKyAqIG9uIGlmIDgtYml0 KE1TQikgb3IgMTYtYml0KE1TQiBhbmQgTFNCKSB2YWx1ZXMgYXJlIHN1cHBvcnRlZAo+ICsgKi8K PiArc3RhdGljIHVpbnQzMl90IGludGVsX2RwX2F1eF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9k cCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKPiArCXVpbnQ4 X3QgcmVhZF92YWxbMl0gPSB7IDB4MCB9Owo+ICsJdWludDE2X3QgbGV2ZWwgPSAwOwo+ICsKPiAr CWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0JBQ0tM SUdIVF9CUklHSFRORVNTX01TQiwKPiArCQkJJnJlYWRfdmFsLCBzaXplb2YocmVhZF92YWwpKSA8 IDApIHsKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJlZ2lzdGVyIDB4 JXhcbiIsCj4gKwkJCQlEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTVNCKTsKPiArCQlyZXR1 cm4gMDsKPiArCX0KPiArCWxldmVsID0gcmVhZF92YWxbMF07Cj4gKwlpZiAoaW50ZWxfZHAtPmVk cF9kcGNkWzJdICYgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX0JZVEVfQ09VTlQpCj4gKwkJ bGV2ZWwgPSAocmVhZF92YWxbMF0gPDwgOCB8IHJlYWRfdmFsWzFdKTsKPiArCj4gKwlyZXR1cm4g bGV2ZWw7Cj4gK30KPiArCj4gKy8qCj4gKyAqIFNlbmRzIHRoZSBjdXJyZW50IGJhY2tsaWdodCBs ZXZlbCBvdmVyIHRoZSBhdXggY2hhbm5lbCwgY2hlY2tpbmcgaWYgaXRzIHVzaW5nCj4gKyAqIDgt Yml0IG9yIDE2IGJpdCB2YWx1ZSAoTVNCIGFuZCBMU0IpCj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ ICtpbnRlbF9kcF9hdXhfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IsIHUzMiBsZXZlbCkKPiArewo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVu Y190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKPiArCXVpbnQ4X3QgdmFs c1syXSA9IHsgMHgwIH07Cj4gKwo+ICsJdmFsc1swXSA9IGxldmVsOwo+ICsKPiArCS8qIFdyaXRl IHRoZSBNU0IgYW5kL29yIExTQiAqLwo+ICsJIGlmIChpbnRlbF9kcC0+ZWRwX2RwY2RbMl0gJiBE UF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfQllURV9DT1VOVCkgewo+ICsJCXZhbHNbMF0gPSAo bGV2ZWwgJiAweEZGMDApID4+IDg7Cj4gKwkJdmFsc1sxXSA9IChsZXZlbCAmIDB4RkYpOwo+ICsJ fQo+ICsJaWYgKGRybV9kcF9kcGNkX3dyaXRlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfQkFDS0xJ R0hUX0JSSUdIVE5FU1NfTVNCLAo+ICsJCQl2YWxzLCBzaXplb2YodmFscykpIDwgMCkgewo+ICsJ CURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byB3cml0ZSBhdXggYmFja2xpZ2h0IGxldmVsXG4iKTsK PiArCQlyZXR1cm47Cj4gKwl9Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGludGVsX2RwX2F1eF9l bmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9y LT5lbmNvZGVyLT5iYXNlKTsKPiArCXVpbnQ4X3QgZHBjZF9idWYgPSAwOwo+ICsKPiArCXNldF9h dXhfYmFja2xpZ2h0X2VuYWJsZShpbnRlbF9kcCwgdHJ1ZSk7Cj4gKwo+ICsJaWYgKChpbnRlbF9k cF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPiArCQkJRFBfRURQX0JBQ0tMSUdIVF9N T0RFX1NFVF9SRUdJU1RFUiwgJmRwY2RfYnVmLCAxKSA9PSAxKSAmJgo+ICsJCQkoKGRwY2RfYnVm ICYgRFBfRURQX0JBQ0tMSUdIVF9DT05UUk9MX01PREVfTUFTSykgPT0KPiArCQkJCQlEUF9FRFBf QkFDS0xJR0hUX0NPTlRST0xfTU9ERV9QUkVTRVQpKQo+ICsJCWRybV9kcF9kcGNkX3dyaXRlYigm aW50ZWxfZHAtPmF1eCwgRFBfRURQX0JBQ0tMSUdIVF9NT0RFX1NFVF9SRUdJU1RFUiwKPiArCQkJ CShkcGNkX2J1ZiB8IERQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9NT0RFX0RQQ0QpKTsKPiArfQo+ ICsKPiArc3RhdGljIHZvaWQgaW50ZWxfZHBfYXV4X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc2V0X2F1eF9iYWNrbGlnaHRfZW5h YmxlKGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKSwgZmFsc2UpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCQllbnVtIHBpcGUgcGlwZSkKPiArewo+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9y LT5lbmNvZGVyLT5iYXNlKTsKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVj dG9yLT5wYW5lbDsKPiArCj4gKwlpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChjb25uZWN0 b3IpOwo+ICsKPiArCWlmIChpbnRlbF9kcC0+ZWRwX2RwY2RbMl0gJiBEUF9FRFBfQkFDS0xJR0hU X0JSSUdIVE5FU1NfQllURV9DT1VOVCkKPiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IDB4RkZG RjsKPiArCWVsc2UKPiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IDB4RkY7Cj4gKwo+ICsJcGFu ZWwtPmJhY2tsaWdodC5taW4gPSAwOwo+ICsJcGFuZWwtPmJhY2tsaWdodC5sZXZlbCA9IGludGVs X2RwX2F1eF9nZXRfYmFja2xpZ2h0KGNvbm5lY3Rvcik7Cj4gKwo+ICsJcGFuZWwtPmJhY2tsaWdo dC5lbmFibGVkID0gcGFuZWwtPmJhY2tsaWdodC5sZXZlbCAhPSAwOwo+ICsKPiArCXJldHVybiAw Owo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbAo+ICtpbnRlbF9kcF9hdXhfZGlzcGxheV9jb250cm9s X2NhcGFibGUoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29k ZXItPmJhc2UpOwo+ICsKPiArCS8qIENoZWNrIHRoZSAgZURQIERpc3BsYXkgY29udHJvbCBjYXBh YmlsaXRpZXMgcmVnaXN0ZXJzIHRvIGRldGVybWluZSBpZgo+ICsJICogdGhlIHBhbmVsIGNhbiBz dXBwb3J0IGJhY2tsaWdodCBjb250cm9sIG92ZXIgdGhlIGF1eCBjaGFubmVsCj4gKwkgKi8KPiAr CWlmIChpbnRlbF9kcC0+ZWRwX2RwY2RbMV0gJiBEUF9FRFBfVENPTl9CQUNLTElHSFRfQURKVVNU TUVOVF9DQVAgJiYKPiArCQkJKGludGVsX2RwLT5lZHBfZHBjZFsxXSAmIERQX0VEUF9CQUNLTElH SFRfQVVYX0VOQUJMRV9DQVApICYmCj4gKwkJCSEoKGludGVsX2RwLT5lZHBfZHBjZFsxXSAmIERQ X0VEUF9CQUNLTElHSFRfUElOX0VOQUJMRV9DQVApIHx8Cj4gKwkJCQkJKGludGVsX2RwLT5lZHBf ZHBjZFsyXSAmIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19QV01fUElOX0NBUCkpKSB7Cj4g Kwo+ICsJCURSTV9ERUJVR19LTVMoIkFVWCBCYWNrbGlnaHQgQ29udHJvbCBTdXBwb3J0ZWQhXG4i KTsKPiArCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAr aW50IGludGVsX2RwX2F1eF9pbml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxfY29ubmVj dG9yICppbnRlbF9jb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwg PSAmaW50ZWxfY29ubmVjdG9yLT5wYW5lbDsKPiArCj4gKwlpZiAoIWludGVsX2RwX2F1eF9kaXNw bGF5X2NvbnRyb2xfY2FwYWJsZShpbnRlbF9jb25uZWN0b3IpKQo+ICsJCXJldHVybiAtRU5PREVW Owo+ICsKPiArCXBhbmVsLT5iYWNrbGlnaHQuc2V0dXAgPSBpbnRlbF9kcF9hdXhfc2V0dXBfYmFj a2xpZ2h0Owo+ICsJcGFuZWwtPmJhY2tsaWdodC5lbmFibGUgPSBpbnRlbF9kcF9hdXhfZW5hYmxl X2JhY2tsaWdodDsKPiArCXBhbmVsLT5iYWNrbGlnaHQuZGlzYWJsZSA9IGludGVsX2RwX2F1eF9k aXNhYmxlX2JhY2tsaWdodDsKPiArCXBhbmVsLT5iYWNrbGlnaHQuc2V0ID0gaW50ZWxfZHBfYXV4 X3NldF9iYWNrbGlnaHQ7Cj4gKwlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IGludGVsX2RwX2F1eF9n ZXRfYmFja2xpZ2h0Owo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBpbmRleCBjODdiNDUwLi43ODJhMTAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKPiBAQCAtODAzLDYgKzgwMyw3IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAl1aW50OF90 IGRwY2RbRFBfUkVDRUlWRVJfQ0FQX1NJWkVdOwo+ICAJdWludDhfdCBwc3JfZHBjZFtFRFBfUFNS X1JFQ0VJVkVSX0NBUF9TSVpFXTsKPiAgCXVpbnQ4X3QgZG93bnN0cmVhbV9wb3J0c1tEUF9NQVhf RE9XTlNUUkVBTV9QT1JUU107Cj4gKwl1aW50OF90IGVkcF9kcGNkW0VEUF9ESVNQTEFZX0NUTF9D QVBfU0laRV07CgpTbyB0aGlzIGNoYW5nZSBzaG91bGQgZ28gd2l0aCB0aGUgY2hhbmdlcyBpbiBp bnRlbF9kcC5jCgo+ICAJLyogc2luayByYXRlcyBhcyByZXBvcnRlZCBieSBEUF9TVVBQT1JURURf TElOS19SQVRFUyAqLwo+ICAJdWludDhfdCBudW1fc2lua19yYXRlczsKPiAgCWludCBzaW5rX3Jh dGVzW0RQX01BWF9TVVBQT1JURURfUkFURVNdOwo+IEBAIC0xMzE4LDYgKzEzMTksMTEgQEAgdm9p ZCBpbnRlbF9kcF9jb21wdXRlX3JhdGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgaW50IHBv cnRfY2xvY2ssCj4gIGJvb2wgaW50ZWxfZHBfc291cmNlX3N1cHBvcnRzX2hicjIoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCk7Cj4gIGJvb2wKPiAgaW50ZWxfZHBfZ2V0X2xpbmtfc3RhdHVzKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsIHVpbnQ4X3QgbGlua19zdGF0dXNbRFBfTElOS19TVEFU VVNfU0laRV0pOwo+ICtzc2l6ZV90IGludGVsX2RwX2RwY2RfcmVhZF93YWtlKHN0cnVjdCBkcm1f ZHBfYXV4ICphdXgsIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkJdm9pZCAqYnVmZmVyLCBzaXpl X3Qgc2l6ZSk7CgpBbmQgeW91IGNhbiBkcm9wIHRoaXMuCgo+ICsKPiArLyogaW50ZWxfZHBfYXV4 X2JhY2tsaWdodC5jICovCj4gK2ludCBpbnRlbF9kcF9hdXhfaW5pdF9iYWNrbGlnaHRfZnVuY3Mo c3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKTsKPiAgCj4gIC8qIGludGVs X2RwX21zdC5jICovCj4gIGludCBpbnRlbF9kcF9tc3RfZW5jb2Rlcl9pbml0KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBpbnQgY29ubl9pZCk7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggOGM4OTk2Zi4uY2RmY2RhZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0xNzE4LDYgKzE3MTgsMTEgQEAgaW50ZWxfcGFu ZWxfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKPiAgCQlj b250YWluZXJfb2YocGFuZWwsIHN0cnVjdCBpbnRlbF9jb25uZWN0b3IsIHBhbmVsKTsKPiAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY29ubmVjdG9yLT5iYXNl LmRldik7Cj4gIAo+ICsJaWYgKGk5MTUuZW5hYmxlX2RwY2RfYmFja2xpZ2h0ICYmCj4gKwkJCShj b25uZWN0b3ItPmJhc2UuY29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCAm Jgo+ICsJCQkJCWludGVsX2RwX2F1eF9pbml0X2JhY2tsaWdodF9mdW5jcyhjb25uZWN0b3IpID09 IDApKQo+ICsJCXJldHVybjsKPiArCj4gIAlpZiAoSVNfQlJPWFRPTihkZXZfcHJpdikpIHsKPiAg CQlwYW5lbC0+YmFja2xpZ2h0LnNldHVwID0gYnh0X3NldHVwX2JhY2tsaWdodDsKPiAgCQlwYW5l bC0+YmFja2xpZ2h0LmVuYWJsZSA9IGJ4dF9lbmFibGVfYmFja2xpZ2h0OwoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK