From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Add Backlight Control using DPCD for eDP connectors (v3) Date: Fri, 20 Nov 2015 17:04:12 +0200 Message-ID: <878u5sbtlf.fsf@intel.com> References: <1447698547-9027-1-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id D8E8D6E6D2 for ; Fri, 20 Nov 2015 07:00:31 -0800 (PST) In-Reply-To: <1447698547-9027-1-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 List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAxNiBOb3YgMjAxNSwgWWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGlu dGVsLmNvbT4gd3JvdGU6Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVEUCBiYWNrbGln aHQgY29udHJvbCB1c2luZyBEUENEIHJlZ2lzdGVycyB0bwo+IGJhY2tsaWdodCBob29rcyBpbiBp bnRlbF9wYW5lbC4KPgo+IEl0IGNoZWNrcyBmb3IgYmFja2xpZ2h0IGNvbnRyb2wgb3ZlciBBVVgg Y2hhbm5lbCBjYXBhYmlsaXR5IGFuZCBzZXRzIHVwCj4gZnVuY3Rpb24gcG9pbnRlcnMgdG8gZ2V0 IGFuZCBzZXQgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNzIGxldmVsIGlmCj4gc3VwcG9ydGVkLgo+ Cj4gdjI6IE1vdmVkIGJhY2tsaWdodCBmdW5jdGlvbnMgZnJvbSBpbnRlbF9kcC5jIGludG8gYSBu ZXcgZmlsZQo+IGludGVsX2RwX2F1eF9iYWNrbGlnaHQuYy4gQWxzbyBtb3ZlZCByZWFkaW5nIG9m IGVEUCBkaXNwbGF5IGNvbnRyb2wKPiByZWdpc3RlcnMgdG8gaW50ZWxfZHBfZ2V0X2RwY2QKPgo+ IHYzOiBDb3JyZWN0IHNvbWUgZm9ybWF0dGluZyBtaXN0YWtlcwo+Cj4gVGhpcyBwYXRjaCBkZXBl bmRzIG9uIGh0dHA6Ly9wYXRjaHdvcmsuZnJlZWRlc2t0b3Aub3JnL3BhdGNoLzY0MjUzLwo+Cj4g Q2M6IEJvYiBQYWF1d2UgPGJvYi5qLnBhYXV3ZUBpbnRlbC5jb20+Cj4gQ2M6IEphbmkgTmlrdWxh IDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gQWNrZWQtYnk6IEplc3NlIEJhcm5lcyA8amJhcm5l c0B2aXJ0dW91c2dlZWsub3JnPgo+IFNpZ25lZC1vZmYtYnk6IFlldHVuZGUgQWRlYmlzaSA8eWV0 dW5kZXguYWRlYmlzaUBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01h a2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMgICAgICAgICAgICAgICB8ICAxNiArKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jIHwgMTc3ICsrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8ICAgNiAr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICAgICAgICB8ICAgNCAr Cj4gIDUgZmlsZXMgY2hhbmdlZCwgMTk4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFj a2xpZ2h0LmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggMDg1MWRlMDcuLjdhMWRiM2Qg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC03Nyw2ICs3Nyw3IEBAIGk5MTUteSArPSBk dm9fY2g3MDE3Lm8gXAo+ICAJICBkdm9fdGZwNDEwLm8gXAo+ICAJICBpbnRlbF9jcnQubyBcCj4g IAkgIGludGVsX2RkaS5vIFwKPiArCSAgaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5vXAoKU3BhY2Ug YmVmb3JlIFwgcGxlYXNlLgoKPiAgCSAgaW50ZWxfZHBfbGlua190cmFpbmluZy5vIFwKPiAgCSAg aW50ZWxfZHBfbXN0Lm8gXAo+ICAJICBpbnRlbF9kcC5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKPiBpbmRleCA4MDcxMjQ3Li4yMmUwMjQxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5j Cj4gQEAgLTMxNTYsNyArMzE1Niw3IEBAIHN0YXRpYyB2b2lkIGNodl9kcF9wb3N0X3BsbF9kaXNh YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgKiBTaW5rcyBhcmUgKnN1cHBv c2VkKiB0byBjb21lIHVwIHdpdGhpbiAxbXMgZnJvbSBhbiBvZmYgc3RhdGUsIGJ1dCB3ZSdyZSBh bHNvCj4gICAqIHN1cHBvc2VkIHRvIHJldHJ5IDMgdGltZXMgcGVyIHRoZSBzcGVjLgo+ICAgKi8K PiAtc3RhdGljIHNzaXplX3QKPiArc3NpemVfdAo+ICBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShz dHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJCQl2b2lkICpi dWZmZXIsIHNpemVfdCBzaXplKQo+ICB7Cj4gQEAgLTM4MjMsNyArMzgyMyw2IEBAIGludGVsX2Rw X2dldF9kcGNkKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gIAlzdHJ1Y3QgaW50ZWxfZGln aXRhbF9wb3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBkaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPiAgCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1aW50OF90 IHJldjsKPiAgCj4gIAlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgs IDB4MDAwLCBpbnRlbF9kcC0+ZHBjZCwKPiAgCQkJCSAgICBzaXplb2YoaW50ZWxfZHAtPmRwY2Qp KSA8IDApCj4gQEAgLTM4NTksNiArMzg1OCwxNCBAQCBpbnRlbF9kcF9nZXRfZHBjZChzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwKQo+ICAJCQlEUk1fREVCVUdfS01TKCJQU1IyICVzIG9uIHNpbmsi LAo+ICAJCQkJZGV2X3ByaXYtPnBzci5wc3IyX3N1cHBvcnQgPyAic3VwcG9ydGVkIiA6ICJub3Qg c3VwcG9ydGVkIik7Cj4gIAkJfQo+ICsKPiArCQkvKiBSZWFkIHRoZSBlRFAgRGlzcGxheSBjb250 cm9sIGNhcGFiaWxpdGllcyByZWdpc3RlcnMgKi8KCllvdSBuZWVkIHRvIGNsZWFyIGludGVsX2Rw LT5kcGNkX2VkcCBoZXJlLgoKPiArCQlpZiAoKGludGVsX2RwLT5kcGNkW0RQX0VEUF9DT05GSUdV UkFUSU9OX0NBUF0gJiBEUF9EUENEX0RJU1BMQVlfQ09OVFJPTF9DQVBBQkxFKSAmJgo+ICsJCQkJ KGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfRFBDRF9SRVYs Cj4gKwkJCQkJCWludGVsX2RwLT5kcGNkX2VkcCwgc2l6ZW9mKGludGVsX2RwLT5kcGNkX2VkcCkp ID09Cj4gKwkJCQkJCQkJc2l6ZW9mKGludGVsX2RwLT5kcGNkX2VkcCkpKQo+ICsJCQlEUk1fREVC VUdfS01TKCJFRFAgRFBDRCA6ICUqcGhcbiIsIChpbnQpIHNpemVvZihpbnRlbF9kcC0+ZHBjZF9l ZHApLAo+ICsJCQkJCWludGVsX2RwLT5kcGNkX2VkcCk7Cj4gIAl9Cj4gIAo+ICAJRFJNX0RFQlVH X0tNUygiRGlzcGxheSBQb3J0IFRQUzMgc3VwcG9ydDogc291cmNlICVzLCBzaW5rICVzXG4iLAo+ IEBAIC0zODY2LDEwICszODczLDcgQEAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2Rw ICppbnRlbF9kcCkKPiAgCQkgICAgICB5ZXNubyhkcm1fZHBfdHBzM19zdXBwb3J0ZWQoaW50ZWxf ZHAtPmRwY2QpKSk7Cj4gIAo+ICAJLyogSW50ZXJtZWRpYXRlIGZyZXF1ZW5jeSBzdXBwb3J0ICov Cj4gLQlpZiAoaXNfZWRwKGludGVsX2RwKSAmJgo+IC0JICAgIChpbnRlbF9kcC0+ZHBjZFtEUF9F RFBfQ09ORklHVVJBVElPTl9DQVBdICYJRFBfRFBDRF9ESVNQTEFZX0NPTlRST0xfQ0FQQUJMRSkg JiYKPiAtCSAgICAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIERQX0VE UF9EUENEX1JFViwgJnJldiwgMSkgPT0gMSkgJiYKPiAtCSAgICAocmV2ID49IDB4MDMpKSB7IC8q IGVEcCB2MS40IG9yIGhpZ2hlciAqLwo+ICsJaWYgKGlzX2VkcChpbnRlbF9kcCkgJiYgKGludGVs X2RwLT5kcGNkX2VkcFswXSA+PSAweDAzKSkgeyAvKiBlRHAgdjEuNCBvciBoaWdoZXIgKi8KPiAg CQlfX2xlMTYgc2lua19yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXTsKPiAgCQlpbnQgaTsK PiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNr bGlnaHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHQuYwo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMTkwYzVkOQo+IC0tLSAvZGV2 L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0 LmMKPiBAQCAtMCwwICsxLDE3NyBAQAo+ICsvKgo+ICsgKiBDb3B5cmlnaHQgwqkgMjAxNSBJbnRl bCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBm cmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9u LCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNlLCBj b3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ICsg KiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNv bnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJq ZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3ZlIGNv cHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUg bmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Ig c3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsgKiBU SEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkg S0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5UIFNI QUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBB TiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAqIEZS T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug T1IgT1RIRVIgREVBTElOR1MKPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKi8KPiAr Cj4gKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiArCj4gK3N0YXRpYyBib29sIGlzX2F1eF9iYWNr bGlnaHRfZW5hYmxlZChzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KQo+ICt7Cj4gKwl1aW50OF90IHJl YWRfdmFsID0gMDsKPiArCj4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoYXV4LCBEUF9F RFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSLAo+ICsJCQkmcmVhZF92YWwsIHNpemVvZihyZWFk X3ZhbCkpIDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJlZ2lz dGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSKTsKPiAr Cj4gKwlyZXR1cm4gcmVhZF92YWwgJiBEUF9FRFBfQkFDS0xJR0hUX0VOQUJMRTsKPiArfQo+ICsK PiArc3RhdGljIHZvaWQgc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHAsIGJvb2wgZW5hYmxlKQo+ICt7Cj4gKwl1aW50OF90IHJlZ192YWwgPSAwOwo+ICsK PiArCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwKPiArCQkJCURQ X0VEUF9ESVNQTEFZX0NPTlRST0xfUkVHSVNURVIsCj4gKwkJCQkmcmVnX3ZhbCwgc2l6ZW9mKHJl Z192YWwpKSA8IDApIHsKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJl Z2lzdGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSKTsK PiArCQlyZXR1cm47Cj4gKwl9Cj4gKwlpZiAoZW5hYmxlKQo+ICsJCXJlZ192YWwgfD0gRFBfRURQ X0JBQ0tMSUdIVF9FTkFCTEU7Cj4gKwllbHNlCj4gKwkJcmVnX3ZhbCAmPSB+KERQX0VEUF9CQUNL TElHSFRfRU5BQkxFKTsKPiArCj4gKwlpZiAoZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+ YXV4LCBEUF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSLAo+ICsJCQlyZWdfdmFsKSA8IDAp IHsKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gJXMgYXV4IGJhY2tsaWdodFxuIiwKPiAr CQkJCWVuYWJsZSA/ICJlbmFibGUiIDogImRpc2FibGUiKTsKPiArCX0KPiArfQo+ICsKPiArLyoK PiArICogUmVhZCB0aGUgY3VycmVudCBiYWNrbGlnaHQgdmFsdWUgZnJvbSBEUENEIHJlZ2lzdGVy KHMpIGJhc2VkCj4gKyAqIG9uIGlmIDgtYml0KE1TQikgb3IgMTYtYml0KE1TQiBhbmQgTFNCKSB2 YWx1ZXMgYXJlIHN1cHBvcnRlZAo+ICsgKi8KPiArc3RhdGljIHVpbnQzMl90IGludGVsX2RwX2F1 eF9nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9y LT5lbmNvZGVyLT5iYXNlKTsKPiArCXVpbnQ4X3QgcmVhZF92YWxbMl0gPSB7IDB4MCB9Owo+ICsJ dWludDE2X3QgbGV2ZWwgPSAwOwo+ICsKPiArCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgm aW50ZWxfZHAtPmF1eCwKPiArCQkJRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiwKPiAr CQkJJnJlYWRfdmFsLCBzaXplb2YocmVhZF92YWwpKSA8IDApIHsKPiArCQlEUk1fREVCVUdfS01T KCJGYWlsZWQgdG8gcmVhZCBEUENEIHJlZ2lzdGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9FRFBfQkFD S0xJR0hUX0JSSUdIVE5FU1NfTVNCKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCWxldmVsID0g cmVhZF92YWxbMF07Cj4gKwlpZiAoaW50ZWxfZHAtPmRwY2RfZWRwWzJdICYgRFBfRURQX0JBQ0tM SUdIVF9CUklHSFRORVNTX0JZVEVfQ09VTlQpCj4gKwkJbGV2ZWwgPSAocmVhZF92YWxbMF0gPDwg OCB8IHJlYWRfdmFsWzFdKTsKPiArCj4gKwlyZXR1cm4gbGV2ZWw7Cj4gK30KPiArCj4gKy8qCj4g KyAqIFNlbmRzIHRoZSBjdXJyZW50IGJhY2tsaWdodCBsZXZlbCBvdmVyIHRoZSBhdXggY2hhbm5l bCwgY2hlY2tpbmcgaWYgaXRzIHVzaW5nCj4gKyAqIDgtYml0IG9yIDE2IGJpdCB2YWx1ZSAoTVNC IGFuZCBMU0IpCj4gKyAqLwo+ICtzdGF0aWMgdm9pZAo+ICtpbnRlbF9kcF9hdXhfc2V0X2JhY2ts aWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZlbCkKPiArewo+ ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9y LT5lbmNvZGVyLT5iYXNlKTsKPiArCXVpbnQ4X3QgdmFsc1syXSA9IHsgMHgwIH07Cj4gKwo+ICsJ RFJNX0RFQlVHX0tNUygiTGV2ZWwgMHgleFxuIiwgbGV2ZWwpOwoKVGhlIGNhbGxlciBvZiB0aGUg aG9vayBkb2VzIGRlYnVnIGxvZ2dpbmcgYWxyZWFkeS4KCj4gKwl2YWxzWzBdID0gbGV2ZWw7Cj4g Kwo+ICsJLyogV3JpdGUgdGhlIE1TQiBhbmQvb3IgTFNCICovCj4gKwkgaWYgKGludGVsX2RwLT5k cGNkX2VkcFsyXSAmIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKSB7Cj4g KwkJdmFsc1swXSA9IChsZXZlbCAmIDB4RkYwMCkgPj4gODsKPiArCQl2YWxzWzFdID0gKGxldmVs ICYgMHhGRik7Cj4gKwl9Cj4gKwlpZiAoZHJtX2RwX2RwY2Rfd3JpdGUoJmludGVsX2RwLT5hdXgs IERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19NU0IsCj4gKwkJCXZhbHMsIHNpemVvZih2YWxz KSkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHdyaXRlIGF1eCBiYWNrbGln aHQgbGV2ZWxcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArfQo+ICsKPiArc3RhdGljIHZvaWQg aW50ZWxfZHBfYXV4X2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yKQo+ICt7Cj4gKwlzZXRfYXV4X2JhY2tsaWdodF9lbmFibGUoZW5jX3RvX2ludGVsX2Rw KCZjb25uZWN0b3ItPmVuY29kZXItPmJhc2UpLCB0cnVlKTsKPiArfQo+ICsKPiArc3RhdGljIHZv aWQgaW50ZWxfZHBfYXV4X2Rpc2FibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiArewo+ICsJc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKGVuY190b19pbnRl bF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKSwgZmFsc2UpOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGludGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yLAo+ICsJCQllbnVtIHBpcGUgcGlwZSkKPiArewo+ICsJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNl KTsKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAr Cj4gKwlpZiAoaW50ZWxfZHAtPmRwY2RfZWRwWzJdICYgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRO RVNTX0JZVEVfQ09VTlQpCj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSAweEZGRkY7Cj4gKwll bHNlCj4gKwkJcGFuZWwtPmJhY2tsaWdodC5tYXggPSAweEZGOwo+ICsKPiArCXBhbmVsLT5iYWNr bGlnaHQubWluID0gMDsKPiArCj4gKwlwYW5lbC0+YmFja2xpZ2h0LmxldmVsID0gaW50ZWxfZHBf YXV4X2dldF9iYWNrbGlnaHQoY29ubmVjdG9yKTsKPiArCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxl ZCA9IGlzX2F1eF9iYWNrbGlnaHRfZW5hYmxlZCgmaW50ZWxfZHAtPmF1eCk7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIGludGVsX2RwX2F1eF9kaXNwbGF5X2NvbnRy b2xfY2FwYWJsZShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5j b2Rlci0+YmFzZSk7Cj4gKwl1aW50OF90IGRwY2RfYnVmID0gMDsKPiArCj4gKwkvKiBDaGVjayB0 aGUgIGVEUCBEaXNwbGF5IGNvbnRyb2wgY2FwYWJpbGl0aWVzIHJlZ2lzdGVycyB0byBkZXRlcm1p bmUgaWYKPiArCSAqIHRoZSBwYW5lbCBjYW4gc3VwcG9ydCBiYWNrbGlnaHQgY29udHJvbCBvdmVy IHRoZSBhdXggY2hhbm5lbCovCj4gKwo+ICsJaWYgKGludGVsX2RwLT5kcGNkX2VkcFsxXSAmIERQ X0VEUF9UQ09OX0JBQ0tMSUdIVF9BREpVU1RNRU5UX0NBUCAmJgo+ICsJCQkoaW50ZWxfZHAtPmRw Y2RfZWRwWzFdICYgRFBfRURQX0JBQ0tMSUdIVF9BVVhfRU5BQkxFX0NBUCkgJiYKPiArCQkJKGlu dGVsX2RwLT5kcGNkX2VkcFsyXSAmIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19BVVhfU0VU X0NBUCkgJiYKPiArCQkJKChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwK PiArCQkJCQlEUF9FRFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVSLCAmZHBjZF9idWYsIDEp ID09IDEpICYmCj4gKwkJCQkJKChkcGNkX2J1ZiAmIERQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9N T0RFX01BU0spID09Cj4gKwkJCQkJCQlEUF9FRFBfQkFDS0xJR0hUX0NPTlRST0xfTU9ERV9EUENE KSkpIHsKClRoZSBEUF9FRFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVSIGlzIGEgcmVhZC93 cml0ZSByZWdpc3RlciBmb3IKY29uZmlndXJhdGlvbi4gWW91IGNhbiBhbHNvICpzZXQqIHRoZSBj b250cm9sIG1ldGhvZC4gQXBwYXJlbnRseSB0aGlzCm5vdyB0cnVzdHMgdGhlIEJJT1MgdG8gaGF2 ZSB3cml0dGVuIHRoZSByaWdodCB2YWx1ZSBoZXJlLiBJIGFtIG5vdCBzdXJlCnRoaXMgaXMgdGhl IHJpZ2h0IHdheSB0byBnby4KCkhvdyBhYm91dCBjaGVja2luZyB0aGF0IGF1eCBjb250cm9sIGlz IHBvc3NpYmxlICphbmQqIHB3bSBjb250cm9sIGlzIG5vdApwb3NzaWJsZSwgYW5kIHRoZW4gc2V0 dGluZyB0aGUgbW9kZSBhY2NvcmRpbmdseT8KCkFsc28sIHRoZSBwb3dlci1vbiBkZWZhdWx0IGZv ciB0aGUgbW9kZSBpcwpEUF9FRFBfQkFDS0xJR0hUX0NPTlRST0xfTU9ERV9QUkVTRVQsIHdoaWNo IG1lYW5zIGEgcG93ZXIgY3ljbGUgd2lsbCBmaXgKdGhlIGJyaWdodG5lc3MgdG8gYSBwcmVzZXQg bGV2ZWwgYW5kIHRoZSBicmlnaHRuZXNzIGFkanVzdG1lbnQgd2lsbApjZWFzZSB0byB3b3JrLiBE aWQgeW91IHRlc3QgdGhpcz8gSSB0aGluayB5b3Ugc2hvdWxkIHdyaXRlIHRoZSBtb2RlIGluCmJh Y2tsaWdodCBlbmFibGUuCgo+ICsKPiArCQlEUk1fREVCVUdfS01TKCJBVVggQmFja2xpZ2h0IENv bnRyb2wgU3VwcG9ydGVkIVxuIik7Cj4gKwo+ICsJCXJldHVybiB0cnVlOwo+ICsJfQo+ICsJcmV0 dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtpbnQgaW50ZWxfZHBfYXV4X2luaXRfYmFja2xpZ2h0X2Z1 bmNzKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiArewo+ICsJc3Ry dWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZpbnRlbF9jb25uZWN0b3ItPnBhbmVsOwo+ICsKPiAr CWlmICghaW50ZWxfZHBfYXV4X2Rpc3BsYXlfY29udHJvbF9jYXBhYmxlKGludGVsX2Nvbm5lY3Rv cikpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJcGFuZWwtPmJhY2tsaWdodC5zZXR1cCA9 IGludGVsX2RwX2F1eF9zZXR1cF9iYWNrbGlnaHQ7Cj4gKwlwYW5lbC0+YmFja2xpZ2h0LmVuYWJs ZSA9IGludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0Owo+ICsJcGFuZWwtPmJhY2tsaWdodC5k aXNhYmxlID0gaW50ZWxfZHBfYXV4X2Rpc2FibGVfYmFja2xpZ2h0Owo+ICsJcGFuZWwtPmJhY2ts aWdodC5zZXQgPSBpbnRlbF9kcF9hdXhfc2V0X2JhY2tsaWdodDsKPiArCXBhbmVsLT5iYWNrbGln aHQuZ2V0ID0gaW50ZWxfZHBfYXV4X2dldF9iYWNrbGlnaHQ7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4g K30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IGFkMTcyODguLjA5NWRmOGQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IEBAIC03NTgsNiArNzU4LDcgQEAgc3RydWN0 IGludGVsX2RwIHsKPiAgCXVpbnQ4X3QgZHBjZFtEUF9SRUNFSVZFUl9DQVBfU0laRV07Cj4gIAl1 aW50OF90IHBzcl9kcGNkW0VEUF9QU1JfUkVDRUlWRVJfQ0FQX1NJWkVdOwo+ICAJdWludDhfdCBk b3duc3RyZWFtX3BvcnRzW0RQX01BWF9ET1dOU1RSRUFNX1BPUlRTXTsKPiArCXVpbnQ4X3QgZHBj ZF9lZHBbRURQX0RJU1BMQVlfQ1RMX0NBUF9TSVpFXTsKPiAgCS8qIHNpbmsgcmF0ZXMgYXMgcmVw b3J0ZWQgYnkgRFBfU1VQUE9SVEVEX0xJTktfUkFURVMgKi8KPiAgCXVpbnQ4X3QgbnVtX3Npbmtf cmF0ZXM7Cj4gIAlpbnQgc2lua19yYXRlc1tEUF9NQVhfU1VQUE9SVEVEX1JBVEVTXTsKPiBAQCAt MTI3OSw2ICsxMjgwLDExIEBAIHZvaWQgaW50ZWxfZHBfY29tcHV0ZV9yYXRlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGludCBwb3J0X2Nsb2NrLAo+ICBib29sIGludGVsX2RwX3NvdXJjZV9z dXBwb3J0c19oYnIyKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOwo+ICBib29sCj4gIGludGVs X2RwX2dldF9saW5rX3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50OF90IGxp bmtfc3RhdHVzW0RQX0xJTktfU1RBVFVTX1NJWkVdKTsKPiArc3NpemVfdCBpbnRlbF9kcF9kcGNk X3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ ICsJCXZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+ICsKPiArLyogaW50ZWxfZHBfYXV4X2Jh Y2tsaWdodC5jICovCj4gK2ludCBpbnRlbF9kcF9hdXhfaW5pdF9iYWNrbGlnaHRfZnVuY3Moc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKTsKPiAgCj4gIC8qIGludGVsX2Rw X21zdC5jICovCj4gIGludCBpbnRlbF9kcF9tc3RfZW5jb2Rlcl9pbml0KHN0cnVjdCBpbnRlbF9k aWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LCBpbnQgY29ubl9pZCk7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggYTI0ZGYzNS4uN2RhNDliNSAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0xNzQ0LDYgKzE3NDQsMTAgQEAgaW50ZWxfcGFuZWxf aW5pdF9iYWNrbGlnaHRfZnVuY3Moc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKPiAgCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9jb25uZWN0b3ItPmJhc2UuZGV2Owo+ICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCj4gKwlp ZiAoaW50ZWxfY29ubmVjdG9yLT5iYXNlLmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RFX0NPTk5F Q1RPUl9lRFAgJiYKPiArCQkJaW50ZWxfZHBfYXV4X2luaXRfYmFja2xpZ2h0X2Z1bmNzKGludGVs X2Nvbm5lY3RvcikgPT0gMCkKPiArCQlyZXR1cm47Cj4gKwo+ICAJaWYgKElTX0JST1hUT04oZGV2 KSkgewo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuc2V0dXAgPSBieHRfc2V0dXBfYmFja2xpZ2h0Owo+ ICAJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0gYnh0X2VuYWJsZV9iYWNrbGlnaHQ7CgotLSAK SmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==