From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 2/2] drm/i915: Add Backlight Control using DPCD for eDP connectors (v4) Date: Thu, 07 Jan 2016 16:46:17 +0200 Message-ID: <87h9ipzbuu.fsf@intel.com> References: <1450267641-4515-1-git-send-email-yetundex.adebisi@intel.com> <1450267641-4515-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 8B7506E418 for ; Thu, 7 Jan 2016 06:46:21 -0800 (PST) In-Reply-To: <1450267641-4515-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 List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCAxNiBEZWMgMjAxNSwgWWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGlu dGVsLmNvbT4gd3JvdGU6Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGVEUCBiYWNrbGln aHQgY29udHJvbCB1c2luZyBEUENEIHJlZ2lzdGVycyB0bwo+IGJhY2tsaWdodCBob29rcyBpbiBp bnRlbF9wYW5lbC4KPgo+IEl0IGNoZWNrcyBmb3IgYmFja2xpZ2h0IGNvbnRyb2wgb3ZlciBBVVgg Y2hhbm5lbCBjYXBhYmlsaXR5IGFuZCBzZXRzIHVwCj4gZnVuY3Rpb24gcG9pbnRlcnMgdG8gZ2V0 IGFuZCBzZXQgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNzIGxldmVsIGlmCj4gc3VwcG9ydGVkLgo+ Cj4gdjI6IE1vdmVkIGJhY2tsaWdodCBmdW5jdGlvbnMgZnJvbSBpbnRlbF9kcC5jIGludG8gYSBu ZXcgZmlsZQo+IGludGVsX2RwX2F1eF9iYWNrbGlnaHQuYy4gQWxzbyBtb3ZlZCByZWFkaW5nIG9m IGVEUCBkaXNwbGF5IGNvbnRyb2wKPiByZWdpc3RlcnMgdG8gaW50ZWxfZHBfZ2V0X2RwY2QKPgo+ IHYzOiBDb3JyZWN0IHNvbWUgZm9ybWF0dGluZyBtaXN0YWtlcwo+Cj4gdjQ6IFVwZGF0ZWQgdG8g dXNlIEFVWCBiYWNrbGlnaHQgY29udHJvbCBpZiBQV00gY29udHJvbCBpcyBub3QgcG9zc2libGUK PiAJKEphbmkpCj4KPiBUaGlzIHBhdGNoIGRlcGVuZHMgb24gaHR0cDovL3BhdGNod29yay5mcmVl ZGVza3RvcC5vcmcvcGF0Y2gvNjQyNTMvCj4KPiBDYzogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdl QGludGVsLmNvbT4KPiBDYzogSmFuaSBOaWt1bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiBB Y2tlZC1ieTogSmVzc2UgQmFybmVzIDxqYmFybmVzQHZpcnR1b3VzZ2Vlay5vcmc+Cj4gU2lnbmVk LW9mZi1ieTogWWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGludGVsLmNvbT4KClBs ZWFzZSBhY2NlcHQgbXkgYXBvbG9naWVzIGZvciB0YWtpbmcgc28gbG9uZyB0byByZXZpZXcgdGhl IHVwZGF0ZWQKcGF0Y2hlcy4KClRoaXMgaXMgc3RhcnRpbmcgdG8gbG9vayBnb29kLiBUaGVyZSBh cmUgYSBjb3VwbGUgb2Ygc21hbGwgY2hhbmdlcyBzdGlsbApuZWVkZWQsIHBsZWFzZSBmaW5kIHRo ZSBjb21tZW50cyBpbmxpbmUuCgpCUiwKSmFuaS4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlICAgICAgICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICB8ICAxNyArKy0KPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5jIHwgMTgxICsrKysrKysrKysrKysrKysrKysr KysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICB8 ICAgNiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICAgICAgICB8 ICAgNCArCj4gIDUgZmlsZXMgY2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25z KC0pCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9h dXhfYmFja2xpZ2h0LmMKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCj4gaW5kZXggMDg1MWRlMDcuLjQx MjUwY2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC03Nyw2ICs3Nyw3IEBAIGk5MTUt eSArPSBkdm9fY2g3MDE3Lm8gXAo+ICAJICBkdm9fdGZwNDEwLm8gXAo+ICAJICBpbnRlbF9jcnQu byBcCj4gIAkgIGludGVsX2RkaS5vIFwKPiArCSAgaW50ZWxfZHBfYXV4X2JhY2tsaWdodC5vIFwK PiAgCSAgaW50ZWxfZHBfbGlua190cmFpbmluZy5vIFwKPiAgCSAgaW50ZWxfZHBfbXN0Lm8gXAo+ ICAJICBpbnRlbF9kcC5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRleCAzMWJhMjQx Li4yYjYwYjgzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTMxODgsNyArMzE4 OCw3IEBAIHN0YXRpYyB2b2lkIGNodl9kcF9wb3N0X3BsbF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9l bmNvZGVyICplbmNvZGVyKQo+ICAgKiBTaW5rcyBhcmUgKnN1cHBvc2VkKiB0byBjb21lIHVwIHdp dGhpbiAxbXMgZnJvbSBhbiBvZmYgc3RhdGUsIGJ1dCB3ZSdyZSBhbHNvCj4gICAqIHN1cHBvc2Vk IHRvIHJldHJ5IDMgdGltZXMgcGVyIHRoZSBzcGVjLgo+ICAgKi8KPiAtc3RhdGljIHNzaXplX3QK PiArc3NpemVfdAo+ICBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAq YXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJCQl2b2lkICpidWZmZXIsIHNpemVfdCBzaXpl KQo+ICB7Cj4gQEAgLTM4NTUsNyArMzg1NSw2IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHApCj4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBkaWdfcG9ydC0+YmFzZS5iYXNlLmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gLQl1aW50OF90IHJldjsKPiAgCj4gIAlpZiAo aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsIDB4MDAwLCBpbnRlbF9kcC0+ ZHBjZCwKPiAgCQkJCSAgICBzaXplb2YoaW50ZWxfZHAtPmRwY2QpKSA8IDApCj4gQEAgLTM4OTEs NiArMzg5MCwxNSBAQCBpbnRlbF9kcF9nZXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICAJCQlEUk1fREVCVUdfS01TKCJQU1IyICVzIG9uIHNpbmsiLAo+ICAJCQkJZGV2X3ByaXYt PnBzci5wc3IyX3N1cHBvcnQgPyAic3VwcG9ydGVkIiA6ICJub3Qgc3VwcG9ydGVkIik7Cj4gIAkJ fQo+ICsKPiArCQkvKiBSZWFkIHRoZSBlRFAgRGlzcGxheSBjb250cm9sIGNhcGFiaWxpdGllcyBy ZWdpc3RlcnMgKi8KPiArCQltZW1zZXQoaW50ZWxfZHAtPmVkcF9kcGNkLCAwLCBzaXplb2YoaW50 ZWxfZHAtPmVkcF9kcGNkKSk7Cj4gKwkJaWYgKChpbnRlbF9kcC0+ZHBjZFtEUF9FRFBfQ09ORklH VVJBVElPTl9DQVBdICYgRFBfRFBDRF9ESVNQTEFZX0NPTlRST0xfQ0FQQUJMRSkgJiYKPiArCQkJ CShpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0RQQ0RfUkVW LAo+ICsJCQkJCQlpbnRlbF9kcC0+ZWRwX2RwY2QsIHNpemVvZihpbnRlbF9kcC0+ZWRwX2RwY2Qp KSA9PQo+ICsJCQkJCQkJCXNpemVvZihpbnRlbF9kcC0+ZWRwX2RwY2QpKSkKPiArCQkJRFJNX0RF QlVHX0tNUygiRURQIERQQ0QgOiAlKnBoXG4iLCAoaW50KSBzaXplb2YoaW50ZWxfZHAtPmVkcF9k cGNkKSwKPiArCQkJCQlpbnRlbF9kcC0+ZWRwX2RwY2QpOwo+ICAJfQo+ICAKPiAgCURSTV9ERUJV R19LTVMoIkRpc3BsYXkgUG9ydCBUUFMzIHN1cHBvcnQ6IHNvdXJjZSAlcywgc2luayAlc1xuIiwK PiBAQCAtMzg5OCwxMCArMzkwNiw3IEBAIGludGVsX2RwX2dldF9kcGNkKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHApCj4gIAkJICAgICAgeWVzbm8oZHJtX2RwX3RwczNfc3VwcG9ydGVkKGludGVs X2RwLT5kcGNkKSkpOwo+ICAKPiAgCS8qIEludGVybWVkaWF0ZSBmcmVxdWVuY3kgc3VwcG9ydCAq Lwo+IC0JaWYgKGlzX2VkcChpbnRlbF9kcCkgJiYKPiAtCSAgICAoaW50ZWxfZHAtPmRwY2RbRFBf RURQX0NPTkZJR1VSQVRJT05fQ0FQXSAmCURQX0RQQ0RfRElTUExBWV9DT05UUk9MX0NBUEFCTEUp ICYmCj4gLQkgICAgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9F RFBfRFBDRF9SRVYsICZyZXYsIDEpID09IDEpICYmCj4gLQkgICAgKHJldiA+PSAweDAzKSkgeyAv KiBlRHAgdjEuNCBvciBoaWdoZXIgKi8KPiArCWlmIChpc19lZHAoaW50ZWxfZHApICYmIChpbnRl bF9kcC0+ZWRwX2RwY2RbMF0gPj0gMHgwMykpIHsgLyogZURwIHYxLjQgb3IgaGlnaGVyICovCj4g IAkJX19sZTE2IHNpbmtfcmF0ZXNbRFBfTUFYX1NVUFBPUlRFRF9SQVRFU107Cj4gIAkJaW50IGk7 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFj a2xpZ2h0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0LmMK PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjNiYmE2YjUKPiAtLS0gL2Rl di9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdo dC5jCj4gQEAgLTAsMCArMSwxODEgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMTUgSW50 ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwg ZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0 aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29m dHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlv biwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwg Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiAr ICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJz b25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3Vi amVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBj b3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhl IG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9y IHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICog VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRF RCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBT SEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9S IEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ICsgKiBG Uk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNF IE9SIE9USEVSIERFQUxJTkdTCj4gKyAqIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiArICovCj4g Kwo+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gKwo+ICtzdGF0aWMgYm9vbCBpc19hdXhfYmFj a2xpZ2h0X2VuYWJsZWQoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiArewo+ICsJdWludDhfdCBy ZWFkX3ZhbCA9IDA7Cj4gKwo+ICsJaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKGF1eCwgRFBf RURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUiwKPiArCQkJJnJlYWRfdmFsLCBzaXplb2YocmVh ZF92YWwpKSA8IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgRFBDRCByZWdp c3RlciAweCV4XG4iLAo+ICsJCQkJRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUik7Cj4g Kwo+ICsJcmV0dXJuIHJlYWRfdmFsICYgRFBfRURQX0JBQ0tMSUdIVF9FTkFCTEU7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIHNldF9hdXhfYmFja2xpZ2h0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAg KmludGVsX2RwLCBib29sIGVuYWJsZSkKPiArewo+ICsJdWludDhfdCByZWdfdmFsID0gMDsKPiAr Cj4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gKwkJCQlE UF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSLAo+ICsJCQkJJnJlZ192YWwsIHNpemVvZihy ZWdfdmFsKSkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgRFBDRCBy ZWdpc3RlciAweCV4XG4iLAo+ICsJCQkJRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUik7 Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJaWYgKGVuYWJsZSkKPiArCQlyZWdfdmFsIHw9IERQX0VE UF9CQUNLTElHSFRfRU5BQkxFOwo+ICsJZWxzZQo+ICsJCXJlZ192YWwgJj0gfihEUF9FRFBfQkFD S0xJR0hUX0VOQUJMRSk7Cj4gKwo+ICsJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAt PmF1eCwgRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUiwKPiArCQkJcmVnX3ZhbCkgPCAw KSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvICVzIGF1eCBiYWNrbGlnaHRcbiIsCj4g KwkJCQllbmFibGUgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIik7Cj4gKwl9Cj4gK30KPiArCj4gKy8q Cj4gKyAqIFJlYWQgdGhlIGN1cnJlbnQgYmFja2xpZ2h0IHZhbHVlIGZyb20gRFBDRCByZWdpc3Rl cihzKSBiYXNlZAo+ICsgKiBvbiBpZiA4LWJpdChNU0IpIG9yIDE2LWJpdChNU0IgYW5kIExTQikg dmFsdWVzIGFyZSBzdXBwb3J0ZWQKPiArICovCj4gK3N0YXRpYyB1aW50MzJfdCBpbnRlbF9kcF9h dXhfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sK PiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rv ci0+ZW5jb2Rlci0+YmFzZSk7Cj4gKwl1aW50OF90IHJlYWRfdmFsWzJdID0geyAweDAgfTsKPiAr CXVpbnQxNl90IGxldmVsID0gMDsKPiArCj4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uo JmludGVsX2RwLT5hdXgsCj4gKwkJCURQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19NU0IsCj4g KwkJCSZyZWFkX3ZhbCwgc2l6ZW9mKHJlYWRfdmFsKSkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tN UygiRmFpbGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4iLAo+ICsJCQkJRFBfRURQX0JB Q0tMSUdIVF9CUklHSFRORVNTX01TQik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwlsZXZlbCA9 IHJlYWRfdmFsWzBdOwo+ICsJaWYgKGludGVsX2RwLT5lZHBfZHBjZFsyXSAmIERQX0VEUF9CQUNL TElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQo+ICsJCWxldmVsID0gKHJlYWRfdmFsWzBdIDw8 IDggfCByZWFkX3ZhbFsxXSk7Cj4gKwo+ICsJcmV0dXJuIGxldmVsOwo+ICt9Cj4gKwo+ICsvKgo+ ICsgKiBTZW5kcyB0aGUgY3VycmVudCBiYWNrbGlnaHQgbGV2ZWwgb3ZlciB0aGUgYXV4IGNoYW5u ZWwsIGNoZWNraW5nIGlmIGl0cyB1c2luZwo+ICsgKiA4LWJpdCBvciAxNiBiaXQgdmFsdWUgKE1T QiBhbmQgTFNCKQo+ICsgKi8KPiArc3RhdGljIHZvaWQKPiAraW50ZWxfZHBfYXV4X3NldF9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpCj4gK3sK PiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rv ci0+ZW5jb2Rlci0+YmFzZSk7Cj4gKwl1aW50OF90IHZhbHNbMl0gPSB7IDB4MCB9Owo+ICsKPiAr CXZhbHNbMF0gPSBsZXZlbDsKPiArCj4gKwkvKiBXcml0ZSB0aGUgTVNCIGFuZC9vciBMU0IgKi8K PiArCSBpZiAoaW50ZWxfZHAtPmVkcF9kcGNkWzJdICYgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRO RVNTX0JZVEVfQ09VTlQpIHsKPiArCQl2YWxzWzBdID0gKGxldmVsICYgMHhGRjAwKSA+PiA4Owo+ ICsJCXZhbHNbMV0gPSAobGV2ZWwgJiAweEZGKTsKPiArCX0KPiArCWlmIChkcm1fZHBfZHBjZF93 cml0ZSgmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiwKPiAr CQkJdmFscywgc2l6ZW9mKHZhbHMpKSA8IDApIHsKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQg dG8gd3JpdGUgYXV4IGJhY2tsaWdodCBsZXZlbFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICt9 Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXNldF9hdXhfYmFja2xpZ2h0X2Vu YWJsZShlbmNfdG9faW50ZWxfZHAoJmNvbm5lY3Rvci0+ZW5jb2Rlci0+YmFzZSksIHRydWUpOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBpbnRlbF9kcF9hdXhfZGlzYWJsZV9iYWNrbGlnaHQoc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzZXRfYXV4X2JhY2tsaWdo dF9lbmFibGUoZW5jX3RvX2ludGVsX2RwKCZjb25uZWN0b3ItPmVuY29kZXItPmJhc2UpLCBmYWxz ZSk7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgaW50ZWxfZHBfYXV4X3NldHVwX2JhY2tsaWdodChz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJCWVudW0gcGlwZSBwaXBlKQo+ ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZjb25u ZWN0b3ItPmVuY29kZXItPmJhc2UpOwo+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZj b25uZWN0b3ItPnBhbmVsOwo+ICsKPiArCWlmIChpbnRlbF9kcC0+ZWRwX2RwY2RbMl0gJiBEUF9F RFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfQllURV9DT1VOVCkKPiArCQlwYW5lbC0+YmFja2xpZ2h0 Lm1heCA9IDB4RkZGRjsKPiArCWVsc2UKPiArCQlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IDB4RkY7 Cj4gKwo+ICsJcGFuZWwtPmJhY2tsaWdodC5taW4gPSAwOwo+ICsKPiArCXBhbmVsLT5iYWNrbGln aHQubGV2ZWwgPSBpbnRlbF9kcF9hdXhfZ2V0X2JhY2tsaWdodChjb25uZWN0b3IpOwo+ICsJcGFu ZWwtPmJhY2tsaWdodC5lbmFibGVkID0gaXNfYXV4X2JhY2tsaWdodF9lbmFibGVkKCZpbnRlbF9k cC0+YXV4KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGJvb2wKPiAraW50 ZWxfZHBfYXV4X2Rpc3BsYXlfY29udHJvbF9jYXBhYmxlKHN0cnVjdCBpbnRlbF9jb25uZWN0b3Ig KmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19p bnRlbF9kcCgmY29ubmVjdG9yLT5lbmNvZGVyLT5iYXNlKTsKPiArCXVpbnQ4X3QgZHBjZF9idWYg PSAwOwo+ICsKPiArCS8qIENoZWNrIHRoZSAgZURQIERpc3BsYXkgY29udHJvbCBjYXBhYmlsaXRp ZXMgcmVnaXN0ZXJzIHRvIGRldGVybWluZSBpZgo+ICsJICogdGhlIHBhbmVsIGNhbiBzdXBwb3J0 IGJhY2tsaWdodCBjb250cm9sIG92ZXIgdGhlIGF1eCBjaGFubmVsCj4gKwkgKi8KPiArCj4gKwlp ZiAoaW50ZWxfZHAtPmVkcF9kcGNkWzFdICYgRFBfRURQX1RDT05fQkFDS0xJR0hUX0FESlVTVE1F TlRfQ0FQICYmCj4gKwkJCShpbnRlbF9kcC0+ZWRwX2RwY2RbMV0gJiBEUF9FRFBfQkFDS0xJR0hU X0FVWF9FTkFCTEVfQ0FQKSAmJgo+ICsJCQkhKGludGVsX2RwLT5lZHBfZHBjZFsyXSAmIERQX0VE UF9CQUNLTElHSFRfQlJJR0hUTkVTU19QV01fUElOX0NBUCkpIHsKPiArCj4gKwkJRFJNX0RFQlVH X0tNUygiQVVYIEJhY2tsaWdodCBDb250cm9sIFN1cHBvcnRlZCFcbiIpOwo+ICsJCXNldF9hdXhf YmFja2xpZ2h0X2VuYWJsZShpbnRlbF9kcCwgdHJ1ZSk7CgpUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg Zm9yIHF1ZXJ5aW5nIGNhcGFiaWxpdGllcy4gSXQgc2hvdWxkIG5vdCBlbmFibGUKdGhlIGJhY2ts aWdodC4gSSB0aGluayB3ZSBjb3VsZCBwcm9iYWJseSBlbmFibGUgdGhlIGJhY2tsaWdodCBhdApp bnRlbF9kcF9hdXhfc2V0dXBfYmFja2xpZ2h0KCkuIFRoZW4gaXQgd291bGQgbm90IG5lZWQgdG8g Y2FsbAppc19hdXhfYmFja2xpZ2h0X2VuYWJsZWQoKSBlaXRoZXIuCgo+ICsJCWlmICgoaW50ZWxf ZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gKwkJCURQX0VEUF9CQUNLTElHSFRf TU9ERV9TRVRfUkVHSVNURVIsICZkcGNkX2J1ZiwgMSkgPT0gMSkgJiYKPiArCQkJKChkcGNkX2J1 ZiAmIERQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9NT0RFX01BU0spID09Cj4gKwkJCQkJRFBfRURQ X0JBQ0tMSUdIVF9DT05UUk9MX01PREVfUFJFU0VUKSkKPiArCQkJZHJtX2RwX2RwY2Rfd3JpdGVi KCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVSLAo+ICsJ CQkJCShkcGNkX2J1ZiB8IERQX0VEUF9CQUNLTElHSFRfQ09OVFJPTF9NT0RFX0RQQ0QpKTsKClRo aXMgcmVhZC93cml0ZSBkb2VzIG5vdCBiZWxvbmcgdG8gdGhpcyBmdW5jdGlvbiBlaXRoZXIuIElu IGZhY3QsIHRoaXMKc2hvdWxkIGJlIGRvbmUgYXQgaW50ZWxfZHBfYXV4X2VuYWJsZV9iYWNrbGln aHQoKSwgYmVjYXVzZSB0aGUgZGlzcGxheQptYXkgaGF2ZSBiZWVuIHBvd2VyZWQgZG93biBpbiBi ZXR3ZWVuLCBhbmQgdGhlIHBvd2VyIG9uIGRlZmF1bHRzIHdvdWxkCmJlIGluIGVmZmVjdC4KCllv dSBhbHNvIG5lZWQgdG8gZG8gdGhpcyBpbiBpbnRlbF9kcF9hdXhfc2V0dXBfYmFja2xpZ2h0KCks IHNvIGJldHRlcgpjYWxsIGludGVsX2RwX2F1eF9lbmFibGVfYmFja2xpZ2h0KCkgcmF0aGVyIHRo YW4Kc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKCkgdGhlcmUuCgo+ICsKPiArCQlyZXR1cm4gdHJ1 ZTsKPiArCX0KPiArCXJldHVybiBmYWxzZTsKPiArfQo+ICsKPiAraW50IGludGVsX2RwX2F1eF9p bml0X2JhY2tsaWdodF9mdW5jcyhzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0 b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmaW50ZWxfY29ubmVjdG9y LT5wYW5lbDsKPiArCj4gKwlpZiAoIWludGVsX2RwX2F1eF9kaXNwbGF5X2NvbnRyb2xfY2FwYWJs ZShpbnRlbF9jb25uZWN0b3IpKQo+ICsJCXJldHVybiAtRU5PREVWOwo+ICsKPiArCXBhbmVsLT5i YWNrbGlnaHQuc2V0dXAgPSBpbnRlbF9kcF9hdXhfc2V0dXBfYmFja2xpZ2h0Owo+ICsJcGFuZWwt PmJhY2tsaWdodC5lbmFibGUgPSBpbnRlbF9kcF9hdXhfZW5hYmxlX2JhY2tsaWdodDsKPiArCXBh bmVsLT5iYWNrbGlnaHQuZGlzYWJsZSA9IGludGVsX2RwX2F1eF9kaXNhYmxlX2JhY2tsaWdodDsK PiArCXBhbmVsLT5iYWNrbGlnaHQuc2V0ID0gaW50ZWxfZHBfYXV4X3NldF9iYWNrbGlnaHQ7Cj4g KwlwYW5lbC0+YmFja2xpZ2h0LmdldCA9IGludGVsX2RwX2F1eF9nZXRfYmFja2xpZ2h0Owo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA3OTg0 NjNlLi4zZDAzYmVhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtNzUzLDYg Kzc1Myw3IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAl1aW50OF90IGRwY2RbRFBfUkVDRUlWRVJf Q0FQX1NJWkVdOwo+ICAJdWludDhfdCBwc3JfZHBjZFtFRFBfUFNSX1JFQ0VJVkVSX0NBUF9TSVpF XTsKPiAgCXVpbnQ4X3QgZG93bnN0cmVhbV9wb3J0c1tEUF9NQVhfRE9XTlNUUkVBTV9QT1JUU107 Cj4gKwl1aW50OF90IGVkcF9kcGNkW0VEUF9ESVNQTEFZX0NUTF9DQVBfU0laRV07Cj4gIAkvKiBz aW5rIHJhdGVzIGFzIHJlcG9ydGVkIGJ5IERQX1NVUFBPUlRFRF9MSU5LX1JBVEVTICovCj4gIAl1 aW50OF90IG51bV9zaW5rX3JhdGVzOwo+ICAJaW50IHNpbmtfcmF0ZXNbRFBfTUFYX1NVUFBPUlRF RF9SQVRFU107Cj4gQEAgLTEyNzksNiArMTI4MCwxMSBAQCB2b2lkIGludGVsX2RwX2NvbXB1dGVf cmF0ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBpbnQgcG9ydF9jbG9jaywKPiAgYm9vbCBp bnRlbF9kcF9zb3VyY2Vfc3VwcG9ydHNfaGJyMihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsK PiAgYm9vbAo+ICBpbnRlbF9kcF9nZXRfbGlua19zdGF0dXMoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCwgdWludDhfdCBsaW5rX3N0YXR1c1tEUF9MSU5LX1NUQVRVU19TSVpFXSk7Cj4gK3NzaXpl X3QgaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgdW5zaWdu ZWQgaW50IG9mZnNldCwKPiArCQl2b2lkICpidWZmZXIsIHNpemVfdCBzaXplKTsKPiArCj4gKy8q IGludGVsX2RwX2F1eF9iYWNrbGlnaHQuYyAqLwo+ICtpbnQgaW50ZWxfZHBfYXV4X2luaXRfYmFj a2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3Rvcik7Cj4g IAo+ICAvKiBpbnRlbF9kcF9tc3QuYyAqLwo+ICBpbnQgaW50ZWxfZHBfbXN0X2VuY29kZXJfaW5p dChzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICppbnRlbF9kaWdfcG9ydCwgaW50IGNvbm5faWQp Owo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IDcyMTgzYTAuLmNjNzZmOGMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAtMTc2MCw2ICsxNzYwLDEw IEBAIGludGVsX3BhbmVsX2luaXRfYmFja2xpZ2h0X2Z1bmNzKHN0cnVjdCBpbnRlbF9wYW5lbCAq cGFuZWwpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfY29ubmVjdG9yLT5iYXNl LmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7Cj4gIAo+ICsJaWYgKGludGVsX2Nvbm5lY3Rvci0+YmFzZS5jb25uZWN0b3JfdHlwZSA9 PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQICYmCj4gKwkJCWludGVsX2RwX2F1eF9pbml0X2JhY2ts aWdodF9mdW5jcyhpbnRlbF9jb25uZWN0b3IpID09IDApCj4gKwkJcmV0dXJuOwo+ICsKClRoZSBj b250ZXh0IGhhcyBjaGFuZ2VkLCBhbmQgdGhpcyBodW5rIG5vIGxvbmdlciBhcHBsaWVzIGNsZWFu bHkuCgo+ICAJaWYgKElTX0JST1hUT04oZGV2KSkgewo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuc2V0 dXAgPSBieHRfc2V0dXBfYmFja2xpZ2h0Owo+ICAJCXBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlID0g Ynh0X2VuYWJsZV9iYWNrbGlnaHQ7CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNl IFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50 ZWwtZ2Z4Cg==