From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Adebisi, YetundeX" Subject: Re: [PATCH] drm/i915: Backlight Control over AUX feature Date: Mon, 14 Sep 2015 16:29:05 +0000 Message-ID: References: <1441894302-28475-1-git-send-email-yetundex.adebisi@intel.com> <20150910152054.GC2767@phenom.ffwll.local> 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 A824D6E23E for ; Mon, 14 Sep 2015 09:29:08 -0700 (PDT) In-Reply-To: <20150910152054.GC2767@phenom.ffwll.local> 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: Daniel Vetter Cc: "Intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org Cgo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gRnJvbTogRGFuaWVsIFZldHRlciBbbWFp bHRvOmRhbmllbC52ZXR0ZXJAZmZ3bGwuY2hdIE9uIEJlaGFsZiBPZiBEYW5pZWwKPiBWZXR0ZXIK PiBTZW50OiBUaHVyc2RheSwgU2VwdGVtYmVyIDEwLCAyMDE1IDQ6MjEgUE0KPiBUbzogQWRlYmlz aSwgWWV0dW5kZVgKPiBDYzogSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IFN1Ympl Y3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFUQ0hdIGRybS9pOTE1OiBCYWNrbGlnaHQgQ29udHJvbCBv dmVyIEFVWCBmZWF0dXJlCj4gCj4gT24gVGh1LCBTZXAgMTAsIDIwMTUgYXQgMDM6MTE6NDJQTSAr MDEwMCwgWWV0dW5kZSBBZGViaXNpIHdyb3RlOgo+ID4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQg Zm9yIEJhY2tsaWdodCBDb250cm9sIG92ZXIgdGhlIEFVWCBjaGFubmVsIGZvcgo+ID4gRFAgYW5k IGVEUCBjb25uZWN0b3JzLiBJdCBhbGxvd3MgdGhlIGJhY2tsaWdodCBvZiBEUCBhbmQgZURQIGNv bm5lY3RlZAo+ID4gZGlzcGxheXMgdG8gYmUgY29udHJvbGxlZCBmcm9tIHNvZnR3YXJlIHVzaW5n IHN5c2ZzIGludGVyZmFjZS4KPiA+Cj4gPiBUaGUgY29kZSBmaXJzdCBjaGVja3MgaWYgdGhlIERQ L2VEUCBkaXNwbGF5IGhhcyB0aGUgY2FwYWJpbGl0eSBmb3IKPiA+IGJhY2tsaWdodCBjb250cm9s IGJ5IHJlYWRpbmcgRGlzcGxheSBDb250cm9sIERQQ0QgcmVnaXN0ZXJzIGFzIGRlZmluZWQKPiA+ IGJ5IHRoZSBlRFAgdjEuMyBWRVNBIHNwZWNzLgo+ID4gSXQgdGhlbiByZWdpc3RlcnMgYSAvc3lz L2JhY2tsaWdodCBkZXZpY2UgaWYgYmFja2xpZ2h0IGNvbnRyb2wgaXMKPiA+IHN1cHBvcnRlZC4K PiA+Cj4gPiBJdCBwcm92aWRlcyBmdW5jdGlvbnMgdG8KPiA+IC0gUmVnaXN0ZXIgYSBzeXNmcyBi YWNrbGlnaHQgaW50ZXJmYWNlIGlmIHRoZSBlRFAvRFAgY29ubm5lY3RvciBpcwo+ID4gY2FwYWJs ZSBvZiBhdXggYmFja2xpZ2h0IGNvbnRyb2wKPiA+IC0gUmVhZCB0aGUgY3VycmVudCBiYWNrbGln aHQgbGV2ZWwgZnJvbSBEUENEIHJlZ2lzdGVyIDB4NzIyCj4gPiAtIENoYW5nZSB0aGUgYmFja2xp Z2h0IGxldmVsCj4gPiAtIERpc2FibGUvRW5hYmxlIHRoZSBiYWNrbGlnaHQgYnkgd3JpdGluZyB0 byBEUENEIHJlZ2lzdGVyIDB4NzIwCj4gPgo+ID4gVXNhZ2U6Cj4gPiBCYWNrbGlnaHQgbGV2ZWwg cmFuZ2VzIGZyb20gMChtaW4pLTI0MChtYXgpIDB4MC0weEYwCj4gPiAtIFRvIGNoYW5nZSBCYWNr bGlnaHQgbGV2ZWwgdG8gNTAKPiA+IGVjaG8gNTAgPiAvc3lzL2NsYXNzL2JhY2tsaWdodC9pbnRl bF9hdXhfYmFja2xpZ2h0LURQLTMvYnJpZ2h0bmVzcwo+ID4KPiA+IC0gVG8gZGlzYWJsZSBiYWNr bGlnaHQKPiA+IGVjaG8gNCA+IC9zeXMvY2xhc3MvYmFja2xpZ2h0L2ludGVsX2F1eF9iYWNrbGln aHQtRFAtMy9ibF9wb3dlcgo+ID4gLSBUbyBlbmFibGUgYmFja2xpZ2h0Cj4gPiBlY2hvIDAgPiAv c3lzL2NsYXNzL2JhY2tsaWdodC9pbnRlbF9hdXhfYmFja2xpZ2h0LURQLTMvYmxfcG93ZXIKPiA+ Cj4gPiB2MjoKPiA+IC0gQ29kZSBjbGVhbiB1cAo+ID4gLSBBdm9pZCBjb2RlIGR1cGxpY2F0aW9u IGJ5IG1lcmdpbmcgdGhlIGJhY2tsaWdodCBkZXZpY2UKPiA+IHJlZ2lzdGVyL3VucmVnaXN0ZXIg ZnVuY3Rpb24gd2l0aCB0aGUgZXhpc3Rpbmcgb25lIGZvciBpbnRlcm5hbAo+ID4gZGlzcGxheXMK PiA+Cj4gPiB2MzoKPiA+IEZ1cnRoZXIgY2hhbmdlcyB0byByZS11c2UgZXhpc3RpbmcgY29kZSBi eSBhZGRpbmcgYmxfbmFtZSBhbmQKPiA+IGJhY2tsaWdodF9vcHMgdmFyaWFibGVzIHRvIHRoZSBp bnRlbF9iYWNrbGlnaHQgc3RydWN0dXJlLgo+ID4KPiA+IENjOiBCb2IgUGFhdXdlIDxib2Iuai5w YWF1d2VAaW50ZWwuY29tPgo+ID4gU2lnbmVkLW9mZi1ieTogWWV0dW5kZSBBZGViaXNpIDx5ZXR1 bmRleC5hZGViaXNpQGludGVsLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L01ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICAgICAgICAgfCAgIDEgKwo+ID4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KPiA+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2N0bC5jIHwgMzI0Cj4g KysrKysrKysrKysrKysrKysrKysrKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oICAgICAgICAgICAgICAgICAgfCAgNDYgKystCj4gPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcGFuZWwuYyAgICAgICAgICAgICAgICB8IDExMSArKysrKy0tLQo+ID4gIGluY2x1ZGUv ZHJtL2RybV9kcF9oZWxwZXIuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwo+ID4gIDcg ZmlsZXMgY2hhbmdlZCwgNDQzIGluc2VydGlvbnMoKyksIDUyIGRlbGV0aW9ucygtKSAgY3JlYXRl IG1vZGUKPiA+IDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcF9hdXhfYmFja2xp Z2h0X2N0bC5jCj4gPgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlIGluZGV4IDQ0ZDI5MGEuLjI2 MGJlMDMgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiA+IEBAIC03Nyw2ICs3Nyw3IEBA IGk5MTUteSArPSBkdm9fY2g3MDE3Lm8gXAo+ID4gIAkgIGR2b190ZnA0MTAubyBcCj4gPiAgCSAg aW50ZWxfY3J0Lm8gXAo+ID4gIAkgIGludGVsX2RkaS5vIFwKPiA+ICsJICBpbnRlbF9kcF9hdXhf YmFja2xpZ2h0X2N0bC5vIFwKPiAKPiBTaG91bGRuJ3Qgd2UgaGF2ZSBtb3N0IG9mIHRoaXMgaW1w bGVtZW50ZWQgYXMgYSBnZW5lcmljIGhlbHBlciBvbiB0b3Agb2YKPiB0aGUgY29yZSBkcm1fZHBf YXV4IGFic3RyYWN0aW9uIGluIHRoZSBkcm1fZHBfaGVscGVyLmMgY29kZT8gQW5kIGRyaXZlcnMK PiB3b3VsZCB0aGVuIGp1c3QgY2FsbCB0aGUgb3ZlcmFsbCBiYWNrbGlnaHRfcmVnaXN0ZXIvdW5y ZWdpc3RlciBmdW5jdGlvbnMKPiBwcm92aWRlZCBieSB0aG9zZSBoZWxwZXJzLgpJIGNhbiBzZWUg dGhhdCBpdCBtYWtlcyBzZW5zZSB0byBhZGQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyBh bmQgc2V0dGluZyB0aGUgYmFja2xpZ2h0IHZhbHVlcy4gCgpDYW4geW91IHBsZWFzZSBjbGFyaWZ5 IHdoYXQgeW91IG1lYW4gYWJvdXQgdGhlIGJhY2tsaWdodF9yZWdpc3Rlci91bnJlZ2lzdGVyIGZ1 bmN0aW9ucz8KCkFwb2xvZ2llcyBpZiB0aGlzIGlzIG9idmlvdXMuCgpUaGFuayB5b3UuCj4gCj4g VGhlIG90aGVyIGJpdCBmcm9tIG15IGhpZ2gtbGV2ZWwgcmV2aWV3IGlzIHRoYXQgdGhlIGtlcm5l bGRvYyBuZWVkcyBtb3JlCj4gcG9saXNoIGFuZCBuZWVkcyB0byBiZSBwdWxsZWQgaW50byBkcm0u dG1wbCBhdCBhIHN1aXRhYmxlIHBsYWNlLgo+IC1EYW5pZWwKPiAKPiA+ICAJICBpbnRlbF9kcF9t c3QubyBcCj4gPiAgCSAgaW50ZWxfZHAubyBcCj4gPiAgCSAgaW50ZWxfZHNpLm8gXAo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+IGluZGV4IGU2MjlhMWIuLjI5Mzc0 MzIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ID4gQEAgLTE1 MzQwLDYgKzE1MzQwLDcgQEAgdm9pZCBpbnRlbF9jb25uZWN0b3JfdW5yZWdpc3RlcihzdHJ1Y3QK PiBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcikKPiA+ICAJc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gPgo+ID4gIAlpbnRl bF9wYW5lbF9kZXN0cm95X2JhY2tsaWdodChjb25uZWN0b3IpOwo+ID4gKwlpbnRlbF9kcF9hdXhf YmFja2xpZ2h0X2Rlc3Ryb3koY29ubmVjdG9yKTsKPiA+ICAJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lz dGVyKGNvbm5lY3Rvcik7Cj4gPiAgfQo+ID4KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcC5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMg aW5kZXggNDVhYjI1ZS4uOTc1YTgzNiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMKPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMK PiA+IEBAIC0zMDE4LDcgKzMwMTgsNyBAQCBzdGF0aWMgdm9pZCBjaHZfZHBfcG9zdF9wbGxfZGlz YWJsZShzdHJ1Y3QKPiBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQo+ID4gICAqIFNpbmtzIGFyZSAq c3VwcG9zZWQqIHRvIGNvbWUgdXAgd2l0aGluIDFtcyBmcm9tIGFuIG9mZiBzdGF0ZSwgYnV0Cj4g d2UncmUgYWxzbwo+ID4gICAqIHN1cHBvc2VkIHRvIHJldHJ5IDMgdGltZXMgcGVyIHRoZSBzcGVj Lgo+ID4gICAqLwo+ID4gLXN0YXRpYyBzc2l6ZV90Cj4gPiArc3NpemVfdAo+ID4gIGludGVsX2Rw X2RwY2RfcmVhZF93YWtlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsIHVuc2lnbmVkIGludCBvZmZz ZXQsCj4gPiAgCQkJdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKPiA+ICB7Cj4gPiBAQCAtMzk2 OSw3ICszOTY5LDcgQEAgaW50ZWxfZHBfbGlua19kb3duKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gPiAgCW1zbGVlcChpbnRlbF9kcC0+cGFuZWxfcG93ZXJfZG93bl9kZWxheSk7Cj4gPiAg fQo+ID4KPiA+IC1zdGF0aWMgYm9vbAo+ID4gK2Jvb2wKPiA+ICBpbnRlbF9kcF9nZXRfZHBjZChz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKSAgewo+ID4gIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0ICpkaWdfcG9ydCA9IGRwX3RvX2RpZ19wb3J0KGludGVsX2RwKTsgQEAKPiA+IC02MTI1LDYg KzYxMjUsOCBAQCBpbnRlbF9kcF9pbml0X2Nvbm5lY3RvcihzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9w b3J0Cj4gKmludGVsX2RpZ19wb3J0LAo+ID4gIAkJcmV0dXJuIGZhbHNlOwo+ID4gIAl9Cj4gPgo+ ID4gKwlpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2luaXQoaW50ZWxfZHAsIGNvbm5lY3Rvcik7Cj4g PiArCj4gPiAgCWludGVsX2RwX2FkZF9wcm9wZXJ0aWVzKGludGVsX2RwLCBjb25uZWN0b3IpOwo+ ID4KPiA+ICAJLyogRm9yIEc0WCBkZXNrdG9wIGNoaXAsIFBFR19CQU5EX0dBUF9EQVRBIDM6MCBt dXN0IGZpcnN0IGJlCj4gd3JpdHRlbgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfY3RsLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQK PiA+IGluZGV4IDAwMDAwMDAuLmE4ZWY5NjAKPiA+IC0tLSAvZGV2L251bGwKPiA+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfY3RsLmMKPiA+IEBAIC0w LDAgKzEsMzI0IEBACj4gPiArLyoKPiA+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMTUgSW50ZWwgQ29y cG9yYXRpb24KPiA+ICsgKgo+ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZy ZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uCj4gPiArb2J0YWluaW5nIGEKPiA+ICsgKiBjb3B5 IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhl Cj4gPiArIlNvZnR3YXJlIiksCj4gPiArICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91 dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQKPiA+ICtsaW1pdGF0aW9uCj4gPiArICog dGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1 dGUsCj4gPiArc3VibGljZW5zZSwKPiA+ICsgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbQo+ID4gK3RoZQo+ID4gKyAqIFNv ZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6Cj4gPiArICoKPiA+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQg dGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nCj4gPiArdGhlIG5leHQKPiA+ICsgKiBw YXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwg cG9ydGlvbnMKPiA+ICtvZiB0aGUKPiA+ICsgKiBTb2Z0d2FyZS4KPiA+ICsgKgo+ID4gKyAqIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWQo+ IEtJTkQsCj4gPiArRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKPiA+ICtNRVJDSEFOVEFCSUxJVFksCj4gPiAr ICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4g IElOCj4gTk8gRVZFTlQKPiA+ICtTSEFMTAo+ID4gKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdI VCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAo+IERBTUFHRVMKPiA+ICtPUiBPVEhF Ugo+ID4gKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IKPiBPVEhFUldJU0UsCj4gPiArQVJJU0lORwo+ID4gKyAqIEZST00sIE9VVCBPRiBPUiBJ TiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UKPiBPUgo+ID4gK09USEVS IERFQUxJTkdTCj4gPiArICogSU4gVEhFIFNPRlRXQVJFLgo+ID4gKyAqCj4gPiArICoKPiA+ICsg Ki8KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaW50ZWxfZHJ2LmgiCj4gPiArCj4gPiArCj4gPiArI2Rl ZmluZSBNQVhfQVVYX0JMX0hXX0xFVkVMIDB4RjAKPiA+ICsjZGVmaW5lIE1JTl9BVVhfQkxfSFdf TEVWRUwgMHgwMAo+ID4gKwo+ID4gKwo+ID4gK3N0YXRpYyB1aW50OF90IHJlYWRfbW9kZV9zZXRf cmVnKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApIHsKPiA+ICsJdWludDhfdCBkcGNkX2J1ZiA9 IDA7Cj4gPiArCj4gPiArCWlmIChpbnRlbF9kcF9kcGNkX3JlYWRfd2FrZSgmaW50ZWxfZHAtPmF1 eCwKPiA+ICsJCQlEUF9FRFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVSLAo+ID4gKwkJCSZk cGNkX2J1Ziwgc2l6ZW9mKGRwY2RfYnVmKSkgPCAwKQo+ID4gKwkJRFJNX0RFQlVHX0tNUygiRmFp bGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4iLAo+ID4gKwkJCQlEUF9FRFBfQkFDS0xJ R0hUX01PREVfU0VUX1JFR0lTVEVSKTsKPiA+ICsKPiA+ICsJcmV0dXJuIGRwY2RfYnVmOwo+ID4g K30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBSZWFkIHRoZSBjdXJyZW50IGJhY2tsaWdodCB2YWx1 ZSBmcm9tIERQQ0QgcmVnaXN0ZXIocykgYmFzZWQKPiA+ICsgKiBvbiBpZiA4LWJpdChNU0IpIG9y IDE2LWJpdChNU0IgYW5kIExTQikgdmFsdWVzIGFyZSBzdXBwb3J0ZWQgICovCj4gPiArc3RhdGlj IHVpbnQxNl90IHJlYWRfYXV4X2JhY2tsaWdodF9sZXZlbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwKSB7Cj4gPiArCXVpbnQxNl90IHJlYWRfdmFsID0gMDsKPiA+ICsKPiA+ICsJaWYgKGludGVs X2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LAo+ID4gKwkJCURQX0VEUF9CQUNLTElH SFRfQlJJR0hUTkVTU19NU0IsCj4gPiArCQkJJnJlYWRfdmFsLCBzaXplb2YocmVhZF92YWwpKSA8 IDApIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQQ0QgcmVnaXN0ZXIg MHgleFxuIiwKPiA+ICsJCQkJRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQik7Cj4gPiAr CQlyZXR1cm4gMDsKPiA+ICsJfQo+ID4gKwlpZiAoaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQudXNl X2xzYl9yZWcpIHsKPiA+ICsJCXVpbnQ4X3QgdmFsX2xzYiA9IDA7Cj4gPiArCj4gPiArCQlpZiAo aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gPiArCQkJCURQX0VEUF9C QUNLTElHSFRfQlJJR0hUTkVTU19MU0IsCj4gPiArCQkJCSZ2YWxfbHNiLCBzaXplb2YodmFsX2xz YikpIDwgMCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQQ0QgcmVn aXN0ZXIKPiAweCV4XG4iLAo+ID4gKwo+IAlEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTFNC KTsKPiA+ICsJCQlyZXR1cm4gMDsKPiA+ICsJCX0KPiA+ICsJCXJlYWRfdmFsID0gKHJlYWRfdmFs IDw8IDggfCB2YWxfbHNiKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gcmVhZF92YWw7Cj4g PiArfQo+ID4gKwo+ID4gKwo+ID4gK3N0YXRpYyBib29sIGdldF9hdXhfYmFja2xpZ2h0X2VuYWJs ZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4KSB7Cj4gPiArCXVpbnQ4X3QgcmVhZF92YWwgPSAwOwo+ ID4gKwo+ID4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoYXV4LAo+IERQX0VEUF9ESVNQ TEFZX0NPTlRST0xfUkVHSVNURVIsCj4gPiArCQkJJnJlYWRfdmFsLCBzaXplb2YocmVhZF92YWwp KSA8IDApIHsKPiA+ICsJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQQ0QgcmVnaXN0 ZXIgMHgleFxuIiwKPiA+ICsJCQkJRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUik7Cj4g PiArCQl9Cj4gPiArCXJldHVybiByZWFkX3ZhbCAmIERQX0VEUF9CQUNLTElHSFRfRU5BQkxFOyB9 Cj4gPiArCj4gPiArCj4gPiArc3RhdGljIGJvb2wgaXNfYXV4X2Rpc3BsYXlfY29udHJvbF9jYXBh YmxlKHN0cnVjdCBkcm1fY29ubmVjdG9yCj4gPiArKmNvbm5lY3Rvcikgewo+ID4gKwlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9Cj4gaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihj b25uZWN0b3IpOwo+ID4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVs X2RwKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiA+ICsJdWludDhfdCBkcGNkX2VkcFsyXSA9IHsg MHgwIH07Cj4gPiArCj4gPiArCS8qIENoZWNrIHRoZSAgZURQIERpc3BsYXkgY29udHJvbCBjYXBh YmlsaXRpZXMgcmVnaXN0ZXJzIHRvIGRldGVybWluZSBpZgo+ID4gKwkgKiB0aGUgcGFuZWwgY2Fu IHN1cHBvcnQgYmFja2xpZ2h0IGNvbnRyb2wgb3ZlciB0aGUgYXV4IGNoYW5uZWwqLwo+ID4gKwlp ZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gRFBfRURQX0dFTkVS QUxfQ0FQXzEsCj4gPiArCQkJZHBjZF9lZHAsIHNpemVvZihkcGNkX2VkcCkpIDwgMCkgewo+ID4g KwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgRFBDRCBEaXNwbGF5IENvbnRyb2wKPiBy ZWdpc3RlcnNcbiIpOwo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ID4gKwl9Cj4gPiArCURSTV9ERUJV R19LTVMoIkVEUCBEUENEIDogJSpwaFxuIiwgKGludCkgc2l6ZW9mKGRwY2RfZWRwKSwKPiA+ICtk cGNkX2VkcCk7Cj4gPiArCj4gPiArCWlmIChkcGNkX2VkcFswXSAmCj4gRFBfRURQX1RDT05fQkFD S0xJR0hUX0FESlVTVE1FTlRfQ0FQQUJMRSAmJgo+ID4gKwkJCShkcGNkX2VkcFswXSAmCj4gRFBf RURQX0JBQ0tMSUdIVF9BVVhfRU5BQkxFX0NBUEFCTEUpICYmCj4gPiArCQkJKGRwY2RfZWRwWzFd ICYKPiBEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfQVVYX1NFVF9DQVBBQkxFKSAmJgo+ID4g KwkJCSgocmVhZF9tb2RlX3NldF9yZWcoaW50ZWxfZHApICYKPiA+ICsKPiAJRFBfRURQX0JBQ0tM SUdIVF9CUklHSFRORVNTX0NUTF9NT0RFX0RQQ0RfTUFTSykpKSB7Cj4gPiArCj4gPiArCQlEUk1f REVCVUdfS01TKCJBVVggQmFja2xpZ2h0IENvbnRyb2wgU3VwcG9ydGVkIVxuIik7Cj4gPiArCj4g PiArCQlpZiAoZHBjZF9lZHBbMV0gJgo+IERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19CWVRF X0NPVU5UKQo+ID4gKwkJCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0LnVzZV9sc2JfcmVnID0gdHJ1 ZTsKPiA+ICsKPiA+ICsJCXJldHVybiB0cnVlOwo+ID4gKwl9Cj4gPiArCXJldHVybiBmYWxzZTsK PiA+ICt9Cj4gPiArCj4gPiArI2lmIElTX0VOQUJMRUQoQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19E RVZJQ0UpCj4gPiArCj4gPiArLyoqCj4gPiArICogU2VuZHMgdGhlIGN1cnJlbnQgYmFja2xpZ2h0 IGxldmVsIG92ZXIgdGhlIGF1eCBjaGFubmVsLCBjaGVja2luZwo+ID4gK2lmIGl0cyB1c2luZwo+ ID4gKyAqIDgtYml0IG9yIDE2IGJpdCB2YWx1ZSAoTVNCIGFuZCBMU0IpICAqLyBzdGF0aWMgdm9p ZAo+ID4gK3dyaXRlX2F1eF9iYWNrbGlnaHRfbGV2ZWwoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwgdWludDE2X3QgbGV2ZWwpCj4gPiArewo+ID4gKwl1aW50OF90IHZhbHNbMl0gPSB7IDB4MCB9 Owo+ID4gKwo+ID4gKwl2YWxzWzBdID0gbGV2ZWw7Cj4gPiArCURSTV9ERUJVR19LTVMoIkxldmVs IDB4JXhcbiIsIGxldmVsKTsKPiA+ICsKPiA+ICsJLyogV3JpdGUgdGhlIE1TQiBhbmQvb3IgTFNC ICovCj4gPiArCSBpZiAoaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQudXNlX2xzYl9yZWcpIHsKPiA+ ICsJCXZhbHNbMF0gPSAobGV2ZWwgJiAweEZGMDApID4+IDg7Cj4gPiArCQl2YWxzWzFdID0gKGxl dmVsICYgMHhGRik7Cj4gPiArCQlpZiAoZHJtX2RwX2RwY2Rfd3JpdGViKCZpbnRlbF9kcC0+YXV4 LAo+ID4gKwkJCQlEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTVNCLAo+IHZhbHNbMV0pIDwg MCkgewo+ID4gKwkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byB3cml0ZSBhdXggYmFja2xpZ2h0 Cj4gbGV2ZWxcbiIpOwo+ID4gKwkJCXJldHVybjsKPiA+ICsJCX0KPiA+ICsJIH0KPiA+ICsJaWYg KGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwKPiBEUF9FRFBfQkFDS0xJR0hUX0JS SUdIVE5FU1NfTVNCLAo+ID4gKwkJCXZhbHNbMF0pIDwgMCkgewo+ID4gKwkJRFJNX0RFQlVHX0tN UygiRmFpbGVkIHRvIHdyaXRlIGF1eCBiYWNrbGlnaHQgbGV2ZWxcbiIpOwo+ID4gKwkJcmV0dXJu Owo+ID4gKwl9Cj4gPiArCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmxldmVsID0gbGV2ZWw7IH0K PiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBzZXRfYXV4X2JhY2tsaWdodF9lbmFibGUoc3RydWN0IGlu dGVsX2RwICppbnRlbF9kcCwgYm9vbAo+ID4gK2VuYWJsZSkgewo+ID4gKwl1aW50OF90IHJlZ192 YWwgPSAwOwo+ID4gKwo+ID4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2Rw LT5hdXgsCj4gPiArCQkJCURQX0VEUF9ESVNQTEFZX0NPTlRST0xfUkVHSVNURVIsCj4gPiArCQkJ CSZyZWdfdmFsLCBzaXplb2YocmVnX3ZhbCkpIDwgMCkgewo+ID4gKwkJRFJNX0RFQlVHX0tNUygi RmFpbGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAweCV4XG4iLAo+ID4gKwkJCQlEUF9FRFBfRElT UExBWV9DT05UUk9MX1JFR0lTVEVSKTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwlpZiAo ZW5hYmxlKQo+ID4gKwkJcmVnX3ZhbCB8PSBEUF9FRFBfQkFDS0xJR0hUX0VOQUJMRTsKPiA+ICsJ ZWxzZQo+ID4gKwkJcmVnX3ZhbCAmPSB+KERQX0VEUF9CQUNLTElHSFRfRU5BQkxFKTsKPiA+ICsK PiA+ICsJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwKPiBEUF9FRFBfRElT UExBWV9DT05UUk9MX1JFR0lTVEVSLAo+ID4gKwkJCXJlZ192YWwpIDwgMCkgewo+ID4gKwkJRFJN X0RFQlVHX0tNUygiRmFpbGVkIHRvICVzIGF1eCBiYWNrbGlnaHRcbiIsCj4gPiArCQkJCWVuYWJs ZSA/ICJlbmFibGUiIDogImRpc2FibGUiKTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwlp bnRlbF9kcC0+YXV4X2JhY2tsaWdodC5lbmFibGVkID0gZW5hYmxlOyB9Cj4gPiArCj4gPiArLyoq Cj4gPiArICogaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9kZXZpY2VfdXBkYXRlX3N0YXR1cwo+ID4g KyAqIFdyaXRlcyB0byB0aGUgc3lzZnMgYmFja2xpZ2h0IGludGVyZmFjZSB3aWxsIGNvbWUgaGVy ZSB0byBzZXQgdGhlCj4gPiArICogYmFja2xpZ2h0IGxldmVsIG9yIGRpc2FibGUvZW5hYmxlIHRo ZSBiYWNrbGlnaHQgICovIHN0YXRpYyBpbnQKPiA+ICtpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2Rl dmljZV91cGRhdGVfc3RhdHVzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlCj4gPiArKmJkKSB7Cj4g PiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IGJsX2dldF9kYXRh KGJkKTsKPiA+ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25u ZWN0b3ItPmJhc2U7Cj4gPiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0K PiBpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gPiArCXN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ID4g KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPiArCXVpbnQzMl90 IGh3X2xldmVsOwo+ID4gKwlib29sIGJsX2VuYWJsZSA9IGZhbHNlOwo+ID4gKwo+ID4gKwlEUk1f REVCVUdfS01TKCJVcGRhdGluZyBpbnRlbF9hdXhfYmFja2xpZ2h0LURQLAo+IGJyaWdodG5lc3M9 JWQvJWQsIGJsX3Bvd2VyICVkXG4iLAo+ID4gKwkJCWJkLT5wcm9wcy5icmlnaHRuZXNzLCBiZC0+ cHJvcHMubWF4X2JyaWdodG5lc3MsCj4gPiArCQkJYmQtPnByb3BzLnBvd2VyKTsKPiA+ICsKPiA+ ICsJaWYgKGNvbm5lY3Rvci0+c3RhdHVzICE9IGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkKQo+ ID4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gPiArCj4gPiArCVdBUk5fT04oaW50ZWxfZHAtPmF1eF9i YWNrbGlnaHQubWF4ID09IDApOwo+ID4gKwo+ID4gKwlkcm1fbW9kZXNldF9sb2NrKCZkZXYtPm1v ZGVfY29uZmlnLmNvbm5lY3Rpb25fbXV0ZXgsIE5VTEwpOwo+ID4gKwo+ID4gKwlod19sZXZlbCA9 IHNjYWxlKGJkLT5wcm9wcy5icmlnaHRuZXNzLAo+ID4gKwkJCTAsIGJkLT5wcm9wcy5tYXhfYnJp Z2h0bmVzcywKPiA+ICsJCQlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5taW4sIGludGVsX2RwLQo+ ID5hdXhfYmFja2xpZ2h0Lm1heCk7Cj4gPiArCj4gPiArCWlmIChpbnRlbF9kcC0+YXV4X2JhY2ts aWdodC5sZXZlbCAhPSBod19sZXZlbCkKPiA+ICsJCXdyaXRlX2F1eF9iYWNrbGlnaHRfbGV2ZWwo aW50ZWxfZHAsIGh3X2xldmVsKTsKPiA+ICsKPiA+ICsJLyoKPiA+ICsJICogVGhpcyBnZXRzIGNh bGxlZCB3aGVuIGJsX3Bvd2VyIGlzIHdyaXR0ZW4gdG8gYXMgd2VsbC4gQ2hlY2sgaWYgdGhlCj4g PiArCSAqIGJsX3Bvd2VyIHN0YXRlIGhhcyBjaGFuZ2VkIGFuZCB3cml0ZSBpdAo+ID4gKwkgKi8K PiA+ICsJYmxfZW5hYmxlID0gKGJkLT5wcm9wcy5wb3dlciA9PSBGQl9CTEFOS19VTkJMQU5LKTsK PiA+ICsJaWYgKGludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmVuYWJsZWQgIT0gYmxfZW5hYmxlKQo+ ID4gKwkJc2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKGludGVsX2RwLCBibF9lbmFibGUpOwo+ID4g Kwo+ID4gKwlkcm1fbW9kZXNldF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9t dXRleCk7Cj4gPiArCXJldHVybiAwOwo+ID4gK30KPiA+ICsKPiA+ICsvKioKPiA+ICsgKiBpbnRl bF9kcF9hdXhfYmFja2xpZ2h0X2RldmljZV9nZXRfYnJpZ2h0bmVzcwo+ID4gKyAqIENhbGxlZCBv biByZWFkIG9mIHRoZSBzeXNmcyBiYWNrbGlnaHQgaW50ZXJmYWNlIHRvIGdldCB0aGUgY3VycmVu dAo+ID4gK2JhY2tsaWdodAo+ID4gKyAqIHZhbHVlIGZyb20gdGhlIEFVWCBjaGFubmVsLgo+ID4g KyAqLwo+ID4gK3N0YXRpYyBpbnQKPiA+ICtpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2RldmljZV9n ZXRfYnJpZ2h0bmVzcyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZQo+ID4gKypiZCkgewo+ID4gKwlz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICppbnRlbF9jb25uZWN0b3IgPSBibF9nZXRfZGF0YShiZCk7 Cj4gPiArCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9y LT5iYXNlOwo+ID4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4g PiArCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0KPiBpbnRlbF9hdHRhY2hl ZF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBl bmNfdG9faW50ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ID4gKwlpbnQgcmV0Owo+ID4g Kwo+ID4gKwlpZiAoY29ubmVjdG9yLT5zdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0 ZWQpCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICsKPiA+ICsJZHJtX21vZGVzZXRfbG9jaygm ZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKPiA+ICsKPiA+ICsJaW50 ZWxfZHAtPmF1eF9iYWNrbGlnaHQubGV2ZWwgPSByZWFkX2F1eF9iYWNrbGlnaHRfbGV2ZWwoaW50 ZWxfZHApOwo+ID4gKwo+ID4gKwlyZXQgPSBzY2FsZShpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5s ZXZlbCwKPiA+ICsJCQlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5taW4sIGludGVsX2RwLQo+ID5h dXhfYmFja2xpZ2h0Lm1heCwKPiA+ICsJCQkwLCBiZC0+cHJvcHMubWF4X2JyaWdodG5lc3MpOwo+ ID4gKwo+ID4gKwlkcm1fbW9kZXNldF91bmxvY2soJmRldi0+bW9kZV9jb25maWcuY29ubmVjdGlv bl9tdXRleCk7Cj4gPiArCj4gPiArCXJldHVybiByZXQ7Cj4gPiArfQo+ID4gKwo+ID4gK2NvbnN0 IHN0cnVjdCBiYWNrbGlnaHRfb3BzIGludGVsX2RwX2JhY2tsaWdodF9kZXZpY2Vfb3BzID0gewo+ ID4gKwkudXBkYXRlX3N0YXR1cyA9IGludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNlX3VwZGF0 ZV9zdGF0dXMsCj4gPiArCS5nZXRfYnJpZ2h0bmVzcyA9IGludGVsX2RwX2F1eF9iYWNrbGlnaHRf ZGV2aWNlX2dldF9icmlnaHRuZXNzLAo+ID4gK307Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgc2V0 dXBfYmFja2xpZ2h0X29wcyhzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0ICpiYWNrbGlnaHQpIHsKPiA+ ICsJYmFja2xpZ2h0LT5ibF9vcHMgPSAmaW50ZWxfZHBfYmFja2xpZ2h0X2RldmljZV9vcHM7IH0g I2Vsc2UKPiA+ICsKPiA+ICtzdGF0aWMgdm9pZCBzZXR1cF9iYWNrbGlnaHRfb3BzKHN0cnVjdCBp bnRlbF9iYWNrbGlnaHQgKmJhY2tsaWdodCkgewo+ID4gKwo+ID4gK30KPiA+ICsjZW5kaWYgLyog Q09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgKi8KPiA+ICsKPiA+ICsKPiA+ICtzdGF0aWMg dm9pZCBfYXV4X2JhY2tsaWdodF9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApIHsKPiA+ ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9Cj4gPiArJmludGVsX2RwLT5hdHRh Y2hlZF9jb25uZWN0b3ItPmJhc2U7Cj4gPiArCj4gPiArCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0 Lm1heCA9IE1BWF9BVVhfQkxfSFdfTEVWRUw7Cj4gPiArCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0 Lm1pbiA9IE1JTl9BVVhfQkxfSFdfTEVWRUw7Cj4gPiArCj4gPiArCWludGVsX2RwLT5hdXhfYmFj a2xpZ2h0LmxldmVsID0gcmVhZF9hdXhfYmFja2xpZ2h0X2xldmVsKGludGVsX2RwKTsKPiA+ICsJ aW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQuZW5hYmxlZCA9Cj4gPiArZ2V0X2F1eF9iYWNrbGlnaHRf ZW5hYmxlKCZpbnRlbF9kcC0+YXV4KTsKPiA+ICsKPiA+ICsJc2V0dXBfYmFja2xpZ2h0X29wcygm aW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQpOwo+ID4gKwkvKgo+ID4gKwkqIEZvciBBVVggYmFja2xp Z2h0LCB1c2luZyBkaWZmZXJlbnQgbmFtZSBmb3IgZWFjaCBEUC9lRFAgY29ubmVjdG9yCj4gPiAr CSogd2lsbCBwcm9kdWNlIHJlZ2lzdHJhdGlvbiBvZiBtdWx0aXBsZSBEUC1BVVggYmFja2xpZ2h0 IGRldmljZXMgaW4KPiA+ICsJKiB0aGUgZHJpdmVyLgo+ID4gKwkqLwo+ID4gKwlzbnByaW50Zihp bnRlbF9kcC0+YXV4X2JhY2tsaWdodC5ibF9uYW1lLAo+IElOVEVMX0JBQ0tMSUdIVF9OQU1FX0xF TiwKPiA+ICsJCQkiaW50ZWxfYXV4X2JhY2tsaWdodC0lcyIsIGNvbm5lY3Rvci0+bmFtZSk7IH0K PiA+ICsKPiA+ICsvKioKPiA+ICsgKiBDYWxsZWQgb24gY29ubmVjdG9yIGluaXRpYWxpemF0aW9u IHRvIGNoZWNrIGZvciBhdXggYmFja2xpZ2h0Cj4gPiArY29udHJvbAo+ID4gKyAqIGNhcGFiaWxp dHkgYW5kIGlmIHByZXNlbnQsIGluaXRpYWxpemUgaXQuCj4gPiArICovCj4gPiArCj4gPiArdm9p ZCBpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2luaXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwK PiA+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gPiArewo+ID4gKwlpZiAo IWlzX2F1eF9kaXNwbGF5X2NvbnRyb2xfY2FwYWJsZShjb25uZWN0b3IpKSB7Cj4gPiArCQlEUk1f REVCVUdfS01TKCJCYWNrbGlnaHQgY29udHJvbCBvdmVyIEFVWCBub3QKPiBzdXBwb3J0ZWRcbiIp Owo+ID4gKwkJcmV0dXJuOwo+ID4gKwl9Cj4gPiArCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0LnBy ZXNlbnQgPSB0cnVlOwo+ID4gKwo+ID4gKwlfYXV4X2JhY2tsaWdodF9pbml0KGludGVsX2RwKTsK PiA+ICsKPiA+ICsJRFJNX0RFQlVHX0tNUygiQ29ubmVjdG9yICVzIGJhY2tsaWdodCAlcywgYnJp Z2h0bmVzcwo+ICV1LyV1XG4iLAo+ID4gKwkJCWNvbm5lY3Rvci0+bmFtZSwKPiA+ICsJCQlpbnRl bF9kcC0+YXV4X2JhY2tsaWdodC5lbmFibGVkID8gImVuYWJsZWQiIDoKPiAiZGlzYWJsZWQiLAo+ ID4gKwkJCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmxldmVsLCBpbnRlbF9kcC0KPiA+YXV4X2Jh Y2tsaWdodC5tYXgpOyB9Cj4gPiArLyoqCj4gPiArICogQ2xlYW51cCBhdXggYmFja2xpZ2h0IGNv bnRyb2wgZGF0YSAgKi8gdm9pZAo+ID4gK2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGVzdHJveShz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7Cj4gPiArCXN0cnVjdCBpbnRlbF9lbmNv ZGVyICppbnRlbF9lbmNvZGVyID0KPiBpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7 Cj4gPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVs X2VuY29kZXItPmJhc2UpOwo+ID4gKwo+ID4gKwlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5wcmVz ZW50ID0gZmFsc2U7IH0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4gaW5kZXgg NDY0ODRlNC4uNDM4YTg3YiAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4g QEAgLTE2MywyNiArMTYzLDMxIEBAIHN0cnVjdCBpbnRlbF9lbmNvZGVyIHsKPiA+ICAJZW51bSBo cGRfcGluIGhwZF9waW47Cj4gPiAgfTsKPiA+Cj4gPiArI2RlZmluZSBJTlRFTF9CQUNLTElHSFRf TkFNRV9MRU4gNTAKPiA+ICtzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0IHsKPiA+ICsJYm9vbCBwcmVz ZW50Owo+ID4gKwl1MzIgbGV2ZWw7Cj4gPiArCXUzMiBtaW47Cj4gPiArCXUzMiBtYXg7Cj4gPiAr CWJvb2wgZW5hYmxlZDsKPiA+ICsJYm9vbCBjb21iaW5hdGlvbl9tb2RlOwkvKiBnZW4gMi80IG9u bHkgKi8KPiA+ICsJYm9vbCBhY3RpdmVfbG93X3B3bTsKPiA+ICsKPiA+ICsJLyogUFdNIGNoaXAg Ki8KPiA+ICsJc3RydWN0IHB3bV9kZXZpY2UgKnB3bTsKPiA+ICsKPiA+ICsJc3RydWN0IGJhY2ts aWdodF9kZXZpY2UgKmRldmljZTsKPiA+ICsJY29uc3Qgc3RydWN0IGJhY2tsaWdodF9vcHMgKmJs X29wczsKPiA+ICsJY2hhciBibF9uYW1lW0lOVEVMX0JBQ0tMSUdIVF9OQU1FX0xFTl07Cj4gPiAr CWJvb2wgdXNlX2xzYl9yZWc7CS8qIGF1eCBiYWNrbGlnaHQgb25seSAqLwo+ID4gK307Cj4gPiAr Cj4gPiAgc3RydWN0IGludGVsX3BhbmVsIHsKPiA+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmZpeGVkX21vZGU7Cj4gPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpkb3duY2xvY2tfbW9k ZTsKPiA+ICAJaW50IGZpdHRpbmdfbW9kZTsKPiA+Cj4gPiAtCS8qIGJhY2tsaWdodCAqLwo+ID4g LQlzdHJ1Y3Qgewo+ID4gLQkJYm9vbCBwcmVzZW50Owo+ID4gLQkJdTMyIGxldmVsOwo+ID4gLQkJ dTMyIG1pbjsKPiA+IC0JCXUzMiBtYXg7Cj4gPiAtCQlib29sIGVuYWJsZWQ7Cj4gPiAtCQlib29s IGNvbWJpbmF0aW9uX21vZGU7CS8qIGdlbiAyLzQgb25seSAqLwo+ID4gLQkJYm9vbCBhY3RpdmVf bG93X3B3bTsKPiA+IC0KPiA+IC0JCS8qIFBXTSBjaGlwICovCj4gPiAtCQlzdHJ1Y3QgcHdtX2Rl dmljZSAqcHdtOwo+ID4gLQo+ID4gLQkJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmRldmljZTsK PiA+IC0JfSBiYWNrbGlnaHQ7Cj4gPiArCXN0cnVjdCBpbnRlbF9iYWNrbGlnaHQgYmFja2xpZ2h0 Owo+ID4KPiA+ICAJdm9pZCAoKmJhY2tsaWdodF9wb3dlcikoc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqLCBib29sIGVuYWJsZSk7ICB9Owo+ID4gQEAgLTc3MSw2ICs3NzYsOCBAQCBzdHJ1Y3QgaW50 ZWxfZHAgewo+ID4gIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF90eXBlOwo+ID4gIAl1 bnNpZ25lZCBsb25nIGNvbXBsaWFuY2VfdGVzdF9kYXRhOwo+ID4gIAlib29sIGNvbXBsaWFuY2Vf dGVzdF9hY3RpdmU7Cj4gPiArCj4gPiArCXN0cnVjdCBpbnRlbF9iYWNrbGlnaHQgYXV4X2JhY2ts aWdodDsKPiA+ICB9Owo+ID4KPiA+ICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPiA+IEBA IC0xMjEwLDYgKzEyMTcsMTEgQEAgdm9pZCBpbnRlbF9lZHBfZHJyc19pbnZhbGlkYXRlKHN0cnVj dAo+IGRybV9kZXZpY2UgKmRldiwKPiA+ICAJCXVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ ID4gIHZvaWQgaW50ZWxfZWRwX2RycnNfZmx1c2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5z aWduZWQKPiA+IGZyb250YnVmZmVyX2JpdHMpOyAgdm9pZCBoc3dfZHBfc2V0X2RkaV9wbGxfc2Vs KHN0cnVjdAo+ID4gaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ID4gK2Jvb2wgaW50 ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7IHNzaXplX3QKPiA+ICtp bnRlbF9kcF9kcGNkX3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBp bnQgb2Zmc2V0LAo+ID4gKwkJdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSk7Cj4gPiArdWludDMy X3Qgc2NhbGUodWludDMyX3Qgc291cmNlX3ZhbCwgdWludDMyX3Qgc291cmNlX21pbiwgdWludDMy X3QKPiBzb3VyY2VfbWF4LAo+ID4gKwkJdWludDMyX3QgdGFyZ2V0X21pbiwgdWludDMyX3QgdGFy Z2V0X21heCk7Cj4gPgo+ID4gIC8qIGludGVsX2RwX21zdC5jICovCj4gPiAgaW50IGludGVsX2Rw X21zdF9lbmNvZGVyX2luaXQoc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydAo+ID4gKmludGVsX2Rp Z19wb3J0LCBpbnQgY29ubl9pZCk7IEBAIC0xMzI4LDYgKzEzNDAsMTAgQEAgZXh0ZXJuIHN0cnVj dAo+ID4gZHJtX2Rpc3BsYXlfbW9kZSAqaW50ZWxfZmluZF9wYW5lbF9kb3duY2xvY2soICB2b2lk Cj4gPiBpbnRlbF9iYWNrbGlnaHRfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7ICB2 b2lkCj4gPiBpbnRlbF9iYWNrbGlnaHRfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKPiA+Cj4gPiArLyogaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwuYyAqLwo+ID4gK3ZvaWQg aW50ZWxfZHBfYXV4X2JhY2tsaWdodF9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAsCj4g PiArCQkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7Cj4gPiArdm9pZCBpbnRlbF9k cF9hdXhfYmFja2xpZ2h0X2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rvcik7 Cj4gPgo+ID4gIC8qIGludGVsX3Bzci5jICovCj4gPiAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0 cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOyBkaWZmIC0tZ2l0Cj4gPiBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYwo+ID4gaW5kZXggMjAzNDQzOGEuLmM2MWZiOTIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9wYW5lbC5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9wYW5lbC5jCj4gPiBAQCAtNDEwLDcgKzQxMCw3IEBAIGludGVsX3BhbmVsX2RldGVj dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ID4gICAqIFJldHVybiBAc291cmNlX3ZhbCBpbiBy YW5nZSBbQHNvdXJjZV9taW4uLkBzb3VyY2VfbWF4XSBzY2FsZWQgdG8KPiByYW5nZQo+ID4gICAq IFtAdGFyZ2V0X21pbi4uQHRhcmdldF9tYXhdLgo+ID4gICAqLwo+ID4gLXN0YXRpYyB1aW50MzJf dCBzY2FsZSh1aW50MzJfdCBzb3VyY2VfdmFsLAo+ID4gK3VpbnQzMl90IHNjYWxlKHVpbnQzMl90 IHNvdXJjZV92YWwsCj4gPiAgCQkgICAgICB1aW50MzJfdCBzb3VyY2VfbWluLCB1aW50MzJfdCBz b3VyY2VfbWF4LAo+ID4gIAkJICAgICAgdWludDMyX3QgdGFyZ2V0X21pbiwgdWludDMyX3QgdGFy Z2V0X21heCkgIHsgQEAgLTExNTEsMTgKPiA+ICsxMTUxLDIzIEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgYmFja2xpZ2h0X29wcyBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX29wcwo+ID0gewo+ID4gIAku Z2V0X2JyaWdodG5lc3MgPSBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNzLAo+ ID4gIH07Cj4gPgo+ID4gLXN0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rl cihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yCj4gPiAqY29ubmVjdG9yKQo+ID4gK3N0YXRpYyB2b2lk IHNldHVwX2JhY2tsaWdodF9vcHMoc3RydWN0IGludGVsX2JhY2tsaWdodCAqYmFja2xpZ2h0KSB7 Cj4gPiArCWJhY2tsaWdodC0+Ymxfb3BzID0gJmludGVsX2JhY2tsaWdodF9kZXZpY2Vfb3BzOyB9 Cj4gPiArCj4gPiArc3RhdGljIGludCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IKPiAqY29ubmVjdG9yLAo+ID4gKwkJc3RydWN0IGludGVsX2Jh Y2tsaWdodCAqYmFja2xpZ2h0KQo+ID4gIHsKPiA+IC0Jc3RydWN0IGludGVsX3BhbmVsICpwYW5l bCA9ICZjb25uZWN0b3ItPnBhbmVsOwo+ID4gIAlzdHJ1Y3QgYmFja2xpZ2h0X3Byb3BlcnRpZXMg cHJvcHM7Cj4gPgo+ID4gLQlpZiAoV0FSTl9PTihwYW5lbC0+YmFja2xpZ2h0LmRldmljZSkpCj4g PiArCWlmIChXQVJOX09OKGJhY2tsaWdodC0+ZGV2aWNlKSkKPiA+ICAJCXJldHVybiAtRU5PREVW Owo+ID4KPiA+IC0JaWYgKCFwYW5lbC0+YmFja2xpZ2h0LnByZXNlbnQpCj4gPiArCWlmICghYmFj a2xpZ2h0LT5wcmVzZW50KQo+ID4gIAkJcmV0dXJuIDA7Cj4gPgo+ID4gLQlXQVJOX09OKHBhbmVs LT5iYWNrbGlnaHQubWF4ID09IDApOwo+ID4gKwlXQVJOX09OKGJhY2tsaWdodC0+bWF4ID09IDAp Owo+ID4KPiA+ICAJbWVtc2V0KCZwcm9wcywgMCwgc2l6ZW9mKHByb3BzKSk7Cj4gPiAgCXByb3Bz LnR5cGUgPSBCQUNLTElHSFRfUkFXOwo+ID4gQEAgLTExNzEsMzAgKzExNzYsMjUgQEAgc3RhdGlj IGludCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdAo+IGludGVsX2Nvbm5l Y3RvciAqY29ubmVjdG9yKQo+ID4gIAkgKiBOb3RlOiBFdmVyeXRoaW5nIHNob3VsZCB3b3JrIGV2 ZW4gaWYgdGhlIGJhY2tsaWdodCBkZXZpY2UgbWF4Cj4gPiAgCSAqIHByZXNlbnRlZCB0byB0aGUg dXNlcnNwYWNlIGlzIGFyYml0cmFyaWx5IGNob3Nlbi4KPiA+ICAJICovCj4gPiAtCXByb3BzLm1h eF9icmlnaHRuZXNzID0gcGFuZWwtPmJhY2tsaWdodC5tYXg7Cj4gPiAtCXByb3BzLmJyaWdodG5l c3MgPSBzY2FsZV9od190b191c2VyKGNvbm5lY3RvciwKPiA+IC0JCQkJCSAgICBwYW5lbC0+YmFj a2xpZ2h0LmxldmVsLAo+ID4gLQkJCQkJICAgIHByb3BzLm1heF9icmlnaHRuZXNzKTsKPiA+ICsJ cHJvcHMubWF4X2JyaWdodG5lc3MgPSBiYWNrbGlnaHQtPm1heDsKPiA+ICsJcHJvcHMuYnJpZ2h0 bmVzcyA9IHNjYWxlKGJhY2tsaWdodC0+bGV2ZWwsIGJhY2tsaWdodC0+bWluLCBiYWNrbGlnaHQt Cj4gPm1heCwKPiA+ICsJCSAgICAgMCwgcHJvcHMubWF4X2JyaWdodG5lc3MpOwo+ID4KPiA+IC0J aWYgKHBhbmVsLT5iYWNrbGlnaHQuZW5hYmxlZCkKPiA+ICsJaWYgKGJhY2tsaWdodC0+ZW5hYmxl ZCkKPiA+ICAJCXByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFOSzsKPiA+ICAJZWxzZQo+ID4g IAkJcHJvcHMucG93ZXIgPSBGQl9CTEFOS19QT1dFUkRPV047Cj4gPgo+ID4gLQkvKgo+ID4gLQkg KiBOb3RlOiB1c2luZyB0aGUgc2FtZSBuYW1lIGluZGVwZW5kZW50IG9mIHRoZSBjb25uZWN0b3IK PiBwcmV2ZW50cwo+ID4gLQkgKiByZWdpc3RyYXRpb24gb2YgbXVsdGlwbGUgYmFja2xpZ2h0IGRl dmljZXMgaW4gdGhlIGRyaXZlci4KPiA+IC0JICovCj4gPiAtCXBhbmVsLT5iYWNrbGlnaHQuZGV2 aWNlID0KPiA+IC0JCWJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoImludGVsX2JhY2tsaWdodCIs Cj4gPiArCWJhY2tsaWdodC0+ZGV2aWNlID0KPiA+ICsJCWJhY2tsaWdodF9kZXZpY2VfcmVnaXN0 ZXIoYmFja2xpZ2h0LT5ibF9uYW1lLAo+ID4gIAkJCQkJICBjb25uZWN0b3ItPmJhc2Uua2RldiwK PiA+ICAJCQkJCSAgY29ubmVjdG9yLAo+ID4gLQkJCQkJICAmaW50ZWxfYmFja2xpZ2h0X2Rldmlj ZV9vcHMsCj4gJnByb3BzKTsKPiA+ICsJCQkJCSAgYmFja2xpZ2h0LT5ibF9vcHMsICZwcm9wcyk7 Cj4gPgo+ID4gLQlpZiAoSVNfRVJSKHBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlKSkgewo+ID4gKwlp ZiAoSVNfRVJSKGJhY2tsaWdodC0+ZGV2aWNlKSkgewo+ID4gIAkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gcmVnaXN0ZXIgYmFja2xpZ2h0OiAlbGRcbiIsCj4gPiAtCQkJICBQVFJfRVJSKHBhbmVsLT5i YWNrbGlnaHQuZGV2aWNlKSk7Cj4gPiAtCQlwYW5lbC0+YmFja2xpZ2h0LmRldmljZSA9IE5VTEw7 Cj4gPiArCQkJICBQVFJfRVJSKGJhY2tsaWdodC0+ZGV2aWNlKSk7Cj4gPiArCQliYWNrbGlnaHQt PmRldmljZSA9IE5VTEw7Cj4gPiAgCQlyZXR1cm4gLUVOT0RFVjsKPiA+ICAJfQo+ID4KPiA+IEBA IC0xMjA0LDIxICsxMjA0LDI1IEBAIHN0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV9y ZWdpc3RlcihzdHJ1Y3QKPiBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICAJcmV0dXJu IDA7Cj4gPiAgfQo+ID4KPiA+IC1zdGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3Vu cmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3Rvcgo+ID4gKmNvbm5lY3RvcikKPiA+ICtzdGF0 aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Jh Y2tsaWdodAo+ID4gKypiYWNrbGlnaHQpCj4gPiAgewo+ID4gLQlzdHJ1Y3QgaW50ZWxfcGFuZWwg KnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4gPiAtCj4gPiAtCWlmIChwYW5lbC0+YmFja2xp Z2h0LmRldmljZSkgewo+ID4gLQkJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHBhbmVsLT5i YWNrbGlnaHQuZGV2aWNlKTsKPiA+IC0JCXBhbmVsLT5iYWNrbGlnaHQuZGV2aWNlID0gTlVMTDsK PiA+ICsJaWYgKGJhY2tsaWdodC0+ZGV2aWNlKSB7Cj4gPiArCQliYWNrbGlnaHRfZGV2aWNlX3Vu cmVnaXN0ZXIoYmFja2xpZ2h0LT5kZXZpY2UpOwo+ID4gKwkJYmFja2xpZ2h0LT5kZXZpY2UgPSBO VUxMOwo+ID4gIAl9Cj4gPiAgfQo+ID4gKwo+ID4gICNlbHNlIC8qIENPTkZJR19CQUNLTElHSFRf Q0xBU1NfREVWSUNFICovIC1zdGF0aWMgaW50Cj4gPiBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3Jl Z2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKPiA+ICsKPiA+ICtzdGF0 aWMgaW50IGludGVsX2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5l Y3Rvcgo+ICpjb25uZWN0b3IsCj4gPiArCQlzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0ICpiYWNrbGln aHQpCj4gPiAgewo+ID4gIAlyZXR1cm4gMDsKPiA+ICB9Cj4gPiAtc3RhdGljIHZvaWQgaW50ZWxf YmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IKPiA+ICpj b25uZWN0b3IpCj4gPiArc3RhdGljIHZvaWQgaW50ZWxfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lz dGVyKHN0cnVjdCBpbnRlbF9iYWNrbGlnaHQKPiA+ICsqYmFja2xpZ2h0KSB7IH0gc3RhdGljIHZv aWQgc2V0dXBfYmFja2xpZ2h0X29wcyhzdHJ1Y3QKPiA+ICtpbnRlbF9iYWNrbGlnaHQgKmJhY2ts aWdodCkKPiA+ICB7Cj4gPiAgfQo+ID4gICNlbmRpZiAvKiBDT05GSUdfQkFDS0xJR0hUX0NMQVNT X0RFVklDRSAqLyBAQCAtMTY1Miw2ICsxNjU2LDE3Cj4gQEAgaW50Cj4gPiBpbnRlbF9wYW5lbF9z ZXR1cF9iYWNrbGlnaHQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBl Cj4gPiBwaXBlKQo+ID4KPiA+ICAJcGFuZWwtPmJhY2tsaWdodC5wcmVzZW50ID0gdHJ1ZTsKPiA+ Cj4gPiArCXNldHVwX2JhY2tsaWdodF9vcHMoJnBhbmVsLT5iYWNrbGlnaHQpOwo+ID4gKwo+ID4g KwkvKgo+ID4gKwkgKiBOb3RlOiBGb3IgaW50ZXJuYWwgZGlzcGxheXMsIHVzaW5nIHRoZSBzYW1l IG5hbWUgaW5kZXBlbmRlbnQgb2YKPiB0aGUKPiA+ICsJICogY29ubmVjdG9yIHByZXZlbnRzIHJl Z2lzdHJhdGlvbiBvZiBtdWx0aXBsZSBiYWNrbGlnaHQgZGV2aWNlcyBpbiB0aGUKPiA+ICsJICog ZHJpdmVyLgo+ID4gKwkgKi8KPiA+ICsJc3RybmNweShwYW5lbC0+YmFja2xpZ2h0LmJsX25hbWUs ICJpbnRlbF9iYWNrbGlnaHQiLAo+ID4gKwkJCUlOVEVMX0JBQ0tMSUdIVF9OQU1FX0xFTik7Cj4g PiArCXBhbmVsLT5iYWNrbGlnaHQuYmxfbmFtZVtJTlRFTF9CQUNLTElHSFRfTkFNRV9MRU4gLSAx XSA9ICdcMCc7Cj4gPiArCj4gPiAgCURSTV9ERUJVR19LTVMoIkNvbm5lY3RvciAlcyBiYWNrbGln aHQgaW5pdGlhbGl6ZWQsICVzLAo+IGJyaWdodG5lc3MgJXUvJXVcbiIsCj4gPiAgCQkgICAgICBj b25uZWN0b3ItPm5hbWUsCj4gPiAgCQkgICAgICBwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQgPyAi ZW5hYmxlZCIgOiAiZGlzYWJsZWQiLCBAQAo+ID4gLTE3NTcsMTYgKzE3NzIsNDIgQEAgdm9pZCBp bnRlbF9wYW5lbF9maW5pKHN0cnVjdCBpbnRlbF9wYW5lbCAqcGFuZWwpCj4gPgo+ID4gIHZvaWQg aW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpICB7Cj4gPiAt CXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiA+ICsJc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yOwo+ID4gKwo+ID4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5 KGludGVsX2Nvbm5lY3RvciwgJmRldi0KPiA+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsCj4g PiArCQkJYmFzZS5oZWFkKSB7Cj4gPiArCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9y ID0gJmludGVsX2Nvbm5lY3Rvci0+YmFzZTsKPiA+ICsKPiA+ICsJCWludGVsX2JhY2tsaWdodF9k ZXZpY2VfcmVnaXN0ZXIoaW50ZWxfY29ubmVjdG9yLAo+ID4gKwkJCQkmaW50ZWxfY29ubmVjdG9y LT5wYW5lbC5iYWNrbGlnaHQpOwo+ID4gKwo+ID4gKwkJaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9y X3R5cGUgPT0KPiBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQgfHwKPiA+ICsJCQkJY29u bmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PQo+IERSTV9NT0RFX0NPTk5FQ1RPUl9lRFApIHsKPiA+ ICsJCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9Cj4gaW50ZWxfYXR0YWNoZWRfZW5j b2Rlcihjb25uZWN0b3IpOwo+ID4gKwkJCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPQo+IGVu Y190b19pbnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gPgo+ID4gLQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KGNvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsCj4gYmFzZS5o ZWFkKQo+ID4gLQkJaW50ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rlcihjb25uZWN0b3IpOwo+ ID4gKwkJCWludGVsX2JhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoaW50ZWxfY29ubmVjdG9yLAo+ ID4gKwkJCQkJJmludGVsX2RwLT5hdXhfYmFja2xpZ2h0KTsKPiA+ICsJCX0KPiA+ICsJfQo+ID4g IH0KPiA+Cj4gPiAgdm9pZCBpbnRlbF9iYWNrbGlnaHRfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KSAgewo+ID4gLQlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7Cj4g PiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiA+ICsKPiA+ICsJ bGlzdF9mb3JfZWFjaF9lbnRyeShpbnRlbF9jb25uZWN0b3IsICZkZXYtCj4gPm1vZGVfY29uZmln LmNvbm5lY3Rvcl9saXN0LAo+ID4gKwkJCWJhc2UuaGVhZCkgewo+ID4gKwkJc3RydWN0IGRybV9j b25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gPiArCj4gPiAr Cj4gPiAraW50ZWxfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKCZpbnRlbF9jb25uZWN0b3It PnBhbmVsLmJhY2tsaWdodCk7Cj4gPgo+ID4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3Rv ciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsCj4gYmFzZS5oZWFkKQo+ID4gLQkJ aW50ZWxfYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gPiArCQlpZiAo Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PQo+IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5 UG9ydCB8fAo+ID4gKwkJCQljb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09Cj4gRFJNX01PREVf Q09OTkVDVE9SX2VEUCkgewo+ID4gKwkJCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyID0K PiBpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7Cj4gPiArCQkJc3RydWN0IGludGVs X2RwICppbnRlbF9kcCA9Cj4gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVyLT5iYXNlKTsKPiA+ICsK PiA+ICsJCQlpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoJmludGVsX2RwLQo+ID5h dXhfYmFja2xpZ2h0KTsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gIH0KPiA+IGRpZmYgLS1naXQgYS9p bmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgKPiBiL2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIu aAo+ID4gaW5kZXggOGM1MmQwZWYxLi41ODI2MTgzIDEwMDY0NAo+ID4gLS0tIGEvaW5jbHVkZS9k cm0vZHJtX2RwX2hlbHBlci5oCj4gPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZHBfaGVscGVyLmgK PiA+IEBAIC00NTUsMTYgKzQ1NSwyMiBAQAo+ID4gICMgZGVmaW5lIERQX0VEUF8xNAkJCSAgICAw eDAzCj4gPgo+ID4gICNkZWZpbmUgRFBfRURQX0dFTkVSQUxfQ0FQXzEJCSAgICAweDcwMQo+ID4g KyNkZWZpbmUgRFBfRURQX1RDT05fQkFDS0xJR0hUX0FESlVTVE1FTlRfQ0FQQUJMRSAgICAgICgx IDw8IDApCj4gPiArI2RlZmluZSBEUF9FRFBfQkFDS0xJR0hUX0FVWF9FTkFCTEVfQ0FQQUJMRSAg ICAgICAgICAgKDEgPDwgMikKPiA+Cj4gPiAgI2RlZmluZSBEUF9FRFBfQkFDS0xJR0hUX0FESlVT VE1FTlRfQ0FQICAgICAweDcwMgo+ID4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRO RVNTX0FVWF9TRVRfQ0FQQUJMRSAgICgxIDw8IDEpCj4gPiArI2RlZmluZSBEUF9FRFBfQkFDS0xJ R0hUX0JSSUdIVE5FU1NfQllURV9DT1VOVCAgICAgICAgKDEgPDwgMikKPiA+Cj4gPiAgI2RlZmlu ZSBEUF9FRFBfR0VORVJBTF9DQVBfMgkJICAgIDB4NzAzCj4gPgo+ID4gICNkZWZpbmUgRFBfRURQ X0dFTkVSQUxfQ0FQXzMJCSAgICAweDcwNCAgICAvKiBlRFAgMS40ICovCj4gPgo+ID4gICNkZWZp bmUgRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUiAgICAgMHg3MjAKPiA+ICsjZGVmaW5l IERQX0VEUF9CQUNLTElHSFRfRU5BQkxFICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCAwKQo+ ID4KPiA+ICAjZGVmaW5lIERQX0VEUF9CQUNLTElHSFRfTU9ERV9TRVRfUkVHSVNURVIgIDB4NzIx Cj4gPiArI2RlZmluZSBEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfQ1RMX01PREVfRFBDRF9N QVNLIDB4Mgo+ID4KPiA+ICAjZGVmaW5lIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19NU0Ig ICAgIDB4NzIyCj4gPiAgI2RlZmluZSBEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTFNCICAg ICAweDcyMwo+ID4gLS0KPiA+IDEuOS4zCj4gPgo+ID4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiA+IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiA+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiA+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKPiAKPiAtLQo+IERhbmllbCBWZXR0ZXIK PiBTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiBodHRwOi8vYmxvZy5mZnds bC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=