From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Deepak, M" Subject: Re: [PATCH] drm/i915: CABC support for backlight control Date: Mon, 14 Sep 2015 15:31:15 +0000 Message-ID: References: <20150914094136.GA3383@phenom.ffwll.local> <1442224394-6297-1-git-send-email-m.deepak@intel.com> <87pp1ljip8.fsf@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 0BEB16E10D for ; Mon, 14 Sep 2015 08:31:19 -0700 (PDT) In-Reply-To: <87pp1ljip8.fsf@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Jani Nikula , "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org DQoNCj4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPkZyb206IEphbmkgTmlrdWxhIFttYWls dG86amFuaS5uaWt1bGFAbGludXguaW50ZWwuY29tXQ0KPlNlbnQ6IE1vbmRheSwgU2VwdGVtYmVy IDE0LCAyMDE1IDU6NTEgUE0NCj5UbzogRGVlcGFrLCBNOyBpbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnDQo+Q2M6IERlZXBhaywgTQ0KPlN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFU Q0hdIGRybS9pOTE1OiBDQUJDIHN1cHBvcnQgZm9yIGJhY2tsaWdodCBjb250cm9sDQo+DQo+T24g TW9uLCAxNCBTZXAgMjAxNSwgRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4gd3JvdGU6DQo+ PiBJbiBDQUJDIChDb250ZW50IEFkYXB0aXZlIEJyaWdodG5lc3MgQ29udHJvbCkgY29udGVudCBn cmV5IGxldmVsIHNjYWxlDQo+PiBjYW4gYmUgaW5jcmVhc2VkIHdoaWxlIHNpbXVsdGFuZW91c2x5 IGRlY3JlYXNpbmcgYnJpZ2h0bmVzcyBvZiB0aGUNCj4+IGJhY2tsaWdodCB0byBhY2hpZXZlIHNh bWUgcGVyY2VpdmVkIGJyaWdodG5lc3MuDQo+Pg0KPj4gVGhlIENBQkMgaXMgbm90IHN0YW5kYXJk aXplZCBhbmQgcGFuZWwgdmVuZG9ycyBhcmUgZnJlZSB0byBmb2xsb3cNCj4+IHRoZWlyIGltcGxl bWVudGF0aW9uLiBUaGUgQ0FCQyBpbXBsZW1lbnRhaW9uIGhlcmUgYXNzdW1lcyB0aGF0IHRoZQ0K Pj4gcGFuZWxzIHVzZSBzdGFuZGFyZCBTVyByZWdpc3RlciBmb3IgY29udHJvbC4NCj4+DQo+PiBJ biB0aGlzIGRlc2lnbiB0aGVyZSB3aWxsIGJlIG5vIFBXTSBzaWduYWwgZnJvbSB0aGUgU29DIGFu ZCBEQ1MNCj4+IGNvbW1hbmRzIGFyZSBzZW50IHRvIGVuYWJsZSBhbmQgY29udHJvbCB0aGUgYmFj a2xpZ2h0IGJyaWdodG5lc3MuDQo+DQo+SSB0aGluayBDQUJDIGlzIGEgY29uZnVzaW5nIG5hbWUg Zm9yIHRoaXMuIEF0IHRoZSBoaWdoIGxldmVsLCB0aGlzIHNob3VsZCBiZQ0KPmNhbGxlZCwgc2F5 LCBEQ1MgYmFja2xpZ2h0IGNvbnRyb2wuIEkgdGhpbmsgQ0FCQyBpcyBhIHNwZWNpYWwgY2FzZSBv ZiBiYWNrbGlnaHQNCj5jb250cm9sIGluIHRoZSBEU0kgcGFuZWw7IHRoZXJlIGFyZSBwYW5lbHMg d2l0aCBicmlnaHRuZXNzIGNvbnRyb2wgdmlhIERDUw0KPip3aXRob3V0KiBDQUJDLg0KPg0KPlNl ZSBmdXJ0aGVyIGNvbW1lbnRzIGlubGluZS4NCj4NCj4+DQo+PiB2MjoNCj4+IC0gQ3JlYXRlZCBh IG5ldyBiYWNrbGlnaHQgZHJpdmVyIGZvciBjYWJjLCB3aGljaCB3aWxsIGJlIHJlZ2lzdGVyZWQN Cj4+ICAgb25seSB3aGVuIGl0IGNhYmMgaXMgc3VwcG9ydGVkIGJ5IHBhbmVsLiAoRGFuaWVsIFZl dHRlcikNCj4+IHYzOg0KPj4gLSBVc2UgZm9yX2VhY2hfZHNpX3BvcnQgbWFjcm8gZm9yIGhhbmRs aW5nIHBvcnQgQyBhbHNvIChHYXVyYXYpDQo+PiAtIFJlYmFzZQ0KPj4NCj4+IFNpZ25lZC1vZmYt Ynk6IERlZXBhayBNIDxtLmRlZXBha0BpbnRlbC5jb20+DQo+PiAtLS0NCj4+ICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgIHwgICAgMSArDQo+PiAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHNpLmMgICAgICB8ICAgMTggKy0NCj4+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kc2lfY2FiYy5jIHwgIDMxMA0KPisrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKw0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmggfCAgIDQ2ICsr KysrDQo+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYyAgICB8ICAgMjMgKyst DQo+PiAgaW5jbHVkZS92aWRlby9taXBpX2Rpc3BsYXkuaCAgICAgICAgICB8ICAgIDggKw0KPj4g IDYgZmlsZXMgY2hhbmdlZCwgMzk5IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pICBjcmVh dGUgbW9kZQ0KPj4gMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmMN Cj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2Nh YmMuaA0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQ0K Pj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBpbmRleCA0NGQyOTBhLi5kODdjNjkw IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUNCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlDQo+PiBAQCAtODIsNiArODIsNyBAQCBpOTE1 LXkgKz0gZHZvX2NoNzAxNy5vIFwNCj4+ICAJICBpbnRlbF9kc2kubyBcDQo+PiAgCSAgaW50ZWxf ZHNpX3BhbmVsX3ZidC5vIFwNCj4+ICAJICBpbnRlbF9kc2lfcGxsLm8gXA0KPj4gKwkgIGludGVs X2RzaV9jYWJjLm8gXA0KPj4gIAkgIGludGVsX2R2by5vIFwNCj4+ICAJICBpbnRlbF9oZG1pLm8g XA0KPj4gIAkgIGludGVsX2kyYy5vIFwNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kc2kuYw0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYw0K Pj4gaW5kZXggNzgxYzI2Ny4uMWQ5OGVkOCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2RzaS5jDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYw0KPj4gQEAgLTM1LDYgKzM1LDcgQEANCj4+ICAjaW5jbHVkZSAiaTkxNV9kcnYuaCINCj4+ ICAjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiDQo+PiAgI2luY2x1ZGUgImludGVsX2RzaS5oIg0KPj4g KyNpbmNsdWRlICJpbnRlbF9kc2lfY2FiYy5oIg0KPj4NCj4+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IHsNCj4+ICAJdTE2IHBhbmVsX2lkOw0KPj4gQEAgLTM5OCw3ICszOTksMTAgQEAgc3RhdGljIHZv aWQgaW50ZWxfZHNpX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rlcg0KPiplbmNvZGVyKQ0KPj4g IAkJaW50ZWxfZHNpX3BvcnRfZW5hYmxlKGVuY29kZXIpOw0KPj4gIAl9DQo+Pg0KPj4gLQlpbnRl bF9wYW5lbF9lbmFibGVfYmFja2xpZ2h0KGludGVsX2RzaS0+YXR0YWNoZWRfY29ubmVjdG9yKTsN Cj4+ICsJaWYgKGRldl9wcml2LT52YnQuZHNpLmNvbmZpZy0+Y2FiY19zdXBwb3J0ZWQpDQo+PiAr CQljYWJjX2VuYWJsZV9iYWNrbGlnaHQoaW50ZWxfZHNpLT5hdHRhY2hlZF9jb25uZWN0b3IpOw0K Pj4gKwllbHNlDQo+PiArCQlpbnRlbF9wYW5lbF9lbmFibGVfYmFja2xpZ2h0KGludGVsX2RzaS0N Cj4+YXR0YWNoZWRfY29ubmVjdG9yKTsNCj4NCj5TZWUgbXkgcGF0Y2ggYXQgWzFdIGZvciBob3cg SSB0aGluayBhbGwgb2YgdGhpcyBzaG91bGQgYmUgaGFuZGxlZC4NCj4NCj5bMV0gaHR0cDovL21p ZC5nbWFuZS5vcmcvY292ZXIuMTQ0MjIyNzc5MC5naXQuamFuaS5uaWt1bGFAaW50ZWwuY29tDQo+ DQpbRGVlcGFrIE1dIFdpbGwgZ28gdGhyb3VnaCB0aGF0IHBhdGNoLiANCj4+ICB9DQo+Pg0KPj4g IHN0YXRpYyB2b2lkIGludGVsX2RzaV9wcmVfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyKSBAQA0KPj4gLTQ1OCwxMiArNDYyLDE3IEBAIHN0YXRpYyB2b2lkIGludGVsX2RzaV9l bmFibGVfbm9wKHN0cnVjdA0KPj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4+DQo+PiAgc3Rh dGljIHZvaWQgaW50ZWxfZHNpX3ByZV9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNv ZGVyKSAgew0KPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7 DQo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7DQo+PiAgCXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2ko JmVuY29kZXItPmJhc2UpOw0KPj4gIAllbnVtIHBvcnQgcG9ydDsNCj4+DQo+PiAgCURSTV9ERUJV R19LTVMoIlxuIik7DQo+Pg0KPj4gLQlpbnRlbF9wYW5lbF9kaXNhYmxlX2JhY2tsaWdodChpbnRl bF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3Rvcik7DQo+PiArCWlmIChkZXZfcHJpdi0+dmJ0LmRzaS5j b25maWctPmNhYmNfc3VwcG9ydGVkKQ0KPj4gKwkJY2FiY19kaXNhYmxlX2JhY2tsaWdodChpbnRl bF9kc2ktPmF0dGFjaGVkX2Nvbm5lY3Rvcik7DQo+PiArCWVsc2UNCj4+ICsJCWludGVsX3BhbmVs X2Rpc2FibGVfYmFja2xpZ2h0KGludGVsX2RzaS0NCj4+YXR0YWNoZWRfY29ubmVjdG9yKTsNCj4+ DQo+PiAgCWlmIChpc192aWRfbW9kZShpbnRlbF9kc2kpKSB7DQo+PiAgCQkvKiBTZW5kIFNodXRk b3duIGNvbW1hbmQgdG8gdGhlIHBhbmVsIGluIExQIG1vZGUgKi8gQEAgLQ0KPjExMzMsNw0KPj4g KzExNDIsMTAgQEAgdm9pZCBpbnRlbF9kc2lfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0K Pj4gIAl9DQo+Pg0KPj4gIAlpbnRlbF9wYW5lbF9pbml0KCZpbnRlbF9jb25uZWN0b3ItPnBhbmVs LCBmaXhlZF9tb2RlLCBOVUxMKTsNCj4+IC0JaW50ZWxfcGFuZWxfc2V0dXBfYmFja2xpZ2h0KGNv bm5lY3RvciwgSU5WQUxJRF9QSVBFKTsNCj4+ICsJaWYgKGRldl9wcml2LT52YnQuZHNpLmNvbmZp Zy0+Y2FiY19zdXBwb3J0ZWQpDQo+PiArCQljYWJjX3NldHVwX2JhY2tsaWdodChjb25uZWN0b3Is IElOVkFMSURfUElQRSk7DQo+PiArCWVsc2UNCj4+ICsJCWludGVsX3BhbmVsX3NldHVwX2JhY2ts aWdodChjb25uZWN0b3IsIElOVkFMSURfUElQRSk7DQo+Pg0KPj4gIAlyZXR1cm47DQo+Pg0KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmMNCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX2NhYmMuYw0KPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4+IGluZGV4IDAwMDAwMDAuLmMyZmNkOTUNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9jYWJjLmMNCj4+IEBAIC0wLDAgKzEs MzEwIEBADQo+PiArLyoNCj4+ICsgKiBDb3B5cmlnaHQgwqkgMjAwNi0yMDEwIEludGVsIENvcnBv cmF0aW9uDQo+PiArICoNCj4+ICsgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbg0KPj4gK29idGFpbmluZyBhDQo+PiArICogY29weSBv ZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQ0K Pj4gKyJTb2Z0d2FyZSIpLA0KPj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQg cmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0DQo+PiArbGltaXRhdGlvbg0KPj4gKyAqIHRo ZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRl LA0KPj4gK3N1YmxpY2Vuc2UsDQo+PiArICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0 d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20NCj4+ICt0aGUNCj4+ICsgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOg0KPj4gKyAqDQo+PiArICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRo aXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZw0KPj4gK3RoZSBuZXh0DQo+PiArICogcGFy YWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBv cnRpb25zDQo+PiArb2YgdGhlDQo+PiArICogU29mdHdhcmUuDQo+PiArICoNCj4+ICsgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkNCj5L SU5ELA0KPj4gK0VYUFJFU1MgT1INCj4+ICsgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBM SU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GDQo+PiArTUVSQ0hBTlRBQklMSVRZLA0KPj4gKyAq IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJ TiBOTw0KPkVWRU5UDQo+PiArU0hBTEwNCj4+ICsgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQg SE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwNCj5EQU1BR0VTDQo+PiArT1IgT1RIRVIN Cj4+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JU IE9SIE9USEVSV0lTRSwNCj4+ICtBUklTSU5HDQo+PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENP Tk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRQ0KPk9SDQo+PiArT1RIRVINCj4+ ICsgKiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuDQo+PiArICoNCj4+ICsgKiBBdXRob3I6IERl ZXBhayBNIDxtLmRlZXBha0BpbnRlbC5jb20+ICAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlcGFyYW0uaD4NCj4+ICsjaW5j bHVkZSAiaW50ZWxfZHJ2LmgiDQo+PiArI2luY2x1ZGUgImludGVsX2RzaS5oIg0KPj4gKyNpbmNs dWRlICJpOTE1X2Rydi5oIg0KPj4gKyNpbmNsdWRlICJpbnRlbF9kc2lfY2FiYy5oIg0KPj4gKyNp bmNsdWRlIDx2aWRlby9taXBpX2Rpc3BsYXkuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9taXBp X2RzaS5oPg0KPj4gKw0KPj4gK3N0YXRpYyBpbmxpbmUgZW51bSBwb3J0IGdldF9jYWJjX3BvcnQo c3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpKSB7DQo+PiArCWlmIChpbnRlbF9kc2ktPmRsX2Nh YmNfcG9ydCA9PSBDQUJDX1BPUlRfQykNCj4+ICsJCXJldHVybiBQT1JUX0M7DQo+PiArCWVsc2UN Cj4+ICsJCXJldHVybiBQT1JUX0E7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBjYWJjX3NldHVwX2Jh Y2tsaWdodChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KPj4gKwkJZW51bSBwaXBl IHVudXNlZCkNCj4+ICt7DQo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3It PmRldjsNCj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZf cHJpdmF0ZTsNCj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0N Cj50b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKTsNCj4+ICsJc3RydWN0IGludGVsX3BhbmVs ICpwYW5lbCA9ICZpbnRlbF9jb25uZWN0b3ItPnBhbmVsOw0KPj4gKw0KPj4gKwlpZiAoZGV2X3By aXYtPnZidC5iYWNrbGlnaHQucHJlc2VudCkNCj4+ICsJCXBhbmVsLT5iYWNrbGlnaHQucHJlc2Vu dCA9IHRydWU7DQo+PiArCWVsc2Ugew0KPj4gKwkJRFJNX0VSUk9SKCJubyBiYWNrbGlnaHQgcHJl c2VudCBwZXIgVkJUXG4iKTsNCj4+ICsJCXJldHVybiAwOw0KPj4gKwl9DQo+PiArDQo+PiArCXBh bmVsLT5iYWNrbGlnaHQubWF4ID0gQ0FCQ19NQVhfVkFMVUU7DQo+PiArCXBhbmVsLT5iYWNrbGln aHQubGV2ZWwgPSBDQUJDX01BWF9WQUxVRTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0K Pj4gKw0KPj4gK3UzMiBjYWJjX2dldF9iYWNrbGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAq Y29ubmVjdG9yKSB7DQo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJh c2UuZGV2Ow0KPj4gKwlzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2kgPSBOVUxMOw0KPj4gKwlz dHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxMOw0KPj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciA9IE5VTEw7DQo+PiArCXN0cnVjdCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7 DQo+PiArCXU4IGRhdGFbMl0gPSB7MH07DQo+PiArCWVudW0gcG9ydCBwb3J0Ow0KPj4gKwl1MzIg cmV0Ow0KPj4gKw0KPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMsICZkZXYtPm1vZGVfY29u ZmlnLmNydGNfbGlzdCwgaGVhZCkgew0KPj4gKwkJZm9yX2VhY2hfZW5jb2Rlcl9vbl9jcnRjKGRl diwgY3J0YywgZW5jb2Rlcikgew0KPj4gKwkJCWlmIChlbmNvZGVyLT50eXBlID09IElOVEVMX09V VFBVVF9EU0kpIHsNCj4+ICsJCQkJaW50ZWxfZHNpID0gZW5jX3RvX2ludGVsX2RzaSgmZW5jb2Rl ci0NCj4+YmFzZSk7DQo+PiArCQkJCWJyZWFrOw0KPj4gKwkJCX0NCj4+ICsJCX0NCj4+ICsJCWlm IChpbnRlbF9kc2kgIT0gTlVMTCkNCj4+ICsJCQlicmVhazsNCj4+ICsJfQ0KPg0KPllvdSBjYW4g Z2V0IGF0IGludGVsX2RzaSB2aWEgY29ubmVjdG9yLT5lbmNvZGVyLiBObyBuZWVkIGZvciB0aGlz IGtpbmQgb2YNCj5sb29wcy4NCj4NCltEZWVwYWsgTV0gT2theQ0KPlNhbWUgZm9yIHNpbWlsYXIg bG9vcHMgYmVsb3cuDQo+DQo+PiArDQo+PiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVs X2RzaS0+cG9ydHMpIHsNCj4+ICsJCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluaykNCj4+ICsJCQlw b3J0ID0gZ2V0X2NhYmNfcG9ydChpbnRlbF9kc2kpOw0KPj4gKw0KPj4gKwkJZHNpX2RldmljZSA9 IGludGVsX2RzaS0+ZHNpX2hvc3RzW3BvcnRdLT5kZXZpY2U7DQo+PiArCQltaXBpX2RzaV9kY3Nf cmVhZChkc2lfZGV2aWNlLCBNSVBJX0RDU19DQUJDX0xFVkVMX1JELA0KPmRhdGEsIDIpOw0KPj4g Kw0KPj4gKwkJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rICYmDQo+PiArCQkJCSEoaW50ZWxfZHNp LT5kbF9jYWJjX3BvcnQgPT0NCj5DQUJDX1BPUlRfQV9BTkRfQykpDQo+PiArCQkJYnJlYWs7DQo+ PiArCX0NCj4NCj5UaGF0IGlzIGEgcmVhbGx5IGNvbmZ1c2luZyB3YXkgdG8gZG8gdGhlIGRjcyBj b21tYW5kIG9uIG9uZSBvciBtb3JlIHBvcnRzLg0KPkhvdyBhYm91dCBtYWtpbmcgZGxfY2FiY19w b3J0IChob3BlZnVsbHkgcmVuYW1lZCB0byBzb21ldGhpbmcgcmVmZXJyaW5nDQo+dG8gZGNzIHJh dGhlciB0aGFuIGNhYmMpIGEgYml0bWFwIG9mIHBvcnRzIHNpbWlsYXIgdG8gaW50ZWxfZHNpLT5w b3J0cywgc28geW91DQo+Y2FuIG1ha2UgdGhpcyBsb29wIHNpbXBseToNCj4NCj4JZm9yX2VhY2hf ZHNpX3BvcnQocG9ydCwgZGNzX2JhY2tsaWdodF9wb3J0cykNCj4gICAgICAgIAkuLi4NCj4NCj5U aGVyZSdkIGJlIG5vIG5lZWQgZm9yIHNwZWNpYWwgY2FzaW5nIGFuZCBjb25kaXRpb25hbCBicmVh a3Mgb3V0IG9mIHRoZSBsb29wIG9yDQo+YW55dGhpbmcuDQo+DQo+U2FtZSBmb3Igc2ltaWxhciBs b29wcyBiZWxvdy4NCj4NCltEZWVwYWsgTV0gTmljZSwgd2lsbCB0cnkgdG8gaW1wbGVtZW50IHRo aXMgd2F5DQo+PiArDQo+PiArCXJldCA9IGRhdGFbMV07DQo+PiArDQo+PiArCXJldHVybiByZXQ7 DQo+PiArfQ0KPj4gKw0KPj4gK3ZvaWQgY2FiY19zZXRfYmFja2xpZ2h0KHN0cnVjdCBpbnRlbF9j b25uZWN0b3IgKmNvbm5lY3RvciwgdTMyIGxldmVsKQ0KPj4gK3sNCj4+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7DQo+PiArCXN0cnVjdCBpbnRlbF9kc2kg KmludGVsX2RzaSA9IE5VTEw7DQo+PiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IE5VTEw7DQo+ PiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVMTDsNCj4+ICsJc3RydWN0IG1p cGlfZHNpX2RldmljZSAqZHNpX2RldmljZTsNCj4+ICsJdTggZGF0YVsyXSA9IHswfTsNCj4+ICsJ ZW51bSBwb3J0IHBvcnQ7DQo+PiArDQo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY3J0YywgJmRl di0+bW9kZV9jb25maWcuY3J0Y19saXN0LCBoZWFkKSB7DQo+PiArCQlmb3JfZWFjaF9lbmNvZGVy X29uX2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKSB7DQo+PiArCQkJaWYgKGVuY29kZXItPnR5cGUg PT0gSU5URUxfT1VUUFVUX0RTSSkgew0KPj4gKwkJCQlpbnRlbF9kc2kgPSBlbmNfdG9faW50ZWxf ZHNpKCZlbmNvZGVyLQ0KPj5iYXNlKTsNCj4+ICsJCQkJYnJlYWs7DQo+PiArCQkJfQ0KPj4gKwkJ fQ0KPj4gKwkJaWYgKGludGVsX2RzaSAhPSBOVUxMKQ0KPj4gKwkJCWJyZWFrOw0KPj4gKwl9DQo+ PiArDQo+PiArCWZvcl9lYWNoX2RzaV9wb3J0KHBvcnQsIGludGVsX2RzaS0+cG9ydHMpIHsNCj4+ ICsJCWlmIChpbnRlbF9kc2ktPmR1YWxfbGluaykNCj4+ICsJCQlwb3J0ID0gZ2V0X2NhYmNfcG9y dChpbnRlbF9kc2kpOw0KPj4gKw0KPj4gKwkJZHNpX2RldmljZSA9IGludGVsX2RzaS0+ZHNpX2hv c3RzW3BvcnRdLT5kZXZpY2U7DQo+PiArCQlkYXRhWzFdID0gbGV2ZWw7DQo+PiArCQlkYXRhWzBd ID0gTUlQSV9EQ1NfQ0FCQ19MRVZFTF9XUjsNCj4+ICsJCW1pcGlfZHNpX2Rjc193cml0ZV9idWZm ZXIoZHNpX2RldmljZSwgZGF0YSwgMik7DQo+PiArDQo+PiArCQlpZiAoaW50ZWxfZHNpLT5kdWFs X2xpbmsgJiYNCj4+ICsJCQkhKGludGVsX2RzaS0+ZGxfY2FiY19wb3J0ID09IENBQkNfUE9SVF9B X0FORF9DKSkNCj4+ICsJCQlicmVhazsNCj4+ICsJfQ0KPj4gK30NCj4+ICsNCj4+ICt2b2lkIGNh YmNfZW5hYmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpIHsN Cj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNvbm5lY3Rvci0+YmFzZS5kZXY7DQo+PiAr CXN0cnVjdCBpbnRlbF9kc2kgKmludGVsX2RzaSA9IE5VTEw7DQo+PiArCXN0cnVjdCBkcm1fY3J0 YyAqY3J0YyA9IE5VTEw7DQo+PiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0gTlVM TDsNCj4+ICsJc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOw0K Pj4gKwlzdHJ1Y3QgbWlwaV9kc2lfZGV2aWNlICpkc2lfZGV2aWNlOw0KPj4gKwllbnVtIHBvcnQg cG9ydDsNCj4+ICsJdTggZGF0YVsyXSA9IHswfTsNCj4+ICsNCj4+ICsJbGlzdF9mb3JfZWFjaF9l bnRyeShjcnRjLCAmZGV2LT5tb2RlX2NvbmZpZy5jcnRjX2xpc3QsIGhlYWQpIHsNCj4+ICsJCWZv cl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29kZXIpIHsNCj4+ICsJCQlpZiAo ZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJKSB7DQo+PiArCQkJCWludGVsX2RzaSA9 IGVuY190b19pbnRlbF9kc2koJmVuY29kZXItDQo+PmJhc2UpOw0KPj4gKwkJCQlicmVhazsNCj4+ ICsJCQl9DQo+PiArCQl9DQo+PiArCQlpZiAoaW50ZWxfZHNpICE9IE5VTEwpDQo+PiArCQkJYnJl YWs7DQo+PiArCX0NCj4+ICsNCj4+ICsJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNp LT5wb3J0cykgew0KPj4gKwkJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rKQ0KPj4gKwkJCXBvcnQg PSBnZXRfY2FiY19wb3J0KGludGVsX2RzaSk7DQo+PiArDQo+PiArCQlkc2lfZGV2aWNlID0gaW50 ZWxfZHNpLT5kc2lfaG9zdHNbcG9ydF0tPmRldmljZTsNCj4+ICsJCWRhdGFbMF0gPSBNSVBJX0RD U19DQUJDX0NPTlRST0xfQlJJR0hUX1dSOw0KPj4gKwkJZGF0YVsxXSA9IENBQkNfQkFDS0xJR0hU IHwgQ0FCQ19ESU1NSU5HX0RJU1BMQVkgfA0KPkNBQkNfQkNUUkw7DQo+PiArCQltaXBpX2RzaV9k Y3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZpY2UsIGRhdGEsIDIpOw0KPj4gKwkJZGF0YVswXSA9IE1J UElfRENTX0NBQkNfQ09OVFJPTF9XUjsNCj4+ICsJCWRhdGFbMV0gPSBDQUJDX1NUSUxMX1BJQ1RV UkU7DQo+PiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZpY2UsIGRhdGEsIDIp Ow0KPj4gKw0KPj4gKwkJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rICYmDQo+PiArCQkJCSEoaW50 ZWxfZHNpLT5kbF9jYWJjX3BvcnQgPT0NCj5DQUJDX1BPUlRfQV9BTkRfQykpDQo+PiArCQkJYnJl YWs7DQo+PiArCX0NCj4+ICsNCj4+ICsJY2FiY19zZXRfYmFja2xpZ2h0KGNvbm5lY3RvciwgcGFu ZWwtPmJhY2tsaWdodC5sZXZlbCk7IH0NCj4+ICsNCj4+ICt2b2lkIGNhYmNfZGlzYWJsZV9iYWNr bGlnaHQoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7DQo+PiArCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2Ow0KPj4gKwlzdHJ1Y3QgaW50ZWxf ZHNpICppbnRlbF9kc2kgPSBOVUxMOw0KPj4gKwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBOVUxM Ow0KPj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IE5VTEw7DQo+PiArCXN0cnVj dCBtaXBpX2RzaV9kZXZpY2UgKmRzaV9kZXZpY2U7DQo+PiArCWVudW0gcG9ydCBwb3J0Ow0KPj4g Kwl1OCBkYXRhWzJdID0gezB9Ow0KPj4gKw0KPj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNydGMs ICZkZXYtPm1vZGVfY29uZmlnLmNydGNfbGlzdCwgaGVhZCkgew0KPj4gKwkJZm9yX2VhY2hfZW5j b2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2Rlcikgew0KPj4gKwkJCWlmIChlbmNvZGVyLT50 eXBlID09IElOVEVMX09VVFBVVF9EU0kpIHsNCj4+ICsJCQkJaW50ZWxfZHNpID0gZW5jX3RvX2lu dGVsX2RzaSgmZW5jb2Rlci0NCj4+YmFzZSk7DQo+PiArCQkJCWJyZWFrOw0KPj4gKwkJCX0NCj4+ ICsJCX0NCj4+ICsJCWlmIChpbnRlbF9kc2kgIT0gTlVMTCkNCj4+ICsJCQlicmVhazsNCj4+ICsJ fQ0KPj4gKw0KPj4gKwljYWJjX3NldF9iYWNrbGlnaHQoY29ubmVjdG9yLCAwKTsNCj4+ICsNCj4+ ICsJZm9yX2VhY2hfZHNpX3BvcnQocG9ydCwgaW50ZWxfZHNpLT5wb3J0cykgew0KPj4gKwkJaWYg KGludGVsX2RzaS0+ZHVhbF9saW5rKQ0KPj4gKwkJCXBvcnQgPSBnZXRfY2FiY19wb3J0KGludGVs X2RzaSk7DQo+PiArCQlkc2lfZGV2aWNlID0gaW50ZWxfZHNpLT5kc2lfaG9zdHNbcG9ydF0tPmRl dmljZTsNCj4+ICsNCj4+ICsJCWRhdGFbMV0gPSBDQUJDX09GRjsNCj4+ICsJCWRhdGFbMF0gPSBN SVBJX0RDU19DQUJDX0NPTlRST0xfV1I7DQo+PiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVy KGRzaV9kZXZpY2UsIGRhdGEsIDIpOw0KPj4gKwkJZGF0YVswXSA9IE1JUElfRENTX0NBQkNfQ09O VFJPTF9CUklHSFRfV1I7DQo+PiArCQltaXBpX2RzaV9kY3Nfd3JpdGVfYnVmZmVyKGRzaV9kZXZp Y2UsIGRhdGEsIDIpOw0KPj4gKw0KPj4gKwkJaWYgKGludGVsX2RzaS0+ZHVhbF9saW5rICYmDQo+ PiArCQkJCSEoaW50ZWxfZHNpLT5kbF9jYWJjX3BvcnQgPT0NCj5DQUJDX1BPUlRfQV9BTkRfQykp DQo+PiArCQkJYnJlYWs7DQo+PiArCX0NCj4+ICt9DQo+PiArc3RhdGljIGludCBjYWJjX2JhY2ts aWdodF9kZXZpY2VfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QNCj4+ICtiYWNrbGlnaHRfZGV2aWNlICpi ZCkgew0KPj4gKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IgPSBibF9nZXRfZGF0 YShiZCk7DQo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmJhc2UuZGV2 Ow0KPj4gKw0KPj4gKwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rp b25fbXV0ZXgsIE5VTEwpOw0KPj4gKwlEUk1fREVCVUdfS01TKCJ1cGRhdGluZyBpbnRlbF9iYWNr bGlnaHQsIGJyaWdodG5lc3M9JWQvJWRcbiIsDQo+PiArCQkJYmQtPnByb3BzLmJyaWdodG5lc3Ms IGJkLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcyk7DQo+PiArDQo+PiArCWNhYmNfc2V0X2JhY2tsaWdo dChjb25uZWN0b3IsIGJkLT5wcm9wcy5icmlnaHRuZXNzKTsNCj4+ICsNCj4+ICsJZHJtX21vZGVz ZXRfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgpOw0KPj4gKw0KPj4g KwlyZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBjYWJjX2JhY2tsaWdodF9k ZXZpY2VfZ2V0X2JyaWdodG5lc3Moc3RydWN0DQo+PiArYmFja2xpZ2h0X2RldmljZSAqYmQpIHsN Cj4+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gYmxfZ2V0X2RhdGEoYmQp Ow0KPj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5iYXNlLmRldjsNCj4+ ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsN Cj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJaW50ZWxfcnVudGltZV9wbV9nZXQoZGV2X3ByaXYp Ow0KPj4gKwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0 ZXgsIE5VTEwpOw0KPj4gKw0KPj4gKwlyZXQgPSBjYWJjX2dldF9iYWNrbGlnaHQoY29ubmVjdG9y KTsNCj4+ICsNCj4+ICsJZHJtX21vZGVzZXRfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rpb25fbXV0ZXgpOw0KPj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7DQo+PiAr DQo+PiArCXJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg YmFja2xpZ2h0X29wcyBjYWJjX2JhY2tsaWdodF9kZXZpY2Vfb3BzID0gew0KPj4gKwkudXBkYXRl X3N0YXR1cyA9IGNhYmNfYmFja2xpZ2h0X2RldmljZV91cGRhdGVfc3RhdHVzLA0KPj4gKwkuZ2V0 X2JyaWdodG5lc3MgPSBjYWJjX2JhY2tsaWdodF9kZXZpY2VfZ2V0X2JyaWdodG5lc3MsDQo+PiAr fTsNCj4+ICsNCj4+ICtpbnQgY2FiY19iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4+ICt7DQo+PiArCXN0cnVjdCBpbnRlbF9wYW5l bCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsNCj4+ICsJc3RydWN0IGJhY2tsaWdodF9wcm9w ZXJ0aWVzIHByb3BzOw0KPj4gKw0KPj4gKwlpZiAoV0FSTl9PTihwYW5lbC0+YmFja2xpZ2h0LmRl dmljZSkpDQo+PiArCQlyZXR1cm4gLUVOT0RFVjsNCj4+ICsNCj4+ICsJaWYgKCFwYW5lbC0+YmFj a2xpZ2h0LnByZXNlbnQpIHsNCj4+ICsJCURSTV9FUlJPUigiTm8gYmFja2xpZ2h0IHByZXNlbnRc biIpOw0KPj4gKwkJcmV0dXJuIDA7DQo+PiArCX0NCj4+ICsNCj4+ICsJV0FSTl9PTihwYW5lbC0+ YmFja2xpZ2h0Lm1heCA9PSAwKTsNCj4+ICsNCj4+ICsJbWVtc2V0KCZwcm9wcywgMCwgc2l6ZW9m KHByb3BzKSk7DQo+PiArCXByb3BzLnR5cGUgPSBCQUNLTElHSFRfRklSTVdBUkU7DQo+PiArCXBy b3BzLm1heF9icmlnaHRuZXNzID0gcGFuZWwtPmJhY2tsaWdodC5tYXg7DQo+PiArCXByb3BzLmJy aWdodG5lc3MgPSBwcm9wcy5tYXhfYnJpZ2h0bmVzczsNCj4+ICsNCj4+ICsJLyoNCj4+ICsJICog Tm90ZTogdXNpbmcgdGhlIHNhbWUgbmFtZSBpbmRlcGVuZGVudCBvZiB0aGUgY29ubmVjdG9yIHBy ZXZlbnRzDQo+PiArCSAqIHJlZ2lzdHJhdGlvbiBvZiBtdWx0aXBsZSBiYWNrbGlnaHQgZGV2aWNl cyBpbiB0aGUgZHJpdmVyLg0KPj4gKwkgKi8NCj4+ICsJcGFuZWwtPmJhY2tsaWdodC5kZXZpY2Ug PQ0KPj4gKwkJYmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcigiaW50ZWxfYmFja2xpZ2h0IiwNCj4+ ICsJCQkJY29ubmVjdG9yLT5iYXNlLmtkZXYsDQo+PiArCQkJCWNvbm5lY3RvciwNCj4+ICsJCQkJ JmNhYmNfYmFja2xpZ2h0X2RldmljZV9vcHMsICZwcm9wcyk7DQo+PiArDQo+PiArCWlmIChJU19F UlIocGFuZWwtPmJhY2tsaWdodC5kZXZpY2UpKSB7DQo+PiArCQlEUk1fRVJST1IoIkZhaWxlZCB0 byByZWdpc3RlciBiYWNrbGlnaHQ6ICVsZFxuIiwNCj4+ICsJCQkJUFRSX0VSUihwYW5lbC0+YmFj a2xpZ2h0LmRldmljZSkpOw0KPj4gKwkJcGFuZWwtPmJhY2tsaWdodC5kZXZpY2UgPSBOVUxMOw0K Pj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+PiArCX0NCj4+ICsNCj4+ICsJRFJNX0RFQlVHX0tNUygi Q29ubmVjdG9yICVzIGJhY2tsaWdodCBzeXNmcyBpbnRlcmZhY2UNCj5yZWdpc3RlcmVkXG4iLA0K Pj4gKwkJCWNvbm5lY3Rvci0+YmFzZS5uYW1lKTsNCj4+ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiAr fQ0KPj4gKw0KPj4gK3ZvaWQgY2FiY19iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0 IGludGVsX2Nvbm5lY3Rvcg0KPj4gKypjb25uZWN0b3IpIHsNCj4+ICsJc3RydWN0IGludGVsX3Bh bmVsICpwYW5lbCA9ICZjb25uZWN0b3ItPnBhbmVsOw0KPj4gKw0KPj4gKwlpZiAocGFuZWwtPmJh Y2tsaWdodC5kZXZpY2UpIHsNCj4+ICsJCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihwYW5l bC0+YmFja2xpZ2h0LmRldmljZSk7DQo+PiArCQlwYW5lbC0+YmFja2xpZ2h0LmRldmljZSA9IE5V TEw7DQo+PiArCX0NCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpX2NhYmMuaA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2lfY2Fi Yy5oDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMC4uYjFhNzlkOQ0K Pj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNp X2NhYmMuaA0KPj4gQEAgLTAsMCArMSw0NiBAQA0KPj4gKy8qDQo+PiArICogQ29weXJpZ2h0IMKp IDIwMTMgSW50ZWwgQ29ycG9yYXRpb24NCj4+ICsgKg0KPj4gKyAqIFBlcm1pc3Npb24gaXMgaGVy ZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uDQo+PiArb2J0YWluaW5n IGENCj4+ICsgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRh dGlvbiBmaWxlcyAodGhlDQo+PiArIlNvZnR3YXJlIiksDQo+PiArICogdG8gZGVhbCBpbiB0aGUg U29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQNCj4+ICtsaW1p dGF0aW9uDQo+PiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsDQo+PiArc3VibGljZW5zZSwNCj4+ICsgKiBhbmQvb3Igc2VsbCBj b3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQ0KPj4g K3RoZQ0KPj4gKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0 aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQo+PiArICoNCj4+ICsgKiBUaGUgYWJvdmUgY29weXJp Z2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nDQo+PiArdGhl IG5leHQNCj4+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMNCj4+ICtvZiB0aGUNCj4+ICsgKiBTb2Z0d2FyZS4NCj4+ ICsgKg0KPj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWQ0KPktJTkQsDQo+PiArRVhQUkVTUyBPUg0KPj4gKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YNCj4+ICtNRVJDSEFO VEFCSUxJVFksDQo+PiArICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5P TklORlJJTkdFTUVOVC4gIElOIE5PDQo+RVZFTlQNCj4+ICtTSEFMTA0KPj4gKyAqIFRIRSBBVVRI T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLA0KPkRBTUFH RVMNCj4+ICtPUiBPVEhFUg0KPj4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04g T0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLA0KPj4gK0FSSVNJTkcNCj4+ICsgKiBGUk9N LCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFDQo+ T1INCj4+ICtPVEhFUg0KPj4gKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4NCj4+ICsgKg0K Pj4gKyAqIEF1dGhvcjogRGVlcGFrIE0gPG0uZGVlcGFrQGludGVsLmNvbT4gICovDQo+PiArDQo+ PiArZXh0ZXJuIGludCBjYWJjX2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGludGVs X2Nvbm5lY3Rvcg0KPj4gKypjb25uZWN0b3IpOyBleHRlcm4gdm9pZCBjYWJjX2JhY2tsaWdodF9k ZXZpY2VfdW5yZWdpc3RlcihzdHJ1Y3QNCj4+ICtpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3Rvcik7 IHZvaWQgY2FiY19zZXRfYmFja2xpZ2h0KHN0cnVjdA0KPj4gK2ludGVsX2Nvbm5lY3RvciAqY29u bmVjdG9yLCB1MzIgbGV2ZWwpOw0KPj4gK3UzMiBjYWJjX2dldF9iYWNrbGlnaHQoc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsgdm9pZA0KPj4gK2NhYmNfZW5hYmxlX2JhY2tsaWdo dChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOyB2b2lkDQo+PiArY2FiY19kaXNh YmxlX2JhY2tsaWdodChzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpOyBpbnQNCj4+ ICtjYWJjX3NldHVwX2JhY2tsaWdodChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBl bnVtIHBpcGUNCj4+ICt1bnVzZWQpOw0KPj4gKw0KPj4gKyNkZWZpbmUgQ0FCQ19PRkYJCQkoMCA8 PCAwKQ0KPj4gKyNkZWZpbmUgQ0FCQ19VU0VSX0lOVEVSRkFDRV9JTUFHRQkoMSA8PCAwKQ0KPj4g KyNkZWZpbmUgQ0FCQ19TVElMTF9QSUNUVVJFCQkoMiA8PCAwKQ0KPj4gKyNkZWZpbmUgQ0FCQ19W SURFT19NT0RFCQkJKDMgPDwgMCkNCj4+ICsNCj4+ICsjZGVmaW5lIENBQkNfQkFDS0xJR0hUCQkJ KDEgPDwgMikNCj4+ICsjZGVmaW5lIENBQkNfRElNTUlOR19ESVNQTEFZCQkoMSA8PCAzKQ0KPj4g KyNkZWZpbmUgQ0FCQ19CQ1RSTAkJCSgxIDw8IDUpDQo+PiArDQo+PiArI2RlZmluZSBDQUJDX1BP UlRfQQkJCTB4MDANCj4+ICsjZGVmaW5lIENBQkNfUE9SVF9DCQkJMHgwMQ0KPj4gKyNkZWZpbmUg Q0FCQ19QT1JUX0FfQU5EX0MJCTB4MDINCj4+ICsjZGVmaW5lIENBQkNfTUFYX1ZBTFVFCQkJMHhm Zg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMNCj4+ IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYw0KPj4gaW5kZXggZTJhYjNmNi4u ZmYyZTU4NiAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVs LmMNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMNCj4+IEBAIC0z NCw2ICszNCw3IEBADQo+PiAgI2luY2x1ZGUgPGxpbnV4L21vZHVsZXBhcmFtLmg+DQo+PiAgI2lu Y2x1ZGUgPGxpbnV4L3B3bS5oPg0KPj4gICNpbmNsdWRlICJpbnRlbF9kcnYuaCINCj4+ICsjaW5j bHVkZSAiaW50ZWxfZHNpX2NhYmMuaCINCj4+DQo+PiAgI2RlZmluZSBDUkNfUE1JQ19QV01fUEVS SU9EX05TCTIxMzMzDQo+Pg0KPj4gQEAgLTE1ODYsMTUgKzE1ODcsMjkgQEAgdm9pZCBpbnRlbF9w YW5lbF9maW5pKHN0cnVjdCBpbnRlbF9wYW5lbA0KPj4gKnBhbmVsKSAgdm9pZCBpbnRlbF9iYWNr bGlnaHRfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikgIHsNCj4+ICAJc3RydWN0IGlu dGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yOw0KPj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOw0KPj4NCj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRy eShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0LA0KPmJhc2UuaGVh ZCkNCj4+IC0JCWludGVsX2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoY29ubmVjdG9yKTsNCj4+ ICsJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsICZkZXYtPm1vZGVfY29uZmlnLmNvbm5l Y3Rvcl9saXN0LA0KPj4gKwkJCQkJYmFzZS5oZWFkKSB7DQo+PiArCQlpZiAoY29ubmVjdG9yLT5l bmNvZGVyLT50eXBlID09IElOVEVMX09VVFBVVF9EU0kgJiYNCj4+ICsJCQlkZXZfcHJpdi0+dmJ0 LmRzaS5jb25maWctPmNhYmNfc3VwcG9ydGVkKQ0KPj4gKwkJCWNhYmNfYmFja2xpZ2h0X2Rldmlj ZV9yZWdpc3Rlcihjb25uZWN0b3IpOw0KPj4gKwkJZWxzZQ0KPj4gKwkJCWludGVsX2JhY2tsaWdo dF9kZXZpY2VfcmVnaXN0ZXIoY29ubmVjdG9yKTsNCj4+ICsJfQ0KPj4gIH0NCj4+DQo+PiAgdm9p ZCBpbnRlbF9iYWNrbGlnaHRfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KSAgew0K Pj4gIAlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7DQo+PiArCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+Pg0KPj4gLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xp c3QsDQo+YmFzZS5oZWFkKQ0KPj4gLQkJaW50ZWxfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVy KGNvbm5lY3Rvcik7DQo+PiArCWxpc3RfZm9yX2VhY2hfZW50cnkoY29ubmVjdG9yLCAmZGV2LT5t b2RlX2NvbmZpZy5jb25uZWN0b3JfbGlzdCwNCj4+ICsJCQkJCWJhc2UuaGVhZCkgew0KPj4gKwkJ aWYgKGNvbm5lY3Rvci0+ZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJICYmDQo+PiAr CQkJZGV2X3ByaXYtPnZidC5kc2kuY29uZmlnLT5jYWJjX3N1cHBvcnRlZCkNCj4+ICsJCQljYWJj X2JhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3Rlcihjb25uZWN0b3IpOw0KPj4gKwkJZWxzZQ0KPj4g KwkJCWludGVsX2JhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3Rlcihjb25uZWN0b3IpOw0KPj4gKwl9 DQo+PiAgfQ0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8vbWlwaV9kaXNwbGF5LmgNCj4+ IGIvaW5jbHVkZS92aWRlby9taXBpX2Rpc3BsYXkuaCBpbmRleCBkZGNjOGNhLi41YjhlZWVjIDEw MDY0NA0KPj4gLS0tIGEvaW5jbHVkZS92aWRlby9taXBpX2Rpc3BsYXkuaA0KPj4gKysrIGIvaW5j bHVkZS92aWRlby9taXBpX2Rpc3BsYXkuaA0KPj4gQEAgLTExNyw2ICsxMTcsMTQgQEAgZW51bSB7 DQo+PiAgCU1JUElfRENTX0dFVF9TQ0FOTElORQkJPSAweDQ1LA0KPj4gIAlNSVBJX0RDU19SRUFE X0REQl9TVEFSVAkJPSAweEExLA0KPj4gIAlNSVBJX0RDU19SRUFEX0REQl9DT05USU5VRQk9IDB4 QTgsDQo+PiArCU1JUElfRENTX0NBQkNfTEVWRUxfUkQgICAgICAgICAgPSAweDUyLA0KPj4gKwlN SVBJX0RDU19DQUJDX01JTl9CUklHSFRORVNTX1JEID0gMHg1RiwNCj4+ICsJTUlQSV9EQ1NfQ0FC Q19DT05UUk9MX1JEICAgICAgICA9IDB4NTYsDQo+PiArCU1JUElfRENTX0NBQkNfQ09OVFJPTF9C UklHSFRfUkQgPSAweDU0LA0KPj4gKwlNSVBJX0RDU19DQUJDX0xFVkVMX1dSICAgICAgICAgID0g MHg1MSwNCj4+ICsJTUlQSV9EQ1NfQ0FCQ19NSU5fQlJJR0hUTkVTU19XUiA9IDB4NUUsDQo+PiAr CU1JUElfRENTX0NBQkNfQ09OVFJPTF9XUiAgICAgICAgPSAweDU1LA0KPj4gKwlNSVBJX0RDU19D QUJDX0NPTlRST0xfQlJJR0hUX1dSID0gMHg1MywNCj4NCj5UaGVzZSBjaGFuZ2VzIG5lZWQgdG8g YmUgYSBzZXBhcmF0ZSBwYXRjaC4gQW5kIHdoYXQncyB0aGUgc3BlYyByZWZlcmVuY2UsIEkNCj5j YW4ndCBmaW5kIHRoZXNlLg0KPg0KW0RlZXBhayBNXSBUaGUgSExEIGNhbiBiZSBmb3VuZCBpbiB0 aGUgbGluayBodHRwczovL3NlY3VyZXdpa2kuaXRoLmludGVsLmNvbS9kaXNwbGF5L0dmeERpc3Bs YXkvTUlQSStEaXNwbGF5IChpdCBpcyB1bmRlciBJbnRlbCBmaXJld2FsbCkNCj5CUiwNCj5KYW5p Lg0KPg0KPg0KPj4gIH07DQo+Pg0KPj4gIC8qIE1JUEkgRENTIHBpeGVsIGZvcm1hdHMgKi8NCj4+ IC0tDQo+PiAxLjcuOS41DQo+Pg0KPj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCj4+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QNCj4+IEludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngNCj4NCj4tLQ0KPkphbmkgTmlrdWxhLCBJbnRlbCBPcGVu IFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK