From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: CABC support for backlight control Date: Mon, 14 Sep 2015 15:20:35 +0300 Message-ID: <87pp1ljip8.fsf@intel.com> References: <20150914094136.GA3383@phenom.ffwll.local> <1442224394-6297-1-git-send-email-m.deepak@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 069286E06F for ; Mon, 14 Sep 2015 05:17:25 -0700 (PDT) In-Reply-To: <1442224394-6297-1-git-send-email-m.deepak@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: Deepak M List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAxNCBTZXAgMjAxNSwgRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4gd3JvdGU6 Cj4gSW4gQ0FCQyAoQ29udGVudCBBZGFwdGl2ZSBCcmlnaHRuZXNzIENvbnRyb2wpIGNvbnRlbnQg Z3JleSBsZXZlbAo+IHNjYWxlIGNhbiBiZSBpbmNyZWFzZWQgd2hpbGUgc2ltdWx0YW5lb3VzbHkg ZGVjcmVhc2luZwo+IGJyaWdodG5lc3Mgb2YgdGhlIGJhY2tsaWdodCB0byBhY2hpZXZlIHNhbWUg cGVyY2VpdmVkIGJyaWdodG5lc3MuCj4KPiBUaGUgQ0FCQyBpcyBub3Qgc3RhbmRhcmRpemVkIGFu ZCBwYW5lbCB2ZW5kb3JzIGFyZSBmcmVlIHRvIGZvbGxvdwo+IHRoZWlyIGltcGxlbWVudGF0aW9u LiBUaGUgQ0FCQyBpbXBsZW1lbnRhaW9uIGhlcmUgYXNzdW1lcyB0aGF0IHRoZQo+IHBhbmVscyB1 c2Ugc3RhbmRhcmQgU1cgcmVnaXN0ZXIgZm9yIGNvbnRyb2wuCj4KPiBJbiB0aGlzIGRlc2lnbiB0 aGVyZSB3aWxsIGJlIG5vIFBXTSBzaWduYWwgZnJvbSB0aGUgU29DIGFuZCBEQ1MKPiBjb21tYW5k cyBhcmUgc2VudCB0byBlbmFibGUgYW5kIGNvbnRyb2wgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNz LgoKSSB0aGluayBDQUJDIGlzIGEgY29uZnVzaW5nIG5hbWUgZm9yIHRoaXMuIEF0IHRoZSBoaWdo IGxldmVsLCB0aGlzCnNob3VsZCBiZSBjYWxsZWQsIHNheSwgRENTIGJhY2tsaWdodCBjb250cm9s LiBJIHRoaW5rIENBQkMgaXMgYSBzcGVjaWFsCmNhc2Ugb2YgYmFja2xpZ2h0IGNvbnRyb2wgaW4g dGhlIERTSSBwYW5lbDsgdGhlcmUgYXJlIHBhbmVscyB3aXRoCmJyaWdodG5lc3MgY29udHJvbCB2 aWEgRENTICp3aXRob3V0KiBDQUJDLgoKU2VlIGZ1cnRoZXIgY29tbWVudHMgaW5saW5lLgoKPgo+ IHYyOgo+IC0gQ3JlYXRlZCBhIG5ldyBiYWNrbGlnaHQgZHJpdmVyIGZvciBjYWJjLCB3aGljaCB3 aWxsIGJlIHJlZ2lzdGVyZWQKPiAgIG9ubHkgd2hlbiBpdCBjYWJjIGlzIHN1cHBvcnRlZCBieSBw YW5lbC4gKERhbmllbCBWZXR0ZXIpCj4gdjM6Cj4gLSBVc2UgZm9yX2VhY2hfZHNpX3BvcnQgbWFj cm8gZm9yIGhhbmRsaW5nIHBvcnQgQyBhbHNvIChHYXVyYXYpCj4gLSBSZWJhc2UKPgo+IFNpZ25l ZC1vZmYtYnk6IERlZXBhayBNIDxtLmRlZXBha0BpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgfCAgICAxICsKPiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpLmMgICAgICB8ICAgMTggKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpX2NhYmMuYyB8ICAzMTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmggfCAgIDQ2ICsrKysrCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgfCAgIDIzICsrLQo+ICBpbmNs dWRlL3ZpZGVvL21pcGlfZGlzcGxheS5oICAgICAgICAgIHwgICAgOCArCj4gIDYgZmlsZXMgY2hh bmdlZCwgMzk5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4gIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5jCj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5oCj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9NYWtlZmlsZQo+IGluZGV4IDQ0ZDI5MGEuLmQ4N2M2OTAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQo+IEBAIC04Miw2ICs4Miw3IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAo+ICAJICBp bnRlbF9kc2kubyBcCj4gIAkgIGludGVsX2RzaV9wYW5lbF92YnQubyBcCj4gIAkgIGludGVsX2Rz aV9wbGwubyBcCj4gKwkgIGludGVsX2RzaV9jYWJjLm8gXAo+ICAJICBpbnRlbF9kdm8ubyBcCj4g IAkgIGludGVsX2hkbWkubyBcCj4gIAkgIGludGVsX2kyYy5vIFwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuYwo+IGluZGV4IDc4MWMyNjcuLjFkOThlZDggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kc2kuYwo+IEBAIC0zNSw2ICszNSw3IEBACj4gICNpbmNsdWRlICJpOTE1X2Rydi5oIgo+ICAj aW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICNpbmNsdWRlICJpbnRlbF9kc2kuaCIKPiArI2luY2x1 ZGUgImludGVsX2RzaV9jYWJjLmgiCj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKPiAgCXUx NiBwYW5lbF9pZDsKPiBAQCAtMzk4LDcgKzM5OSwxMCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAJCWludGVsX2RzaV9wb3J0 X2VuYWJsZShlbmNvZGVyKTsKPiAgCX0KPiAgCj4gLQlpbnRlbF9wYW5lbF9lbmFibGVfYmFja2xp Z2h0KGludGVsX2RzaS0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiArCWlmIChkZXZfcHJpdi0+dmJ0 LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCWNhYmNfZW5hYmxlX2JhY2tsaWdodChp bnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Cj4gKwllbHNlCj4gKwkJaW50ZWxfcGFuZWxf ZW5hYmxlX2JhY2tsaWdodChpbnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3Rvcik7CgpTZWUgbXkg cGF0Y2ggYXQgWzFdIGZvciBob3cgSSB0aGluayBhbGwgb2YgdGhpcyBzaG91bGQgYmUgaGFuZGxl ZC4KClsxXSBodHRwOi8vbWlkLmdtYW5lLm9yZy9jb3Zlci4xNDQyMjI3NzkwLmdpdC5qYW5pLm5p a3VsYUBpbnRlbC5jb20KCj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5h YmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IEBAIC00NTgsMTIgKzQ2MiwxNyBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZW5hYmxlX25vcChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlcikKPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZGlzYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGVuY29kZXItPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVu Y190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICAJZW51bSBwb3J0IHBvcnQ7Cj4gIAo+ ICAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiAgCj4gLQlpbnRlbF9wYW5lbF9kaXNhYmxlX2JhY2ts aWdodChpbnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Cj4gKwlpZiAoZGV2X3ByaXYtPnZi dC5kc2kuY29uZmlnLT5jYWJjX3N1cHBvcnRlZCkKPiArCQljYWJjX2Rpc2FibGVfYmFja2xpZ2h0 KGludGVsX2RzaS0+YXR0YWNoZWRfY29ubmVjdG9yKTsKPiArCWVsc2UKPiArCQlpbnRlbF9wYW5l bF9kaXNhYmxlX2JhY2tsaWdodChpbnRlbF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3Rvcik7Cj4gIAo+ ICAJaWYgKGlzX3ZpZF9tb2RlKGludGVsX2RzaSkpIHsKPiAgCQkvKiBTZW5kIFNodXRkb3duIGNv bW1hbmQgdG8gdGhlIHBhbmVsIGluIExQIG1vZGUgKi8KPiBAQCAtMTEzMyw3ICsxMTQyLDEwIEBA IHZvaWQgaW50ZWxfZHNpX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCX0KPiAgCj4g IAlpbnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLCBmaXhlZF9tb2RlLCBO VUxMKTsKPiAtCWludGVsX3BhbmVsX3NldHVwX2JhY2tsaWdodChjb25uZWN0b3IsIElOVkFMSURf UElQRSk7Cj4gKwlpZiAoZGV2X3ByaXYtPnZidC5kc2kuY29uZmlnLT5jYWJjX3N1cHBvcnRlZCkK PiArCQljYWJjX3NldHVwX2JhY2tsaWdodChjb25uZWN0b3IsIElOVkFMSURfUElQRSk7Cj4gKwll bHNlCj4gKwkJaW50ZWxfcGFuZWxfc2V0dXBfYmFja2xpZ2h0KGNvbm5lY3RvciwgSU5WQUxJRF9Q SVBFKTsKPiAgCj4gIAlyZXR1cm47Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kc2lfY2FiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2Nh YmMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uYzJmY2Q5NQo+IC0t LSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5j Cj4gQEAgLTAsMCArMSwzMTAgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMDYtMjAxMCBJ bnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5IG9m IHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJT b2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0 aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8gdXNl LCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAo+ ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBl cnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBz dWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFib3Zl IGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0 aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ICsg KiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBB TlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1J VEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVWRU5U IFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBG T1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJ TiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4gKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsgKiBB dXRob3I6IERlZXBhayBNIDxtLmRlZXBha0BpbnRlbC5jb20+Cj4gKyAqLwo+ICsKPiArI2luY2x1 ZGUgPGxpbnV4L2tlcm5lbC5oPgo+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4KPiAr I2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZHNpLmgiCj4gKyNpbmNs dWRlICJpOTE1X2Rydi5oIgo+ICsjaW5jbHVkZSAiaW50ZWxfZHNpX2NhYmMuaCIKPiArI2luY2x1 ZGUgPHZpZGVvL21pcGlfZGlzcGxheS5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBpX2RzaS5o Pgo+ICsKPiArc3RhdGljIGlubGluZSBlbnVtIHBvcnQgZ2V0X2NhYmNfcG9ydChzdHJ1Y3QgaW50 ZWxfZHNpICppbnRlbF9kc2kpCj4gK3sKPiArCWlmIChpbnRlbF9kc2ktPmRsX2NhYmNfcG9ydCA9 PSBDQUJDX1BPUlRfQykKPiArCQlyZXR1cm4gUE9SVF9DOwo+ICsJZWxzZQo+ICsJCXJldHVybiBQ T1JUX0E7Cj4gK30KPiArCj4gK2ludCBjYWJjX3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgZHJtX2Nv bm5lY3RvciAqY29ubmVjdG9yLAo+ICsJCWVudW0gcGlwZSB1bnVzZWQpCj4gK3sKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiArCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSB0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsK PiArCXN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmaW50ZWxfY29ubmVjdG9yLT5wYW5lbDsK PiArCj4gKwlpZiAoZGV2X3ByaXYtPnZidC5iYWNrbGlnaHQucHJlc2VudCkKPiArCQlwYW5lbC0+ YmFja2xpZ2h0LnByZXNlbnQgPSB0cnVlOwo+ICsJZWxzZSB7Cj4gKwkJRFJNX0VSUk9SKCJubyBi YWNrbGlnaHQgcHJlc2VudCBwZXIgVkJUXG4iKTsKPiArCQlyZXR1cm4gMDsKPiArCX0KPiArCj4g KwlwYW5lbC0+YmFja2xpZ2h0Lm1heCA9IENBQkNfTUFYX1ZBTFVFOwo+ICsJcGFuZWwtPmJhY2ts aWdodC5sZXZlbCA9IENBQkNfTUFYX1ZBTFVFOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ ICt1MzIgY2FiY19nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rv cikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7 Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9j cnRjICpjcnRjID0gTlVMTDsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVM TDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4gKwl1OCBkYXRhWzJd ID0gezB9Owo+ICsJZW51bSBwb3J0IHBvcnQ7Cj4gKwl1MzIgcmV0Owo+ICsKPiArCWxpc3RfZm9y X2VhY2hfZW50cnkoY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7Cj4g KwkJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgewo+ICsJCQlp ZiAoZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJKSB7Cj4gKwkJCQlpbnRlbF9kc2kg PSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiArCQkJCWJyZWFrOwo+ICsJCQl9 Cj4gKwkJfQo+ICsJCWlmIChpbnRlbF9kc2kgIT0gTlVMTCkKPiArCQkJYnJlYWs7Cj4gKwl9CgpZ b3UgY2FuIGdldCBhdCBpbnRlbF9kc2kgdmlhIGNvbm5lY3Rvci0+ZW5jb2Rlci4gTm8gbmVlZCBm b3IgdGhpcyBraW5kCm9mIGxvb3BzLgoKU2FtZSBmb3Igc2ltaWxhciBsb29wcyBiZWxvdy4KCj4g Kwo+ICsJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgewo+ICsJCWlm IChpbnRlbF9kc2ktPmR1YWxfbGluaykKPiArCQkJcG9ydCA9IGdldF9jYWJjX3BvcnQoaW50ZWxf ZHNpKTsKPiArCj4gKwkJZHNpX2RldmljZSA9IGludGVsX2RzaS0+ZHNpX2hvc3RzW3BvcnRdLT5k ZXZpY2U7Cj4gKwkJbWlwaV9kc2lfZGNzX3JlYWQoZHNpX2RldmljZSwgTUlQSV9EQ1NfQ0FCQ19M RVZFTF9SRCwgZGF0YSwgMik7Cj4gKwo+ICsJCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluayAmJgo+ ICsJCQkJIShpbnRlbF9kc2ktPmRsX2NhYmNfcG9ydCA9PSBDQUJDX1BPUlRfQV9BTkRfQykpCj4g KwkJCWJyZWFrOwo+ICsJfQoKVGhhdCBpcyBhIHJlYWxseSBjb25mdXNpbmcgd2F5IHRvIGRvIHRo ZSBkY3MgY29tbWFuZCBvbiBvbmUgb3IgbW9yZQpwb3J0cy4gSG93IGFib3V0IG1ha2luZyBkbF9j YWJjX3BvcnQgKGhvcGVmdWxseSByZW5hbWVkIHRvIHNvbWV0aGluZwpyZWZlcnJpbmcgdG8gZGNz IHJhdGhlciB0aGFuIGNhYmMpIGEgYml0bWFwIG9mIHBvcnRzIHNpbWlsYXIgdG8KaW50ZWxfZHNp LT5wb3J0cywgc28geW91IGNhbiBtYWtlIHRoaXMgbG9vcCBzaW1wbHk6CgoJZm9yX2VhY2hfZHNp X3BvcnQocG9ydCwgZGNzX2JhY2tsaWdodF9wb3J0cykKICAgICAgICAJLi4uCgpUaGVyZSdkIGJl IG5vIG5lZWQgZm9yIHNwZWNpYWwgY2FzaW5nIGFuZCBjb25kaXRpb25hbCBicmVha3Mgb3V0IG9m IHRoZQpsb29wIG9yIGFueXRoaW5nLgoKU2FtZSBmb3Igc2ltaWxhciBsb29wcyBiZWxvdy4KCj4g Kwo+ICsJcmV0ID0gZGF0YVsxXTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lk IGNhYmNfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsIHUz MiBsZXZlbCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0gTlVMTDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4gKwl1OCBk YXRhWzJdID0gezB9Owo+ICsJZW51bSBwb3J0IHBvcnQ7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGhlYWQpIHsKPiArCQlmb3Jf ZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7Cj4gKwkJCWlmIChlbmNv ZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EU0kpIHsKPiArCQkJCWludGVsX2RzaSA9IGVuY190 b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9 Cj4gKwkJaWYgKGludGVsX2RzaSAhPSBOVUxMKQo+ICsJCQlicmVhazsKPiArCX0KPiArCj4gKwlm b3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJaWYgKGludGVs X2RzaS0+ZHVhbF9saW5rKQo+ICsJCQlwb3J0ID0gZ2V0X2NhYmNfcG9ydChpbnRlbF9kc2kpOwo+ ICsKPiArCQlkc2lfZGV2aWNlID0gaW50ZWxfZHNpLT5kc2lfaG9zdHNbcG9ydF0tPmRldmljZTsK PiArCQlkYXRhWzFdID0gbGV2ZWw7Cj4gKwkJZGF0YVswXSA9IE1JUElfRENTX0NBQkNfTEVWRUxf V1I7Cj4gKwkJbWlwaV9kc2lfZGNzX3dyaXRlX2J1ZmZlcihkc2lfZGV2aWNlLCBkYXRhLCAyKTsK PiArCj4gKwkJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rICYmCj4gKwkJCSEoaW50ZWxfZHNpLT5k bF9jYWJjX3BvcnQgPT0gQ0FCQ19QT1JUX0FfQU5EX0MpKQo+ICsJCQlicmVhazsKPiArCX0KPiAr fQo+ICsKPiArdm9pZCBjYWJjX2VuYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9y LT5iYXNlLmRldjsKPiArCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IE5VTEw7Cj4gKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVu Y29kZXIgPSBOVUxMOwo+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3It PnBhbmVsOwo+ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpX2RldmljZTsKPiArCWVudW0g cG9ydCBwb3J0Owo+ICsJdTggZGF0YVsyXSA9IHswfTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGNydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgewo+ICsJCWZvcl9l YWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpIHsKPiArCQkJaWYgKGVuY29k ZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkgewo+ICsJCQkJaW50ZWxfZHNpID0gZW5jX3Rv X2ludGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gKwkJCQlicmVhazsKPiArCQkJfQo+ICsJCX0K PiArCQlpZiAoaW50ZWxfZHNpICE9IE5VTEwpCj4gKwkJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWZv cl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsKPiArCQlpZiAoaW50ZWxf ZHNpLT5kdWFsX2xpbmspCj4gKwkJCXBvcnQgPSBnZXRfY2FiY19wb3J0KGludGVsX2RzaSk7Cj4g Kwo+ICsJCWRzaV9kZXZpY2UgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XS0+ZGV2aWNlOwo+ ICsJCWRhdGFbMF0gPSBNSVBJX0RDU19DQUJDX0NPTlRST0xfQlJJR0hUX1dSOwo+ICsJCWRhdGFb MV0gPSBDQUJDX0JBQ0tMSUdIVCB8IENBQkNfRElNTUlOR19ESVNQTEFZIHwgQ0FCQ19CQ1RSTDsK PiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZpY2UsIGRhdGEsIDIpOwo+ICsJ CWRhdGFbMF0gPSBNSVBJX0RDU19DQUJDX0NPTlRST0xfV1I7Cj4gKwkJZGF0YVsxXSA9IENBQkNf U1RJTExfUElDVFVSRTsKPiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZpY2Us IGRhdGEsIDIpOwo+ICsKPiArCQlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmsgJiYKPiArCQkJCSEo aW50ZWxfZHNpLT5kbF9jYWJjX3BvcnQgPT0gQ0FCQ19QT1JUX0FfQU5EX0MpKQo+ICsJCQlicmVh azsKPiArCX0KPiArCj4gKwljYWJjX3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCBwYW5lbC0+YmFj a2xpZ2h0LmxldmVsKTsKPiArfQo+ICsKPiArdm9pZCBjYWJjX2Rpc2FibGVfYmFja2xpZ2h0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRl bF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPiArCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVMTDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UgKmRzaV9kZXZpY2U7Cj4gKwllbnVtIHBvcnQgcG9ydDsKPiArCXU4IGRhdGFbMl0gPSB7MH07 Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRj X2xpc3QsIGhlYWQpIHsKPiArCQlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBl bmNvZGVyKSB7Cj4gKwkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EU0kpIHsK PiArCQkJCWludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICsJ CQkJYnJlYWs7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJaWYgKGludGVsX2RzaSAhPSBOVUxMKQo+ICsJ CQlicmVhazsKPiArCX0KPiArCj4gKwljYWJjX3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsK PiArCj4gKwlmb3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJ aWYgKGludGVsX2RzaS0+ZHVhbF9saW5rKQo+ICsJCQlwb3J0ID0gZ2V0X2NhYmNfcG9ydChpbnRl bF9kc2kpOwo+ICsJCWRzaV9kZXZpY2UgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XS0+ZGV2 aWNlOwo+ICsKPiArCQlkYXRhWzFdID0gQ0FCQ19PRkY7Cj4gKwkJZGF0YVswXSA9IE1JUElfRENT X0NBQkNfQ09OVFJPTF9XUjsKPiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZp Y2UsIGRhdGEsIDIpOwo+ICsJCWRhdGFbMF0gPSBNSVBJX0RDU19DQUJDX0NPTlRST0xfQlJJR0hU X1dSOwo+ICsJCW1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpX2RldmljZSwgZGF0YSwgMik7 Cj4gKwo+ICsJCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluayAmJgo+ICsJCQkJIShpbnRlbF9kc2kt PmRsX2NhYmNfcG9ydCA9PSBDQUJDX1BPUlRfQV9BTkRfQykpCj4gKwkJCWJyZWFrOwo+ICsJfQo+ ICt9Cj4gK3N0YXRpYyBpbnQgY2FiY19iYWNrbGlnaHRfZGV2aWNlX3VwZGF0ZV9zdGF0dXMoc3Ry dWN0IGJhY2tsaWdodF9kZXZpY2UgKmJkKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9y ICpjb25uZWN0b3IgPSBibF9nZXRfZGF0YShiZCk7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiArCj4gKwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1v ZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIE5VTEwpOwo+ICsJRFJNX0RFQlVHX0tNUygidXBk YXRpbmcgaW50ZWxfYmFja2xpZ2h0LCBicmlnaHRuZXNzPSVkLyVkXG4iLAo+ICsJCQliZC0+cHJv cHMuYnJpZ2h0bmVzcywgYmQtPnByb3BzLm1heF9icmlnaHRuZXNzKTsKPiArCj4gKwljYWJjX3Nl dF9iYWNrbGlnaHQoY29ubmVjdG9yLCBiZC0+cHJvcHMuYnJpZ2h0bmVzcyk7Cj4gKwo+ICsJZHJt X21vZGVzZXRfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwo+ICsK PiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGNhYmNfYmFja2xpZ2h0X2Rldmlj ZV9nZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCj4gK3sKPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciA9IGJsX2dldF9kYXRhKGJkKTsKPiArCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Owo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCWludCByZXQ7 Cj4gKwo+ICsJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYpOwo+ICsJZHJtX21vZGVzZXRf bG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKPiArCj4gKwly ZXQgPSBjYWJjX2dldF9iYWNrbGlnaHQoY29ubmVjdG9yKTsKPiArCj4gKwlkcm1fbW9kZXNldF91 bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gKwlpbnRlbF9ydW50 aW1lX3BtX3B1dChkZXZfcHJpdik7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzIGNhYmNfYmFja2xpZ2h0X2RldmljZV9vcHMg PSB7Cj4gKwkudXBkYXRlX3N0YXR1cyA9IGNhYmNfYmFja2xpZ2h0X2RldmljZV91cGRhdGVfc3Rh dHVzLAo+ICsJLmdldF9icmlnaHRuZXNzID0gY2FiY19iYWNrbGlnaHRfZGV2aWNlX2dldF9icmln aHRuZXNzLAo+ICt9Owo+ICsKPiAraW50IGNhYmNfYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rlcihz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9w YW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiArCXN0cnVjdCBiYWNrbGlnaHRfcHJv cGVydGllcyBwcm9wczsKPiArCj4gKwlpZiAoV0FSTl9PTihwYW5lbC0+YmFja2xpZ2h0LmRldmlj ZSkpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJaWYgKCFwYW5lbC0+YmFja2xpZ2h0LnBy ZXNlbnQpIHsKPiArCQlEUk1fRVJST1IoIk5vIGJhY2tsaWdodCBwcmVzZW50XG4iKTsKPiArCQly ZXR1cm4gMDsKPiArCX0KPiArCj4gKwlXQVJOX09OKHBhbmVsLT5iYWNrbGlnaHQubWF4ID09IDAp Owo+ICsKPiArCW1lbXNldCgmcHJvcHMsIDAsIHNpemVvZihwcm9wcykpOwo+ICsJcHJvcHMudHlw ZSA9IEJBQ0tMSUdIVF9GSVJNV0FSRTsKPiArCXByb3BzLm1heF9icmlnaHRuZXNzID0gcGFuZWwt PmJhY2tsaWdodC5tYXg7Cj4gKwlwcm9wcy5icmlnaHRuZXNzID0gcHJvcHMubWF4X2JyaWdodG5l c3M7Cj4gKwo+ICsJLyoKPiArCSAqIE5vdGU6IHVzaW5nIHRoZSBzYW1lIG5hbWUgaW5kZXBlbmRl bnQgb2YgdGhlIGNvbm5lY3RvciBwcmV2ZW50cwo+ICsJICogcmVnaXN0cmF0aW9uIG9mIG11bHRp cGxlIGJhY2tsaWdodCBkZXZpY2VzIGluIHRoZSBkcml2ZXIuCj4gKwkgKi8KPiArCXBhbmVsLT5i YWNrbGlnaHQuZGV2aWNlID0KPiArCQliYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKCJpbnRlbF9i YWNrbGlnaHQiLAo+ICsJCQkJY29ubmVjdG9yLT5iYXNlLmtkZXYsCj4gKwkJCQljb25uZWN0b3Is Cj4gKwkJCQkmY2FiY19iYWNrbGlnaHRfZGV2aWNlX29wcywgJnByb3BzKTsKPiArCj4gKwlpZiAo SVNfRVJSKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKSkgewo+ICsJCURSTV9FUlJPUigiRmFpbGVk IHRvIHJlZ2lzdGVyIGJhY2tsaWdodDogJWxkXG4iLAo+ICsJCQkJUFRSX0VSUihwYW5lbC0+YmFj a2xpZ2h0LmRldmljZSkpOwo+ICsJCXBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlID0gTlVMTDsKPiAr CQlyZXR1cm4gLUVOT0RFVjsKPiArCX0KPiArCj4gKwlEUk1fREVCVUdfS01TKCJDb25uZWN0b3Ig JXMgYmFja2xpZ2h0IHN5c2ZzIGludGVyZmFjZSByZWdpc3RlcmVkXG4iLAo+ICsJCQljb25uZWN0 b3ItPmJhc2UubmFtZSk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3ZvaWQgY2FiY19i YWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFu ZWw7Cj4gKwo+ICsJaWYgKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKSB7Cj4gKwkJYmFja2xpZ2h0 X2RldmljZV91bnJlZ2lzdGVyKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKTsKPiArCQlwYW5lbC0+ YmFja2xpZ2h0LmRldmljZSA9IE5VTEw7Cj4gKwl9Cj4gK30KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2NhYmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RzaV9jYWJjLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmIx YTc5ZDkKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHNpX2NhYmMuaAo+IEBAIC0wLDAgKzEsNDYgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIw MTMgSW50ZWwgQ29ycG9yYXRpb24KPiArICoKPiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29w eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo ZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0 cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRv IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5z ZSwKPiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1p dCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz bywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBh Ym92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRp bmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29w aWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoK PiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkg T0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiArICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1Qg TElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBF VkVOVCBTSEFMTAo+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgo+ICsgKiBMSUFCSUxJVFksIFdIRVRI RVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORwo+ ICsgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBU SEUgVVNFIE9SIE9USEVSCj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KPiArICoKPiAr ICogQXV0aG9yOiBEZWVwYWsgTSA8bS5kZWVwYWtAaW50ZWwuY29tPgo+ICsgKi8KPiArCj4gK2V4 dGVybiBpbnQgY2FiY19iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3Rvcik7Cj4gK2V4dGVybiB2b2lkIGNhYmNfYmFja2xpZ2h0X2RldmljZV91 bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gK3ZvaWQgY2Fi Y19zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxl dmVsKTsKPiArdTMyIGNhYmNfZ2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpOwo+ICt2b2lkIGNhYmNfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IpOwo+ICt2b2lkIGNhYmNfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0 IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiAraW50IGNhYmNfc2V0dXBfYmFja2xpZ2h0 KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsIGVudW0gcGlwZSB1bnVzZWQpOwo+ICsK PiArI2RlZmluZSBDQUJDX09GRgkJCSgwIDw8IDApCj4gKyNkZWZpbmUgQ0FCQ19VU0VSX0lOVEVS RkFDRV9JTUFHRQkoMSA8PCAwKQo+ICsjZGVmaW5lIENBQkNfU1RJTExfUElDVFVSRQkJKDIgPDwg MCkKPiArI2RlZmluZSBDQUJDX1ZJREVPX01PREUJCQkoMyA8PCAwKQo+ICsKPiArI2RlZmluZSBD QUJDX0JBQ0tMSUdIVAkJCSgxIDw8IDIpCj4gKyNkZWZpbmUgQ0FCQ19ESU1NSU5HX0RJU1BMQVkJ CSgxIDw8IDMpCj4gKyNkZWZpbmUgQ0FCQ19CQ1RSTAkJCSgxIDw8IDUpCj4gKwo+ICsjZGVmaW5l IENBQkNfUE9SVF9BCQkJMHgwMAo+ICsjZGVmaW5lIENBQkNfUE9SVF9DCQkJMHgwMQo+ICsjZGVm aW5lIENBQkNfUE9SVF9BX0FORF9DCQkweDAyCj4gKyNkZWZpbmUgQ0FCQ19NQVhfVkFMVUUJCQkw eGZmCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggZTJhYjNmNi4uZmYyZTU4 NiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IEBAIC0zNCw2ICszNCw3IEBA Cj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGVwYXJhbS5oPgo+ICAjaW5jbHVkZSA8bGludXgvcHdt Lmg+Cj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX2RzaV9jYWJj LmgiCj4gIAo+ICAjZGVmaW5lIENSQ19QTUlDX1BXTV9QRVJJT0RfTlMJMjEzMzMKPiAgCj4gQEAg LTE1ODYsMTUgKzE1ODcsMjkgQEAgdm9pZCBpbnRlbF9wYW5lbF9maW5pKHN0cnVjdCBpbnRlbF9w YW5lbCAqcGFuZWwpCj4gIHZvaWQgaW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsK PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7 Cj4gIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmln LmNvbm5lY3Rvcl9saXN0LCBiYXNlLmhlYWQpCj4gLQkJaW50ZWxfYmFja2xpZ2h0X2RldmljZV9y ZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZk ZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LAo+ICsJCQkJCWJhc2UuaGVhZCkgewo+ICsJ CWlmIChjb25uZWN0b3ItPmVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSAmJgo+ICsJ CQlkZXZfcHJpdi0+dmJ0LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCQljYWJjX2Jh Y2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCQllbHNlCj4gKwkJCWludGVs X2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCX0KPiAgfQo+ICAKPiAg dm9pZCBpbnRlbF9iYWNrbGlnaHRfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAKPiAtCWxpc3Rf Zm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0b3JfbGlz dCwgYmFzZS5oZWFkKQo+IC0JCWludGVsX2JhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3Rlcihjb25u ZWN0b3IpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29u ZmlnLmNvbm5lY3Rvcl9saXN0LAo+ICsJCQkJCWJhc2UuaGVhZCkgewo+ICsJCWlmIChjb25uZWN0 b3ItPmVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSAmJgo+ICsJCQlkZXZfcHJpdi0+ dmJ0LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCQljYWJjX2JhY2tsaWdodF9kZXZp Y2VfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJCWVsc2UKPiArCQkJaW50ZWxfYmFja2xpZ2h0 X2RldmljZV91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwl9Cj4gIH0KPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS92aWRlby9taXBpX2Rpc3BsYXkuaCBiL2luY2x1ZGUvdmlkZW8vbWlwaV9kaXNwbGF5 LmgKPiBpbmRleCBkZGNjOGNhLi41YjhlZWVjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdmlkZW8v bWlwaV9kaXNwbGF5LmgKPiArKysgYi9pbmNsdWRlL3ZpZGVvL21pcGlfZGlzcGxheS5oCj4gQEAg LTExNyw2ICsxMTcsMTQgQEAgZW51bSB7Cj4gIAlNSVBJX0RDU19HRVRfU0NBTkxJTkUJCT0gMHg0 NSwKPiAgCU1JUElfRENTX1JFQURfRERCX1NUQVJUCQk9IDB4QTEsCj4gIAlNSVBJX0RDU19SRUFE X0REQl9DT05USU5VRQk9IDB4QTgsCj4gKwlNSVBJX0RDU19DQUJDX0xFVkVMX1JEICAgICAgICAg ID0gMHg1MiwKPiArCU1JUElfRENTX0NBQkNfTUlOX0JSSUdIVE5FU1NfUkQgPSAweDVGLAo+ICsJ TUlQSV9EQ1NfQ0FCQ19DT05UUk9MX1JEICAgICAgICA9IDB4NTYsCj4gKwlNSVBJX0RDU19DQUJD X0NPTlRST0xfQlJJR0hUX1JEID0gMHg1NCwKPiArCU1JUElfRENTX0NBQkNfTEVWRUxfV1IgICAg ICAgICAgPSAweDUxLAo+ICsJTUlQSV9EQ1NfQ0FCQ19NSU5fQlJJR0hUTkVTU19XUiA9IDB4NUUs Cj4gKwlNSVBJX0RDU19DQUJDX0NPTlRST0xfV1IgICAgICAgID0gMHg1NSwKPiArCU1JUElfRENT X0NBQkNfQ09OVFJPTF9CUklHSFRfV1IgPSAweDUzLAoKVGhlc2UgY2hhbmdlcyBuZWVkIHRvIGJl IGEgc2VwYXJhdGUgcGF0Y2guIEFuZCB3aGF0J3MgdGhlIHNwZWMKcmVmZXJlbmNlLCBJIGNhbid0 IGZpbmQgdGhlc2UuCgpCUiwKSmFuaS4KCgo+ICB9Owo+ICAKPiAgLyogTUlQSSBEQ1MgcGl4ZWwg Zm9ybWF0cyAqLwo+IC0tIAo+IDEuNy45LjUKPgo+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21h aWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291 cmNlIFRlY2hub2xvZ3kgQ2VudGVyCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4Cg==