From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH] drm/i915: Backlight Control over AUX feature Date: Mon, 14 Sep 2015 13:00:26 +0300 Message-ID: <87wpvtjp6t.fsf@intel.com> References: <1441894302-28475-1-git-send-email-yetundex.adebisi@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 09C7F6E817 for ; Mon, 14 Sep 2015 02:57:15 -0700 (PDT) In-Reply-To: <1441894302-28475-1-git-send-email-yetundex.adebisi@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org Cc: Yetunde Adebisi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxMCBTZXAgMjAxNSwgWWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGlu dGVsLmNvbT4gd3JvdGU6Cj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIEJhY2tsaWdodCBD b250cm9sIG92ZXIgdGhlIEFVWCBjaGFubmVsIGZvcgo+IERQIGFuZCBlRFAgY29ubmVjdG9ycy4g SXQgYWxsb3dzIHRoZSBiYWNrbGlnaHQgb2YgRFAgYW5kIGVEUCBjb25uZWN0ZWQKPiBkaXNwbGF5 cyB0byBiZSBjb250cm9sbGVkIGZyb20gc29mdHdhcmUgdXNpbmcgc3lzZnMgaW50ZXJmYWNlLgoK V2hpY2ggc3BlYyBzYXlzIHRoZXJlJ3MgRFBDRCBiYWNrbGlnaHQgY29udHJvbCBzdXBwb3J0IG9u IG5vbi1lbWJlZGRlZApEaXNwbGF5IFBvcnQ/IEFGQUlDVCBpdCdzIGp1c3QgZURQLgoKPiBUaGUg Y29kZSBmaXJzdCBjaGVja3MgaWYgdGhlIERQL2VEUCBkaXNwbGF5IGhhcyB0aGUgY2FwYWJpbGl0 eSBmb3IKPiBiYWNrbGlnaHQgY29udHJvbCBieSByZWFkaW5nIERpc3BsYXkgQ29udHJvbCBEUENE IHJlZ2lzdGVycyBhcyBkZWZpbmVkCj4gYnkgdGhlIGVEUCB2MS4zIFZFU0Egc3BlY3MuCj4gSXQg dGhlbiByZWdpc3RlcnMgYSAvc3lzL2JhY2tsaWdodCBkZXZpY2UgaWYgYmFja2xpZ2h0IGNvbnRy b2wgaXMKPiBzdXBwb3J0ZWQuCj4KPiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgdG8KPiAtIFJlZ2lz dGVyIGEgc3lzZnMgYmFja2xpZ2h0IGludGVyZmFjZSBpZiB0aGUgZURQL0RQIGNvbm5uZWN0b3Ig aXMKPiBjYXBhYmxlIG9mIGF1eCBiYWNrbGlnaHQgY29udHJvbAo+IC0gUmVhZCB0aGUgY3VycmVu dCBiYWNrbGlnaHQgbGV2ZWwgZnJvbSBEUENEIHJlZ2lzdGVyIDB4NzIyCj4gLSBDaGFuZ2UgdGhl IGJhY2tsaWdodCBsZXZlbAo+IC0gRGlzYWJsZS9FbmFibGUgdGhlIGJhY2tsaWdodCBieSB3cml0 aW5nIHRvIERQQ0QgcmVnaXN0ZXIgMHg3MjAKCklNTyB0aGUgZGVzaWduIHNob3VsZCBiZSB0byBt b3ZlIGRldl9wcml2LT5kaXNwbGF5IGJhY2tsaWdodCBob29rcyB0byBiZQpjb25uZWN0b3Igc3Bl Y2lmaWMsIGluIGludGVsX3BhbmVsLCBhbmQgaXQgd291bGQgYmUgdHJhbnNwYXJlbnQgd2hldGhl cgpiYWNrbGlnaHQgY29udHJvbCBpcyBBVVggYmFzZWQsIEdQVSBQV00gYmFzZWQsIFBNSUMgUFdN IGJhc2VkLCBvciBEU0kKY29tbWFuZCBtb2RlIGJhc2VkLiBJJ3ZlIGdpdmVuIHRoZSBleGFjdCBz YW1lIGZlZWRiYWNrIGFib3V0IHRoZSByZWNlbnQKRFNJIGNvbW1hbmQgbW9kZSBiYWNrbGlnaHQg Y29kZS4KCk1vc3Qgb2YgdGhlIGJvaWxlcnBsYXRlIGNvZGUgaW4gaW50ZWxfcGFuZWwuYyBzaG91 bGQgcmVtYWluIGludGFjdCwganVzdAp0aGUgaG9va3Mgd291bGQgYmUgaW4gYSBkaWZmZXJlbnQg c3RydWN0LCBhbmQgd291bGQsIGluIERQIEFVWCBjYXNlLApwb2ludCBhdCBkaWZmZXJlbnQgZnVu Y3Rpb25zLiBUaGlzIHBhdGNoIGR1cGxpY2F0ZXMgd2F5IHRvbyBtdWNoIGNvZGUKZm9yIG5vIGdv b2QgcmVhc29uLgoKPiBVc2FnZToKPiBCYWNrbGlnaHQgbGV2ZWwgcmFuZ2VzIGZyb20gMChtaW4p LTI0MChtYXgpIDB4MC0weEYwCj4gLSBUbyBjaGFuZ2UgQmFja2xpZ2h0IGxldmVsIHRvIDUwCj4g ZWNobyA1MCA+IC9zeXMvY2xhc3MvYmFja2xpZ2h0L2ludGVsX2F1eF9iYWNrbGlnaHQtRFAtMy9i cmlnaHRuZXNzCgpJSVVDIGl0IHNob3VsZCBiZSBlbm91Z2ggdG8gaGF2ZSBqdXN0IG9uZSBpbnRl bF9iYWNrbGlnaHQuIEFuZCBpZiBub3QsIEkKZG9uJ3QgdGhpbmsgdHlpbmcgdGhlIGJhY2tsaWdo dCB0byB0aGUgY29ubmVjdG9yIG5hbWUgbGlrZSB0aGlzIGlzIGEKZ29vZCBpZGVhLiBVc2Vyc3Bh Y2UgY2FuIGFscmVhZHkgbWFwIHRoZSBiYWNrbGlnaHQgaW50ZXJmYWNlcyB0byB0aGUKY29ubmVj dG9ycyBiYXNlZCBvbiB0aGUgcGFyZW50IGtvYmplY3QuCgo+Cj4gLSBUbyBkaXNhYmxlIGJhY2ts aWdodAo+IGVjaG8gNCA+IC9zeXMvY2xhc3MvYmFja2xpZ2h0L2ludGVsX2F1eF9iYWNrbGlnaHQt RFAtMy9ibF9wb3dlcgo+IC0gVG8gZW5hYmxlIGJhY2tsaWdodAo+IGVjaG8gMCA+IC9zeXMvY2xh c3MvYmFja2xpZ2h0L2ludGVsX2F1eF9iYWNrbGlnaHQtRFAtMy9ibF9wb3dlcgo+Cj4gdjI6Cj4g LSBDb2RlIGNsZWFuIHVwCj4gLSBBdm9pZCBjb2RlIGR1cGxpY2F0aW9uIGJ5IG1lcmdpbmcgdGhl IGJhY2tsaWdodCBkZXZpY2UKPiAgcmVnaXN0ZXIvdW5yZWdpc3RlciBmdW5jdGlvbiB3aXRoIHRo ZSBleGlzdGluZyBvbmUgZm9yIGludGVybmFsIGRpc3BsYXlzCj4KPiB2MzoKPiBGdXJ0aGVyIGNo YW5nZXMgdG8gcmUtdXNlIGV4aXN0aW5nIGNvZGUgYnkgYWRkaW5nIGJsX25hbWUgYW5kIGJhY2ts aWdodF9vcHMKPiB2YXJpYWJsZXMgdG8gdGhlIGludGVsX2JhY2tsaWdodCBzdHJ1Y3R1cmUuCgpX aGVyZSB3ZXJlIHRoZSBwcmV2aW91cyB2ZXJzaW9ucz8gU29tZWhvdyBJIGRvbid0IHRoaW5rIEkg d291bGQgaGF2ZQptaXNzZWQgdGhlbSBpZiB0aGV5IGhhZCBiZWVuIHBvc3RlZCBvbiB0aGUgbWFp bGluZyBsaXN0cy4KCj4KPiBDYzogQm9iIFBhYXV3ZSA8Ym9iLmoucGFhdXdlQGludGVsLmNvbT4K PiBTaWduZWQtb2ZmLWJ5OiBZZXR1bmRlIEFkZWJpc2kgPHlldHVuZGV4LmFkZWJpc2lAaW50ZWwu Y29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgICAg ICAgICAgIHwgICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAg ICAgICAgICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAg ICAgICAgICAgICAgICAgfCAgIDYgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBf YXV4X2JhY2tsaWdodF9jdGwuYyB8IDMyNCArKysrKysrKysrKysrKysrKysrKysrCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICAgICAgICAgICAgICAgfCAgNDYgKystCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgICAgICAgICAgICAgICAgfCAxMTEg KysrKystLS0KPiAgaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNiArCgpDaGFuZ2VzIHRvIHRoaXMgZmlsZSBtdXN0IGJlIGEgc2VwYXJhdGUgcGF0 Y2gsIHBvc3RlZCB0byBkcmktZGV2ZWwgbGlzdC4KClBsZWFzZSBmaW5kIHNvbWUgZnVydGhlciBu b3RlcyBiZWxvdy4KCj4gIDcgZmlsZXMgY2hhbmdlZCwgNDQzIGluc2VydGlvbnMoKyksIDUyIGRl bGV0aW9ucygtKQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwuYwo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBpbmRleCA0 NGQyOTBhLi4yNjBiZTAzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiBAQCAtNzcsNiArNzcs NyBAQCBpOTE1LXkgKz0gZHZvX2NoNzAxNy5vIFwKPiAgCSAgZHZvX3RmcDQxMC5vIFwKPiAgCSAg aW50ZWxfY3J0Lm8gXAo+ICAJICBpbnRlbF9kZGkubyBcCj4gKwkgIGludGVsX2RwX2F1eF9iYWNr bGlnaHRfY3RsLm8gXAo+ICAJICBpbnRlbF9kcF9tc3QubyBcCj4gIAkgIGludGVsX2RwLm8gXAo+ ICAJICBpbnRlbF9kc2kubyBcCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGlu ZGV4IGU2MjlhMWIuLjI5Mzc0MzIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gQEAgLTE1MzQwLDYgKzE1MzQwLDcgQEAgdm9pZCBpbnRlbF9jb25uZWN0b3JfdW5yZWdp c3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IpCj4gIAlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiAgCj4g IAlpbnRlbF9wYW5lbF9kZXN0cm95X2JhY2tsaWdodChjb25uZWN0b3IpOwo+ICsJaW50ZWxfZHBf YXV4X2JhY2tsaWdodF9kZXN0cm95KGNvbm5lY3Rvcik7Cj4gIAlkcm1fY29ubmVjdG9yX3VucmVn aXN0ZXIoY29ubmVjdG9yKTsKPiAgfQo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiBpbmRl eCA0NWFiMjVlLi45NzVhODM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RwLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTMw MTgsNyArMzAxOCw3IEBAIHN0YXRpYyB2b2lkIGNodl9kcF9wb3N0X3BsbF9kaXNhYmxlKHN0cnVj dCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ICAgKiBTaW5rcyBhcmUgKnN1cHBvc2VkKiB0byBj b21lIHVwIHdpdGhpbiAxbXMgZnJvbSBhbiBvZmYgc3RhdGUsIGJ1dCB3ZSdyZSBhbHNvCj4gICAq IHN1cHBvc2VkIHRvIHJldHJ5IDMgdGltZXMgcGVyIHRoZSBzcGVjLgo+ICAgKi8KPiAtc3RhdGlj IHNzaXplX3QKPiArc3NpemVfdAo+ICBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJt X2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICAJCQl2b2lkICpidWZmZXIsIHNp emVfdCBzaXplKQo+ICB7Cj4gQEAgLTM5NjksNyArMzk2OSw3IEBAIGludGVsX2RwX2xpbmtfZG93 bihzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICAJbXNsZWVwKGludGVsX2RwLT5wYW5lbF9w b3dlcl9kb3duX2RlbGF5KTsKPiAgfQo+ICAKPiAtc3RhdGljIGJvb2wKPiArYm9vbAoKV2h5PwoK PiAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJ c3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRl bF9kcCk7Cj4gQEAgLTYxMjUsNiArNjEyNSw4IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0 cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0LAo+ICAJCXJldHVybiBmYWxz ZTsKPiAgCX0KPiAgCj4gKwlpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2luaXQoaW50ZWxfZHAsIGNv bm5lY3Rvcik7Cj4gKwo+ICAJaW50ZWxfZHBfYWRkX3Byb3BlcnRpZXMoaW50ZWxfZHAsIGNvbm5l Y3Rvcik7Cj4gIAo+ICAJLyogRm9yIEc0WCBkZXNrdG9wIGNoaXAsIFBFR19CQU5EX0dBUF9EQVRB IDM6MCBtdXN0IGZpcnN0IGJlIHdyaXR0ZW4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfY3RsLmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGlu ZGV4IDAwMDAwMDAuLmE4ZWY5NjAKPiAtLS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwuYwo+IEBAIC0wLDAgKzEsMzI0IEBA Cj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4g KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2Np YXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwg aW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxp bWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1 Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBv ZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp cyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkg c2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBv ZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAqCj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAq IElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Yg TUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB TkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMg T1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1Ig T1RIRVIKPiArICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwg VE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsg KiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4gKyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImlu dGVsX2Rydi5oIgo+ICsKPiArCj4gKyNkZWZpbmUgTUFYX0FVWF9CTF9IV19MRVZFTCAweEYwCj4g KyNkZWZpbmUgTUlOX0FVWF9CTF9IV19MRVZFTCAweDAwCj4gKwo+ICsKPiArc3RhdGljIHVpbnQ4 X3QgcmVhZF9tb2RlX3NldF9yZWcoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ICsJ dWludDhfdCBkcGNkX2J1ZiA9IDA7Cj4gKwo+ICsJaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtl KCZpbnRlbF9kcC0+YXV4LAo+ICsJCQlEUF9FRFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVS LAo+ICsJCQkmZHBjZF9idWYsIHNpemVvZihkcGNkX2J1ZikpIDwgMCkKPiArCQlEUk1fREVCVUdf S01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJlZ2lzdGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9FRFBf QkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVSKTsKPiArCj4gKwlyZXR1cm4gZHBjZF9idWY7Cj4g K30KPiArCj4gKy8qKgo+ICsgKiBSZWFkIHRoZSBjdXJyZW50IGJhY2tsaWdodCB2YWx1ZSBmcm9t IERQQ0QgcmVnaXN0ZXIocykgYmFzZWQKPiArICogb24gaWYgOC1iaXQoTVNCKSBvciAxNi1iaXQo TVNCIGFuZCBMU0IpIHZhbHVlcyBhcmUgc3VwcG9ydGVkCj4gKyAqLwo+ICtzdGF0aWMgdWludDE2 X3QgcmVhZF9hdXhfYmFja2xpZ2h0X2xldmVsKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g K3sKPiArCXVpbnQxNl90IHJlYWRfdmFsID0gMDsKPiArCj4gKwlpZiAoaW50ZWxfZHBfZHBjZF9y ZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gKwkJCURQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVT U19NU0IsCj4gKwkJCSZyZWFkX3ZhbCwgc2l6ZW9mKHJlYWRfdmFsKSkgPCAwKSB7Cj4gKwkJRFJN X0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4iLAo+ICsJCQkJ RFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4g KwlpZiAoaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQudXNlX2xzYl9yZWcpIHsKPiArCQl1aW50OF90 IHZhbF9sc2IgPSAwOwo+ICsKPiArCQlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVs X2RwLT5hdXgsCj4gKwkJCQlEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTFNCLAo+ICsJCQkJ JnZhbF9sc2IsIHNpemVvZih2YWxfbHNiKSkgPCAwKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoIkZh aWxlZCB0byByZWFkIERQQ0QgcmVnaXN0ZXIgMHgleFxuIiwKPiArCQkJCQlEUF9FRFBfQkFDS0xJ R0hUX0JSSUdIVE5FU1NfTFNCKTsKPiArCQkJcmV0dXJuIDA7Cj4gKwkJfQo+ICsJCXJlYWRfdmFs ID0gKHJlYWRfdmFsIDw8IDggfCB2YWxfbHNiKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmVhZF92 YWw7Cj4gK30KPiArCj4gKwo+ICtzdGF0aWMgYm9vbCBnZXRfYXV4X2JhY2tsaWdodF9lbmFibGUo c3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiArewo+ICsJdWludDhfdCByZWFkX3ZhbCA9IDA7Cj4g Kwo+ICsJaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKGF1eCwgRFBfRURQX0RJU1BMQVlfQ09O VFJPTF9SRUdJU1RFUiwKPiArCQkJJnJlYWRfdmFsLCBzaXplb2YocmVhZF92YWwpKSA8IDApIHsK PiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJlZ2lzdGVyIDB4JXhcbiIs Cj4gKwkJCQlEUF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSKTsKPiArCQl9Cj4gKwlyZXR1 cm4gcmVhZF92YWwgJiBEUF9FRFBfQkFDS0xJR0hUX0VOQUJMRTsKPiArfQo+ICsKPiArCj4gK3N0 YXRpYyBib29sIGlzX2F1eF9kaXNwbGF5X2NvbnRyb2xfY2FwYWJsZShzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5j b2RlciA9IGludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVjdG9yKTsKPiArCXN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ ICsJdWludDhfdCBkcGNkX2VkcFsyXSA9IHsgMHgwIH07Cj4gKwo+ICsJLyogQ2hlY2sgdGhlICBl RFAgRGlzcGxheSBjb250cm9sIGNhcGFiaWxpdGllcyByZWdpc3RlcnMgdG8gZGV0ZXJtaW5lIGlm Cj4gKwkgKiB0aGUgcGFuZWwgY2FuIHN1cHBvcnQgYmFja2xpZ2h0IGNvbnRyb2wgb3ZlciB0aGUg YXV4IGNoYW5uZWwqLwo+ICsJaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+ YXV4LCBEUF9FRFBfR0VORVJBTF9DQVBfMSwKPiArCQkJZHBjZF9lZHAsIHNpemVvZihkcGNkX2Vk cCkpIDwgMCkgewo+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQQ0QgRGlzcGxh eSBDb250cm9sIHJlZ2lzdGVyc1xuIik7Cj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsJRFJN X0RFQlVHX0tNUygiRURQIERQQ0QgOiAlKnBoXG4iLCAoaW50KSBzaXplb2YoZHBjZF9lZHApLCBk cGNkX2VkcCk7Cj4gKwo+ICsJaWYgKGRwY2RfZWRwWzBdICYgRFBfRURQX1RDT05fQkFDS0xJR0hU X0FESlVTVE1FTlRfQ0FQQUJMRSAmJgo+ICsJCQkoZHBjZF9lZHBbMF0gJiBEUF9FRFBfQkFDS0xJ R0hUX0FVWF9FTkFCTEVfQ0FQQUJMRSkgJiYKPiArCQkJKGRwY2RfZWRwWzFdICYgRFBfRURQX0JB Q0tMSUdIVF9CUklHSFRORVNTX0FVWF9TRVRfQ0FQQUJMRSkgJiYKPiArCQkJKChyZWFkX21vZGVf c2V0X3JlZyhpbnRlbF9kcCkgJgo+ICsJCQkJCURQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19D VExfTU9ERV9EUENEX01BU0spKSkgewo+ICsKPiArCQlEUk1fREVCVUdfS01TKCJBVVggQmFja2xp Z2h0IENvbnRyb2wgU3VwcG9ydGVkIVxuIik7Cj4gKwo+ICsJCWlmIChkcGNkX2VkcFsxXSAmIERQ X0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRFX0NPVU5UKQo+ICsJCQlpbnRlbF9kcC0+YXV4 X2JhY2tsaWdodC51c2VfbHNiX3JlZyA9IHRydWU7Cj4gKwo+ICsJCXJldHVybiB0cnVlOwo+ICsJ fQo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfQkFD S0xJR0hUX0NMQVNTX0RFVklDRSkKPiArCj4gKy8qKgo+ICsgKiBTZW5kcyB0aGUgY3VycmVudCBi YWNrbGlnaHQgbGV2ZWwgb3ZlciB0aGUgYXV4IGNoYW5uZWwsIGNoZWNraW5nIGlmIGl0cyB1c2lu Zwo+ICsgKiA4LWJpdCBvciAxNiBiaXQgdmFsdWUgKE1TQiBhbmQgTFNCKQo+ICsgKi8KPiArc3Rh dGljIHZvaWQKPiArd3JpdGVfYXV4X2JhY2tsaWdodF9sZXZlbChzdHJ1Y3QgaW50ZWxfZHAgKmlu dGVsX2RwLCB1aW50MTZfdCBsZXZlbCkKPiArewo+ICsJdWludDhfdCB2YWxzWzJdID0geyAweDAg fTsKPiArCj4gKwl2YWxzWzBdID0gbGV2ZWw7Cj4gKwlEUk1fREVCVUdfS01TKCJMZXZlbCAweCV4 XG4iLCBsZXZlbCk7Cj4gKwo+ICsJLyogV3JpdGUgdGhlIE1TQiBhbmQvb3IgTFNCICovCj4gKwkg aWYgKGludGVsX2RwLT5hdXhfYmFja2xpZ2h0LnVzZV9sc2JfcmVnKSB7Cj4gKwkJdmFsc1swXSA9 IChsZXZlbCAmIDB4RkYwMCkgPj4gODsKPiArCQl2YWxzWzFdID0gKGxldmVsICYgMHhGRik7Cj4g KwkJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwKPiArCQkJCURQX0VEUF9C QUNLTElHSFRfQlJJR0hUTkVTU19NU0IsIHZhbHNbMV0pIDwgMCkgewo+ICsJCQlEUk1fREVCVUdf S01TKCJGYWlsZWQgdG8gd3JpdGUgYXV4IGJhY2tsaWdodCBsZXZlbFxuIik7Cj4gKwkJCXJldHVy bjsKPiArCQl9Cj4gKwkgfQo+ICsJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1 eCwgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiwKPiArCQkJdmFsc1swXSkgPCAwKSB7 Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHdyaXRlIGF1eCBiYWNrbGlnaHQgbGV2ZWxc biIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmxldmVs ID0gbGV2ZWw7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNldF9hdXhfYmFja2xpZ2h0X2VuYWJs ZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCBib29sIGVuYWJsZSkKPiArewo+ICsJdWludDhf dCByZWdfdmFsID0gMDsKPiArCj4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVs X2RwLT5hdXgsCj4gKwkJCQlEUF9FRFBfRElTUExBWV9DT05UUk9MX1JFR0lTVEVSLAo+ICsJCQkJ JnJlZ192YWwsIHNpemVvZihyZWdfdmFsKSkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFp bGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4iLAo+ICsJCQkJRFBfRURQX0RJU1BMQVlf Q09OVFJPTF9SRUdJU1RFUik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJaWYgKGVuYWJsZSkKPiAr CQlyZWdfdmFsIHw9IERQX0VEUF9CQUNLTElHSFRfRU5BQkxFOwo+ICsJZWxzZQo+ICsJCXJlZ192 YWwgJj0gfihEUF9FRFBfQkFDS0xJR0hUX0VOQUJMRSk7Cj4gKwo+ICsJaWYgKGRybV9kcF9kcGNk X3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUiwK PiArCQkJcmVnX3ZhbCkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvICVzIGF1 eCBiYWNrbGlnaHRcbiIsCj4gKwkJCQllbmFibGUgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIik7Cj4g KwkJcmV0dXJuOwo+ICsJfQo+ICsJaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQuZW5hYmxlZCA9IGVu YWJsZTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNl X3VwZGF0ZV9zdGF0dXMKPiArICogV3JpdGVzIHRvIHRoZSBzeXNmcyBiYWNrbGlnaHQgaW50ZXJm YWNlIHdpbGwgY29tZSBoZXJlIHRvIHNldCB0aGUKPiArICogYmFja2xpZ2h0IGxldmVsIG9yIGRp c2FibGUvZW5hYmxlIHRoZSBiYWNrbGlnaHQKPiArICovCj4gK3N0YXRpYyBpbnQKPiAraW50ZWxf ZHBfYXV4X2JhY2tsaWdodF9kZXZpY2VfdXBkYXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2Rl dmljZSAqYmQpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3Rv ciA9IGJsX2dldF9kYXRhKGJkKTsKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3Ig PSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVs X2VuY29kZXIgPSBpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gKwlzdHJ1Y3Qg aW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZpbnRlbF9lbmNvZGVyLT5iYXNl KTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKPiArCXVpbnQz Ml90IGh3X2xldmVsOwo+ICsJYm9vbCBibF9lbmFibGUgPSBmYWxzZTsKPiArCj4gKwlEUk1fREVC VUdfS01TKCJVcGRhdGluZyBpbnRlbF9hdXhfYmFja2xpZ2h0LURQLCBicmlnaHRuZXNzPSVkLyVk LCBibF9wb3dlciAlZFxuIiwKPiArCQkJYmQtPnByb3BzLmJyaWdodG5lc3MsIGJkLT5wcm9wcy5t YXhfYnJpZ2h0bmVzcywKPiArCQkJYmQtPnByb3BzLnBvd2VyKTsKPiArCj4gKwlpZiAoY29ubmVj dG9yLT5zdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwo+ICsJV0FSTl9PTihpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5tYXggPT0gMCk7 Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211 dGV4LCBOVUxMKTsKPiArCj4gKwlod19sZXZlbCA9IHNjYWxlKGJkLT5wcm9wcy5icmlnaHRuZXNz LAo+ICsJCQkwLCBiZC0+cHJvcHMubWF4X2JyaWdodG5lc3MsCj4gKwkJCWludGVsX2RwLT5hdXhf YmFja2xpZ2h0Lm1pbiwgaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubWF4KTsKPiArCj4gKwlpZiAo aW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubGV2ZWwgIT0gaHdfbGV2ZWwpCj4gKwkJd3JpdGVfYXV4 X2JhY2tsaWdodF9sZXZlbChpbnRlbF9kcCwgaHdfbGV2ZWwpOwo+ICsKPiArCS8qCj4gKwkgKiBU aGlzIGdldHMgY2FsbGVkIHdoZW4gYmxfcG93ZXIgaXMgd3JpdHRlbiB0byBhcyB3ZWxsLiBDaGVj ayBpZiB0aGUKPiArCSAqIGJsX3Bvd2VyIHN0YXRlIGhhcyBjaGFuZ2VkIGFuZCB3cml0ZSBpdAo+ ICsJICovCj4gKwlibF9lbmFibGUgPSAoYmQtPnByb3BzLnBvd2VyID09IEZCX0JMQU5LX1VOQkxB TkspOwo+ICsJaWYgKGludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmVuYWJsZWQgIT0gYmxfZW5hYmxl KQo+ICsJCXNldF9hdXhfYmFja2xpZ2h0X2VuYWJsZShpbnRlbF9kcCwgYmxfZW5hYmxlKTsKPiAr Cj4gKwlkcm1fbW9kZXNldF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRl eCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGludGVsX2RwX2F1eF9iYWNr bGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNzCj4gKyAqIENhbGxlZCBvbiByZWFkIG9mIHRoZSBz eXNmcyBiYWNrbGlnaHQgaW50ZXJmYWNlIHRvIGdldCB0aGUgY3VycmVudCBiYWNrbGlnaHQKPiAr ICogdmFsdWUgZnJvbSB0aGUgQVVYIGNoYW5uZWwuCj4gKyAqLwo+ICtzdGF0aWMgaW50Cj4gK2lu dGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGln aHRfZGV2aWNlICpiZCkKPiArewo+ICsJc3RydWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29u bmVjdG9yID0gYmxfZ2V0X2RhdGEoYmQpOwo+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5kZXY7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2Rl ciA9IGludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVjdG9yKTsKPiArCXN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ICsJ aW50IHJldDsKPiArCj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9j aygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKPiArCj4gKwlpbnRl bF9kcC0+YXV4X2JhY2tsaWdodC5sZXZlbCA9IHJlYWRfYXV4X2JhY2tsaWdodF9sZXZlbChpbnRl bF9kcCk7Cj4gKwo+ICsJcmV0ID0gc2NhbGUoaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubGV2ZWws Cj4gKwkJCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0Lm1pbiwgaW50ZWxfZHAtPmF1eF9iYWNrbGln aHQubWF4LAo+ICsJCQkwLCBiZC0+cHJvcHMubWF4X2JyaWdodG5lc3MpOwo+ICsKPiArCWRybV9t b2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4KTsKPiArCj4g KwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtjb25zdCBzdHJ1Y3QgYmFja2xpZ2h0X29wcyBpbnRl bF9kcF9iYWNrbGlnaHRfZGV2aWNlX29wcyA9IHsKPiArCS51cGRhdGVfc3RhdHVzID0gaW50ZWxf ZHBfYXV4X2JhY2tsaWdodF9kZXZpY2VfdXBkYXRlX3N0YXR1cywKPiArCS5nZXRfYnJpZ2h0bmVz cyA9IGludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNzLAo+ICt9Owo+ ICsKPiArc3RhdGljIHZvaWQgc2V0dXBfYmFja2xpZ2h0X29wcyhzdHJ1Y3QgaW50ZWxfYmFja2xp Z2h0ICpiYWNrbGlnaHQpCj4gK3sKPiArCWJhY2tsaWdodC0+Ymxfb3BzID0gJmludGVsX2RwX2Jh Y2tsaWdodF9kZXZpY2Vfb3BzOwo+ICt9Cj4gKyNlbHNlCj4gKwo+ICtzdGF0aWMgdm9pZCBzZXR1 cF9iYWNrbGlnaHRfb3BzKHN0cnVjdCBpbnRlbF9iYWNrbGlnaHQgKmJhY2tsaWdodCkKPiArewo+ ICsKPiArfQo+ICsjZW5kaWYgLyogQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgKi8KPiAr Cj4gKwo+ICtzdGF0aWMgdm9pZCBfYXV4X2JhY2tsaWdodF9pbml0KHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApCj4gK3sKPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50 ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+YmFzZTsKPiArCj4gKwlpbnRlbF9kcC0+YXV4X2Jh Y2tsaWdodC5tYXggPSBNQVhfQVVYX0JMX0hXX0xFVkVMOwo+ICsJaW50ZWxfZHAtPmF1eF9iYWNr bGlnaHQubWluID0gTUlOX0FVWF9CTF9IV19MRVZFTDsKPiArCj4gKwlpbnRlbF9kcC0+YXV4X2Jh Y2tsaWdodC5sZXZlbCA9IHJlYWRfYXV4X2JhY2tsaWdodF9sZXZlbChpbnRlbF9kcCk7Cj4gKwlp bnRlbF9kcC0+YXV4X2JhY2tsaWdodC5lbmFibGVkID0gZ2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxl KCZpbnRlbF9kcC0+YXV4KTsKPiArCj4gKwlzZXR1cF9iYWNrbGlnaHRfb3BzKCZpbnRlbF9kcC0+ YXV4X2JhY2tsaWdodCk7Cj4gKwkvKgo+ICsJKiBGb3IgQVVYIGJhY2tsaWdodCwgdXNpbmcgZGlm ZmVyZW50IG5hbWUgZm9yIGVhY2ggRFAvZURQIGNvbm5lY3Rvcgo+ICsJKiB3aWxsIHByb2R1Y2Ug cmVnaXN0cmF0aW9uIG9mIG11bHRpcGxlIERQLUFVWCBiYWNrbGlnaHQgZGV2aWNlcyBpbgo+ICsJ KiB0aGUgZHJpdmVyLgo+ICsJKi8KPiArCXNucHJpbnRmKGludGVsX2RwLT5hdXhfYmFja2xpZ2h0 LmJsX25hbWUsIElOVEVMX0JBQ0tMSUdIVF9OQU1FX0xFTiwKPiArCQkJImludGVsX2F1eF9iYWNr bGlnaHQtJXMiLCBjb25uZWN0b3ItPm5hbWUpOwo+ICt9Cj4gKwo+ICsvKioKPiArICogQ2FsbGVk IG9uIGNvbm5lY3RvciBpbml0aWFsaXphdGlvbiB0byBjaGVjayBmb3IgYXV4IGJhY2tsaWdodCBj b250cm9sCj4gKyAqIGNhcGFiaWxpdHkgYW5kIGlmIHByZXNlbnQsIGluaXRpYWxpemUgaXQuCj4g KyAqLwo+ICsKPiArdm9pZCBpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2luaXQoc3RydWN0IGludGVs X2RwICppbnRlbF9kcCwKPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7 Cj4gKwlpZiAoIWlzX2F1eF9kaXNwbGF5X2NvbnRyb2xfY2FwYWJsZShjb25uZWN0b3IpKSB7Cj4g KwkJRFJNX0RFQlVHX0tNUygiQmFja2xpZ2h0IGNvbnRyb2wgb3ZlciBBVVggbm90IHN1cHBvcnRl ZFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQucHJl c2VudCA9IHRydWU7Cj4gKwo+ICsJX2F1eF9iYWNrbGlnaHRfaW5pdChpbnRlbF9kcCk7Cj4gKwo+ ICsJRFJNX0RFQlVHX0tNUygiQ29ubmVjdG9yICVzIGJhY2tsaWdodCAlcywgYnJpZ2h0bmVzcyAl dS8ldVxuIiwKPiArCQkJY29ubmVjdG9yLT5uYW1lLAo+ICsJCQlpbnRlbF9kcC0+YXV4X2JhY2ts aWdodC5lbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwKPiArCQkJaW50ZWxfZHAtPmF1 eF9iYWNrbGlnaHQubGV2ZWwsIGludGVsX2RwLT5hdXhfYmFja2xpZ2h0Lm1heCk7Cj4gK30KPiAr LyoqCj4gKyAqIENsZWFudXAgYXV4IGJhY2tsaWdodCBjb250cm9sIGRhdGEKPiArICovCj4gK3Zv aWQgaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9kZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpj b25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0g aW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3IpOwo+ICsJc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgmaW50ZWxfZW5jb2Rlci0+YmFzZSk7Cj4gKwo+ICsJ aW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQucHJlc2VudCA9IGZhbHNlOwo+ICt9Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0NjQ4NGU0Li40MzhhODdiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTYzLDI2ICsxNjMsMzEgQEAgc3RydWN0IGludGVsX2VuY29k ZXIgewo+ICAJZW51bSBocGRfcGluIGhwZF9waW47Cj4gIH07Cj4gIAo+ICsjZGVmaW5lIElOVEVM X0JBQ0tMSUdIVF9OQU1FX0xFTiA1MAo+ICtzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0IHsKPiArCWJv b2wgcHJlc2VudDsKPiArCXUzMiBsZXZlbDsKPiArCXUzMiBtaW47Cj4gKwl1MzIgbWF4Owo+ICsJ Ym9vbCBlbmFibGVkOwo+ICsJYm9vbCBjb21iaW5hdGlvbl9tb2RlOwkvKiBnZW4gMi80IG9ubHkg Ki8KPiArCWJvb2wgYWN0aXZlX2xvd19wd207Cj4gKwo+ICsJLyogUFdNIGNoaXAgKi8KPiArCXN0 cnVjdCBwd21fZGV2aWNlICpwd207Cj4gKwo+ICsJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmRl dmljZTsKPiArCWNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzICpibF9vcHM7Cj4gKwljaGFyIGJs X25hbWVbSU5URUxfQkFDS0xJR0hUX05BTUVfTEVOXTsKPiArCWJvb2wgdXNlX2xzYl9yZWc7CS8q IGF1eCBiYWNrbGlnaHQgb25seSAqLwo+ICt9Owo+ICsKPiAgc3RydWN0IGludGVsX3BhbmVsIHsK PiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpmaXhlZF9tb2RlOwo+ICAJc3RydWN0IGRybV9k aXNwbGF5X21vZGUgKmRvd25jbG9ja19tb2RlOwo+ICAJaW50IGZpdHRpbmdfbW9kZTsKPiAgCj4g LQkvKiBiYWNrbGlnaHQgKi8KPiAtCXN0cnVjdCB7Cj4gLQkJYm9vbCBwcmVzZW50Owo+IC0JCXUz MiBsZXZlbDsKPiAtCQl1MzIgbWluOwo+IC0JCXUzMiBtYXg7Cj4gLQkJYm9vbCBlbmFibGVkOwo+ IC0JCWJvb2wgY29tYmluYXRpb25fbW9kZTsJLyogZ2VuIDIvNCBvbmx5ICovCj4gLQkJYm9vbCBh Y3RpdmVfbG93X3B3bTsKPiAtCj4gLQkJLyogUFdNIGNoaXAgKi8KPiAtCQlzdHJ1Y3QgcHdtX2Rl dmljZSAqcHdtOwo+IC0KPiAtCQlzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqZGV2aWNlOwo+IC0J fSBiYWNrbGlnaHQ7Cj4gKwlzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0IGJhY2tsaWdodDsKPiAgCj4g IAl2b2lkICgqYmFja2xpZ2h0X3Bvd2VyKShzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICosIGJvb2wg ZW5hYmxlKTsKPiAgfTsKPiBAQCAtNzcxLDYgKzc3Niw4IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4g IAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwo+ICAJdW5zaWduZWQgbG9uZyBj b21wbGlhbmNlX3Rlc3RfZGF0YTsKPiAgCWJvb2wgY29tcGxpYW5jZV90ZXN0X2FjdGl2ZTsKPiAr Cj4gKwlzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0IGF1eF9iYWNrbGlnaHQ7Cj4gIH07Cj4gIAo+ICBz dHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPiBAQCAtMTIxMCw2ICsxMjE3LDExIEBAIHZvaWQg aW50ZWxfZWRwX2RycnNfaW52YWxpZGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXVu c2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ICB2b2lkIGludGVsX2VkcF9kcnJzX2ZsdXNoKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ICB2b2lk IGhzd19kcF9zZXRfZGRpX3BsbF9zZWwoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnKTsKPiArYm9vbCBpbnRlbF9kcF9nZXRfZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KTsKPiArc3NpemVfdCBpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAq YXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ICsJCXZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUp Owo+ICt1aW50MzJfdCBzY2FsZSh1aW50MzJfdCBzb3VyY2VfdmFsLCB1aW50MzJfdCBzb3VyY2Vf bWluLCB1aW50MzJfdCBzb3VyY2VfbWF4LAo+ICsJCXVpbnQzMl90IHRhcmdldF9taW4sIHVpbnQz Ml90IHRhcmdldF9tYXgpOwo+ICAKPiAgLyogaW50ZWxfZHBfbXN0LmMgKi8KPiAgaW50IGludGVs X2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGln X3BvcnQsIGludCBjb25uX2lkKTsKPiBAQCAtMTMyOCw2ICsxMzQwLDEwIEBAIGV4dGVybiBzdHJ1 Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqaW50ZWxfZmluZF9wYW5lbF9kb3duY2xvY2soCj4gIHZvaWQg aW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lk IGludGVsX2JhY2tsaWdodF91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAK PiArLyogaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwuYyAqLwo+ICt2b2lkIGludGVsX2RwX2F1 eF9iYWNrbGlnaHRfaW5pdChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsKPiArdm9pZCBpbnRlbF9kcF9hdXhfYmFja2xpZ2h0 X2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gIAo+ICAvKiBpbnRl bF9wc3IuYyAqLwo+ICB2b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRl bF9kcCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gaW5kZXggMjAzNDQzOGEuLmM2 MWZiOTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKPiBAQCAtNDEwLDcgKzQx MCw3IEBAIGludGVsX3BhbmVsX2RldGVjdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgKiBS ZXR1cm4gQHNvdXJjZV92YWwgaW4gcmFuZ2UgW0Bzb3VyY2VfbWluLi5Ac291cmNlX21heF0gc2Nh bGVkIHRvIHJhbmdlCj4gICAqIFtAdGFyZ2V0X21pbi4uQHRhcmdldF9tYXhdLgo+ICAgKi8KPiAt c3RhdGljIHVpbnQzMl90IHNjYWxlKHVpbnQzMl90IHNvdXJjZV92YWwsCj4gK3VpbnQzMl90IHNj YWxlKHVpbnQzMl90IHNvdXJjZV92YWwsCj4gIAkJICAgICAgdWludDMyX3Qgc291cmNlX21pbiwg dWludDMyX3Qgc291cmNlX21heCwKPiAgCQkgICAgICB1aW50MzJfdCB0YXJnZXRfbWluLCB1aW50 MzJfdCB0YXJnZXRfbWF4KQo+ICB7Cj4gQEAgLTExNTEsMTggKzExNTEsMjMgQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzIGludGVsX2JhY2tsaWdodF9kZXZpY2Vfb3BzID0gewo+ ICAJLmdldF9icmlnaHRuZXNzID0gaW50ZWxfYmFja2xpZ2h0X2RldmljZV9nZXRfYnJpZ2h0bmVz cywKPiAgfTsKPiAgCj4gLXN0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rl cihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3N0YXRpYyB2b2lkIHNldHVw X2JhY2tsaWdodF9vcHMoc3RydWN0IGludGVsX2JhY2tsaWdodCAqYmFja2xpZ2h0KQo+ICt7Cj4g KwliYWNrbGlnaHQtPmJsX29wcyA9ICZpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX29wczsKPiArfQo+ ICsKPiArc3RhdGljIGludCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiArCQlzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0ICpi YWNrbGlnaHQpCgpBZ2FpbiwgQUZBSUNUIG9ubHkgZURQIGNhbiBoYXZlIHRoaXMsIHNvIGludGVs X3BhbmVsIGlzIHRoZSBwbGFjZSB0bwprZWVwIGludGVsX2JhY2tsaWdodCwgYW5kIHlvdSBkb24n dCBoYXZlIHRvIG1vZGlmeSB0aGUgc2lnbmF0dXJlIG9mIHRoaXMKZnVuY3Rpb24uCgpFdmVuIGlm IHJlZ3VsYXIgRFAgc3VwcG9ydHMgdGhpcywgSSdkIGdvIHdpdGggYSBjbGVhbiBpbXBsZW1lbnRh dGlvbiBvbgplRFAgb25seSBmaXJzdCwgZ2V0dGluZyB0aGF0IHdvcmtpbmcgYW5kIHJpZ2h0LCBh bmQgdGhlIGNvbnNpZGVyaW5nIHRoZQppbXBsaWNhdGlvbnMgb2YgaGF2aW5nIGJhY2tsaWdodCBk ZXZpY2VzIGZvciBleHRlcm5hbCBkaXNwbGF5cy4KCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9wYW5l bCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAgCXN0cnVjdCBiYWNrbGlnaHRfcHJvcGVy dGllcyBwcm9wczsKPiAgCj4gLQlpZiAoV0FSTl9PTihwYW5lbC0+YmFja2xpZ2h0LmRldmljZSkp Cj4gKwlpZiAoV0FSTl9PTihiYWNrbGlnaHQtPmRldmljZSkpCj4gIAkJcmV0dXJuIC1FTk9ERVY7 Cj4gIAo+IC0JaWYgKCFwYW5lbC0+YmFja2xpZ2h0LnByZXNlbnQpCj4gKwlpZiAoIWJhY2tsaWdo dC0+cHJlc2VudCkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlXQVJOX09OKHBhbmVsLT5iYWNrbGln aHQubWF4ID09IDApOwo+ICsJV0FSTl9PTihiYWNrbGlnaHQtPm1heCA9PSAwKTsKPiAgCj4gIAlt ZW1zZXQoJnByb3BzLCAwLCBzaXplb2YocHJvcHMpKTsKPiAgCXByb3BzLnR5cGUgPSBCQUNLTElH SFRfUkFXOwo+IEBAIC0xMTcxLDMwICsxMTc2LDI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfYmFja2xp Z2h0X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IpCj4g IAkgKiBOb3RlOiBFdmVyeXRoaW5nIHNob3VsZCB3b3JrIGV2ZW4gaWYgdGhlIGJhY2tsaWdodCBk ZXZpY2UgbWF4Cj4gIAkgKiBwcmVzZW50ZWQgdG8gdGhlIHVzZXJzcGFjZSBpcyBhcmJpdHJhcmls eSBjaG9zZW4uCj4gIAkgKi8KPiAtCXByb3BzLm1heF9icmlnaHRuZXNzID0gcGFuZWwtPmJhY2ts aWdodC5tYXg7Cj4gLQlwcm9wcy5icmlnaHRuZXNzID0gc2NhbGVfaHdfdG9fdXNlcihjb25uZWN0 b3IsCj4gLQkJCQkJICAgIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwsCj4gLQkJCQkJICAgIHByb3Bz Lm1heF9icmlnaHRuZXNzKTsKPiArCXByb3BzLm1heF9icmlnaHRuZXNzID0gYmFja2xpZ2h0LT5t YXg7Cj4gKwlwcm9wcy5icmlnaHRuZXNzID0gc2NhbGUoYmFja2xpZ2h0LT5sZXZlbCwgYmFja2xp Z2h0LT5taW4sIGJhY2tsaWdodC0+bWF4LAo+ICsJCSAgICAgMCwgcHJvcHMubWF4X2JyaWdodG5l c3MpOwo+ICAKPiAtCWlmIChwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQpCj4gKwlpZiAoYmFja2xp Z2h0LT5lbmFibGVkKQo+ICAJCXByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsKPiAgCWVs c2UKPiAgCQlwcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiAgCj4gLQkvKgo+IC0J ICogTm90ZTogdXNpbmcgdGhlIHNhbWUgbmFtZSBpbmRlcGVuZGVudCBvZiB0aGUgY29ubmVjdG9y IHByZXZlbnRzCj4gLQkgKiByZWdpc3RyYXRpb24gb2YgbXVsdGlwbGUgYmFja2xpZ2h0IGRldmlj ZXMgaW4gdGhlIGRyaXZlci4KPiAtCSAqLwo+IC0JcGFuZWwtPmJhY2tsaWdodC5kZXZpY2UgPQo+ IC0JCWJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoImludGVsX2JhY2tsaWdodCIsCj4gKwliYWNr bGlnaHQtPmRldmljZSA9Cj4gKwkJYmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcihiYWNrbGlnaHQt PmJsX25hbWUsCj4gIAkJCQkJICBjb25uZWN0b3ItPmJhc2Uua2RldiwKPiAgCQkJCQkgIGNvbm5l Y3RvciwKPiAtCQkJCQkgICZpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX29wcywgJnByb3BzKTsKPiAr CQkJCQkgIGJhY2tsaWdodC0+Ymxfb3BzLCAmcHJvcHMpOwo+ICAKPiAtCWlmIChJU19FUlIocGFu ZWwtPmJhY2tsaWdodC5kZXZpY2UpKSB7Cj4gKwlpZiAoSVNfRVJSKGJhY2tsaWdodC0+ZGV2aWNl KSkgewo+ICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlZ2lzdGVyIGJhY2tsaWdodDogJWxkXG4i LAo+IC0JCQkgIFBUUl9FUlIocGFuZWwtPmJhY2tsaWdodC5kZXZpY2UpKTsKPiAtCQlwYW5lbC0+ YmFja2xpZ2h0LmRldmljZSA9IE5VTEw7Cj4gKwkJCSAgUFRSX0VSUihiYWNrbGlnaHQtPmRldmlj ZSkpOwo+ICsJCWJhY2tsaWdodC0+ZGV2aWNlID0gTlVMTDsKPiAgCQlyZXR1cm4gLUVOT0RFVjsK PiAgCX0KPiAgCj4gQEAgLTEyMDQsMjEgKzEyMDQsMjUgQEAgc3RhdGljIGludCBpbnRlbF9iYWNr bGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikK PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2 aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0 aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Jh Y2tsaWdodCAqYmFja2xpZ2h0KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGFuZWwgKnBhbmVsID0g JmNvbm5lY3Rvci0+cGFuZWw7Cj4gLQo+IC0JaWYgKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKSB7 Cj4gLQkJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNl KTsKPiAtCQlwYW5lbC0+YmFja2xpZ2h0LmRldmljZSA9IE5VTEw7Cj4gKwlpZiAoYmFja2xpZ2h0 LT5kZXZpY2UpIHsKPiArCQliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoYmFja2xpZ2h0LT5k ZXZpY2UpOwo+ICsJCWJhY2tsaWdodC0+ZGV2aWNlID0gTlVMTDsKPiAgCX0KPiAgfQo+ICsKPiAg I2Vsc2UgLyogQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgKi8KPiAtc3RhdGljIGludCBp bnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiArCj4gK3N0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rl cihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJc3RydWN0IGludGVsX2Jh Y2tsaWdodCAqYmFja2xpZ2h0KQo+ICB7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IC1zdGF0aWMgdm9p ZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVn aXN0ZXIoc3RydWN0IGludGVsX2JhY2tsaWdodCAqYmFja2xpZ2h0KQo+ICt7Cj4gK30KPiArc3Rh dGljIHZvaWQgc2V0dXBfYmFja2xpZ2h0X29wcyhzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0ICpiYWNr bGlnaHQpCj4gIHsKPiAgfQo+ICAjZW5kaWYgLyogQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJ Q0UgKi8KPiBAQCAtMTY1Miw2ICsxNjU2LDE3IEBAIGludCBpbnRlbF9wYW5lbF9zZXR1cF9iYWNr bGlnaHQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBlIHBpcGUpCj4g IAo+ICAJcGFuZWwtPmJhY2tsaWdodC5wcmVzZW50ID0gdHJ1ZTsKPiAgCj4gKwlzZXR1cF9iYWNr bGlnaHRfb3BzKCZwYW5lbC0+YmFja2xpZ2h0KTsKPiArCj4gKwkvKgo+ICsJICogTm90ZTogRm9y IGludGVybmFsIGRpc3BsYXlzLCB1c2luZyB0aGUgc2FtZSBuYW1lIGluZGVwZW5kZW50IG9mIHRo ZQo+ICsJICogY29ubmVjdG9yIHByZXZlbnRzIHJlZ2lzdHJhdGlvbiBvZiBtdWx0aXBsZSBiYWNr bGlnaHQgZGV2aWNlcyBpbiB0aGUKPiArCSAqIGRyaXZlci4KPiArCSAqLwo+ICsJc3RybmNweShw YW5lbC0+YmFja2xpZ2h0LmJsX25hbWUsICJpbnRlbF9iYWNrbGlnaHQiLAo+ICsJCQlJTlRFTF9C QUNLTElHSFRfTkFNRV9MRU4pOwo+ICsJcGFuZWwtPmJhY2tsaWdodC5ibF9uYW1lW0lOVEVMX0JB Q0tMSUdIVF9OQU1FX0xFTiAtIDFdID0gJ1wwJzsKPiArCj4gIAlEUk1fREVCVUdfS01TKCJDb25u ZWN0b3IgJXMgYmFja2xpZ2h0IGluaXRpYWxpemVkLCAlcywgYnJpZ2h0bmVzcyAldS8ldVxuIiwK PiAgCQkgICAgICBjb25uZWN0b3ItPm5hbWUsCj4gIAkJICAgICAgcGFuZWwtPmJhY2tsaWdodC5l bmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwKPiBAQCAtMTc1NywxNiArMTc3Miw0MiBA QCB2b2lkIGludGVsX3BhbmVsX2Zpbmkoc3RydWN0IGludGVsX3BhbmVsICpwYW5lbCkKPiAgCj4g IHZvaWQgaW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4g IHsKPiAtCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0cnVjdCBpbnRl bF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGludGVsX2Nvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsCj4gKwkJ CWJhc2UuaGVhZCkgewo+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50 ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsKPiArCQlpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lz dGVyKGludGVsX2Nvbm5lY3RvciwKPiArCQkJCSZpbnRlbF9jb25uZWN0b3ItPnBhbmVsLmJhY2ts aWdodCk7Cj4gKwo+ICsJCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09IERSTV9NT0RF X0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCB8fAo+ICsJCQkJY29ubmVjdG9yLT5jb25uZWN0b3JfdHlw ZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKSB7Cj4gKwkJCXN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyID0gaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3IpOwo+ICsJCQlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsK PiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcu Y29ubmVjdG9yX2xpc3QsIGJhc2UuaGVhZCkKPiAtCQlpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3Jl Z2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwkJCWludGVsX2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIo aW50ZWxfY29ubmVjdG9yLAo+ICsJCQkJCSZpbnRlbF9kcC0+YXV4X2JhY2tsaWdodCk7Cj4gKwkJ fQo+ICsJfQo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2JhY2tsaWdodF91bnJlZ2lzdGVyKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5l Y3RvcjsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiArCj4g KwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX2Nvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcu Y29ubmVjdG9yX2xpc3QsCj4gKwkJCWJhc2UuaGVhZCkgewo+ICsJCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsKPiArCQlpbnRlbF9i YWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoJmludGVsX2Nvbm5lY3Rvci0+cGFuZWwuYmFja2xp Z2h0KTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9j b25maWcuY29ubmVjdG9yX2xpc3QsIGJhc2UuaGVhZCkKPiAtCQlpbnRlbF9iYWNrbGlnaHRfZGV2 aWNlX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCQlpZiAoY29ubmVjdG9yLT5jb25uZWN0b3Jf dHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQgfHwKPiArCQkJCWNvbm5lY3Rv ci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkgewo+ICsJCQlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IGludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVj dG9yKTsKPiArCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgm ZW5jb2Rlci0+YmFzZSk7Cj4gKwo+ICsJCQlpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0 ZXIoJmludGVsX2RwLT5hdXhfYmFja2xpZ2h0KTsKPiArCQl9Cj4gKwl9Cj4gIH0KPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2RwX2hl bHBlci5oCj4gaW5kZXggOGM1MmQwZWYxLi41ODI2MTgzIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUv ZHJtL2RybV9kcF9oZWxwZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+ IEBAIC00NTUsMTYgKzQ1NSwyMiBAQAo+ICAjIGRlZmluZSBEUF9FRFBfMTQJCQkgICAgMHgwMwo+ ICAKPiAgI2RlZmluZSBEUF9FRFBfR0VORVJBTF9DQVBfMQkJICAgIDB4NzAxCj4gKyNkZWZpbmUg RFBfRURQX1RDT05fQkFDS0xJR0hUX0FESlVTVE1FTlRfQ0FQQUJMRSAgICAgICgxIDw8IDApCj4g KyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9BVVhfRU5BQkxFX0NBUEFCTEUgICAgICAgICAgICgx IDw8IDIpCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9CQUNLTElHSFRfQURKVVNUTUVOVF9DQVAgICAg IDB4NzAyCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX0FVWF9TRVRfQ0FQ QUJMRSAgICgxIDw8IDEpCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX0JZ VEVfQ09VTlQgICAgICAgICgxIDw8IDIpCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9HRU5FUkFMX0NB UF8yCQkgICAgMHg3MDMKPiAgCj4gICNkZWZpbmUgRFBfRURQX0dFTkVSQUxfQ0FQXzMJCSAgICAw eDcwNCAgICAvKiBlRFAgMS40ICovCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9ESVNQTEFZX0NPTlRS T0xfUkVHSVNURVIgICAgIDB4NzIwCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9FTkFCTEUg ICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDApCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9CQUNL TElHSFRfTU9ERV9TRVRfUkVHSVNURVIgIDB4NzIxCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdI VF9CUklHSFRORVNTX0NUTF9NT0RFX0RQQ0RfTUFTSyAweDIKPiAgCj4gICNkZWZpbmUgRFBfRURQ X0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiAgICAgMHg3MjIKPiAgI2RlZmluZSBEUF9FRFBfQkFD S0xJR0hUX0JSSUdIVE5FU1NfTFNCICAgICAweDcyMwo+IC0tIAo+IDEuOS4zCj4KPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdmeCBtYWls aW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gCkphbmkgTmlr dWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5IENlbnRlcgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=