From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Singh, Gaurav K" Subject: Re: [RFC CABC PATCH v2 3/3] drm/i915: CABC support for backlight control Date: Thu, 30 Jul 2015 16:18:23 +0530 Message-ID: <55BA00F7.8000606@intel.com> References: <20150706125106.GZ2156@phenom.ffwll.local> <1437740649-9168-1-git-send-email-m.deepak@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 034C07A140 for ; Thu, 30 Jul 2015 03:48:25 -0700 (PDT) In-Reply-To: <1437740649-9168-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: Deepak M , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiA3LzI0LzIwMTUgNTo1NCBQTSwgRGVlcGFrIE0gd3JvdGU6Cj4gSW4gQ0FCQyAoQ29udGVu dCBBZGFwdGl2ZSBCcmlnaHRuZXNzIENvbnRyb2wpIGNvbnRlbnQgZ3JleSBsZXZlbAo+IHNjYWxl IGNhbiBiZSBpbmNyZWFzZWQgd2hpbGUgc2ltdWx0YW5lb3VzbHkgZGVjcmVhc2luZwo+IGJyaWdo dG5lc3Mgb2YgdGhlIGJhY2tsaWdodCB0byBhY2hpZXZlIHNhbWUgcGVyY2VpdmVkIGJyaWdodG5l c3MuCj4KPiBUaGUgQ0FCQyBpcyBub3Qgc3RhbmRhcmRpemVkIGFuZCBwYW5lbCB2ZW5kb3JzIGFy ZSBmcmVlIHRvIGZvbGxvdwo+IHRoZWlyIGltcGxlbWVudGF0aW9uLiBUaGUgQ0FCQyBpbXBsZW1l bnRhaW9uIGhlcmUgYXNzdW1lcyB0aGF0IHRoZQo+IHBhbmVscyB1c2Ugc3RhbmRhcmQgU1cgcmVn aXN0ZXIgZm9yIGNvbnRyb2wuCj4KPiBJbiB0aGlzIGRlc2lnbiB0aGVyZSB3aWxsIGJlIG5vIFBX TSBzaWduYWwgZnJvbSB0aGUgU29DIGFuZCBEQ1MKPiBjb21tYW5kcyBhcmUgc2VudCB0byBlbmFi bGUgYW5kIGNvbnRyb2wgdGhlIGJhY2tsaWdodCBicmlnaHRuZXNzLgo+Cj4gdjI6Cj4gLSBDcmVh dGVkIGEgbmV3IGJhY2tsaWdodCBkcml2ZXIgZm9yIGNhYmMsIHdoaWNoIHdpbGwgYmUgcmVnaXN0 ZXJlZAo+ICAgIG9ubHkgd2hlbiBpdCBjYWJjIGlzIHN1cHBvcnRlZCBieSBwYW5lbC4KPiAgICAo QWRkcmVzc2VkIGNvbW1lbnQgZnJvbSBEYW5pZWwgVmV0dGVyKQo+Cj4gU2lnbmVkLW9mZi1ieTog RGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlICAgICAgICAgfCAgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oICAgICAgfCAgICAzICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYyAgICAgIHwgICAxMyArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2Nh YmMuYyB8ICAzNDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5oIHwgICA0NSArKysrKwo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICB8ICAgMjIgKystCj4gICBpbmNsdWRlL3ZpZGVv L21pcGlfZGlzcGxheS5oICAgICAgICAgIHwgICAgOCArCj4gICA3IGZpbGVzIGNoYW5nZWQsIDQz NiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmMKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5oCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQo+IGluZGV4IGRlMjE5NjUuLmE3Mzk1M2MgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ IEBAIC03NSw2ICs3NSw3IEBAIGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAo+ICAgCSAgaW50ZWxf ZHBfbXN0Lm8gXAo+ICAgCSAgaW50ZWxfZHNpLm8gXAo+ICAgCSAgaW50ZWxfZHNpX3BsbC5vIFwK PiArCSAgaW50ZWxfZHNpX2NhYmMubyBcCj4gICAJICBpbnRlbF9kc2lfcGFuZWxfdmJ0Lm8gXAo+ ICAgCSAgaW50ZWxfZHZvLm8gXAo+ICAgCSAgaW50ZWxfaGRtaS5vIFwKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaAo+IGluZGV4IDNmMGE4OTAuLjlmODA2ZGQ1IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBAQCAtMTMxOSw3ICsxMzE5LDggQEAgZXh0ZXJuIHN0cnVjdCBkcm1fZGlz cGxheV9tb2RlICppbnRlbF9maW5kX3BhbmVsX2Rvd25jbG9jaygKPiAgIAkJCQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiAgIHZvaWQgaW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAgdm9pZCBpbnRlbF9iYWNrbGlnaHRfdW5yZWdp c3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAtCj4gK2V4dGVybiBpbnQgY2FiY19iYWNr bGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7 Cj4gK2V4dGVybiB2b2lkIGNhYmNfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gICAKPiAgIC8qIGludGVsX3Bzci5jICovCj4g ICB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiBpbmRleCA5ODk5OGU5Li44ZjAwNmYyIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHNpLmMKPiBAQCAtMzQsNiArMzQsNyBAQAo+ICAgI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxf ZHNpLmgiCj4gKyNpbmNsdWRlICJpbnRlbF9kc2lfY2FiYy5oIgo+ICAgCj4gICBzdGF0aWMgY29u c3Qgc3RydWN0IHsKPiAgIAl1MTYgcGFuZWxfaWQ7Cj4gQEAgLTM3Niw2ICszNzcsNyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9kc2lfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5iYXNlLmRldjsKPiAgIAlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0 cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJh c2UpOwo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gaW50ZWxfZHNpLT5h dHRhY2hlZF9jb25uZWN0b3I7Cj4gICAJZW51bSBwb3J0IHBvcnQ7Cj4gICAKPiAgIAlEUk1fREVC VUdfS01TKCJcbiIpOwo+IEBAIC0zOTYsNiArMzk4LDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZHNp X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgIAo+ICAgCQlpbnRlbF9k c2lfcG9ydF9lbmFibGUoZW5jb2Rlcik7Cj4gICAJfQo+ICsKPiArCWlmIChkZXZfcHJpdi0+dmJ0 LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCWNhYmNfZW5hYmxlX2JhY2tsaWdodChj b25uZWN0b3IpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfcHJlX2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiBAQCAtNDY5LDExICs0NzQsMTUgQEAg c3RhdGljIHZvaWQgaW50ZWxfZHNpX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXIpCj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2Owo+ICAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4g ICAJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rl ci0+YmFzZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBpbnRlbF9k c2ktPmF0dGFjaGVkX2Nvbm5lY3RvcjsKPiAgIAllbnVtIHBvcnQgcG9ydDsKPiAgIAl1MzIgdGVt cDsKPiAgIAo+ICAgCURSTV9ERUJVR19LTVMoIlxuIik7Cj4gICAKPiArCWlmIChkZXZfcHJpdi0+ dmJ0LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCWNhYmNfZGlzYWJsZV9iYWNrbGln aHQoY29ubmVjdG9yKTsKPiArCj4gICAJaWYgKGlzX3ZpZF9tb2RlKGludGVsX2RzaSkpIHsKPiAg IAkJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykKPiAgIAkJCXdhaXRf Zm9yX2RzaV9maWZvX2VtcHR5KGludGVsX2RzaSwgcG9ydCk7Cj4gQEAgLTEwOTksNiArMTEwOCwx MCBAQCB2b2lkIGludGVsX2RzaV9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gICAKPiAg IAlpbnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLCBmaXhlZF9tb2RlLCBO VUxMKTsKPiAgIAo+ICsJaWYgKGRldl9wcml2LT52YnQuZHNpLmNvbmZpZy0+Y2FiY19zdXBwb3J0 ZWQpCj4gKwkJY2FiY19zZXR1cF9iYWNrbGlnaHQoY29ubmVjdG9yLAo+ICsJCQlpbnRlbF9lbmNv ZGVyLT5jcnRjX21hc2sgPT0KPiArCQkJCSgxIDw8IFBJUEVfQSkgPyBQSVBFX0EgOiBQSVBFX0Ip Owo+ICAgCXJldHVybjsKPiAgIAo+ICAgZXJyOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp X2NhYmMuYwo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMC4uMmE3ODMyNgo+ IC0tLSAvZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2Fi Yy5jCj4gQEAgLTAsMCArMSwzNDkgQEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMDYtMjAx MCBJbnRlbCBDb3Jwb3JhdGlvbgo+ICsgKgo+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFu dGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQo+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl ICJTb2Z0d2FyZSIpLAo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3Ry aWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCj4gKyAqIHRoZSByaWdodHMgdG8g dXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNl LAo+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0 IHBlcnNvbnMgdG8gd2hvbSB0aGUKPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNv LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiArICoKPiArICogVGhlIGFi b3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGlu ZyB0aGUgbmV4dAo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3Bp ZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCj4gKyAqIFNvZnR3YXJlLgo+ICsgKgo+ ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKPiArICogRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5PIEVW RU5UIFNIQUxMCj4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJM RSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCj4gKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCj4g KyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRI RSBVU0UgT1IgT1RIRVIKPiArICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo+ICsgKgo+ICsg Ki8KPiArCj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21v ZHVsZXBhcmFtLmg+Cj4gKyNpbmNsdWRlICJpbnRlbF9kcnYuaCIKPiArI2luY2x1ZGUgImludGVs X2RzaS5oIgo+ICsjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiArI2luY2x1ZGUgImludGVsX2RzaV9j YWJjLmgiCj4gKyNpbmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4KPiArI2luY2x1ZGUgPGRy bS9kcm1fbWlwaV9kc2kuaD4KPiArCj4gK2ludCBjYWJjX3NldHVwX2JhY2tsaWdodChzdHJ1Y3Qg aW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJZW51bSBwaXBlIHVudXNlZCkKPiArewo+ ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1 Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRj ID0gTlVMTDsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVMTDsKPiArCXN0 cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiArCXN0cnVjdCBt aXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4gKwl1OCBsZXZlbDsKPiArCj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KGNydGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgewo+ ICsJCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpIHsKPiArCQkJ aWYgKGVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkKPiArCQkJCWludGVsX2RzaSA9 IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItPmJhc2UpOwo+ICsJCX0KPiArCX0KPiArCWRzaV9k ZXZpY2UgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1swXS0+ZGV2aWNlOwpUaGlzIHdpbGwgd29yayBv bmx5IGZvciBNSVBJIFBvcnQgQSBub3QgZm9yIE1JUEkgUG9ydCBDLiBVc2UgCmZvcl9lYWNoX2Rz aV9wb3J0IG1hY3JvIGFuZCBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XSB0byBjb3JyZWN0bHkg CnJlYWNoIHRvIG1pcGlfZHNpX2RldmljZSBmb3IgYm90aCBwb3J0cy4gSWYgaXQgaXMgZHVhbCBs aW5rLCBicmVhayBhZnRlciAKdGhlIGNvbXBsZXRpb24gb2YgdGhlIGZpcnN0IGl0ZXJhdGlvbi4K PiArCXBhbmVsLT5iYWNrbGlnaHQubWF4ID0gQ0FCQ19NQVhfVkFMVUU7Cj4gKwlwYW5lbC0+YmFj a2xpZ2h0LmxldmVsID0gQ0FCQ19NQVhfVkFMVUU7Cj4gKwlsZXZlbCA9IENBQkNfTUFYX1ZBTFVF Owo+ICsJcGFuZWwtPmJhY2tsaWdodC5lbmFibGVkID0gdHJ1ZTsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICt1MzIgY2FiY19nZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0 IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVy ID0gTlVMTDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4gKwlzdHJ1 Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4gKwl1OCBkYXRhWzJd ID0gezB9Owo+ICsJZW51bSBwb3J0IHBvcnQgPSBQT1JUX0E7CndpbGwgZmFpbCBmb3Igc2luZ2xl IGxpbmsgTUlQSSBQb3J0IEMuCj4gKwl1MzIgcmV0Owo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50 cnkoY3J0YywgJmRldi0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7Cj4gKwkJZm9yX2Vh Y2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgewo+ICsJCQlpZiAoZW5jb2Rl ci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJKQo+ICsJCQkJaW50ZWxfZHNpID0gZW5jX3RvX2lu dGVsX2RzaSgmZW5jb2Rlci0+YmFzZSk7Cj4gKwkJfQo+ICsJfQo+ICsJaWYgKGludGVsX2RzaS0+ ZHVhbF9saW5rKSB7ClB1dCB0aGUgYmVsb3cgb3IgcmVxdWlyZWQgbG9naWMgaW50byBzdGF0aWMg aW5saW5lIGZ1bmN0aW9uIHJldHVybmluZyAKZW51bSBwb3J0IC4KPiArCQlpZiAoaW50ZWxfZHNp LT5kbF9jYWJjX3BvcnQgPT0gQ0FCQ19QT1JUX0EgfHwKPiArCQkJCWludGVsX2RzaS0+ZGxfY2Fi Y19wb3J0ID09IENBQkNfUE9SVF9BX0FORF9DKQo+ICsJCQlwb3J0ID0gUE9SVF9BOwo+ICsJCWVs c2UgaWYgKGludGVsX2RzaS0+ZGxfY2FiY19wb3J0ID09IENBQkNfUE9SVF9DKQo+ICsJCQlwb3J0 ID0gUE9SVF9DOwo+ICsJfQpVc2UgZm9yX2VhY2hfZHNpX3BvcnQgbWFjcm8gaGVyZSAuIGNhbGwg dGhlICBpbmxpbmUgZnVuY3Rpb24gd2l0aGluIApmb3JfZWFjaF9kc2lfcG9ydCBtYWNybyB0byBn ZXQgdGhlIHJlcXVpcmVkIGVudW0gcG9ydCBmb3IgZHVhbCBsaW5rLgo+ICsKPiArCWRzaV9kZXZp Y2UgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XS0+ZGV2aWNlOwo+ICsJbWlwaV9kc2lfZGNz X3JlYWQoZHNpX2RldmljZSwgTUlQSV9EQ1NfQ0FCQ19MRVZFTF9SRCwgZGF0YSwgMik7Cj4gKwo+ ICsJcmV0ID0gKGRhdGFbMV0gKiBwYW5lbC0+YmFja2xpZ2h0Lm1heCkgLyAyNTU7Cj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICt2b2lkIGNhYmNfc2V0X2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxf Y29ubmVjdG9yICpjb25uZWN0b3IsIHUzMiBsZXZlbCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRl bF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVMTDsKPiArCXN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVMTDsKPiArCXN0cnVjdCBtaXBpX2RzaV9kZXZp Y2UgKmRzaV9kZXZpY2U7Cj4gKwl1OCBkYXRhWzJdID0gezB9Owo+ICsJZW51bSBwb3J0IHBvcnQg PSBQT1JUX0E7Cj4gKwlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0gJmNvbm5lY3Rvci0+cGFu ZWw7Cj4gKwl1OCBjb3VudCA9IDE7Cj4gKwl1MzIgaHdfbGV2ZWw7Cj4gKwo+ICsJbGlzdF9mb3Jf ZWFjaF9lbnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGhlYWQpIHsKPiAr CQlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7Cj4gKwkJCWlm IChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EU0kpCj4gKwkJCQlpbnRlbF9kc2kgPSBl bmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNlKTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYg KGludGVsX2RzaS0+ZHVhbF9saW5rKSB7ClB1dCB0aGUgYmVsb3cgbG9naWMgaW50byBzdGF0aWMg aW5saW5lIGZ1bmN0aW9uIHJldHVybmluZyBlbnVtIHBvcnQgLgo+ICsJCWlmIChpbnRlbF9kc2kt PmRsX2NhYmNfcG9ydCA9PSBDQUJDX1BPUlRfQSkKPiArCQkJcG9ydCA9IFBPUlRfQTsKPiArCQll bHNlIGlmIChpbnRlbF9kc2ktPmRsX2NhYmNfcG9ydCA9PSBDQUJDX1BPUlRfQykKPiArCQkJcG9y dCA9IFBPUlRfQzsKPiArCQllbHNlIGlmIChpbnRlbF9kc2ktPmRsX2NhYmNfcG9ydCA9PSBDQUJD X1BPUlRfQV9BTkRfQykKPiArCQkJcG9ydCA9IFBPUlRfQTsKPiArCX0KPiArCkJlbG93IHBhcnQg bm90IHJlcXVpcmVkLiB1c2UgZm9yX2VhY2hfZHNpX3BvcnQgbWFjcm8uCj4gKwlpZiAoaW50ZWxf ZHNpLT5kdWFsX2xpbmsgJiYgaW50ZWxfZHNpLT5kbF9jYWJjX3BvcnQgPT0KPiArCQkJQ0FCQ19Q T1JUX0FfQU5EX0MpCj4gKwkJY291bnQgPSAyOwo+ICsKPiArCj4gKwlod19sZXZlbCA9IGxldmVs ICUgKHBhbmVsLT5iYWNrbGlnaHQubWF4ICsgMSk7Cj4gKwlod19sZXZlbCA9IChod19sZXZlbCAq IDI1NSkgLyBwYW5lbC0+YmFja2xpZ2h0Lm1heDsKPiArCXBhbmVsLT5iYWNrbGlnaHQubGV2ZWwg PSBod19sZXZlbDsKPiArClVzZSBmb3JfZWFjaF9kc2lfcG9ydCBtYWNybyBhcyBleHBsYWluZWQg YWJvdmUuCj4gKwlkbyB7Cj4gKwkJZHNpX2RldmljZSA9IGludGVsX2RzaS0+ZHNpX2hvc3RzW3Bv cnRdLT5kZXZpY2U7Cj4gKwkJZGF0YVsxXSA9IGh3X2xldmVsOwo+ICsJCWRhdGFbMF0gPSBNSVBJ X0RDU19DQUJDX0xFVkVMX1dSOwo+ICsJCW1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpX2Rl dmljZSwgZGF0YSwgMik7Cj4gKwkJaWYgKGNvdW50ID09IDIpCj4gKwkJCXBvcnQgPSBQT1JUX0M7 Cj4gKwl9IHdoaWxlICgtLWNvdW50ID4gMCk7Cj4gK30KPiArCj4gK3ZvaWQgY2FiY19lbmFibGVf YmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgaW50 ZWxfZHNpICppbnRlbF9kc2kgPSBOVUxMOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjID0gTlVM TDsKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVMTDsKPiArCXN0cnVjdCBp bnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiArCXN0cnVjdCBtaXBpX2Rz aV9kZXZpY2UgKmRzaV9kZXZpY2U7Cj4gKwllbnVtIHBvcnQgcG9ydCA9IFBPUlRfQTsKV2lsbCBm YWlsIGZvciBzaW5nbGUgbGluayBQb3J0IEMKPiArCXU4IGRhdGFbMl0gPSB7MH07Cj4gKwl1OCBj b3VudCA9IDE7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjcnRjLCAmZGV2LT5tb2RlX2Nv bmZpZy5jcnRjX2xpc3QsIGhlYWQpIHsKPiArCQlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2 LCBjcnRjLCBlbmNvZGVyKSB7Cj4gKwkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09VVFBV VF9EU0kpCj4gKwkJCQlpbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxfZHNpKCZlbmNvZGVyLT5iYXNl KTsKPiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rKSB7ClNhbWUg Y29tbWVudCAuUHV0IHRoZSBiZWxvdyBsb2dpYyBpbnRvIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb24g cmV0dXJuaW5nIAplbnVtIHBvcnQgLgo+ICsJCWlmIChpbnRlbF9kc2ktPmRsX2NhYmNfcG9ydCA9 PSBDQUJDX1BPUlRfQSkKPiArCQkJcG9ydCA9IFBPUlRfQTsKPiArCQllbHNlIGlmIChpbnRlbF9k c2ktPmRsX2NhYmNfcG9ydCA9PSBDQUJDX1BPUlRfQykKPiArCQkJcG9ydCA9IFBPUlRfQzsKQWxz byBiZWxvdyBjb25kaXRpb24gbmVlZCBub3QgYmUgdGFrZW4gaW50byB0aGUgaW5saW5lIGZ1bmN0 aW9uLiBTaW5jZSAKaXQgaXMgZHVhbCBsaW5rIGFuZCB3aXRoIG90aGVyIGNvbmRpdGlvbnMgYXJl IG1ldCwgdGhlbiAKQ0FCQ19QT1JUX0FfQU5EX0Mgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHRha2Vu IGNhcmUgZm9yIGJvdGggcG9ydHMgYnkgdGhlIApmb3JfZWFjaF9kc2lfcG9ydCBtYWNyby4KV2l0 aGluIGZvcl9lYWNoX2RzaV9wb3J0LCBqdXN0IGNoZWNrIGZvciBpbnRlbF9kc2ktPmRsX2NhYmNf cG9ydCAhPSAKQ0FCQ19QT1JUX0FfQU5EX0MsIGlmIHllcyBjYWxsIHRoZSBpbmxpbmUgZnVuY3Rp b24gdG8gZ2V0IHRoZSBwb3J0IG5vIAphbmQgaWYgbm8sIGFsbCBvdGhlciBjb25kaXRpb25zIHdp bGwgYmUgdGFrZW4gY2FyZSBmb3IgYm90aCBwb3J0cyBieSAKZm9yX2VhY2hfZHNpX3BvcnQuCkJl Zm9yZSB0aGUgZW5kIG9mIGZvcl9lYWNoX2RzaV9wb3J0ICx5b3UgbWF5IHJlcXVpcmUgdG8gY2hl Y2sgdGhlIAppbnRlbF9kc2ktPmRsX2NhYmNfcG9ydCAhPSBDQUJDX1BPUlRfQV9BTkRfQyAsIHNv IHRoYXQgeW91IGNhbiByZXR1cm4gCmZyb20gdGhlIG1hY3JvLgo+ICsJCWVsc2UgaWYgKGludGVs X2RzaS0+ZGxfY2FiY19wb3J0ID09IENBQkNfUE9SVF9BX0FORF9DKQo+ICsJCQlwb3J0ID0gUE9S VF9BOwo+ICsJfQo+ICsKPiArCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluayAmJiBpbnRlbF9kc2kt PmRsX2NhYmNfcG9ydCA9PQo+ICsJCQlDQUJDX1BPUlRfQV9BTkRfQykKPiArCQljb3VudCA9IDI7 Cj4gKwo+ICsJZG8gewpzYW1lIGNvbW1lbnQgYXMgYWJvdmUuIFVzZSBmb3JfZWFjaF9kc2lfcG9y dAo+ICsJCWRzaV9kZXZpY2UgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XS0+ZGV2aWNlOwo+ ICsKPiArCj4gKwkJZGF0YVswXSA9IE1JUElfRENTX0NBQkNfQ09OVFJPTF9CUklHSFRfV1I7Cj4g KwkJZGF0YVsxXSA9IENBQkNfQkFDS0xJR0hUIHwgQ0FCQ19ESU1NSU5HX0RJU1BMQVkgfCBDQUJD X0JDVFJMOwo+ICsJCW1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpX2RldmljZSwgZGF0YSwg Mik7Cj4gKwkJZGF0YVswXSA9IE1JUElfRENTX0NBQkNfQ09OVFJPTF9XUjsKPiArCQlkYXRhWzFd ID0gQ0FCQ19WSURFT19NT0RFOwo+ICsJCW1pcGlfZHNpX2Rjc193cml0ZV9idWZmZXIoZHNpX2Rl dmljZSwgZGF0YSwgMik7Cj4gKwo+ICsJCWlmIChjb3VudCA9PSAyKQo+ICsJCQlwb3J0ID0gUE9S VF9DOwo+ICsJfSB3aGlsZSAoLS1jb3VudCA+IDApOwo+ICsKPiArCWNhYmNfc2V0X2JhY2tsaWdo dChjb25uZWN0b3IsIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwpOwo+ICt9Cj4gKwo+ICt2b2lkIGNh YmNfZGlzYWJsZV9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsKPiAr CXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IE5VTEw7Cj4gKwlzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSBOVUxMOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIgPSBOVUxMOwo+ ICsJc3RydWN0IG1pcGlfZHNpX2RldmljZSAqZHNpX2RldmljZTsKPiArCWVudW0gcG9ydCBwb3J0 ID0gUE9SVF9BOwpXaWxsIGZhaWwgZm9yIHNpbmdsZSBsaW5rIFBvcnQgQwo+ICsJdTggZGF0YVsy XSA9IHswfTsKPiArCXU4IGNvdW50ID0gMTsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNy dGMsICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgewo+ICsJCWZvcl9lYWNoX2Vu Y29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpIHsKPiArCQkJaWYgKGVuY29kZXItPnR5 cGUgPT0gSU5URUxfT1VUUFVUX0RTSSkKPiArCQkJCWludGVsX2RzaSA9IGVuY190b19pbnRlbF9k c2koJmVuY29kZXItPmJhc2UpOwo+ICsJCX0KPiArCX0KPiArCj4gKwlpZiAoaW50ZWxfZHNpLT5k dWFsX2xpbmspIHsKU2FtZSBjb21tZW50IGFzIGFib3ZlLiBVc2Ugc3RhdGljIGlubGluZSBmdW5j dGlvbiBmb3IgdGhpcy4KPiArCQlpZiAoaW50ZWxfZHNpLT5kbF9jYWJjX3BvcnQgPT0gQ0FCQ19Q T1JUX0EpCj4gKwkJCXBvcnQgPSBQT1JUX0E7Cj4gKwkJZWxzZSBpZiAoaW50ZWxfZHNpLT5kbF9j YWJjX3BvcnQgPT0gQ0FCQ19QT1JUX0MpCj4gKwkJCXBvcnQgPSBQT1JUX0M7Cj4gKwkJZWxzZSBp ZiAoaW50ZWxfZHNpLT5kbF9jYWJjX3BvcnQgPT0gQ0FCQ19QT1JUX0FfQU5EX0MpCj4gKwkJCXBv cnQgPSBQT1JUX0E7Cj4gKwl9Cj4gKwo+ICsJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rICYmIGlu dGVsX2RzaS0+ZGxfY2FiY19wb3J0ID09Cj4gKwkJCUNBQkNfUE9SVF9BX0FORF9DKQo+ICsJCWNv dW50ID0gMjsKPiArCj4gKwlkbyB7ClVzZSBmb3JfZWFjaF9kc2lfcG9ydCBtYWNybwo+ICsJCWRz aV9kZXZpY2UgPSBpbnRlbF9kc2ktPmRzaV9ob3N0c1twb3J0XS0+ZGV2aWNlOwo+ICsKPiArCQlj YWJjX3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsKPiArCQlkYXRhWzFdID0gQ0FCQ19PRkY7 Cj4gKwkJZGF0YVswXSA9IE1JUElfRENTX0NBQkNfQ09OVFJPTF9XUjsKPiArCQltaXBpX2RzaV9k Y3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZpY2UsIGRhdGEsIDIpOwo+ICsJCWRhdGFbMF0gPSBNSVBJ X0RDU19DQUJDX0NPTlRST0xfQlJJR0hUX1dSOwo+ICsJCW1pcGlfZHNpX2Rjc193cml0ZV9idWZm ZXIoZHNpX2RldmljZSwgZGF0YSwgMik7Cj4gKwo+ICsJCWlmIChjb3VudCA9PSAyKQo+ICsJCQlw b3J0ID0gUE9SVF9DOwo+ICsJfSB3aGlsZSAoLS1jb3VudCA+IDApOwo+ICt9Cj4gKwo+ICtzdGF0 aWMgaW50IGNhYmNfYmFja2xpZ2h0X2RldmljZV91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGln aHRfZGV2aWNlICpiZCkKPiArewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gYmxfZ2V0X2RhdGEoYmQpOwo+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25u ZWN0b3ItPnBhbmVsOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFz ZS5kZXY7Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0 aW9uX211dGV4LCBOVUxMKTsKPiArCURSTV9ERUJVR19LTVMoInVwZGF0aW5nIGludGVsX2JhY2ts aWdodCwgYnJpZ2h0bmVzcz0lZC8lZFxuIiwKPiArCQkJYmQtPnByb3BzLmJyaWdodG5lc3MsIGJk LT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7Cj4gKwljYWJjX3NldF9iYWNrbGlnaHQoY29ubmVjdG9y LCBiZC0+cHJvcHMuYnJpZ2h0bmVzcyk7Cj4gKwo+ICsJLyoKPiArCSAqIEFsbG93IGZsaXBwaW5n IGJsX3Bvd2VyIGFzIGEgc3ViLXN0YXRlIG9mIGVuYWJsZWQuIFNhZGx5IHRoZQo+ICsJICogYmFj a2xpZ2h0IGNsYXNzIGRldmljZSBkb2VzIG5vdCBtYWtlIGl0IGVhc3kgdG8gdG8gZGlmZmVyZW50 aWF0ZQo+ICsJICogYmV0d2VlbiBjYWxsYmFja3MgZm9yIGJyaWdodG5lc3MgYW5kIGJsX3Bvd2Vy LCBzbyBvdXIgYmFja2xpZ2h0X3Bvd2VyCj4gKwkgKiBjYWxsYmFjayBuZWVkcyB0byB0YWtlIHRo aXMgaW50byBhY2NvdW50Lgo+ICsJICovCj4gKwlpZiAocGFuZWwtPmJhY2tsaWdodC5lbmFibGVk KSB7Cj4gKwkJaWYgKHBhbmVsLT5iYWNrbGlnaHRfcG93ZXIpIHsKPiArCQkJYm9vbCBlbmFibGUg PSBiZC0+cHJvcHMucG93ZXIgPT0gRkJfQkxBTktfVU5CTEFOSyAmJgo+ICsJCQkJYmQtPnByb3Bz LmJyaWdodG5lc3MgIT0gMDsKPiArCQkJcGFuZWwtPmJhY2tsaWdodF9wb3dlcihjb25uZWN0b3Is IGVuYWJsZSk7Cj4gKwkJfQo+ICsJfSBlbHNlIHsKPiArCQliZC0+cHJvcHMucG93ZXIgPSBGQl9C TEFOS19QT1dFUkRPV047Cj4gKwl9Cj4gKwo+ICsJZHJtX21vZGVzZXRfdW5sb2NrKCZkZXYtPm1v ZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0 YXRpYyBpbnQgY2FiY19iYWNrbGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNr bGlnaHRfZGV2aWNlICpiZCkKPiArewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVj dG9yID0gYmxfZ2V0X2RhdGEoYmQpOwo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5l Y3Rvci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwo+ICsJaW50IHJldDsKPiArCj4gKwlpbnRlbF9ydW50aW1lX3BtX2dl dChkZXZfcHJpdik7Cj4gKwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rpb25fbXV0ZXgsIE5VTEwpOwo+ICsKPiArCXJldCA9IGNhYmNfZ2V0X2JhY2tsaWdodChjb25u ZWN0b3IpOwo+ICsKPiArCWRybV9tb2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25u ZWN0aW9uX211dGV4KTsKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiArCj4g KwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGJhY2tsaWdodF9v cHMgY2FiY19iYWNrbGlnaHRfZGV2aWNlX29wcyA9IHsKPiArCS51cGRhdGVfc3RhdHVzID0gY2Fi Y19iYWNrbGlnaHRfZGV2aWNlX3VwZGF0ZV9zdGF0dXMsCj4gKwkuZ2V0X2JyaWdodG5lc3MgPSBj YWJjX2JhY2tsaWdodF9kZXZpY2VfZ2V0X2JyaWdodG5lc3MsCj4gK307Cj4gKwo+ICtpbnQgY2Fi Y19iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcikKPiArewo+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBh bmVsOwo+ICsJc3RydWN0IGJhY2tsaWdodF9wcm9wZXJ0aWVzIHByb3BzOwo+ICsKPiArCWlmIChX QVJOX09OKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKSkKPiArCQlyZXR1cm4gLUVOT0RFVjsKPiAr Cj4gKwlpZiAoIXBhbmVsLT5iYWNrbGlnaHQucHJlc2VudCkKPiArCQlyZXR1cm4gMDsKPiArCj4g KwlXQVJOX09OKHBhbmVsLT5iYWNrbGlnaHQubWF4ID09IDApOwo+ICsKPiArCW1lbXNldCgmcHJv cHMsIDAsIHNpemVvZihwcm9wcykpOwo+ICsJcHJvcHMudHlwZSA9IEJBQ0tMSUdIVF9GSVJNV0FS RTsKPiArCj4gKwkvKgo+ICsJICogTm90ZTogRXZlcnl0aGluZyBzaG91bGQgd29yayBldmVuIGlm IHRoZSBiYWNrbGlnaHQgZGV2aWNlIG1heAo+ICsJICogcHJlc2VudGVkIHRvIHRoZSB1c2Vyc3Bh Y2UgaXMgYXJiaXRyYXJpbHkgY2hvc2VuLgo+ICsJICovCj4gKwlwcm9wcy5tYXhfYnJpZ2h0bmVz cyA9IHBhbmVsLT5iYWNrbGlnaHQubWF4Owo+ICsJcHJvcHMuYnJpZ2h0bmVzcyA9IHByb3BzLm1h eF9icmlnaHRuZXNzOwo+ICsKPiArCWlmIChwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQpCj4gKwkJ cHJvcHMucG93ZXIgPSBGQl9CTEFOS19VTkJMQU5LOwo+ICsJZWxzZQo+ICsJCXByb3BzLnBvd2Vy ID0gRkJfQkxBTktfUE9XRVJET1dOOwo+ICsKPiArCS8qCj4gKwkgKiBOb3RlOiB1c2luZyB0aGUg c2FtZSBuYW1lIGluZGVwZW5kZW50IG9mIHRoZSBjb25uZWN0b3IgcHJldmVudHMKPiArCSAqIHJl Z2lzdHJhdGlvbiBvZiBtdWx0aXBsZSBiYWNrbGlnaHQgZGV2aWNlcyBpbiB0aGUgZHJpdmVyLgo+ ICsJICovCj4gKwlwYW5lbC0+YmFja2xpZ2h0LmRldmljZSA9Cj4gKwkJYmFja2xpZ2h0X2Rldmlj ZV9yZWdpc3RlcigiaW50ZWxfYmFja2xpZ2h0IiwKPiArCQkJCWNvbm5lY3Rvci0+YmFzZS5rZGV2 LAo+ICsJCQkJY29ubmVjdG9yLAo+ICsJCQkJJmNhYmNfYmFja2xpZ2h0X2RldmljZV9vcHMsICZw cm9wcyk7Cj4gKwo+ICsJaWYgKElTX0VSUihwYW5lbC0+YmFja2xpZ2h0LmRldmljZSkpIHsKPiAr CQlEUk1fRVJST1IoIkZhaWxlZCB0byByZWdpc3RlciBiYWNrbGlnaHQ6ICVsZFxuIiwKPiArCQkJ CVBUUl9FUlIocGFuZWwtPmJhY2tsaWdodC5kZXZpY2UpKTsKPiArCQlwYW5lbC0+YmFja2xpZ2h0 LmRldmljZSA9IE5VTEw7Cj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwl9Cj4gKwo+ICsJRFJNX0RF QlVHX0tNUygiQ29ubmVjdG9yICVzIGJhY2tsaWdodCBzeXNmcyBpbnRlcmZhY2UgcmVnaXN0ZXJl ZFxuIiwKPiArCQkJY29ubmVjdG9yLT5iYXNlLm5hbWUpOwo+ICsKPiArCXJldHVybiAwOwo+ICt9 Cj4gKwo+ICt2b2lkIGNhYmNfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiArewo+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5l bCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ICsKPiArCWlmIChwYW5lbC0+YmFja2xpZ2h0LmRldmlj ZSkgewo+ICsJCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihwYW5lbC0+YmFja2xpZ2h0LmRl dmljZSk7Cj4gKwkJcGFuZWwtPmJhY2tsaWdodC5kZXZpY2UgPSBOVUxMOwo+ICsJfQo+ICt9Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2FiYy5oCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiBpbmRleCAwMDAwMDAwLi41ZDEzNGY1Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmgKPiBAQCAtMCwwICsxLDQ1IEBACj4gKy8qCj4g KyAqIENvcHlyaWdodCDCqSAyMDEzIEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1p c3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9i dGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNv ZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24K PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRp c3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29m dHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z Ogo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiAr ICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMi LCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQs IElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB QklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5G UklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiAr ICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBP VEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lU SCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUgo+ICsgKiBERUFMSU5HUyBJTiBUSEUg U09GVFdBUkUuCj4gKyAqCj4gKyAqLwo+ICsKPiArZXh0ZXJuIGludCBjYWJjX2JhY2tsaWdodF9k ZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiArZXh0 ZXJuIHZvaWQgY2FiY19iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqY29ubmVjdG9yKTsKPiArdm9pZCBjYWJjX3NldF9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yLCB1MzIgbGV2ZWwpOwo+ICt1MzIgY2FiY19nZXRfYmFj a2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gK3ZvaWQgY2FiY19l bmFibGVfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gK3Zv aWQgY2FiY19kaXNhYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0 b3IpOwo+ICtpbnQgY2FiY19zZXR1cF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yLCBlbnVtIHBpcGUgdW51c2VkKTsKPiArCj4gKyNkZWZpbmUgQ0FCQ19PRkYgICAg ICAgICAgICAgICAgICAgICAgICgwIDw8IDApCj4gKyNkZWZpbmUgQ0FCQ19VU0VSX0lOVEVSRkFD RV9JTUFHRSAgICAgICgxIDw8IDApCj4gKyNkZWZpbmUgQ0FCQ19TVElMTF9QSUNUVVJFICAgICAg ICAgICAgICgyIDw8IDApCj4gKyNkZWZpbmUgQ0FCQ19WSURFT19NT0RFICAgICAgICAgICAgICAg ICAgICAgICAgKDMgPDwgMCkKPiArCj4gKyNkZWZpbmUgQ0FCQ19CQUNLTElHSFQgICAgICAgICAg ICAgICAgICgxIDw8IDIpCj4gKyNkZWZpbmUgQ0FCQ19ESU1NSU5HX0RJU1BMQVkgICAgICAgICAg ICgxIDw8IDMpCj4gKyNkZWZpbmUgQ0FCQ19CQ1RSTCAgICAgICAgICAgICAgICAgICAgICgxIDw8 IDUpCj4gKwo+ICsjZGVmaW5lIENBQkNfUE9SVF9BICAgICAgICAgICAgICAgICAgICAweDAwCj4g KyNkZWZpbmUgQ0FCQ19QT1JUX0MgICAgICAgICAgICAgICAgICAgIDB4MDEKPiArI2RlZmluZSBD QUJDX1BPUlRfQV9BTkRfQyAgICAgICAgICAgICAgMHgwMgo+ICsjZGVmaW5lIENBQkNfTUFYX1ZB TFVFCQkgICAgICAgMHhmZgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wYW5lbC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+IGluZGV4IDU1 YWFkMjMuLmM3MzQ0OWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAt MTUwMiwxNSArMTUwMiwyOSBAQCB2b2lkIGludGVsX3BhbmVsX2Zpbmkoc3RydWN0IGludGVsX3Bh bmVsICpwYW5lbCkKPiAgIHZvaWQgaW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y Owo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsKPiAgIAo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29u ZmlnLmNvbm5lY3Rvcl9saXN0LCBiYXNlLmhlYWQpCj4gLQkJaW50ZWxfYmFja2xpZ2h0X2Rldmlj ZV9yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3Is ICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LAo+ICsJCQkJCWJhc2UuaGVhZCkgewo+ ICsJCWlmIChjb25uZWN0b3ItPmVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSAmJgo+ ICsJCQlkZXZfcHJpdi0+dmJ0LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCQljYWJj X2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCQllbHNlCj4gKwkJCWlu dGVsX2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCX0KPiAgIH0KPiAg IAo+ICAgdm9pZCBpbnRlbF9iYWNrbGlnaHRfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQo+ICAgewo+ICAgCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAK PiAtCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5tb2RlX2NvbmZpZy5jb25u ZWN0b3JfbGlzdCwgYmFzZS5oZWFkKQo+IC0JCWludGVsX2JhY2tsaWdodF9kZXZpY2VfdW5yZWdp c3Rlcihjb25uZWN0b3IpOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYt Pm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LAo+ICsJCQkJCWJhc2UuaGVhZCkgewo+ICsJCWlm IChjb25uZWN0b3ItPmVuY29kZXItPnR5cGUgPT0gSU5URUxfT1VUUFVUX0RTSSAmJgo+ICsJCQlk ZXZfcHJpdi0+dmJ0LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQo+ICsJCQljYWJjX2JhY2ts aWdodF9kZXZpY2VfdW5yZWdpc3Rlcihjb25uZWN0b3IpOwo+ICsJCWVsc2UKPiArCQkJaW50ZWxf YmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwl9Cj4gICB9Cj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8vbWlwaV9kaXNwbGF5LmggYi9pbmNsdWRlL3ZpZGVvL21p cGlfZGlzcGxheS5oCj4gaW5kZXggZGRjYzhjYS4uNWI4ZWVlYyAxMDA2NDQKPiAtLS0gYS9pbmNs dWRlL3ZpZGVvL21pcGlfZGlzcGxheS5oCj4gKysrIGIvaW5jbHVkZS92aWRlby9taXBpX2Rpc3Bs YXkuaAo+IEBAIC0xMTcsNiArMTE3LDE0IEBAIGVudW0gewo+ICAgCU1JUElfRENTX0dFVF9TQ0FO TElORQkJPSAweDQ1LAo+ICAgCU1JUElfRENTX1JFQURfRERCX1NUQVJUCQk9IDB4QTEsCj4gICAJ TUlQSV9EQ1NfUkVBRF9EREJfQ09OVElOVUUJPSAweEE4LAo+ICsJTUlQSV9EQ1NfQ0FCQ19MRVZF TF9SRCAgICAgICAgICA9IDB4NTIsCj4gKwlNSVBJX0RDU19DQUJDX01JTl9CUklHSFRORVNTX1JE ID0gMHg1RiwKPiArCU1JUElfRENTX0NBQkNfQ09OVFJPTF9SRCAgICAgICAgPSAweDU2LAo+ICsJ TUlQSV9EQ1NfQ0FCQ19DT05UUk9MX0JSSUdIVF9SRCA9IDB4NTQsCj4gKwlNSVBJX0RDU19DQUJD X0xFVkVMX1dSICAgICAgICAgID0gMHg1MSwKPiArCU1JUElfRENTX0NBQkNfTUlOX0JSSUdIVE5F U1NfV1IgPSAweDVFLAo+ICsJTUlQSV9EQ1NfQ0FCQ19DT05UUk9MX1dSICAgICAgICA9IDB4NTUs Cj4gKwlNSVBJX0RDU19DQUJDX0NPTlRST0xfQlJJR0hUX1dSID0gMHg1MywKPiAgIH07Cj4gICAK PiAgIC8qIE1JUEkgRENTIHBpeGVsIGZvcm1hdHMgKi8KCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==