From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH] drm/i915: Backlight Control over AUX feature Date: Thu, 10 Sep 2015 17:20:54 +0200 Message-ID: <20150910152054.GC2767@phenom.ffwll.local> 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 mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by gabe.freedesktop.org (Postfix) with ESMTPS id A0DFC6E188 for ; Thu, 10 Sep 2015 08:18:18 -0700 (PDT) Received: by wicgb1 with SMTP id gb1so29250506wic.1 for ; Thu, 10 Sep 2015 08:18:17 -0700 (PDT) Content-Disposition: inline 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: Yetunde Adebisi Cc: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBTZXAgMTAsIDIwMTUgYXQgMDM6MTE6NDJQTSArMDEwMCwgWWV0dW5kZSBBZGViaXNp IHdyb3RlOgo+IFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBCYWNrbGlnaHQgQ29udHJvbCBv dmVyIHRoZSBBVVggY2hhbm5lbCBmb3IKPiBEUCBhbmQgZURQIGNvbm5lY3RvcnMuIEl0IGFsbG93 cyB0aGUgYmFja2xpZ2h0IG9mIERQIGFuZCBlRFAgY29ubmVjdGVkCj4gZGlzcGxheXMgdG8gYmUg Y29udHJvbGxlZCBmcm9tIHNvZnR3YXJlIHVzaW5nIHN5c2ZzIGludGVyZmFjZS4KPiAKPiBUaGUg Y29kZSBmaXJzdCBjaGVja3MgaWYgdGhlIERQL2VEUCBkaXNwbGF5IGhhcyB0aGUgY2FwYWJpbGl0 eSBmb3IKPiBiYWNrbGlnaHQgY29udHJvbCBieSByZWFkaW5nIERpc3BsYXkgQ29udHJvbCBEUENE IHJlZ2lzdGVycyBhcyBkZWZpbmVkCj4gYnkgdGhlIGVEUCB2MS4zIFZFU0Egc3BlY3MuCj4gSXQg dGhlbiByZWdpc3RlcnMgYSAvc3lzL2JhY2tsaWdodCBkZXZpY2UgaWYgYmFja2xpZ2h0IGNvbnRy b2wgaXMKPiBzdXBwb3J0ZWQuCj4gCj4gSXQgcHJvdmlkZXMgZnVuY3Rpb25zIHRvCj4gLSBSZWdp c3RlciBhIHN5c2ZzIGJhY2tsaWdodCBpbnRlcmZhY2UgaWYgdGhlIGVEUC9EUCBjb25ubmVjdG9y IGlzCj4gY2FwYWJsZSBvZiBhdXggYmFja2xpZ2h0IGNvbnRyb2wKPiAtIFJlYWQgdGhlIGN1cnJl bnQgYmFja2xpZ2h0IGxldmVsIGZyb20gRFBDRCByZWdpc3RlciAweDcyMgo+IC0gQ2hhbmdlIHRo ZSBiYWNrbGlnaHQgbGV2ZWwKPiAtIERpc2FibGUvRW5hYmxlIHRoZSBiYWNrbGlnaHQgYnkgd3Jp dGluZyB0byBEUENEIHJlZ2lzdGVyIDB4NzIwCj4gCj4gVXNhZ2U6Cj4gQmFja2xpZ2h0IGxldmVs IHJhbmdlcyBmcm9tIDAobWluKS0yNDAobWF4KSAweDAtMHhGMAo+IC0gVG8gY2hhbmdlIEJhY2ts aWdodCBsZXZlbCB0byA1MAo+IGVjaG8gNTAgPiAvc3lzL2NsYXNzL2JhY2tsaWdodC9pbnRlbF9h dXhfYmFja2xpZ2h0LURQLTMvYnJpZ2h0bmVzcwo+IAo+IC0gVG8gZGlzYWJsZSBiYWNrbGlnaHQK PiBlY2hvIDQgPiAvc3lzL2NsYXNzL2JhY2tsaWdodC9pbnRlbF9hdXhfYmFja2xpZ2h0LURQLTMv YmxfcG93ZXIKPiAtIFRvIGVuYWJsZSBiYWNrbGlnaHQKPiBlY2hvIDAgPiAvc3lzL2NsYXNzL2Jh Y2tsaWdodC9pbnRlbF9hdXhfYmFja2xpZ2h0LURQLTMvYmxfcG93ZXIKPiAKPiB2MjoKPiAtIENv ZGUgY2xlYW4gdXAKPiAtIEF2b2lkIGNvZGUgZHVwbGljYXRpb24gYnkgbWVyZ2luZyB0aGUgYmFj a2xpZ2h0IGRldmljZQo+ICByZWdpc3Rlci91bnJlZ2lzdGVyIGZ1bmN0aW9uIHdpdGggdGhlIGV4 aXN0aW5nIG9uZSBmb3IgaW50ZXJuYWwgZGlzcGxheXMKPiAKPiB2MzoKPiBGdXJ0aGVyIGNoYW5n ZXMgdG8gcmUtdXNlIGV4aXN0aW5nIGNvZGUgYnkgYWRkaW5nIGJsX25hbWUgYW5kIGJhY2tsaWdo dF9vcHMKPiB2YXJpYWJsZXMgdG8gdGhlIGludGVsX2JhY2tsaWdodCBzdHJ1Y3R1cmUuCj4gCj4g Q2M6IEJvYiBQYWF1d2UgPGJvYi5qLnBhYXV3ZUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTog WWV0dW5kZSBBZGViaXNpIDx5ZXR1bmRleC5hZGViaXNpQGludGVsLmNvbT4KPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICAgICAgICAgICAgfCAgIDEg Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jICAgICAgICAgICAgICAgICAgIHwg ICA2ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfY3Rs LmMgfCAzMjQgKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaCAgICAgICAgICAgICAgICAgIHwgIDQ2ICsrLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9wYW5lbC5jICAgICAgICAgICAgICAgIHwgMTExICsrKysrLS0tCj4gIGluY2x1 ZGUvZHJtL2RybV9kcF9oZWxwZXIuaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKwo+ICA3 IGZpbGVzIGNoYW5nZWQsIDQ0MyBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGln aHRfY3RsLmMKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IGluZGV4IDQ0ZDI5MGEuLjI2MGJlMDMg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQo+IEBAIC03Nyw2ICs3Nyw3IEBAIGk5MTUteSArPSBk dm9fY2g3MDE3Lm8gXAo+ICAJICBkdm9fdGZwNDEwLm8gXAo+ICAJICBpbnRlbF9jcnQubyBcCj4g IAkgIGludGVsX2RkaS5vIFwKPiArCSAgaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9jdGwubyBcCgpT aG91bGRuJ3Qgd2UgaGF2ZSBtb3N0IG9mIHRoaXMgaW1wbGVtZW50ZWQgYXMgYSBnZW5lcmljIGhl bHBlciBvbiB0b3Agb2YKdGhlIGNvcmUgZHJtX2RwX2F1eCBhYnN0cmFjdGlvbiBpbiB0aGUgZHJt X2RwX2hlbHBlci5jIGNvZGU/IEFuZCBkcml2ZXJzCndvdWxkIHRoZW4ganVzdCBjYWxsIHRoZSBv dmVyYWxsIGJhY2tsaWdodF9yZWdpc3Rlci91bnJlZ2lzdGVyIGZ1bmN0aW9ucwpwcm92aWRlZCBi eSB0aG9zZSBoZWxwZXJzLgoKVGhlIG90aGVyIGJpdCBmcm9tIG15IGhpZ2gtbGV2ZWwgcmV2aWV3 IGlzIHRoYXQgdGhlIGtlcm5lbGRvYyBuZWVkcyBtb3JlCnBvbGlzaCBhbmQgbmVlZHMgdG8gYmUg cHVsbGVkIGludG8gZHJtLnRtcGwgYXQgYSBzdWl0YWJsZSBwbGFjZS4KLURhbmllbAoKPiAgCSAg aW50ZWxfZHBfbXN0Lm8gXAo+ICAJICBpbnRlbF9kcC5vIFwKPiAgCSAgaW50ZWxfZHNpLm8gXAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiBpbmRleCBlNjI5YTFiLi4yOTM3NDMy IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xNTM0MCw2ICsx NTM0MCw3IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9yX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nv bm5lY3RvciAqaW50ZWxfY29ubmVjdG9yKQo+ICAJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5l Y3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJhc2U7Cj4gIAo+ICAJaW50ZWxfcGFuZWxfZGVzdHJv eV9iYWNrbGlnaHQoY29ubmVjdG9yKTsKPiArCWludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGVzdHJv eShjb25uZWN0b3IpOwo+ICAJZHJtX2Nvbm5lY3Rvcl91bnJlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4g IH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gaW5kZXggNDVhYjI1ZS4uOTc1YTgzNiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0zMDE4LDcgKzMwMTgsNyBAQCBzdGF0 aWMgdm9pZCBjaHZfZHBfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5j b2RlcikKPiAgICogU2lua3MgYXJlICpzdXBwb3NlZCogdG8gY29tZSB1cCB3aXRoaW4gMW1zIGZy b20gYW4gb2ZmIHN0YXRlLCBidXQgd2UncmUgYWxzbwo+ICAgKiBzdXBwb3NlZCB0byByZXRyeSAz IHRpbWVzIHBlciB0aGUgc3BlYy4KPiAgICovCj4gLXN0YXRpYyBzc2l6ZV90Cj4gK3NzaXplX3QK PiAgaW50ZWxfZHBfZHBjZF9yZWFkX3dha2Uoc3RydWN0IGRybV9kcF9hdXggKmF1eCwgdW5zaWdu ZWQgaW50IG9mZnNldCwKPiAgCQkJdm9pZCAqYnVmZmVyLCBzaXplX3Qgc2l6ZSkKPiAgewo+IEBA IC0zOTY5LDcgKzM5NjksNyBAQCBpbnRlbF9kcF9saW5rX2Rvd24oc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkKPiAgCW1zbGVlcChpbnRlbF9kcC0+cGFuZWxfcG93ZXJfZG93bl9kZWxheSk7Cj4g IH0KPiAgCj4gLXN0YXRpYyBib29sCj4gK2Jvb2wKPiAgaW50ZWxfZHBfZ2V0X2RwY2Qoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiAgewo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAq ZGlnX3BvcnQgPSBkcF90b19kaWdfcG9ydChpbnRlbF9kcCk7Cj4gQEAgLTYxMjUsNiArNjEyNSw4 IEBAIGludGVsX2RwX2luaXRfY29ubmVjdG9yKHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmlu dGVsX2RpZ19wb3J0LAo+ICAJCXJldHVybiBmYWxzZTsKPiAgCX0KPiAgCj4gKwlpbnRlbF9kcF9h dXhfYmFja2xpZ2h0X2luaXQoaW50ZWxfZHAsIGNvbm5lY3Rvcik7Cj4gKwo+ICAJaW50ZWxfZHBf YWRkX3Byb3BlcnRpZXMoaW50ZWxfZHAsIGNvbm5lY3Rvcik7Cj4gIAo+ICAJLyogRm9yIEc0WCBk ZXNrdG9wIGNoaXAsIFBFR19CQU5EX0dBUF9EQVRBIDM6MCBtdXN0IGZpcnN0IGJlIHdyaXR0ZW4K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2tsaWdo dF9jdGwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfY3Rs LmMKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLmE4ZWY5NjAKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBfYXV4X2JhY2ts aWdodF9jdGwuYwo+IEBAIC0wLDAgKzEsMzI0IEBACj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAy MDE1IEludGVsIENvcnBvcmF0aW9uCj4gKyAqCj4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdy YW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCj4gKyAqIGNv cHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0 aGUgIlNvZnR3YXJlIiksCj4gKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVz dHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KPiArICogdGhlIHJpZ2h0cyB0 byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vu c2UsCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJt aXQgcGVyc29ucyB0byB3aG9tIHRoZQo+ICsgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8g c28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgo+ICsgKgo+ICsgKiBUaGUg YWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVk aW5nIHRoZSBuZXh0Cj4gKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKPiArICogU29mdHdhcmUuCj4gKyAq Cj4gKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZ IE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCj4gKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9U IExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAo+ICsgKiBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8g RVZFTlQgU0hBTEwKPiArICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKPiArICogTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcK PiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1Ig VEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUwo+ICsgKiBJTiBUSEUgU09GVFdBUkUuCj4gKyAqCj4g KyAqCj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImludGVsX2Rydi5oIgo+ICsKPiArCj4gKyNkZWZp bmUgTUFYX0FVWF9CTF9IV19MRVZFTCAweEYwCj4gKyNkZWZpbmUgTUlOX0FVWF9CTF9IV19MRVZF TCAweDAwCj4gKwo+ICsKPiArc3RhdGljIHVpbnQ4X3QgcmVhZF9tb2RlX3NldF9yZWcoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkKPiArewo+ICsJdWludDhfdCBkcGNkX2J1ZiA9IDA7Cj4gKwo+ ICsJaWYgKGludGVsX2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LAo+ICsJCQlEUF9F RFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVSLAo+ICsJCQkmZHBjZF9idWYsIHNpemVvZihk cGNkX2J1ZikpIDwgMCkKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gcmVhZCBEUENEIHJl Z2lzdGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9FRFBfQkFDS0xJR0hUX01PREVfU0VUX1JFR0lTVEVS KTsKPiArCj4gKwlyZXR1cm4gZHBjZF9idWY7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBSZWFkIHRo ZSBjdXJyZW50IGJhY2tsaWdodCB2YWx1ZSBmcm9tIERQQ0QgcmVnaXN0ZXIocykgYmFzZWQKPiAr ICogb24gaWYgOC1iaXQoTVNCKSBvciAxNi1iaXQoTVNCIGFuZCBMU0IpIHZhbHVlcyBhcmUgc3Vw cG9ydGVkCj4gKyAqLwo+ICtzdGF0aWMgdWludDE2X3QgcmVhZF9hdXhfYmFja2xpZ2h0X2xldmVs KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gK3sKPiArCXVpbnQxNl90IHJlYWRfdmFsID0g MDsKPiArCj4gKwlpZiAoaW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4g KwkJCURQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19NU0IsCj4gKwkJCSZyZWFkX3ZhbCwgc2l6 ZW9mKHJlYWRfdmFsKSkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQg RFBDRCByZWdpc3RlciAweCV4XG4iLAo+ICsJCQkJRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNT X01TQik7Cj4gKwkJcmV0dXJuIDA7Cj4gKwl9Cj4gKwlpZiAoaW50ZWxfZHAtPmF1eF9iYWNrbGln aHQudXNlX2xzYl9yZWcpIHsKPiArCQl1aW50OF90IHZhbF9sc2IgPSAwOwo+ICsKPiArCQlpZiAo aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gKwkJCQlEUF9FRFBfQkFD S0xJR0hUX0JSSUdIVE5FU1NfTFNCLAo+ICsJCQkJJnZhbF9sc2IsIHNpemVvZih2YWxfbHNiKSkg PCAwKSB7Cj4gKwkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byByZWFkIERQQ0QgcmVnaXN0ZXIg MHgleFxuIiwKPiArCQkJCQlEUF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTFNCKTsKPiArCQkJ cmV0dXJuIDA7Cj4gKwkJfQo+ICsJCXJlYWRfdmFsID0gKHJlYWRfdmFsIDw8IDggfCB2YWxfbHNi KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gcmVhZF92YWw7Cj4gK30KPiArCj4gKwo+ICtzdGF0aWMg Ym9vbCBnZXRfYXV4X2JhY2tsaWdodF9lbmFibGUoc3RydWN0IGRybV9kcF9hdXggKmF1eCkKPiAr ewo+ICsJdWludDhfdCByZWFkX3ZhbCA9IDA7Cj4gKwo+ICsJaWYgKGludGVsX2RwX2RwY2RfcmVh ZF93YWtlKGF1eCwgRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUiwKPiArCQkJJnJlYWRf dmFsLCBzaXplb2YocmVhZF92YWwpKSA8IDApIHsKPiArCQlEUk1fREVCVUdfS01TKCJGYWlsZWQg dG8gcmVhZCBEUENEIHJlZ2lzdGVyIDB4JXhcbiIsCj4gKwkJCQlEUF9FRFBfRElTUExBWV9DT05U Uk9MX1JFR0lTVEVSKTsKPiArCQl9Cj4gKwlyZXR1cm4gcmVhZF92YWwgJiBEUF9FRFBfQkFDS0xJ R0hUX0VOQUJMRTsKPiArfQo+ICsKPiArCj4gK3N0YXRpYyBib29sIGlzX2F1eF9kaXNwbGF5X2Nv bnRyb2xfY2FwYWJsZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlz dHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9IGludGVsX2F0dGFjaGVkX2VuY29k ZXIoY29ubmVjdG9yKTsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50 ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ICsJdWludDhfdCBkcGNkX2VkcFsyXSA9IHsg MHgwIH07Cj4gKwo+ICsJLyogQ2hlY2sgdGhlICBlRFAgRGlzcGxheSBjb250cm9sIGNhcGFiaWxp dGllcyByZWdpc3RlcnMgdG8gZGV0ZXJtaW5lIGlmCj4gKwkgKiB0aGUgcGFuZWwgY2FuIHN1cHBv cnQgYmFja2xpZ2h0IGNvbnRyb2wgb3ZlciB0aGUgYXV4IGNoYW5uZWwqLwo+ICsJaWYgKGludGVs X2RwX2RwY2RfcmVhZF93YWtlKCZpbnRlbF9kcC0+YXV4LCBEUF9FRFBfR0VORVJBTF9DQVBfMSwK PiArCQkJZHBjZF9lZHAsIHNpemVvZihkcGNkX2VkcCkpIDwgMCkgewo+ICsJCURSTV9ERUJVR19L TVMoIkZhaWxlZCB0byByZWFkIERQQ0QgRGlzcGxheSBDb250cm9sIHJlZ2lzdGVyc1xuIik7Cj4g KwkJcmV0dXJuIGZhbHNlOwo+ICsJfQo+ICsJRFJNX0RFQlVHX0tNUygiRURQIERQQ0QgOiAlKnBo XG4iLCAoaW50KSBzaXplb2YoZHBjZF9lZHApLCBkcGNkX2VkcCk7Cj4gKwo+ICsJaWYgKGRwY2Rf ZWRwWzBdICYgRFBfRURQX1RDT05fQkFDS0xJR0hUX0FESlVTVE1FTlRfQ0FQQUJMRSAmJgo+ICsJ CQkoZHBjZF9lZHBbMF0gJiBEUF9FRFBfQkFDS0xJR0hUX0FVWF9FTkFCTEVfQ0FQQUJMRSkgJiYK PiArCQkJKGRwY2RfZWRwWzFdICYgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX0FVWF9TRVRf Q0FQQUJMRSkgJiYKPiArCQkJKChyZWFkX21vZGVfc2V0X3JlZyhpbnRlbF9kcCkgJgo+ICsJCQkJ CURQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19DVExfTU9ERV9EUENEX01BU0spKSkgewo+ICsK PiArCQlEUk1fREVCVUdfS01TKCJBVVggQmFja2xpZ2h0IENvbnRyb2wgU3VwcG9ydGVkIVxuIik7 Cj4gKwo+ICsJCWlmIChkcGNkX2VkcFsxXSAmIERQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19C WVRFX0NPVU5UKQo+ICsJCQlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC51c2VfbHNiX3JlZyA9IHRy dWU7Cj4gKwo+ICsJCXJldHVybiB0cnVlOwo+ICsJfQo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4g Kwo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfQkFDS0xJR0hUX0NMQVNTX0RFVklDRSkKPiArCj4g Ky8qKgo+ICsgKiBTZW5kcyB0aGUgY3VycmVudCBiYWNrbGlnaHQgbGV2ZWwgb3ZlciB0aGUgYXV4 IGNoYW5uZWwsIGNoZWNraW5nIGlmIGl0cyB1c2luZwo+ICsgKiA4LWJpdCBvciAxNiBiaXQgdmFs dWUgKE1TQiBhbmQgTFNCKQo+ICsgKi8KPiArc3RhdGljIHZvaWQKPiArd3JpdGVfYXV4X2JhY2ts aWdodF9sZXZlbChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLCB1aW50MTZfdCBsZXZlbCkKPiAr ewo+ICsJdWludDhfdCB2YWxzWzJdID0geyAweDAgfTsKPiArCj4gKwl2YWxzWzBdID0gbGV2ZWw7 Cj4gKwlEUk1fREVCVUdfS01TKCJMZXZlbCAweCV4XG4iLCBsZXZlbCk7Cj4gKwo+ICsJLyogV3Jp dGUgdGhlIE1TQiBhbmQvb3IgTFNCICovCj4gKwkgaWYgKGludGVsX2RwLT5hdXhfYmFja2xpZ2h0 LnVzZV9sc2JfcmVnKSB7Cj4gKwkJdmFsc1swXSA9IChsZXZlbCAmIDB4RkYwMCkgPj4gODsKPiAr CQl2YWxzWzFdID0gKGxldmVsICYgMHhGRik7Cj4gKwkJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigm aW50ZWxfZHAtPmF1eCwKPiArCQkJCURQX0VEUF9CQUNLTElHSFRfQlJJR0hUTkVTU19NU0IsIHZh bHNbMV0pIDwgMCkgewo+ICsJCQlEUk1fREVCVUdfS01TKCJGYWlsZWQgdG8gd3JpdGUgYXV4IGJh Y2tsaWdodCBsZXZlbFxuIik7Cj4gKwkJCXJldHVybjsKPiArCQl9Cj4gKwkgfQo+ICsJaWYgKGRy bV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRO RVNTX01TQiwKPiArCQkJdmFsc1swXSkgPCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVk IHRvIHdyaXRlIGF1eCBiYWNrbGlnaHQgbGV2ZWxcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiAr CWludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmxldmVsID0gbGV2ZWw7Cj4gK30KPiArCj4gK3N0YXRp YyB2b2lkIHNldF9hdXhfYmFja2xpZ2h0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw LCBib29sIGVuYWJsZSkKPiArewo+ICsJdWludDhfdCByZWdfdmFsID0gMDsKPiArCj4gKwlpZiAo aW50ZWxfZHBfZHBjZF9yZWFkX3dha2UoJmludGVsX2RwLT5hdXgsCj4gKwkJCQlEUF9FRFBfRElT UExBWV9DT05UUk9MX1JFR0lTVEVSLAo+ICsJCQkJJnJlZ192YWwsIHNpemVvZihyZWdfdmFsKSkg PCAwKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvIHJlYWQgRFBDRCByZWdpc3RlciAw eCV4XG4iLAo+ICsJCQkJRFBfRURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUik7Cj4gKwkJcmV0 dXJuOwo+ICsJfQo+ICsJaWYgKGVuYWJsZSkKPiArCQlyZWdfdmFsIHw9IERQX0VEUF9CQUNLTElH SFRfRU5BQkxFOwo+ICsJZWxzZQo+ICsJCXJlZ192YWwgJj0gfihEUF9FRFBfQkFDS0xJR0hUX0VO QUJMRSk7Cj4gKwo+ICsJaWYgKGRybV9kcF9kcGNkX3dyaXRlYigmaW50ZWxfZHAtPmF1eCwgRFBf RURQX0RJU1BMQVlfQ09OVFJPTF9SRUdJU1RFUiwKPiArCQkJcmVnX3ZhbCkgPCAwKSB7Cj4gKwkJ RFJNX0RFQlVHX0tNUygiRmFpbGVkIHRvICVzIGF1eCBiYWNrbGlnaHRcbiIsCj4gKwkJCQllbmFi bGUgPyAiZW5hYmxlIiA6ICJkaXNhYmxlIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsJaW50ZWxf ZHAtPmF1eF9iYWNrbGlnaHQuZW5hYmxlZCA9IGVuYWJsZTsKPiArfQo+ICsKPiArLyoqCj4gKyAq IGludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNlX3VwZGF0ZV9zdGF0dXMKPiArICogV3JpdGVz IHRvIHRoZSBzeXNmcyBiYWNrbGlnaHQgaW50ZXJmYWNlIHdpbGwgY29tZSBoZXJlIHRvIHNldCB0 aGUKPiArICogYmFja2xpZ2h0IGxldmVsIG9yIGRpc2FibGUvZW5hYmxlIHRoZSBiYWNrbGlnaHQK PiArICovCj4gK3N0YXRpYyBpbnQKPiAraW50ZWxfZHBfYXV4X2JhY2tsaWdodF9kZXZpY2VfdXBk YXRlX3N0YXR1cyhzdHJ1Y3QgYmFja2xpZ2h0X2RldmljZSAqYmQpCj4gK3sKPiArCXN0cnVjdCBp bnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IGJsX2dldF9kYXRhKGJkKTsKPiArCXN0 cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPSBpbnRlbF9hdHRhY2hlZF9l bmNvZGVyKGNvbm5lY3Rvcik7Cj4gKwlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3Rv X2ludGVsX2RwKCZpbnRlbF9lbmNvZGVyLT5iYXNlKTsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjb25uZWN0b3ItPmRldjsKPiArCXVpbnQzMl90IGh3X2xldmVsOwo+ICsJYm9vbCBibF9l bmFibGUgPSBmYWxzZTsKPiArCj4gKwlEUk1fREVCVUdfS01TKCJVcGRhdGluZyBpbnRlbF9hdXhf YmFja2xpZ2h0LURQLCBicmlnaHRuZXNzPSVkLyVkLCBibF9wb3dlciAlZFxuIiwKPiArCQkJYmQt PnByb3BzLmJyaWdodG5lc3MsIGJkLT5wcm9wcy5tYXhfYnJpZ2h0bmVzcywKPiArCQkJYmQtPnBy b3BzLnBvd2VyKTsKPiArCj4gKwlpZiAoY29ubmVjdG9yLT5zdGF0dXMgIT0gY29ubmVjdG9yX3N0 YXR1c19jb25uZWN0ZWQpCj4gKwkJcmV0dXJuIC1FTk9ERVY7Cj4gKwo+ICsJV0FSTl9PTihpbnRl bF9kcC0+YXV4X2JhY2tsaWdodC5tYXggPT0gMCk7Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9jaygm ZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0aW9uX211dGV4LCBOVUxMKTsKPiArCj4gKwlod19sZXZl bCA9IHNjYWxlKGJkLT5wcm9wcy5icmlnaHRuZXNzLAo+ICsJCQkwLCBiZC0+cHJvcHMubWF4X2Jy aWdodG5lc3MsCj4gKwkJCWludGVsX2RwLT5hdXhfYmFja2xpZ2h0Lm1pbiwgaW50ZWxfZHAtPmF1 eF9iYWNrbGlnaHQubWF4KTsKPiArCj4gKwlpZiAoaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubGV2 ZWwgIT0gaHdfbGV2ZWwpCj4gKwkJd3JpdGVfYXV4X2JhY2tsaWdodF9sZXZlbChpbnRlbF9kcCwg aHdfbGV2ZWwpOwo+ICsKPiArCS8qCj4gKwkgKiBUaGlzIGdldHMgY2FsbGVkIHdoZW4gYmxfcG93 ZXIgaXMgd3JpdHRlbiB0byBhcyB3ZWxsLiBDaGVjayBpZiB0aGUKPiArCSAqIGJsX3Bvd2VyIHN0 YXRlIGhhcyBjaGFuZ2VkIGFuZCB3cml0ZSBpdAo+ICsJICovCj4gKwlibF9lbmFibGUgPSAoYmQt PnByb3BzLnBvd2VyID09IEZCX0JMQU5LX1VOQkxBTkspOwo+ICsJaWYgKGludGVsX2RwLT5hdXhf YmFja2xpZ2h0LmVuYWJsZWQgIT0gYmxfZW5hYmxlKQo+ICsJCXNldF9hdXhfYmFja2xpZ2h0X2Vu YWJsZShpbnRlbF9kcCwgYmxfZW5hYmxlKTsKPiArCj4gKwlkcm1fbW9kZXNldF91bmxvY2soJmRl di0+bW9kZV9jb25maWcuY29ubmVjdGlvbl9tdXRleCk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsK PiArLyoqCj4gKyAqIGludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNlX2dldF9icmlnaHRuZXNz Cj4gKyAqIENhbGxlZCBvbiByZWFkIG9mIHRoZSBzeXNmcyBiYWNrbGlnaHQgaW50ZXJmYWNlIHRv IGdldCB0aGUgY3VycmVudCBiYWNrbGlnaHQKPiArICogdmFsdWUgZnJvbSB0aGUgQVVYIGNoYW5u ZWwuCj4gKyAqLwo+ICtzdGF0aWMgaW50Cj4gK2ludGVsX2RwX2F1eF9iYWNrbGlnaHRfZGV2aWNl X2dldF9icmlnaHRuZXNzKHN0cnVjdCBiYWNrbGlnaHRfZGV2aWNlICpiZCkKPiArewo+ICsJc3Ry dWN0IGludGVsX2Nvbm5lY3RvciAqaW50ZWxfY29ubmVjdG9yID0gYmxfZ2V0X2RhdGEoYmQpOwo+ ICsJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZpbnRlbF9jb25uZWN0b3ItPmJh c2U7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gKwlzdHJ1 Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9IGludGVsX2F0dGFjaGVkX2VuY29kZXIo Y29ubmVjdG9yKTsKPiArCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxf ZHAoJmludGVsX2VuY29kZXItPmJhc2UpOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoY29ubmVj dG9yLT5zdGF0dXMgIT0gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQpCj4gKwkJcmV0dXJuIC1F Tk9ERVY7Cj4gKwo+ICsJZHJtX21vZGVzZXRfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5jb25uZWN0 aW9uX211dGV4LCBOVUxMKTsKPiArCj4gKwlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5sZXZlbCA9 IHJlYWRfYXV4X2JhY2tsaWdodF9sZXZlbChpbnRlbF9kcCk7Cj4gKwo+ICsJcmV0ID0gc2NhbGUo aW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubGV2ZWwsCj4gKwkJCWludGVsX2RwLT5hdXhfYmFja2xp Z2h0Lm1pbiwgaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubWF4LAo+ICsJCQkwLCBiZC0+cHJvcHMu bWF4X2JyaWdodG5lc3MpOwo+ICsKPiArCWRybV9tb2Rlc2V0X3VubG9jaygmZGV2LT5tb2RlX2Nv bmZpZy5jb25uZWN0aW9uX211dGV4KTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICtj b25zdCBzdHJ1Y3QgYmFja2xpZ2h0X29wcyBpbnRlbF9kcF9iYWNrbGlnaHRfZGV2aWNlX29wcyA9 IHsKPiArCS51cGRhdGVfc3RhdHVzID0gaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9kZXZpY2VfdXBk YXRlX3N0YXR1cywKPiArCS5nZXRfYnJpZ2h0bmVzcyA9IGludGVsX2RwX2F1eF9iYWNrbGlnaHRf ZGV2aWNlX2dldF9icmlnaHRuZXNzLAo+ICt9Owo+ICsKPiArc3RhdGljIHZvaWQgc2V0dXBfYmFj a2xpZ2h0X29wcyhzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0ICpiYWNrbGlnaHQpCj4gK3sKPiArCWJh Y2tsaWdodC0+Ymxfb3BzID0gJmludGVsX2RwX2JhY2tsaWdodF9kZXZpY2Vfb3BzOwo+ICt9Cj4g KyNlbHNlCj4gKwo+ICtzdGF0aWMgdm9pZCBzZXR1cF9iYWNrbGlnaHRfb3BzKHN0cnVjdCBpbnRl bF9iYWNrbGlnaHQgKmJhY2tsaWdodCkKPiArewo+ICsKPiArfQo+ICsjZW5kaWYgLyogQ09ORklH X0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgKi8KPiArCj4gKwo+ICtzdGF0aWMgdm9pZCBfYXV4X2Jh Y2tsaWdodF9pbml0KHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4gK3sKPiArCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfZHAtPmF0dGFjaGVkX2Nvbm5lY3Rvci0+ YmFzZTsKPiArCj4gKwlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5tYXggPSBNQVhfQVVYX0JMX0hX X0xFVkVMOwo+ICsJaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubWluID0gTUlOX0FVWF9CTF9IV19M RVZFTDsKPiArCj4gKwlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5sZXZlbCA9IHJlYWRfYXV4X2Jh Y2tsaWdodF9sZXZlbChpbnRlbF9kcCk7Cj4gKwlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5lbmFi bGVkID0gZ2V0X2F1eF9iYWNrbGlnaHRfZW5hYmxlKCZpbnRlbF9kcC0+YXV4KTsKPiArCj4gKwlz ZXR1cF9iYWNrbGlnaHRfb3BzKCZpbnRlbF9kcC0+YXV4X2JhY2tsaWdodCk7Cj4gKwkvKgo+ICsJ KiBGb3IgQVVYIGJhY2tsaWdodCwgdXNpbmcgZGlmZmVyZW50IG5hbWUgZm9yIGVhY2ggRFAvZURQ IGNvbm5lY3Rvcgo+ICsJKiB3aWxsIHByb2R1Y2UgcmVnaXN0cmF0aW9uIG9mIG11bHRpcGxlIERQ LUFVWCBiYWNrbGlnaHQgZGV2aWNlcyBpbgo+ICsJKiB0aGUgZHJpdmVyLgo+ICsJKi8KPiArCXNu cHJpbnRmKGludGVsX2RwLT5hdXhfYmFja2xpZ2h0LmJsX25hbWUsIElOVEVMX0JBQ0tMSUdIVF9O QU1FX0xFTiwKPiArCQkJImludGVsX2F1eF9iYWNrbGlnaHQtJXMiLCBjb25uZWN0b3ItPm5hbWUp Owo+ICt9Cj4gKwo+ICsvKioKPiArICogQ2FsbGVkIG9uIGNvbm5lY3RvciBpbml0aWFsaXphdGlv biB0byBjaGVjayBmb3IgYXV4IGJhY2tsaWdodCBjb250cm9sCj4gKyAqIGNhcGFiaWxpdHkgYW5k IGlmIHByZXNlbnQsIGluaXRpYWxpemUgaXQuCj4gKyAqLwo+ICsKPiArdm9pZCBpbnRlbF9kcF9h dXhfYmFja2xpZ2h0X2luaXQoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiArCQlzdHJ1Y3Qg ZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICt7Cj4gKwlpZiAoIWlzX2F1eF9kaXNwbGF5X2Nv bnRyb2xfY2FwYWJsZShjb25uZWN0b3IpKSB7Cj4gKwkJRFJNX0RFQlVHX0tNUygiQmFja2xpZ2h0 IGNvbnRyb2wgb3ZlciBBVVggbm90IHN1cHBvcnRlZFxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ ICsJaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQucHJlc2VudCA9IHRydWU7Cj4gKwo+ICsJX2F1eF9i YWNrbGlnaHRfaW5pdChpbnRlbF9kcCk7Cj4gKwo+ICsJRFJNX0RFQlVHX0tNUygiQ29ubmVjdG9y ICVzIGJhY2tsaWdodCAlcywgYnJpZ2h0bmVzcyAldS8ldVxuIiwKPiArCQkJY29ubmVjdG9yLT5u YW1lLAo+ICsJCQlpbnRlbF9kcC0+YXV4X2JhY2tsaWdodC5lbmFibGVkID8gImVuYWJsZWQiIDog ImRpc2FibGVkIiwKPiArCQkJaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQubGV2ZWwsIGludGVsX2Rw LT5hdXhfYmFja2xpZ2h0Lm1heCk7Cj4gK30KPiArLyoqCj4gKyAqIENsZWFudXAgYXV4IGJhY2ts aWdodCBjb250cm9sIGRhdGEKPiArICovCj4gK3ZvaWQgaW50ZWxfZHBfYXV4X2JhY2tsaWdodF9k ZXN0cm95KHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpCj4gK3sKPiArCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25u ZWN0b3IpOwo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcCgm aW50ZWxfZW5jb2Rlci0+YmFzZSk7Cj4gKwo+ICsJaW50ZWxfZHAtPmF1eF9iYWNrbGlnaHQucHJl c2VudCA9IGZhbHNlOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0NjQ4 NGU0Li40MzhhODdiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTYzLDI2 ICsxNjMsMzEgQEAgc3RydWN0IGludGVsX2VuY29kZXIgewo+ICAJZW51bSBocGRfcGluIGhwZF9w aW47Cj4gIH07Cj4gIAo+ICsjZGVmaW5lIElOVEVMX0JBQ0tMSUdIVF9OQU1FX0xFTiA1MAo+ICtz dHJ1Y3QgaW50ZWxfYmFja2xpZ2h0IHsKPiArCWJvb2wgcHJlc2VudDsKPiArCXUzMiBsZXZlbDsK PiArCXUzMiBtaW47Cj4gKwl1MzIgbWF4Owo+ICsJYm9vbCBlbmFibGVkOwo+ICsJYm9vbCBjb21i aW5hdGlvbl9tb2RlOwkvKiBnZW4gMi80IG9ubHkgKi8KPiArCWJvb2wgYWN0aXZlX2xvd19wd207 Cj4gKwo+ICsJLyogUFdNIGNoaXAgKi8KPiArCXN0cnVjdCBwd21fZGV2aWNlICpwd207Cj4gKwo+ ICsJc3RydWN0IGJhY2tsaWdodF9kZXZpY2UgKmRldmljZTsKPiArCWNvbnN0IHN0cnVjdCBiYWNr bGlnaHRfb3BzICpibF9vcHM7Cj4gKwljaGFyIGJsX25hbWVbSU5URUxfQkFDS0xJR0hUX05BTUVf TEVOXTsKPiArCWJvb2wgdXNlX2xzYl9yZWc7CS8qIGF1eCBiYWNrbGlnaHQgb25seSAqLwo+ICt9 Owo+ICsKPiAgc3RydWN0IGludGVsX3BhbmVsIHsKPiAgCXN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICpmaXhlZF9tb2RlOwo+ICAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmRvd25jbG9ja19tb2Rl Owo+ICAJaW50IGZpdHRpbmdfbW9kZTsKPiAgCj4gLQkvKiBiYWNrbGlnaHQgKi8KPiAtCXN0cnVj dCB7Cj4gLQkJYm9vbCBwcmVzZW50Owo+IC0JCXUzMiBsZXZlbDsKPiAtCQl1MzIgbWluOwo+IC0J CXUzMiBtYXg7Cj4gLQkJYm9vbCBlbmFibGVkOwo+IC0JCWJvb2wgY29tYmluYXRpb25fbW9kZTsJ LyogZ2VuIDIvNCBvbmx5ICovCj4gLQkJYm9vbCBhY3RpdmVfbG93X3B3bTsKPiAtCj4gLQkJLyog UFdNIGNoaXAgKi8KPiAtCQlzdHJ1Y3QgcHdtX2RldmljZSAqcHdtOwo+IC0KPiAtCQlzdHJ1Y3Qg YmFja2xpZ2h0X2RldmljZSAqZGV2aWNlOwo+IC0JfSBiYWNrbGlnaHQ7Cj4gKwlzdHJ1Y3QgaW50 ZWxfYmFja2xpZ2h0IGJhY2tsaWdodDsKPiAgCj4gIAl2b2lkICgqYmFja2xpZ2h0X3Bvd2VyKShz dHJ1Y3QgaW50ZWxfY29ubmVjdG9yICosIGJvb2wgZW5hYmxlKTsKPiAgfTsKPiBAQCAtNzcxLDYg Kzc3Niw4IEBAIHN0cnVjdCBpbnRlbF9kcCB7Cj4gIAl1bnNpZ25lZCBsb25nIGNvbXBsaWFuY2Vf dGVzdF90eXBlOwo+ICAJdW5zaWduZWQgbG9uZyBjb21wbGlhbmNlX3Rlc3RfZGF0YTsKPiAgCWJv b2wgY29tcGxpYW5jZV90ZXN0X2FjdGl2ZTsKPiArCj4gKwlzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0 IGF1eF9iYWNrbGlnaHQ7Cj4gIH07Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsK PiBAQCAtMTIxMCw2ICsxMjE3LDExIEBAIHZvaWQgaW50ZWxfZWRwX2RycnNfaW52YWxpZGF0ZShz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCXVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ ICB2b2lkIGludGVsX2VkcF9kcnJzX2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2ln bmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ICB2b2lkIGhzd19kcF9zZXRfZGRpX3BsbF9zZWwoc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiArYm9vbCBpbnRlbF9kcF9nZXRf ZHBjZChzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKTsKPiArc3NpemVfdCBpbnRlbF9kcF9kcGNk X3JlYWRfd2FrZShzdHJ1Y3QgZHJtX2RwX2F1eCAqYXV4LCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAo+ ICsJCXZvaWQgKmJ1ZmZlciwgc2l6ZV90IHNpemUpOwo+ICt1aW50MzJfdCBzY2FsZSh1aW50MzJf dCBzb3VyY2VfdmFsLCB1aW50MzJfdCBzb3VyY2VfbWluLCB1aW50MzJfdCBzb3VyY2VfbWF4LAo+ ICsJCXVpbnQzMl90IHRhcmdldF9taW4sIHVpbnQzMl90IHRhcmdldF9tYXgpOwo+ICAKPiAgLyog aW50ZWxfZHBfbXN0LmMgKi8KPiAgaW50IGludGVsX2RwX21zdF9lbmNvZGVyX2luaXQoc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQsIGludCBjb25uX2lkKTsKPiBAQCAt MTMyOCw2ICsxMzQwLDEwIEBAIGV4dGVybiBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqaW50ZWxf ZmluZF9wYW5lbF9kb3duY2xvY2soCj4gIHZvaWQgaW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGludGVsX2JhY2tsaWdodF91bnJlZ2lzdGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICAKPiArLyogaW50ZWxfZHBfYXV4X2JhY2tsaWdo dF9jdGwuYyAqLwo+ICt2b2lkIGludGVsX2RwX2F1eF9iYWNrbGlnaHRfaW5pdChzdHJ1Y3QgaW50 ZWxfZHAgKmludGVsX2RwLAo+ICsJCQlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKTsK PiArdm9pZCBpbnRlbF9kcF9hdXhfYmFja2xpZ2h0X2Rlc3Ryb3koc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3Rvcik7Cj4gIAo+ICAvKiBpbnRlbF9wc3IuYyAqLwo+ICB2b2lkIGludGVsX3Bz cl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wYW5lbC5jCj4gaW5kZXggMjAzNDQzOGEuLmM2MWZiOTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFuZWwuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3BhbmVsLmMKPiBAQCAtNDEwLDcgKzQxMCw3IEBAIGludGVsX3BhbmVsX2RldGVjdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgKiBSZXR1cm4gQHNvdXJjZV92YWwgaW4gcmFuZ2Ug W0Bzb3VyY2VfbWluLi5Ac291cmNlX21heF0gc2NhbGVkIHRvIHJhbmdlCj4gICAqIFtAdGFyZ2V0 X21pbi4uQHRhcmdldF9tYXhdLgo+ICAgKi8KPiAtc3RhdGljIHVpbnQzMl90IHNjYWxlKHVpbnQz Ml90IHNvdXJjZV92YWwsCj4gK3VpbnQzMl90IHNjYWxlKHVpbnQzMl90IHNvdXJjZV92YWwsCj4g IAkJICAgICAgdWludDMyX3Qgc291cmNlX21pbiwgdWludDMyX3Qgc291cmNlX21heCwKPiAgCQkg ICAgICB1aW50MzJfdCB0YXJnZXRfbWluLCB1aW50MzJfdCB0YXJnZXRfbWF4KQo+ICB7Cj4gQEAg LTExNTEsMTggKzExNTEsMjMgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBiYWNrbGlnaHRfb3BzIGlu dGVsX2JhY2tsaWdodF9kZXZpY2Vfb3BzID0gewo+ICAJLmdldF9icmlnaHRuZXNzID0gaW50ZWxf YmFja2xpZ2h0X2RldmljZV9nZXRfYnJpZ2h0bmVzcywKPiAgfTsKPiAgCj4gLXN0YXRpYyBpbnQg aW50ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpj b25uZWN0b3IpCj4gK3N0YXRpYyB2b2lkIHNldHVwX2JhY2tsaWdodF9vcHMoc3RydWN0IGludGVs X2JhY2tsaWdodCAqYmFja2xpZ2h0KQo+ICt7Cj4gKwliYWNrbGlnaHQtPmJsX29wcyA9ICZpbnRl bF9iYWNrbGlnaHRfZGV2aWNlX29wczsKPiArfQo+ICsKPiArc3RhdGljIGludCBpbnRlbF9iYWNr bGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwK PiArCQlzdHJ1Y3QgaW50ZWxfYmFja2xpZ2h0ICpiYWNrbGlnaHQpCj4gIHsKPiAtCXN0cnVjdCBp bnRlbF9wYW5lbCAqcGFuZWwgPSAmY29ubmVjdG9yLT5wYW5lbDsKPiAgCXN0cnVjdCBiYWNrbGln aHRfcHJvcGVydGllcyBwcm9wczsKPiAgCj4gLQlpZiAoV0FSTl9PTihwYW5lbC0+YmFja2xpZ2h0 LmRldmljZSkpCj4gKwlpZiAoV0FSTl9PTihiYWNrbGlnaHQtPmRldmljZSkpCj4gIAkJcmV0dXJu IC1FTk9ERVY7Cj4gIAo+IC0JaWYgKCFwYW5lbC0+YmFja2xpZ2h0LnByZXNlbnQpCj4gKwlpZiAo IWJhY2tsaWdodC0+cHJlc2VudCkKPiAgCQlyZXR1cm4gMDsKPiAgCj4gLQlXQVJOX09OKHBhbmVs LT5iYWNrbGlnaHQubWF4ID09IDApOwo+ICsJV0FSTl9PTihiYWNrbGlnaHQtPm1heCA9PSAwKTsK PiAgCj4gIAltZW1zZXQoJnByb3BzLCAwLCBzaXplb2YocHJvcHMpKTsKPiAgCXByb3BzLnR5cGUg PSBCQUNLTElHSFRfUkFXOwo+IEBAIC0xMTcxLDMwICsxMTc2LDI1IEBAIHN0YXRpYyBpbnQgaW50 ZWxfYmFja2xpZ2h0X2RldmljZV9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25u ZWN0b3IpCj4gIAkgKiBOb3RlOiBFdmVyeXRoaW5nIHNob3VsZCB3b3JrIGV2ZW4gaWYgdGhlIGJh Y2tsaWdodCBkZXZpY2UgbWF4Cj4gIAkgKiBwcmVzZW50ZWQgdG8gdGhlIHVzZXJzcGFjZSBpcyBh cmJpdHJhcmlseSBjaG9zZW4uCj4gIAkgKi8KPiAtCXByb3BzLm1heF9icmlnaHRuZXNzID0gcGFu ZWwtPmJhY2tsaWdodC5tYXg7Cj4gLQlwcm9wcy5icmlnaHRuZXNzID0gc2NhbGVfaHdfdG9fdXNl cihjb25uZWN0b3IsCj4gLQkJCQkJICAgIHBhbmVsLT5iYWNrbGlnaHQubGV2ZWwsCj4gLQkJCQkJ ICAgIHByb3BzLm1heF9icmlnaHRuZXNzKTsKPiArCXByb3BzLm1heF9icmlnaHRuZXNzID0gYmFj a2xpZ2h0LT5tYXg7Cj4gKwlwcm9wcy5icmlnaHRuZXNzID0gc2NhbGUoYmFja2xpZ2h0LT5sZXZl bCwgYmFja2xpZ2h0LT5taW4sIGJhY2tsaWdodC0+bWF4LAo+ICsJCSAgICAgMCwgcHJvcHMubWF4 X2JyaWdodG5lc3MpOwo+ICAKPiAtCWlmIChwYW5lbC0+YmFja2xpZ2h0LmVuYWJsZWQpCj4gKwlp ZiAoYmFja2xpZ2h0LT5lbmFibGVkKQo+ICAJCXByb3BzLnBvd2VyID0gRkJfQkxBTktfVU5CTEFO SzsKPiAgCWVsc2UKPiAgCQlwcm9wcy5wb3dlciA9IEZCX0JMQU5LX1BPV0VSRE9XTjsKPiAgCj4g LQkvKgo+IC0JICogTm90ZTogdXNpbmcgdGhlIHNhbWUgbmFtZSBpbmRlcGVuZGVudCBvZiB0aGUg Y29ubmVjdG9yIHByZXZlbnRzCj4gLQkgKiByZWdpc3RyYXRpb24gb2YgbXVsdGlwbGUgYmFja2xp Z2h0IGRldmljZXMgaW4gdGhlIGRyaXZlci4KPiAtCSAqLwo+IC0JcGFuZWwtPmJhY2tsaWdodC5k ZXZpY2UgPQo+IC0JCWJhY2tsaWdodF9kZXZpY2VfcmVnaXN0ZXIoImludGVsX2JhY2tsaWdodCIs Cj4gKwliYWNrbGlnaHQtPmRldmljZSA9Cj4gKwkJYmFja2xpZ2h0X2RldmljZV9yZWdpc3Rlcihi YWNrbGlnaHQtPmJsX25hbWUsCj4gIAkJCQkJICBjb25uZWN0b3ItPmJhc2Uua2RldiwKPiAgCQkJ CQkgIGNvbm5lY3RvciwKPiAtCQkJCQkgICZpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX29wcywgJnBy b3BzKTsKPiArCQkJCQkgIGJhY2tsaWdodC0+Ymxfb3BzLCAmcHJvcHMpOwo+ICAKPiAtCWlmIChJ U19FUlIocGFuZWwtPmJhY2tsaWdodC5kZXZpY2UpKSB7Cj4gKwlpZiAoSVNfRVJSKGJhY2tsaWdo dC0+ZGV2aWNlKSkgewo+ICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIHJlZ2lzdGVyIGJhY2tsaWdo dDogJWxkXG4iLAo+IC0JCQkgIFBUUl9FUlIocGFuZWwtPmJhY2tsaWdodC5kZXZpY2UpKTsKPiAt CQlwYW5lbC0+YmFja2xpZ2h0LmRldmljZSA9IE5VTEw7Cj4gKwkJCSAgUFRSX0VSUihiYWNrbGln aHQtPmRldmljZSkpOwo+ICsJCWJhY2tsaWdodC0+ZGV2aWNlID0gTlVMTDsKPiAgCQlyZXR1cm4g LUVOT0RFVjsKPiAgCX0KPiAgCj4gQEAgLTEyMDQsMjEgKzEyMDQsMjUgQEAgc3RhdGljIGludCBp bnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNv bm5lY3RvcikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9iYWNr bGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2Nvbm5lY3RvciAqY29ubmVjdG9y KQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0 IGludGVsX2JhY2tsaWdodCAqYmFja2xpZ2h0KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxfcGFuZWwg KnBhbmVsID0gJmNvbm5lY3Rvci0+cGFuZWw7Cj4gLQo+IC0JaWYgKHBhbmVsLT5iYWNrbGlnaHQu ZGV2aWNlKSB7Cj4gLQkJYmFja2xpZ2h0X2RldmljZV91bnJlZ2lzdGVyKHBhbmVsLT5iYWNrbGln aHQuZGV2aWNlKTsKPiAtCQlwYW5lbC0+YmFja2xpZ2h0LmRldmljZSA9IE5VTEw7Cj4gKwlpZiAo YmFja2xpZ2h0LT5kZXZpY2UpIHsKPiArCQliYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoYmFj a2xpZ2h0LT5kZXZpY2UpOwo+ICsJCWJhY2tsaWdodC0+ZGV2aWNlID0gTlVMTDsKPiAgCX0KPiAg fQo+ICsKPiAgI2Vsc2UgLyogQ09ORklHX0JBQ0tMSUdIVF9DTEFTU19ERVZJQ0UgKi8KPiAtc3Rh dGljIGludCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3JlZ2lzdGVyKHN0cnVjdCBpbnRlbF9jb25u ZWN0b3IgKmNvbm5lY3RvcikKPiArCj4gK3N0YXRpYyBpbnQgaW50ZWxfYmFja2xpZ2h0X2Rldmlj ZV9yZWdpc3RlcihzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3IsCj4gKwkJc3RydWN0 IGludGVsX2JhY2tsaWdodCAqYmFja2xpZ2h0KQo+ICB7Cj4gIAlyZXR1cm4gMDsKPiAgfQo+IC1z dGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVs X2Nvbm5lY3RvciAqY29ubmVjdG9yKQo+ICtzdGF0aWMgdm9pZCBpbnRlbF9iYWNrbGlnaHRfZGV2 aWNlX3VucmVnaXN0ZXIoc3RydWN0IGludGVsX2JhY2tsaWdodCAqYmFja2xpZ2h0KQo+ICt7Cj4g K30KPiArc3RhdGljIHZvaWQgc2V0dXBfYmFja2xpZ2h0X29wcyhzdHJ1Y3QgaW50ZWxfYmFja2xp Z2h0ICpiYWNrbGlnaHQpCj4gIHsKPiAgfQo+ICAjZW5kaWYgLyogQ09ORklHX0JBQ0tMSUdIVF9D TEFTU19ERVZJQ0UgKi8KPiBAQCAtMTY1Miw2ICsxNjU2LDE3IEBAIGludCBpbnRlbF9wYW5lbF9z ZXR1cF9iYWNrbGlnaHQoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgZW51bSBwaXBl IHBpcGUpCj4gIAo+ICAJcGFuZWwtPmJhY2tsaWdodC5wcmVzZW50ID0gdHJ1ZTsKPiAgCj4gKwlz ZXR1cF9iYWNrbGlnaHRfb3BzKCZwYW5lbC0+YmFja2xpZ2h0KTsKPiArCj4gKwkvKgo+ICsJICog Tm90ZTogRm9yIGludGVybmFsIGRpc3BsYXlzLCB1c2luZyB0aGUgc2FtZSBuYW1lIGluZGVwZW5k ZW50IG9mIHRoZQo+ICsJICogY29ubmVjdG9yIHByZXZlbnRzIHJlZ2lzdHJhdGlvbiBvZiBtdWx0 aXBsZSBiYWNrbGlnaHQgZGV2aWNlcyBpbiB0aGUKPiArCSAqIGRyaXZlci4KPiArCSAqLwo+ICsJ c3RybmNweShwYW5lbC0+YmFja2xpZ2h0LmJsX25hbWUsICJpbnRlbF9iYWNrbGlnaHQiLAo+ICsJ CQlJTlRFTF9CQUNLTElHSFRfTkFNRV9MRU4pOwo+ICsJcGFuZWwtPmJhY2tsaWdodC5ibF9uYW1l W0lOVEVMX0JBQ0tMSUdIVF9OQU1FX0xFTiAtIDFdID0gJ1wwJzsKPiArCj4gIAlEUk1fREVCVUdf S01TKCJDb25uZWN0b3IgJXMgYmFja2xpZ2h0IGluaXRpYWxpemVkLCAlcywgYnJpZ2h0bmVzcyAl dS8ldVxuIiwKPiAgCQkgICAgICBjb25uZWN0b3ItPm5hbWUsCj4gIAkJICAgICAgcGFuZWwtPmJh Y2tsaWdodC5lbmFibGVkID8gImVuYWJsZWQiIDogImRpc2FibGVkIiwKPiBAQCAtMTc1NywxNiAr MTc3Miw0MiBAQCB2b2lkIGludGVsX3BhbmVsX2Zpbmkoc3RydWN0IGludGVsX3BhbmVsICpwYW5l bCkKPiAgCj4gIHZvaWQgaW50ZWxfYmFja2xpZ2h0X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcjsKPiArCXN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvcjsKPiArCj4gKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KGludGVsX2Nvbm5lY3RvciwgJmRldi0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xp c3QsCj4gKwkJCWJhc2UuaGVhZCkgewo+ICsJCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0 b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsKPiArCQlpbnRlbF9iYWNrbGlnaHRfZGV2 aWNlX3JlZ2lzdGVyKGludGVsX2Nvbm5lY3RvciwKPiArCQkJCSZpbnRlbF9jb25uZWN0b3ItPnBh bmVsLmJhY2tsaWdodCk7Cj4gKwo+ICsJCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09 IERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCB8fAo+ICsJCQkJY29ubmVjdG9yLT5jb25u ZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfZURQKSB7Cj4gKwkJCXN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyID0gaW50ZWxfYXR0YWNoZWRfZW5jb2Rlcihjb25uZWN0b3IpOwo+ ICsJCQlzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwID0gZW5jX3RvX2ludGVsX2RwKCZlbmNvZGVy LT5iYXNlKTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRldi0+bW9k ZV9jb25maWcuY29ubmVjdG9yX2xpc3QsIGJhc2UuaGVhZCkKPiAtCQlpbnRlbF9iYWNrbGlnaHRf ZGV2aWNlX3JlZ2lzdGVyKGNvbm5lY3Rvcik7Cj4gKwkJCWludGVsX2JhY2tsaWdodF9kZXZpY2Vf cmVnaXN0ZXIoaW50ZWxfY29ubmVjdG9yLAo+ICsJCQkJCSZpbnRlbF9kcC0+YXV4X2JhY2tsaWdo dCk7Cj4gKwkJfQo+ICsJfQo+ICB9Cj4gIAo+ICB2b2lkIGludGVsX2JhY2tsaWdodF91bnJlZ2lz dGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAtCXN0cnVjdCBpbnRlbF9jb25uZWN0 b3IgKmNvbm5lY3RvcjsKPiArCXN0cnVjdCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3Rv cjsKPiArCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGludGVsX2Nvbm5lY3RvciwgJmRldi0+bW9k ZV9jb25maWcuY29ubmVjdG9yX2xpc3QsCj4gKwkJCWJhc2UuaGVhZCkgewo+ICsJCXN0cnVjdCBk cm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmaW50ZWxfY29ubmVjdG9yLT5iYXNlOwo+ICsKPiAr CQlpbnRlbF9iYWNrbGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoJmludGVsX2Nvbm5lY3Rvci0+cGFu ZWwuYmFja2xpZ2h0KTsKPiAgCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGNvbm5lY3RvciwgJmRl di0+bW9kZV9jb25maWcuY29ubmVjdG9yX2xpc3QsIGJhc2UuaGVhZCkKPiAtCQlpbnRlbF9iYWNr bGlnaHRfZGV2aWNlX3VucmVnaXN0ZXIoY29ubmVjdG9yKTsKPiArCQlpZiAoY29ubmVjdG9yLT5j b25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQgfHwKPiArCQkJ CWNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX2VEUCkgewo+ ICsJCQlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciA9IGludGVsX2F0dGFjaGVkX2VuY29k ZXIoY29ubmVjdG9yKTsKPiArCQkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IGVuY190b19p bnRlbF9kcCgmZW5jb2Rlci0+YmFzZSk7Cj4gKwo+ICsJCQlpbnRlbF9iYWNrbGlnaHRfZGV2aWNl X3VucmVnaXN0ZXIoJmludGVsX2RwLT5hdXhfYmFja2xpZ2h0KTsKPiArCQl9Cj4gKwl9Cj4gIH0K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2RwX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0v ZHJtX2RwX2hlbHBlci5oCj4gaW5kZXggOGM1MmQwZWYxLi41ODI2MTgzIDEwMDY0NAo+IC0tLSBh L2luY2x1ZGUvZHJtL2RybV9kcF9oZWxwZXIuaAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9kcF9o ZWxwZXIuaAo+IEBAIC00NTUsMTYgKzQ1NSwyMiBAQAo+ICAjIGRlZmluZSBEUF9FRFBfMTQJCQkg ICAgMHgwMwo+ICAKPiAgI2RlZmluZSBEUF9FRFBfR0VORVJBTF9DQVBfMQkJICAgIDB4NzAxCj4g KyNkZWZpbmUgRFBfRURQX1RDT05fQkFDS0xJR0hUX0FESlVTVE1FTlRfQ0FQQUJMRSAgICAgICgx IDw8IDApCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9BVVhfRU5BQkxFX0NBUEFCTEUgICAg ICAgICAgICgxIDw8IDIpCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9CQUNLTElHSFRfQURKVVNUTUVO VF9DQVAgICAgIDB4NzAyCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX0FV WF9TRVRfQ0FQQUJMRSAgICgxIDw8IDEpCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdIVF9CUklH SFRORVNTX0JZVEVfQ09VTlQgICAgICAgICgxIDw8IDIpCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9H RU5FUkFMX0NBUF8yCQkgICAgMHg3MDMKPiAgCj4gICNkZWZpbmUgRFBfRURQX0dFTkVSQUxfQ0FQ XzMJCSAgICAweDcwNCAgICAvKiBlRFAgMS40ICovCj4gIAo+ICAjZGVmaW5lIERQX0VEUF9ESVNQ TEFZX0NPTlRST0xfUkVHSVNURVIgICAgIDB4NzIwCj4gKyNkZWZpbmUgRFBfRURQX0JBQ0tMSUdI VF9FTkFCTEUgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IDApCj4gIAo+ICAjZGVmaW5lIERQ X0VEUF9CQUNLTElHSFRfTU9ERV9TRVRfUkVHSVNURVIgIDB4NzIxCj4gKyNkZWZpbmUgRFBfRURQ X0JBQ0tMSUdIVF9CUklHSFRORVNTX0NUTF9NT0RFX0RQQ0RfTUFTSyAweDIKPiAgCj4gICNkZWZp bmUgRFBfRURQX0JBQ0tMSUdIVF9CUklHSFRORVNTX01TQiAgICAgMHg3MjIKPiAgI2RlZmluZSBE UF9FRFBfQkFDS0xJR0hUX0JSSUdIVE5FU1NfTFNCICAgICAweDcyMwo+IC0tIAo+IDEuOS4zCj4g Cj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRl bC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0 dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRw Oi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=